X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=sidebyside;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Fmultiple%2Flifts_lift.ma;h=102ed0cebef192a09580e9836d9e5d0ec4af0009;hb=37e1b4f314ffae815beca71300688040f8da6939;hp=efa5038d27e580b5510ca78586bbe9ae4e8ad225;hpb=598a5c56535a8339f6533227ab580aff64e2d41c;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/basic_2/multiple/lifts_lift.ma b/matita/matita/contribs/lambdadelta/basic_2/multiple/lifts_lift.ma index efa5038d2..102ed0ceb 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/multiple/lifts_lift.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/multiple/lifts_lift.ma @@ -13,7 +13,7 @@ (**************************************************************************) include "basic_2/substitution/lift_lift.ma". -include "basic_2/multiple/gr2_minus.ma". +include "basic_2/multiple/mr2_minus.ma". include "basic_2/multiple/lifts.ma". (* GENERIC TERM RELOCATION **************************************************) @@ -21,39 +21,39 @@ include "basic_2/multiple/lifts.ma". (* Properties concerning basic term relocation ******************************) (* Basic_1: was: lift1_xhg (right to left) *) -lemma lifts_lift_trans_le: ∀T1,T,des. ⇧*[des] T1 ≡ T → ∀T2. ⇧[0, 1] T ≡ T2 → - ∃∃T0. ⇧[0, 1] T1 ≡ T0 & ⇧*[des + 1] T0 ≡ T2. -#T1 #T #des #H elim H -T1 -T -des -[ /2 width=3/ -| #T1 #T3 #T #des #d #e #HT13 #_ #IHT13 #T2 #HT2 +lemma lifts_lift_trans_le: ∀T1,T,cs. ⬆*[cs] T1 ≡ T → ∀T2. ⬆[0, 1] T ≡ T2 → + ∃∃T0. ⬆[0, 1] T1 ≡ T0 & ⬆*[cs + 1] T0 ≡ T2. +#T1 #T #cs #H elim H -T1 -T -cs +[ /2 width=3 by lifts_nil, ex2_intro/ +| #T1 #T3 #T #cs #l #m #HT13 #_ #IHT13 #T2 #HT2 elim (IHT13 … HT2) -T #T #HT3 #HT2 - elim (lift_trans_le … HT13 … HT3) -T3 // /3 width=5/ + elim (lift_trans_le … HT13 … HT3) -T3 /3 width=5 by lifts_cons, ex2_intro/ ] qed-. (* Basic_1: was: lift1_free (right to left) *) -lemma lifts_lift_trans: ∀des,i,i0. @⦃i, des⦄ ≡ i0 → - ∀des0. des + 1 ▭ i + 1 ≡ des0 + 1 → - ∀T1,T0. ⇧*[des0] T1 ≡ T0 → - ∀T2. ⇧[O, i0 + 1] T0 ≡ T2 → - ∃∃T. ⇧[0, i + 1] T1 ≡ T & ⇧*[des] T ≡ T2. -#des elim des -des normalize -[ #i #x #H1 #des0 #H2 #T1 #T0 #HT10 #T2 +lemma lifts_lift_trans: ∀cs,i,i0. @⦃i, cs⦄ ≡ i0 → + ∀cs0. cs + 1 ▭ i + 1 ≡ cs0 + 1 → + ∀T1,T0. ⬆*[cs0] T1 ≡ T0 → + ∀T2. ⬆[O, i0 + 1] T0 ≡ T2 → + ∃∃T. ⬆[0, i + 1] T1 ≡ T & ⬆*[cs] T ≡ T2. +#cs elim cs -cs normalize +[ #i #x #H1 #cs0 #H2 #T1 #T0 #HT10 #T2 <(at_inv_nil … H1) -x #HT02 lapply (minuss_inv_nil1 … H2) -H2 #H - >(pluss_inv_nil2 … H) in HT10; -des0 #H - >(lifts_inv_nil … H) -T1 /2 width=3/ -| #d #e #des #IHdes #i #i0 #H1 #des0 #H2 #T1 #T0 #HT10 #T2 #HT02 - elim (at_inv_cons … H1) -H1 * #Hid #Hi0 - [ elim (minuss_inv_cons1_lt … H2) -H2 [2: /2 width=1/ ] #des1 #Hdes1 (pluss_inv_nil2 … H) in HT10; -cs0 #H + >(lifts_inv_nil … H) -T1 /2 width=3 by lifts_nil, ex2_intro/ +| #l #m #cs #IHcs #i #i0 #H1 #cs0 #H2 #T1 #T0 #HT10 #T2 #HT02 + elim (at_inv_cons … H1) -H1 * #Hil #Hi0 + [ elim (minuss_inv_cons1_lt … H2) -H2 [2: /2 width=1 by lt_minus_to_plus/ ] #cs1 #Hcs1 minus_plus #HT1 #HT0 - elim (IHdes … Hi0 … Hdes1 … HT0 … HT02) -IHdes -Hi0 -Hdes1 -T0 #T0 #HT0 #HT02 - elim (lift_trans_le … HT1 … HT0) -T /2 width=1/ #T #HT1 commutative_plus in Hi0; #Hi0 - lapply (minuss_inv_cons1_ge … H2 ?) -H2 [ /2 width=1/ ]