X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Fdynamic%2Fnta_preserve.ma;h=eb8d953a23c649d61bc13a90853971f41297036e;hb=bd53c4e895203eb049e75434f638f26b5a161a2b;hp=8d69b3ca21f7a2bc1246e88499586634eb6a363c;hpb=dc20d16b32940a94d29a04de0d4fe1f80e00a73f;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 8d69b3ca2..eb8d953a2 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve.ma @@ -12,97 +12,97 @@ (* *) (**************************************************************************) +include "ground_2/xoa/ex_5_3.ma". include "basic_2/rt_equivalence/cpcs_cpcs.ma". -include "basic_2/dynamic/cnv_cpcs.ma". +include "basic_2/dynamic/cnv_preserve_cpcs.ma". include "basic_2/dynamic/nta.ma". (* NATIVE TYPE ASSIGNMENT FOR TERMS *****************************************) (* Properties based on preservation *****************************************) -lemma cnv_cpms_nta (a) (h) (G) (L): - ∀T. ⦃G,L⦄ ⊢ T ![a,h] → ∀U.⦃G,L⦄ ⊢ T ➡*[1,h] U → ⦃G,L⦄ ⊢ T :[a,h] U. +lemma cnv_cpms_nta (h) (a) (G) (L): + ∀T. ❪G,L❫ ⊢ T ![h,a] → ∀U.❪G,L❫ ⊢ T ➡*[1,h] U → ❪G,L❫ ⊢ T :[h,a] U. /3 width=4 by cnv_cast, cnv_cpms_trans/ qed. -lemma cnv_nta_sn (a) (h) (G) (L): - ∀T. ⦃G,L⦄ ⊢ T ![a,h] → ∃U. ⦃G,L⦄ ⊢ T :[a,h] U. -#a #h #G #L #T #HT +lemma cnv_nta_sn (h) (a) (G) (L): + ∀T. ❪G,L❫ ⊢ T ![h,a] → ∃U. ❪G,L❫ ⊢ T :[h,a] U. +#h #a #G #L #T #HT elim (cnv_fwd_cpm_SO … HT) #U #HTU /4 width=2 by cnv_cpms_nta, cpm_cpms, ex_intro/ qed-. (* Basic_1: was: ty3_typecheck *) -lemma nta_typecheck (a) (h) (G) (L): - ∀T,U. ⦃G,L⦄ ⊢ T :[a,h] U → ∃T0. ⦃G,L⦄ ⊢ ⓝU.T :[a,h] T0. +lemma nta_typecheck (h) (a) (G) (L): + ∀T,U. ❪G,L❫ ⊢ T :[h,a] U → ∃T0. ❪G,L❫ ⊢ ⓝU.T :[h,a] T0. /3 width=1 by cnv_cast, cnv_nta_sn/ qed-. (* Basic_1: was: ty3_correct *) (* Basic_2A1: was: ntaa_fwd_correct *) -lemma nta_fwd_correct (a) (h) (G) (L): - ∀T,U. ⦃G,L⦄ ⊢ T :[a,h] U → ∃T0. ⦃G,L⦄ ⊢ U :[a,h] T0. +lemma nta_fwd_correct (h) (a) (G) (L): + ∀T,U. ❪G,L❫ ⊢ T :[h,a] U → ∃T0. ❪G,L❫ ⊢ U :[h,a] T0. /3 width=2 by nta_fwd_cnv_dx, cnv_nta_sn/ qed-. lemma nta_pure_cnv (h) (G) (L): - ∀T,U. ⦃G,L⦄ ⊢ T :*[h] U → - ∀V. ⦃G,L⦄ ⊢ ⓐV.U !*[h] → ⦃G,L⦄ ⊢ ⓐV.T :*[h] ⓐV.U. + ∀T,U. ❪G,L❫ ⊢ T :[h,𝛚] U → + ∀V. ❪G,L❫ ⊢ ⓐV.U ![h,𝛚] → ❪G,L❫ ⊢ ⓐV.T :[h,𝛚] ⓐV.U. #h #G #L #T #U #H1 #V #H2 elim (cnv_inv_cast … H1) -H1 #X0 #HU #HT #HUX0 #HTX0 elim (cnv_inv_appl … H2) #n #p #X1 #X2 #_ #HV #_ #HVX1 #HUX2 elim (cnv_cpms_conf … HU … HUX0 … HUX2) -HU -HUX2