diff src/DepList.v @ 126:d7aec67f808b

More DepList notations
author Adam Chlipala <adamc@hcoop.net>
date Mon, 20 Oct 2008 12:17:39 -0400
parents 8a548a6c7074
children e70fbfc56c46
line wrap: on
line diff
--- a/src/DepList.v	Mon Oct 20 10:44:20 2008 -0400
+++ b/src/DepList.v	Mon Oct 20 12:17:39 2008 -0400
@@ -64,6 +64,11 @@
       | x :: ls' => (x = elm) + member ls'
     end%type.
 
+  Definition hfirst (x : A) (ls : list A) (pf : x = elm) : member (x :: ls) :=
+    inl _ pf.
+  Definition hnext (x : A) (ls : list A) (m : member ls) : member (x :: ls) :=
+    inr _ m.
+
   Fixpoint hget (ls : list A) : hlist ls -> member ls -> B elm :=
     match ls return hlist ls -> member ls -> B elm with
       | nil => fun _ idx => match idx with end
@@ -88,5 +93,8 @@
 Implicit Arguments hget [A B elm ls].
 Implicit Arguments happ [A B ls1 ls2].
 
+Implicit Arguments hfirst [A elm x ls].
+Implicit Arguments hnext [A elm x ls].
+
 Infix ":::" := hcons (right associativity, at level 60).
 Infix "+++" := happ (right associativity, at level 60).