X-Git-Url: http://matita.cs.unibo.it/gitweb/?p=helm.git;a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Frelocation%2Flifts_vector.ma;h=8e234a5c1039d241987b7322ccbc7201f6690427;hp=68cab8482339ee3b47ead205e7326f9dd7b5f5b9;hb=222044da28742b24584549ba86b1805a87def070;hpb=75f395f0febd02de8e0f881d918a8812b1425c8d diff --git a/matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_vector.ma b/matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_vector.ma index 68cab8482..8e234a5c1 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_vector.ma +++ b/matita/matita/contribs/lambdadelta/basic_2/relocation/lifts_vector.ma @@ -19,10 +19,10 @@ include "basic_2/relocation/lifts.ma". (* Basic_2A1: includes: liftv_nil liftv_cons *) inductive liftsv (f:rtmap): relation (list term) ≝ -| liftsv_nil : liftsv f (◊) (◊) +| liftsv_nil : liftsv f (Ⓔ) (Ⓔ) | liftsv_cons: ∀T1s,T2s,T1,T2. ⬆*[f] T1 ≘ T2 → liftsv f T1s T2s → - liftsv f (T1 @ T1s) (T2 @ T2s) + liftsv f (T1 ⨮ T1s) (T2 ⨮ T2s) . interpretation "uniform relocation (term vector)" @@ -33,19 +33,19 @@ interpretation "generic relocation (term vector)" (* Basic inversion lemmas ***************************************************) -fact liftsv_inv_nil1_aux: ∀f,X,Y. ⬆*[f] X ≘ Y → X = ◊ → Y = ◊. +fact liftsv_inv_nil1_aux: ∀f,X,Y. ⬆*[f] X ≘ Y → X = Ⓔ → Y = Ⓔ. #f #X #Y * -X -Y // #T1s #T2s #T1 #T2 #_ #_ #H destruct qed-. (* Basic_2A1: includes: liftv_inv_nil1 *) -lemma liftsv_inv_nil1: ∀f,Y. ⬆*[f] ◊ ≘ Y → Y = ◊. +lemma liftsv_inv_nil1: ∀f,Y. ⬆*[f] Ⓔ ≘ Y → Y = Ⓔ. /2 width=5 by liftsv_inv_nil1_aux/ qed-. fact liftsv_inv_cons1_aux: ∀f:rtmap. ∀X,Y. ⬆*[f] X ≘ Y → - ∀T1,T1s. X = T1 @ T1s → + ∀T1,T1s. X = T1 ⨮ T1s → ∃∃T2,T2s. ⬆*[f] T1 ≘ T2 & ⬆*[f] T1s ≘ T2s & - Y = T2 @ T2s. + Y = T2 ⨮ T2s. #f #X #Y * -X -Y [ #U1 #U1s #H destruct | #T1s #T2s #T1 #T2 #HT12 #HT12s #U1 #U1s #H destruct /2 width=5 by ex3_2_intro/ @@ -53,32 +53,32 @@ fact liftsv_inv_cons1_aux: ∀f:rtmap. ∀X,Y. ⬆*[f] X ≘ Y → qed-. (* Basic_2A1: includes: liftv_inv_cons1 *) -lemma liftsv_inv_cons1: ∀f:rtmap. ∀T1,T1s,Y. ⬆*[f] T1 @ T1s ≘ Y → +lemma liftsv_inv_cons1: ∀f:rtmap. ∀T1,T1s,Y. ⬆*[f] T1 ⨮ T1s ≘ Y → ∃∃T2,T2s. ⬆*[f] T1 ≘ T2 & ⬆*[f] T1s ≘ T2s & - Y = T2 @ T2s. + Y = T2 ⨮ T2s. /2 width=3 by liftsv_inv_cons1_aux/ qed-. -fact liftsv_inv_nil2_aux: ∀f,X,Y. ⬆*[f] X ≘ Y → Y = ◊ → X = ◊. +fact liftsv_inv_nil2_aux: ∀f,X,Y. ⬆*[f] X ≘ Y → Y = Ⓔ → X = Ⓔ. #f #X #Y * -X -Y // #T1s #T2s #T1 #T2 #_ #_ #H destruct qed-. -lemma liftsv_inv_nil2: ∀f,X. ⬆*[f] X ≘ ◊ → X = ◊. +lemma liftsv_inv_nil2: ∀f,X. ⬆*[f] X ≘ Ⓔ → X = Ⓔ. /2 width=5 by liftsv_inv_nil2_aux/ qed-. fact liftsv_inv_cons2_aux: ∀f:rtmap. ∀X,Y. ⬆*[f] X ≘ Y → - ∀T2,T2s. Y = T2 @ T2s → + ∀T2,T2s. Y = T2 ⨮ T2s → ∃∃T1,T1s. ⬆*[f] T1 ≘ T2 & ⬆*[f] T1s ≘ T2s & - X = T1 @ T1s. + X = T1 ⨮ T1s. #f #X #Y * -X -Y [ #U2 #U2s #H destruct | #T1s #T2s #T1 #T2 #HT12 #HT12s #U2 #U2s #H destruct /2 width=5 by ex3_2_intro/ ] qed-. -lemma liftsv_inv_cons2: ∀f:rtmap. ∀X,T2,T2s. ⬆*[f] X ≘ T2 @ T2s → +lemma liftsv_inv_cons2: ∀f:rtmap. ∀X,T2,T2s. ⬆*[f] X ≘ T2 ⨮ T2s → ∃∃T1,T1s. ⬆*[f] T1 ≘ T2 & ⬆*[f] T1s ≘ T2s & - X = T1 @ T1s. + X = T1 ⨮ T1s. /2 width=3 by liftsv_inv_cons2_aux/ qed-. (* Basic_1: was: lifts1_flat (left to right) *)