X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Frt_computation%2Fcpms.ma;fp=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Frt_computation%2Fcpms.ma;h=2f7d1f449b826168cc3ec6c31f53048f22657732;hb=c0d38a82464481e3c8fd68e4b00d7b9b448df462;hp=d1817d6ff7479f56220a26507a47fc36024f41e8;hpb=0fea4ed429678c3293027cfe76fdbe15cfa331cb;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms.ma index d1817d6ff..2f7d1f449 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms.ma @@ -156,6 +156,36 @@ lemma cpms_inv_sort1 (n) (h) (G) (L): ∀X2,s. ⦃G,L⦄ ⊢ ⋆s ➡*[n,h] X2 elim (cpm_inv_sort1 … HX2) -HX2 #H #_ destruct // qed-. +lemma cpms_inv_lref1_ctop (n) (h) (G): + ∀X2,i. ⦃G,⋆⦄ ⊢ #i ➡*[n,h] X2 → ∧∧ X2 = #i & n = 0. +#n #h #G #X2 #i #H @(cpms_ind_dx … H) -X2 +[ /2 width=1 by conj/ +| #n1 #n2 #X #X2 #_ * #HX #Hn1 #HX2 destruct + elim (cpm_inv_lref1_ctop … HX2) -HX2 #H1 #H2 destruct + /2 width=1 by conj/ +] +qed-. + +lemma cpms_inv_zero1_unit (n) (h) (I) (K) (G): + ∀X2. ⦃G,K.ⓤ{I}⦄ ⊢ #0 ➡*[n,h] X2 → ∧∧ X2 = #0 & n = 0. +#n #h #I #G #K #X2 #H @(cpms_ind_dx … H) -X2 +[ /2 width=1 by conj/ +| #n1 #n2 #X #X2 #_ * #HX #Hn1 #HX2 destruct + elim (cpm_inv_zero1_unit … HX2) -HX2 #H1 #H2 destruct + /2 width=1 by conj/ +] +qed-. + +lemma cpms_inv_gref1 (n) (h) (G) (L): + ∀X2,l. ⦃G,L⦄ ⊢ §l ➡*[n,h] X2 → ∧∧ X2 = §l & n = 0. +#n #h #G #L #X2 #l #H @(cpms_ind_dx … H) -X2 +[ /2 width=1 by conj/ +| #n1 #n2 #X #X2 #_ * #HX #Hn1 #HX2 destruct + elim (cpm_inv_gref1 … HX2) -HX2 #H1 #H2 destruct + /2 width=1 by conj/ +] +qed-. + lemma cpms_inv_cast1 (h) (n) (G) (L): ∀W1,T1,X2. ⦃G,L⦄ ⊢ ⓝW1.T1 ➡*[n,h] X2 → ∨∨ ∃∃W2,T2. ⦃G,L⦄ ⊢ W1 ➡*[n,h] W2 & ⦃G,L⦄ ⊢ T1 ➡*[n,h] T2 & X2 = ⓝW2.T2