Library ListSet


List In in Set
Fixpoint In {A:Set}(a:A) (l:list A) : Set :=
  match l with
  | nilEmpty_set
  | cons b m(b = a) + In a m
  end.

Definition incl {A:Set} l m := a:A, In a l In a m.
Hint Unfold incl : core.

Definition included {A:Set}(Gamma:list A)(T:ASet) :=
   f, In f Gamma T f.

Theorem in_eq {A:Set} : (a:A) l, In a (a :: l).

Theorem in_cons {A:Set} : (a b:A) l, In b l In b (a :: l).

Lemma nil_included {A:Set} : (Ax:ASet), included nil Ax.

Lemma nil_lem1 {A:Set} : l:list A, incl nil l.

Lemma in_app_or {A:Set} : l m (a:A), In a (l ++ m) In a l + In a m.

Lemma in_or_app {A:Set} : l m (a:A), In a l + In a m In a (l ++ m).

Lemma included_lem1 {A:Set} : l1 l2:list A, Ax:ASet,
    included l1 Ax included l2 Ax included (l1++l2) Ax.

Lemma incl_tran {A:Set} : l m n:list A, incl l m incl m n incl l n.

Lemma incl_refl {A:Set} : l:list A, incl l l.
Hint Resolve incl_refl : core.

Theorem in_dec {A:Set} :
  ( x y:A, {x = y} + {x y})
   (a:A) (l:list A), In a l + (In a l Empty_set).

Lemma incl_appl {A:Set} : l m n:list A, incl l n incl l (n ++ m).
Hint Immediate incl_appl : core.

Lemma incl_appr {A:Set} : l m n:list A, incl l n incl l (m ++ n).
Hint Immediate incl_appr : core.

Lemma in_inv {A:Set} : (a b:A) (l:list A), In b (a :: l) (a = b) + In b l.


This page has been generated by coqdoc