X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Flib%2Flambda%2Fext.ma;fp=matita%2Fmatita%2Flib%2Flambda%2Fext.ma;h=0000000000000000000000000000000000000000;hb=46e87acb755894f9234191d675eeb5db4f5b930b;hp=d07234a71190f9ce6a14eea84c380039d90657b0;hpb=f8bc120b39bd74ade4e11d4d3ef4355f66c42495;p=helm.git diff --git a/matita/matita/lib/lambda/ext.ma b/matita/matita/lib/lambda/ext.ma deleted file mode 100644 index d07234a71..000000000 --- a/matita/matita/lib/lambda/ext.ma +++ /dev/null @@ -1,116 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||M|| *) -(* ||A|| A project by Andrea Asperti *) -(* ||T|| *) -(* ||I|| Developers: *) -(* ||T|| The HELM team. *) -(* ||A|| http://helm.cs.unibo.it *) -(* \ / *) -(* \ / This file is distributed under the terms of the *) -(* v GNU General Public License Version 2 *) -(* *) -(**************************************************************************) - -include "basics/list.ma". - -(* MATTER CONCERNING STRONG NORMALIZATION TO BE PUT ELSEWHERE *****************) - -(* arithmetics ****************************************************************) - -lemma arith1: ∀x,y. (S x) ≰ (S y) → x ≰ y. -#x #y #HS @nmk (elim HS) -HS /3/ -qed. - -lemma arith2: ∀i,p,k. k ≤ i → i + p - (k + p) = i - k. -#i #p #k #H @plus_to_minus ->commutative_plus >(commutative_plus k) >associative_plus @eq_f /2/ -qed. - -lemma arith3: ∀x,y,z. x ≰ y → x + z ≰ y + z. -#x #y #z #H @nmk (elim H) -H /3/ -qed. - -lemma arith4: ∀x,y. S x ≰ y → x≠y → y < x. -#x #y #H1 #H2 lapply (not_le_to_lt … H1) -H1 #H1 @not_eq_to_le_to_lt /2/ -qed. - -lemma arith5: ∀x,y. x < y → S (y - 1) ≰ x. -#x #y #H @lt_to_not_le H // ] -#x1 #l1 #IH1 #l2 elim l2 -l2 [ #false elim false ] -#x2 #l2 #_ #H elim H -H; normalize /3/ -qed. - -lemma all2_hd: ∀A,B:Type[0]. ∀P:A→B→Prop. ∀a,b. P a b → - ∀l1,l2. all2 … P l1 l2 → P (hd … l1 a) (hd … l2 b). -#A #B #P #a #b #Hab #l1 elim l1 -l1 [ #l2 #H2 >H2 @Hab ] -#x1 #l1 #_ #l2 elim l2 -l2 [ #false elim false ] -#x2 #l2 #_ #H elim H -H; normalize // -qed. - -lemma all2_tl: ∀A,B:Type[0]. ∀P:A→B→Prop. - ∀l1,l2. all2 … P l1 l2 → all2 … P (tail … l1) (tail … l2). -#A #B #P #l1 elim l1 -l1 [ #l2 #H >H // ] -#x1 #l1 #_ #l2 elim l2 -l2 [ #false elim false ] -#x2 #l2 #_ #H elim H -H; normalize // -qed. - -lemma all2_nth: ∀A,B:Type[0]. ∀P:A→B→Prop. ∀a,b. P a b → - ∀i,l1,l2. all2 … P l1 l2 → P (nth i … l1 a) (nth i … l2 b). -#A #B #P #a #b #Hab #i elim i -i [ @all2_hd // | #i #IH #l1 #l2 #H @IH /2/ ] -qed. - -lemma all2_append: ∀A,B,P,l2,m2. all2 A B P l2 m2 → - ∀l1,m1. all2 A B P l1 m1 → all2 A B P (l1 @ l2) (m1 @ m2). -#A #B #P #l2 #m2 #H2 #l1 (elim l1) -l1 [ #m1 #H >H @H2 ] -#x1 #l1 #IH1 #m2 elim m2 -m2 [ #false elim false ] -#x2 #m2 #_ #H elim H -H /3/ -qed. - -lemma all2_symmetric: ∀A. ∀P:A→A→Prop. symmetric … P → symmetric … (all2 … P). -#A #P #HP #l1 elim l1 -l1 [ #l2 #H >H // ] -#x1 #l1 #IH1 #l2 elim l2 -l2 [ #false elim false ] -#x2 #l2 #_ #H elim H -H /3/ -qed.