X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Fcomputation%2Fcsx_alt.ma;h=df23e1f2ab9374774ace93fe4073ae840611560a;hb=b5d702735754632652b2659c425dd67d7f92f24b;hp=7c95fed6ed5cbf535c7ee4e551289536367163c7;hpb=c28e3d93b588796bfbbfd6b2ec9dd86f405b2b00;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/basic_2/computation/csx_alt.ma b/matita/matita/contribs/lambdadelta/basic_2/computation/csx_alt.ma index 7c95fed6e..df23e1f2a 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/computation/csx_alt.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/computation/csx_alt.ma @@ -33,31 +33,35 @@ lemma csxa_ind: ∀h,g,G,L. ∀R:predicate term. (∀T2. ⦃G, L⦄ ⊢ T1 ➡*[h, g] T2 → (T1 = T2 → ⊥) → R T2) → R T1 ) → ∀T. ⦃G, L⦄ ⊢ ⬊⬊*[h, g] T → R T. -#h #g #G #L #R #H0 #T1 #H elim H -T1 #T1 #HT1 #IHT1 -@H0 -H0 /3 width=1/ -IHT1 /4 width=1/ +#h #g #G #L #R #H0 #T1 #H elim H -T1 /5 width=1 by SN_intro/ qed-. (* Basic properties *********************************************************) +lemma csx_intro_cprs: ∀h,g,G,L,T1. + (∀T2. ⦃G, L⦄ ⊢ T1 ➡*[h, g] T2 → (T1 = T2 → ⊥) → ⦃G, L⦄ ⊢ ⬊*[h, g] T2) → + ⦃G, L⦄ ⊢ ⬊*[h, g] T1. +/4 width=1 by cpx_cpxs, csx_intro/ qed. + (* Basic_1: was just: sn3_intro *) lemma csxa_intro: ∀h,g,G,L,T1. (∀T2. ⦃G, L⦄ ⊢ T1 ➡*[h, g] T2 → (T1 = T2 → ⊥) → ⦃G, L⦄ ⊢ ⬊⬊*[h, g] T2) → ⦃G, L⦄ ⊢ ⬊⬊*[h, g] T1. -/4 width=1/ qed. +/4 width=1 by SN_intro/ qed. fact csxa_intro_aux: ∀h,g,G,L,T1. ( ∀T,T2. ⦃G, L⦄ ⊢ T ➡*[h, g] T2 → T1 = T → (T1 = T2 → ⊥) → ⦃G, L⦄ ⊢ ⬊⬊*[h, g] T2 ) → ⦃G, L⦄ ⊢ ⬊⬊*[h, g] T1. -/4 width=3/ qed-. +/4 width=3 by csxa_intro/ qed-. (* Basic_1: was just: sn3_pr3_trans (old version) *) lemma csxa_cpxs_trans: ∀h,g,G,L,T1. ⦃G, L⦄ ⊢ ⬊⬊*[h, g] T1 → ∀T2. ⦃G, L⦄ ⊢ T1 ➡*[h, g] T2 → ⦃G, L⦄ ⊢ ⬊⬊*[h, g] T2. #h #g #G #L #T1 #H elim H -T1 #T1 #HT1 #IHT1 #T2 #HLT12 @csxa_intro #T #HLT2 #HT2 -elim (term_eq_dec T1 T2) #HT12 -[ -IHT1 -HLT12 destruct /3 width=1/ -| -HT1 -HT2 /3 width=4/ +elim (eq_term_dec T1 T2) #HT12 +[ -IHT1 -HLT12 destruct /3 width=1 by/ +| -HT1 -HT2 /3 width=4 by/ qed. (* Basic_1: was just: sn3_pr2_intro (old version) *) @@ -69,9 +73,9 @@ lemma csxa_intro_cpx: ∀h,g,G,L,T1. ( [ -H #H destruct #H elim H // | #T0 #T #HLT1 #HLT2 #IHT #HT10 #HT12 destruct - elim (term_eq_dec T0 T) #HT0 - [ -HLT1 -HLT2 -H /3 width=1/ - | -IHT -HT12 /4 width=3/ + elim (eq_term_dec T0 T) #HT0 + [ -HLT1 -HLT2 -H /3 width=1 by/ + | -IHT -HT12 /4 width=3 by csxa_cpxs_trans/ ] ] qed. @@ -79,17 +83,17 @@ qed. (* Main properties **********************************************************) theorem csx_csxa: ∀h,g,G,L,T. ⦃G, L⦄ ⊢ ⬊*[h, g] T → ⦃G, L⦄ ⊢ ⬊⬊*[h, g] T. -#h #g #G #L #T #H @(csx_ind … H) -T /4 width=1/ +#h #g #G #L #T #H @(csx_ind … H) -T /4 width=1 by csxa_intro_cpx/ qed. theorem csxa_csx: ∀h,g,G,L,T. ⦃G, L⦄ ⊢ ⬊⬊*[h, g] T → ⦃G, L⦄ ⊢ ⬊*[h, g] T. -#h #g #G #L #T #H @(csxa_ind … H) -T /4 width=1/ +#h #g #G #L #T #H @(csxa_ind … H) -T /4 width=1 by cpx_cpxs, csx_intro/ qed. (* Basic_1: was just: sn3_pr3_trans *) lemma csx_cpxs_trans: ∀h,g,G,L,T1. ⦃G, L⦄ ⊢ ⬊*[h, g] T1 → ∀T2. ⦃G, L⦄ ⊢ T1 ➡*[h, g] T2 → ⦃G, L⦄ ⊢ ⬊*[h, g] T2. -#h #g #G #L #T1 #HT1 #T2 #H @(cpxs_ind … H) -T2 // /2 width=3 by csx_cpx_trans/ +#h #g #G #L #T1 #HT1 #T2 #H @(cpxs_ind … H) -T2 /2 width=3 by csx_cpx_trans/ qed-. (* Main eliminators *********************************************************) @@ -99,6 +103,5 @@ lemma csx_ind_alt: ∀h,g,G,L. ∀R:predicate term. (∀T2. ⦃G, L⦄ ⊢ T1 ➡*[h, g] T2 → (T1 = T2 → ⊥) → R T2) → R T1 ) → ∀T. ⦃G, L⦄ ⊢ ⬊*[h, g] T → R T. -#h #g #G #L #R #H0 #T1 #H @(csxa_ind … (csx_csxa … H)) -T1 #T1 #HT1 #IHT1 -@H0 -H0 /2 width=1/ -HT1 /3 width=1/ +#h #g #G #L #R #H0 #T1 #H @(csxa_ind … (csx_csxa … H)) -T1 /4 width=1 by csxa_csx/ qed-.