X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Fmultiple%2Flifts_lift.ma;h=102ed0cebef192a09580e9836d9e5d0ec4af0009;hb=37e1b4f314ffae815beca71300688040f8da6939;hp=990878bee5b0200938f21e6321a908b4156c241f;hpb=c60524dec7ace912c416a90d6b926bee8553250b;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 990878bee..102ed0ceb 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/multiple/lifts_lift.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/multiple/lifts_lift.ma @@ -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 #l #m #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 → +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 & ⬆*[des] T ≡ T2. -#des elim des -des normalize -[ #i #x #H1 #des0 #H2 #T1 #T0 #HT10 #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/ -| #l #m #des #IHcs #i #i0 #H1 #des0 #H2 #T1 #T0 #HT10 #T2 #HT02 + >(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/ ] #des1 #Hcs1 minus_plus #HT1 #HT0 elim (IHcs … Hi0 … Hcs1 … HT0 … HT02) -IHcs -Hi0 -Hcs1 -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/ ]