]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/basic_2/etc_new/lstas/lstas_da.etc
- partial commit of rt_transition ...
[helm.git] / matita / matita / contribs / lambdadelta / basic_2 / etc_new / lstas / lstas_da.etc
index 6ecadc335b0f503856c5264787ac89d5afb92170..b81ca5d4fa01c8593b33af47f69d8fce1d6ce389 100644 (file)
@@ -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 <plus_n_Sm #H destruct