X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Fsubstitution%2Fldrop_sfr.ma;fp=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Fsubstitution%2Fldrop_sfr.ma;h=0000000000000000000000000000000000000000;hb=6ac78e984f3ddee01251ef0ce13a692f062d7d5f;hp=9d4cc31086962f9cd679f3884f1c4b3be8f1c715;hpb=faae92d508117105572e028aa454db8ba8be5291;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/basic_2/substitution/ldrop_sfr.ma b/matita/matita/contribs/lambdadelta/basic_2/substitution/ldrop_sfr.ma deleted file mode 100644 index 9d4cc3108..000000000 --- a/matita/matita/contribs/lambdadelta/basic_2/substitution/ldrop_sfr.ma +++ /dev/null @@ -1,94 +0,0 @@ -(**************************************************************************) -(* ___ *) -(* ||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/lsubr_sfr.ma". -include "basic_2/substitution/ldrop_ldrop.ma". - -(* DROPPING *****************************************************************) - -(* Inversion lemmas about local env. full refinement for substitution *******) - -(* Note: ldrop_ldrop not needed *) -lemma sfr_inv_ldrop: ∀I,L,K,V,i. ⇩[0, i] L ≡ K. ⓑ{I}V → ∀d,e. ≽ [d, e] L → - d ≤ i → i < d + e → I = Abbr. -#I #L elim L -L -[ #K #V #i #H - lapply (ldrop_inv_atom1 … H) -H #H destruct -| #L #J #W #IHL #K #V #i #H - elim (ldrop_inv_O1 … H) -H * - [ -IHL #H1 #H2 #d #e #HL #Hdi #Hide destruct - lapply (le_n_O_to_eq … Hdi) -Hdi #H destruct - lapply (HL … (L.ⓓW) ?) -HL /2 width=1/ #H - elim (lsubr_inv_abbr2 … H ?) -H // -Hide #K #_ #H destruct // - | #Hi #HLK #d @(nat_ind_plus … d) -d - [ #e #H #_ #Hide - elim (sfr_inv_bind … H ?) -H [2: /2 width=2/ ] #HL #H destruct - @(IHL … HLK … HL) -IHL -HLK -HL // /2 width=1/ - | #d #_ #e #H #Hdi #Hide - lapply (sfr_inv_skip … H ?) -H // #HL - @(IHL … HLK … HL) -IHL -HLK -HL /2 width=1/ - ] - ] -] -qed-. - -(* Properties about local env. full refinement for substitution *************) - -(* Note: ldrop_ldrop not needed *) -lemma sfr_ldrop: ∀L,d,e. - (∀I,K,V,i. d ≤ i → i < d + e → ⇩[0, i] L ≡ K. ⓑ{I}V → I = Abbr) → - ≽ [d, e] L. -#L elim L -L // -#L #I #V #IHL #d @(nat_ind_plus … d) -d -[ #e @(nat_ind_plus … e) -e // - #e #_ #H0 - >(H0 I L V 0 ? ? ?) // - /5 width=6 by sfr_abbr, ldrop_ldrop, lt_minus_to_plus_r/ (**) (* auto now too slow without trace *) -| #d #_ #e #H0 - /5 width=6 by sfr_skip, ldrop_ldrop, le_S_S, lt_minus_to_plus_r/ (**) (* auto now too slow without trace *) -] -qed. - -lemma sfr_ldrop_trans_le: ∀L1,L2,d,e. ⇩[d, e] L1 ≡ L2 → ∀dd,ee. ≽ [dd, ee] L1 → - dd + ee ≤ d → ≽ [dd, ee] L2. -#L1 #L2 #d #e #HL12 #dd #ee #HL1 #Hddee -@sfr_ldrop #I #K2 #V2 #i #Hddi #Hiddee #HLK2 -lapply (lt_to_le_to_lt … Hiddee Hddee) -Hddee #Hid -elim (ldrop_trans_le … HL12 … HLK2 ?) -L2 /2 width=2/ #X #HLK1 #H -elim (ldrop_inv_skip2 … H ?) -H /2 width=1/ -Hid #K1 #V1 #HK12 #HV21 #H destruct -@(sfr_inv_ldrop … HLK1 … HL1) -L1 -K1 -V1 // -qed. - -lemma sfr_ldrop_trans_be_up: ∀L1,L2,d,e. ⇩[d, e] L1 ≡ L2 → - ∀dd,ee. ≽ [dd, ee] L1 → - dd ≤ d + e → d + e ≤ dd + ee → - ≽ [d, dd + ee - d - e] L2. -#L1 #L2 #d #e #HL12 #dd #ee #HL1 #Hdde #Hddee -@sfr_ldrop #I #K2 #V2 #i #Hdi #Hiddee #HLK2 -lapply (transitive_le ? ? (i+e)… Hdde ?) -Hdde /2 width=1/ #Hddie ->commutative_plus in Hiddee; >minus_minus_comm commutative_plus // -Hddie /2 width=1/ -qed. - -lemma sfr_ldrop_trans_ge: ∀L1,L2,d,e. ⇩[d, e] L1 ≡ L2 → ∀dd,ee. ≽ [dd, ee] L1 → - d + e ≤ dd → ≽ [dd - e, ee] L2. -#L1 #L2 #d #e #HL12 #dd #ee #HL1 #Hddee -@sfr_ldrop #I #K2 #V2 #i #Hddi #Hiddee #HLK2 -elim (le_inv_plus_l … Hddee) -Hddee #Hdde #Hedd ->plus_minus in Hiddee; // #Hiddee -lapply (transitive_le … Hdde Hddi) -Hdde #Hid -lapply (ldrop_trans_ge … HL12 … HLK2 ?) -L2 // -Hid #HL1K2 -@(sfr_inv_ldrop … HL1K2 … HL1) -L1 >commutative_plus /2 width=1/ -qed.