X-Git-Url: http://matita.cs.unibo.it/gitweb/?p=helm.git;a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Frelocation%2Flifts_lifts_vector.ma;h=26a4fbede90f17f51593738d9dffeff67f250d68;hp=f741b3e5abab35fcdc61cfc13e631d5ba976b382;hb=222044da28742b24584549ba86b1805a87def070;hpb=802e118337ebd0f8b732d4939973aae6415b5bec diff --git a/matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_lifts_vector.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_lifts_vector.ma index f741b3e5a..26a4fbede 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_lifts_vector.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_lifts_vector.ma @@ -20,34 +20,34 @@ include "basic_2/relocation/lifts_vector.ma". (* Main properties **********************************************************) (* Basic_1: includes: lifts_inj *) -theorem liftsv_inj: ∀T1c,Us,f. ⬆*[f] T1c ≡ Us → - ∀T2c. ⬆*[f] T2c ≡ Us → T1c = T2c. -#T1c #Us #f #H elim H -T1c -Us -[ #T2c #H >(liftsv_inv_nil2 … H) -H // -| #T1c #Us #T1 #U #HT1U #_ #IHT1Us #X #H destruct - elim (liftsv_inv_cons2 … H) -H #T2 #T2c #HT2U #HT2Us #H destruct +theorem liftsv_inj: ∀f,T1s,Us. ⬆*[f] T1s ≘ Us → + ∀T2s. ⬆*[f] T2s ≘ Us → T1s = T2s. +#f #T1s #Us #H elim H -T1s -Us +[ #T2s #H >(liftsv_inv_nil2 … H) -H // +| #T1s #Us #T1 #U #HT1U #_ #IHT1Us #X #H destruct + elim (liftsv_inv_cons2 … H) -H #T2 #T2s #HT2U #HT2Us #H destruct >(lifts_inj … HT1U … HT2U) -U /3 width=1 by eq_f/ ] qed-. (* Basic_2A1: includes: liftv_mono *) -theorem liftsv_mono: ∀Ts,U1c,f. ⬆*[f] Ts ≡ U1c → - ∀U2c. ⬆*[f] Ts ≡ U2c → U1c = U2c. -#Ts #U1c #f #H elim H -Ts -U1c -[ #U2c #H >(liftsv_inv_nil1 … H) -H // -| #Ts #U1c #T #U1 #HTU1 #_ #IHTU1c #X #H destruct - elim (liftsv_inv_cons1 … H) -H #U2 #U2c #HTU2 #HTU2c #H destruct +theorem liftsv_mono: ∀f,Ts,U1s. ⬆*[f] Ts ≘ U1s → + ∀U2s. ⬆*[f] Ts ≘ U2s → U1s = U2s. +#f #Ts #U1s #H elim H -Ts -U1s +[ #U2s #H >(liftsv_inv_nil1 … H) -H // +| #Ts #U1s #T #U1 #HTU1 #_ #IHTU1s #X #H destruct + elim (liftsv_inv_cons1 … H) -H #U2 #U2s #HTU2 #HTU2s #H destruct >(lifts_mono … HTU1 … HTU2) -T /3 width=1 by eq_f/ ] qed-. (* Basic_1: includes: lifts1_xhg (right to left) *) (* Basic_2A1: includes: liftsv_liftv_trans_le *) -theorem liftsv_trans: ∀T1c,Ts,f1. ⬆*[f1] T1c ≡ Ts → ∀T2c,f2. ⬆*[f2] Ts ≡ T2c → - ∀f. f2 ⊚ f1 ≡ f → ⬆*[f] T1c ≡ T2c. -#T1c #Ts #f1 #H elim H -T1c -Ts -[ #T2c #f2 #H >(liftsv_inv_nil1 … H) -T2c /2 width=3 by liftsv_nil/ -| #T1c #Ts #T1 #T #HT1 #_ #IHT1c #X #f2 #H elim (liftsv_inv_cons1 … H) -H - #T2 #T2c #HT2 #HT2c #H destruct /3 width=6 by lifts_trans, liftsv_cons/ +theorem liftsv_trans: ∀f1,T1s,Ts. ⬆*[f1] T1s ≘ Ts → ∀T2s,f2. ⬆*[f2] Ts ≘ T2s → + ∀f. f2 ⊚ f1 ≘ f → ⬆*[f] T1s ≘ T2s. +#f1 #T1s #Ts #H elim H -T1s -Ts +[ #T2s #f2 #H >(liftsv_inv_nil1 … H) -T2s /2 width=3 by liftsv_nil/ +| #T1s #Ts #T1 #T #HT1 #_ #IHT1s #X #f2 #H elim (liftsv_inv_cons1 … H) -H + #T2 #T2s #HT2 #HT2s #H destruct /3 width=6 by lifts_trans, liftsv_cons/ ] qed-.