X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fbasic_2%2Fetc_new%2Flstas%2Flstas_da.etc;h=b81ca5d4fa01c8593b33af47f69d8fce1d6ce389;hb=c3904c007394068ed823575e3be3d73a9ad92cce;hp=6ecadc335b0f503856c5264787ac89d5afb92170;hpb=fb246e36bb7d2731016e686e2091f6a3704bb362;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/basic_2/etc_new/lstas/lstas_da.etc b/matita/matita/contribs/lambdadelta/basic_2/etc_new/lstas/lstas_da.etc index 6ecadc335..b81ca5d4f 100644 --- a/matita/matita/contribs/lambdadelta/basic_2/etc_new/lstas/lstas_da.etc +++ b/matita/matita/contribs/lambdadelta/basic_2/etc_new/lstas/lstas_da.etc @@ -19,9 +19,9 @@ include "basic_2/unfold/lstas_lstas.ma". (* Properties on degree assignment for terms ********************************) -lemma da_lstas: ∀h,g,G,L,T,d1. ⦃G, L⦄ ⊢ T ▪[h, g] d1 → ∀d2. - ∃∃U. ⦃G, L⦄ ⊢ T •*[h, d2] U & ⦃G, L⦄ ⊢ U ▪[h, g] d1-d2. -#h #g #G #L #T #d1 #H elim H -G -L -T -d1 +lemma da_lstas: ∀h,o,G,L,T,d1. ⦃G, L⦄ ⊢ T ▪[h, o] d1 → ∀d2. + ∃∃U. ⦃G, L⦄ ⊢ T •*[h, d2] U & ⦃G, L⦄ ⊢ U ▪[h, o] d1-d2. +#h #o #G #L #T #d1 #H elim H -G -L -T -d1 [ /4 width=3 by da_sort, deg_iter, ex2_intro/ | #G #L #K #V #i #d1 #HLK #_ #IHV #d2 elim (IHV d2) -IHV #W @@ -42,19 +42,19 @@ lemma da_lstas: ∀h,g,G,L,T,d1. ⦃G, L⦄ ⊢ T ▪[h, g] d1 → ∀d2. ] qed-. -lemma lstas_da_conf: ∀h,g,G,L,T,U,d2. ⦃G, L⦄ ⊢ T •*[h, d2] U → - ∀d1. ⦃G, L⦄ ⊢ T ▪[h, g] d1 → ⦃G, L⦄ ⊢ U ▪[h, g] d1-d2. -#h #g #G #L #T #U #d2 #HTU #d1 #HT +lemma lstas_da_conf: ∀h,o,G,L,T,U,d2. ⦃G, L⦄ ⊢ T •*[h, d2] U → + ∀d1. ⦃G, L⦄ ⊢ T ▪[h, o] d1 → ⦃G, L⦄ ⊢ U ▪[h, o] d1-d2. +#h #o #G #L #T #U #d2 #HTU #d1 #HT elim (da_lstas … HT d2) -HT #X #HTX lapply (lstas_mono … HTX … HTU) -T // qed-. (* inversion lemmas on degree assignment for terms **************************) -lemma lstas_inv_da: ∀h,g,G,L,T,U,d2. ⦃G, L⦄ ⊢ T •*[h, d2] U → - ∃∃d1. ⦃G, L⦄ ⊢ T ▪[h, g] d1 & ⦃G, L⦄ ⊢ U ▪[h, g] d1-d2. -#h #g #G #L #T #U #d2 #H elim H -G -L -T -U -d2 -[ #G #L #d2 #k elim (deg_total h g k) /4 width=3 by da_sort, deg_iter, ex2_intro/ +lemma lstas_inv_da: ∀h,o,G,L,T,U,d2. ⦃G, L⦄ ⊢ T •*[h, d2] U → + ∃∃d1. ⦃G, L⦄ ⊢ T ▪[h, o] d1 & ⦃G, L⦄ ⊢ U ▪[h, o] d1-d2. +#h #o #G #L #T #U #d2 #H elim H -G -L -T -U -d2 +[ #G #L #d2 #s elim (deg_total h o s) /4 width=3 by da_sort, deg_iter, ex2_intro/ | #G #L #K #V #W #U #i #d2 #HLK #_ #HWU * lapply (drop_fwd_drop2 … HLK) /3 width=10 by da_lift, da_ldef, ex2_intro/ | #G #L #K #W #V #i #HLK #_ * /3 width=6 by da_ldec, ex2_intro/ @@ -67,13 +67,13 @@ lemma lstas_inv_da: ∀h,g,G,L,T,U,d2. ⦃G, L⦄ ⊢ T •*[h, d2] U → qed-. lemma lstas_inv_da_ge: ∀h,G,L,T,U,d2,d. ⦃G, L⦄ ⊢ T •*[h, d2] U → - ∃∃g,d1. ⦃G, L⦄ ⊢ T ▪[h, g] d1 & ⦃G, L⦄ ⊢ U ▪[h, g] d1-d2 & d ≤ d1. + ∃∃o,d1. ⦃G, L⦄ ⊢ T ▪[h, o] d1 & ⦃G, L⦄ ⊢ U ▪[h, o] d1-d2 & d ≤ d1. #h #G #L #T #U #d2 #d #H elim H -G -L -T -U -d2 [ /4 width=5 by da_sort, deg_iter, ex3_2_intro/ | #G #L #K #V #W #U #i #d2 #HLK #_ #HWU * lapply (drop_fwd_drop2 … HLK) /3 width=10 by da_lift, da_ldef, ex3_2_intro/ | #G #L #K #W #V #i #HLK #_ * - #g #d1 #HW #HV #Hd1 /4 width=6 by da_ldec, lt_to_le, le_S_S, ex3_2_intro/ + #o #d1 #HW #HV #Hd1 /4 width=6 by da_ldec, lt_to_le, le_S_S, ex3_2_intro/ | #G #L #K #W #V #U #i #d2 #HLK #_ #HVU * lapply (drop_fwd_drop2 … HLK) /4 width=10 by da_lift, da_ldec, lt_to_le, le_S_S, ex3_2_intro/ @@ -87,7 +87,7 @@ qed-. lemma lstas_inv_refl_pos: ∀h,G,L,T,d. ⦃G, L⦄ ⊢ T •*[h, d+1] T → ⊥. #h #G #L #T #d2 #H elim (lstas_inv_da_ge … (d2+1) H) -H -#g #d1 #HT1 #HT12 #Hd21 lapply (da_mono … HT1 … HT12) -h -G -L -T +#o #d1 #HT1 #HT12 #Hd21 lapply (da_mono … HT1 … HT12) -h -G -L -T #H elim (discr_x_minus_xy … H) -H [ #H destruct /2 width=3 by le_plus_xSy_O_false/ | -d1