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
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.
\ No newline at end of file
+qed.
+
[simplify;apply le_S_S;assumption
|simplify;apply le_S;assumption]]
qed.
+
+lemma length_append : ∀A,l,m.length A (l@m) = length A l + length A m.
+intros;elim l
+[reflexivity
+|simplify;rewrite < H;reflexivity]
+qed.