]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpt.ma
milestone update in basic_2, update in ground and static_2
[helm.git] / matita / matita / contribs / lambdadelta / basic_2 / rt_transition / cpt.ma
index 59fe4d34e2f287c5141844c0aaa1cad3d8b631fc..4f41f762df352ca8babcd74183e125c20c992be7 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "ground_2/xoa/ex_4_3.ma".
-include "ground_2/steps/rtc_ist_shift.ma".
-include "ground_2/steps/rtc_ist_plus.ma".
-include "ground_2/steps/rtc_ist_max.ma".
+include "ground/xoa/ex_4_3.ma".
+include "ground/steps/rtc_ist_shift.ma".
+include "ground/steps/rtc_ist_plus.ma".
+include "ground/steps/rtc_ist_max.ma".
+include "static_2/syntax/sh.ma".
 include "basic_2/notation/relations/pty_6.ma".
 include "basic_2/rt_transition/cpg.ma".
 
 (* T-BOUND CONTEXT-SENSITIVE PARALLEL T-TRANSITION FOR TERMS ****************)
 
 definition cpt (h) (G) (L) (n): relation2 term term ≝
-           λT1,T2. ∃∃c. 𝐓❪n,c❫ & ❪G,L❫ ⊢ T1 ⬈[eq …,c,h] T2.
+           λT1,T2. ∃∃c. 𝐓❪n,c❫ & ❪G,L❫ ⊢ T1 ⬈[sh_is_next h,eq …,c] T2.
 
 interpretation
   "t-bound context-sensitive parallel t-transition (term)"
@@ -32,24 +33,24 @@ interpretation
 
 lemma cpt_ess (h) (G) (L):
       ∀s. ❪G,L❫ ⊢ ⋆s ⬆[h,1] ⋆(⫯[h]s).
-/2 width=3 by cpg_ess, ex2_intro/ qed.
+/3 width=3 by cpg_ess, ex2_intro/ qed.
 
 lemma cpt_delta (h) (n) (G) (K):
       ∀V1,V2. ❪G,K❫ ⊢ V1 ⬆[h,n] V2 →
-      ∀W2. ⇧*[1] V2 ≘ W2 → ❪G,K.ⓓV1❫ ⊢ #0 ⬆[h,n] W2.
+      ∀W2. ⇧[1] V2 ≘ W2 → ❪G,K.ⓓV1❫ ⊢ #0 ⬆[h,n] W2.
 #h #n #G #K #V1 #V2 *
 /3 width=5 by cpg_delta, ex2_intro/
 qed.
 
 lemma cpt_ell (h) (n) (G) (K):
       ∀V1,V2. ❪G,K❫ ⊢ V1 ⬆[h,n] V2 →
-      ∀W2. ⇧*[1] V2 ≘ W2 → ❪G,K.ⓛV1❫ ⊢ #0 ⬆[h,↑n] W2.
+      ∀W2. ⇧[1] V2 ≘ W2 → ❪G,K.ⓛV1❫ ⊢ #0 ⬆[h,↑n] W2.
 #h #n #G #K #V1 #V2 *
 /3 width=5 by cpg_ell, ex2_intro, ist_succ/
 qed.
 
 lemma cpt_lref (h) (n) (G) (K):
-      ∀T,i. ❪G,K❫ ⊢ #i ⬆[h,n] T → ∀U. ⇧*[1] T ≘ U →
+      ∀T,i. ❪G,K❫ ⊢ #i ⬆[h,n] T → ∀U. ⇧[1] T ≘ U →
       ∀I. ❪G,K.ⓘ[I]❫ ⊢ #↑i ⬆[h,n] U.
 #h #n #G #K #T #i *
 /3 width=5 by cpg_lref, ex2_intro/
@@ -99,13 +100,13 @@ lemma cpt_inv_atom_sn (h) (n) (J) (G) (L):
       ∀X2. ❪G,L❫ ⊢ ⓪[J] ⬆[h,n] X2 →
       ∨∨ ∧∧ X2 = ⓪[J] & n = 0
        | ∃∃s. X2 = ⋆(⫯[h]s) & J = Sort s & n =1
