X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Flib%2Flambda-delta%2Fsubstitution%2Flift.ma;h=340cffccdab53541332f97dbe3ca75612ea83d2d;hb=42680d47c033d751738fd0f84af7b45b2a91a5b8;hp=a550123b51486976e28605fe25ed9b831b17696b;hpb=1df995bc8675c8b1118889cf470fc4d1d2ab5a22;p=helm.git diff --git a/matita/matita/lib/lambda-delta/substitution/lift.ma b/matita/matita/lib/lambda-delta/substitution/lift.ma index a550123b5..340cffccd 100644 --- a/matita/matita/lib/lambda-delta/substitution/lift.ma +++ b/matita/matita/lib/lambda-delta/substitution/lift.ma @@ -24,12 +24,60 @@ inductive lift: term → nat → nat → term → Prop ≝ interpretation "relocation" 'RLift T1 d e T2 = (lift T1 d e T2). +(* The basic properties *****************************************************) + +lemma lift_lref_ge_minus: ∀d,e,i. d + e ≤ i → ↑[d,e] #(i - e) ≡ #i. +#d #e #i #H >(plus_minus_m_m i e) in ⊢ (? ? ? ? %) /3/ +qed. + (* The basic inversion lemmas ***********************************************) lemma lift_inv_sort2_aux: ∀d,e,T1,T2. ↑[d,e] T1 ≡ T2 → ∀k. T2 = ⋆k → T1 = ⋆k. #d #e #T1 #T2 #H elim H -H d e T1 T2 // - [ #i #d #e #_ #k #H destruct (***) (* DESTRUCT FAILS *) + [ #i #d #e #_ #k #H destruct + | #I #V1 #V2 #T1 #T2 #d #e #_ #_ #_ #_ #k #H destruct + ] +qed. lemma lift_inv_sort2: ∀d,e,T1,k. ↑[d,e] T1 ≡ ⋆k → T1 = ⋆k. #d #e #T1 #k #H lapply (lift_inv_sort2_aux … H) /2/ -qed. +qed. + +lemma lift_inv_lref2_aux: ∀d,e,T1,T2. ↑[d,e] T1 ≡ T2 → ∀i. T2 = #i → + (i < d ∧ T1 = #i) ∨ (d + e ≤ i ∧ T1 = #(i - e)). +#d #e #T1 #T2 #H elim H -H d e T1 T2 + [ #k #d #e #i #H destruct + | #j #d #e #Hj #i #Hi destruct /3/ + | #j #d #e #Hj #i #Hi destruct