X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Fdynamic%2Fnta_preserve.ma;h=6de11fe1620e2e1a6bc251ebf708355b8fd54546;hb=d8d00d6f6694155be5be486a8239f5953efe28b7;hp=de01c6a0d3774a81e12ef3d7ab43e70c9718ba32;hpb=5b5dca0c118dfbe3ba8f0514ef07549544eb7810;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve.ma index de01c6a0d..6de11fe16 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve.ma @@ -12,6 +12,7 @@ (* *) (**************************************************************************) +include "ground_2/xoa/ex_5_3.ma". include "basic_2/rt_equivalence/cpcs_cpcs.ma". include "basic_2/dynamic/cnv_preserve_cpcs.ma". include "basic_2/dynamic/nta.ma". @@ -100,7 +101,7 @@ qed-. lemma nta_inv_ldef_sn (h) (a) (G) (K) (V): ∀X2. ⦃G,K.ⓓV⦄ ⊢ #0 :[h,a] X2 → - ∃∃W,U. ⦃G,K⦄ ⊢ V :[h,a] W & ⬆*[1] W ≘ U & ⦃G,K.ⓓV⦄ ⊢ U ⬌*[h] X2 & ⦃G,K.ⓓV⦄ ⊢ X2 ![h,a]. + ∃∃W,U. ⦃G,K⦄ ⊢ V :[h,a] W & ⇧*[1] W ≘ U & ⦃G,K.ⓓV⦄ ⊢ U ⬌*[h] X2 & ⦃G,K.ⓓV⦄ ⊢ X2 ![h,a]. #h #a #G #Y #X #X2 #H elim (cnv_inv_cast … H) -H #X1 #HX2 #H1 #HX21 #H2 elim (cnv_inv_zero … H1) -H1 #Z #K #V #HV #H destruct @@ -113,7 +114,7 @@ qed-. lemma nta_inv_lref_sn (h) (a) (G) (L): ∀X2,i. ⦃G,L⦄ ⊢ #↑i :[h,a] X2 → - ∃∃I,K,T2,U2. ⦃G,K⦄ ⊢ #i :[h,a] T2 & ⬆*[1] T2 ≘ U2 & ⦃G,K.ⓘ{I}⦄ ⊢ U2 ⬌*[h] X2 & ⦃G,K.ⓘ{I}⦄ ⊢ X2 ![h,a] & L = K.ⓘ{I}. + ∃∃I,K,T2,U2. ⦃G,K⦄ ⊢ #i :[h,a] T2 & ⇧*[1] T2 ≘ U2 & ⦃G,K.ⓘ{I}⦄ ⊢ U2 ⬌*[h] X2 & ⦃G,K.ⓘ{I}⦄ ⊢ X2 ![h,a] & L = K.ⓘ{I}. #h #a #G #L #X2 #i #H elim (cnv_inv_cast … H) -H #X1 #HX2 #H1 #HX21 #H2 elim (cnv_inv_lref … H1) -H1 #I #K #Hi #H destruct @@ -124,10 +125,10 @@ elim (cpms_inv_lref_sn … H2) -H2 * ] qed-. -lemma nta_inv_lref_sn_drops_cnv (h) (a) (G) (L): +lemma nta_inv_lref_sn_drops_cnv (h) (a) (G) (L): ∀X2,i. ⦃G,L⦄ ⊢ #i :[h,a] X2 → - ∨∨ ∃∃K,V,W,U. ⬇*[i] L ≘ K.ⓓV & ⦃G,K⦄ ⊢ V :[h,a] W & ⬆*[↑i] W ≘ U & ⦃G,L⦄ ⊢ U ⬌*[h] X2 & ⦃G,L⦄ ⊢ X2 ![h,a] - | ∃∃K,W,U. ⬇*[i] L ≘ K. ⓛW & ⦃G,K⦄ ⊢ W ![h,a] & ⬆*[↑i] W ≘ U & ⦃G,L⦄ ⊢ U ⬌*[h] X2 & ⦃G,L⦄ ⊢ X2 ![h,a]. + ∨∨ ∃∃K,V,W,U. ⇩*[i] L ≘ K.ⓓV & ⦃G,K⦄ ⊢ V :[h,a] W & ⇧*[↑i] W ≘ U & ⦃G,L⦄ ⊢ U ⬌*[h] X2 & ⦃G,L⦄ ⊢ X2 ![h,a] + | ∃∃K,W,U. ⇩*[i] L ≘ K. ⓛW & ⦃G,K⦄ ⊢ W ![h,a] & ⇧*[↑i] W ≘ U & ⦃G,L⦄ ⊢ U ⬌*[h] X2 & ⦃G,L⦄ ⊢ X2 ![h,a]. #h #a #G #L #X2 #i #H elim (cnv_inv_cast … H) -H #X1 #HX2 #H1 #HX21 #H2 elim (cnv_inv_lref_drops … H1) -H1 #I #K #V #HLK #HV @@ -244,8 +245,8 @@ qed-. (* Note: "⦃G, L⦄ ⊢ U2 ⬌*[h] X2" can be "⦃G, L⦄ ⊢ X2 ➡*[h] U2" *) lemma nta_inv_lifts_sn (h) (a) (G): ∀L,T2,X2. ⦃G,L⦄ ⊢ T2 :[h,a] X2 → - ∀b,f,K. ⬇*[b,f] L ≘ K → ∀T1. ⬆*[f] T1 ≘ T2 → - ∃∃U1,U2. ⦃G,K⦄ ⊢ T1 :[h,a] U1 & ⬆*[f] U1 ≘ U2 & ⦃G,L⦄ ⊢ U2 ⬌*[h] X2 & ⦃G,L⦄ ⊢ X2 ![h,a]. + ∀b,f,K. ⇩*[b,f] L ≘ K → ∀T1. ⇧*[f] T1 ≘ T2 → + ∃∃U1,U2. ⦃G,K⦄ ⊢ T1 :[h,a] U1 & ⇧*[f] U1 ≘ U2 & ⦃G,L⦄ ⊢ U2 ⬌*[h] X2 & ⦃G,L⦄ ⊢ X2 ![h,a]. #h #a #G #L #T2 #X2 #H #b #f #K #HLK #T1 #HT12 elim (cnv_inv_cast … H) -H #U2 #HX2 #HT2 #HXU2 #HTU2 lapply (cnv_inv_lifts … HT2 … HLK … HT12) -HT2 #HT1