X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fmatita%2Flibrary%2Flist%2Fin.ma;h=3285fef2e0967f75a5bc601953eadba75bef148c;hb=7002fb8d9d0102e9baa410935fdabc9be0f8690d;hp=d6c165022aa1e55fc3458fe221c61597c99fa157;hpb=f48faa46342b557486e06c17fd574d1eeb386239;p=helm.git diff --git a/helm/software/matita/library/list/in.ma b/helm/software/matita/library/list/in.ma index d6c165022..3285fef2e 100644 --- a/helm/software/matita/library/list/in.ma +++ b/helm/software/matita/library/list/in.ma @@ -23,6 +23,13 @@ inductive in_list (A:Type): A → (list A) → Prop ≝ definition incl : \forall A.(list A) \to (list A) \to Prop \def \lambda A,l,m.\forall x.in_list A x l \to in_list A x m. +notation "hvbox(a break ∉ b)" non associative with precedence 45 +for @{ 'notmem $a $b }. + +interpretation "list member" 'mem x l = (in_list ? x l). +interpretation "list not member" 'notmem x l = (Not (in_list ? x l)). +interpretation "list inclusion" 'subseteq l1 l2 = (incl ? l1 l2). + lemma not_in_list_nil : \forall A,x.\lnot in_list A x []. intros.unfold.intro.inversion H [intros;lapply (sym_eq ? ? ? H2);destruct Hletin @@ -152,4 +159,17 @@ qed. lemma incl_A_A: ∀T,A.incl T A A. intros.unfold incl.intros.assumption. -qed. \ No newline at end of file +qed. + +lemma incl_append_l : ∀T,A,B.incl T A (A @ B). +unfold incl; intros;autobatch. +qed. + +lemma incl_append_r : ∀T,A,B.incl T B (A @ B). +unfold incl; intros;autobatch. +qed. + +lemma incl_cons : ∀T,A,B,x.incl T A B → incl T (x::A) (x::B). +unfold incl; intros;elim (in_list_cons_case ? ? ? ? H1);autobatch. +qed. +