X-Git-Url: http://matita.cs.unibo.it/gitweb/?p=helm.git;a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Frt_transition%2Flpx_reqx.ma;h=dfd3672410eec66fc9fbf97bf3f5c497862ca145;hp=73f134d10014a59627116e09309c095791cb00e2;hb=647504aa72b84eb49be8177b88a9254174e84d4b;hpb=b2cdc4abd9ac87e39bc51b0d9c38daea179adbd5 diff --git a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_reqx.ma b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_reqx.ma index 73f134d10..dfd367241 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_reqx.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_reqx.ma @@ -20,14 +20,37 @@ include "basic_2/rt_transition/rpx_lpx.ma". (* Properties with sort-irrelevant equivalence for local environments *******) -(**) (* to update as reqx_rpx_trans *) +lemma reqx_lpx_trans_rpx (G) (L) (T:term): + ∀L1. L1 ≛[T] L → ∀L2. ❪G,L❫ ⊢ ⬈ L2 → ❪G,L❫ ⊢ ⬈[T] L2. +/3 width=1 by lpx_rpx, reqx_rpx_trans/ qed. + (* Basic_2A1: uses: lleq_lpx_trans *) lemma reqx_lpx_trans (G): ∀L2,K2. ❪G,L2❫ ⊢ ⬈ K2 → ∀L1. ∀T:term. L1 ≛[T] L2 → ∃∃K1. ❪G,L1❫ ⊢ ⬈ K1 & K1 ≛[T] K2. #G #L2 #K2 #HLK2 #L1 #T #HL12 -lapply (lpx_rpx … T HLK2) -HLK2 #HLK2 +lapply (lpx_rpx … T … HLK2) -HLK2 #HLK2 lapply (reqx_rpx_trans … HL12 … HLK2) -L2 #H -elim (rpx_inv_lpx_req … H) -H #K1 #HLK1 #HK12 +elim (rpx_fwd_lpx_req … H) -H #K1 #HLK1 #HK12 +/3 width=3 by req_reqx, ex2_intro/ +qed-. + +(* Inversion lemmas with sort-irrelevant equivalence for local environments *) + +lemma rpx_inv_reqx_lpx (G) (T): + ∀L1,L2. ❪G,L1❫ ⊢ ⬈[T] L2 → + ∃∃L. L1 ≛[T] L & ❪G,L❫ ⊢ ⬈ L2. +#G #T #L1 #L2 #H +elim (rpx_inv_req_lpx … H) -H #L #HL1 #HL2 +/3 width=3 by req_reqx, ex2_intro/ +qed-. + +(* Forward lemmas with sort-irrelevant equivalence for local environments ***) + +lemma rpx_fwd_lpx_reqx (G) (T): + ∀L1,L2. ❪G,L1❫ ⊢ ⬈[T] L2 → + ∃∃L. ❪G,L1❫ ⊢ ⬈ L & L ≛[T] L2. +#G #T #L1 #L2 #H +elim (rpx_fwd_lpx_req … H) -H #L #HL1 #HL2 /3 width=3 by req_reqx, ex2_intro/ qed-.