X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Frelocation%2Fdrops_lreq.ma;h=d07ea22109df3a83609ae5542309a35fc67aa164;hb=5c186c72f508da0849058afeecc6877cd9ed6303;hp=c9934f66450fd0686db6bdc11e79e66d2f7d3492;hpb=09b4420070d6a71990e16211e499b51dbb0742cb;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/basic_2/relocation/drops_lreq.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/drops_lreq.ma index c9934f664..d07ea2210 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/relocation/drops_lreq.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/relocation/drops_lreq.ma @@ -12,16 +12,15 @@ (* *) (**************************************************************************) -include "basic_2/relocation/drops_ceq.ma". include "basic_2/relocation/drops_lexs.ma". (* GENERIC SLICING FOR LOCAL ENVIRONMENTS ***********************************) (* Properties with ranged equivalence for local environments ****************) -lemma lreq_co_dedropable: co_dedropable_sn lreq. -@lexs_liftable_co_dedropable -/2 width=6 by cfull_lift, ceq_lift/ qed-. +lemma lreq_co_dedropable_sn: co_dedropable_sn lreq. +@lexs_liftable_co_dedropable_sn +/2 width=6 by cfull_lift_sn, ceq_lift_sn/ qed-. lemma lreq_co_dropable_sn: co_dropable_sn lreq. @lexs_co_dropable_sn qed-. @@ -31,28 +30,32 @@ lemma lreq_co_dropable_dx: co_dropable_dx lreq. (* Basic_2A1: includes: lreq_drop_trans_be *) lemma lreq_drops_trans_next: ∀f2,L1,L2. L1 ≡[f2] L2 → - ∀b,f,I,K2,V. ⬇*[b,f] L2 ≡ K2.ⓑ{I}V → 𝐔⦃f⦄ → - ∀f1. f ~⊚ ⫯f1 ≡ f2 → - ∃∃K1. ⬇*[b,f] L1 ≡ K1.ⓑ{I}V & K1 ≡[f1] K2. -#f2 #L1 #L2 #HL12 #b #f #I #K1 #V #HLK1 #Hf #f1 #Hf2 -elim (lexs_drops_trans_next … HL12 … HLK1 Hf … Hf2) -f2 -L2 -Hf + ∀b,f,I,K2. ⬇*[b, f] L2 ≘ K2.ⓘ{I} → 𝐔⦃f⦄ → + ∀f1. f ~⊚ ↑f1 ≘ f2 → + ∃∃K1. ⬇*[b, f] L1 ≘ K1.ⓘ{I} & K1 ≡[f1] K2. +#f2 #L1 #L2 #HL12 #b #f #I2 #K2 #HLK2 #Hf #f1 #Hf2 +elim (lexs_drops_trans_next … HL12 … HLK2 Hf … Hf2) -f2 -L2 -Hf +#I1 #K1 #HLK1 #HK12 #H <(ceq_ext_inv_eq … H) -I2 /2 width=3 by ex2_intro/ qed-. (* Basic_2A1: includes: lreq_drop_conf_be *) lemma lreq_drops_conf_next: ∀f2,L1,L2. L1 ≡[f2] L2 → - ∀b,f,I,K1,V. ⬇*[b,f] L1 ≡ K1.ⓑ{I}V → 𝐔⦃f⦄ → - ∀f1. f ~⊚ ⫯f1 ≡ f2 → - ∃∃K2. ⬇*[b,f] L2 ≡ K2.ⓑ{I}V & K1 ≡[f1] K2. -#f2 #L1 #L2 #HL12 #b #f #I #K1 #V #HLK1 #Hf #f1 #Hf2 + ∀b,f,I,K1. ⬇*[b, f] L1 ≘ K1.ⓘ{I} → 𝐔⦃f⦄ → + ∀f1. f ~⊚ ↑f1 ≘ f2 → + ∃∃K2. ⬇*[b, f] L2 ≘ K2.ⓘ{I} & K1 ≡[f1] K2. +#f2 #L1 #L2 #HL12 #b #f #I1 #K1 #HLK1 #Hf #f1 #Hf2 elim (lreq_drops_trans_next … (lreq_sym … HL12) … HLK1 … Hf2) // -f2 -L1 -Hf /3 width=3 by lreq_sym, ex2_intro/ qed-. lemma drops_lreq_trans_next: ∀f1,K1,K2. K1 ≡[f1] K2 → - ∀b,f,I,L1,V. ⬇*[b,f] L1.ⓑ{I}V ≡ K1 → - ∀f2. f ~⊚ f1 ≡ ⫯f2 → - ∃∃L2. ⬇*[b,f] L2.ⓑ{I}V ≡ K2 & L1 ≡[f2] L2 & L1.ⓑ{I}V ≡[f] L2.ⓑ{I}V. -#f1 #K1 #K2 #HK12 #b #f #I #L1 #V #HLK1 #f2 #Hf2 + ∀b,f,I,L1. ⬇*[b, f] L1.ⓘ{I} ≘ K1 → + ∀f2. f ~⊚ f1 ≘ ↑f2 → + ∃∃L2. ⬇*[b, f] L2.ⓘ{I} ≘ K2 & L1 ≡[f2] L2 & L1.ⓘ{I} ≡[f] L2.ⓘ{I}. +#f1 #K1 #K2 #HK12 #b #f #I1 #L1 #HLK1 #f2 #Hf2 elim (drops_lexs_trans_next … HK12 … HLK1 … Hf2) -f1 -K1 -/2 width=6 by cfull_lift, ceq_lift, ex3_intro/ qed-. +/2 width=6 by cfull_lift_sn, ceq_lift_sn/ +#I2 #L2 #HLK2 #HL12 #H >(ceq_ext_inv_eq … H) -I1 +/2 width=4 by ex3_intro/ +qed-.