-       | ∃∃K,V1,V2. ❪G,K❫ ⊢ V1 ⬆[h,n] V2 & ⇧*[1] V2 ≘ X2 & L = K.ⓓV1 & J = LRef 0
-       | ∃∃m,K,V1,V2. ❪G,K❫ ⊢ V1 ⬆[h,m] V2 & ⇧*[1] V2 ≘ X2 & L = K.ⓛV1 & J = LRef 0 & n = ↑m
-       | ∃∃I,K,T,i. ❪G,K❫ ⊢ #i ⬆[h,n] T & ⇧*[1] T ≘ X2 & L = K.ⓘ[I] & J = LRef (↑i).
+       | ∃∃K,V1,V2. ❪G,K❫ ⊢ V1 ⬆[h,n] V2 & ⇧[1] V2 ≘ X2 & L = K.ⓓV1 & J = LRef 0
+       | ∃∃m,K,V1,V2. ❪G,K❫ ⊢ V1 ⬆[h,m] V2 & ⇧[1] V2 ≘ X2 & L = K.ⓛV1 & J = LRef 0 & n = ↑m
+       | ∃∃I,K,T,i. ❪G,K❫ ⊢ #i ⬆[h,n] T & ⇧[1] T ≘ X2 & L = K.ⓘ[I] & J = LRef (↑i).
 #h #n #J #G #L #X2 * #c #Hc #H
 elim (cpg_inv_atom1 … H) -H *
 [ #H1 #H2 destruct /3 width=1 by or5_intro0, conj/
-| #s #H1 #H2 #H3 destruct /3 width=3 by or5_intro1, ex3_intro/
+| #s1 #s2 #H1 #H2 #H3 #H4 destruct /3 width=3 by or5_intro1, ex3_intro/
 | #cV #K #V1 #V2 #HV12 #HVT2 #H1 #H2 #H3 destruct
   /4 width=6 by or5_intro2, ex4_3_intro, ex2_intro/
 | #cV #K #V1 #V2 #HV12 #HVT2 #H1 #H2 #H3 destruct
@@ -121,16 +122,18 @@ lemma cpt_inv_sort_sn (h) (n) (G) (L) (s):
       ∧∧ X2 = ⋆(((next h)^n) s) & n ≤ 1.
 #h #n #G #L #s #X2 * #c #Hc #H
 elim (cpg_inv_sort1 … H) -H * #H1 #H2 destruct
-/2 width=1 by conj/
+[ /2 width=1 by conj/
+| #H1 #H2 destruct /2 width=1 by conj/
+] 
 qed-.
 
 lemma cpt_inv_zero_sn (h) (n) (G) (L):
       ∀X2. ❪G,L❫ ⊢ #0 ⬆[h,n] X2 →
       ∨∨ ∧∧ X2 = #0 & n = 0
-       | ∃∃K,V1,V2. ❪G,K❫ ⊢ V1 ⬆[h,n] V2 & ⇧*[1] V2 ≘ X2 & L = K.ⓓV1
-       | ∃∃m,K,V1,V2. ❪G,K❫ ⊢ V1 ⬆[h,m] V2 & ⇧*[1] V2 ≘ X2 & L = K.ⓛV1 & n = ↑m.
+       | ∃∃K,V1,V2. ❪G,K❫ ⊢ V1 ⬆[h,n] V2 & ⇧[1] V2 ≘ X2 & L = K.ⓓV1
+       | ∃∃m,K,V1,V2. ❪G,K❫ ⊢ V1 ⬆[h,m] V2 & ⇧[1] V2 ≘ X2 & L = K.ⓛV1 & n = ↑m.
 #h #n #G #L #X2 * #c #Hc #H elim (cpg_inv_zero1 … H) -H *
-[ #H1 #H2 destruct /4 width=1 by isrt_inv_00, or3_intro0, conj/
+[ #H1 #H2 destruct /4 width=1 by ist_inv_00, or3_intro0, conj/
 | #cV #K #V1 #V2 #HV12 #HVT2 #H1 #H2 destruct
   /4 width=8 by or3_intro1, ex3_3_intro, ex2_intro/
 | #cV #K #V1 #V2 #HV12 #HVT2 #H1 #H2 destruct
@@ -152,15 +155,15 @@ qed.
 lemma cpt_inv_lref_sn (h) (n) (G) (L) (i):
       ∀X2. ❪G,L❫ ⊢ #↑i ⬆[h,n] X2 →
       ∨∨ ∧∧ X2 = #(↑i) & n = 0
-       | ∃∃I,K,T. ❪G,K❫ ⊢ #i ⬆[h,n] T & ⇧*[1] T ≘ X2 & L = K.ⓘ[I].
+       | ∃∃I,K,T. ❪G,K❫ ⊢ #i ⬆[h,n] T & ⇧[1] T ≘ X2 & L = K.ⓘ[I].
 #h #n #G #L #i #X2 * #c #Hc #H elim (cpg_inv_lref1 … H) -H *
-[ #H1 #H2 destruct /4 width=1 by isrt_inv_00, or_introl, conj/
+[ #H1 #H2 destruct /4 width=1 by ist_inv_00, or_introl, conj/
 | #I #K #V2 #HV2 #HVT2 #H destruct
  /4 width=6 by ex3_3_intro, ex2_intro, or_intror/
 ]
 qed-.
 
-lemma cpt_inv_lref_sn_ctop (n) (h) (G) (i):
+lemma cpt_inv_lref_sn_ctop (h) (n) (G) (i):
       ∀X2. ❪G,⋆❫ ⊢ #i ⬆[h,n] X2 → ∧∧ X2 = #i & n = 0.
 #h #n #G * [| #i ] #X2 #H
 [ elim (cpt_inv_zero_sn … H) -H *