X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Fdynamic%2Fcnv.ma;h=4db46f940e869d38441aabd560487f600b884555;hb=6b4da5fa47d474dcf2f203ec7f5ed36938739c9b;hp=398ef6783217fc4019e73a3502cc076048509685;hpb=1083ac3b1acac5f1ac1fa40a9a417dd9d268dced;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv.ma b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv.ma index 398ef6783..4db46f940 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv.ma @@ -13,6 +13,8 @@ (**************************************************************************) include "basic_2/notation/relations/exclaim_5.ma". +include "basic_2/notation/relations/exclaim_4.ma". +include "basic_2/notation/relations/exclaimstar_4.ma". include "basic_2/rt_computation/cpms.ma". (* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************) @@ -33,6 +35,12 @@ inductive cnv (a) (h): relation3 genv lenv term ≝ interpretation "context-sensitive native validity (term)" 'Exclaim a h G L T = (cnv a h G L T). +interpretation "context-sensitive restricted native validity (term)" + 'Exclaim h G L T = (cnv true h G L T). + +interpretation "context-sensitive extended native validity (term)" + 'ExclaimStar h G L T = (cnv false h G L T). + (* Basic inversion lemmas ***************************************************) fact cnv_inv_zero_aux (a) (h): ∀G,L,X. ⦃G, L⦄ ⊢ X ![a, h] → X = #0 → @@ -139,3 +147,26 @@ lemma cnv_inv_cast (a) (h): ∀G,L,U,T. ⦃G, L⦄ ⊢ ⓝU.T ![a, h] → ∃∃U0. ⦃G, L⦄ ⊢ U ![a, h] & ⦃G, L⦄ ⊢ T ![a, h] & ⦃G, L⦄ ⊢ U ➡*[h] U0 & ⦃G, L⦄ ⊢ T ➡*[1, h] U0. /2 width=3 by cnv_inv_cast_aux/ qed-. + +(* Basic forward lemmas *****************************************************) + +lemma cnv_fwd_flat (a) (h) (I) (G) (L): + ∀V,T. ⦃G, L⦄ ⊢ ⓕ{I}V.T ![a,h] → + ∧∧ ⦃G, L⦄ ⊢ V ![a,h] & ⦃G, L⦄ ⊢ T ![a,h]. +#a #h * #G #L #V #T #H +[ elim (cnv_inv_appl … H) #n #p #W #U #_ #HV #HT #_ #_ +| elim (cnv_inv_cast … H) #U #HV #HT #_ #_ +] -H /2 width=1 by conj/ +qed-. + +lemma cnv_fwd_pair_sn (a) (h) (I) (G) (L): + ∀V,T. ⦃G,L⦄ ⊢ ②{I}V.T ![a,h] → ⦃G,L⦄ ⊢ V ![a,h]. +#a #h * [ #p ] #I #G #L #V #T #H +[ elim (cnv_inv_bind … H) -H #HV #_ +| elim (cnv_fwd_flat … H) -H #HV #_ +] // +qed-. + +(* Basic_2A1: removed theorems 3: + shnv_cast shnv_inv_cast snv_shnv_cast +*)