X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambda_delta%2FBasic_2%2Fsubstitution%2Flift_vector.ma;h=aa0a30f9559f6c246a5943c1b4ab5c7f9b949846;hb=011cf6478141e69822a5b40933f2444d0522532f;hp=2f7c9bbc5e142cfcbe417f46968de98322035442;hpb=7e6643f9ce7ae87e9241aeac5b6d828e9d47fb63;p=helm.git diff --git a/matita/matita/contribs/lambda_delta/Basic_2/substitution/lift_vector.ma b/matita/matita/contribs/lambda_delta/Basic_2/substitution/lift_vector.ma index 2f7c9bbc5..aa0a30f95 100644 --- a/matita/matita/contribs/lambda_delta/Basic_2/substitution/lift_vector.ma +++ b/matita/matita/contribs/lambda_delta/Basic_2/substitution/lift_vector.ma @@ -15,20 +15,45 @@ include "Basic_2/grammar/term_vector.ma". include "Basic_2/substitution/lift.ma". -(* RELOCATION ***************************************************************) +(* BASIC TERM VECTOR RELOCATION *********************************************) inductive liftv (d,e:nat) : relation (list term) ≝ | liftv_nil : liftv d e ◊ ◊ | liftv_cons: ∀T1s,T2s,T1,T2. - ⇑[d, e] T1 ≡ T2 → liftv d e T1s T2s → + ⇧[d, e] T1 ≡ T2 → liftv d e T1s T2s → liftv d e (T1 :: T1s) (T2 :: T2s) . interpretation "relocation (vector)" 'RLift d e T1s T2s = (liftv d e T1s T2s). +(* Basic inversion lemmas ***************************************************) + +fact liftv_inv_nil1_aux: ∀T1s,T2s,d,e. ⇧[d, e] T1s ≡ T2s → T1s = ◊ → T2s = ◊. +#T1s #T2s #d #e * -T1s -T2s // +#T1s #T2s #T1 #T2 #_ #_ #H destruct +qed. + +lemma liftv_inv_nil1: ∀T2s,d,e. ⇧[d, e] ◊ ≡ T2s → T2s = ◊. +/2 width=5/ qed-. + +fact liftv_inv_cons1_aux: ∀T1s,T2s,d,e. ⇧[d, e] T1s ≡ T2s → + ∀U1,U1s. T1s = U1 :: U1s → + ∃∃U2,U2s. ⇧[d, e] U1 ≡ U2 & ⇧[d, e] U1s ≡ U2s & + T2s = U2 :: U2s. +#T1s #T2s #d #e * -T1s -T2s +[ #U1 #U1s #H destruct +| #T1s #T2s #T1 #T2 #HT12 #HT12s #U1 #U1s #H destruct /2 width=5/ +] +qed. + +lemma liftv_inv_cons1: ∀U1,U1s,T2s,d,e. ⇧[d, e] U1 :: U1s ≡ T2s → + ∃∃U2,U2s. ⇧[d, e] U1 ≡ U2 & ⇧[d, e] U1s ≡ U2s & + T2s = U2 :: U2s. +/2 width=3/ qed-. + (* Basic properties *********************************************************) -lemma liftv_total: ∀d,e. ∀T1s:list term. ∃T2s. ⇑[d, e] T1s ≡ T2s. +lemma liftv_total: ∀d,e. ∀T1s:list term. ∃T2s. ⇧[d, e] T1s ≡ T2s. #d #e #T1s elim T1s -T1s [ /2 width=2/ | #T1 #T1s * #T2s #HT12s