X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=inline;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Fsubstitution%2Fcofrees_lift.ma;fp=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Fsubstitution%2Fcofrees_lift.ma;h=30bcd9ce945f7bb7d9726f1709cc5885b80fae3c;hb=42da17037d96c9c8e95a21ea71aa70522916939a;hp=0000000000000000000000000000000000000000;hpb=7a25b8fcba2436a75556db1725c6e1be78a9faca;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/basic_2/substitution/cofrees_lift.ma b/matita/matita/contribs/lambdadelta/basic_2/substitution/cofrees_lift.ma new file mode 100644 index 000000000..30bcd9ce9 --- /dev/null +++ b/matita/matita/contribs/lambdadelta/basic_2/substitution/cofrees_lift.ma @@ -0,0 +1,97 @@ +(**************************************************************************) +(* ___ *) +(* ||M|| *) +(* ||A|| A project by Andrea Asperti *) +(* ||T|| *) +(* ||I|| Developers: *) +(* ||T|| The HELM team. *) +(* ||A|| http://helm.cs.unibo.it *) +(* \ / *) +(* \ / This file is distributed under the terms of the *) +(* v GNU General Public License Version 2 *) +(* *) +(**************************************************************************) + +include "basic_2/substitution/cpys_lift.ma". +include "basic_2/substitution/cofrees.ma". + +(* CONTEXT-SENSITIVE EXCLUSION FROM FREE VARIABLES **************************) + +(* Advanced properties ******************************************************) + +lemma cofrees_lref_skip: ∀L,d,i,j. j < i → yinj j < d → L ⊢ i ~ϵ 𝐅*[d]⦃#j⦄. +#L #d #i #j #Hji #Hjd #X #H elim (cpys_inv_lref1_Y2 … H) -H +[ #H destruct /3 width=2 by lift_lref_lt, ex_intro/ +| * #I #K #W1 #W2 #Hdj elim (ylt_yle_false … Hdj) -i -I -L -K -W1 -W2 -X // +] +qed. + +lemma cofrees_lref_lt: ∀L,d,i,j. i < j → L ⊢ i ~ϵ 𝐅*[d]⦃#j⦄. +#L #d #i #j #Hij #X #H elim (cpys_inv_lref1_Y2 … H) -H +[ #H destruct /3 width=2 by lift_lref_ge_minus, ex_intro/ +| * #I #K #V1 #V2 #_ #_ #_ #H -I -L -K -V1 -d + elim (lift_split … H i j) /2 width=2 by lt_to_le, ex_intro/ +] +qed. + +lemma cofrees_lref_gt: ∀I,L,K,W,d,i,j. j < i → ⇩[j] L ≡ K.ⓑ{I}W → + K ⊢ (i-j-1) ~ϵ 𝐅*[O]⦃W⦄ → L ⊢ i ~ϵ 𝐅*[d]⦃#j⦄. +#I #L #K #W1 #d #i #j #Hji #HLK #HW1 #X #H elim (cpys_inv_lref1_Y2 … H) -H +[ #H destruct /3 width=2 by lift_lref_lt, ex_intro/ +| * #I0 #K0 #W0 #W2 #Hdj #HLK0 #HW12 #HW2 lapply (ldrop_mono … HLK0 … HLK) -L + #H destruct elim (HW1 … HW12) -I -K -W1 -d + #V2 #HVW2 elim (lift_trans_le … HVW2 … HW2) -W2 // + >minus_plus minus_plus