From 9f0102d8c0c2a35cb14d7ebf9020b74ea4bcccbe Mon Sep 17 00:00:00 2001 From: Jason Gross Date: Tue, 22 Nov 2016 23:33:49 -0500 Subject: Add hlistP --- src/Util/HList.v | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/Util/HList.v') diff --git a/src/Util/HList.v b/src/Util/HList.v index 57507eeb5..1a724f84b 100644 --- a/src/Util/HList.v +++ b/src/Util/HList.v @@ -20,6 +20,19 @@ Definition hlist {T n} (f : T -> Type) : forall (Ts : tuple T n), Type := | S n' => @hlist' T n' f end. +Fixpoint hlistP' T n (f : T -> Prop) : tuple' T n -> Prop := + match n return tuple' _ n -> Prop with + | 0 => fun T => f T + | S n' => fun Ts => (hlistP' T n' f (fst Ts) /\ f (snd Ts))%type + end. +Global Arguments hlistP' {T n} f _. + +Definition hlistP {T n} (f : T -> Prop) : forall (Ts : tuple T n), Prop := + match n return tuple _ n -> Prop with + | 0 => fun _ => True + | S n' => @hlistP' T n' f + end. + Fixpoint rhlist' T n (f : T -> Type) : rtuple' T n -> Type := match n return rtuple' _ n -> Type with | 0 => fun T => f T -- cgit v1.2.3