]> matita.cs.unibo.it Git - helm.git/commitdiff
update in basic_2 and apps_2
authorFerruccio Guidi <fguidi@maelstrom.helm.cs.unibo.it>
Tue, 14 Jan 2020 18:08:54 +0000 (19:08 +0100)
committerFerruccio Guidi <fguidi@maelstrom.helm.cs.unibo.it>
Tue, 14 Jan 2020 18:08:54 +0000 (19:08 +0100)
+ bug fixed in the notation of cpm and derivatives

109 files changed:
matita/matita/contribs/lambdadelta/apps_2/examples/ex_cpr_omega.ma
matita/matita/contribs/lambdadelta/apps_2/examples/ex_fpbg_refl.ma
matita/matita/contribs/lambdadelta/apps_2/functional/mf_cpr.ma
matita/matita/contribs/lambdadelta/apps_2/models/deq_cpr.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_aaa.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpes.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_conf.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_teqx.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_teqx_conf.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_teqx_trans.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpmre.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_conf.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_teqx.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_teqx_conf.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpts.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_preserve.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_preserve_cpcs.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_preserve_sub.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_preserve_cpcs.ma
matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas.ma
matita/matita/contribs/lambdadelta/basic_2/i_dynamic/ntas_preserve.ma
matita/matita/contribs/lambdadelta/basic_2/notation/relations/pred_5.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/pred_6.ma
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predeval_5.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predeval_6.ma
matita/matita/contribs/lambdadelta/basic_2/notation/relations/prednormal_4.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/prednormal_5.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsn_4.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsn_5.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsnstar_4.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsnstar_5.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predstar_5.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predstar_6.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cnuw.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cnuw_cnuw.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpmre.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpmre_aaa.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_aaa.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_cpms.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_cpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_drops.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_fpbg.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_fpbs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_lpr.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_lsubr.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_reqx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpmuwe.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpmuwe_cpmuwe.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprre.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprre_cpms.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprre_cprre.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprre_csx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_cnr.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_cprs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_drops.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_ext.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_lpr.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprs_tweq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpts_cpms.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_aaa.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_cpms.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_cprs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_ctc.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_length.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_lpr.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_lprs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_lpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_tc.ma
matita/matita/contribs/lambdadelta/basic_2/rt_conversion/cpc.ma
matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_cpcs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_cprs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_lprs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpes.ma
matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpes_cpms.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_drops.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_simple.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnr_teqx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_aaa.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_cpx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_drops.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_fsle.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_lsubr.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_simple.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm_teqx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_drops.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_drops_basic.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_ext.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_teqx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpt.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpt_cpm.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpbq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_aaa.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_fquq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_length.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_lpr.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_lpx.ma
matita/matita/contribs/lambdadelta/basic_2/web/basic_2_src.tbl

index 0f07f5997f922e4304c7a998f20ce1fa11806b27..c8145c03cd00cf6a4b7a7d582aa1c0194f2957e5 100644 (file)
@@ -34,7 +34,7 @@ lemma Delta_lifts (f) (s): ⇧*[f] (Delta s) ≘ (Delta s).
 (* Basic inversion properties ***********************************************)
 
 lemma cpr_inv_Delta1_body_sn (h) (G) (L) (s):
-                             ∀X. ❪G,L.ⓛ⋆s❫ ⊢ ⓐ#O.#O ➡[h] X → ⓐ#O.#O = X.
+                             ∀X. ❪G,L.ⓛ⋆s❫ ⊢ ⓐ#O.#O ➡[h,0] X → ⓐ#O.#O = X.
 #h #G #L #s #X #H
 lapply (cpm_inv_appl1 … H) -H * *
 [ #W2 #T2 #HW2 #HT2 #H destruct
@@ -51,7 +51,7 @@ lapply (cpm_inv_appl1 … H) -H * *
 qed-.
 
 lemma cpr_inv_Delta_sn (h) (G) (L) (s):
-                       ∀X. ❪G,L❫ ⊢ Delta s ➡[h] X → Delta s = X.
+                       ∀X. ❪G,L❫ ⊢ Delta s ➡[h,0] X → Delta s = X.
 #h #G #L #s #X #H
 elim (cpm_inv_abst1 … H) -H #X1 #X2 #H1 #H2 #H destruct
 lapply (cpr_inv_sort1 … H1) -H1 #H destruct
@@ -60,19 +60,19 @@ qed-.
 
 (* Main properties **********************************************************)
 
-theorem cpr_Omega_12 (h) (G) (L) (s): ❪G,L❫ ⊢ Omega1 s ➡[h] Omega2 s.
+theorem cpr_Omega_12 (h) (G) (L) (s): ❪G,L❫ ⊢ Omega1 s ➡[h,0] Omega2 s.
 /2 width=1 by cpm_beta/ qed.
 
-theorem cpr_Omega_23 (h) (G) (L) (s): ❪G,L❫ ⊢ Omega2 s ➡[h] Omega3 s.
+theorem cpr_Omega_23 (h) (G) (L) (s): ❪G,L❫ ⊢ Omega2 s ➡[h,0] Omega3 s.
 /5 width=3 by cpm_eps, cpm_appl, cpm_bind, cpm_delta, Delta_lifts/ qed.
 
-theorem cpr_Omega_31 (h) (G) (L) (s): ❪G,L❫ ⊢ Omega3 s ➡[h] Omega1 s.
+theorem cpr_Omega_31 (h) (G) (L) (s): ❪G,L❫ ⊢ Omega3 s ➡[h,0] Omega1 s.
 /4 width=3 by cpm_zeta, Delta_lifts, lifts_flat/ qed.
 
 (* Main inversion properties ************************************************)
 
 theorem cpr_inv_Omega1_sn (h) (G) (L) (s):
-                          ∀X. ❪G,L❫ ⊢ Omega1 s ➡[h] X →
+                          ∀X. ❪G,L❫ ⊢ Omega1 s ➡[h,0] X →
                           ∨∨ Omega1 s = X | Omega2 s = X.
 #h #G #L #s #X #H elim (cpm_inv_appl1 … H) -H *
 [ #W2 #T2 #HW2 #HT2 #H destruct
@@ -87,7 +87,7 @@ theorem cpr_inv_Omega1_sn (h) (G) (L) (s):
 ]
 qed-.
 
-theorem cpr_Omega_21_false (h) (G) (L) (s): ❪G,L❫ ⊢ Omega2 s ➡[h] Omega1 s → ⊥.
+theorem cpr_Omega_21_false (h) (G) (L) (s): ❪G,L❫ ⊢ Omega2 s ➡[h,0] Omega1 s → ⊥.
 #h #G #L #s #H elim (cpm_inv_bind1 … H) -H *
 [ #W #T #_ #_ whd in ⊢ (??%?→?); #H destruct
 | #X #H #_ #_ #_
index db674d19d4ec461b116479cea597848691d9f7e9..8a459a0be7b90e0925f4b8703ea35a4079f80aee 100644 (file)
@@ -36,13 +36,13 @@ lemma ApplDelta_lifts (f) (s0) (s):
       ⇧*[f] (ApplDelta s0 s) ≘ (ApplDelta s0 s).
 /5 width=1 by lifts_sort, lifts_lref, lifts_bind, lifts_flat/ qed.
 
-lemma cpr_ApplOmega_12 (h) (G) (L) (s0) (s): ❪G,L❫ ⊢ ApplOmega1 s0 s ➡[h] ApplOmega2 s0 s.
+lemma cpr_ApplOmega_12 (h) (G) (L) (s0) (s): ❪G,L❫ ⊢ ApplOmega1 s0 s ➡[h,0] ApplOmega2 s0 s.
 /2 width=1 by cpm_beta/ qed.
 
-lemma cpr_ApplOmega_23 (h) (G) (L) (s0) (s): ❪G,L❫ ⊢ ApplOmega2 s0 s ➡[h] ApplOmega3 s0 s.
+lemma cpr_ApplOmega_23 (h) (G) (L) (s0) (s): ❪G,L❫ ⊢ ApplOmega2 s0 s ➡[h,0] ApplOmega3 s0 s.
 /6 width=3 by cpm_eps, cpm_appl, cpm_bind, cpm_delta, ApplDelta_lifts/ qed.
 
-lemma cpr_ApplOmega_34 (h) (G) (L) (s0) (s): ❪G,L❫ ⊢ ApplOmega3 s0 s ➡[h] ApplOmega4 s0 s.
+lemma cpr_ApplOmega_34 (h) (G) (L) (s0) (s): ❪G,L❫ ⊢ ApplOmega3 s0 s ➡[h,0] ApplOmega4 s0 s.
 /4 width=3 by cpm_zeta, ApplDelta_lifts, lifts_sort, lifts_flat/ qed.
 
 lemma cpxs_ApplOmega_14 (h) (G) (L) (s0) (s): ❪G,L❫ ⊢ ApplOmega1 s0 s ⬈*[h] ApplOmega4 s0 s.
index 46c1925c99d688a3d93db485b1025d2a48b3d039..4c12310e8f11fdc5f60096f63539a79c03086d74 100644 (file)
@@ -20,9 +20,9 @@ include "apps_2/functional/mf_exteq.ma".
 
 (* Properties with relocation ***********************************************)
 
-lemma mf_delta_drops (h) (G): ∀K,V1,V2. ❪G,K❫ ⊢ V1 ➡[h] V2 →
+lemma mf_delta_drops (h) (G): ∀K,V1,V2. ❪G,K❫ ⊢ V1 ➡[h,0] V2 →
                               ∀T,L,i. ⇩[i] L ≘ K.ⓓV1 →
-                              ∀gv,lv. ❪G,L❫ ⊢ ●[gv,⇡[i←#i]lv]T ➡[h] ●[gv,⇡[i←↑[↑i]V2]lv]T.
+                              ∀gv,lv. ❪G,L❫ ⊢ ●[gv,⇡[i←#i]lv]T ➡[h,0] ●[gv,⇡[i←↑[↑i]V2]lv]T.
 #h #G #K #V1 #V2 #HV #T elim T -T * //
 [ #i #L #j #HKL #gv #lv
   >mf_lref >mf_lref
index 7d648b07543e03d5d9af14c2c6b63a0dbc85cdad..b19c7c4643a0a23be5e34fe541f32d04d7b9bf6d 100644 (file)
@@ -21,7 +21,7 @@ include "apps_2/models/deq.ma".
 (* Forward lemmas with context-sensitive parallel reduction for terms *******)
 
 lemma cpr_fwd_deq (h) (M): is_model M → is_extensional M →
-                           ∀G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡[h] T2 → ❪G,L❫ ⊢ T1 ≗{M} T2.
+                           ∀G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡[h,0] T2 → ❪G,L❫ ⊢ T1 ≗{M} T2.
 #h #M #H1M #H2M #G #L #T1 #T2 #H @(cpr_ind … H) -G -L -T1 -T2
 [ /2 width=2 by deq_refl/
 | #G #K #V1 #V2 #W2 #_ #IH #HVW2 #gv #v #H
index 256b798b50a2c1694874654586e618844e95aa22..c49573cc3ebc64d3c4cc33cdfc9ac3a1b755bdbd 100644 (file)
@@ -27,9 +27,9 @@ inductive cnv (h) (a): relation3 genv lenv term ≝
 | cnv_lref: ∀I,G,K,i. cnv h a G K (#i) → cnv h a G (K.ⓘ[I]) (#↑i)
 | cnv_bind: ∀p,I,G,L,V,T. cnv h a G L V → cnv h a G (L.ⓑ[I]V) T → cnv h a G L (ⓑ[p,I]V.T)
 | cnv_appl: ∀n,p,G,L,V,W0,T,U0. ad a n → cnv h a G L V → cnv h a G L T →
-            ❪G,L❫ ⊢ V ➡*[1,h] W0 → ❪G,L❫ ⊢ T ➡*[n,h] ⓛ[p]W0.U0 → cnv h a G L (ⓐV.T)
+            ❪G,L❫ ⊢ V ➡*[h,1] W0 → ❪G,L❫ ⊢ T ➡*[h,n] ⓛ[p]W0.U0 → cnv h a G L (ⓐV.T)
 | cnv_cast: ∀G,L,U,T,U0. cnv h a G L U → cnv h a G L T →
-            ❪G,L❫ ⊢ U ➡*[h] U0 → ❪G,L❫ ⊢ T ➡*[1,h] U0 → cnv h a G L (ⓝU.T)
+            ❪G,L❫ ⊢ U ➡*[h,0] U0 → ❪G,L❫ ⊢ T ➡*[h,1] U0 → cnv h a G L (ⓝU.T)
 .
 
 interpretation "context-sensitive native validity (term)"
@@ -111,7 +111,7 @@ lemma cnv_inv_bind (h) (a):
 fact cnv_inv_appl_aux (h) (a):
      ∀G,L,X. ❪G,L❫ ⊢ X ![h,a] → ∀V,T. X = ⓐV.T →
      ∃∃n,p,W0,U0. ad a n & ❪G,L❫ ⊢ V ![h,a] & ❪G,L❫ ⊢ T ![h,a] &
-                  ❪G,L❫ ⊢ V ➡*[1,h] W0 & ❪G,L❫ ⊢ T ➡*[n,h] ⓛ[p]W0.U0.
+                  ❪G,L❫ ⊢ V ➡*[h,1] W0 & ❪G,L❫ ⊢ T ➡*[h,n] ⓛ[p]W0.U0.
 #h #a #G #L #X * -L -X
 [ #G #L #s #X1 #X2 #H destruct
 | #I #G #K #V #_ #X1 #X2 #H destruct
@@ -126,13 +126,13 @@ qed-.
 lemma cnv_inv_appl (h) (a):
       ∀G,L,V,T. ❪G,L❫ ⊢ ⓐV.T ![h,a] →
       ∃∃n,p,W0,U0. ad a n & ❪G,L❫ ⊢ V ![h,a] & ❪G,L❫ ⊢ T ![h,a] &
-                   ❪G,L❫ ⊢ V ➡*[1,h] W0 & ❪G,L❫ ⊢ T ➡*[n,h] ⓛ[p]W0.U0.
+                   ❪G,L❫ ⊢ V ➡*[h,1] W0 & ❪G,L❫ ⊢ T ➡*[h,n] ⓛ[p]W0.U0.
 /2 width=3 by cnv_inv_appl_aux/ qed-.
 
 fact cnv_inv_cast_aux (h) (a):
      ∀G,L,X. ❪G,L❫ ⊢ X ![h,a] → ∀U,T. X = ⓝU.T →
      ∃∃U0. ❪G,L❫ ⊢ U ![h,a] & ❪G,L❫ ⊢ T ![h,a] &
-           ❪G,L❫ ⊢ U ➡*[h] U0 & ❪G,L❫ ⊢ T ➡*[1,h] U0.
+           ❪G,L❫ ⊢ U ➡*[h,0] U0 & ❪G,L❫ ⊢ T ➡*[h,1] U0.
 #h #a #G #L #X * -G -L -X
 [ #G #L #s #X1 #X2 #H destruct
 | #I #G #K #V #_ #X1 #X2 #H destruct
@@ -147,7 +147,7 @@ qed-.
 lemma cnv_inv_cast (h) (a):
       ∀G,L,U,T. ❪G,L❫ ⊢ ⓝU.T ![h,a] →
       ∃∃U0. ❪G,L❫ ⊢ U ![h,a] & ❪G,L❫ ⊢ T ![h,a] &
-            ❪G,L❫ ⊢ U ➡*[h] U0 & ❪G,L❫ ⊢ T ➡*[1,h] U0.
+            ❪G,L❫ ⊢ U ➡*[h,0] U0 & ❪G,L❫ ⊢ T ➡*[h,1] U0.
 /2 width=3 by cnv_inv_cast_aux/ qed-.
 
 (* Basic forward lemmas *****************************************************)
index d47a061e37d92c57b1891819489146ee58b7c6e3..f0262cbc72e87b9445ee54a0f54c08b0c7cdd5e3 100644 (file)
@@ -20,7 +20,8 @@ include "basic_2/dynamic/cnv.ma".
 (* Forward lemmas on atomic arity assignment for terms **********************)
 
 (* Basic_2A1: uses: snv_fwd_aaa *)
-lemma cnv_fwd_aaa (h) (a): ∀G,L,T. ❪G,L❫ ⊢ T ![h,a] → ∃A. ❪G,L❫ ⊢ T ⁝ A.
+lemma cnv_fwd_aaa (h) (a):
+      ∀G,L,T. ❪G,L❫ ⊢ T ![h,a] → ∃A. ❪G,L❫ ⊢ T ⁝ A.
 #h #a #G #L #T #H elim H -G -L -T
 [ /2 width=2 by aaa_sort, ex_intro/
 | #I #G #L #V #_ * /3 width=2 by aaa_zero, ex_intro/
@@ -44,7 +45,7 @@ qed-.
 (* Forward lemmas with t_bound rt_transition for terms **********************)
 
 lemma cnv_fwd_cpm_SO (h) (a) (G) (L):
-      ∀T. ❪G,L❫ ⊢ T ![h,a] → ∃U. ❪G,L❫ ⊢ T ➡[1,h] U.
+      ∀T. ❪G,L❫ ⊢ T ![h,a] → ∃U. ❪G,L❫ ⊢ T ➡[h,1] U.
 #h #a #G #L #T #H
 elim (cnv_fwd_aaa … H) -H #A #HA
 /2 width=2 by aaa_cpm_SO/
@@ -53,7 +54,7 @@ qed-.
 (* Forward lemmas with t_bound rt_computation for terms *********************)
 
 lemma cnv_fwd_cpms_total (h) (a) (n) (G) (L):
-      ∀T. ❪G,L❫ ⊢ T ![h,a] → ∃U. ❪G,L❫ ⊢ T ➡*[n,h] U.
+      ∀T. ❪G,L❫ ⊢ T ![h,a] → ∃U. ❪G,L❫ ⊢ T ➡*[h,n] U.
 #h #a #n #G #L #T #H
 elim (cnv_fwd_aaa … H) -H #A #HA
 /2 width=2 by cpms_total_aaa/
@@ -61,8 +62,8 @@ qed-.
 
 lemma cnv_fwd_cpms_abst_dx_le (h) (a) (G) (L) (W) (p):
       ∀T. ❪G,L❫ ⊢ T ![h,a] →
-      ∀n1,U1. ❪G,L❫ ⊢ T ➡*[n1,h] ⓛ[p]W.U1 → ∀n2. n1 ≤ n2 →
-      ∃∃U2. ❪G,L❫ ⊢ T ➡*[n2,h] ⓛ[p]W.U2 & ❪G,L.ⓛW❫ ⊢ U1 ➡*[n2-n1,h] U2.
+      ∀n1,U1. ❪G,L❫ ⊢ T ➡*[h,n1] ⓛ[p]W.U1 → ∀n2. n1 ≤ n2 →
+      ∃∃U2. ❪G,L❫ ⊢ T ➡*[h,n2] ⓛ[p]W.U2 & ❪G,L.ⓛW❫ ⊢ U1 ➡*[h,n2-n1] U2.
 #h #a #G #L #W #p #T #H
 elim (cnv_fwd_aaa … H) -H #A #HA
 /2 width=2 by cpms_abst_dx_le_aaa/
@@ -73,8 +74,8 @@ qed-.
 lemma cnv_appl_ge (h) (a) (n1) (p) (G) (L):
       ∀n2. n1 ≤ n2 → ad a n2 →
       ∀V. ❪G,L❫ ⊢ V ![h,a] → ∀T. ❪G,L❫ ⊢ T ![h,a] →
-      ∀X. ❪G,L❫ ⊢ V ➡*[1,h] X → ∀W. ❪G,L❫ ⊢ W ➡*[h] X →
-      ∀U. ❪G,L❫ ⊢ T ➡*[n1,h] ⓛ[p]W.U → ❪G,L❫ ⊢ ⓐV.T ![h,a].
+      ∀X. ❪G,L❫ ⊢ V ➡*[h,1] X → ∀W. ❪G,L❫ ⊢ W ➡*[h,0] X →
+      ∀U. ❪G,L❫ ⊢ T ➡*[h,n1] ⓛ[p]W.U → ❪G,L❫ ⊢ ⓐV.T ![h,a].
 #h #a #n1 #p #G #L #n2 #Hn12 #Ha #V #HV #T #HT #X #HVX #W #HW #X #HTX
 elim (cnv_fwd_cpms_abst_dx_le  … HT … HTX … Hn12) #U #HTU #_ -n1
 /4 width=11 by cnv_appl, cpms_bind, cpms_cprs_trans/
index abfa9df3680fc147bc6ee8e65fa11a0b8b6bfc34..1b704e76c7f8aa94979b4067a671038ad62d0d18 100644 (file)
@@ -24,7 +24,7 @@ lemma cnv_appl_cpes (h) (a) (G) (L):
       ∀n. ad a n →
       ∀V. ❪G,L❫ ⊢ V ![h,a] → ∀T. ❪G,L❫ ⊢ T ![h,a] →
       ∀W. ❪G,L❫ ⊢ V ⬌*[h,1,0] W →
-      ∀p,U. ❪G,L❫ ⊢ T ➡*[n,h] ⓛ[p]W.U → ❪G,L❫ ⊢ ⓐV.T ![h,a].
+      ∀p,U. ❪G,L❫ ⊢ T ➡*[h,n] ⓛ[p]W.U → ❪G,L❫ ⊢ ⓐV.T ![h,a].
 #h #a #G #L #n #Hn #V #HV #T #HT #W *
 /4 width=11 by cnv_appl, cpms_cprs_trans, cpms_bind/
 qed.
@@ -40,7 +40,7 @@ qed.
 lemma cnv_inv_appl_cpes (h) (a) (G) (L):
       ∀V,T. ❪G,L❫ ⊢ ⓐV.T ![h,a] →
       ∃∃n,p,W,U. ad a n & ❪G,L❫ ⊢ V ![h,a] & ❪G,L❫ ⊢ T ![h,a] &
-                 ❪G,L❫ ⊢ V ⬌*[h,1,0] W & ❪G,L❫ ⊢ T ➡*[n,h] ⓛ[p]W.U.
+                 ❪G,L❫ ⊢ V ⬌*[h,1,0] W & ❪G,L❫ ⊢ T ➡*[h,n] ⓛ[p]W.U.
 #h #a #G #L #V #T #H
 elim (cnv_inv_appl … H) -H #n #p #W #U #Hn #HV #HT #HVW #HTU
 /3 width=7 by cpms_div, ex5_4_intro/
@@ -64,7 +64,7 @@ lemma cnv_ind_cpes (h) (a) (Q:relation3 genv lenv term):
                      Q G L V →Q G (L.ⓑ[I]V) T →Q G L (ⓑ[p,I]V.T)
       ) →
       (∀n,p,G,L,V,W,T,U. ad a n → ❪G,L❫ ⊢ V![h,a] → ❪G,L❫ ⊢ T![h,a] →
-                         ❪G,L❫ ⊢ V ⬌*[h,1,0]W → ❪G,L❫ ⊢ T ➡*[n,h] ⓛ[p]W.U →
+                         ❪G,L❫ ⊢ V ⬌*[h,1,0]W → ❪G,L❫ ⊢ T ➡*[h,n] ⓛ[p]W.U →
                          Q G L V → Q G L T → Q G L (ⓐV.T)
       ) →
       (∀G,L,U,T. ❪G,L❫⊢ U![h,a] → ❪G,L❫ ⊢ T![h,a] → ❪G,L❫ ⊢ U ⬌*[h,0,1] T →
index 8ac88c89b40067e549eeaf0ec81a360daef47757..1f0dab73e63f1e0d33893c5c6a73435a72c5e11e 100644 (file)
@@ -24,21 +24,21 @@ include "basic_2/dynamic/cnv_preserve_sub.ma".
 (* Sub diamond propery with t-bound rt-transition for terms *****************)
 
 fact cnv_cpm_conf_lpr_atom_atom_aux (h) (G) (L1) (L2) (I):
-     ∃∃T. ❪G,L1❫ ⊢ ⓪[I] ➡*[0,h] T & ❪G,L2❫ ⊢ ⓪[I] ➡*[O,h] T.
+     ∃∃T. ❪G,L1❫ ⊢ ⓪[I] ➡*[h,0] T & ❪G,L2❫ ⊢ ⓪[I] ➡*[h,0] T.
 /2 width=3 by ex2_intro/ qed-.
 
 fact cnv_cpm_conf_lpr_atom_ess_aux (h) (G) (L1) (L2) (s):
-     ∃∃T. ❪G,L1❫ ⊢ ⋆s ➡*[1,h] T & ❪G,L2❫ ⊢ ⋆(⫯[h]s) ➡*[h] T.
+     ∃∃T. ❪G,L1❫ ⊢ ⋆s ➡*[h,1] T & ❪G,L2❫ ⊢ ⋆(⫯[h]s) ➡*[h,0] T.
 /3 width=3 by cpm_cpms, ex2_intro/ qed-.
 
 fact cnv_cpm_conf_lpr_atom_delta_aux (h) (a) (G) (L) (i):
      (∀G0,L0,T0. ❪G,L,#i❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫⊢#i![h,a] →
      ∀K,V. ⇩[i]L ≘ K.ⓓV →
-     ∀n,XV. ❪G,K❫ ⊢ V ➡[n,h] XV →
+     ∀n,XV. ❪G,K❫ ⊢ V ➡[h,n] XV →
      ∀X. ⇧[↑i]XV ≘ X →
-     ∀L1. ❪G,L❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G,L1❫ ⊢ #i ➡*[n,h] T & ❪G,L2❫ ⊢ X ➡*[h] T.
+     ∀L1. ❪G,L❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G,L1❫ ⊢ #i ➡*[h,n] T & ❪G,L2❫ ⊢ X ➡*[h,0] T.
 #h #a #G #L #i #IH #HT #K #V #HLK #n #XV #HVX #X #HXV #L1 #HL1 #L2 #HL2
 lapply (cnv_inv_lref_pair … HT … HLK) -HT #HV
 elim (lpr_drops_conf … HLK … HL1) -HL1 // #Y1 #H1 #HLK1
@@ -57,10 +57,10 @@ fact cnv_cpm_conf_lpr_atom_ell_aux (h) (a) (G) (L) (i):
      (∀G0,L0,T0. ❪G,L,#i❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫⊢#i![h,a] →
      ∀K,W. ⇩[i]L ≘ K.ⓛW →
-     ∀n,XW. ❪G,K❫ ⊢ W ➡[n,h] XW →
+     ∀n,XW. ❪G,K❫ ⊢ W ➡[h,n] XW →
      ∀X. ⇧[↑i]XW ≘ X →
-     ∀L1. ❪G,L❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G,L1❫ ⊢ #i ➡*[↑n,h] T & ❪G,L2❫ ⊢ X ➡*[h] T.
+     ∀L1. ❪G,L❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G,L1❫ ⊢ #i ➡*[h,↑n] T & ❪G,L2❫ ⊢ X ➡*[h,0] T.
 #h #a #G #L #i #IH #HT #K #W #HLK #n #XW #HWX #X #HXW #L1 #HL1 #L2 #HL2
 lapply (cnv_inv_lref_pair … HT … HLK) -HT #HW
 elim (lpr_drops_conf … HLK … HL1) -HL1 // #Y1 #H1 #HLK1
@@ -79,10 +79,10 @@ fact cnv_cpm_conf_lpr_delta_delta_aux (h) (a) (I) (G) (L) (i):
      (∀G0,L0,T0. ❪G,L,#i❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫⊢#i![h,a] →
      ∀K1,V1. ⇩[i]L ≘ K1.ⓑ[I]V1 → ∀K2,V2. ⇩[i]L ≘ K2.ⓑ[I]V2 →
-     ∀n1,XV1. ❪G,K1❫ ⊢ V1 ➡[n1,h] XV1 → ∀n2,XV2. ❪G,K2❫ ⊢ V2 ➡[n2,h] XV2 →
+     ∀n1,XV1. ❪G,K1❫ ⊢ V1 ➡[h,n1] XV1 → ∀n2,XV2. ❪G,K2❫ ⊢ V2 ➡[h,n2] XV2 →
      ∀X1. ⇧[↑i]XV1 ≘ X1 → ∀X2. ⇧[↑i]XV2 ≘ X2 →
-     ∀L1. ❪G,L❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G,L1❫ ⊢ X1 ➡*[n2-n1,h] T & ❪G,L2❫ ⊢ X2 ➡*[n1-n2,h] T.
+     ∀L1. ❪G,L❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G,L1❫ ⊢ X1 ➡*[h,n2-n1] T & ❪G,L2❫ ⊢ X2 ➡*[h,n1-n2] T.
 #h #a #I #G #L #i #IH #HT
 #K #V #HLK #Y #X #HLY #n1 #XV1 #HVX1 #n2 #XV2 #HVX2 #X1 #HXV1 #X2 #HXV2
 #L1 #HL1 #L2 #HL2
@@ -110,10 +110,10 @@ qed-.
 fact cnv_cpm_conf_lpr_bind_bind_aux (h) (a) (p) (I) (G) (L) (V) (T):
      (∀G0,L0,T0. ❪G,L,ⓑ[p,I]V.T❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ ⓑ[p,I]V.T ![h,a] →
-     ∀V1. ❪G,L❫ ⊢ V ➡[h] V1 → ∀V2. ❪G,L❫ ⊢ V ➡[h] V2 →
-     ∀n1,T1. ❪G,L.ⓑ[I]V❫ ⊢ T ➡[n1,h] T1 → ∀n2,T2. ❪G,L.ⓑ[I]V❫ ⊢ T ➡[n2,h] T2 →
-     ∀L1. ❪G,L❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G,L1❫ ⊢ ⓑ[p,I]V1.T1 ➡*[n2-n1,h] T & ❪G,L2❫ ⊢ ⓑ[p,I]V2.T2 ➡*[n1-n2,h] T.
+     ∀V1. ❪G,L❫ ⊢ V ➡[h,0] V1 → ∀V2. ❪G,L❫ ⊢ V ➡[h,0] V2 →
+     ∀n1,T1. ❪G,L.ⓑ[I]V❫ ⊢ T ➡[h,n1] T1 → ∀n2,T2. ❪G,L.ⓑ[I]V❫ ⊢ T ➡[h,n2] T2 →
+     ∀L1. ❪G,L❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G,L1❫ ⊢ ⓑ[p,I]V1.T1 ➡*[h,n2-n1] T & ❪G,L2❫ ⊢ ⓑ[p,I]V2.T2 ➡*[h,n1-n2] T.
 #h #a #p #I #G0 #L0 #V0 #T0 #IH #H0
 #V1 #HV01 #V2 #HV02 #n1 #T1 #HT01 #n2 #T2 #HT02
 #L1 #HL01 #L2 #HL02
@@ -127,10 +127,10 @@ qed-.
 fact cnv_cpm_conf_lpr_bind_zeta_aux (h) (a) (G) (L) (V) (T):
      (∀G0,L0,T0. ❪G,L,+ⓓV.T❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ +ⓓV.T ![h,a] →
-     ∀V1. ❪G,L❫ ⊢V ➡[h] V1 → ∀n1,T1. ❪G,L.ⓓV❫ ⊢ T ➡[n1,h] T1 →
-     ∀T2. ⇧[1]T2 ≘ T → ∀n2,XT2. ❪G,L❫ ⊢ T2 ➡[n2,h] XT2 →
-     ∀L1. ❪G,L❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G,L1❫ ⊢ +ⓓV1.T1 ➡*[n2-n1,h] T & ❪G,L2❫ ⊢ XT2 ➡*[n1-n2,h] T.
+     ∀V1. ❪G,L❫ ⊢V ➡[h,0] V1 → ∀n1,T1. ❪G,L.ⓓV❫ ⊢ T ➡[h,n1] T1 →
+     ∀T2. ⇧[1]T2 ≘ T → ∀n2,XT2. ❪G,L❫ ⊢ T2 ➡[h,n2] XT2 →
+     ∀L1. ❪G,L❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G,L1❫ ⊢ +ⓓV1.T1 ➡*[h,n2-n1] T & ❪G,L2❫ ⊢ XT2 ➡*[h,n1-n2] T.
 #h #a #G0 #L0 #V0 #T0 #IH #H0
 #V1 #HV01 #n1 #T1 #HT01 #T2 #HT20 #n2 #XT2 #HXT2
 #L1 #HL01 #L2 #HL02
@@ -148,9 +148,9 @@ fact cnv_cpm_conf_lpr_zeta_zeta_aux (h) (a) (G) (L) (V) (T):
      (∀G0,L0,T0. ❪G,L,+ⓓV.T❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ +ⓓV.T ![h,a] →
      ∀T1. ⇧[1]T1 ≘ T → ∀T2. ⇧[1]T2 ≘ T →
-     ∀n1,XT1. ❪G,L❫ ⊢ T1 ➡[n1,h] XT1 → ∀n2,XT2. ❪G,L❫ ⊢ T2 ➡[n2,h] XT2 →
-     ∀L1. ❪G,L❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G,L1❫ ⊢ XT1 ➡*[n2-n1,h] T & ❪G,L2❫ ⊢ XT2 ➡*[n1-n2,h] T.
+     ∀n1,XT1. ❪G,L❫ ⊢ T1 ➡[h,n1] XT1 → ∀n2,XT2. ❪G,L❫ ⊢ T2 ➡[h,n2] XT2 →
+     ∀L1. ❪G,L❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G,L1❫ ⊢ XT1 ➡*[h,n2-n1] T & ❪G,L2❫ ⊢ XT2 ➡*[h,n1-n2] T.
 #h #a #G0 #L0 #V0 #T0 #IH #H0
 #T1 #HT10 #T2 #HT20 #n1 #XT1 #HXT1 #n2 #XT2 #HXT2
 #L1 #HL01 #L2 #HL02
@@ -166,10 +166,10 @@ qed-.
 fact cnv_cpm_conf_lpr_appl_appl_aux (h) (a) (G) (L) (V) (T):
      (∀G0,L0,T0. ❪G,L,ⓐV.T❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ ⓐV.T ![h,a] →
-     ∀V1. ❪G,L❫ ⊢ V ➡[h] V1 → ∀V2. ❪G,L❫ ⊢ V ➡[h] V2 →
-     ∀n1,T1. ❪G,L❫ ⊢ T ➡[n1,h] T1 → ∀n2,T2. ❪G,L❫ ⊢ T ➡[n2,h] T2 →
-     ∀L1. ❪G,L❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G,L1❫ ⊢ ⓐV1.T1 ➡*[n2-n1,h] T & ❪G,L2❫ ⊢ ⓐV2.T2 ➡*[n1-n2,h] T.
+     ∀V1. ❪G,L❫ ⊢ V ➡[h,0] V1 → ∀V2. ❪G,L❫ ⊢ V ➡[h,0] V2 →
+     ∀n1,T1. ❪G,L❫ ⊢ T ➡[h,n1] T1 → ∀n2,T2. ❪G,L❫ ⊢ T ➡[h,n2] T2 →
+     ∀L1. ❪G,L❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G,L1❫ ⊢ ⓐV1.T1 ➡*[h,n2-n1] T & ❪G,L2❫ ⊢ ⓐV2.T2 ➡*[h,n1-n2] T.
 #h #a #G0 #L0 #V0 #T0 #IH #H0
 #V1 #HV01 #V2 #HV02 #n1 #T1 #HT01 #n2 #T2 #HT02
 #L1 #HL01 #L2 #HL02
@@ -183,11 +183,11 @@ qed-.
 fact cnv_cpm_conf_lpr_appl_beta_aux (h) (a) (p) (G) (L) (V) (W) (T):
      (∀G0,L0,T0. ❪G,L,ⓐV.ⓛ[p]W.T❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ ⓐV.ⓛ[p]W.T ![h,a] →
-     ∀V1. ❪G,L❫ ⊢ V ➡[h] V1 → ∀V2. ❪G,L❫ ⊢ V ➡[h] V2 →
-     ∀W2. ❪G,L❫ ⊢ W ➡[h] W2 →
-     ∀n1,T1. ❪G,L❫ ⊢ ⓛ[p]W.T ➡[n1,h] T1 → ∀n2,T2. ❪G,L.ⓛW❫ ⊢ T ➡[n2,h] T2 →
-     ∀L1. ❪G,L❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G,L1❫ ⊢ ⓐV1.T1 ➡*[n2-n1,h] T & ❪G,L2❫ ⊢ ⓓ[p]ⓝW2.V2.T2 ➡*[n1-n2,h] T.
+     ∀V1. ❪G,L❫ ⊢ V ➡[h,0] V1 → ∀V2. ❪G,L❫ ⊢ V ➡[h,0] V2 →
+     ∀W2. ❪G,L❫ ⊢ W ➡[h,0] W2 →
+     ∀n1,T1. ❪G,L❫ ⊢ ⓛ[p]W.T ➡[h,n1] T1 → ∀n2,T2. ❪G,L.ⓛW❫ ⊢ T ➡[h,n2] T2 →
+     ∀L1. ❪G,L❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G,L1❫ ⊢ ⓐV1.T1 ➡*[h,n2-n1] T & ❪G,L2❫ ⊢ ⓓ[p]ⓝW2.V2.T2 ➡*[h,n1-n2] T.
 #h #a #p #G0 #L0 #V0 #W0 #T0 #IH #H0
 #V1 #HV01 #V2 #HV02 #W2 #HW02 #n1 #X #HX #n2 #T2 #HT02
 #L1 #HL01 #L2 #HL02
@@ -205,12 +205,12 @@ qed-.
 fact cnv_cpm_conf_lpr_appl_theta_aux (h) (a) (p) (G) (L) (V) (W) (T):
      (∀G0,L0,T0. ❪G,L,ⓐV.ⓓ[p]W.T❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ ⓐV.ⓓ[p]W.T ![h,a] →
-     ∀V1. ❪G,L❫ ⊢ V ➡[h] V1 → ∀V2. ❪G,L❫ ⊢ V ➡[h] V2 →
-     ∀W2. ❪G,L❫ ⊢ W ➡[h] W2 →
-     ∀n1,T1. ❪G,L❫ ⊢ ⓓ[p]W.T ➡[n1,h] T1 → ∀n2,T2. ❪G,L.ⓓW❫ ⊢ T ➡[n2,h] T2 →
+     ∀V1. ❪G,L❫ ⊢ V ➡[h,0] V1 → ∀V2. ❪G,L❫ ⊢ V ➡[h,0] V2 →
+     ∀W2. ❪G,L❫ ⊢ W ➡[h,0] W2 →
+     ∀n1,T1. ❪G,L❫ ⊢ ⓓ[p]W.T ➡[h,n1] T1 → ∀n2,T2. ❪G,L.ⓓW❫ ⊢ T ➡[h,n2] T2 →
      ∀U2. ⇧[1]V2 ≘ U2 →
-     ∀L1. ❪G,L❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G,L1❫ ⊢ ⓐV1.T1 ➡*[n2-n1,h] T & ❪G,L2❫ ⊢ ⓓ[p]W2.ⓐU2.T2 ➡*[n1-n2,h] T.
+     ∀L1. ❪G,L❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G,L1❫ ⊢ ⓐV1.T1 ➡*[h,n2-n1] T & ❪G,L2❫ ⊢ ⓓ[p]W2.ⓐU2.T2 ➡*[h,n1-n2] T.
 #h #a #p #G0 #L0 #V0 #W0 #T0 #IH #H0
 #V1 #HV01 #V2 #HV02 #W2 #HW02 #n1 #X #HX #n2 #T2 #HT02 #U2 #HVU2
 #L1 #HL01 #L2 #HL02
@@ -236,11 +236,11 @@ qed-.
 fact cnv_cpm_conf_lpr_beta_beta_aux (h) (a) (p) (G) (L) (V) (W) (T):
      (∀G0,L0,T0. ❪G,L,ⓐV.ⓛ[p]W.T❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ ⓐV.ⓛ[p]W.T ![h,a] →
-     ∀V1. ❪G,L❫ ⊢ V ➡[h] V1 → ∀V2. ❪G,L❫ ⊢ V ➡[h] V2 →
-     ∀W1. ❪G,L❫ ⊢ W ➡[h] W1 → ∀W2. ❪G,L❫ ⊢ W ➡[h] W2 →
-     ∀n1,T1. ❪G,L.ⓛW❫ ⊢ T ➡[n1,h] T1 → ∀n2,T2. ❪G,L.ⓛW❫ ⊢ T ➡[n2,h] T2 →
-     ∀L1. ❪G,L❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G,L1❫ ⊢ ⓓ[p]ⓝW1.V1.T1 ➡*[n2-n1,h] T & ❪G,L2❫ ⊢ ⓓ[p]ⓝW2.V2.T2 ➡*[n1-n2,h] T.
+     ∀V1. ❪G,L❫ ⊢ V ➡[h,0] V1 → ∀V2. ❪G,L❫ ⊢ V ➡[h,0] V2 →
+     ∀W1. ❪G,L❫ ⊢ W ➡[h,0] W1 → ∀W2. ❪G,L❫ ⊢ W ➡[h,0] W2 →
+     ∀n1,T1. ❪G,L.ⓛW❫ ⊢ T ➡[h,n1] T1 → ∀n2,T2. ❪G,L.ⓛW❫ ⊢ T ➡[h,n2] T2 →
+     ∀L1. ❪G,L❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G,L1❫ ⊢ ⓓ[p]ⓝW1.V1.T1 ➡*[h,n2-n1] T & ❪G,L2❫ ⊢ ⓓ[p]ⓝW2.V2.T2 ➡*[h,n1-n2] T.
 #h #a #p #G0 #L0 #V0 #W0 #T0 #IH #H0
 #V1 #HV01 #V2 #HV02 #W1 #HW01 #W2 #HW02 #n1 #T1 #HT01 #n2 #T2 #HT02
 #L1 #HL01 #L2 #HL02
@@ -258,12 +258,12 @@ qed-.
 fact cnv_cpm_conf_lpr_theta_theta_aux (h) (a) (p) (G) (L) (V) (W) (T):
      (∀G0,L0,T0. ❪G,L,ⓐV.ⓓ[p]W.T❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ ⓐV.ⓓ[p]W.T ![h,a] →
-     ∀V1. ❪G,L❫ ⊢ V ➡[h] V1 → ∀V2. ❪G,L❫ ⊢ V ➡[h] V2 →
-     ∀W1. ❪G,L❫ ⊢ W ➡[h] W1 → ∀W2. ❪G,L❫ ⊢ W ➡[h] W2 →
-     ∀n1,T1. ❪G,L.ⓓW❫ ⊢ T ➡[n1,h] T1 → ∀n2,T2. ❪G,L.ⓓW❫ ⊢ T ➡[n2,h] T2 →
+     ∀V1. ❪G,L❫ ⊢ V ➡[h,0] V1 → ∀V2. ❪G,L❫ ⊢ V ➡[h,0] V2 →
+     ∀W1. ❪G,L❫ ⊢ W ➡[h,0] W1 → ∀W2. ❪G,L❫ ⊢ W ➡[h,0] W2 →
+     ∀n1,T1. ❪G,L.ⓓW❫ ⊢ T ➡[h,n1] T1 → ∀n2,T2. ❪G,L.ⓓW❫ ⊢ T ➡[h,n2] T2 →
      ∀U1. ⇧[1]V1 ≘ U1 → ∀U2. ⇧[1]V2 ≘ U2 →
-     ∀L1. ❪G,L❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G,L1❫ ⊢ ⓓ[p]W1.ⓐU1.T1 ➡*[n2-n1,h] T & ❪G,L2❫ ⊢ ⓓ[p]W2.ⓐU2.T2 ➡*[n1-n2,h] T.
+     ∀L1. ❪G,L❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G,L1❫ ⊢ ⓓ[p]W1.ⓐU1.T1 ➡*[h,n2-n1] T & ❪G,L2❫ ⊢ ⓓ[p]W2.ⓐU2.T2 ➡*[h,n1-n2] T.
 #h #a #p #G0 #L0 #V0 #W0 #T0 #IH #H0
 #V1 #HV01 #V2 #HV02 #W1 #HW01 #W2 #HW02 #n1 #T1 #HT01 #n2 #T2 #HT02 #U1 #HVU1 #U2 #HVU2
 #L1 #HL01 #L2 #HL02
@@ -281,10 +281,10 @@ qed-.
 fact cnv_cpm_conf_lpr_cast_cast_aux (h) (a) (G) (L) (V) (T):
      (∀G0,L0,T0. ❪G,L,ⓝV.T❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ ⓝV.T ![h,a] →
-     ∀n1,V1. ❪G,L❫ ⊢ V ➡[n1,h] V1 → ∀n2,V2. ❪G,L❫ ⊢ V ➡[n2,h] V2 →
-     ∀T1. ❪G,L❫ ⊢ T ➡[n1,h] T1 → ∀T2. ❪G,L❫ ⊢ T ➡[n2,h] T2 →
-     ∀L1. ❪G,L❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G,L1❫ ⊢ ⓝV1.T1 ➡*[n2-n1,h] T & ❪G,L2❫ ⊢ ⓝV2.T2 ➡*[n1-n2,h] T.
+     ∀n1,V1. ❪G,L❫ ⊢ V ➡[h,n1] V1 → ∀n2,V2. ❪G,L❫ ⊢ V ➡[h,n2] V2 →
+     ∀T1. ❪G,L❫ ⊢ T ➡[h,n1] T1 → ∀T2. ❪G,L❫ ⊢ T ➡[h,n2] T2 →
+     ∀L1. ❪G,L❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G,L1❫ ⊢ ⓝV1.T1 ➡*[h,n2-n1] T & ❪G,L2❫ ⊢ ⓝV2.T2 ➡*[h,n1-n2] T.
 #h #a #G0 #L0 #V0 #T0 #IH #H0
 #n1 #V1 #HV01 #n2 #V2 #HV02 #T1 #HT01 #T2 #HT02
 #L1 #HL01 #L2 #HL02
@@ -298,10 +298,10 @@ qed-.
 fact cnv_cpm_conf_lpr_cast_epsilon_aux (h) (a) (G) (L) (V) (T):
      (∀G0,L0,T0. ❪G,L,ⓝV.T❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ ⓝV.T ![h,a] →
-     ∀n1,V1. ❪G,L❫ ⊢ V ➡[n1,h] V1 →
-     ∀T1. ❪G,L❫ ⊢ T ➡[n1,h] T1 → ∀n2,T2. ❪G,L❫ ⊢ T ➡[n2,h] T2 →
-     ∀L1. ❪G,L❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G,L1❫ ⊢ ⓝV1.T1 ➡*[n2-n1,h] T & ❪G,L2❫ ⊢ T2 ➡*[n1-n2,h] T.
+     ∀n1,V1. ❪G,L❫ ⊢ V ➡[h,n1] V1 →
+     ∀T1. ❪G,L❫ ⊢ T ➡[h,n1] T1 → ∀n2,T2. ❪G,L❫ ⊢ T ➡[h,n2] T2 →
+     ∀L1. ❪G,L❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G,L1❫ ⊢ ⓝV1.T1 ➡*[h,n2-n1] T & ❪G,L2❫ ⊢ T2 ➡*[h,n1-n2] T.
 #h #a #G0 #L0 #V0 #T0 #IH #H0
 #n1 #V1 #HV01 #T1 #HT01 #n2 #T2 #HT02
 #L1 #HL01 #L2 #HL02
@@ -315,10 +315,10 @@ fact cnv_cpm_conf_lpr_cast_ee_aux (h) (a) (G) (L) (V) (T):
      (∀G0,L0,T0. ❪G,L,ⓝV.T❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpm_trans_lpr h a G0 L0 T0) →
      (∀G0,L0,T0. ❪G,L,ⓝV.T❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ ⓝV.T ![h,a] →
-     ∀n1,V1. ❪G,L❫ ⊢ V ➡[n1,h] V1 → ∀n2,V2. ❪G,L❫ ⊢ V ➡[n2,h] V2 →
-     ∀T1. ❪G,L❫ ⊢ T ➡[n1,h] T1 →
-     ∀L1. ❪G,L❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G,L1❫ ⊢ ⓝV1.T1 ➡*[↑n2-n1,h] T & ❪G,L2❫ ⊢ V2 ➡*[n1-↑n2,h] T.
+     ∀n1,V1. ❪G,L❫ ⊢ V ➡[h,n1] V1 → ∀n2,V2. ❪G,L❫ ⊢ V ➡[h,n2] V2 →
+     ∀T1. ❪G,L❫ ⊢ T ➡[h,n1] T1 →
+     ∀L1. ❪G,L❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G,L1❫ ⊢ ⓝV1.T1 ➡*[h,↑n2-n1] T & ❪G,L2❫ ⊢ V2 ➡*[h,n1-↑n2] T.
 #h #a #G0 #L0 #V0 #T0 #IH2 #IH1 #H0
 #n1 #V1 #HV01 #n2 #V2 #HV02 #T1 #HT01
 #L1 #HL01 #L2 #HL02 -HV01
@@ -337,9 +337,9 @@ qed-.
 fact cnv_cpm_conf_lpr_epsilon_epsilon_aux (h) (a) (G) (L) (V) (T):
      (∀G0,L0,T0. ❪G,L,ⓝV.T❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ ⓝV.T ![h,a] →
-     ∀n1,T1. ❪G,L❫ ⊢ T ➡[n1,h] T1 → ∀n2,T2. ❪G,L❫ ⊢ T ➡[n2,h] T2 →
-     ∀L1. ❪G,L❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G,L1❫ ⊢ T1 ➡*[n2-n1,h] T & ❪G,L2❫ ⊢ T2 ➡*[n1-n2,h] T.
+     ∀n1,T1. ❪G,L❫ ⊢ T ➡[h,n1] T1 → ∀n2,T2. ❪G,L❫ ⊢ T ➡[h,n2] T2 →
+     ∀L1. ❪G,L❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G,L1❫ ⊢ T1 ➡*[h,n2-n1] T & ❪G,L2❫ ⊢ T2 ➡*[h,n1-n2] T.
 #h #a #G0 #L0 #V0 #T0 #IH #H0
 #n1 #T1 #HT01 #n2 #T2 #HT02
 #L1 #HL01 #L2 #HL02
@@ -353,9 +353,9 @@ fact cnv_cpm_conf_lpr_epsilon_ee_aux (h) (a) (G) (L) (V) (T):
      (∀G0,L0,T0. ❪G,L,ⓝV.T❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpm_trans_lpr h a G0 L0 T0) →
      (∀G0,L0,T0. ❪G,L,ⓝV.T❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ ⓝV.T ![h,a] →
-     ∀n1,T1. ❪G,L❫ ⊢ T ➡[n1,h] T1 → ∀n2,V2. ❪G,L❫ ⊢ V ➡[n2,h] V2 →
-     ∀L1. ❪G,L❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G,L1❫ ⊢ T1 ➡*[↑n2-n1,h] T & ❪G,L2❫ ⊢ V2 ➡*[n1-↑n2,h] T.
+     ∀n1,T1. ❪G,L❫ ⊢ T ➡[h,n1] T1 → ∀n2,V2. ❪G,L❫ ⊢ V ➡[h,n2] V2 →
+     ∀L1. ❪G,L❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G,L1❫ ⊢ T1 ➡*[h,↑n2-n1] T & ❪G,L2❫ ⊢ V2 ➡*[h,n1-↑n2] T.
 #h #a #G0 #L0 #V0 #T0 #IH2 #IH1 #H0
 #n1 #T1 #HT01 #n2 #V2 #HV02
 #L1 #HL01 #L2 #HL02
@@ -374,9 +374,9 @@ qed-.
 fact cnv_cpm_conf_lpr_ee_ee_aux (h) (a) (G) (L) (V) (T):
      (∀G0,L0,T0. ❪G,L,ⓝV.T❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ ⓝV.T ![h,a] →
-     ∀n1,V1. ❪G,L❫ ⊢ V ➡[n1,h] V1 → ∀n2,V2. ❪G,L❫ ⊢ V ➡[n2,h] V2 →
-     ∀L1. ❪G,L❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G,L1❫ ⊢ V1 ➡*[n2-n1,h] T & ❪G,L2❫ ⊢ V2 ➡*[n1-n2,h] T.
+     ∀n1,V1. ❪G,L❫ ⊢ V ➡[h,n1] V1 → ∀n2,V2. ❪G,L❫ ⊢ V ➡[h,n2] V2 →
+     ∀L1. ❪G,L❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G,L1❫ ⊢ V1 ➡*[h,n2-n1] T & ❪G,L2❫ ⊢ V2 ➡*[h,n1-n2] T.
 #h #a #G0 #L0 #V0 #T0 #IH #H0
 #n1 #V1 #HV01 #n2 #V2 #HV02
 #L1 #HL01 #L2 #HL02
index 4a5e09ff81dce6f99cd0ff0fdcdc614a442c7a49..a2987f8eb8d184dddc463a2683da75afc17fec60 100644 (file)
@@ -24,7 +24,7 @@ include "basic_2/dynamic/cnv_fsb.ma".
 (* Inversion lemmas with restricted rt-transition for terms *****************)
 
 lemma cnv_cpr_teqx_fwd_refl (h) (a) (G) (L):
-      ∀T1,T2. ❪G,L❫ ⊢ T1 ➡[h] T2 → T1 ≛ T2 → ❪G,L❫ ⊢ T1 ![h,a] → T1 = T2.
+      ∀T1,T2. ❪G,L❫ ⊢ T1 ➡[h,0] T2 → T1 ≛ T2 → ❪G,L❫ ⊢ T1 ![h,a] → T1 = T2.
 #h #a #G #L #T1 #T2 #H @(cpr_ind … H) -G -L -T1 -T2
 [ //
 | #G #K #V1 #V2 #X2 #_ #_ #_ #H1 #_ -a -G -K -V1 -V2
@@ -56,8 +56,8 @@ qed-.
 
 lemma cpm_teqx_inv_bind_sn (h) (a) (n) (p) (I) (G) (L):
       ∀V,T1. ❪G,L❫ ⊢ ⓑ[p,I]V.T1 ![h,a] →
-      ∀X. ❪G,L❫ ⊢ ⓑ[p,I]V.T1 ➡[n,h] X → ⓑ[p,I]V.T1 ≛ X →
-      ∃∃T2. ❪G,L❫ ⊢ V ![h,a] & ❪G,L.ⓑ[I]V❫ ⊢ T1 ![h,a] & ❪G,L.ⓑ[I]V❫ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓑ[p,I]V.T2.
+      ∀X. ❪G,L❫ ⊢ ⓑ[p,I]V.T1 ➡[h,n] X → ⓑ[p,I]V.T1 ≛ X →
+      ∃∃T2. ❪G,L❫ ⊢ V ![h,a] & ❪G,L.ⓑ[I]V❫ ⊢ T1 ![h,a] & ❪G,L.ⓑ[I]V❫ ⊢ T1 ➡[h,n] T2 & T1 ≛ T2 & X = ⓑ[p,I]V.T2.
 #h #a #n #p #I #G #L #V #T1 #H0 #X #H1 #H2
 elim (cpm_inv_bind1 … H1) -H1 *
 [ #XV #T2 #HXV #HT12 #H destruct
@@ -74,9 +74,9 @@ qed-.
 
 lemma cpm_teqx_inv_appl_sn (h) (a) (n) (G) (L):
       ∀V,T1. ❪G,L❫ ⊢ ⓐV.T1 ![h,a] →
-      ∀X. ❪G,L❫ ⊢ ⓐV.T1 ➡[n,h] X → ⓐV.T1 ≛ X →
-      ∃∃m,q,W,U1,T2. ad a m & ❪G,L❫ ⊢ V ![h,a] & ❪G,L❫ ⊢ V ➡*[1,h] W & ❪G,L❫ ⊢ T1 ➡*[m,h] ⓛ[q]W.U1
-                   & ❪G,L❫⊢ T1 ![h,a] & ❪G,L❫ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓐV.T2.
+      ∀X. ❪G,L❫ ⊢ ⓐV.T1 ➡[h,n] X → ⓐV.T1 ≛ X →
+      ∃∃m,q,W,U1,T2. ad a m & ❪G,L❫ ⊢ V ![h,a] & ❪G,L❫ ⊢ V ➡*[h,1] W & ❪G,L❫ ⊢ T1 ➡*[h,m] ⓛ[q]W.U1
+                   & ❪G,L❫⊢ T1 ![h,a] & ❪G,L❫ ⊢ T1 ➡[h,n] T2 & T1 ≛ T2 & X = ⓐV.T2.
 #h #a #n #G #L #V #T1 #H0 #X #H1 #H2
 elim (cpm_inv_appl1 … H1) -H1 *
 [ #XV #T2 #HXV #HT12 #H destruct
@@ -93,10 +93,10 @@ qed-.
 
 lemma cpm_teqx_inv_cast_sn (h) (a) (n) (G) (L):
       ∀U1,T1. ❪G,L❫ ⊢ ⓝU1.T1 ![h,a] →
-      ∀X. ❪G,L❫ ⊢ ⓝU1.T1 ➡[n,h] X → ⓝU1.T1 ≛ X →
-      ∃∃U0,U2,T2. ❪G,L❫ ⊢ U1 ➡*[h] U0 & ❪G,L❫ ⊢ T1 ➡*[1,h] U0
-                & ❪G,L❫ ⊢ U1 ![h,a] & ❪G,L❫ ⊢ U1 ➡[n,h] U2 & U1 ≛ U2
-                & ❪G,L❫ ⊢ T1 ![h,a] & ❪G,L❫ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓝU2.T2.
+      ∀X. ❪G,L❫ ⊢ ⓝU1.T1 ➡[h,n] X → ⓝU1.T1 ≛ X →
+      ∃∃U0,U2,T2. ❪G,L❫ ⊢ U1 ➡*[h,0] U0 & ❪G,L❫ ⊢ T1 ➡*[h,1] U0
+                & ❪G,L❫ ⊢ U1 ![h,a] & ❪G,L❫ ⊢ U1 ➡[h,n] U2 & U1 ≛ U2
+                & ❪G,L❫ ⊢ T1 ![h,a] & ❪G,L❫ ⊢ T1 ➡[h,n] T2 & T1 ≛ T2 & X = ⓝU2.T2.
 #h #a #n #G #L #U1 #T1 #H0 #X #H1 #H2
 elim (cpm_inv_cast1 … H1) -H1 [ * || * ]
 [ #U2 #T2 #HU12 #HT12 #H destruct
@@ -116,8 +116,8 @@ qed-.
 
 lemma cpm_teqx_inv_bind_dx (h) (a) (n) (p) (I) (G) (L):
       ∀X. ❪G,L❫ ⊢ X ![h,a] →
-      ∀V,T2. ❪G,L❫ ⊢ X ➡[n,h] ⓑ[p,I]V.T2 → X ≛ ⓑ[p,I]V.T2 →
-      ∃∃T1. ❪G,L❫ ⊢ V ![h,a] & ❪G,L.ⓑ[I]V❫ ⊢ T1 ![h,a] & ❪G,L.ⓑ[I]V❫ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓑ[p,I]V.T1.
+      ∀V,T2. ❪G,L❫ ⊢ X ➡[h,n] ⓑ[p,I]V.T2 → X ≛ ⓑ[p,I]V.T2 →
+      ∃∃T1. ❪G,L❫ ⊢ V ![h,a] & ❪G,L.ⓑ[I]V❫ ⊢ T1 ![h,a] & ❪G,L.ⓑ[I]V❫ ⊢ T1 ➡[h,n] T2 & T1 ≛ T2 & X = ⓑ[p,I]V.T1.
 #h #a #n #p #I #G #L #X #H0 #V #T2 #H1 #H2
 elim (teqx_inv_pair2 … H2) #V0 #T1 #_ #_ #H destruct
 elim (cpm_teqx_inv_bind_sn … H0 … H1 H2) -H0 -H1 -H2 #T0 #HV #HT1 #H1T12 #H2T12 #H destruct
@@ -130,22 +130,22 @@ lemma cpm_teqx_ind (h) (a) (n) (G) (Q:relation3 …):
       (∀I,L. n = 0 → Q L (⓪[I]) (⓪[I])) →
       (∀L,s. n = 1 → Q L (⋆s) (⋆(⫯[h]s))) →
       (∀p,I,L,V,T1. ❪G,L❫⊢ V![h,a] → ❪G,L.ⓑ[I]V❫⊢T1![h,a] →
-        ∀T2. ❪G,L.ⓑ[I]V❫ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
+        ∀T2. ❪G,L.ⓑ[I]V❫ ⊢ T1 ➡[h,n] T2 → T1 ≛ T2 →
         Q (L.ⓑ[I]V) T1 T2 → Q L (ⓑ[p,I]V.T1) (ⓑ[p,I]V.T2)
       ) →
       (∀m. ad a m →
-        ∀L,V. ❪G,L❫ ⊢ V ![h,a] → ∀W. ❪G,L❫ ⊢ V ➡*[1,h] W →
-        ∀p,T1,U1. ❪G,L❫ ⊢ T1 ➡*[m,h] ⓛ[p]W.U1 → ❪G,L❫⊢ T1 ![h,a] →
-        ∀T2. ❪G,L❫ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
+        ∀L,V. ❪G,L❫ ⊢ V ![h,a] → ∀W. ❪G,L❫ ⊢ V ➡*[h,1] W →
+        ∀p,T1,U1. ❪G,L❫ ⊢ T1 ➡*[h,m] ⓛ[p]W.U1 → ❪G,L❫⊢ T1 ![h,a] →
+        ∀T2. ❪G,L❫ ⊢ T1 ➡[h,n] T2 → T1 ≛ T2 →
         Q L T1 T2 → Q L (ⓐV.T1) (ⓐV.T2)
       ) →
-      (∀L,U0,U1,T1. ❪G,L❫ ⊢ U1 ➡*[h] U0 → ❪G,L❫ ⊢ T1 ➡*[1,h] U0 →
-        ∀U2. ❪G,L❫ ⊢ U1 ![h,a] → ❪G,L❫ ⊢ U1 ➡[n,h] U2 → U1 ≛ U2 →
-        ∀T2. ❪G,L❫ ⊢ T1 ![h,a] → ❪G,L❫ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
+      (∀L,U0,U1,T1. ❪G,L❫ ⊢ U1 ➡*[h,0] U0 → ❪G,L❫ ⊢ T1 ➡*[h,1] U0 →
+        ∀U2. ❪G,L❫ ⊢ U1 ![h,a] → ❪G,L❫ ⊢ U1 ➡[h,n] U2 → U1 ≛ U2 →
+        ∀T2. ❪G,L❫ ⊢ T1 ![h,a] → ❪G,L❫ ⊢ T1 ➡[h,n] T2 → T1 ≛ T2 →
         Q L U1 U2 → Q L T1 T2 → Q L (ⓝU1.T1) (ⓝU2.T2)
       ) →
       ∀L,T1. ❪G,L❫ ⊢ T1 ![h,a] →
-      ∀T2. ❪G,L❫ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 → Q L T1 T2.
+      ∀T2. ❪G,L❫ ⊢ T1 ➡[h,n] T2 → T1 ≛ T2 → Q L T1 T2.
 #h #a #n #G #Q #IH1 #IH2 #IH3 #IH4 #IH5 #L #T1
 @(insert_eq_0 … G) #F
 @(fqup_wf_ind_eq (Ⓣ) … F L T1) -L -T1 -F
@@ -171,8 +171,8 @@ qed-.
 
 lemma cpm_teqx_free (h) (a) (n) (G) (L):
       ∀T1. ❪G,L❫ ⊢ T1 ![h,a] →
-      ∀T2. ❪G,L❫ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
-      ∀F,K. ❪F,K❫ ⊢ T1 ➡[n,h] T2.
+      ∀T2. ❪G,L❫ ⊢ T1 ➡[h,n] T2 → T1 ≛ T2 →
+      ∀F,K. ❪F,K❫ ⊢ T1 ➡[h,n] T2.
 #h #a #n #G #L #T1 #H0 #T2 #H1 #H2
 @(cpm_teqx_ind … H0 … H1 H2) -L -T1 -T2
 [ #I #L #H #F #K destruct //
@@ -190,8 +190,8 @@ qed-.
 
 lemma cpm_teqx_inv_bind_sn_void (h) (a) (n) (p) (I) (G) (L):
       ∀V,T1. ❪G,L❫ ⊢ ⓑ[p,I]V.T1 ![h,a] →
-      ∀X. ❪G,L❫ ⊢ ⓑ[p,I]V.T1 ➡[n,h] X → ⓑ[p,I]V.T1 ≛ X →
-      ∃∃T2. ❪G,L❫ ⊢ V ![h,a] & ❪G,L.ⓑ[I]V❫ ⊢ T1 ![h,a] & ❪G,L.ⓧ❫ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓑ[p,I]V.T2.
+      ∀X. ❪G,L❫ ⊢ ⓑ[p,I]V.T1 ➡[h,n] X → ⓑ[p,I]V.T1 ≛ X →
+      ∃∃T2. ❪G,L❫ ⊢ V ![h,a] & ❪G,L.ⓑ[I]V❫ ⊢ T1 ![h,a] & ❪G,L.ⓧ❫ ⊢ T1 ➡[h,n] T2 & T1 ≛ T2 & X = ⓑ[p,I]V.T2.
 #h #a #n #p #I #G #L #V #T1 #H0 #X #H1 #H2
 elim (cpm_teqx_inv_bind_sn … H0 … H1 H2) -H0 -H1 -H2 #T2 #HV #HT1 #H1T12 #H2T12 #H
 /3 width=5 by ex5_intro, cpm_teqx_free/
index 4e7b176fd8330d5cabcdaf3c2851b4800991715f..657fa03b3c708aa36b547c603565b1de4c53cf80 100644 (file)
@@ -19,21 +19,21 @@ include "basic_2/dynamic/cnv_cpm_teqx.ma".
 
 definition IH_cnv_cpm_teqx_conf_lpr (h) (a): relation3 genv lenv term ≝
            λG,L0,T0. ❪G,L0❫ ⊢ T0 ![h,a] →
-           ∀n1,T1. ❪G,L0❫ ⊢ T0 ➡[n1,h] T1 → T0 ≛ T1 →
-           ∀n2,T2. ❪G,L0❫ ⊢ T0 ➡[n2,h] T2 → T0 ≛ T2 →
-           ∀L1. ❪G,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L0❫ ⊢ ➡[h] L2 →
-           ∃∃T. ❪G,L1❫ ⊢ T1 ➡[n2-n1,h] T & T1 ≛ T & ❪G,L2❫ ⊢ T2 ➡[n1-n2,h] T & T2 ≛ T.
+           ∀n1,T1. ❪G,L0❫ ⊢ T0 ➡[h,n1] T1 → T0 ≛ T1 →
+           ∀n2,T2. ❪G,L0❫ ⊢ T0 ➡[h,n2] T2 → T0 ≛ T2 →
+           ∀L1. ❪G,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L0❫ ⊢ ➡[h,0] L2 →
+           ∃∃T. ❪G,L1❫ ⊢ T1 ➡[h,n2-n1] T & T1 ≛ T & ❪G,L2❫ ⊢ T2 ➡[h,n1-n2] T & T2 ≛ T.
 
 (* Diamond propery with restricted rt-transition for terms ******************)
 
 fact cnv_cpm_teqx_conf_lpr_atom_atom_aux (h) (G0) (L1) (L2) (I):
-     ∃∃T. ❪G0,L1❫ ⊢ ⓪[I] ➡[h] T & ⓪[I] ≛ T & ❪G0,L2❫ ⊢ ⓪[I] ➡[h] T & ⓪[I] ≛ T.
+     ∃∃T. ❪G0,L1❫ ⊢ ⓪[I] ➡[h,0] T & ⓪[I] ≛ T & ❪G0,L2❫ ⊢ ⓪[I] ➡[h,0] T & ⓪[I] ≛ T.
 #h #G0 #L1 #L2 #I
 /2 width=5 by ex4_intro/
 qed-.
 
 fact cnv_cpm_teqx_conf_lpr_atom_ess_aux (h) (G0) (L1) (L2) (s):
-     ∃∃T. ❪G0,L1❫ ⊢ ⋆s ➡[1,h] T & ⋆s ≛ T & ❪G0,L2❫ ⊢ ⋆(⫯[h]s) ➡[h] T & ⋆(⫯[h]s) ≛ T.
+     ∃∃T. ❪G0,L1❫ ⊢ ⋆s ➡[h,1] T & ⋆s ≛ T & ❪G0,L2❫ ⊢ ⋆(⫯[h]s) ➡[h,0] T & ⋆(⫯[h]s) ≛ T.
 #h #G0 #L1 #L2 #s
 /3 width=5 by teqx_sort, ex4_intro/
 qed-.
@@ -41,10 +41,10 @@ qed-.
 fact cnv_cpm_teqx_conf_lpr_bind_bind_aux (h) (a) (p) (I) (G0) (L0) (V0) (T0):
      (∀G,L,T. ❪G0,L0,ⓑ[p,I]V0.T0❫ ⬂+ ❪G,L,T❫ → IH_cnv_cpm_teqx_conf_lpr h a G L T) →
      ❪G0,L0❫ ⊢ ⓑ[p,I]V0.T0 ![h,a] →
-     ∀n1,T1. ❪G0,L0.ⓑ[I]V0❫ ⊢ T0 ➡[n1,h] T1 → T0 ≛ T1 →
-     ∀n2,T2. ❪G0,L0.ⓑ[I]V0❫ ⊢ T0 ➡[n2,h] T2 → T0 ≛ T2 →
-     ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G0,L1❫ ⊢ ⓑ[p,I]V0.T1 ➡[n2-n1,h] T & ⓑ[p,I]V0.T1 ≛ T & ❪G0,L2❫ ⊢ ⓑ[p,I]V0.T2 ➡[n1-n2,h] T & ⓑ[p,I]V0.T2 ≛ T.
+     ∀n1,T1. ❪G0,L0.ⓑ[I]V0❫ ⊢ T0 ➡[h,n1] T1 → T0 ≛ T1 →
+     ∀n2,T2. ❪G0,L0.ⓑ[I]V0❫ ⊢ T0 ➡[h,n2] T2 → T0 ≛ T2 →
+     ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G0,L1❫ ⊢ ⓑ[p,I]V0.T1 ➡[h,n2-n1] T & ⓑ[p,I]V0.T1 ≛ T & ❪G0,L2❫ ⊢ ⓑ[p,I]V0.T2 ➡[h,n1-n2] T & ⓑ[p,I]V0.T2 ≛ T.
 #h #a #p #I #G0 #L0 #V0 #T0 #IH #H0
 #n1 #T1 #H1T01 #H2T01 #n2 #T2 #H1T02 #H2T02
 #L1 #HL01 #L2 #HL02
@@ -57,10 +57,10 @@ qed-.
 fact cnv_cpm_teqx_conf_lpr_appl_appl_aux (h) (a) (G0) (L0) (V0) (T0):
      (∀G,L,T. ❪G0,L0,ⓐV0.T0❫ ⬂+ ❪G,L,T❫ → IH_cnv_cpm_teqx_conf_lpr h a G L T) →
      ❪G0,L0❫ ⊢ ⓐV0.T0 ![h,a] →
-     ∀n1,T1. ❪G0,L0❫ ⊢ T0 ➡[n1,h] T1 → T0 ≛ T1 →
-     ∀n2,T2. ❪G0,L0❫ ⊢ T0 ➡[n2,h] T2 → T0 ≛ T2 →
-     ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G0,L1❫ ⊢ ⓐV0.T1 ➡[n2-n1,h] T & ⓐV0.T1 ≛ T & ❪G0,L2❫ ⊢ ⓐV0.T2 ➡[n1-n2,h] T & ⓐV0.T2 ≛ T.
+     ∀n1,T1. ❪G0,L0❫ ⊢ T0 ➡[h,n1] T1 → T0 ≛ T1 →
+     ∀n2,T2. ❪G0,L0❫ ⊢ T0 ➡[h,n2] T2 → T0 ≛ T2 →
+     ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G0,L1❫ ⊢ ⓐV0.T1 ➡[h,n2-n1] T & ⓐV0.T1 ≛ T & ❪G0,L2❫ ⊢ ⓐV0.T2 ➡[h,n1-n2] T & ⓐV0.T2 ≛ T.
 #h #a #G0 #L0 #V0 #T0 #IH #H0
 #n1 #T1 #H1T01 #H2T01 #n2 #T2 #H1T02 #H2T02
 #L1 #HL01 #L2 #HL02
@@ -73,12 +73,12 @@ qed-.
 fact cnv_cpm_teqx_conf_lpr_cast_cast_aux (h) (a) (G0) (L0) (V0) (T0):
      (∀G,L,T. ❪G0,L0,ⓝV0.T0❫ ⬂+ ❪G,L,T❫ → IH_cnv_cpm_teqx_conf_lpr h a G L T) →
      ❪G0,L0❫ ⊢ ⓝV0.T0 ![h,a] →
-     ∀n1,V1. ❪G0,L0❫ ⊢ V0 ➡[n1,h] V1 → V0 ≛ V1 →
-     ∀n2,V2. ❪G0,L0❫ ⊢ V0 ➡[n2,h] V2 → V0 ≛ V2 →
-     ∀T1. ❪G0,L0❫ ⊢ T0 ➡[n1,h] T1 → T0 ≛ T1 →
-     ∀T2. ❪G0,L0❫ ⊢ T0 ➡[n2,h] T2 → T0 ≛ T2 →
-     ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G0,L1❫ ⊢ ⓝV1.T1 ➡[n2-n1,h] T & ⓝV1.T1 ≛ T & ❪G0,L2❫ ⊢ ⓝV2.T2 ➡[n1-n2,h] T & ⓝV2.T2 ≛ T.
+     ∀n1,V1. ❪G0,L0❫ ⊢ V0 ➡[h,n1] V1 → V0 ≛ V1 →
+     ∀n2,V2. ❪G0,L0❫ ⊢ V0 ➡[h,n2] V2 → V0 ≛ V2 →
+     ∀T1. ❪G0,L0❫ ⊢ T0 ➡[h,n1] T1 → T0 ≛ T1 →
+     ∀T2. ❪G0,L0❫ ⊢ T0 ➡[h,n2] T2 → T0 ≛ T2 →
+     ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G0,L1❫ ⊢ ⓝV1.T1 ➡[h,n2-n1] T & ⓝV1.T1 ≛ T & ❪G0,L2❫ ⊢ ⓝV2.T2 ➡[h,n1-n2] T & ⓝV2.T2 ≛ T.
 #h #a #G0 #L0 #V0 #T0 #IH #H0
 #n1 #V1 #H1V01 #H2V01 #n2 #V2 #H1V02 #H2V02 #T1 #H1T01 #H2T01 #T2 #H1T02 #H2T02
 #L1 #HL01 #L2 #HL02
index 2ff1bbb6d236e010240a14a1145f038c922c061c..67104bbc65c07dbf8568d9e3ee1ea3e74c0c8943 100644 (file)
@@ -19,9 +19,9 @@ include "basic_2/dynamic/cnv_cpm_teqx.ma".
 
 definition IH_cnv_cpm_teqx_cpm_trans (h) (a): relation3 genv lenv term ≝
            λG,L,T1. ❪G,L❫ ⊢ T1 ![h,a] →
-           ∀n1,T. ❪G,L❫ ⊢ T1 ➡[n1,h] T → T1 ≛ T →
-           ∀n2,T2. ❪G,L❫ ⊢ T ➡[n2,h] T2 →
-           ∃∃T0. ❪G,L❫ ⊢ T1 ➡[n2,h] T0 & ❪G,L❫ ⊢ T0 ➡[n1,h] T2 & T0 ≛ T2.
+           ∀n1,T. ❪G,L❫ ⊢ T1 ➡[h,n1] T → T1 ≛ T →
+           ∀n2,T2. ❪G,L❫ ⊢ T ➡[h,n2] T2 →
+           ∃∃T0. ❪G,L❫ ⊢ T1 ➡[h,n2] T0 & ❪G,L❫ ⊢ T0 ➡[h,n1] T2 & T0 ≛ T2.
 
 (* Transitive properties restricted rt-transition for terms *****************)
 
index aa9840d0c28f625716f0d209a59794a9d74a3daa..48e99e557670a101e0404ef1579c2e59e744f505 100644 (file)
@@ -22,14 +22,14 @@ include "basic_2/dynamic/cnv_preserve.ma".
 
 lemma cnv_cpmre_trans (h) (a) (n) (G) (L):
       ∀T1. ❪G,L❫ ⊢ T1 ![h,a] →
-      ∀T2. ❪G,L❫ ⊢ T1 ➡*[h,n] 𝐍❪T2❫ → ❪G,L❫ ⊢ T2 ![h,a].
+      ∀T2. ❪G,L❫ ⊢ T1 ➡*𝐍[h,n] T2 → ❪G,L❫ ⊢ T2 ![h,a].
 #h #a #n #G #L #T1 #HT1 #T2 * #HT12 #_
 /2 width=4 by cnv_cpms_trans/
 qed-.
 
 lemma cnv_cpmre_cpms_conf (h) (a) (n) (G) (L):
-      ∀T. ❪G,L❫ ⊢ T ![h,a] → ∀T1. ❪G,L❫ ⊢ T ➡*[n,h] T1 →
-      ∀T2. ❪G,L❫ ⊢ T ➡*[h,n] 𝐍❪T2❫ → ❪G,L❫ ⊢ T1 ➡*[h] 𝐍❪T2❫.
+      ∀T. ❪G,L❫ ⊢ T ![h,a] → ∀T1. ❪G,L❫ ⊢ T ➡*[h,n] T1 →
+      ∀T2. ❪G,L❫ ⊢ T ➡*𝐍[h,n] T2 → ❪G,L❫ ⊢ T1 ➡*𝐍[h,0] T2.
 #h #a #n #G #L #T0 #HT0 #T1 #HT01 #T2 * #HT02 #HT2
 elim (cnv_cpms_conf … HT0 … HT01 … HT02) -T0 <minus_n_n #T0 #HT10 #HT20
 lapply (cprs_inv_cnr_sn … HT20 HT2) -HT20 #H destruct
@@ -39,8 +39,8 @@ qed-.
 (* Main properties with evaluation for t-bound rt-transition on terms *****)
 
 theorem cnv_cpmre_mono (h) (a) (n) (G) (L):
-        ∀T. ❪G,L❫ ⊢ T ![h,a] → ∀T1. ❪G,L❫ ⊢ T ➡*[h,n] 𝐍❪T1❫ →
-        ∀T2. ❪G,L❫ ⊢ T ➡*[h,n] 𝐍❪T2❫ → T1 = T2.
+        ∀T. ❪G,L❫ ⊢ T ![h,a] → ∀T1. ❪G,L❫ ⊢ T ➡*𝐍[h,n] T1 →
+        ∀T2. ❪G,L❫ ⊢ T ➡*𝐍[h,n] T2 → T1 = T2.
 #h #a #n #G #L #T0 #HT0 #T1 * #HT01 #HT1 #T2 * #HT02 #HT2
 elim (cnv_cpms_conf … HT0 … HT01 … HT02) -T0 <minus_n_n #T0 #HT10 #HT20
 /3 width=7 by cprs_inv_cnr_sn, canc_dx_eq/
index a91fff202d984955fabf05baa787b44ea93cdc68..7965bcae14b0a054d111a0be9303d310ca849479 100644 (file)
@@ -23,10 +23,10 @@ fact cnv_cpms_conf_lpr_teqx_teqx_aux (h) (a) (G0) (L0) (T0):
      (∀G,L,T. ❪G0,L0,T0❫ >[h] ❪G,L,T❫ → IH_cnv_cpm_trans_lpr h a G L T) →
      (∀G,L,T. ❪G0,L0,T0❫ >[h] ❪G,L,T❫ → IH_cnv_cpms_conf_lpr h a G L T) →
      ❪G0,L0❫ ⊢ T0 ![h,a] →
-     ∀n1,T1. ❪G0,L0❫ ⊢ T0 ➡*[n1,h] T1 → T0 ≛ T1 →
-     ∀n2,T2. ❪G0,L0❫ ⊢ T0 ➡*[n2,h] T2 → T0 ≛ T2 →
-     ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G0,L1❫ ⊢ T1 ➡*[n2-n1,h] T & ❪G0,L2❫ ⊢ T2 ➡*[n1-n2,h] T.
+     ∀n1,T1. ❪G0,L0❫ ⊢ T0 ➡*[h,n1] T1 → T0 ≛ T1 →
+     ∀n2,T2. ❪G0,L0❫ ⊢ T0 ➡*[h,n2] T2 → T0 ≛ T2 →
+     ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G0,L1❫ ⊢ T1 ➡*[h,n2-n1] T & ❪G0,L2❫ ⊢ T2 ➡*[h,n1-n2] T.
 #h #a #G #L0 #T0 #IH2 #IH1 #HT0
 #n1 #T1 #H1T01 #H2T01 #n2 #T2 #H1T02 #H2T02
 #L1 #HL01 #L2 #HL02
@@ -38,9 +38,9 @@ fact cnv_cpms_conf_lpr_refl_tneqx_sub (h) (a) (G0) (L0) (T0) (m21) (m22):
      (∀G,L,T. ❪G0,L0,T0❫ >[h] ❪G,L,T❫ → IH_cnv_cpm_trans_lpr h a G L T) →
      (∀G,L,T. ❪G0,L0,T0❫ >[h] ❪G,L,T❫ → IH_cnv_cpms_conf_lpr h a G L T) →
      ❪G0,L0❫ ⊢ T0 ![h,a] →
-     ∀X2. ❪G0,L0❫ ⊢ T0 ➡[m21,h] X2 → (T0 ≛ X2 → ⊥) → ∀T2. ❪G0,L0❫ ⊢ X2 ➡*[m22,h] T2 →
-     ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G0,L1❫ ⊢ T0 ➡*[m21+m22,h] T& ❪G0,L2❫ ⊢ T2 ➡*[h] T.
+     ∀X2. ❪G0,L0❫ ⊢ T0 ➡[h,m21] X2 → (T0 ≛ X2 → ⊥) → ∀T2. ❪G0,L0❫ ⊢ X2 ➡*[h,m22] T2 →
+     ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G0,L1❫ ⊢ T0 ➡*[h,m21+m22] T& ❪G0,L2❫ ⊢ T2 ➡*[h,0] T.
 #h #a #G0 #L0 #T0 #m21 #m22 #IH2 #IH1 #H0
 #X2 #HX02 #HnX02 #T2 #HXT2
 #L1 #HL01 #L2 #HL02
@@ -60,18 +60,18 @@ fact cnv_cpms_conf_lpr_step_tneqx_sub (h) (a) (G0) (L0) (T0) (m11) (m12) (m21) (
      (∀G,L,T. ❪G0,L0,T0❫ >[h] ❪G,L,T❫ → IH_cnv_cpm_trans_lpr h a G L T) →
      (∀G,L,T. ❪G0,L0,T0❫ >[h] ❪G,L,T❫ → IH_cnv_cpms_conf_lpr h a G L T) →
      ❪G0,L0❫ ⊢ T0 ![h,a] →
-     ∀X1. ❪G0,L0❫ ⊢ T0 ➡[m11,h] X1 → T0 ≛ X1 → ∀T1. ❪G0,L0❫ ⊢ X1 ➡*[m12,h] T1 → X1 ≛ T1 →
-     ∀X2. ❪G0,L0❫ ⊢ T0 ➡[m21,h] X2 → (T0 ≛ X2 → ⊥) → ∀T2. ❪G0,L0❫ ⊢ X2 ➡*[m22,h] T2 →
-     ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
+     ∀X1. ❪G0,L0❫ ⊢ T0 ➡[h,m11] X1 → T0 ≛ X1 → ∀T1. ❪G0,L0❫ ⊢ X1 ➡*[h,m12] T1 → X1 ≛ T1 →
+     ∀X2. ❪G0,L0❫ ⊢ T0 ➡[h,m21] X2 → (T0 ≛ X2 → ⊥) → ∀T2. ❪G0,L0❫ ⊢ X2 ➡*[h,m22] T2 →
+     ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
      ((∀G,L,T. ❪G0,L0,X1❫ >[h] ❪G,L,T❫ → IH_cnv_cpm_trans_lpr h a G L T) →
        (∀G,L,T. ❪G0,L0,X1❫ >[h] ❪G,L,T❫ → IH_cnv_cpms_conf_lpr h a G L T) →
        ∀m21,m22.
-       ∀X2. ❪G0,L0❫ ⊢ X1 ➡[m21,h] X2 → (X1 ≛ X2 → ⊥) →
-       ∀T2. ❪G0,L0❫ ⊢ X2 ➡*[m22,h] T2 →
-       ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-       ∃∃T. ❪G0,L1❫ ⊢ T1 ➡*[m21+m22-m12,h] T & ❪G0,L2❫ ⊢ T2 ➡*[m12-(m21+m22),h]T
+       ∀X2. ❪G0,L0❫ ⊢ X1 ➡[h,m21] X2 → (X1 ≛ X2 → ⊥) →
+       ∀T2. ❪G0,L0❫ ⊢ X2 ➡*[h,m22] T2 →
+       ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+       ∃∃T. ❪G0,L1❫ ⊢ T1 ➡*[h,m21+m22-m12] T & ❪G0,L2❫ ⊢ T2 ➡*[h,m12-(m21+m22)]T
      ) →
-     ∃∃T. ❪G0,L1❫ ⊢ T1 ➡*[m21+m22-(m11+m12),h] T & ❪G0,L2❫ ⊢ T2 ➡*[m11+m12-(m21+m22),h] T.
+     ∃∃T. ❪G0,L1❫ ⊢ T1 ➡*[h,m21+m22-(m11+m12)] T & ❪G0,L2❫ ⊢ T2 ➡*[h,m11+m12-(m21+m22)] T.
 #h #a #G0 #L0 #T0 #m11 #m12 #m21 #m22 #IH2 #IH1 #HT0
 #X1 #H1X01 #H2X01 #T1 #H1XT1 #H2XT1 #X2 #H1X02 #H2X02 #T2 #HXT2
 #L1 #HL01 #L2 #HL02 #IH
@@ -102,10 +102,10 @@ fact cnv_cpms_conf_lpr_teqx_tneqx_aux (h) (a) (G0) (L0) (T0) (n1) (m21) (m22):
      (∀G,L,T. ❪G0,L0,T0❫ >[h] ❪G,L,T❫ → IH_cnv_cpm_trans_lpr h a G L T) →
      (∀G,L,T. ❪G0,L0,T0❫ >[h] ❪G,L,T❫ → IH_cnv_cpms_conf_lpr h a G L T) →
      ❪G0,L0❫ ⊢ T0 ![h,a] →
-     ∀T1. ❪G0,L0❫ ⊢ T0 ➡*[n1,h] T1 → T0 ≛ T1 →
-     ∀X2. ❪G0,L0❫ ⊢ T0 ➡[m21,h] X2 → (T0 ≛ X2 → ⊥) → ∀T2. ❪G0,L0❫ ⊢ X2 ➡*[m22,h] T2 →
-     ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G0,L1❫ ⊢ T1 ➡*[m21+m22-n1,h] T & ❪G0,L2❫ ⊢ T2 ➡*[n1-(m21+m22),h] T.
+     ∀T1. ❪G0,L0❫ ⊢ T0 ➡*[h,n1] T1 → T0 ≛ T1 →
+     ∀X2. ❪G0,L0❫ ⊢ T0 ➡[h,m21] X2 → (T0 ≛ X2 → ⊥) → ∀T2. ❪G0,L0❫ ⊢ X2 ➡*[h,m22] T2 →
+     ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G0,L1❫ ⊢ T1 ➡*[h,m21+m22-n1] T & ❪G0,L2❫ ⊢ T2 ➡*[h,n1-(m21+m22)] T.
 #h #a #G0 #L0 #T0 #n1 #m21 #m22 #IH2 #IH1 #HT0
 #T1 #H1T01 #H2T01
 generalize in match m22; generalize in match m21; -m21 -m22
@@ -125,10 +125,10 @@ fact cnv_cpms_conf_lpr_tneqx_tneqx_aux (h) (a) (G0) (L0) (T0) (m11) (m12) (m21)
      (∀G,L,T. ❪G0,L0,T0❫ >[h] ❪G,L,T❫ → IH_cnv_cpm_trans_lpr h a G L T) →
      (∀G,L,T. ❪G0,L0,T0❫ >[h] ❪G,L,T❫ → IH_cnv_cpms_conf_lpr h a G L T) →
      ❪G0,L0❫ ⊢ T0 ![h,a] →
-     ∀X1. ❪G0,L0❫ ⊢ T0 ➡[m11,h] X1 → (T0 ≛ X1 → ⊥) → ∀T1. ❪G0,L0❫ ⊢ X1 ➡*[m12,h] T1 →
-     ∀X2. ❪G0,L0❫ ⊢ T0 ➡[m21,h] X2 → (T0 ≛ X2 → ⊥) → ∀T2. ❪G0,L0❫ ⊢ X2 ➡*[m22,h] T2 →
-     ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G0,L1❫ ⊢ T1 ➡*[m21+m22-(m11+m12),h] T & ❪G0,L2❫ ⊢ T2 ➡*[m11+m12-(m21+m22),h] T.
+     ∀X1. ❪G0,L0❫ ⊢ T0 ➡[h,m11] X1 → (T0 ≛ X1 → ⊥) → ∀T1. ❪G0,L0❫ ⊢ X1 ➡*[h,m12] T1 →
+     ∀X2. ❪G0,L0❫ ⊢ T0 ➡[h,m21] X2 → (T0 ≛ X2 → ⊥) → ∀T2. ❪G0,L0❫ ⊢ X2 ➡*[h,m22] T2 →
+     ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G0,L1❫ ⊢ T1 ➡*[h,m21+m22-(m11+m12)] T & ❪G0,L2❫ ⊢ T2 ➡*[h,m11+m12-(m21+m22)] T.
 #h #a #G0 #L0 #T0 #m11 #m12 #m21 #m22 #IH2 #IH1 #H0
 #X1 #HX01 #HnX01 #T1 #HXT1 #X2 #HX02 #HnX02 #T2 #HXT2
 #L1 #HL01 #L2 #HL02
index 28c781e0f3a6e8950e0facbfc228e5d07f662796..13530d00863fbd0b2366305d4f1df58bd2c5965b 100644 (file)
@@ -19,10 +19,10 @@ include "basic_2/dynamic/cnv_cpm_teqx_trans.ma".
 (* Properties with restricted rt-computation for terms **********************)
 
 fact cpms_tneqx_fwd_step_sn_aux (h) (a) (n) (G) (L) (T1):
-     ∀T2. ❪G,L❫ ⊢ T1 ➡*[n,h] T2 → ❪G,L❫ ⊢ T1 ![h,a] → (T1 ≛ T2 → ⊥) →
+     ∀T2. ❪G,L❫ ⊢ T1 ➡*[h,n] T2 → ❪G,L❫ ⊢ T1 ![h,a] → (T1 ≛ T2 → ⊥) →
      (∀G0,L0,T0. ❪G,L,T1❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      (∀G0,L0,T0. ❪G,L,T1❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpm_trans_lpr h a G0 L0 T0) →
-     ∃∃n1,n2,T0. ❪G,L❫ ⊢ T1 ➡[n1,h] T0 & T1 ≛ T0 → ⊥ & ❪G,L❫ ⊢ T0 ➡*[n2,h] T2 & n1+n2 = n.
+     ∃∃n1,n2,T0. ❪G,L❫ ⊢ T1 ➡[h,n1] T0 & T1 ≛ T0 → ⊥ & ❪G,L❫ ⊢ T0 ➡*[h,n2] T2 & n1+n2 = n.
 #h #a #n #G #L #T1 #T2 #H
 @(cpms_ind_sn … H) -n -T1
 [ #_ #H2T2 elim H2T2 -H2T2 //
@@ -44,8 +44,8 @@ qed-.
 
 fact cpms_teqx_ind_sn (h) (a) (G) (L) (T2) (Q:relation2 …):
      (❪G,L❫ ⊢ T2 ![h,a] → Q 0 T2) →
-     (∀n1,n2,T1,T. ❪G,L❫ ⊢ T1 ➡[n1,h] T → ❪G,L❫ ⊢ T1 ![h,a] → T1 ≛ T → ❪G,L❫ ⊢ T ➡*[n2,h] T2 → ❪G,L❫ ⊢ T ![h,a] → T ≛ T2 → Q n2 T → Q (n1+n2) T1) →
-     ∀n,T1. ❪G,L❫ ⊢ T1 ➡*[n,h] T2 → ❪G,L❫ ⊢ T1 ![h,a] → T1 ≛ T2 →
+     (∀n1,n2,T1,T. ❪G,L❫ ⊢ T1 ➡[h,n1] T → ❪G,L❫ ⊢ T1 ![h,a] → T1 ≛ T → ❪G,L❫ ⊢ T ➡*[h,n2] T2 → ❪G,L❫ ⊢ T ![h,a] → T ≛ T2 → Q n2 T → Q (n1+n2) T1) →
+     ∀n,T1. ❪G,L❫ ⊢ T1 ➡*[h,n] T2 → ❪G,L❫ ⊢ T1 ![h,a] → T1 ≛ T2 →
      (∀G0,L0,T0. ❪G,L,T1❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      (∀G0,L0,T0. ❪G,L,T1❫ >[h] ❪G0,L0,T0❫ → IH_cnv_cpm_trans_lpr h a G0 L0 T0) →
      Q n T1.
index 656eee30d1523d0c22d51391a54834145aa6a4dd..3271b4e11934081415831173bd181a20b6ac6081 100644 (file)
@@ -22,10 +22,10 @@ include "basic_2/dynamic/cnv_cpms_teqx.ma".
 fact cnv_cpms_teqx_strip_lpr_aux (h) (a) (G0) (L0) (T0):
      (∀G,L,T. ❪G0,L0,T0❫ >[h] ❪G,L,T❫ → IH_cnv_cpm_trans_lpr h a G L T) →
      (∀G,L,T. ❪G0,L0,T0❫ >[h] ❪G,L,T❫ → IH_cnv_cpms_conf_lpr h a G L T) →
-     ∀n1,T1. ❪G0,L0❫ ⊢ T0 ➡*[n1,h] T1 → ❪G0,L0❫ ⊢ T0 ![h,a] → T0 ≛ T1 →
-     ∀n2,T2. ❪G0,L0❫ ⊢ T0 ➡[n2,h] T2 → T0 ≛ T2 →
-     ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G0,L1❫ ⊢ T1 ➡[n2-n1,h] T & T1 ≛ T & ❪G0,L2❫ ⊢ T2 ➡*[n1-n2,h] T & T2 ≛ T.
+     ∀n1,T1. ❪G0,L0❫ ⊢ T0 ➡*[h,n1] T1 → ❪G0,L0❫ ⊢ T0 ![h,a] → T0 ≛ T1 →
+     ∀n2,T2. ❪G0,L0❫ ⊢ T0 ➡[h,n2] T2 → T0 ≛ T2 →
+     ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G0,L1❫ ⊢ T1 ➡[h,n2-n1] T & T1 ≛ T & ❪G0,L2❫ ⊢ T2 ➡*[h,n1-n2] T & T2 ≛ T.
 #h #a #G #L0 #T0 #IH2 #IH1 #n1 #T1 #H1T01 #H0T0 #H2T01
 @(cpms_teqx_ind_sn … H1T01 H0T0 H2T01 IH1 IH2) -n1 -T0
 [ #H0T1 #n2 #T2 #H1T12 #H2T12 #L1 #HL01 #L2 #HL02
@@ -47,10 +47,10 @@ qed-.
 fact cnv_cpms_teqx_conf_lpr_aux (h) (a) (G0) (L0) (T0):
      (∀G,L,T. ❪G0,L0,T0❫ >[h] ❪G,L,T❫ → IH_cnv_cpm_trans_lpr h a G L T) →
      (∀G,L,T. ❪G0,L0,T0❫ >[h] ❪G,L,T❫ → IH_cnv_cpms_conf_lpr h a G L T) →
-     ∀n1,T1. ❪G0,L0❫ ⊢ T0 ➡*[n1,h] T1 → ❪G0,L0❫ ⊢ T0 ![h,a] → T0 ≛ T1 →
-     ∀n2,T2. ❪G0,L0❫ ⊢ T0 ➡*[n2,h] T2 → T0 ≛ T2 →
-     ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-     ∃∃T. ❪G0,L1❫ ⊢ T1 ➡*[n2-n1,h] T & T1 ≛ T & ❪G0,L2❫ ⊢ T2 ➡*[n1-n2,h] T & T2 ≛ T.
+     ∀n1,T1. ❪G0,L0❫ ⊢ T0 ➡*[h,n1] T1 → ❪G0,L0❫ ⊢ T0 ![h,a] → T0 ≛ T1 →
+     ∀n2,T2. ❪G0,L0❫ ⊢ T0 ➡*[h,n2] T2 → T0 ≛ T2 →
+     ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+     ∃∃T. ❪G0,L1❫ ⊢ T1 ➡*[h,n2-n1] T & T1 ≛ T & ❪G0,L2❫ ⊢ T2 ➡*[h,n1-n2] T & T2 ≛ T.
 #h #a #G #L0 #T0 #IH2 #IH1 #n1 #T1 #H1T01 #H0T0 #H2T01
 generalize in match IH1; generalize in match IH2;
 @(cpms_teqx_ind_sn … H1T01 H0T0 H2T01 IH1 IH2) -n1 -T0
index 51c02346f8baca2bee0c60c828cc559fa0deef01..dc44cc5b2625408c890080b3bcd333c0934e2f4c 100644 (file)
@@ -23,7 +23,7 @@ include "basic_2/dynamic/cnv_preserve_cpcs.ma".
 
 lemma cpts_cpms_conf_eq (h) (n) (a) (G) (L):
       ∀T0. ❪G,L❫ ⊢ T0 ![h,a] → ∀T1. ❪G,L❫ ⊢ T0 ⬆*[h,n] T1 →
-      ∀T2. ❪G,L❫ ⊢ T0 ➡*[n,h] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
+      ∀T2. ❪G,L❫ ⊢ T0 ➡*[h,n] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
 #h #a #n #G #L #T0 #HT0 #T1 #HT01 #T2 #HT02
 /3 width=6 by cpts_fwd_cpms, cnv_cpms_conf_eq/
 qed-.
@@ -41,8 +41,8 @@ qed-.
 lemma cnv_inv_appl_cpts (h) (a) (nv) (nt) (p) (G) (L):
       ∀V1. ❪G,L❫ ⊢ V1 ![h,a] → ∀V2. ❪G,L❫ ⊢ V1 ⬆*[h,nv] V2 →
       ∀T1. ❪G,L❫ ⊢ T1 ![h,a] → ∀T2. ❪G,L❫ ⊢ T1 ⬆*[h,nt] T2 →
-      ∀V0. ❪G,L❫ ⊢ V1 ➡*[nv,h] V0 → ∀T0. ❪G,L❫ ⊢ T1 ➡*[nt,h] ⓛ[p]V0.T0 →
-      ∃∃W0,U0. ❪G,L❫ ⊢ V2 ➡*[h] W0 & ❪G,L❫ ⊢ T2 ➡*[h] ⓛ[p]W0.U0.
+      ∀V0. ❪G,L❫ ⊢ V1 ➡*[h,nv] V0 → ∀T0. ❪G,L❫ ⊢ T1 ➡*[h,nt] ⓛ[p]V0.T0 →
+      ∃∃W0,U0. ❪G,L❫ ⊢ V2 ➡*[h,0] W0 & ❪G,L❫ ⊢ T2 ➡*[h,0] ⓛ[p]W0.U0.
 #h #a #nv #nt #p #G #L #V1 #HV1 #V2 #HV12 #T1 #HT1 #T2 #HT12 #V0 #HV20 #T0 #HT20
 lapply (cpts_cpms_conf_eq … HV1 … HV12 … HV20) -nv -V1 #HV20
 lapply (cpts_cpms_conf_eq … HT1 … HT12 … HT20) -nt -T1 #HT20
@@ -67,8 +67,8 @@ qed-.
 lemma cnv_appl_cpts (h) (a) (nv) (nt) (p) (G) (L):
       ∀V1. ❪G,L❫ ⊢ V1 ![h,a] → ∀V2. ❪G,L❫ ⊢ V1 ⬆*[h,nv] V2 →
       ∀T1. ❪G,L❫ ⊢ T1 ![h,a] → ∀T2. ❪G,L❫ ⊢ T1 ⬆*[h,nt] T2 →
-      ∀V0. ❪G,L❫ ⊢ V2 ➡*[h] V0 → ∀T0. ❪G,L❫ ⊢ T2 ➡*[h] ⓛ[p]V0.T0 →
-      ∃∃W0,U0. ❪G,L❫ ⊢ V1 ➡*[nv,h] W0 & ❪G,L❫ ⊢ T1 ➡*[nt,h] ⓛ[p]W0.U0.
+      ∀V0. ❪G,L❫ ⊢ V2 ➡*[h,0] V0 → ∀T0. ❪G,L❫ ⊢ T2 ➡*[h,0] ⓛ[p]V0.T0 →
+      ∃∃W0,U0. ❪G,L❫ ⊢ V1 ➡*[h,nv] W0 & ❪G,L❫ ⊢ T1 ➡*[h,nt] ⓛ[p]W0.U0.
 #h #a #nv #nt #p #G #L #V1 #HV1 #V2 #HV12 #T1 #HT1 #T2 #HT12 #V0 #HV20 #T0 #HT20
 /3 width=6 by cpts_cprs_trans, ex2_2_intro/
 qed-.
index a7027e195ec234695a8765ea597b271c1946adaf..06df2c198851e4d87c7161cae3f1f59e49de8c38 100644 (file)
@@ -43,8 +43,8 @@ qed-.
 
 lemma cnv_cpms_conf (h) (a) (G) (L):
       ∀T0. ❪G,L❫ ⊢ T0 ![h,a] →
-      ∀n1,T1. ❪G,L❫ ⊢ T0 ➡*[n1,h] T1 → ∀n2,T2. ❪G,L❫ ⊢ T0 ➡*[n2,h] T2 →
-      ∃∃T. ❪G,L❫ ⊢ T1 ➡*[n2-n1,h] T & ❪G,L❫ ⊢ T2 ➡*[n1-n2,h] T.
+      ∀n1,T1. ❪G,L❫ ⊢ T0 ➡*[h,n1] T1 → ∀n2,T2. ❪G,L❫ ⊢ T0 ➡*[h,n2] T2 →
+      ∃∃T. ❪G,L❫ ⊢ T1 ➡*[h,n2-n1] T & ❪G,L❫ ⊢ T2 ➡*[h,n1-n2] T.
 /2 width=8 by cnv_cpms_conf_lpr/ qed-.
 
 (* Basic_2A1: uses: snv_cprs_lpr *)
@@ -55,21 +55,21 @@ qed-.
 
 lemma cnv_cpm_trans (h) (a) (G) (L):
       ∀T1. ❪G,L❫ ⊢ T1 ![h,a] →
-      ∀n,T2. ❪G,L❫ ⊢ T1 ➡[n,h] T2 → ❪G,L❫ ⊢ T2 ![h,a].
+      ∀n,T2. ❪G,L❫ ⊢ T1 ➡[h,n] T2 → ❪G,L❫ ⊢ T2 ![h,a].
 /2 width=6 by cnv_cpm_trans_lpr/ qed-.
 
 (* Note: this is the preservation property *)
 lemma cnv_cpms_trans (h) (a) (G) (L):
       ∀T1. ❪G,L❫ ⊢ T1 ![h,a] →
-      ∀n,T2. ❪G,L❫ ⊢ T1 ➡*[n,h] T2 → ❪G,L❫ ⊢ T2 ![h,a].
+      ∀n,T2. ❪G,L❫ ⊢ T1 ➡*[h,n] T2 → ❪G,L❫ ⊢ T2 ![h,a].
 /2 width=6 by cnv_cpms_trans_lpr/ qed-.
 
 lemma cnv_lpr_trans (h) (a) (G):
-      ∀L1,T. ❪G,L1❫ ⊢ T ![h,a] → ∀L2. ❪G,L1❫ ⊢ ➡[h] L2 → ❪G,L2❫ ⊢ T ![h,a].
+      ∀L1,T. ❪G,L1❫ ⊢ T ![h,a] → ∀L2. ❪G,L1❫ ⊢ ➡[h,0] L2 → ❪G,L2❫ ⊢ T ![h,a].
 /2 width=6 by cnv_cpm_trans_lpr/ qed-.
 
 lemma cnv_lprs_trans (h) (a) (G):
-      ∀L1,T. ❪G,L1❫ ⊢ T ![h,a] → ∀L2. ❪G,L1❫ ⊢ ➡*[h] L2 → ❪G,L2❫ ⊢ T ![h,a].
+      ∀L1,T. ❪G,L1❫ ⊢ T ![h,a] → ∀L2. ❪G,L1❫ ⊢ ➡*[h,0] L2 → ❪G,L2❫ ⊢ T ![h,a].
 #h #a #G #L1 #T #HT #L2 #H
 @(lprs_ind_dx … H) -L2 /2 width=3 by cnv_lpr_trans/
 qed-.
index 728499addd4f402885adb65ee1f8b4c946b04477..059b8e44e915c0ecbd34f77e9945d6c2bbdc6940 100644 (file)
@@ -21,15 +21,15 @@ include "basic_2/dynamic/cnv_preserve.ma".
 
 lemma cnv_cpms_conf_eq (h) (a) (n) (G) (L):
       ∀T. ❪G,L❫ ⊢ T ![h,a] →
-      ∀T1. ❪G,L❫ ⊢ T ➡*[n,h] T1 → ∀T2. ❪G,L❫ ⊢ T ➡*[n,h] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
+      ∀T1. ❪G,L❫ ⊢ T ➡*[h,n] T1 → ∀T2. ❪G,L❫ ⊢ T ➡*[h,n] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
 #h #a #n #G #L #T #HT #T1 #HT1 #T2 #HT2
 elim (cnv_cpms_conf … HT … HT1 … HT2) -T <minus_n_n #T #HT1 #HT2
 /2 width=3 by cprs_div/
 qed-.
 
 lemma cnv_cpms_fwd_appl_sn_decompose (h) (a) (G) (L):
-      ∀V,T. ❪G,L❫ ⊢ ⓐV.T ![h,a] → ∀n,X. ❪G,L❫ ⊢ ⓐV.T ➡*[n,h] X →
-      ∃∃U. ❪G,L❫ ⊢ T ![h,a] & ❪G,L❫ ⊢ T ➡*[n,h] U & ❪G,L❫ ⊢ ⓐV.U ⬌*[h] X.
+      ∀V,T. ❪G,L❫ ⊢ ⓐV.T ![h,a] → ∀n,X. ❪G,L❫ ⊢ ⓐV.T ➡*[h,n] X →
+      ∃∃U. ❪G,L❫ ⊢ T ![h,a] & ❪G,L❫ ⊢ T ➡*[h,n] U & ❪G,L❫ ⊢ ⓐV.U ⬌*[h] X.
 #h #a #G #L #V #T #H0 #n #X #HX
 elim (cnv_inv_appl … H0) #m #p #W #U #_ #_ #HT #_ #_ -m -p -W -U
 elim (cnv_fwd_cpms_total h … n … HT) #U #HTU
index 970a2fd9667647e62a0f8834ba6f3f3ce5a0a86a..b9b06348d6a8a49ab7a81739a5f3c0c9d3436405 100644 (file)
@@ -21,31 +21,31 @@ include "basic_2/dynamic/cnv.ma".
 
 definition IH_cnv_cpm_trans_lpr (h) (a): relation3 genv lenv term ≝
                                 λG,L1,T1. ❪G,L1❫ ⊢ T1 ![h,a] →
-                                ∀n,T2. ❪G,L1❫ ⊢ T1 ➡[n,h] T2 →
-                                ∀L2. ❪G,L1❫ ⊢ ➡[h] L2 → ❪G,L2❫ ⊢ T2 ![h,a].
+                                ∀n,T2. ❪G,L1❫ ⊢ T1 ➡[h,n] T2 →
+                                ∀L2. ❪G,L1❫ ⊢ ➡[h,0] L2 → ❪G,L2❫ ⊢ T2 ![h,a].
 
 definition IH_cnv_cpms_trans_lpr (h) (a): relation3 genv lenv term ≝
                                  λG,L1,T1. ❪G,L1❫ ⊢ T1 ![h,a] →
-                                 ∀n,T2. ❪G,L1❫ ⊢ T1 ➡*[n,h] T2 →
-                                 ∀L2. ❪G,L1❫ ⊢ ➡[h] L2 → ❪G,L2❫ ⊢ T2 ![h,a].
+                                 ∀n,T2. ❪G,L1❫ ⊢ T1 ➡*[h,n] T2 →
+                                 ∀L2. ❪G,L1❫ ⊢ ➡[h,0] L2 → ❪G,L2❫ ⊢ T2 ![h,a].
 
 definition IH_cnv_cpm_conf_lpr (h) (a): relation3 genv lenv term ≝
                                λG,L0,T0. ❪G,L0❫ ⊢ T0 ![h,a] →
-                               ∀n1,T1. ❪G,L0❫ ⊢ T0 ➡[n1,h] T1 → ∀n2,T2. ❪G,L0❫ ⊢ T0 ➡[n2,h] T2 →
-                               ∀L1. ❪G,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L0❫ ⊢ ➡[h] L2 →
-                               ∃∃T. ❪G,L1❫ ⊢ T1 ➡*[n2-n1,h] T & ❪G,L2❫ ⊢ T2 ➡*[n1-n2,h] T.
+                               ∀n1,T1. ❪G,L0❫ ⊢ T0 ➡[h,n1] T1 → ∀n2,T2. ❪G,L0❫ ⊢ T0 ➡[h,n2] T2 →
+                               ∀L1. ❪G,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L0❫ ⊢ ➡[h,0] L2 →
+                               ∃∃T. ❪G,L1❫ ⊢ T1 ➡*[h,n2-n1] T & ❪G,L2❫ ⊢ T2 ➡*[h,n1-n2] T.
 
 definition IH_cnv_cpms_strip_lpr (h) (a): relation3 genv lenv term ≝
                                  λG,L0,T0. ❪G,L0❫ ⊢ T0 ![h,a] →
-                                 ∀n1,T1. ❪G,L0❫ ⊢ T0 ➡*[n1,h] T1 → ∀n2,T2. ❪G,L0❫ ⊢ T0 ➡[n2,h] T2 →
-                                 ∀L1. ❪G,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L0❫ ⊢ ➡[h] L2 →
-                                 ∃∃T. ❪G,L1❫ ⊢ T1 ➡*[n2-n1,h] T & ❪G,L2❫ ⊢ T2 ➡*[n1-n2,h] T.
+                                 ∀n1,T1. ❪G,L0❫ ⊢ T0 ➡*[h,n1] T1 → ∀n2,T2. ❪G,L0❫ ⊢ T0 ➡[h,n2] T2 →
+                                 ∀L1. ❪G,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L0❫ ⊢ ➡[h,0] L2 →
+                                 ∃∃T. ❪G,L1❫ ⊢ T1 ➡*[h,n2-n1] T & ❪G,L2❫ ⊢ T2 ➡*[h,n1-n2] T.
 
 definition IH_cnv_cpms_conf_lpr (h) (a): relation3 genv lenv term ≝
                                 λG,L0,T0. ❪G,L0❫ ⊢ T0 ![h,a] →
-                                ∀n1,T1. ❪G,L0❫ ⊢ T0 ➡*[n1,h] T1 → ∀n2,T2. ❪G,L0❫ ⊢ T0 ➡*[n2,h] T2 →
-                                ∀L1. ❪G,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L0❫ ⊢ ➡[h] L2 →
-                                ∃∃T. ❪G,L1❫ ⊢ T1 ➡*[n2-n1,h] T & ❪G,L2❫ ⊢ T2 ➡*[n1-n2,h] T.
+                                ∀n1,T1. ❪G,L0❫ ⊢ T0 ➡*[h,n1] T1 → ∀n2,T2. ❪G,L0❫ ⊢ T0 ➡*[h,n2] T2 →
+                                ∀L1. ❪G,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L0❫ ⊢ ➡[h,0] L2 →
+                                ∃∃T. ❪G,L1❫ ⊢ T1 ➡*[h,n2-n1] T & ❪G,L2❫ ⊢ T2 ➡*[h,n1-n2] T.
 
 (* Auxiliary properties for preservation ************************************)
 
index 3a61f5dda48f2c83ddae96340a3d1c7fcca79bde..25da632b673856fa431ca07ba7a4bcab033bdeb7 100644 (file)
@@ -22,7 +22,7 @@ include "basic_2/dynamic/nta.ma".
 (* Properties based on preservation *****************************************)
 
 lemma cnv_cpms_nta (h) (a) (G) (L):
-      ∀T. ❪G,L❫ ⊢ T ![h,a] → ∀U.❪G,L❫ ⊢ T ➡*[1,h] U → ❪G,L❫ ⊢ T :[h,a] U.
+      ∀T. ❪G,L❫ ⊢ T ![h,a] → ∀U.❪G,L❫ ⊢ T ➡*[h,1] U → ❪G,L❫ ⊢ T :[h,a] U.
 /3 width=4 by cnv_cast, cnv_cpms_trans/ qed.
 
 lemma cnv_nta_sn (h) (a) (G) (L):
@@ -58,8 +58,8 @@ qed.
 
 (* Basic_1: uses: ty3_sred_wcpr0_pr0 *)
 lemma nta_cpr_conf_lpr (h) (a) (G):
-      ∀L1,T1,U. ❪G,L1❫ ⊢ T1 :[h,a] U → ∀T2. ❪G,L1❫ ⊢ T1 ➡[h] T2 →
-      ∀L2. ❪G,L1❫ ⊢ ➡[h] L2 → ❪G,L2❫ ⊢ T2 :[h,a] U.
+      ∀L1,T1,U. ❪G,L1❫ ⊢ T1 :[h,a] U → ∀T2. ❪G,L1❫ ⊢ T1 ➡[h,0] T2 →
+      ∀L2. ❪G,L1❫ ⊢ ➡[h,0] L2 → ❪G,L2❫ ⊢ T2 :[h,a] U.
 #h #a #G #L1 #T1 #U #H #T2 #HT12 #L2 #HL12
 /3 width=6 by cnv_cpm_trans_lpr, cpm_cast/
 qed-.
@@ -67,7 +67,7 @@ qed-.
 (* Basic_1: uses: ty3_sred_pr2 ty3_sred_pr0 *)
 lemma nta_cpr_conf (h) (a) (G) (L):
       ∀T1,U. ❪G,L❫ ⊢ T1 :[h,a] U →
-      ∀T2. ❪G,L❫ ⊢ T1 ➡[h] T2 → ❪G,L❫ ⊢ T2 :[h,a] U.
+      ∀T2. ❪G,L❫ ⊢ T1 ➡[h,0] T2 → ❪G,L❫ ⊢ T2 :[h,a] U.
 #h #a #G #L #T1 #U #H #T2 #HT12
 /3 width=6 by cnv_cpm_trans, cpm_cast/
 qed-.
@@ -76,7 +76,7 @@ qed-.
 (* Basic_1: uses: ty3_sred_pr3 ty3_sred_pr1 *)
 lemma nta_cprs_conf (h) (a) (G) (L):
       ∀T1,U. ❪G,L❫ ⊢ T1 :[h,a] U →
-      ∀T2. ❪G,L❫ ⊢ T1 ➡*[h] T2 → ❪G,L❫ ⊢ T2 :[h,a] U.
+      ∀T2. ❪G,L❫ ⊢ T1 ➡*[h,0] T2 → ❪G,L❫ ⊢ T2 :[h,a] U.
 #h #a #G #L #T1 #U #H #T2 #HT12
 /3 width=6 by cnv_cpms_trans, cpms_cast/
 qed-.
@@ -84,7 +84,7 @@ qed-.
 (* Basic_1: uses: ty3_cred_pr2 *)
 lemma nta_lpr_conf (h) (a) (G):
       ∀L1,T,U. ❪G,L1❫ ⊢ T :[h,a] U →
-      ∀L2. ❪G,L1❫ ⊢ ➡[h] L2 → ❪G,L2❫ ⊢ T :[h,a] U.
+      ∀L2. ❪G,L1❫ ⊢ ➡[h,0] L2 → ❪G,L2❫ ⊢ T :[h,a] U.
 #h #a #G #L1 #T #U #HTU #L2 #HL12
 /2 width=3 by cnv_lpr_trans/
 qed-.
@@ -92,7 +92,7 @@ qed-.
 (* Basic_1: uses: ty3_cred_pr3 *)
 lemma nta_lprs_conf (h) (a) (G):
       ∀L1,T,U. ❪G,L1❫ ⊢ T :[h,a] U →
-      ∀L2. ❪G,L1❫ ⊢ ➡*[h] L2 → ❪G,L2❫ ⊢ T :[h,a] U.
+      ∀L2. ❪G,L1❫ ⊢ ➡*[h,0] L2 → ❪G,L2❫ ⊢ T :[h,a] U.
 #h #a #G #L1 #T #U #HTU #L2 #HL12
 /2 width=3 by cnv_lprs_trans/
 qed-.
@@ -242,7 +242,7 @@ elim (cpms_inv_cast1 … H2) -H2 [ * || * ]
 qed-.
 
 (* Basic_1: uses: ty3_gen_lift *)
-(* Note: "❪G, L❫ ⊢ U2 ⬌*[h] X2" can be "❪G, L❫ ⊢ X2 ➡*[h] U2" *)
+(* Note: "❪G, L❫ ⊢ U2 ⬌*[h] X2" can be "❪G, L❫ ⊢ X2 ➡*[h,0] U2" *)
 lemma nta_inv_lifts_sn (h) (a) (G):
       ∀L,T2,X2. ❪G,L❫ ⊢ T2 :[h,a] X2 →
       ∀b,f,K. ⇩*[b,f] L ≘ K → ∀T1. ⇧*[f] T1 ≘ T2 →
index ac57ad07477b08a41d527f41eed9e8182393152f..c2bcbd4bd49fc08f7617301ff8cc38c0389a2175 100644 (file)
@@ -21,14 +21,14 @@ include "basic_2/dynamic/nta_preserve.ma".
 
 (* Basic_1: uses: ty3_tred *)
 lemma nta_cprs_trans (h) (a) (G) (L):
-      ∀T,U1. ❪G,L❫ ⊢ T :[h,a] U1 → ∀U2. ❪G,L❫ ⊢ U1 ➡*[h] U2 → ❪G,L❫ ⊢ T :[h,a] U2.
+      ∀T,U1. ❪G,L❫ ⊢ T :[h,a] U1 → ∀U2. ❪G,L❫ ⊢ U1 ➡*[h,0] U2 → ❪G,L❫ ⊢ T :[h,a] U2.
 #h #a #G #L #T #U1 #H #U2 #HU12
 /4 width=4 by nta_conv_cnv, nta_fwd_cnv_dx, cnv_cpms_trans, cpcs_cprs_dx/
 qed-.
 
 (* Basic_1: uses: ty3_sred_back *)
 lemma cprs_nta_trans (h) (a) (G) (L):
-      ∀T1,U0. ❪G,L❫ ⊢ T1 :[h,a] U0 → ∀T2. ❪G,L❫ ⊢ T1 ➡*[h] T2 →
+      ∀T1,U0. ❪G,L❫ ⊢ T1 :[h,a] U0 → ∀T2. ❪G,L❫ ⊢ T1 ➡*[h,0] T2 →
       ∀U. ❪G,L❫ ⊢ T2 :[h,a] U →  ❪G,L❫ ⊢ T1 :[h,a] U.
 #h #a #G #L #T1 #U0 #HT1 #T2 #HT12 #U #H
 lapply (nta_cprs_conf … HT1 … HT12) -HT12 #HT2
@@ -36,7 +36,7 @@ lapply (nta_cprs_conf … HT1 … HT12) -HT12 #HT2
 qed-.
 
 lemma cprs_nta_trans_cnv (h) (a) (G) (L):
-      ∀T1. ❪G,L❫ ⊢ T1 ![h,a] → ∀T2. ❪G,L❫ ⊢ T1 ➡*[h] T2 →
+      ∀T1. ❪G,L❫ ⊢ T1 ![h,a] → ∀T2. ❪G,L❫ ⊢ T1 ➡*[h,0] T2 →
       ∀U. ❪G,L❫ ⊢ T2 :[h,a] U → ❪G,L❫ ⊢ T1 :[h,a] U.
 #h #a #G #L #T1 #HT1 #T2 #HT12 #U #H
 elim (cnv_nta_sn … HT1) -HT1 #U0 #HT1
index 7f74c5f063971899044f2ae726f2fef2c4f3002c..8db13303581a45042b68cb06a76d4bab24265ad6 100644 (file)
@@ -18,7 +18,7 @@ include "basic_2/dynamic/cnv.ma".
 (* ITERATED NATIVE TYPE ASSIGNMENT FOR TERMS ********************************)
 
 definition ntas (h) (a) (n) (G) (L): relation term ≝ λT,U.
-           ∃∃U0. ❪G,L❫ ⊢ U ![h,a] & ❪G,L❫ ⊢ T ![h,a] & ❪G,L❫ ⊢ U ➡*[h] U0 & ❪G,L❫ ⊢ T ➡*[n,h] U0.
+           ∃∃U0. ❪G,L❫ ⊢ U ![h,a] & ❪G,L❫ ⊢ T ![h,a] & ❪G,L❫ ⊢ U ➡*[h,0] U0 & ❪G,L❫ ⊢ T ➡*[h,n] U0.
 
 interpretation "iterated native type assignment (term)"
    'ColonStar h a n G L T U = (ntas h a n G L T U).
@@ -27,7 +27,7 @@ interpretation "iterated native type assignment (term)"
 
 lemma ntas_intro (h) (a) (n) (G) (L):
       ∀U. ❪G,L❫ ⊢ U ![h,a] → ∀T. ❪G,L❫ ⊢ T ![h,a] →
-      ∀U0. ❪G,L❫ ⊢ U ➡*[h] U0 → ❪G,L❫ ⊢ T ➡*[n,h] U0 → ❪G,L❫ ⊢ T :*[h,a,n] U.
+      ∀U0. ❪G,L❫ ⊢ U ➡*[h,0] U0 → ❪G,L❫ ⊢ T ➡*[h,n] U0 → ❪G,L❫ ⊢ T :*[h,a,n] U.
 /2 width=3 by ex4_intro/ qed.
 
 lemma ntas_refl (h) (a) (G) (L):
index b8759a27d6794d7ec762ca921cbf8892e9446693..3534f0cba9b35e2c009ea199ebc190c1215a3033 100644 (file)
@@ -22,7 +22,7 @@ include "basic_2/i_dynamic/ntas.ma".
 (* Properties based on preservation *****************************************)
 
 lemma cnv_cpms_ntas (h) (a) (G) (L):
-      ∀T. ❪G,L❫ ⊢ T ![h,a] → ∀n,U.❪G,L❫ ⊢ T ➡*[n,h] U → ❪G,L❫ ⊢ T :*[h,a,n] U.
+      ∀T. ❪G,L❫ ⊢ T ![h,a] → ∀n,U.❪G,L❫ ⊢ T ➡*[h,n] U → ❪G,L❫ ⊢ T :*[h,a,n] U.
 /3 width=4 by ntas_intro, cnv_cpms_trans/ qed.
 
 (* Inversion lemmas based on preservation ***********************************)
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/pred_5.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/pred_5.ma
deleted file mode 100644 (file)
index fee450e..0000000
+++ /dev/null
@@ -1,19 +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                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-(* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************)
-
-notation "hvbox( ❪ term 46 G, break term 46 L ❫ ⊢ break term 46 T1 ➡[ break term 46 h ] break term 46 T2 )"
-   non associative with precedence 45
-   for @{ 'PRed $h $G $L $T1 $T2 }.
index 68fca9adc58150eaae31e68cc724bca5fc642bbc..6182b20adad4dfdda388cf8ef90f01ef70e69b1b 100644 (file)
@@ -14,6 +14,6 @@
 
 (* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************)
 
-notation "hvbox( ❪ term 46 G, break term 46 L ❫ ⊢ break term 46 T1 ➡[ break term 46 n, break term 46 h ] break term 46 T2 )"
+notation "hvbox( ❪ term 46 G, break term 46 L ❫ ⊢ break term 46 T1 ➡[ break term 46 h, break term 46 n ] break term 46 T2 )"
    non associative with precedence 45
-   for @{ 'PRed $n $h $G $L $T1 $T2 }.
+   for @{ 'PRed $h $n $G $L $T1 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predeval_5.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predeval_5.ma
deleted file mode 100644 (file)
index 8916d49..0000000
+++ /dev/null
@@ -1,19 +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                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-(* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************)
-
-notation "hvbox( ❪ term 46 G, break term 46 L ❫ ⊢ break term 46 T1 ➡*[ break term 46 h ] 𝐍❪ break term 46 T2 ❫ )"
-   non associative with precedence 45
-   for @{ 'PRedEval $h $G $L $T1 $T2 }.
index 706bc5f33e7e459569624948eaa69a33bfb3a73a..55108c080143cde0bd1818804a2805fb30d94d5f 100644 (file)
@@ -14,6 +14,6 @@
 
 (* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************)
 
-notation "hvbox( ❪ term 46 G, break term 46 L ❫ ⊢ break term 46 T1 ➡*[ break term 46 h, break term 46 n ] 𝐍❪ break term 46 T2 ❫ )"
+notation "hvbox( ❪ term 46 G, break term 46 L ❫ ⊢ break term 46 T1 ➡*𝐍[ break term 46 h, break term 46 n ] break term 46 T2 )"
    non associative with precedence 45
    for @{ 'PRedEval $h $n $G $L $T1 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/prednormal_4.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/prednormal_4.ma
deleted file mode 100644 (file)
index d8c5d15..0000000
+++ /dev/null
@@ -1,19 +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                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-(* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************)
-
-notation "hvbox( ❪ term 46 G, break term 46 L ❫ ⊢ ➡[ break term 46 h ] 𝐍❪ break term 46 T ❫ )"
-   non associative with precedence 45
-   for @{ 'PRedNormal $h $G $L $T }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/prednormal_5.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/prednormal_5.ma
new file mode 100644 (file)
index 0000000..8994551
--- /dev/null
@@ -0,0 +1,19 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************)
+
+notation "hvbox( ❪ term 46 G, break term 46 L ❫ ⊢ ➡𝐍[ break term 46 h, break term 46 n ] break term 46 T )"
+   non associative with precedence 45
+   for @{ 'PRedNormal $h $n $G $L $T }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsn_4.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsn_4.ma
deleted file mode 100644 (file)
index eb946ac..0000000
+++ /dev/null
@@ -1,19 +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                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-(* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************)
-
-notation "hvbox( ❪ term 46 G, break term 46 L1 ❫ ⊢ ➡[ break term 46 h ] break term 46 L2 )"
-   non associative with precedence 45
-   for @{ 'PRedSn $h $G $L1 $L2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsn_5.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsn_5.ma
new file mode 100644 (file)
index 0000000..9e588e5
--- /dev/null
@@ -0,0 +1,19 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************)
+
+notation "hvbox( ❪ term 46 G, break term 46 L1 ❫ ⊢ ➡[ break term 46 h, break term 46 n ] break term 46 L2 )"
+   non associative with precedence 45
+   for @{ 'PRedSn $h $n $G $L1 $L2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsnstar_4.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsnstar_4.ma
deleted file mode 100644 (file)
index 52626f2..0000000
+++ /dev/null
@@ -1,19 +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                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-(* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************)
-
-notation "hvbox( ❪ term 46 G, break term 46 L1 ❫ ⊢ ➡*[ break term 46 h ] break term 46 L2 )"
-   non associative with precedence 45
-   for @{ 'PRedSnStar $h $G $L1 $L2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsnstar_5.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsnstar_5.ma
new file mode 100644 (file)
index 0000000..8827cea
--- /dev/null
@@ -0,0 +1,19 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************)
+
+notation "hvbox( ❪ term 46 G, break term 46 L1 ❫ ⊢ ➡*[ break term 46 h, break term 46 n ] break term 46 L2 )"
+   non associative with precedence 45
+   for @{ 'PRedSnStar $h $n $G $L1 $L2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predstar_5.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predstar_5.ma
deleted file mode 100644 (file)
index b03dd68..0000000
+++ /dev/null
@@ -1,19 +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                  *)
-(*                                                                        *)
-(**************************************************************************)
-
-(* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************)
-
-notation "hvbox( ❪ term 46 G, break term 46 L ❫ ⊢ break term 46 T1 ➡*[ break term 46 h ] break term 46 T2 )"
-   non associative with precedence 45
-   for @{ 'PRedStar $h $G $L $T1 $T2 }.
index e0055d08f392fe97b2d59ba5bef33cbf131f5a82..36958bed91225045901a4fae5746f382542cabbc 100644 (file)
@@ -14,6 +14,6 @@
 
 (* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************)
 
-notation "hvbox( ❪ term 46 G, break term 46 L ❫ ⊢ break term 46 T1 ➡*[ break term 46 n, break term 46 h ] break term 46 T2 )"
+notation "hvbox( ❪ term 46 G, break term 46 L ❫ ⊢ break term 46 T1 ➡*[ break term 46 h, break term 46 n ] break term 46 T2 )"
    non associative with precedence 45
-   for @{ 'PRedStar $n $h $G $L $T1 $T2 }.
+   for @{ 'PRedStar $h $n $G $L $T1 $T2 }.
index a02ea47dfaf53b0a36d0f2abb8b15cffabbe65fa..b47d310e8c692ba3c767f502c72e52a1e39758fb 100644 (file)
@@ -19,7 +19,7 @@ include "basic_2/rt_computation/cpms.ma".
 (* NORMAL TERMS FOR T-UNUNBOUND WHD RT-TRANSITION ***************************)
 
 definition cnuw (h) (G) (L): predicate term ≝
-           λT1. ∀n,T2. ❪G,L❫ ⊢ T1 ➡*[n,h] T2 → T1 ≅ T2.
+           λT1. ∀n,T2. ❪G,L❫ ⊢ T1 ➡*[h,n] T2 → T1 ≅ T2.
 
 interpretation
   "normality for t-unbound weak head context-sensitive parallel rt-transition (term)"
index 76c7cb96405c3224c8aac217b8c57b613e1d394a..1cc52dc0e7ba20bd06aedd8004c9b37361382bdb 100644 (file)
@@ -46,14 +46,14 @@ qed.
 
 lemma cnuw_cpms_trans (h) (n) (G) (L):
       ∀T1. ❪G,L❫ ⊢ ➡𝐍𝐖*[h] T1 →
-      ∀T2. ❪G,L❫ ⊢ T1 ➡*[n,h] T2 → ❪G,L❫ ⊢ ➡𝐍𝐖*[h] T2.
+      ∀T2. ❪G,L❫ ⊢ T1 ➡*[h,n] T2 → ❪G,L❫ ⊢ ➡𝐍𝐖*[h] T2.
 #h #n1 #G #L #T1 #HT1 #T2 #HT12 #n2 #T3 #HT23
 /4 width=5 by cpms_trans, tweq_canc_sn/
 qed-.
 
 lemma cnuw_dec_ex (h) (G) (L):
       ∀T1. ∨∨ ❪G,L❫ ⊢ ➡𝐍𝐖*[h] T1
-            | ∃∃n,T2. ❪G,L❫ ⊢ T1 ➡*[n,h] T2 & (T1 ≅ T2 → ⊥).
+            | ∃∃n,T2. ❪G,L❫ ⊢ T1 ➡*[h,n] T2 & (T1 ≅ T2 → ⊥).
 #h #G #L #T1 elim T1 -T1 *
 [ #s /3 width=5 by cnuw_sort, or_introl/
 | #i elim (drops_F_uni L i)
index 229477f8285014d5dccfb94f7f085e3d44902b4f..87f0b5d5224665d38eec1ea113511cf7db946024 100644 (file)
@@ -18,9 +18,9 @@ include "basic_2/rt_computation/cpms.ma".
 
 (* EVALUATION FOR T-BOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION ON TERMS *)
 
-(* Basic_2A1: uses: cprre *)
+(* Basic_2A1: uses: cpre *)
 definition cpmre (h) (n) (G) (L): relation2 term term ≝
-           λT1,T2. ∧∧ ❪G,L❫ ⊢ T1 ➡*[n,h] T2 & ❪G,L❫ ⊢ ➡[h] 𝐍❪T2❫.
+           λT1,T2. ∧∧ ❪G,L❫ ⊢ T1 ➡*[h,n] T2 & ❪G,L❫ ⊢ ➡𝐍[h,0] T2.
 
 interpretation "evaluation for t-bound context-sensitive parallel rt-transition (term)"
    'PRedEval h n G L T1 T2 = (cpmre h n G L T1 T2).
@@ -28,12 +28,12 @@ interpretation "evaluation for t-bound context-sensitive parallel rt-transition
 (* Basic properties *********************************************************)
 
 lemma cpmre_intro (h) (n) (G) (L):
-      ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[n,h] T2 → ❪G,L❫ ⊢ ➡[h] 𝐍❪T2❫ → ❪G,L❫⊢T1➡*[h,n]𝐍❪T2❫.
+      ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[h,n] T2 → ❪G,L❫ ⊢ ➡𝐍[h,0] T2 → ❪G,L❫ ⊢ T1 ➡*𝐍[h,n] T2.
 /2 width=1 by conj/ qed.
 
 (* Basic forward lemmas *****************************************************)
 
 lemma cpmre_fwd_cpms (h) (n) (G) (L):
-      ∀T1,T2. ❪G,L❫⊢T1➡*[h,n]𝐍❪T2❫ → ❪G,L❫ ⊢ T1 ➡*[n,h] T2.
+      ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*𝐍[h,n] T2 → ❪G,L❫ ⊢ T1 ➡*[h,n] T2.
 #h #n #G #L #T1 #T2 * //
 qed-.
index 0c695ceff1dc6a297874ce9b91bc1a2c9157aa82..3f3cf8bffc23ea37ca288739c9f603e093116329 100644 (file)
@@ -22,7 +22,7 @@ include "basic_2/rt_computation/cprre_cpms.ma".
 (* Properties with atomic atomic arity assignment on terms ******************)
 
 lemma cpmre_total_aaa (h) (n) (A) (G) (L):
-      ∀T1. ❪G,L❫ ⊢ T1 ⁝ A → ∃T2. ❪G,L❫ ⊢ T1 ➡*[h,n] 𝐍❪T2❫.
+      ∀T1. ❪G,L❫ ⊢ T1 ⁝ A → ∃T2. ❪G,L❫ ⊢ T1 ➡*𝐍[h,n] T2.
 #h #n #A #G #L #T1 #HT1
 elim (cpms_total_aaa h … n … HT1) #T0 #HT10
 elim (cprre_total_csx h G L T0)
index c5f0126aaeb96dbc152d55a91c6014a19ef3ab6a..6901f767ba3dd94d9e255f8de8becdd18150d2a3 100644 (file)
 
 include "ground_2/lib/ltc.ma".
 include "basic_2/notation/relations/predstar_6.ma".
-include "basic_2/notation/relations/predstar_5.ma".
 include "basic_2/rt_transition/cpm.ma".
 
 (* T-BOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
 
 (* Basic_2A1: uses: scpds *)
 definition cpms (h) (G) (L): relation3 nat term term ≝
-                             ltc … plus … (cpm h G L).
+           ltc … plus … (cpm h G L).
 
 interpretation
    "t-bound context-sensitive parallel rt-computarion (term)"
-   'PRedStar n h G L T1 T2 = (cpms h G L n T1 T2).
-
-interpretation
-   "context-sensitive parallel r-computation (term)"
-   'PRedStar h G L T1 T2 = (cpms h G L O T1 T2).
+   'PRedStar h n G L T1 T2 = (cpms h G L n T1 T2).
 
 (* Basic eliminators ********************************************************)
 
 lemma cpms_ind_sn (h) (G) (L) (T2) (Q:relation2 …):
-                  Q 0 T2 →
-                  (∀n1,n2,T1,T. ❪G,L❫ ⊢ T1 ➡[n1,h] T → ❪G,L❫ ⊢ T ➡*[n2,h] T2 → Q n2 T → Q (n1+n2) T1) →
-                  ∀n,T1. ❪G,L❫ ⊢ T1 ➡*[n,h] T2 → Q n T1.
+      Q 0 T2 →
+      (∀n1,n2,T1,T. ❪G,L❫ ⊢ T1 ➡[h,n1] T → ❪G,L❫ ⊢ T ➡*[h,n2] T2 → Q n2 T → Q (n1+n2) T1) →
+      ∀n,T1. ❪G,L❫ ⊢ T1 ➡*[h,n] T2 → Q n T1.
 #h #G #L #T2 #Q @ltc_ind_sn_refl //
 qed-.
 
 lemma cpms_ind_dx (h) (G) (L) (T1) (Q:relation2 …):
-                  Q 0 T1 →
-                  (∀n1,n2,T,T2. ❪G,L❫ ⊢ T1 ➡*[n1,h] T → Q n1 T → ❪G,L❫ ⊢ T ➡[n2,h] T2 → Q (n1+n2) T2) →
-                  ∀n,T2. ❪G,L❫ ⊢ T1 ➡*[n,h] T2 → Q n T2.
+      Q 0 T1 →
+      (∀n1,n2,T,T2. ❪G,L❫ ⊢ T1 ➡*[h,n1] T → Q n1 T → ❪G,L❫ ⊢ T ➡[h,n2] T2 → Q (n1+n2) T2) →
+      ∀n,T2. ❪G,L❫ ⊢ T1 ➡*[h,n] T2 → Q n T2.
 #h #G #L #T1 #Q @ltc_ind_dx_refl //
 qed-.
 
@@ -52,60 +47,63 @@ qed-.
 (* Basic_1: includes: pr1_pr0 *)
 (* Basic_1: uses: pr3_pr2 *)
 (* Basic_2A1: includes: cpr_cprs *)
-lemma cpm_cpms (h) (G) (L): ∀n,T1,T2. ❪G,L❫ ⊢ T1 ➡[n,h] T2 → ❪G,L❫ ⊢ T1 ➡*[n,h] T2.
+lemma cpm_cpms (h) (G) (L):
+      ∀n,T1,T2. ❪G,L❫ ⊢ T1 ➡[h,n] T2 → ❪G,L❫ ⊢ T1 ➡*[h,n] T2.
 /2 width=1 by ltc_rc/ qed.
 
-lemma cpms_step_sn (h) (G) (L): ∀n1,T1,T. ❪G,L❫ ⊢ T1 ➡[n1,h] T →
-                                ∀n2,T2. ❪G,L❫ ⊢ T ➡*[n2,h] T2 → ❪G,L❫ ⊢ T1 ➡*[n1+n2,h] T2.
+lemma cpms_step_sn (h) (G) (L):
+      ∀n1,T1,T. ❪G,L❫ ⊢ T1 ➡[h,n1] T →
+      ∀n2,T2. ❪G,L❫ ⊢ T ➡*[h,n2] T2 → ❪G,L❫ ⊢ T1 ➡*[h,n1+n2] T2.
 /2 width=3 by ltc_sn/ qed-.
 
-lemma cpms_step_dx (h) (G) (L): ∀n1,T1,T. ❪G,L❫ ⊢ T1 ➡*[n1,h] T →
-                                ∀n2,T2. ❪G,L❫ ⊢ T ➡[n2,h] T2 → ❪G,L❫ ⊢ T1 ➡*[n1+n2,h] T2.
+lemma cpms_step_dx (h) (G) (L):
+      ∀n1,T1,T. ❪G,L❫ ⊢ T1 ➡*[h,n1] T →
+      ∀n2,T2. ❪G,L❫ ⊢ T ➡[h,n2] T2 → ❪G,L❫ ⊢ T1 ➡*[h,n1+n2] T2.
 /2 width=3 by ltc_dx/ qed-.
 
 (* Basic_2A1: uses: cprs_bind_dx *)
-lemma cpms_bind_dx (n) (h) (G) (L):
-                   ∀V1,V2. ❪G,L❫ ⊢ V1 ➡[h] V2 →
-                   ∀I,T1,T2. ❪G,L.ⓑ[I]V1❫ ⊢ T1 ➡*[n,h] T2 →
-                   ∀p. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ➡*[n,h] ⓑ[p,I]V2.T2.
-#n #h #G #L #V1 #V2 #HV12 #I #T1 #T2 #H #a @(cpms_ind_sn … H) -T1
+lemma cpms_bind_dx (h) (n) (G) (L):
+      ∀V1,V2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 →
+      ∀I,T1,T2. ❪G,L.ⓑ[I]V1❫ ⊢ T1 ➡*[h,n] T2 →
+      ∀p. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ➡*[h,n] ⓑ[p,I]V2.T2.
+#h #n #G #L #V1 #V2 #HV12 #I #T1 #T2 #H #a @(cpms_ind_sn … H) -T1
 /3 width=3 by cpms_step_sn, cpm_cpms, cpm_bind/ qed.
 
-lemma cpms_appl_dx (n) (h) (G) (L):
-                   ∀V1,V2. ❪G,L❫ ⊢ V1 ➡[h] V2 →
-                   ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[n,h] T2 →
-                   ❪G,L❫ ⊢ ⓐV1.T1 ➡*[n,h] ⓐV2.T2.
-#n #h #G #L #V1 #V2 #HV12 #T1 #T2 #H @(cpms_ind_sn … H) -T1
+lemma cpms_appl_dx (h) (n) (G) (L):
+      ∀V1,V2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 →
+      ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[h,n] T2 →
+      ❪G,L❫ ⊢ ⓐV1.T1 ➡*[h,n] ⓐV2.T2.
+#h #n #G #L #V1 #V2 #HV12 #T1 #T2 #H @(cpms_ind_sn … H) -T1
 /3 width=3 by cpms_step_sn, cpm_cpms, cpm_appl/
 qed.
 
-lemma cpms_zeta (n) (h) (G) (L):
-                ∀T1,T. ⇧[1] T ≘ T1 →
-                ∀V,T2. ❪G,L❫ ⊢ T ➡*[n,h] T2 → ❪G,L❫ ⊢ +ⓓV.T1 ➡*[n,h] T2.
-#n #h #G #L #T1 #T #HT1 #V #T2 #H @(cpms_ind_dx … H) -T2
+lemma cpms_zeta (h) (n) (G) (L):
+      ∀T1,T. ⇧[1] T ≘ T1 →
+      ∀V,T2. ❪G,L❫ ⊢ T ➡*[h,n] T2 → ❪G,L❫ ⊢ +ⓓV.T1 ➡*[h,n] T2.
+#h #n #G #L #T1 #T #HT1 #V #T2 #H @(cpms_ind_dx … H) -T2
 /3 width=3 by cpms_step_dx, cpm_cpms, cpm_zeta/
 qed.
 
 (* Basic_2A1: uses: cprs_zeta *)
-lemma cpms_zeta_dx (n) (h) (G) (L):
-                   ∀T2,T. ⇧[1] T2 ≘ T →
-                   ∀V,T1. ❪G,L.ⓓV❫ ⊢ T1 ➡*[n,h] T → ❪G,L❫ ⊢ +ⓓV.T1 ➡*[n,h] T2.
-#n #h #G #L #T2 #T #HT2 #V #T1 #H @(cpms_ind_sn … H) -T1
+lemma cpms_zeta_dx (h) (n) (G) (L):
+      ∀T2,T. ⇧[1] T2 ≘ T →
+      ∀V,T1. ❪G,L.ⓓV❫ ⊢ T1 ➡*[h,n] T → ❪G,L❫ ⊢ +ⓓV.T1 ➡*[h,n] T2.
+#h #n #G #L #T2 #T #HT2 #V #T1 #H @(cpms_ind_sn … H) -T1
 /3 width=3 by cpms_step_sn, cpm_cpms, cpm_bind, cpm_zeta/
 qed.
 
 (* Basic_2A1: uses: cprs_eps *)
-lemma cpms_eps (n) (h) (G) (L):
-               ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[n,h] T2 →
-               ∀V. ❪G,L❫ ⊢ ⓝV.T1 ➡*[n,h] T2.
-#n #h #G #L #T1 #T2 #H @(cpms_ind_sn … H) -T1
+lemma cpms_eps (h) (n) (G) (L):
+      ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[h,n] T2 →
+      ∀V. ❪G,L❫ ⊢ ⓝV.T1 ➡*[h,n] T2.
+#h #n #G #L #T1 #T2 #H @(cpms_ind_sn … H) -T1
 /3 width=3 by cpms_step_sn, cpm_cpms, cpm_eps/
 qed.
 
-lemma cpms_ee (n) (h) (G) (L):
-              ∀U1,U2. ❪G,L❫ ⊢ U1 ➡*[n,h] U2 →
-              ∀T. ❪G,L❫ ⊢ ⓝU1.T ➡*[↑n,h] U2.
-#n #h #G #L #U1 #U2 #H @(cpms_ind_sn … H) -U1 -n
+lemma cpms_ee (h) (n) (G) (L):
+      ∀U1,U2. ❪G,L❫ ⊢ U1 ➡*[h,n] U2 →
+      ∀T. ❪G,L❫ ⊢ ⓝU1.T ➡*[h,↑n] U2.
+#h #n #G #L #U1 #U2 #H @(cpms_ind_sn … H) -U1 -n
 [ /3 width=1 by cpm_cpms, cpm_ee/
 | #n1 #n2 #U1 #U #HU1 #HU2 #_ #T >plus_S1
   /3 width=3 by cpms_step_sn, cpm_ee/
@@ -113,36 +111,37 @@ lemma cpms_ee (n) (h) (G) (L):
 qed.
 
 (* Basic_2A1: uses: cprs_beta_dx *)
-lemma cpms_beta_dx (n) (h) (G) (L):
-                   ∀V1,V2. ❪G,L❫ ⊢ V1 ➡[h] V2 →
-                   ∀W1,W2. ❪G,L❫ ⊢ W1 ➡[h] W2 →
-                   ∀T1,T2. ❪G,L.ⓛW1❫ ⊢ T1 ➡*[n,h] T2 →
-                   ∀p. ❪G,L❫ ⊢ ⓐV1.ⓛ[p]W1.T1 ➡*[n,h] ⓓ[p]ⓝW2.V2.T2.
-#n #h #G #L #V1 #V2 #HV12 #W1 #W2 #HW12 #T1 #T2 #H @(cpms_ind_dx … H) -T2
+lemma cpms_beta_dx (h) (n) (G) (L):
+      ∀V1,V2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 →
+      ∀W1,W2. ❪G,L❫ ⊢ W1 ➡[h,0] W2 →
+      ∀T1,T2. ❪G,L.ⓛW1❫ ⊢ T1 ➡*[h,n] T2 →
+      ∀p. ❪G,L❫ ⊢ ⓐV1.ⓛ[p]W1.T1 ➡*[h,n] ⓓ[p]ⓝW2.V2.T2.
+#h #n #G #L #V1 #V2 #HV12 #W1 #W2 #HW12 #T1 #T2 #H @(cpms_ind_dx … H) -T2
 /4 width=7 by cpms_step_dx, cpm_cpms, cpms_bind_dx, cpms_appl_dx, cpm_beta/
 qed.
 
 (* Basic_2A1: uses: cprs_theta_dx *)
-lemma cpms_theta_dx (n) (h) (G) (L):
-                    ∀V1,V. ❪G,L❫ ⊢ V1 ➡[h] V →
-                    ∀V2. ⇧[1] V ≘ V2 →
-                    ∀W1,W2. ❪G,L❫ ⊢ W1 ➡[h] W2 →
-                    ∀T1,T2. ❪G,L.ⓓW1❫ ⊢ T1 ➡*[n,h] T2 →
-                    ∀p. ❪G,L❫ ⊢ ⓐV1.ⓓ[p]W1.T1 ➡*[n,h] ⓓ[p]W2.ⓐV2.T2.
-#n #h #G #L #V1 #V #HV1 #V2 #HV2 #W1 #W2 #HW12 #T1 #T2 #H @(cpms_ind_dx … H) -T2
+lemma cpms_theta_dx (h) (n) (G) (L):
+      ∀V1,V. ❪G,L❫ ⊢ V1 ➡[h,0] V →
+      ∀V2. ⇧[1] V ≘ V2 →
+      ∀W1,W2. ❪G,L❫ ⊢ W1 ➡[h,0] W2 →
+      ∀T1,T2. ❪G,L.ⓓW1❫ ⊢ T1 ➡*[h,n] T2 →
+      ∀p. ❪G,L❫ ⊢ ⓐV1.ⓓ[p]W1.T1 ➡*[h,n] ⓓ[p]W2.ⓐV2.T2.
+#h #n #G #L #V1 #V #HV1 #V2 #HV2 #W1 #W2 #HW12 #T1 #T2 #H @(cpms_ind_dx … H) -T2
 /4 width=9 by cpms_step_dx, cpm_cpms, cpms_bind_dx, cpms_appl_dx, cpm_theta/
 qed.
 
 (* Basic properties with r-transition ***************************************)
 
 (* Basic_1: was: pr3_refl *)
-lemma cprs_refl: ∀h,G,L. reflexive … (cpms h G L 0).
+lemma cprs_refl (h) (G) (L):
+      reflexive … (cpms h G L 0).
 /2 width=1 by cpm_cpms/ qed.
 
 (* Advanced properties ******************************************************)
 
-lemma cpms_sort (h) (G) (L) (n):
-                ∀s. ❪G,L❫ ⊢ ⋆s ➡*[n,h] ⋆((next h)^n s).
+lemma cpms_sort (h) (G) (L):
+      ∀n,s. ❪G,L❫ ⊢ ⋆s ➡*[h,n] ⋆((next h)^n s).
 #h #G #L #n elim n -n [ // ]
 #n #IH #s <plus_SO_dx
 /3 width=3 by cpms_step_dx, cpm_sort/
@@ -150,15 +149,16 @@ qed.
 
 (* Basic inversion lemmas ***************************************************)
 
-lemma cpms_inv_sort1 (n) (h) (G) (L): ∀X2,s. ❪G,L❫ ⊢ ⋆s ➡*[n,h] X2 → X2 = ⋆(((next h)^n) s).
-#n #h #G #L #X2 #s #H @(cpms_ind_dx … H) -X2 //
+lemma cpms_inv_sort1 (h) (n) (G) (L):
+      ∀X2,s. ❪G,L❫ ⊢ ⋆s ➡*[h,n] X2 → X2 = ⋆(((next h)^n) s).
+#h #n #G #L #X2 #s #H @(cpms_ind_dx … H) -X2 //
 #n1 #n2 #X #X2 #_ #IH #HX2 destruct
 elim (cpm_inv_sort1 … HX2) -HX2 #H #_ destruct //
 qed-.
 
-lemma cpms_inv_lref1_ctop (n) (h) (G):
-      ∀X2,i. ❪G,⋆❫ ⊢ #i ➡*[n,h] X2 → ∧∧ X2 = #i & n = 0.
-#n #h #G #X2 #i #H @(cpms_ind_dx … H) -X2
+lemma cpms_inv_lref1_ctop (h) (n) (G):
+      ∀X2,i. ❪G,⋆❫ ⊢ #i ➡*[h,n] X2 → ∧∧ X2 = #i & n = 0.
+#h #n #G #X2 #i #H @(cpms_ind_dx … H) -X2
 [ /2 width=1 by conj/
 | #n1 #n2 #X #X2 #_ * #HX #Hn1 #HX2 destruct
   elim (cpm_inv_lref1_ctop … HX2) -HX2 #H1 #H2 destruct
@@ -166,9 +166,9 @@ lemma cpms_inv_lref1_ctop (n) (h) (G):
 ]
 qed-.
 
-lemma cpms_inv_zero1_unit (n) (h) (I) (K) (G):
-      ∀X2. ❪G,K.ⓤ[I]❫ ⊢ #0 ➡*[n,h] X2 → ∧∧ X2 = #0 & n = 0.
-#n #h #I #G #K #X2 #H @(cpms_ind_dx … H) -X2
+lemma cpms_inv_zero1_unit (h) (n) (I) (K) (G):
+      ∀X2. ❪G,K.ⓤ[I]❫ ⊢ #0 ➡*[h,n] X2 → ∧∧ X2 = #0 & n = 0.
+#h #n #I #G #K #X2 #H @(cpms_ind_dx … H) -X2
 [ /2 width=1 by conj/
 | #n1 #n2 #X #X2 #_ * #HX #Hn1 #HX2 destruct
   elim (cpm_inv_zero1_unit … HX2) -HX2 #H1 #H2 destruct
@@ -176,9 +176,9 @@ lemma cpms_inv_zero1_unit (n) (h) (I) (K) (G):
 ]
 qed-.
 
-lemma cpms_inv_gref1 (n) (h) (G) (L):
-      ∀X2,l. ❪G,L❫ ⊢ §l ➡*[n,h] X2 → ∧∧ X2 = §l & n = 0.
-#n #h #G #L #X2 #l #H @(cpms_ind_dx … H) -X2
+lemma cpms_inv_gref1 (h) (n) (G) (L):
+      ∀X2,l. ❪G,L❫ ⊢ §l ➡*[h,n] X2 → ∧∧ X2 = §l & n = 0.
+#h #n #G #L #X2 #l #H @(cpms_ind_dx … H) -X2
 [ /2 width=1 by conj/
 | #n1 #n2 #X #X2 #_ * #HX #Hn1 #HX2 destruct
   elim (cpm_inv_gref1 … HX2) -HX2 #H1 #H2 destruct
@@ -187,10 +187,10 @@ lemma cpms_inv_gref1 (n) (h) (G) (L):
 qed-.
 
 lemma cpms_inv_cast1 (h) (n) (G) (L):
-      ∀W1,T1,X2. ❪G,L❫ ⊢ ⓝW1.T1 ➡*[n,h] X2 →
-      ∨∨ ∃∃W2,T2. ❪G,L❫ ⊢ W1 ➡*[n,h] W2 & ❪G,L❫ ⊢ T1 ➡*[n,h] T2 & X2 = ⓝW2.T2
-       | ❪G,L❫ ⊢ T1 ➡*[n,h] X2
-       | ∃∃m. ❪G,L❫ ⊢ W1 ➡*[m,h] X2 & n = ↑m.
+      ∀W1,T1,X2. ❪G,L❫ ⊢ ⓝW1.T1 ➡*[h,n] X2 →
+      ∨∨ ∃∃W2,T2. ❪G,L❫ ⊢ W1 ➡*[h,n] W2 & ❪G,L❫ ⊢ T1 ➡*[h,n] T2 & X2 = ⓝW2.T2
+       | ❪G,L❫ ⊢ T1 ➡*[h,n] X2
+       | ∃∃m. ❪G,L❫ ⊢ W1 ➡*[h,m] X2 & n = ↑m.
 #h #n #G #L #W1 #T1 #X2 #H @(cpms_ind_dx … H) -n -X2
 [ /3 width=5 by or3_intro0, ex3_2_intro/
 | #n1 #n2 #X #X2 #_ * [ * || * ]
index 752c4756f76cb2c105db4e545edff7c4a40e9c10..072446cf1845a0bf1729c5872409823de3741386 100644 (file)
@@ -27,7 +27,7 @@ lemma cpms_aaa_conf (h) (G) (L) (n): Conf3 … (aaa G L) (cpms h G L n).
 /3 width=5 by cpms_fwd_cpxs, cpxs_aaa_conf/ qed-.
 
 lemma cpms_total_aaa (h) (G) (L) (n) (A):
-      ∀T. ❪G,L❫ ⊢ T ⁝ A → ∃U. ❪G,L❫ ⊢ T ➡*[n,h] U.
+      ∀T. ❪G,L❫ ⊢ T ⁝ A → ∃U. ❪G,L❫ ⊢ T ➡*[h,n] U.
 #h #G #L #n elim n -n
 [ /2 width=3 by ex_intro/
 | #n #IH #A #T1 #HT1 <plus_SO_dx
@@ -40,8 +40,8 @@ qed-.
 
 lemma cpms_abst_dx_le_aaa (h) (G) (L) (T) (W) (p):
       ∀A. ❪G,L❫ ⊢ T ⁝ A →
-      ∀n1,U1. ❪G,L❫ ⊢ T ➡*[n1,h] ⓛ[p]W.U1 → ∀n2. n1 ≤ n2 →
-      ∃∃U2. ❪G,L❫ ⊢ T ➡*[n2,h] ⓛ[p]W.U2 & ❪G,L.ⓛW❫ ⊢ U1 ➡*[n2-n1,h] U2.
+      ∀n1,U1. ❪G,L❫ ⊢ T ➡*[h,n1] ⓛ[p]W.U1 → ∀n2. n1 ≤ n2 →
+      ∃∃U2. ❪G,L❫ ⊢ T ➡*[h,n2] ⓛ[p]W.U2 & ❪G,L.ⓛW❫ ⊢ U1 ➡*[h,n2-n1] U2.
 #h #G #L #T #W #p #A #HA #n1 #U1 #HTU1 #n2 #Hn12
 lapply (cpms_aaa_conf … HA … HTU1) -HA #HA
 elim (cpms_total_aaa h … (n2-n1) … HA) -HA #X #H
index e9c66826faee8fa611aa2e4b0a79e9346287b4ef..7c30116675486db53467efb50b449afbc20b4db1 100644 (file)
@@ -23,22 +23,22 @@ include "basic_2/rt_computation/cprs.ma".
 (* Main properties **********************************************************)
 
 (* Basic_2A1: includes: cprs_bind *)
-theorem cpms_bind (n) (h) (G) (L):
-                  ∀I,V1,T1,T2. ❪G,L.ⓑ[I]V1❫ ⊢ T1 ➡*[n,h] T2 →
-                  ∀V2. ❪G,L❫ ⊢ V1 ➡*[h] V2 →
-                  ∀p. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ➡*[n,h] ⓑ[p,I]V2.T2.
-#n #h #G #L #I #V1 #T1 #T2 #HT12 #V2 #H @(cprs_ind_dx … H) -V2
+theorem cpms_bind (h) (n) (G) (L):
+                  ∀I,V1,T1,T2. ❪G,L.ⓑ[I]V1❫ ⊢ T1 ➡*[h,n] T2 →
+                  ∀V2. ❪G,L❫ ⊢ V1 ➡*[h,0] V2 →
+                  ∀p. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ➡*[h,n] ⓑ[p,I]V2.T2.
+#h #n #G #L #I #V1 #T1 #T2 #HT12 #V2 #H @(cprs_ind_dx … H) -V2
 [ /2 width=1 by cpms_bind_dx/
 | #V #V2 #_ #HV2 #IH #p >(plus_n_O … n) -HT12
   /3 width=3 by cpr_pair_sn, cpms_step_dx/
 ]
 qed.
 
-theorem cpms_appl (n) (h) (G) (L):
-                  ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[n,h] T2 →
-                  ∀V1,V2. ❪G,L❫ ⊢ V1 ➡*[h] V2 →
-                  ❪G,L❫ ⊢ ⓐV1.T1 ➡*[n,h] ⓐV2.T2.
-#n #h #G #L #T1 #T2 #HT12 #V1 #V2 #H @(cprs_ind_dx … H) -V2
+theorem cpms_appl (h) (n) (G) (L):
+                  ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[h,n] T2 →
+                  ∀V1,V2. ❪G,L❫ ⊢ V1 ➡*[h,0] V2 →
+                  ❪G,L❫ ⊢ ⓐV1.T1 ➡*[h,n] ⓐV2.T2.
+#h #n #G #L #T1 #T2 #HT12 #V1 #V2 #H @(cprs_ind_dx … H) -V2
 [ /2 width=1 by cpms_appl_dx/
 | #V #V2 #_ #HV2 #IH >(plus_n_O … n) -HT12
   /3 width=3 by cpr_pair_sn, cpms_step_dx/
@@ -46,12 +46,12 @@ theorem cpms_appl (n) (h) (G) (L):
 qed.
 
 (* Basic_2A1: includes: cprs_beta_rc *)
-theorem cpms_beta_rc (n) (h) (G) (L):
-                     ∀V1,V2. ❪G,L❫ ⊢ V1 ➡[h] V2 →
-                     ∀W1,T1,T2. ❪G,L.ⓛW1❫ ⊢ T1 ➡*[n,h] T2 →
-                     ∀W2. ❪G,L❫ ⊢ W1 ➡*[h] W2 →
-                     ∀p. ❪G,L❫ ⊢ ⓐV1.ⓛ[p]W1.T1 ➡*[n,h] ⓓ[p]ⓝW2.V2.T2.
-#n #h #G #L #V1 #V2 #HV12 #W1 #T1 #T2 #HT12 #W2 #H @(cprs_ind_dx … H) -W2
+theorem cpms_beta_rc (h) (n) (G) (L):
+                     ∀V1,V2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 →
+                     ∀W1,T1,T2. ❪G,L.ⓛW1❫ ⊢ T1 ➡*[h,n] T2 →
+                     ∀W2. ❪G,L❫ ⊢ W1 ➡*[h,0] W2 →
+                     ∀p. ❪G,L❫ ⊢ ⓐV1.ⓛ[p]W1.T1 ➡*[h,n] ⓓ[p]ⓝW2.V2.T2.
+#h #n #G #L #V1 #V2 #HV12 #W1 #T1 #T2 #HT12 #W2 #H @(cprs_ind_dx … H) -W2
 [ /2 width=1 by cpms_beta_dx/
 | #W #W2 #_ #HW2 #IH #p >(plus_n_O … n) -HT12
   /4 width=3 by cpr_pair_sn, cpms_step_dx/
@@ -59,12 +59,12 @@ theorem cpms_beta_rc (n) (h) (G) (L):
 qed.
 
 (* Basic_2A1: includes: cprs_beta *)
-theorem cpms_beta (n) (h) (G) (L):
-                  ∀W1,T1,T2. ❪G,L.ⓛW1❫ ⊢ T1 ➡*[n,h] T2 →
-                  ∀W2. ❪G,L❫ ⊢ W1 ➡*[h] W2 →
-                  ∀V1,V2. ❪G,L❫ ⊢ V1 ➡*[h] V2 →
-                  ∀p. ❪G,L❫ ⊢ ⓐV1.ⓛ[p]W1.T1 ➡*[n,h] ⓓ[p]ⓝW2.V2.T2.
-#n #h #G #L #W1 #T1 #T2 #HT12 #W2 #HW12 #V1 #V2 #H @(cprs_ind_dx … H) -V2
+theorem cpms_beta (h) (n) (G) (L):
+                  ∀W1,T1,T2. ❪G,L.ⓛW1❫ ⊢ T1 ➡*[h,n] T2 →
+                  ∀W2. ❪G,L❫ ⊢ W1 ➡*[h,0] W2 →
+                  ∀V1,V2. ❪G,L❫ ⊢ V1 ➡*[h,0] V2 →
+                  ∀p. ❪G,L❫ ⊢ ⓐV1.ⓛ[p]W1.T1 ➡*[h,n] ⓓ[p]ⓝW2.V2.T2.
+#h #n #G #L #W1 #T1 #T2 #HT12 #W2 #HW12 #V1 #V2 #H @(cprs_ind_dx … H) -V2
 [ /2 width=1 by cpms_beta_rc/
 | #V #V2 #_ #HV2 #IH #p >(plus_n_O … n) -HT12
   /4 width=5 by cpms_step_dx, cpr_pair_sn, cpm_cast/
@@ -72,12 +72,12 @@ theorem cpms_beta (n) (h) (G) (L):
 qed.
 
 (* Basic_2A1: includes: cprs_theta_rc *)
-theorem cpms_theta_rc (n) (h) (G) (L):
-                      ∀V1,V. ❪G,L❫ ⊢ V1 ➡[h] V → ∀V2. ⇧[1] V ≘ V2 →
-                      ∀W1,T1,T2. ❪G,L.ⓓW1❫ ⊢ T1 ➡*[n,h] T2 →
-                      ∀W2. ❪G,L❫ ⊢ W1 ➡*[h] W2 →
-                      ∀p. ❪G,L❫ ⊢ ⓐV1.ⓓ[p]W1.T1 ➡*[n,h] ⓓ[p]W2.ⓐV2.T2.
-#n #h #G #L #V1 #V #HV1 #V2 #HV2 #W1 #T1 #T2 #HT12 #W2 #H @(cprs_ind_dx … H) -W2
+theorem cpms_theta_rc (h) (n) (G) (L):
+                      ∀V1,V. ❪G,L❫ ⊢ V1 ➡[h,0] V → ∀V2. ⇧[1] V ≘ V2 →
+                      ∀W1,T1,T2. ❪G,L.ⓓW1❫ ⊢ T1 ➡*[h,n] T2 →
+                      ∀W2. ❪G,L❫ ⊢ W1 ➡*[h,0] W2 →
+                      ∀p. ❪G,L❫ ⊢ ⓐV1.ⓓ[p]W1.T1 ➡*[h,n] ⓓ[p]W2.ⓐV2.T2.
+#h #n #G #L #V1 #V #HV1 #V2 #HV2 #W1 #T1 #T2 #HT12 #W2 #H @(cprs_ind_dx … H) -W2
 [ /2 width=3 by cpms_theta_dx/
 | #W #W2 #_ #HW2 #IH #p >(plus_n_O … n) -HT12
   /3 width=3 by cpr_pair_sn, cpms_step_dx/
@@ -85,12 +85,12 @@ theorem cpms_theta_rc (n) (h) (G) (L):
 qed.
 
 (* Basic_2A1: includes: cprs_theta *)
-theorem cpms_theta (n) (h) (G) (L):
-                   ∀V,V2. ⇧[1] V ≘ V2 → ∀W1,W2. ❪G,L❫ ⊢ W1 ➡*[h] W2 →
-                   ∀T1,T2. ❪G,L.ⓓW1❫ ⊢ T1 ➡*[n,h] T2 →
-                   ∀V1. ❪G,L❫ ⊢ V1 ➡*[h] V →
-                   ∀p. ❪G,L❫ ⊢ ⓐV1.ⓓ[p]W1.T1 ➡*[n,h] ⓓ[p]W2.ⓐV2.T2.
-#n #h #G #L #V #V2 #HV2 #W1 #W2 #HW12 #T1 #T2 #HT12 #V1 #H @(cprs_ind_sn … H) -V1
+theorem cpms_theta (h) (n) (G) (L):
+                   ∀V,V2. ⇧[1] V ≘ V2 → ∀W1,W2. ❪G,L❫ ⊢ W1 ➡*[h,0] W2 →
+                   ∀T1,T2. ❪G,L.ⓓW1❫ ⊢ T1 ➡*[h,n] T2 →
+                   ∀V1. ❪G,L❫ ⊢ V1 ➡*[h,0] V →
+                   ∀p. ❪G,L❫ ⊢ ⓐV1.ⓓ[p]W1.T1 ➡*[h,n] ⓓ[p]W2.ⓐV2.T2.
+#h #n #G #L #V #V2 #HV2 #W1 #W2 #HW12 #T1 #T2 #HT12 #V1 #H @(cprs_ind_sn … H) -V1
 [ /2 width=3 by cpms_theta_rc/
 | #V1 #V0 #HV10 #_ #IH #p >(plus_O_n … n) -HT12
   /3 width=3 by cpr_pair_sn, cpms_step_sn/
@@ -99,32 +99,25 @@ qed.
 
 (* Basic_2A1: uses: lstas_scpds_trans scpds_strap2 *)
 theorem cpms_trans (h) (G) (L):
-                   ∀n1,T1,T. ❪G,L❫ ⊢ T1 ➡*[n1,h] T →
-                   ∀n2,T2. ❪G,L❫ ⊢ T ➡*[n2,h] T2 → ❪G,L❫ ⊢ T1 ➡*[n1+n2,h] T2.
+        ∀n1,T1,T. ❪G,L❫ ⊢ T1 ➡*[h,n1] T →
+        ∀n2,T2. ❪G,L❫ ⊢ T ➡*[h,n2] T2 → ❪G,L❫ ⊢ T1 ➡*[h,n1+n2] T2.
 /2 width=3 by ltc_trans/ qed-.
 
 (* Basic_2A1: uses: scpds_cprs_trans *)
-theorem cpms_cprs_trans (n) (h) (G) (L):
-                        ∀T1,T. ❪G,L❫ ⊢ T1 ➡*[n,h] T →
-                        ∀T2. ❪G,L❫ ⊢ T ➡*[h] T2 → ❪G,L❫ ⊢ T1 ➡*[n,h] T2.
-#n #h #G #L #T1 #T #HT1 #T2 #HT2 >(plus_n_O … n)
+theorem cpms_cprs_trans (h) (n) (G) (L):
+                        ∀T1,T. ❪G,L❫ ⊢ T1 ➡*[h,n] T →
+                        ∀T2. ❪G,L❫ ⊢ T ➡*[h,0] T2 → ❪G,L❫ ⊢ T1 ➡*[h,n] T2.
+#h #n #G #L #T1 #T #HT1 #T2 #HT2 >(plus_n_O … n)
 /2 width=3 by cpms_trans/ qed-.
 
 (* Advanced inversion lemmas ************************************************)
 
-lemma cpms_inv_appl_sn (n) (h) (G) (L):
-                       ∀V1,T1,X2. ❪G,L❫ ⊢ ⓐV1.T1 ➡*[n,h] X2 →
-                       ∨∨ ∃∃V2,T2.
-                            ❪G,L❫ ⊢ V1 ➡*[h] V2 & ❪G,L❫ ⊢ T1 ➡*[n,h] T2 &
-                            X2 = ⓐV2.T2
-                        | ∃∃n1,n2,p,W,T.
-                            ❪G,L❫ ⊢ T1 ➡*[n1,h] ⓛ[p]W.T & ❪G,L❫ ⊢ ⓓ[p]ⓝW.V1.T ➡*[n2,h] X2 &
-                            n1 + n2 = n
-                        | ∃∃n1,n2,p,V0,V2,V,T.
-                            ❪G,L❫ ⊢ V1 ➡*[h] V0 & ⇧[1] V0 ≘ V2 &
-                            ❪G,L❫ ⊢ T1 ➡*[n1,h] ⓓ[p]V.T & ❪G,L❫ ⊢ ⓓ[p]V.ⓐV2.T ➡*[n2,h] X2 &
-                            n1 + n2 = n.
-#n #h #G #L #V1 #T1 #U2 #H
+lemma cpms_inv_appl_sn (h) (n) (G) (L):
+      ∀V1,T1,X2. ❪G,L❫ ⊢ ⓐV1.T1 ➡*[h,n] X2 →
+      ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡*[h,0] V2 & ❪G,L❫ ⊢ T1 ➡*[h,n] T2 & X2 = ⓐV2.T2
+       | ∃∃n1,n2,p,W,T. ❪G,L❫ ⊢ T1 ➡*[h,n1] ⓛ[p]W.T & ❪G,L❫ ⊢ ⓓ[p]ⓝW.V1.T ➡*[h,n2] X2 & n1 + n2 = n
+       | ∃∃n1,n2,p,V0,V2,V,T. ❪G,L❫ ⊢ V1 ➡*[h,0] V0 & ⇧[1] V0 ≘ V2 & ❪G,L❫ ⊢ T1 ➡*[h,n1] ⓓ[p]V.T & ❪G,L❫ ⊢ ⓓ[p]V.ⓐV2.T ➡*[h,n2] X2 & n1 + n2 = n.
+#h #n #G #L #V1 #T1 #U2 #H
 @(cpms_ind_dx … H) -U2 /3 width=5 by or3_intro0, ex3_2_intro/
 #n1 #n2 #U #U2 #_ * *
 [ #V0 #T0 #HV10 #HT10 #H #HU2 destruct
@@ -146,8 +139,9 @@ lemma cpms_inv_appl_sn (n) (h) (G) (L):
 ]
 qed-.
 
-lemma cpms_inv_plus (h) (G) (L): ∀n1,n2,T1,T2. ❪G,L❫ ⊢ T1 ➡*[n1+n2,h] T2 →
-                                 ∃∃T. ❪G,L❫ ⊢ T1 ➡*[n1,h] T & ❪G,L❫ ⊢ T ➡*[n2,h] T2.
+lemma cpms_inv_plus (h) (G) (L):
+      ∀n1,n2,T1,T2. ❪G,L❫ ⊢ T1 ➡*[h,n1+n2] T2 →
+      ∃∃T. ❪G,L❫ ⊢ T1 ➡*[h,n1] T & ❪G,L❫ ⊢ T ➡*[h,n2] T2.
 #h #G #L #n1 elim n1 -n1 /2 width=3 by ex2_intro/
 #n1 #IH #n2 #T1 #T2 <plus_S1 #H
 elim (cpms_inv_succ_sn … H) -H #T0 #HT10 #HT02
@@ -158,11 +152,11 @@ qed-.
 
 (* Advanced main properties *************************************************)
 
-theorem cpms_cast (n) (h) (G) (L):
-                  ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[n,h] T2 →
-                  ∀U1,U2. ❪G,L❫ ⊢ U1 ➡*[n,h] U2 →
-                  ❪G,L❫ ⊢ ⓝU1.T1 ➡*[n,h] ⓝU2.T2.
-#n #h #G #L #T1 #T2 #H @(cpms_ind_sn … H) -T1 -n
+theorem cpms_cast (h) (n) (G) (L):
+        ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[h,n] T2 →
+        ∀U1,U2. ❪G,L❫ ⊢ U1 ➡*[h,n] U2 →
+        ❪G,L❫ ⊢ ⓝU1.T1 ➡*[h,n] ⓝU2.T2.
+#h #n #G #L #T1 #T2 #H @(cpms_ind_sn … H) -T1 -n
 [ /3 width=3 by cpms_cast_sn/
 | #n1 #n2 #T1 #T #HT1 #_ #IH #U1 #U2 #H
   elim (cpms_inv_plus … H) -H #U #HU1 #HU2
@@ -171,8 +165,8 @@ theorem cpms_cast (n) (h) (G) (L):
 qed.
 
 theorem cpms_trans_swap (h) (G) (L) (T1):
-        ∀n1,T. ❪G,L❫ ⊢ T1 ➡*[n1,h] T → ∀n2,T2. ❪G,L❫ ⊢ T ➡*[n2,h] T2 →
-        ∃∃T0. ❪G,L❫ ⊢ T1 ➡*[n2,h] T0 & ❪G,L❫ ⊢ T0 ➡*[n1,h] T2.
+        ∀n1,T. ❪G,L❫ ⊢ T1 ➡*[h,n1] T → ∀n2,T2. ❪G,L❫ ⊢ T ➡*[h,n2] T2 →
+        ∃∃T0. ❪G,L❫ ⊢ T1 ➡*[h,n2] T0 & ❪G,L❫ ⊢ T0 ➡*[h,n1] T2.
 #h #G #L #T1 #n1 #T #HT1 #n2 #T2 #HT2
 lapply (cpms_trans … HT1 … HT2) -T <commutative_plus #HT12
 /2 width=1 by cpms_inv_plus/
index e5189c4e69bd45423589aa603cf0f2b1efe22cdd..71b0f64f676a4d5dc4db9d9e2025457c438673ee 100644 (file)
@@ -21,7 +21,7 @@ include "basic_2/rt_computation/cpms.ma".
 (* Forward lemmas with unbound context-sensitive rt-computation for terms ***)
 
 (* Basic_2A1: includes: scpds_fwd_cpxs cprs_cpxs *)
-lemma cpms_fwd_cpxs (n) (h): ∀G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡*[n,h] T2 → ❪G,L❫ ⊢ T1 ⬈*[h] T2.
-#n #h #G #L #T1 #T2 #H @(cpms_ind_dx … H) -T2
+lemma cpms_fwd_cpxs (h) (n): ∀G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡*[h,n] T2 → ❪G,L❫ ⊢ T1 ⬈*[h] T2.
+#h #n #G #L #T1 #T2 #H @(cpms_ind_dx … H) -T2
 /3 width=4 by cpxs_strap1, cpm_fwd_cpx/
 qed-.
index b8917b38c453f57b1f9102716c2526abc3611949..fbab9de5544e0cec5bb3833e3967d6fc048a4e96 100644 (file)
@@ -20,14 +20,14 @@ include "basic_2/rt_computation/cpms.ma".
 
 (* Properties with generic slicing for local environments *******************)
 
-lemma cpms_lifts_sn: ∀n,h,G. d_liftable2_sn … lifts (λL. cpms h G L n).
+lemma cpms_lifts_sn: ∀h,n,G. d_liftable2_sn … lifts (λL. cpms h G L n).
 /3 width=6 by d2_liftable_sn_ltc, cpm_lifts_sn/ qed-.
 
 (* Basic_2A1: uses: scpds_lift *)
 (* Basic_2A1: includes: cprs_lift *)
 (* Basic_1: includes: pr3_lift *)
-lemma cpms_lifts_bi: ∀n,h,G. d_liftable2_bi … lifts (λL. cpms h G L n).
-#n #h #G @d_liftable2_sn_bi
+lemma cpms_lifts_bi: ∀h,n,G. d_liftable2_bi … lifts (λL. cpms h G L n).
+#h #n #G @d_liftable2_sn_bi
 /2 width=6 by cpms_lifts_sn, lifts_mono/
 qed-.
 
@@ -36,19 +36,19 @@ qed-.
 (* Basic_2A1: uses: scpds_inv_lift1 *)
 (* Basic_2A1: includes: cprs_inv_lift1 *)
 (* Basic_1: includes: pr3_gen_lift *)
-lemma cpms_inv_lifts_sn: ∀n,h,G. d_deliftable2_sn … lifts (λL. cpms h G L n).
+lemma cpms_inv_lifts_sn: ∀h,n,G. d_deliftable2_sn … lifts (λL. cpms h G L n).
 /3 width=6 by d2_deliftable_sn_ltc, cpm_inv_lifts_sn/ qed-.
 
-lemma cpms_inv_lifts_bi: ∀n,h,G. d_deliftable2_bi … lifts (λL. cpms h G L n).
-#n #h #G @d_deliftable2_sn_bi
+lemma cpms_inv_lifts_bi: ∀h,n,G. d_deliftable2_bi … lifts (λL. cpms h G L n).
+#h #n #G @d_deliftable2_sn_bi
 /2 width=6 by cpms_inv_lifts_sn, lifts_inj/
 qed-.
 
 (* Advanced properties ******************************************************)
 
-lemma cpms_delta (n) (h) (G): ∀K,V1,V2. ❪G,K❫ ⊢ V1 ➡*[n,h] V2 →
-                              ∀W2. ⇧[1] V2 ≘ W2 → ❪G,K.ⓓV1❫ ⊢ #0 ➡*[n,h] W2.
-#n #h #G #K #V1 #V2 #H @(cpms_ind_dx … H) -V2
+lemma cpms_delta (h) (n) (G): ∀K,V1,V2. ❪G,K❫ ⊢ V1 ➡*[h,n] V2 →
+                              ∀W2. ⇧[1] V2 ≘ W2 → ❪G,K.ⓓV1❫ ⊢ #0 ➡*[h,n] W2.
+#h #n #G #K #V1 #V2 #H @(cpms_ind_dx … H) -V2
 [ /3 width=3 by cpm_cpms, cpm_delta/
 | #n1 #n2 #V #V2 #_ #IH #HV2 #W2 #HVW2
   elim (lifts_total V (𝐔❨1❩)) #W #HVW
@@ -56,9 +56,9 @@ lemma cpms_delta (n) (h) (G): ∀K,V1,V2. ❪G,K❫ ⊢ V1 ➡*[n,h] V2 →
 ]
 qed.
 
-lemma cpms_ell (n) (h) (G): ∀K,V1,V2. ❪G,K❫ ⊢ V1 ➡*[n,h] V2 →
-                            ∀W2. ⇧[1] V2 ≘ W2 → ❪G,K.ⓛV1❫ ⊢ #0 ➡*[↑n,h] W2.
-#n #h #G #K #V1 #V2 #H @(cpms_ind_dx … H) -V2
+lemma cpms_ell (h) (n) (G): ∀K,V1,V2. ❪G,K❫ ⊢ V1 ➡*[h,n] V2 →
+                            ∀W2. ⇧[1] V2 ≘ W2 → ❪G,K.ⓛV1❫ ⊢ #0 ➡*[h,↑n] W2.
+#h #n #G #K #V1 #V2 #H @(cpms_ind_dx … H) -V2
 [ /3 width=3 by cpm_cpms, cpm_ell/
 | #n1 #n2 #V #V2 #_ #IH #HV2 #W2 #HVW2
   elim (lifts_total V (𝐔❨1❩)) #W #HVW >plus_S1
@@ -66,9 +66,9 @@ lemma cpms_ell (n) (h) (G): ∀K,V1,V2. ❪G,K❫ ⊢ V1 ➡*[n,h] V2 →
 ]
 qed.
 
-lemma cpms_lref (n) (h) (I) (G): ∀K,T,i. ❪G,K❫ ⊢ #i ➡*[n,h] T →
-                                 ∀U. ⇧[1] T ≘ U → ❪G,K.ⓘ[I]❫ ⊢ #↑i ➡*[n,h] U.
-#n #h #I #G #K #T #i #H @(cpms_ind_dx … H) -T
+lemma cpms_lref (h) (n) (I) (G): ∀K,T,i. ❪G,K❫ ⊢ #i ➡*[h,n] T →
+                                 ∀U. ⇧[1] T ≘ U → ❪G,K.ⓘ[I]❫ ⊢ #↑i ➡*[h,n] U.
+#h #n #I #G #K #T #i #H @(cpms_ind_dx … H) -T
 [ /3 width=3 by cpm_cpms, cpm_lref/
 | #n1 #n2 #T #T2 #_ #IH #HT2 #U2 #HTU2
   elim (lifts_total T (𝐔❨1❩)) #U #TU
@@ -76,11 +76,11 @@ lemma cpms_lref (n) (h) (I) (G): ∀K,T,i. ❪G,K❫ ⊢ #i ➡*[n,h] T →
 ]
 qed.
 
-lemma cpms_cast_sn (n) (h) (G) (L):
-                   ∀U1,U2. ❪G,L❫ ⊢ U1 ➡*[n,h] U2 →
-                   ∀T1,T2. ❪G,L❫ ⊢ T1 ➡[n,h] T2 →
-                   ❪G,L❫ ⊢ ⓝU1.T1 ➡*[n,h] ⓝU2.T2.
-#n #h #G #L #U1 #U2 #H @(cpms_ind_sn … H) -U1 -n
+lemma cpms_cast_sn (h) (n) (G) (L):
+                   ∀U1,U2. ❪G,L❫ ⊢ U1 ➡*[h,n] U2 →
+                   ∀T1,T2. ❪G,L❫ ⊢ T1 ➡[h,n] T2 →
+                   ❪G,L❫ ⊢ ⓝU1.T1 ➡*[h,n] ⓝU2.T2.
+#h #n #G #L #U1 #U2 #H @(cpms_ind_sn … H) -U1 -n
 [ /3 width=3 by cpm_cpms, cpm_cast/
 | #n1 #n2 #U1 #U #HU1 #_ #IH #T1 #T2 #H
   elim (cpm_fwd_plus … H) -H #T #HT1 #HT2
@@ -90,11 +90,11 @@ qed.
 
 (* Note: apparently this was missing in basic_1 *)
 (* Basic_2A1: uses: cprs_delta *)
-lemma cpms_delta_drops (n) (h) (G):
+lemma cpms_delta_drops (h) (n) (G):
                        ∀L,K,V,i. ⇩[i] L ≘ K.ⓓV →
-                       ∀V2. ❪G,K❫ ⊢ V ➡*[n,h] V2 →
-                       ∀W2. ⇧[↑i] V2 ≘ W2 → ❪G,L❫ ⊢ #i ➡*[n,h] W2.
-#n #h #G #L #K #V #i #HLK #V2 #H @(cpms_ind_dx … H) -V2
+                       ∀V2. ❪G,K❫ ⊢ V ➡*[h,n] V2 →
+                       ∀W2. ⇧[↑i] V2 ≘ W2 → ❪G,L❫ ⊢ #i ➡*[h,n] W2.
+#h #n #G #L #K #V #i #HLK #V2 #H @(cpms_ind_dx … H) -V2
 [ /3 width=6 by cpm_cpms, cpm_delta_drops/
 | #n1 #n2 #V1 #V2 #_ #IH #HV12 #W2 #HVW2
   lapply (drops_isuni_fwd_drop2 … HLK) -HLK // #HLK
@@ -103,11 +103,11 @@ lemma cpms_delta_drops (n) (h) (G):
 ]
 qed.
 
-lemma cpms_ell_drops (n) (h) (G):
+lemma cpms_ell_drops (h) (n) (G):
                      ∀L,K,W,i. ⇩[i] L ≘ K.ⓛW →
-                     ∀W2. ❪G,K❫ ⊢ W ➡*[n,h] W2 →
-                     ∀V2. ⇧[↑i] W2 ≘ V2 → ❪G,L❫ ⊢ #i ➡*[↑n,h] V2.
-#n #h #G #L #K #W #i #HLK #W2 #H @(cpms_ind_dx … H) -W2
+                     ∀W2. ❪G,K❫ ⊢ W ➡*[h,n] W2 →
+                     ∀V2. ⇧[↑i] W2 ≘ V2 → ❪G,L❫ ⊢ #i ➡*[h,↑n] V2.
+#h #n #G #L #K #W #i #HLK #W2 #H @(cpms_ind_dx … H) -W2
 [ /3 width=6 by cpm_cpms, cpm_ell_drops/
 | #n1 #n2 #W1 #W2 #_ #IH #HW12 #V2 #HWV2
   lapply (drops_isuni_fwd_drop2 … HLK) -HLK // #HLK
@@ -118,14 +118,14 @@ qed.
 
 (* Advanced inversion lemmas ************************************************)
 
-lemma cpms_inv_lref1_drops (n) (h) (G):
-                           ∀L,T2,i. ❪G,L❫ ⊢ #i ➡*[n,h] T2 →
+lemma cpms_inv_lref1_drops (h) (n) (G):
+                           ∀L,T2,i. ❪G,L❫ ⊢ #i ➡*[h,n] T2 →
                            ∨∨ ∧∧ T2 = #i & n = 0
-                            | ∃∃K,V,V2. ⇩[i] L ≘ K.ⓓV & ❪G,K❫ ⊢ V ➡*[n,h] V2 &
+                            | ∃∃K,V,V2. ⇩[i] L ≘ K.ⓓV & ❪G,K❫ ⊢ V ➡*[h,n] V2 &
                                         ⇧[↑i] V2 ≘ T2
-                            | ∃∃m,K,V,V2. ⇩[i] L ≘ K.ⓛV & ❪G,K❫ ⊢ V ➡*[m,h] V2 &
+                            | ∃∃m,K,V,V2. ⇩[i] L ≘ K.ⓛV & ❪G,K❫ ⊢ V ➡*[h,m] V2 &
                                           ⇧[↑i] V2 ≘ T2 & n = ↑m.
-#n #h #G #L #T2 #i #H @(cpms_ind_dx … H) -T2
+#h #n #G #L #T2 #i #H @(cpms_ind_dx … H) -T2
 [ /3 width=1 by or3_intro0, conj/
 | #n1 #n2 #T #T2 #_ #IH #HT2 cases IH -IH *
   [ #H1 #H2 destruct
@@ -146,11 +146,11 @@ lemma cpms_inv_lref1_drops (n) (h) (G):
 ]
 qed-.
 
-lemma cpms_inv_delta_sn (n) (h) (G) (K) (V):
-      ∀T2. ❪G,K.ⓓV❫ ⊢ #0 ➡*[n,h] T2 →
+lemma cpms_inv_delta_sn (h) (n) (G) (K) (V):
+      ∀T2. ❪G,K.ⓓV❫ ⊢ #0 ➡*[h,n] T2 →
       ∨∨ ∧∧ T2 = #0 & n = 0
-       | ∃∃V2. ❪G,K❫ ⊢ V ➡*[n,h] V2 & ⇧[1] V2 ≘ T2.
-#n #h #G #K #V #T2 #H
+       | ∃∃V2. ❪G,K❫ ⊢ V ➡*[h,n] V2 & ⇧[1] V2 ≘ T2.
+#h #n #G #K #V #T2 #H
 elim (cpms_inv_lref1_drops … H) -H *
 [ /3 width=1 by or_introl, conj/
 | #Y #X #V2 #H #HV2 #HVT2
@@ -161,11 +161,11 @@ elim (cpms_inv_lref1_drops … H) -H *
 ]
 qed-.
 
-lemma cpms_inv_ell_sn (n) (h) (G) (K) (V):
-      ∀T2. ❪G,K.ⓛV❫ ⊢ #0 ➡*[n,h] T2 →
+lemma cpms_inv_ell_sn (h) (n) (G) (K) (V):
+      ∀T2. ❪G,K.ⓛV❫ ⊢ #0 ➡*[h,n] T2 →
       ∨∨ ∧∧ T2 = #0 & n = 0
-       | ∃∃m,V2. ❪G,K❫ ⊢ V ➡*[m,h] V2 & ⇧[1] V2 ≘ T2 & n = ↑m.
-#n #h #G #K #V #T2 #H
+       | ∃∃m,V2. ❪G,K❫ ⊢ V ➡*[h,m] V2 & ⇧[1] V2 ≘ T2 & n = ↑m.
+#h #n #G #K #V #T2 #H
 elim (cpms_inv_lref1_drops … H) -H *
 [ /3 width=1 by or_introl, conj/
 | #Y #X #V2 #H #HV2 #HVT2
@@ -176,11 +176,11 @@ elim (cpms_inv_lref1_drops … H) -H *
 ]
 qed-.
 
-lemma cpms_inv_lref_sn (n) (h) (G) (I) (K):
-      ∀U2,i. ❪G,K.ⓘ[I]❫ ⊢ #↑i ➡*[n,h] U2 →
+lemma cpms_inv_lref_sn (h) (n) (G) (I) (K):
+      ∀U2,i. ❪G,K.ⓘ[I]❫ ⊢ #↑i ➡*[h,n] U2 →
       ∨∨ ∧∧ U2 = #↑i & n = 0
-       | ∃∃T2. ❪G,K❫ ⊢ #i ➡*[n,h] T2 & ⇧[1] T2 ≘ U2.
-#n #h #G #I #K #U2 #i #H
+       | ∃∃T2. ❪G,K❫ ⊢ #i ➡*[h,n] T2 & ⇧[1] T2 ≘ U2.
+#h #n #G #I #K #U2 #i #H
 elim (cpms_inv_lref1_drops … H) -H *
 [ /3 width=1 by or_introl, conj/
 | #L #V #V2 #H #HV2 #HVU2
@@ -196,10 +196,10 @@ elim (cpms_inv_lref1_drops … H) -H *
 ]
 qed-.
 
-fact cpms_inv_succ_sn (n) (h) (G) (L):
-                      ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[↑n,h] T2 →
-                      ∃∃T. ❪G,L❫ ⊢ T1 ➡*[1,h] T & ❪G,L❫ ⊢ T ➡*[n,h] T2.
-#n #h #G #L #T1 #T2
+fact cpms_inv_succ_sn (h) (n) (G) (L):
+                      ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[h,↑n] T2 →
+                      ∃∃T. ❪G,L❫ ⊢ T1 ➡*[h,1] T & ❪G,L❫ ⊢ T ➡*[h,n] T2.
+#h #n #G #L #T1 #T2
 @(insert_eq_0 … (↑n)) #m #H
 @(cpms_ind_sn … H) -T1 -m
 [ #H destruct
index da18f9c4dde7807a9a96eda017ec4c413367f38a..b96b5fcc62452c9aa383b070bb169d569a052e94 100644 (file)
@@ -21,28 +21,28 @@ include "basic_2/rt_computation/cpms_fpbs.ma".
 (* Forward lemmas with proper parallel rst-computation for closures *********)
 
 lemma cpms_tneqx_fwd_fpbg (h) (n):
-      ∀G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡*[n,h] T2 →
+      ∀G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡*[h,n] T2 →
       (T1 ≛ T2 → ⊥) → ❪G,L,T1❫ >[h] ❪G,L,T2❫.
 /3 width=2 by cpms_fwd_cpxs, cpxs_tneqx_fpbg/ qed-.
 
 lemma fpbg_cpms_trans (h) (n):
       ∀G1,G2,L1,L2,T1,T. ❪G1,L1,T1❫ >[h] ❪G2,L2,T❫ →
-      ∀T2. ❪G2,L2❫ ⊢ T ➡*[n,h] T2 → ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
+      ∀T2. ❪G2,L2❫ ⊢ T ➡*[h,n] T2 → ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
 /3 width=5 by fpbg_fpbs_trans, cpms_fwd_fpbs/ qed-.
 
 lemma cpms_fpbg_trans (h) (n):
-      ∀G1,L1,T1,T. ❪G1,L1❫ ⊢ T1 ➡*[n,h] T →
+      ∀G1,L1,T1,T. ❪G1,L1❫ ⊢ T1 ➡*[h,n] T →
       ∀G2,L2,T2. ❪G1,L1,T❫ >[h] ❪G2,L2,T2❫ → ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
 /3 width=5 by fpbs_fpbg_trans, cpms_fwd_fpbs/ qed-.
 
 lemma fqup_cpms_fwd_fpbg (h):
       ∀G1,G2,L1,L2,T1,T. ❪G1,L1,T1❫ ⬂+ ❪G2,L2,T❫ →
-      ∀n,T2. ❪G2,L2❫ ⊢ T ➡*[n,h] T2 → ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
+      ∀n,T2. ❪G2,L2❫ ⊢ T ➡*[h,n] T2 → ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
 /3 width=5 by cpms_fwd_fpbs, fqup_fpbg, fpbg_fpbs_trans/ qed-.
 
 lemma cpm_tneqx_cpm_cpms_teqx_sym_fwd_fpbg (h) (G) (L) (T1):
-      ∀n1,T. ❪G,L❫ ⊢ T1 ➡[n1,h] T → (T1 ≛ T → ⊥) →
-      ∀n2,T2. ❪G,L❫⊢ T ➡*[n2,h] T2 → T1 ≛ T2 → ❪G,L,T1❫ >[h] ❪G,L,T1❫.
+      ∀n1,T. ❪G,L❫ ⊢ T1 ➡[h,n1] T → (T1 ≛ T → ⊥) →
+      ∀n2,T2. ❪G,L❫⊢ T ➡*[h,n2] T2 → T1 ≛ T2 → ❪G,L,T1❫ >[h] ❪G,L,T1❫.
 #h #G #L #T1 #n1 #T #H1T1 #H2T1 #n2 #T2 #H1T2 #H2T12
 /4 width=7 by cpms_fwd_fpbs, cpm_fpb, fpbs_teqx_trans, teqx_sym, ex2_3_intro/
 qed-.
index ddc129c4681daf93820d155ae320113483cec047..ec8e45b13319e35baeb3ae7b9ae6c1750f44e31e 100644 (file)
@@ -20,6 +20,6 @@ include "basic_2/rt_computation/cpms_cpxs.ma".
 (* Forward lemmas with parallel rst-computation for closures ****************)
 
 (* Basic_2A1: uses: cprs_fpbs *)
-lemma cpms_fwd_fpbs (n) (h):
-      ∀G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡*[n,h] T2 → ❪G,L,T1❫ ≥[h] ❪G,L,T2❫.
+lemma cpms_fwd_fpbs (h) (n):
+      ∀G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡*[h,n] T2 → ❪G,L,T1❫ ≥[h] ❪G,L,T2❫.
 /3 width=2 by cpms_fwd_cpxs, cpxs_fpbs/ qed-.
index be8c9a5fa55744ec66c99f653905e962cbf8ccc7..42e0aaf306cad3e5fb155e11cade2c68ffbc4e15 100644 (file)
@@ -19,10 +19,10 @@ include "basic_2/rt_computation/cpms_cpms.ma".
 
 (* Properties with parallel rt-transition for full local environments *******)
 
-lemma lpr_cpm_trans (n) (h) (G):
-                    ∀L2,T1,T2. ❪G,L2❫ ⊢ T1 ➡[n,h] T2 →
-                    ∀L1. ❪G,L1❫ ⊢ ➡[h] L2 → ❪G,L1❫ ⊢ T1 ➡*[n,h] T2.
-#n #h #G #L2 #T1 #T2 #H @(cpm_ind … H) -n -G -L2 -T1 -T2
+lemma lpr_cpm_trans (h) (n) (G):
+                    ∀L2,T1,T2. ❪G,L2❫ ⊢ T1 ➡[h,n] T2 →
+                    ∀L1. ❪G,L1❫ ⊢ ➡[h,0] L2 → ❪G,L1❫ ⊢ T1 ➡*[h,n] T2.
+#h #n #G #L2 #T1 #T2 #H @(cpm_ind … H) -n -G -L2 -T1 -T2
 [ /2 width=3 by/
 | /3 width=2 by cpm_cpms/
 | #n #G #K2 #V2 #V4 #W4 #_ #IH #HVW4 #L1 #H
@@ -45,25 +45,25 @@ lemma lpr_cpm_trans (n) (h) (G):
 ]
 qed-.
 
-lemma lpr_cpms_trans (n) (h) (G):
-                     ∀L1,L2. ❪G,L1❫ ⊢ ➡[h] L2 →
-                     ∀T1,T2. ❪G,L2❫ ⊢ T1 ➡*[n,h] T2 → ❪G,L1❫ ⊢ T1 ➡*[n,h] T2.
-#n #h #G #L1 #L2 #HL12 #T1 #T2 #H @(cpms_ind_sn … H) -n -T1
+lemma lpr_cpms_trans (h) (n) (G):
+                     ∀L1,L2. ❪G,L1❫ ⊢ ➡[h,0] L2 →
+                     ∀T1,T2. ❪G,L2❫ ⊢ T1 ➡*[h,n] T2 → ❪G,L1❫ ⊢ T1 ➡*[h,n] T2.
+#h #n #G #L1 #L2 #HL12 #T1 #T2 #H @(cpms_ind_sn … H) -n -T1
 /3 width=3 by lpr_cpm_trans, cpms_trans/
 qed-.
 
 (* Advanced properties ******************************************************)
 
 (* Basic_2A1: includes cpr_bind2 *)
-lemma cpm_bind2 (n) (h) (G) (L):
-                ∀V1,V2. ❪G,L❫ ⊢ V1 ➡[h] V2 →
-                ∀I,T1,T2. ❪G,L.ⓑ[I]V2❫ ⊢ T1 ➡[n,h] T2 →
-                ∀p. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ➡*[n,h] ⓑ[p,I]V2.T2.
+lemma cpm_bind2 (h) (n) (G) (L):
+                ∀V1,V2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 →
+                ∀I,T1,T2. ❪G,L.ⓑ[I]V2❫ ⊢ T1 ➡[h,n] T2 →
+                ∀p. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ➡*[h,n] ⓑ[p,I]V2.T2.
 /4 width=5 by lpr_cpm_trans, cpms_bind_dx, lpr_pair/ qed.
 
 (* Basic_2A1: includes cprs_bind2_dx *)
-lemma cpms_bind2_dx (n) (h) (G) (L):
-                    ∀V1,V2. ❪G,L❫ ⊢ V1 ➡[h] V2 →
-                    ∀I,T1,T2. ❪G,L.ⓑ[I]V2❫ ⊢ T1 ➡*[n,h] T2 →
-                    ∀p. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ➡*[n,h] ⓑ[p,I]V2.T2.
+lemma cpms_bind2_dx (h) (n) (G) (L):
+                    ∀V1,V2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 →
+                    ∀I,T1,T2. ❪G,L.ⓑ[I]V2❫ ⊢ T1 ➡*[h,n] T2 →
+                    ∀p. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ➡*[h,n] ⓑ[p,I]V2.T2.
 /4 width=5 by lpr_cpms_trans, cpms_bind_dx, lpr_pair/ qed.
index 300e2eff0aa4073f31f4f2ce0067de1b62423734..f8834d4c1706333974dd9f187b7f43e8c8712eaa 100644 (file)
@@ -20,6 +20,6 @@ include "basic_2/rt_computation/cpms.ma".
 (* Properties with restricted refinement for local environments *************)
 
 (* Basic_2A1: uses: lsubr_cprs_trans *)
-lemma lsubr_cpms_trans (n) (h): ∀G. lsub_trans … (λL. cpms h G L n) lsubr.
+lemma lsubr_cpms_trans (h) (n): ∀G. lsub_trans … (λL. cpms h G L n) lsubr.
 /3 width=5 by lsubr_cpm_trans, ltc_lsub_trans/
 qed-.
index 78294ec717c64a6d005ee73d8aecccce27f3fefa..d7215295a7a2dd7bdb7158f69cce75280beec86c 100644 (file)
@@ -20,11 +20,11 @@ include "basic_2/rt_computation/cpms_cpxs.ma".
 (* Properties with sort-irrelevant equivalence for local environments *******)
 
 lemma cpms_reqx_conf_sn (h) (n) (G) (L1) (L2):
-                        ∀T1,T2. ❪G,L1❫ ⊢ T1 ➡*[n,h] T2 →
+                        ∀T1,T2. ❪G,L1❫ ⊢ T1 ➡*[h,n] T2 →
                         L1 ≛[T1] L2 → L1 ≛[T2] L2.
 /3 width=5 by cpms_fwd_cpxs, cpxs_reqx_conf_sn/ qed-.
 
 lemma cpms_reqx_conf_dx (h) (n) (G) (L1) (L2):
-                        ∀T1,T2. ❪G,L2❫ ⊢ T1 ➡*[n,h] T2 →
+                        ∀T1,T2. ❪G,L2❫ ⊢ T1 ➡*[h,n] T2 →
                         L1 ≛[T1] L2 → L1 ≛[T2] L2.
 /3 width=5 by cpms_fwd_cpxs, cpxs_reqx_conf_dx/ qed-.
index 8b13f45393f3e5061a857c148181903131b216bd..97d12e14399c9dd15d03b028ef83e074e56fe3e2 100644 (file)
@@ -18,7 +18,7 @@ include "basic_2/rt_computation/cnuw.ma".
 (* T-UNBOUND WHD EVALUATION FOR T-BOUND RT-TRANSITION ON TERMS **************)
 
 definition cpmuwe (h) (n) (G) (L): relation2 term term ≝
-           λT1,T2. ∧∧ ❪G,L❫ ⊢ T1 ➡*[n,h] T2 & ❪G,L❫ ⊢ ➡𝐍𝐖*[h] T2.
+           λT1,T2. ∧∧ ❪G,L❫ ⊢ T1 ➡*[h,n] T2 & ❪G,L❫ ⊢ ➡𝐍𝐖*[h] T2.
 
 interpretation "t-unbound whd evaluation for t-bound context-sensitive parallel rt-transition (term)"
    'PRedEvalWStar h n G L T1 T2 = (cpmuwe h n G L T1 T2).
@@ -29,30 +29,30 @@ definition R_cpmuwe (h) (G) (L) (T): predicate nat ≝
 (* Basic properties *********************************************************)
 
 lemma cpmuwe_intro (h) (n) (G) (L):
-      ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[n,h] T2 → ❪G,L❫ ⊢ ➡𝐍𝐖*[h] T2 → ❪G,L❫ ⊢ T1 ➡*𝐍𝐖*[h,n] T2.
+      ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[h,n] T2 → ❪G,L❫ ⊢ ➡𝐍𝐖*[h] T2 → ❪G,L❫ ⊢ T1 ➡*𝐍𝐖*[h,n] T2.
 /2 width=1 by conj/ qed.
 
 (* Advanced properties ******************************************************)
 
 lemma cpmuwe_sort (h) (n) (G) (L) (T):
-      ∀s. ❪G,L❫ ⊢ T ➡*[n,h] ⋆s → ❪G,L❫ ⊢ T ➡*𝐍𝐖*[h,n] ⋆s.
+      ∀s. ❪G,L❫ ⊢ T ➡*[h,n] ⋆s → ❪G,L❫ ⊢ T ➡*𝐍𝐖*[h,n] ⋆s.
 /3 width=5 by cnuw_sort, cpmuwe_intro/ qed.
 
 lemma cpmuwe_ctop (h) (n) (G) (T):
-      ∀i. ❪G,⋆❫ ⊢ T ➡*[n,h] #i → ❪G,⋆❫ ⊢ T ➡*𝐍𝐖*[h,n] #i.
+      ∀i. ❪G,⋆❫ ⊢ T ➡*[h,n] #i → ❪G,⋆❫ ⊢ T ➡*𝐍𝐖*[h,n] #i.
 /3 width=5 by cnuw_ctop, cpmuwe_intro/ qed.
 
 lemma cpmuwe_zero_unit (h) (n) (G) (L) (T):
-      ∀I. ❪G,L.ⓤ[I]❫ ⊢ T ➡*[n,h] #0 → ❪G,L.ⓤ[I]❫ ⊢ T ➡*𝐍𝐖*[h,n] #0.
+      ∀I. ❪G,L.ⓤ[I]❫ ⊢ T ➡*[h,n] #0 → ❪G,L.ⓤ[I]❫ ⊢ T ➡*𝐍𝐖*[h,n] #0.
 /3 width=6 by cnuw_zero_unit, cpmuwe_intro/ qed.
 
 lemma cpmuwe_gref (h) (n) (G) (L) (T):
-      ∀l. ❪G,L❫ ⊢ T ➡*[n,h] §l → ❪G,L❫ ⊢ T ➡*𝐍𝐖*[h,n] §l.
+      ∀l. ❪G,L❫ ⊢ T ➡*[h,n] §l → ❪G,L❫ ⊢ T ➡*𝐍𝐖*[h,n] §l.
 /3 width=5 by cnuw_gref, cpmuwe_intro/ qed.
 
 (* Basic forward lemmas *****************************************************)
 
 lemma cpmuwe_fwd_cpms (h) (n) (G) (L):
-      ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*𝐍𝐖*[h,n] T2 → ❪G,L❫ ⊢ T1 ➡*[n,h] T2.
+      ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*𝐍𝐖*[h,n] T2 → ❪G,L❫ ⊢ T1 ➡*[h,n] T2.
 #h #n #G #L #T1 #T2 * #HT12 #_ //
 qed-.
index 3ebd3c366f67c7b84a454b79e16c4ea6ab9931a9..c1257d25201f7accdddb051a1a60ef81bad2b7dd 100644 (file)
@@ -20,9 +20,9 @@ include "basic_2/rt_computation/cpmuwe.ma".
 (* Advanced properties ******************************************************)
 
 lemma cpmuwe_abbr_neg (h) (n) (G) (L) (T):
-      ∀V,U. ❪G,L❫ ⊢ T ➡*[n,h] -ⓓV.U → ❪G,L❫ ⊢ T ➡*𝐍𝐖*[h,n] -ⓓV.U.
+      ∀V,U. ❪G,L❫ ⊢ T ➡*[h,n] -ⓓV.U → ❪G,L❫ ⊢ T ➡*𝐍𝐖*[h,n] -ⓓV.U.
 /3 width=5 by cnuw_abbr_neg, cpmuwe_intro/ qed.
 
 lemma cpmuwe_abst (h) (n) (p) (G) (L) (T):
-      ∀W,U. ❪G,L❫ ⊢ T ➡*[n,h] ⓛ[p]W.U → ❪G,L❫ ⊢ T ➡*𝐍𝐖*[h,n] ⓛ[p]W.U.
+      ∀W,U. ❪G,L❫ ⊢ T ➡*[h,n] ⓛ[p]W.U → ❪G,L❫ ⊢ T ➡*𝐍𝐖*[h,n] ⓛ[p]W.U.
 /3 width=5 by cnuw_abst, cpmuwe_intro/ qed.
index bd1a283980d95bc0fa3afab049c0d939d6bda300..c62a2e45fc107680679d16d740463f28ec0caad3 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/predeval_5.ma".
 include "basic_2/rt_computation/cpmre.ma".
 include "basic_2/rt_computation/cprs.ma".
 
 (* EVALUATION FOR CONTEXT-SENSITIVE PARALLEL R-TRANSITION ON TERMS ***********)
-
-(* Basic_2A1: was: cpre *)
-interpretation "evaluation for context-sensitive parallel r-transition (term)"
-   'PRedEval h G L T1 T2 = (cpmre h O G L T1 T2).
index dec5319a0045b71c6ba9f6dd1b3feef3e1eb8884..c7ebf67fc704a430daf791683f1de7c88a97ea8a 100644 (file)
@@ -20,8 +20,8 @@ include "basic_2/rt_computation/cprre.ma".
 (* Properties with t-bound rt-computarion on terms **************************)
 
 lemma cpms_cprre_trans (h) (n) (G) (L):
-      ∀T1,T0. ❪G,L❫ ⊢T1 ➡*[n,h] T0 →
-      ∀T2. ❪G,L❫ ⊢ T0 ➡*[h] 𝐍❪T2❫ → ❪G,L❫ ⊢ T1 ➡*[h,n] 𝐍❪T2❫.
+      ∀T1,T0. ❪G,L❫ ⊢T1 ➡*[h,n] T0 →
+      ∀T2. ❪G,L❫ ⊢ T0 ➡*𝐍[h,0] T2 → ❪G,L❫ ⊢ T1 ➡*𝐍[h,n] T2.
 #h #n #G #L #T1 #T0 #HT10 #T2 * #HT02 #HT2
 /3 width=3 by cpms_cprs_trans, cpmre_intro/
 qed-.
index 4ffb118a74732456c0f4f3b0f93bb734b3b903ab..8b854071d977aa02147084410ea779ed9b232028 100644 (file)
@@ -21,7 +21,8 @@ include "basic_2/rt_computation/cprre.ma".
 (* Properties with context-sensitive parallel r-computation for terms ******)
 
 lemma cprre_cprs_conf (h) (G) (L) (T):
-      ∀T1. ❪G,L❫ ⊢ T ➡*[h] T1 → ∀T2. ❪G,L❫ ⊢ T ➡*[h] 𝐍❪T2❫ → ❪G,L❫ ⊢ T1 ➡*[h] 𝐍❪T2❫.
+      ∀T1. ❪G,L❫ ⊢ T ➡*[h,0] T1 → 
+      ∀T2. ❪G,L❫ ⊢ T ➡*𝐍[h,0] T2 → ❪G,L❫ ⊢ T1 ➡*𝐍[h,0] T2.
 #h #G #L #T0 #T1 #HT01 #T2 * #HT02 #HT2
 elim (cprs_conf … HT01 … HT02) -T0 #T0 #HT10 #HT20
 lapply (cprs_inv_cnr_sn … HT20 HT2) -HT20 #H destruct
@@ -33,7 +34,7 @@ qed-.
 (* Basic_1: was: nf2_pr3_confluence *)
 (* Basic_2A1: was: cpre_mono *)
 theorem cprre_mono (h) (G) (L) (T):
-        ∀T1. ❪G,L❫ ⊢ T ➡*[h] 𝐍❪T1❫ → ∀T2. ❪G,L❫ ⊢ T ➡*[h] 𝐍❪T2❫ → T1 = T2.
+        ∀T1. ❪G,L❫ ⊢ T ➡*𝐍[h,0] T1 → ∀T2. ❪G,L❫ ⊢ T ➡*𝐍[h,0] T2 → T1 = T2.
 #h #G #L #T0 #T1 * #HT01 #HT1 #T2 * #HT02 #HT2
 elim (cprs_conf … HT01 … HT02) -T0 #T0 #HT10 #HT20
 >(cprs_inv_cnr_sn … HT10 HT1) -T1
index b56a6207ef070ed7ae150b200c845549a37e564b..a6675e4b4abf114431250e10725361ab33407bbb 100644 (file)
@@ -24,7 +24,7 @@ include "basic_2/rt_computation/cprre.ma".
 (* Basic_1: was just: nf2_sn3 *)
 (* Basic_2A1: was: csx_cpre *)
 lemma cprre_total_csx (h) (G) (L):
-      ∀T1. ❪G,L❫ ⊢ ⬈*[h] 𝐒❪T1❫ → ∃T2. ❪G,L❫ ⊢ T1 ➡*[h] 𝐍❪T2❫.
+      ∀T1. ❪G,L❫ ⊢ ⬈*[h] 𝐒❪T1❫ → ∃T2. ❪G,L❫ ⊢ T1 ➡*𝐍[h,0] T2.
 #h #G #L #T1 #H
 @(csx_ind … H) -T1 #T1 #_ #IHT1
 elim (cnr_dec_teqx h G L T1) [ /3 width=3 by ex_intro, cpmre_intro/ ] *
index 4b221d5a4337107714d10449aa983a6c856c776e..2afcb81c8c3e0f16ff821b07ae0df21c245fb3bb 100644 (file)
@@ -22,8 +22,8 @@ include "basic_2/rt_computation/cpms.ma".
 (* Basic_2A1: was: cprs_ind_dx *)
 lemma cprs_ind_sn (h) (G) (L) (T2) (Q:predicate …):
                   Q T2 →
-                  (∀T1,T. ❪G,L❫ ⊢ T1 ➡[h] T → ❪G,L❫ ⊢ T ➡*[h] T2 → Q T → Q T1) →
-                  ∀T1. ❪G,L❫ ⊢ T1 ➡*[h] T2 → Q T1.
+                  (∀T1,T. ❪G,L❫ ⊢ T1 ➡[h,0] T → ❪G,L❫ ⊢ T ➡*[h,0] T2 → Q T → Q T1) →
+                  ∀T1. ❪G,L❫ ⊢ T1 ➡*[h,0] T2 → Q T1.
 #h #G #L #T2 #Q #IH1 #IH2 #T1
 @(insert_eq_0 … 0) #n #H
 @(cpms_ind_sn … H) -n -T1 //
@@ -35,8 +35,8 @@ qed-.
 (* Basic_2A1: was: cprs_ind *)
 lemma cprs_ind_dx (h) (G) (L) (T1) (Q:predicate …):
                   Q T1 →
-                  (∀T,T2. ❪G,L❫ ⊢ T1 ➡*[h] T → ❪G,L❫ ⊢ T ➡[h] T2 → Q T → Q T2) →
-                  ∀T2. ❪G,L❫ ⊢ T1 ➡*[h] T2 → Q T2.
+                  (∀T,T2. ❪G,L❫ ⊢ T1 ➡*[h,0] T → ❪G,L❫ ⊢ T ➡[h,0] T2 → Q T → Q T2) →
+                  ∀T2. ❪G,L❫ ⊢ T1 ➡*[h,0] T2 → Q T2.
 #h #G #L #T1 #Q #IH1 #IH2 #T2
 @(insert_eq_0 … 0) #n #H
 @(cpms_ind_dx … H) -n -T2 //
@@ -50,28 +50,28 @@ qed-.
 (* Basic_1: was: pr3_step *)
 (* Basic_2A1: was: cprs_strap2 *)
 lemma cprs_step_sn (h) (G) (L):
-                   ∀T1,T. ❪G,L❫ ⊢ T1 ➡[h] T →
-                   ∀T2. ❪G,L❫ ⊢ T ➡*[h] T2 → ❪G,L❫ ⊢ T1 ➡*[h] T2.
+                   ∀T1,T. ❪G,L❫ ⊢ T1 ➡[h,0] T →
+                   ∀T2. ❪G,L❫ ⊢ T ➡*[h,0] T2 → ❪G,L❫ ⊢ T1 ➡*[h,0] T2.
 /2 width=3 by cpms_step_sn/ qed-.
 
 (* Basic_2A1: was: cprs_strap1 *)
 lemma cprs_step_dx (h) (G) (L):
-                   ∀T1,T. ❪G,L❫ ⊢ T1 ➡*[h] T →
-                   ∀T2. ❪G,L❫ ⊢ T ➡[h] T2 → ❪G,L❫ ⊢ T1 ➡*[h] T2.
+                   ∀T1,T. ❪G,L❫ ⊢ T1 ➡*[h,0] T →
+                   ∀T2. ❪G,L❫ ⊢ T ➡[h,0] T2 → ❪G,L❫ ⊢ T1 ➡*[h,0] T2.
 /2 width=3 by cpms_step_dx/ qed-.
 
 (* Basic_1: was only: pr3_thin_dx *)
 lemma cprs_flat_dx (h) (I) (G) (L):
-                   ∀V1,V2. ❪G,L❫ ⊢ V1 ➡[h] V2 →
-                   ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[h] T2 →
-                   ❪G,L❫ ⊢ ⓕ[I]V1.T1 ➡*[h] ⓕ[I]V2.T2.
+                   ∀V1,V2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 →
+                   ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[h,0] T2 →
+                   ❪G,L❫ ⊢ ⓕ[I]V1.T1 ➡*[h,0] ⓕ[I]V2.T2.
 #h #I #G #L #V1 #V2 #HV12 #T1 #T2 #H @(cprs_ind_sn … H) -T1
 /3 width=3 by cprs_step_sn, cpm_cpms, cpr_flat/
 qed.
 
 lemma cprs_flat_sn (h) (I) (G) (L):
-                   ∀T1,T2. ❪G,L❫ ⊢ T1 ➡[h] T2 → ∀V1,V2. ❪G,L❫ ⊢ V1 ➡*[h] V2 →
-                   ❪G,L❫ ⊢ ⓕ[I] V1. T1 ➡*[h] ⓕ[I] V2. T2.
+                   ∀T1,T2. ❪G,L❫ ⊢ T1 ➡[h,0] T2 → ∀V1,V2. ❪G,L❫ ⊢ V1 ➡*[h,0] V2 →
+                   ❪G,L❫ ⊢ ⓕ[I] V1. T1 ➡*[h,0] ⓕ[I] V2. T2.
 #h #I #G #L #T1 #T2 #HT12 #V1 #V2 #H @(cprs_ind_sn … H) -V1
 /3 width=3 by cprs_step_sn, cpm_cpms, cpr_flat/
 qed.
@@ -79,13 +79,13 @@ qed.
 (* Basic inversion lemmas ***************************************************)
 
 (* Basic_1: was: pr3_gen_sort *)
-lemma cprs_inv_sort1 (h) (G) (L): ∀X2,s. ❪G,L❫ ⊢ ⋆s ➡*[h] X2 → X2 = ⋆s.
+lemma cprs_inv_sort1 (h) (G) (L): ∀X2,s. ❪G,L❫ ⊢ ⋆s ➡*[h,0] X2 → X2 = ⋆s.
 /2 width=4 by cpms_inv_sort1/ qed-.
 
 (* Basic_1: was: pr3_gen_cast *)
-lemma cprs_inv_cast1 (h) (G) (L): ∀W1,T1,X2. ❪G,L❫ ⊢ ⓝW1.T1 ➡*[h] X2 →
-                                  ∨∨ ∃∃W2,T2. ❪G,L❫ ⊢ W1 ➡*[h] W2 & ❪G,L❫ ⊢ T1 ➡*[h] T2 & X2 = ⓝW2.T2
-                                   | ❪G,L❫ ⊢ T1 ➡*[h] X2.
+lemma cprs_inv_cast1 (h) (G) (L): ∀W1,T1,X2. ❪G,L❫ ⊢ ⓝW1.T1 ➡*[h,0] X2 →
+                                  ∨∨ ∃∃W2,T2. ❪G,L❫ ⊢ W1 ➡*[h,0] W2 & ❪G,L❫ ⊢ T1 ➡*[h,0] T2 & X2 = ⓝW2.T2
+                                   | ❪G,L❫ ⊢ T1 ➡*[h,0] X2.
 #h #G #L #W1 #T1 #X2 #H
 elim (cpms_inv_cast1 … H) -H
 [ /2 width=1 by or_introl/
index 45cad66b7b0c4b415c37884aff40979714c04c25..bb08de9ec04ed5a03c8e426083ba21b53e3909d5 100644 (file)
@@ -22,7 +22,7 @@ include "basic_2/rt_computation/cprs.ma".
 (* Basic_1: was: nf2_pr3_unfold *)
 (* Basic_2A1: was: cprs_inv_cnr1 *)
 lemma cprs_inv_cnr_sn (h) (G) (L):
-      ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[h] T2 → ❪G,L❫ ⊢ ➡[h] 𝐍❪T1❫ → T1 = T2.
+      ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[h,0] T2 → ❪G,L❫ ⊢ ➡𝐍[h,0] T1 → T1 = T2.
 #h #G #L #T1 #T2 #H @(cprs_ind_sn … H) -T1 //
 #T1 #T0 #HT10 #_ #IH #HT1
 lapply (HT1 … HT10) -HT10 #H destruct /2 width=1 by/
index abd60ec8df33c9e0c8058cbda856eaa318b7d2ad..d9eedf3b8cfb8c2cd0ed8e838dc628978c9079f6 100644 (file)
@@ -39,9 +39,9 @@ qed-.
 
 (* Basic_1: was: pr3_flat *)
 theorem cprs_flat (h) (G) (L):
-                  ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[h] T2 →
-                  ∀V1,V2. ❪G,L❫ ⊢ V1 ➡*[h] V2 →
-                  ∀I. ❪G,L❫ ⊢ ⓕ[I]V1.T1 ➡*[h] ⓕ[I]V2.T2.
+                  ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[h,0] T2 →
+                  ∀V1,V2. ❪G,L❫ ⊢ V1 ➡*[h,0] V2 →
+                  ∀I. ❪G,L❫ ⊢ ⓕ[I]V1.T1 ➡*[h,0] ⓕ[I]V2.T2.
 #h #G #L #T1 #T2 #HT12 #V1 #V2 #H @(cprs_ind_dx … H) -V2
 [ /2 width=3 by cprs_flat_dx/
 | /3 width=3 by cpr_pair_sn, cprs_step_dx/
@@ -53,15 +53,15 @@ qed.
 (* Basic_1: was pr3_gen_appl *)
 (* Basic_2A1: was: cprs_inv_appl1 *)
 lemma cprs_inv_appl_sn (h) (G) (L):
-                       ∀V1,T1,X2. ❪G,L❫ ⊢ ⓐV1.T1 ➡*[h] X2 →
-                       ∨∨ ∃∃V2,T2.       ❪G,L❫ ⊢ V1 ➡*[h] V2 &
-                                         ❪G,L❫ ⊢ T1 ➡*[h] T2 &
+                       ∀V1,T1,X2. ❪G,L❫ ⊢ ⓐV1.T1 ➡*[h,0] X2 →
+                       ∨∨ ∃∃V2,T2.       ❪G,L❫ ⊢ V1 ➡*[h,0] V2 &
+                                         ❪G,L❫ ⊢ T1 ➡*[h,0] T2 &
                                          X2 = ⓐV2. T2
-                        | ∃∃p,W,T.       ❪G,L❫ ⊢ T1 ➡*[h] ⓛ[p]W.T &
-                                         ❪G,L❫ ⊢ ⓓ[p]ⓝW.V1.T ➡*[h] X2
-                        | ∃∃p,V0,V2,V,T. ❪G,L❫ ⊢ V1 ➡*[h] V0 & ⇧[1] V0 ≘ V2 &
-                                         ❪G,L❫ ⊢ T1 ➡*[h] ⓓ[p]V.T &
-                                         ❪G,L❫ ⊢ ⓓ[p]V.ⓐV2.T ➡*[h] X2.
+                        | ∃∃p,W,T.       ❪G,L❫ ⊢ T1 ➡*[h,0] ⓛ[p]W.T &
+                                         ❪G,L❫ ⊢ ⓓ[p]ⓝW.V1.T ➡*[h,0] X2
+                        | ∃∃p,V0,V2,V,T. ❪G,L❫ ⊢ V1 ➡*[h,0] V0 & ⇧[1] V0 ≘ V2 &
+                                         ❪G,L❫ ⊢ T1 ➡*[h,0] ⓓ[p]V.T &
+                                         ❪G,L❫ ⊢ ⓓ[p]V.ⓐV2.T ➡*[h,0] X2.
 #h #G #L #V1 #T1 #X2 #H elim (cpms_inv_appl_sn … H) -H *
 [ /3 width=5 by or3_intro0, ex3_2_intro/
 | #n1 #n2 #p #V2 #T2 #HT12 #HTX2 #H
index 8446ee1f2878795673c054c480219a89740fa091..f2a46a8327febcb0acd4063523e3d289bc497f09 100644 (file)
@@ -20,9 +20,9 @@ include "basic_2/rt_computation/cpms_drops.ma".
 
 (* Basic_1: was: pr3_gen_lref *)
 (* Basic_2A1: was: cprs_inv_lref1 *)
-lemma cprs_inv_lref1_drops (h) (G): ∀L,T2,i. ❪G,L❫ ⊢ #i ➡*[h] T2 →
+lemma cprs_inv_lref1_drops (h) (G): ∀L,T2,i. ❪G,L❫ ⊢ #i ➡*[h,0] T2 →
                                     ∨∨ T2 = #i
-                                     | ∃∃K,V1,T1. ⇩[i] L ≘ K.ⓓV1 & ❪G,K❫ ⊢ V1 ➡*[h] T1 &
+                                     | ∃∃K,V1,T1. ⇩[i] L ≘ K.ⓓV1 & ❪G,K❫ ⊢ V1 ➡*[h,0] T1 &
                                                   ⇧[↑i] T1 ≘ T2.
 #h #G #L #T2 #i #H elim (cpms_inv_lref1_drops … H) -H *
 [ /2 width=1 by or_introl/
index e69b27a31f70c6f746c36825e17b788ad3ea0929..8ae117db23c093c8074d7b4a31feeb5c859ed051 100644 (file)
@@ -17,9 +17,9 @@ include "basic_2/rt_computation/cpms.ma".
 
 (* CONTEXT-SENSITIVE PARALLEL R-COMPUTATION FOR BINDERS *********************)
 
-definition cprs_ext (h) (G): relation3 lenv bind bind ≝
-                             cext2 (λL. cpms h G L 0).
+definition cprs_ext (h) (n) (G): relation3 lenv bind bind ≝
+           cext2 (λL. cpms h G L n).
 
 interpretation
    "context-sensitive parallel r-computation (binder)"
-   'PRedStar h G L I1 I2 = (cprs_ext h G L I1 I2).
+   'PRedStar h n G L I1 I2 = (cprs_ext h n G L I1 I2).
index b70eb76500fd0ccd7b58545d4979af34ee9a6787..dd27d4cb5fb1e44f69ddbad2e38ca12e32b39382 100644 (file)
@@ -21,18 +21,20 @@ include "basic_2/rt_computation/cprs_cpr.ma".
 
 (* Basic_1: uses: pr3_pr2_pr2_t *)
 (* Basic_1: includes: pr3_pr0_pr2_t *)
-lemma lpr_cpr_trans (h) (G): s_r_transitive … (λL. cpm h G L 0) (λ_. lpr h G).
+lemma lpr_cpr_trans (h) (G):
+      s_r_transitive … (λL. cpm h G L 0) (λ_. lpr h 0 G).
 /3 width=4 by cprs_inv_CTC, lpr_cpm_trans, ltc_inv_CTC/
 qed-.
 
 (* Basic_1: uses: pr3_pr2_pr3_t pr3_wcpr0_t *)
-lemma lpr_cprs_trans (h) (G): s_rs_transitive … (λL. cpm h G L 0) (λ_. lpr h G).
+lemma lpr_cprs_trans (h) (G):
+      s_rs_transitive … (λL. cpm h G L 0) (λ_. lpr h 0 G).
 #h #G @s_r_trans_CTC1 /2 width=3 by lpr_cpr_trans/ (**) (* full auto fails *)
 qed-.
 
 lemma cprs_lpr_conf_dx (h) (G):
-                       ∀L0,T0,T1. ❪G,L0❫ ⊢ T0 ➡*[h] T1 → ∀L1. ❪G,L0❫ ⊢ ➡[h] L1 →
-                       ∃∃T. ❪G,L1❫ ⊢ T1 ➡*[h] T & ❪G,L1❫ ⊢ T0 ➡*[h] T.
+      ∀L0,T0,T1. ❪G,L0❫ ⊢ T0 ➡*[h,0] T1 → ∀L1. ❪G,L0❫ ⊢ ➡[h,0] L1 →
+      ∃∃T. ❪G,L1❫ ⊢ T1 ➡*[h,0] T & ❪G,L1❫ ⊢ T0 ➡*[h,0] T.
 #h #G #L0 #T0 #T1 #H
 @(cprs_ind_dx … H) -T1 /2 width=3 by ex2_intro/
 #T #T1 #_ #HT1 #IHT0 #L1 #HL01
@@ -43,9 +45,9 @@ elim (cprs_strip … HT2 … HT3) -T
 qed-.
 
 lemma cprs_lpr_conf_sn (h) (G):
-                       ∀L0,T0,T1. ❪G,L0❫ ⊢ T0 ➡*[h] T1 →
-                       ∀L1. ❪G,L0❫ ⊢ ➡[h] L1 →
-                       ∃∃T. ❪G,L0❫ ⊢ T1 ➡*[h] T & ❪G,L1❫ ⊢ T0 ➡*[h] T.
+      ∀L0,T0,T1. ❪G,L0❫ ⊢ T0 ➡*[h,0] T1 →
+      ∀L1. ❪G,L0❫ ⊢ ➡[h,0] L1 →
+      ∃∃T. ❪G,L0❫ ⊢ T1 ➡*[h,0] T & ❪G,L1❫ ⊢ T0 ➡*[h,0] T.
 #h #G #L0 #T0 #T1 #HT01 #L1 #HL01
 elim (cprs_lpr_conf_dx … HT01 … HL01) -HT01 #T #HT1 #HT0
 /3 width=3 by lpr_cpms_trans, ex2_intro/
index 14503c1ecd24073c6d74e5e01dec52e09f296573..4ea686119aaf577dd25a6ec133d0508efd5a41d1 100644 (file)
@@ -22,7 +22,7 @@ include "basic_2/rt_computation/cpms.ma".
 (* Properties with sort-irrelevant whd equivalence on terms *****************)
 
 lemma cprs_abbr_pos_twneq (h) (G) (L) (V) (T1):
-      ∃∃T2. ❪G,L❫ ⊢ +ⓓV.T1 ➡*[h] T2 & (+ⓓV.T1 ≅ T2 → ⊥).
+      ∃∃T2. ❪G,L❫ ⊢ +ⓓV.T1 ➡*[h,0] T2 & (+ⓓV.T1 ≅ T2 → ⊥).
 #h #G #L #V #U1
 elim (cpr_subst h G (L.ⓓV) U1 … 0) [|*: /2 width=4 by drops_refl/ ] #U2 #T2 #HU12 #HTU2
 elim (tweq_dec U1 U2) [ #HpU12 | -HTU2 #HnU12 ]
index 479b3898d9d0597576eccb6159f04c61d80b8b83..a21ec7041f5e82502ec6dfa39c2beeb47a3e962b 100644 (file)
@@ -21,7 +21,7 @@ include "basic_2/rt_computation/cpts.ma".
 (* Forward lemmas with t-bound rt-computation for terms *********************)
 
 lemma cpts_fwd_cpms (h) (n) (G) (L):
-      ∀T1,T2. ❪G,L❫ ⊢ T1 ⬆*[h,n] T2 → ❪G,L❫ ⊢ T1 ➡*[n,h] T2.
+      ∀T1,T2. ❪G,L❫ ⊢ T1 ⬆*[h,n] T2 → ❪G,L❫ ⊢ T1 ➡*[h,n] T2.
 #h #n #G #L #T1 #T2 #H
 @(cpts_ind_dx … H) -n -T2 [ // ]
 #n1 #n2 #T #T2 #_ #IH #HT2
@@ -30,6 +30,6 @@ qed-.
 
 lemma cpts_cprs_trans (h) (n) (G) (L) (T):
       ∀T1. ❪G,L❫ ⊢ T1 ⬆*[h,n] T →
-      ∀T2. ❪G,L❫ ⊢ T ➡*[h] T2 → ❪G,L❫ ⊢ T1 ➡*[n,h] T2.
+      ∀T2. ❪G,L❫ ⊢ T ➡*[h,0] T2 → ❪G,L❫ ⊢ T1 ➡*[h,n] T2.
 #h #n #G #L #T #T1 #HT1 #T2 #HT2
 /3 width=3 by cpts_fwd_cpms, cpms_cprs_trans/ qed-.
index 2d33bdf492d5d1afe00a67e0f562dce3ea8d5e4d..8d940a856aa7f28a1a3161d81a23367dab006352 100644 (file)
@@ -20,46 +20,48 @@ include "basic_2/rt_computation/fpbs.ma".
 (* PROPER PARALLEL RST-COMPUTATION FOR CLOSURES *****************************)
 
 definition fpbg: ∀h. tri_relation genv lenv term ≝
-                 λh,G1,L1,T1,G2,L2,T2.
-                 ∃∃G,L,T. ❪G1,L1,T1❫ ≻[h] ❪G,L,T❫ & ❪G,L,T❫ ≥[h] ❪G2,L2,T2❫.
+           λh,G1,L1,T1,G2,L2,T2.
+           ∃∃G,L,T. ❪G1,L1,T1❫ ≻[h] ❪G,L,T❫ & ❪G,L,T❫ ≥[h] ❪G2,L2,T2❫.
 
 interpretation "proper parallel rst-computation (closure)"
    'PRedSubTyStarProper h G1 L1 T1 G2 L2 T2 = (fpbg h G1 L1 T1 G2 L2 T2).
 
 (* Basic properties *********************************************************)
 
-lemma fpb_fpbg: ∀h,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≻[h] ❪G2,L2,T2❫ →
-                ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
+lemma fpb_fpbg: ∀h,G1,G2,L1,L2,T1,T2.
+      ❪G1,L1,T1❫ ≻[h] ❪G2,L2,T2❫ → ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
 /2 width=5 by ex2_3_intro/ qed.
 
 lemma fpbg_fpbq_trans: ∀h,G1,G,G2,L1,L,L2,T1,T,T2.
-                       ❪G1,L1,T1❫ >[h] ❪G,L,T❫ → ❪G,L,T❫ ≽[h] ❪G2,L2,T2❫ →
-                       ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
+      ❪G1,L1,T1❫ >[h] ❪G,L,T❫ → ❪G,L,T❫ ≽[h] ❪G2,L2,T2❫ →
+      ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
 #h #G1 #G #G2 #L1 #L #L2 #T1 #T #T2 *
 /3 width=9 by fpbs_strap1, ex2_3_intro/
 qed-.
 
 lemma fpbg_fqu_trans (h): ∀G1,G,G2,L1,L,L2,T1,T,T2.
-                          ❪G1,L1,T1❫ >[h] ❪G,L,T❫ → ❪G,L,T❫ ⬂ ❪G2,L2,T2❫ →
-                          ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
+      ❪G1,L1,T1❫ >[h] ❪G,L,T❫ → ❪G,L,T❫ ⬂ ❪G2,L2,T2❫ →
+      ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
 #h #G1 #G #G2 #L1 #L #L2 #T1 #T #T2 #H1 #H2
 /4 width=5 by fpbg_fpbq_trans, fpbq_fquq, fqu_fquq/
 qed-.
 
 (* Note: this is used in the closure proof *)
-lemma fpbg_fpbs_trans: ∀h,G,G2,L,L2,T,T2. ❪G,L,T❫ ≥[h] ❪G2,L2,T2❫ →
-                       ∀G1,L1,T1. ❪G1,L1,T1❫ >[h] ❪G,L,T❫ → ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
+lemma fpbg_fpbs_trans: ∀h,G,G2,L,L2,T,T2.
+      ❪G,L,T❫ ≥[h] ❪G2,L2,T2❫ →
+      ∀G1,L1,T1. ❪G1,L1,T1❫ >[h] ❪G,L,T❫ → ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
 #h #G #G2 #L #L2 #T #T2 #H @(fpbs_ind_dx … H) -G -L -T /3 width=5 by fpbg_fpbq_trans/
 qed-.
 
 (* Basic_2A1: uses: fpbg_fleq_trans *)
-lemma fpbg_feqx_trans: ∀h,G1,G,L1,L,T1,T. ❪G1,L1,T1❫ >[h] ❪G,L,T❫ →
-                       ∀G2,L2,T2. ❪G,L,T❫ ≛ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
+lemma fpbg_feqx_trans: ∀h,G1,G,L1,L,T1,T.
+      ❪G1,L1,T1❫ >[h] ❪G,L,T❫ →
+      ∀G2,L2,T2. ❪G,L,T❫ ≛ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
 /3 width=5 by fpbg_fpbq_trans, fpbq_feqx/ qed-.
 
 (* Properties with t-bound rt-transition for terms **************************)
 
 lemma cpm_tneqx_cpm_fpbg (h) (G) (L):
-                         ∀n1,T1,T. ❪G,L❫ ⊢ T1 ➡[n1,h] T → (T1 ≛ T → ⊥) →
-                         ∀n2,T2. ❪G,L❫ ⊢ T ➡[n2,h] T2 → ❪G,L,T1❫ >[h] ❪G,L,T2❫.
+      ∀n1,T1,T. ❪G,L❫ ⊢ T1 ➡[h,n1] T → (T1 ≛ T → ⊥) →
+      ∀n2,T2. ❪G,L❫ ⊢ T ➡[h,n2] T2 → ❪G,L,T1❫ >[h] ❪G,L,T2❫.
 /4 width=5 by fpbq_fpbs, cpm_fpbq, cpm_fpb, ex2_3_intro/ qed.
index d4061da3936799e108668242ee7bbc35c04a6bbf..1d7f3a1805a03623a2fa758f6e08a1f08286669e 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/predsnstar_4.ma".
+include "basic_2/notation/relations/predsnstar_5.ma".
 include "static_2/relocation/lex.ma".
 include "basic_2/rt_computation/cprs_ext.ma".
 
 (* PARALLEL R-COMPUTATION FOR FULL LOCAL ENVIRONMENTS ***********************)
 
-definition lprs (h) (G): relation lenv ≝
-                         lex (λL.cpms h G L 0).
+definition lprs (h) (n) (G): relation lenv ≝
+           lex (λL.cpms h G L n).
 
 interpretation
    "parallel r-computation on all entries (local environment)"
-   'PRedSnStar h G L1 L2 = (lprs h G L1 L2).
+   'PRedSnStar h n G L1 L2 = (lprs h n G L1 L2).
 
 (* Basic properties *********************************************************)
 
 (* Basic_2A1: uses: lprs_pair_refl *)
-lemma lprs_bind_refl_dx (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡*[h] L2 →
-                                 ∀I. ❪G,L1.ⓘ[I]❫ ⊢ ➡*[h] L2.ⓘ[I].
+lemma lprs_bind_refl_dx (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡*[h,0] L2 →
+                                 ∀I. ❪G,L1.ⓘ[I]❫ ⊢ ➡*[h,0] L2.ⓘ[I].
 /2 width=1 by lex_bind_refl_dx/ qed.
 
-lemma lprs_pair (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡*[h] L2 →
-                         ∀V1,V2. ❪G,L1❫ ⊢ V1 ➡*[h] V2 →
-                         ∀I. ❪G,L1.ⓑ[I]V1❫ ⊢ ➡*[h] L2.ⓑ[I]V2.
+lemma lprs_pair (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡*[h,0] L2 →
+                         ∀V1,V2. ❪G,L1❫ ⊢ V1 ➡*[h,0] V2 →
+                         ∀I. ❪G,L1.ⓑ[I]V1❫ ⊢ ➡*[h,0] L2.ⓑ[I]V2.
 /2 width=1 by lex_pair/ qed.
 
-lemma lprs_refl (h) (G): ∀L. ❪G,L❫ ⊢ ➡*[h] L.
+lemma lprs_refl (h) (G): ∀L. ❪G,L❫ ⊢ ➡*[h,0] L.
 /2 width=1 by lex_refl/ qed.
 
 (* Basic inversion lemmas ***************************************************)
 
 (* Basic_2A1: uses: lprs_inv_atom1 *)
-lemma lprs_inv_atom_sn (h) (G): ∀L2. ❪G,⋆❫ ⊢ ➡*[h] L2 → L2 = ⋆.
+lemma lprs_inv_atom_sn (h) (G): ∀L2. ❪G,⋆❫ ⊢ ➡*[h,0] L2 → L2 = ⋆.
 /2 width=2 by lex_inv_atom_sn/ qed-.
 
 (* Basic_2A1: was: lprs_inv_pair1 *)
 lemma lprs_inv_pair_sn (h) (G):
-                       ∀I,K1,L2,V1. ❪G,K1.ⓑ[I]V1❫ ⊢ ➡*[h] L2 →
-                       ∃∃K2,V2. ❪G,K1❫ ⊢ ➡*[h] K2 & ❪G,K1❫ ⊢ V1 ➡*[h] V2 & L2 = K2.ⓑ[I]V2.
+                       ∀I,K1,L2,V1. ❪G,K1.ⓑ[I]V1❫ ⊢ ➡*[h,0] L2 →
+                       ∃∃K2,V2. ❪G,K1❫ ⊢ ➡*[h,0] K2 & ❪G,K1❫ ⊢ V1 ➡*[h,0] V2 & L2 = K2.ⓑ[I]V2.
 /2 width=1 by lex_inv_pair_sn/ qed-.
 
 (* Basic_2A1: uses: lprs_inv_atom2 *)
-lemma lprs_inv_atom_dx (h) (G): ∀L1. ❪G,L1❫ ⊢ ➡*[h] ⋆ → L1 = ⋆.
+lemma lprs_inv_atom_dx (h) (G): ∀L1. ❪G,L1❫ ⊢ ➡*[h,0] ⋆ → L1 = ⋆.
 /2 width=2 by lex_inv_atom_dx/ qed-.
 
 (* Basic_2A1: was: lprs_inv_pair2 *)
 lemma lprs_inv_pair_dx (h) (G):
-                       ∀I,L1,K2,V2. ❪G,L1❫ ⊢ ➡*[h] K2.ⓑ[I]V2 →
-                       ∃∃K1,V1. ❪G,K1❫ ⊢ ➡*[h] K2 & ❪G,K1❫ ⊢ V1 ➡*[h] V2 & L1 = K1.ⓑ[I]V1.
+                       ∀I,L1,K2,V2. ❪G,L1❫ ⊢ ➡*[h,0] K2.ⓑ[I]V2 →
+                       ∃∃K1,V1. ❪G,K1❫ ⊢ ➡*[h,0] K2 & ❪G,K1❫ ⊢ V1 ➡*[h,0] V2 & L1 = K1.ⓑ[I]V1.
 /2 width=1 by lex_inv_pair_dx/ qed-.
 
 (* Basic eliminators ********************************************************)
@@ -68,12 +68,12 @@ lemma lprs_inv_pair_dx (h) (G):
 lemma lprs_ind (h) (G): ∀Q:relation lenv.
                         Q (⋆) (⋆) → (
                           ∀I,K1,K2.
-                          ❪G,K1❫ ⊢ ➡*[h] K2 →
+                          ❪G,K1❫ ⊢ ➡*[h,0] K2 →
                           Q K1 K2 → Q (K1.ⓘ[I]) (K2.ⓘ[I])
                         ) → (
                           ∀I,K1,K2,V1,V2.
-                          ❪G,K1❫ ⊢ ➡*[h] K2 → ❪G,K1❫ ⊢ V1 ➡*[h] V2 →
+                          ❪G,K1❫ ⊢ ➡*[h,0] K2 → ❪G,K1❫ ⊢ V1 ➡*[h,0] V2 →
                           Q K1 K2 → Q (K1.ⓑ[I]V1) (K2.ⓑ[I]V2)
                         ) →
-                        ∀L1,L2. ❪G,L1❫ ⊢ ➡*[h] L2 → Q L1 L2.
+                        ∀L1,L2. ❪G,L1❫ ⊢ ➡*[h,0] L2 → Q L1 L2.
 /3 width=4 by lex_ind/ qed-.
index e1214dbac5a6b968f260f70a996f02ed7e194331..306766f42b0be6be2643229133e6c78620ce5ffc 100644 (file)
@@ -19,5 +19,6 @@ include "basic_2/rt_computation/lprs_lpxs.ma".
 
 (* Properties with atomic arity assignment for terms ************************)
 
-lemma lprs_aaa_conf (h) (G) (T): Conf3 … (λL. aaa G L T) (lprs h G).
+lemma lprs_aaa_conf (h) (G) (T):
+      Conf3 … (λL. aaa G L T) (lprs h 0 G).
 /3 width=5 by lprs_fwd_lpxs, lpxs_aaa_conf/ qed-.
index 7cd332093e58661c8588971a96073225053b4e14..bee160dd303184529906dc28fcb6b237a0f8edac 100644 (file)
@@ -18,23 +18,24 @@ include "basic_2/rt_computation/lprs_lpr.ma".
 
 (* Properties with t-bound context-sensitive rt-computarion for terms *******)
 
-lemma lprs_cpms_trans (n) (h) (G):
-                      ∀L2,T1,T2. ❪G,L2❫ ⊢ T1 ➡*[n,h] T2 →
-                      ∀L1. ❪G,L1❫ ⊢ ➡*[h] L2 → ❪G,L1❫ ⊢ T1 ➡*[n,h] T2.
-#n #h #G #L2 #T1 #T2 #HT12 #L1 #H
-@(lprs_ind_sn … H) -L1 /2 width=3 by lpr_cpms_trans/
+lemma lprs_cpms_trans (h) (n) (G) (T1:term) (T2:term):
+      ∀L2. ❪G,L2❫ ⊢ T1 ➡*[h,n] T2 →
+      ∀L1. ❪G,L1❫ ⊢ ➡*[h,0] L2 → ❪G,L1❫ ⊢ T1 ➡*[h,n] T2.
+#h #n #G #T1 #T2 #L2 #HT12 #L1 #H
+@(lprs_ind_sn … H) -L1
+/2 width=3 by lpr_cpms_trans/
 qed-.
 
-lemma lprs_cpm_trans (n) (h) (G):
-                     ∀L2,T1,T2. ❪G,L2❫ ⊢ T1 ➡[n,h] T2 →
-                     ∀L1. ❪G,L1❫ ⊢ ➡*[h] L2 → ❪G,L1❫ ⊢ T1 ➡*[n,h] T2.
+lemma lprs_cpm_trans (h) (n) (G) (T1:term) (T2:term):
+      ∀L2. ❪G,L2❫ ⊢ T1 ➡[h,n] T2 →
+      ∀L1. ❪G,L1❫ ⊢ ➡*[h,0] L2 → ❪G,L1❫ ⊢ T1 ➡*[h,n] T2.
 /3 width=3 by lprs_cpms_trans, cpm_cpms/ qed-.
 
 (* Basic_2A1: includes cprs_bind2 *)
-lemma cpms_bind_dx (n) (h) (G) (L):
-                   ∀V1,V2. ❪G,L❫ ⊢ V1 ➡*[h] V2 →
-                   ∀I,T1,T2. ❪G,L.ⓑ[I]V2❫ ⊢ T1 ➡*[n,h] T2 →
-                   ∀p. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ➡*[n,h] ⓑ[p,I]V2.T2.
+lemma cpms_bind_dx (h) (n) (G) (L):
+      ∀V1,V2. ❪G,L❫ ⊢ V1 ➡*[h,0] V2 →
+      ∀I,T1,T2. ❪G,L.ⓑ[I]V2❫ ⊢ T1 ➡*[h,n] T2 →
+      ∀p. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ➡*[h,n] ⓑ[p,I]V2.T2.
 /4 width=5 by lprs_cpms_trans, lprs_pair, cpms_bind/ qed.
 
 (* Inversion lemmas with t-bound context-sensitive rt-computarion for terms *)
@@ -42,11 +43,10 @@ lemma cpms_bind_dx (n) (h) (G) (L):
 (* Basic_1: was: pr3_gen_abst *)
 (* Basic_2A1: includes: cprs_inv_abst1 *)
 (* Basic_2A1: uses: scpds_inv_abst1 *)
-lemma cpms_inv_abst_sn (n) (h) (G) (L):
-                       ∀p,V1,T1,X2. ❪G,L❫ ⊢ ⓛ[p]V1.T1 ➡*[n,h] X2 →
-                       ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡*[h] V2 & ❪G,L.ⓛV1❫ ⊢ T1 ➡*[n,h] T2 &
-                                X2 = ⓛ[p]V2.T2.
-#n #h #G #L #p #V1 #T1 #X2 #H
+lemma cpms_inv_abst_sn (h) (n) (G) (L):
+      ∀p,V1,T1,X2. ❪G,L❫ ⊢ ⓛ[p]V1.T1 ➡*[h,n] X2 →
+      ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡*[h,0] V2 & ❪G,L.ⓛV1❫ ⊢ T1 ➡*[h,n] T2 & X2 = ⓛ[p]V2.T2.
+#h #n #G #L #p #V1 #T1 #X2 #H
 @(cpms_ind_dx … H) -X2 /2 width=5 by ex3_2_intro/
 #n1 #n2 #X #X2 #_ * #V #T #HV1 #HT1 #H1 #H2 destruct
 elim (cpm_inv_abst1 … H2) -H2 #V2 #T2 #HV2 #HT2 #H2 destruct
@@ -54,29 +54,29 @@ elim (cpm_inv_abst1 … H2) -H2 #V2 #T2 #HV2 #HT2 #H2 destruct
 qed-.
 
 lemma cpms_inv_abst_sn_cprs (h) (n) (p) (G) (L) (W):
-                            ∀T,X. ❪G,L❫ ⊢ ⓛ[p]W.T ➡*[n,h] X →
-                            ∃∃U. ❪G,L.ⓛW❫⊢ T ➡*[n,h] U & ❪G,L❫ ⊢ ⓛ[p]W.U ➡*[h] X.
+      ∀T,X. ❪G,L❫ ⊢ ⓛ[p]W.T ➡*[h,n] X →
+      ∃∃U. ❪G,L.ⓛW❫⊢ T ➡*[h,n] U & ❪G,L❫ ⊢ ⓛ[p]W.U ➡*[h,0] X.
 #h #n #p #G #L #W #T #X #H
 elim (cpms_inv_abst_sn … H) -H #W0 #U #HW0 #HTU #H destruct
 @(ex2_intro … HTU) /2 width=1 by cpms_bind/
 qed-.
 
 (* Basic_2A1: includes: cprs_inv_abst *)
-lemma cpms_inv_abst_bi (n) (h) (p1) (p2) (G) (L):
-                       ∀W1,W2,T1,T2. ❪G,L❫ ⊢ ⓛ[p1]W1.T1 ➡*[n,h] ⓛ[p2]W2.T2 →
-                       ∧∧ p1 = p2 & ❪G,L❫ ⊢ W1 ➡*[h] W2 & ❪G,L.ⓛW1❫ ⊢ T1 ➡*[n,h] T2.
-#n #h #p1 #p2 #G #L #W1 #W2 #T1 #T2 #H
+lemma cpms_inv_abst_bi (h) (n) (p1) (p2) (G) (L):
+      ∀W1,W2,T1,T2. ❪G,L❫ ⊢ ⓛ[p1]W1.T1 ➡*[h,n] ⓛ[p2]W2.T2 →
+      ∧∧ p1 = p2 & ❪G,L❫ ⊢ W1 ➡*[h,0] W2 & ❪G,L.ⓛW1❫ ⊢ T1 ➡*[h,n] T2.
+#h #n #p1 #p2 #G #L #W1 #W2 #T1 #T2 #H
 elim (cpms_inv_abst_sn … H) -H #W #T #HW1 #HT1 #H destruct
 /2 width=1 by and3_intro/
 qed-.
 
 (* Basic_1: was pr3_gen_abbr *)
 (* Basic_2A1: includes: cprs_inv_abbr1 *)
-lemma cpms_inv_abbr_sn_dx (n) (h) (G) (L):
-                          ∀p,V1,T1,X2. ❪G,L❫ ⊢ ⓓ[p]V1.T1 ➡*[n,h] X2 →
-                          ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡*[h] V2 & ❪G,L.ⓓV1❫ ⊢ T1 ➡*[n,h] T2 & X2 = ⓓ[p]V2.T2
-                           | ∃∃T2. ❪G,L.ⓓV1❫ ⊢ T1 ➡*[n ,h] T2 & ⇧[1] X2 ≘ T2 & p = Ⓣ.
-#n #h #G #L #p #V1 #T1 #X2 #H
+lemma cpms_inv_abbr_sn_dx (h) (n) (G) (L):
+      ∀p,V1,T1,X2. ❪G,L❫ ⊢ ⓓ[p]V1.T1 ➡*[h,n] X2 →
+      ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡*[h,0] V2 & ❪G,L.ⓓV1❫ ⊢ T1 ➡*[h,n] T2 & X2 = ⓓ[p]V2.T2
+       | ∃∃T2. ❪G,L.ⓓV1❫ ⊢ T1 ➡*[h,n] T2 & ⇧[1] X2 ≘ T2 & p = Ⓣ.
+#h #n #G #L #p #V1 #T1 #X2 #H
 @(cpms_ind_dx … H) -X2 -n /3 width=5 by ex3_2_intro, or_introl/
 #n1 #n2 #X #X2 #_ * *
 [ #V #T #HV1 #HT1 #H #HX2 destruct
@@ -94,10 +94,10 @@ lemma cpms_inv_abbr_sn_dx (n) (h) (G) (L):
 qed-.
 
 (* Basic_2A1: uses: scpds_inv_abbr_abst *)
-lemma cpms_inv_abbr_abst (n) (h) (G) (L):
-                         ∀p1,p2,V1,W2,T1,T2. ❪G,L❫ ⊢ ⓓ[p1]V1.T1 ➡*[n,h] ⓛ[p2]W2.T2 →
-                         ∃∃T. ❪G,L.ⓓV1❫ ⊢ T1 ➡*[n,h] T & ⇧[1] ⓛ[p2]W2.T2 ≘ T & p1 = Ⓣ.
-#n #h #G #L #p1 #p2 #V1 #W2 #T1 #T2 #H
+lemma cpms_inv_abbr_abst (h) (n) (G) (L):
+      ∀p1,p2,V1,W2,T1,T2. ❪G,L❫ ⊢ ⓓ[p1]V1.T1 ➡*[h,n] ⓛ[p2]W2.T2 →
+      ∃∃T. ❪G,L.ⓓV1❫ ⊢ T1 ➡*[h,n] T & ⇧[1] ⓛ[p2]W2.T2 ≘ T & p1 = Ⓣ.
+#h #n #G #L #p1 #p2 #V1 #W2 #T1 #T2 #H
 elim (cpms_inv_abbr_sn_dx … H) -H *
 [ #V #T #_ #_ #H destruct
 | /2 width=3 by ex3_intro/
index fafeabe1e754ff81895f356f4e0817d857bb1c1b..5dc4727467c77ddd7e88949fa57a80696b80f1e0 100644 (file)
@@ -20,16 +20,16 @@ include "basic_2/rt_computation/lprs_cpms.ma".
 (* Advanced properties ******************************************************)
 
 (* Basic_2A1: was: lprs_pair2 *)
-lemma lprs_pair_dx (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡*[h] L2 →
-                            ∀V1,V2. ❪G,L2❫ ⊢ V1 ➡*[h] V2 →
-                            ∀I. ❪G,L1.ⓑ[I]V1❫ ⊢ ➡*[h] L2.ⓑ[I]V2.
+lemma lprs_pair_dx (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡*[h,0] L2 →
+                            ∀V1,V2. ❪G,L2❫ ⊢ V1 ➡*[h,0] V2 →
+                            ∀I. ❪G,L1.ⓑ[I]V1❫ ⊢ ➡*[h,0] L2.ⓑ[I]V2.
 /3 width=3 by lprs_pair, lprs_cpms_trans/ qed.
 
 (* Properties on context-sensitive parallel r-computation for terms *********)
 
-lemma lprs_cprs_conf_dx (h) (G): ∀L0.∀T0,T1:term. ❪G,L0❫ ⊢ T0 ➡*[h] T1 →
-                                 ∀L1. ❪G,L0❫ ⊢ ➡*[h] L1 →
-                                 ∃∃T. ❪G,L1❫ ⊢ T1 ➡*[h] T & ❪G,L1❫ ⊢ T0 ➡*[h] T.
+lemma lprs_cprs_conf_dx (h) (G): ∀L0.∀T0,T1:term. ❪G,L0❫ ⊢ T0 ➡*[h,0] T1 →
+                                 ∀L1. ❪G,L0❫ ⊢ ➡*[h,0] L1 →
+                                 ∃∃T. ❪G,L1❫ ⊢ T1 ➡*[h,0] T & ❪G,L1❫ ⊢ T0 ➡*[h,0] T.
 #h #G #L0 #T0 #T1 #HT01 #L1 #H
 @(lprs_ind_dx … H) -L1 /2 width=3 by ex2_intro/
 #L #L1 #_ #HL1 * #T #HT1 #HT0 -L0
@@ -39,21 +39,21 @@ elim (cprs_conf … HT2 … HT3) -T
 /3 width=5 by cprs_trans, ex2_intro/
 qed-.
 
-lemma lprs_cpr_conf_dx (h) (G): ∀L0. ∀T0,T1:term. ❪G,L0❫ ⊢ T0 ➡[h] T1 →
-                                ∀L1. ❪G,L0❫ ⊢ ➡*[h] L1 →
-                                ∃∃T. ❪G,L1❫ ⊢ T1 ➡*[h] T & ❪G,L1❫ ⊢ T0 ➡*[h] T.
+lemma lprs_cpr_conf_dx (h) (G): ∀L0. ∀T0,T1:term. ❪G,L0❫ ⊢ T0 ➡[h,0] T1 →
+                                ∀L1. ❪G,L0❫ ⊢ ➡*[h,0] L1 →
+                                ∃∃T. ❪G,L1❫ ⊢ T1 ➡*[h,0] T & ❪G,L1❫ ⊢ T0 ➡*[h,0] T.
 /3 width=3 by lprs_cprs_conf_dx, cpm_cpms/ qed-.
 
 (* Note: this can be proved on its own using lprs_ind_sn *)
-lemma lprs_cprs_conf_sn (h) (G): ∀L0. ∀T0,T1:term. ❪G,L0❫ ⊢ T0 ➡*[h] T1 →
-                                 ∀L1. ❪G,L0❫ ⊢ ➡*[h] L1 →
-                                 ∃∃T. ❪G,L0❫ ⊢ T1 ➡*[h] T & ❪G,L1❫ ⊢ T0 ➡*[h] T.
+lemma lprs_cprs_conf_sn (h) (G): ∀L0. ∀T0,T1:term. ❪G,L0❫ ⊢ T0 ➡*[h,0] T1 →
+                                 ∀L1. ❪G,L0❫ ⊢ ➡*[h,0] L1 →
+                                 ∃∃T. ❪G,L0❫ ⊢ T1 ➡*[h,0] T & ❪G,L1❫ ⊢ T0 ➡*[h,0] T.
 #h #G #L0 #T0 #T1 #HT01 #L1 #HL01
 elim (lprs_cprs_conf_dx … HT01 … HL01) -HT01
 /3 width=3 by lprs_cpms_trans, ex2_intro/
 qed-.
 
-lemma lprs_cpr_conf_sn (h) (G): ∀L0. ∀T0,T1:term. ❪G,L0❫ ⊢ T0 ➡[h] T1 →
-                                ∀L1. ❪G,L0❫ ⊢ ➡*[h] L1 →
-                                ∃∃T. ❪G,L0❫ ⊢ T1 ➡*[h] T & ❪G,L1❫ ⊢ T0 ➡*[h] T.
+lemma lprs_cpr_conf_sn (h) (G): ∀L0. ∀T0,T1:term. ❪G,L0❫ ⊢ T0 ➡[h,0] T1 →
+                                ∀L1. ❪G,L0❫ ⊢ ➡*[h,0] L1 →
+                                ∃∃T. ❪G,L0❫ ⊢ T1 ➡*[h,0] T & ❪G,L1❫ ⊢ T0 ➡*[h,0] T.
 /3 width=3 by lprs_cprs_conf_sn, cpm_cpms/ qed-.
index 6406552e0b68b5d9cc73efb94836e45146502d6c..01e1c16ee08fbaf4b030653dce7917b1dde94870 100644 (file)
@@ -20,11 +20,11 @@ include "basic_2/rt_computation/lprs.ma".
 (* Properties with contextual transitive closure ****************************)
 
 lemma lprs_CTC (h) (G):
-               ∀L1,L2. L1⪤[CTC … (λL. cpm h G L 0)] L2 → ❪G,L1❫⊢ ➡*[h] L2.
+               ∀L1,L2. L1⪤[CTC … (λL. cpm h G L 0)] L2 → ❪G,L1❫⊢ ➡*[h,0] L2.
 /3 width=3 by cprs_CTC, lex_co/ qed.
 
 (* Inversion lemmas with contextual transitive closure **********************)
 
 lemma lprs_inv_CTC (h) (G):
-                   ∀L1,L2. ❪G,L1❫⊢ ➡*[h] L2 → L1⪤[CTC … (λL. cpm h G L 0)] L2.
+                   ∀L1,L2. ❪G,L1❫⊢ ➡*[h,0] L2 → L1⪤[CTC … (λL. cpm h G L 0)] L2.
 /3 width=3 by cprs_inv_CTC, lex_co/ qed-.
index 060348bf3f237d48517207f735804d52741b361e..8b87da9ab0075b8fb6e94d6d294703629775deb9 100644 (file)
@@ -19,5 +19,5 @@ include "basic_2/rt_computation/lprs.ma".
 
 (* Forward lemmas with length for local environments ************************)
 
-lemma lprs_fwd_length (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡*[h] L2 → |L1| = |L2|.
+lemma lprs_fwd_length (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡*[h,0] L2 → |L1| = |L2|.
 /2 width=2 by lex_fwd_length/ qed-.
index 6424733db5b25067a5c7c1815c325f27961bb158..b1ce9c2429a659f6a9703b890cb7d859647b2c9a 100644 (file)
@@ -19,33 +19,39 @@ include "basic_2/rt_computation/lprs_tc.ma".
 (* Eliminators with r-transition for full local environments ****************)
 
 (* Basic_2A1: was: lprs_ind_dx *)
-lemma lprs_ind_sn (h) (G) (L2): ∀Q:predicate lenv. Q L2 →
-                                (∀L1,L. ❪G,L1❫ ⊢ ➡[h] L → ❪G,L❫ ⊢ ➡*[h] L2 → Q L → Q L1) →
-                                ∀L1. ❪G,L1❫ ⊢ ➡*[h] L2 → Q L1.
+lemma lprs_ind_sn (h) (G) (L2):
+      ∀Q:predicate lenv. Q L2 →
+      (∀L1,L. ❪G,L1❫ ⊢ ➡[h,0] L → ❪G,L❫ ⊢ ➡*[h,0] L2 → Q L → Q L1) →
+      ∀L1. ❪G,L1❫ ⊢ ➡*[h,0] L2 → Q L1.
 /4 width=8 by lprs_inv_CTC, lprs_CTC, lpr_cprs_trans, cpr_refl, lex_CTC_ind_sn/ qed-.
 
 (* Basic_2A1: was: lprs_ind *)
-lemma lprs_ind_dx (h) (G) (L1): ∀Q:predicate lenv. Q L1 →
-                                (∀L,L2. ❪G,L1❫ ⊢ ➡*[h] L → ❪G,L❫ ⊢ ➡[h] L2 → Q L → Q L2) →
-                                ∀L2. ❪G,L1❫ ⊢ ➡*[h] L2 → Q L2.
+lemma lprs_ind_dx (h) (G) (L1):
+      ∀Q:predicate lenv. Q L1 →
+      (∀L,L2. ❪G,L1❫ ⊢ ➡*[h,0] L → ❪G,L❫ ⊢ ➡[h,0] L2 → Q L → Q L2) →
+      ∀L2. ❪G,L1❫ ⊢ ➡*[h,0] L2 → Q L2.
 /4 width=8 by lprs_inv_CTC, lprs_CTC, lpr_cprs_trans, cpr_refl, lex_CTC_ind_dx/ qed-.
 
 (* Properties with unbound rt-transition for full local environments ********)
 
-lemma lpr_lprs (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡[h] L2 → ❪G,L1❫ ⊢ ➡*[h] L2.
+lemma lpr_lprs (h) (G):
+      ∀L1,L2. ❪G,L1❫ ⊢ ➡[h,0] L2 → ❪G,L1❫ ⊢ ➡*[h,0] L2.
 /4 width=3 by lprs_CTC, lpr_cprs_trans, lex_CTC_inj/ qed.
 
 (* Basic_2A1: was: lprs_strap2 *)
-lemma lprs_step_sn (h) (G): ∀L1,L. ❪G,L1❫ ⊢ ➡[h] L →
-                            ∀L2.❪G,L❫ ⊢ ➡*[h] L2 → ❪G,L1❫ ⊢ ➡*[h] L2.
+lemma lprs_step_sn (h) (G):
+      ∀L1,L. ❪G,L1❫ ⊢ ➡[h,0] L →
+      ∀L2.❪G,L❫ ⊢ ➡*[h,0] L2 → ❪G,L1❫ ⊢ ➡*[h,0] L2.
 /4 width=3 by lprs_inv_CTC, lprs_CTC, lpr_cprs_trans, lex_CTC_step_sn/ qed-.
 
 (* Basic_2A1: was: lpxs_strap1 *)
-lemma lprs_step_dx (h) (G): ∀L1,L. ❪G,L1❫ ⊢ ➡*[h] L →
-                            ∀L2. ❪G,L❫ ⊢ ➡[h] L2 → ❪G,L1❫ ⊢ ➡*[h] L2.
+lemma lprs_step_dx (h) (G):
+      ∀L1,L. ❪G,L1❫ ⊢ ➡*[h,0] L →
+      ∀L2. ❪G,L❫ ⊢ ➡[h,0] L2 → ❪G,L1❫ ⊢ ➡*[h,0] L2.
 /4 width=3 by lprs_inv_CTC, lprs_CTC, lpr_cprs_trans, lex_CTC_step_dx/ qed-.
 
-lemma lprs_strip (h) (G): confluent2 … (lprs h G) (lpr h G).
+lemma lprs_strip (h) (G):
+      confluent2 … (lprs h 0 G) (lpr h 0 G).
 #h #G #L0 #L1 #HL01 #L2 #HL02
 elim (TC_strip1 … L1 ?? HL02) -HL02
 [ /3 width=3 by lprs_TC, ex2_intro/ | skip
index ae645f6aad67c3cee61a5d1ed76ecae4108a2b3e..7421955b6e1124c38e977fc593a0fb629ee8700e 100644 (file)
@@ -19,10 +19,10 @@ include "basic_2/rt_computation/lprs_cpms.ma".
 
 (* Main properties **********************************************************)
 
-theorem lprs_trans (h) (G): Transitive … (lprs h G).
+theorem lprs_trans (h) (G): Transitive … (lprs h G).
 /4 width=5 by lprs_cpms_trans, cprs_trans, lex_trans/ qed-.
 
-theorem lprs_conf (h) (G): confluent2 … (lprs h G) (lprs h G).
+theorem lprs_conf (h) (G): confluent2 … (lprs h 0 G) (lprs h 0 G).
 #h #G #L0 #L1 #HL01 #L2 #HL02
 elim (TC_confluent2 … L0 L1 … L2)
 [ /3 width=3 by lprs_TC, ex2_intro/ |5,6: skip
index 2c95704c8dbab5c215377150105d4b248a84f3af..17b1277132e3d64b687929aae447e0bb1e994262 100644 (file)
@@ -22,5 +22,5 @@ include "basic_2/rt_computation/lprs.ma".
 
 (* Basic_2A1: was: lprs_lpxs *)
 (* Note: original proof uses lpr_fwd_lpx and monotonic_TC *)
-lemma lprs_fwd_lpxs (h) (G) : ∀L1,L2. ❪G,L1❫ ⊢ ➡*[h] L2 → ❪G,L1❫ ⊢ ⬈*[h] L2.
+lemma lprs_fwd_lpxs (h) (G) : ∀L1,L2. ❪G,L1❫ ⊢ ➡*[h,0] L2 → ❪G,L1❫ ⊢ ⬈*[h] L2.
 /3 width=3 by cpms_fwd_cpxs, lex_co/ qed-.
index b0602eaa0df48caf79620ec076284a61574d3981..cc3fadc33abe951766c66b0481ea232b1a5013fb 100644 (file)
@@ -21,11 +21,11 @@ include "basic_2/rt_computation/cprs_lpr.ma".
 (* Properties with transitive closure ***************************************)
 
 lemma lprs_TC (h) (G):
-              ∀L1,L2. TC … (lex (λL.cpm h G L 0)) L1 L2 → ❪G,L1❫⊢ ➡*[h] L2.
+              ∀L1,L2. TC … (lex (λL.cpm h G L 0)) L1 L2 → ❪G,L1❫⊢ ➡*[h,0] L2.
 /4 width=3 by lprs_CTC, lex_CTC, lpr_cprs_trans/ qed.
 
 (* Inversion lemmas with transitive closure *********************************)
 
 lemma lprs_inv_TC (h) (G):
-                  ∀L1,L2. ❪G,L1❫⊢ ➡*[h] L2 → TC … (lex (λL.cpm h G L 0)) L1 L2.
+                  ∀L1,L2. ❪G,L1❫⊢ ➡*[h,0] L2 → TC … (lex (λL.cpm h G L 0)) L1 L2.
 /3 width=3 by lprs_inv_CTC, lex_inv_CTC/ qed-.
index fcc70428cfcd7c431386283bddab3f86158de86e..21cb11c00031bb10694c25adc2f6217dd1e18afe 100644 (file)
@@ -18,7 +18,7 @@ include "basic_2/rt_transition/cpm.ma".
 (* CONTEXT-SENSITIVE PARALLEL R-CONVERSION FOR TERMS ************************)
 
 definition cpc: sh → relation4 genv lenv term term ≝
-                λh,G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡[h] T2 ∨ ❪G,L❫ ⊢ T2 ➡[h] T1.
+                λh,G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡[h,0] T2 ∨ ❪G,L❫ ⊢ T2 ➡[h,0] T1.
 
 interpretation
    "context-sensitive parallel r-conversion (term)"
@@ -36,6 +36,6 @@ qed-.
 (* Basic forward lemmas *****************************************************)
 
 lemma cpc_fwd_cpr: ∀h,G,L,T1,T2. ❪G,L❫ ⊢ T1 ⬌[h] T2 →
-                   ∃∃T. ❪G,L❫ ⊢ T1 ➡[h] T & ❪G,L❫ ⊢ T2 ➡[h] T.
+                   ∃∃T. ❪G,L❫ ⊢ T1 ➡[h,0] T & ❪G,L❫ ⊢ T2 ➡[h,0] T.
 #h #G #L #T1 #T2 * /2 width=3 by ex2_intro/
 qed-.
index 0a9de4f23c49f81b463a7fc8e6e40fb07ec90914..e22c7957ac12a8ec3d35a6854f2012961b5afd70 100644 (file)
@@ -70,33 +70,33 @@ normalize /2 width=3 by step/
 qed-.
 
 (* Basic_1: was: pc3_pr2_r *)
-lemma cpr_cpcs_dx (h) (G) (L): ∀T1,T2. ❪G,L❫ ⊢ T1 ➡[h] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
+lemma cpr_cpcs_dx (h) (G) (L): ∀T1,T2. ❪G,L❫ ⊢ T1 ➡[h,0] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
 /3 width=1 by cpc_cpcs, or_introl/ qed.
 
 (* Basic_1: was: pc3_pr2_x *)
-lemma cpr_cpcs_sn (h) (G) (L): ∀T1,T2. ❪G,L❫ ⊢ T2 ➡[h] T1 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
+lemma cpr_cpcs_sn (h) (G) (L): ∀T1,T2. ❪G,L❫ ⊢ T2 ➡[h,0] T1 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
 /3 width=1 by cpc_cpcs, or_intror/ qed.
 
 (* Basic_1: was: pc3_pr2_u *)
 (* Basic_2A1: was: cpcs_cpr_strap2 *)
-lemma cpcs_cpr_step_sn (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ➡[h] T → ∀T2. ❪G,L❫ ⊢ T ⬌*[h] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
+lemma cpcs_cpr_step_sn (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ➡[h,0] T → ∀T2. ❪G,L❫ ⊢ T ⬌*[h] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
 /3 width=3 by cpcs_step_sn, or_introl/ qed-.
 
 (* Basic_2A1: was: cpcs_cpr_strap1 *)
 lemma cpcs_cpr_step_dx (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ⬌*[h] T →
-                                    ∀T2. ❪G,L❫ ⊢ T ➡[h] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
+                                    ∀T2. ❪G,L❫ ⊢ T ➡[h,0] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
 /3 width=3 by cpcs_step_dx, or_introl/ qed-.
 
 lemma cpcs_cpr_div (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ⬌*[h] T →
-                                ∀T2. ❪G,L❫ ⊢ T2 ➡[h] T → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
+                                ∀T2. ❪G,L❫ ⊢ T2 ➡[h,0] T → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
 /3 width=3 by cpcs_step_dx, or_intror/ qed-.
 
-lemma cpr_div (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ➡[h] T →
-                           ∀T2. ❪G,L❫ ⊢ T2 ➡[h] T → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
+lemma cpr_div (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ➡[h,0] T →
+                           ∀T2. ❪G,L❫ ⊢ T2 ➡[h,0] T → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
 /3 width=3 by cpr_cpcs_dx, cpcs_step_dx, or_intror/ qed-.
 
 (* Basic_1: was: pc3_pr2_u2 *)
-lemma cpcs_cpr_conf (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T ➡[h] T1 →
+lemma cpcs_cpr_conf (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T ➡[h,0] T1 →
                                  ∀T2. ❪G,L❫ ⊢ T ⬌*[h] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
 /3 width=3 by cpcs_step_sn, or_intror/ qed-.
 
index 692bd0b6136d15d930a9fad21408fdefbf986da6..97ea77791da0a4c064cdfe251d45e34f5f18eab3 100644 (file)
@@ -44,7 +44,7 @@ lemma cpcs_bind2 (h) (G) (L): ∀V1,V2. ❪G,L❫ ⊢ V1 ⬌*[h] V2 →
 (* Advanced properties with r-transition for full local environments ********)
 
 (* Basic_1: was: pc3_wcpr0 *)
-lemma lpr_cpcs_conf (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡[h] L2 →
+lemma lpr_cpcs_conf (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡[h,0] L2 →
                              ∀T1,T2. ❪G,L1❫ ⊢ T1 ⬌*[h] T2 → ❪G,L2❫ ⊢ T1 ⬌*[h] T2.
 #h #G #L1 #L2 #HL12 #T1 #T2 #H elim (cpcs_inv_cprs … H) -H
 /3 width=5 by cpcs_canc_dx, lpr_cprs_conf/
index 90fd0231372ba45ccfb34a2eae16335d4b5863f5..838b2d620f5ab62328f9d691208cc63a115a6f65 100644 (file)
@@ -21,7 +21,7 @@ include "basic_2/rt_equivalence/cpcs.ma".
 (* Inversion lemmas with context sensitive r-computation on terms ***********)
 
 lemma cpcs_inv_cprs (h) (G) (L): ∀T1,T2. ❪G,L❫ ⊢ T1 ⬌*[h] T2 →
-                                 ∃∃T. ❪G,L❫ ⊢ T1 ➡*[h] T & ❪G,L❫ ⊢ T2 ➡*[h] T.
+                                 ∃∃T. ❪G,L❫ ⊢ T1 ➡*[h,0] T & ❪G,L❫ ⊢ T2 ➡*[h,0] T.
 #h #G #L #T1 #T2 #H @(cpcs_ind_dx … H) -T2
 [ /3 width=3 by ex2_intro/
 | #T #T2 #_ #HT2 * #T0 #HT10 elim HT2 -HT2 #HT2 #HT0
@@ -44,7 +44,7 @@ qed-.
 (* Basic_2A1: was: cpcs_inv_abst1 *)
 lemma cpcs_inv_abst_sn (h) (G) (L):
                        ∀p,W1,T1,X. ❪G,L❫ ⊢ ⓛ[p]W1.T1 ⬌*[h] X →
-                       ∃∃W2,T2. ❪G,L❫ ⊢ X ➡*[h] ⓛ[p]W2.T2 & ❪G,L❫ ⊢ ⓛ[p]W1.T1 ➡*[h] ⓛ[p]W2.T2.
+                       ∃∃W2,T2. ❪G,L❫ ⊢ X ➡*[h,0] ⓛ[p]W2.T2 & ❪G,L❫ ⊢ ⓛ[p]W1.T1 ➡*[h,0] ⓛ[p]W2.T2.
 #h #G #L #p #W1 #T1 #T #H
 elim (cpcs_inv_cprs … H) -H #X #H1 #H2
 elim (cpms_inv_abst_sn … H1) -H1 #W2 #T2 #HW12 #HT12 #H destruct
@@ -54,7 +54,7 @@ qed-.
 (* Basic_2A1: was: cpcs_inv_abst2 *)
 lemma cpcs_inv_abst_dx (h) (G) (L):
                        ∀p,W1,T1,X. ❪G,L❫ ⊢ X ⬌*[h] ⓛ[p]W1.T1 →
-                       ∃∃W2,T2. ❪G,L❫ ⊢ X ➡*[h] ⓛ[p]W2.T2 & ❪G,L❫ ⊢ ⓛ[p]W1.T1 ➡*[h] ⓛ[p]W2.T2.
+                       ∃∃W2,T2. ❪G,L❫ ⊢ X ➡*[h,0] ⓛ[p]W2.T2 & ❪G,L❫ ⊢ ⓛ[p]W1.T1 ➡*[h,0] ⓛ[p]W2.T2.
 /3 width=1 by cpcs_inv_abst_sn, cpcs_sym/ qed-.
 
 (* Basic_1: was: pc3_gen_sort_abst *)
@@ -69,70 +69,70 @@ qed-.
 (* Properties with context sensitive r-computation on terms *****************)
 
 (* Basic_1: was: pc3_pr3_r *)
-lemma cpcs_cprs_dx (h) (G) (L): ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[h] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
+lemma cpcs_cprs_dx (h) (G) (L): ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[h,0] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
 #h #G #L #T1 #T2 #H @(cprs_ind_dx … H) -T2
 /3 width=3 by cpcs_cpr_step_dx, cpcs_step_dx, cpc_cpcs/
 qed.
 
 (* Basic_1: was: pc3_pr3_x *)
-lemma cpcs_cprs_sn (h) (G) (L): ∀T1,T2. ❪G,L❫ ⊢ T2 ➡*[h] T1 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
+lemma cpcs_cprs_sn (h) (G) (L): ∀T1,T2. ❪G,L❫ ⊢ T2 ➡*[h,0] T1 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
 #h #G #L #T1 #T2 #H @(cprs_ind_sn … H) -T2
 /3 width=3 by cpcs_cpr_div, cpcs_step_sn, cpcs_cprs_dx/
 qed.
 
 (* Basic_2A1: was: cpcs_cprs_strap1 *)
 lemma cpcs_cprs_step_dx (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ⬌*[h] T →
-                                     ∀T2. ❪G,L❫ ⊢ T ➡*[h] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
+                                     ∀T2. ❪G,L❫ ⊢ T ➡*[h,0] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
 #h #G #L #T1 #T #HT1 #T2 #H @(cprs_ind_dx … H) -T2 /2 width=3 by cpcs_cpr_step_dx/
 qed-.
 
 (* Basic_2A1: was: cpcs_cprs_strap2 *)
-lemma cpcs_cprs_step_sn (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ➡*[h] T →
+lemma cpcs_cprs_step_sn (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ➡*[h,0] T →
                                      ∀T2. ❪G,L❫ ⊢ T ⬌*[h] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
 #h #G #L #T1 #T #H #T2 #HT2 @(cprs_ind_sn … H) -T1 /2 width=3 by cpcs_cpr_step_sn/
 qed-.
 
 lemma cpcs_cprs_div (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ⬌*[h] T →
-                                 ∀T2. ❪G,L❫ ⊢ T2 ➡*[h] T → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
+                                 ∀T2. ❪G,L❫ ⊢ T2 ➡*[h,0] T → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
 #h #G #L #T1 #T #HT1 #T2 #H @(cprs_ind_sn … H) -T2 /2 width=3 by cpcs_cpr_div/
 qed-.
 
 (* Basic_1: was: pc3_pr3_conf *)
-lemma cpcs_cprs_conf (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T ➡*[h] T1 →
+lemma cpcs_cprs_conf (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T ➡*[h,0] T1 →
                                   ∀T2. ❪G,L❫ ⊢ T ⬌*[h] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
 #h #G #L #T1 #T #H #T2 #HT2 @(cprs_ind_dx … H) -T1 /2 width=3 by cpcs_cpr_conf/
 qed-.
 
 (* Basic_1: was: pc3_pr3_t *)
 (* Basic_1: note: pc3_pr3_t should be renamed *)
-lemma cprs_div (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ➡*[h] T →
-                            ∀T2. ❪G,L❫ ⊢ T2 ➡*[h] T → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
+lemma cprs_div (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ➡*[h,0] T →
+                            ∀T2. ❪G,L❫ ⊢ T2 ➡*[h,0] T → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
 #h #G #L #T1 #T #HT1 #T2 #H @(cprs_ind_sn … H) -T2
 /2 width=3 by cpcs_cpr_div, cpcs_cprs_dx/
 qed.
 
-lemma cprs_cpr_div (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ➡*[h] T →
-                                ∀T2. ❪G,L❫ ⊢ T2 ➡[h] T → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
+lemma cprs_cpr_div (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ➡*[h,0] T →
+                                ∀T2. ❪G,L❫ ⊢ T2 ➡[h,0] T → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
 /3 width=5 by cpm_cpms, cprs_div/ qed-.
 
-lemma cpr_cprs_div (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ➡[h] T →
-                                ∀T2. ❪G,L❫ ⊢ T2 ➡*[h] T → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
+lemma cpr_cprs_div (h) (G) (L): ∀T1,T. ❪G,L❫ ⊢ T1 ➡[h,0] T →
+                                ∀T2. ❪G,L❫ ⊢ T2 ➡*[h,0] T → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
 /3 width=3 by cpm_cpms, cprs_div/ qed-.
 
-lemma cpr_cprs_conf_cpcs (h) (G) (L): ∀T,T1. ❪G,L❫ ⊢ T ➡*[h] T1 →
-                                      ∀T2. ❪G,L❫ ⊢ T ➡[h] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
+lemma cpr_cprs_conf_cpcs (h) (G) (L): ∀T,T1. ❪G,L❫ ⊢ T ➡*[h,0] T1 →
+                                      ∀T2. ❪G,L❫ ⊢ T ➡[h,0] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
 #h #G #L #T #T1 #HT1 #T2 #HT2 elim (cprs_strip … HT1 … HT2) -HT1 -HT2
 /2 width=3 by cpr_cprs_div/
 qed-.
 
-lemma cprs_cpr_conf_cpcs (h) (G) (L): ∀T,T1. ❪G,L❫ ⊢ T ➡*[h] T1 →
-                                      ∀T2. ❪G,L❫ ⊢ T ➡[h] T2 → ❪G,L❫ ⊢ T2 ⬌*[h] T1.
+lemma cprs_cpr_conf_cpcs (h) (G) (L): ∀T,T1. ❪G,L❫ ⊢ T ➡*[h,0] T1 →
+                                      ∀T2. ❪G,L❫ ⊢ T ➡[h,0] T2 → ❪G,L❫ ⊢ T2 ⬌*[h] T1.
 #h #G #L #T #T1 #HT1 #T2 #HT2 elim (cprs_strip … HT1 … HT2) -HT1 -HT2
 /2 width=3 by cprs_cpr_div/
 qed-.
 
-lemma cprs_conf_cpcs (h) (G) (L): ∀T,T1. ❪G,L❫ ⊢ T ➡*[h] T1 →
-                                  ∀T2. ❪G,L❫ ⊢ T ➡*[h] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
+lemma cprs_conf_cpcs (h) (G) (L): ∀T,T1. ❪G,L❫ ⊢ T ➡*[h,0] T1 →
+                                  ∀T2. ❪G,L❫ ⊢ T ➡*[h,0] T2 → ❪G,L❫ ⊢ T1 ⬌*[h] T2.
 #h #G #L #T #T1 #HT1 #T2 #HT2 elim (cprs_conf … HT1 … HT2) -HT1 -HT2
 /2 width=3 by cprs_div/
 qed-.
@@ -147,7 +147,7 @@ elim (cpcs_inv_cprs … HT12) -HT12
 /3 width=5 by cprs_flat, cprs_div/
 qed.
 
-lemma cpcs_flat_dx_cpr_rev (h) (G) (L): ∀V1,V2. ❪G,L❫ ⊢ V2 ➡[h] V1 →
+lemma cpcs_flat_dx_cpr_rev (h) (G) (L): ∀V1,V2. ❪G,L❫ ⊢ V2 ➡[h,0] V1 →
                                         ∀T1,T2. ❪G,L❫ ⊢ T1 ⬌*[h] T2 →
                                         ∀I. ❪G,L❫ ⊢ ⓕ[I]V1.T1 ⬌*[h] ⓕ[I]V2.T2.
 /3 width=1 by cpr_cpcs_sn, cpcs_flat/ qed.
index a47534026bf1807ba3edc69d940efa9b622ae236..aebf01f07b88b13bf4b5241bb0e8a1378b7b7b89 100644 (file)
@@ -19,20 +19,20 @@ include "basic_2/rt_equivalence/cpcs_cprs.ma".
 
 (* Properties with parallel r-computation for full local environments *******)
 
-lemma lpr_cpcs_trans (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡[h] L2 →
+lemma lpr_cpcs_trans (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡[h,0] L2 →
                               ∀T1,T2. ❪G,L2❫ ⊢ T1 ⬌*[h] T2 → ❪G,L1❫ ⊢ T1 ⬌*[h] T2.
 #h #G #L1 #L2 #HL12 #T1 #T2 #H elim (cpcs_inv_cprs … H) -H
  /4 width=5 by cprs_div, lpr_cpms_trans/
 qed-.
 
-lemma lprs_cpcs_trans (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡*[h] L2 →
+lemma lprs_cpcs_trans (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡*[h,0] L2 →
                                ∀T1,T2. ❪G,L2❫ ⊢ T1 ⬌*[h] T2 → ❪G,L1❫ ⊢ T1 ⬌*[h] T2.
 #h #G #L1 #L2 #HL12 #T1 #T2 #H elim (cpcs_inv_cprs … H) -H
 /4 width=5 by cprs_div, lprs_cpms_trans/
 qed-.
 
-lemma lprs_cprs_conf (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡*[h] L2 →
-                              ∀T1,T2. ❪G,L1❫ ⊢ T1 ➡*[h] T2 → ❪G,L2❫ ⊢ T1 ⬌*[h] T2.
+lemma lprs_cprs_conf (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡*[h,0] L2 →
+                              ∀T1,T2. ❪G,L1❫ ⊢ T1 ➡*[h,0] T2 → ❪G,L2❫ ⊢ T1 ⬌*[h] T2.
 #h #G #L1 #L2 #HL12 #T1 #T2 #HT12 elim (lprs_cprs_conf_dx … HT12 … HL12) -L1
 /2 width=3 by cprs_div/
 qed-.
@@ -40,16 +40,16 @@ qed-.
 (* Basic_1: was: pc3_wcpr0_t *)
 (* Basic_1: note: pc3_wcpr0_t should be renamed *)
 (* Note: alternative proof /3 width=5 by lprs_cprs_conf, lpr_lprs/ *)
-lemma lpr_cprs_conf (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡[h] L2 →
-                             ∀T1,T2. ❪G,L1❫ ⊢ T1 ➡*[h] T2 → ❪G,L2❫ ⊢ T1 ⬌*[h] T2.
+lemma lpr_cprs_conf (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡[h,0] L2 →
+                             ∀T1,T2. ❪G,L1❫ ⊢ T1 ➡*[h,0] T2 → ❪G,L2❫ ⊢ T1 ⬌*[h] T2.
 #h #G #L1 #L2 #HL12 #T1 #T2 #HT12 elim (cprs_lpr_conf_dx … HT12 … HL12) -L1
 /2 width=3 by cprs_div/
 qed-.
 
 (* Basic_1: was only: pc3_pr0_pr2_t *)
 (* Basic_1: note: pc3_pr0_pr2_t should be renamed *)
-lemma lpr_cpr_conf (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡[h] L2 →
-                            ∀T1,T2. ❪G,L1❫ ⊢ T1 ➡[h] T2 → ❪G,L2❫ ⊢ T1 ⬌*[h] T2.
+lemma lpr_cpr_conf (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡[h,0] L2 →
+                            ∀T1,T2. ❪G,L1❫ ⊢ T1 ➡[h,0] T2 → ❪G,L2❫ ⊢ T1 ⬌*[h] T2.
 /3 width=5 by lpr_cprs_conf, cpm_cpms/ qed-.
 
 (* Advanced inversion lemmas ************************************************)
index 07e5285b51e6d5a50800d1951cfaf107467aac2d..67f6144816fa61f4a82ddaf134a2cbca7ebcdb90 100644 (file)
@@ -20,7 +20,7 @@ include "basic_2/rt_computation/cpms.ma".
 (* Basic_2A1: uses: scpes *)
 definition cpes (h) (n1) (n2): relation4 genv lenv term term ≝
            λG,L,T1,T2.
-           ∃∃T. ❪G,L❫ ⊢ T1 ➡*[n1,h] T & ❪G,L❫ ⊢ T2 ➡*[n2,h] T.
+           ∃∃T. ❪G,L❫ ⊢ T1 ➡*[h,n1] T & ❪G,L❫ ⊢ T2 ➡*[h,n2] T.
 
 interpretation "t-bound context-sensitive parallel rt-equivalence (term)"
    'PConvStar h n1 n2 G L T1 T2 = (cpes h n1 n2 G L T1 T2).
@@ -29,8 +29,8 @@ interpretation "t-bound context-sensitive parallel rt-equivalence (term)"
 
 (* Basic_2A1: uses: scpds_div *)
 lemma cpms_div (h) (n1) (n2):
-      ∀G,L,T1,T. ❪G,L❫ ⊢ T1 ➡*[n1,h] T →
-      ∀T2. ❪G,L❫ ⊢ T2 ➡*[n2,h] T → ❪G,L❫ ⊢ T1 ⬌*[h,n1,n2] T2.
+      ∀G,L,T1,T. ❪G,L❫ ⊢ T1 ➡*[h,n1] T →
+      ∀T2. ❪G,L❫ ⊢ T2 ➡*[h,n2] T → ❪G,L❫ ⊢ T1 ⬌*[h,n1,n2] T2.
 /2 width=3 by ex2_intro/ qed.
 
 lemma cpes_refl (h): ∀G,L. reflexive … (cpes h 0 0 G L).
index 845deae5e461500361533ca3673ea46278c82dd4..cf3813ecfbb966dbb789a721ddca5164c970651e 100644 (file)
@@ -21,7 +21,7 @@ include "basic_2/rt_equivalence/cpes.ma".
 
 lemma cpes_cprs_trans (h) (n) (G) (L) (T0):
       ∀T1.  ❪G,L❫ ⊢ T1 ⬌*[h,n,0] T0 →
-      ∀T2.  ❪G,L❫ ⊢ T0 ➡*[h] T2 → ❪G,L❫ ⊢ T1 ⬌*[h,n,0] T2.
+      ∀T2.  ❪G,L❫ ⊢ T0 ➡*[h,0] T2 → ❪G,L❫ ⊢ T1 ⬌*[h,n,0] T2.
 #h #n #G #L #T0 #T1 * #T #HT1 #HT0 #T2 #HT02
 elim (cprs_conf … HT0 … HT02) -T0 #T0 #HT0 #HT20
 /3 width=3 by cpms_div, cpms_cprs_trans/
@@ -29,7 +29,7 @@ qed-.
 
 lemma cpes_cpms_div (h) (n) (n1) (n2) (G) (L) (T0):
       ∀T1.  ❪G,L❫ ⊢ T1 ⬌*[h,n,n1] T0 →
-      ∀T2.  ❪G,L❫ ⊢ T2 ➡*[n2,h] T0 → ❪G,L❫ ⊢ T1 ⬌*[h,n,n2+n1] T2.
+      ∀T2.  ❪G,L❫ ⊢ T2 ➡*[h,n2] T0 → ❪G,L❫ ⊢ T1 ⬌*[h,n,n2+n1] T2.
 #h #n #n1 #n2 #G #L #T0 #T1 * #T #HT1 #HT0 #T2 #HT20
 lapply (cpms_trans … HT20 … HT0) -T0 #HT2
 /2 width=3 by cpms_div/
index 8d50d4d4d38bd175e9d67e8e4976af5011eaef20..0e21c66879f7aaa355cee3d082cb6d98d7999caa 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/prednormal_4.ma".
+include "basic_2/notation/relations/prednormal_5.ma".
 include "basic_2/rt_transition/cpr.ma".
 
 (* NORMAL TERMS FOR CONTEXT-SENSITIVE R-TRANSITION **************************)
 
-definition cnr (h) (G) (L): predicate term ≝ NF … (cpm h G L 0) (eq …).
+definition cnr (h) (n) (G) (L): predicate term ≝
+           NF … (cpm h G L n) (eq …).
 
 interpretation
    "normality for context-sensitive r-transition (term)"
-   'PRedNormal h G L T = (cnr h G L T).
+   'PRedNormal h n G L T = (cnr h n G L T).
 
 (* Basic inversion lemmas ***************************************************)
 
 lemma cnr_inv_abst (h) (p) (G) (L):
-      ∀V,T. ❪G,L❫ ⊢ ➡[h] 𝐍❪ⓛ[p]V.T❫ → ∧∧ ❪G,L❫ ⊢ ➡[h] 𝐍❪V❫ & ❪G,L.ⓛV❫ ⊢ ➡[h] 𝐍❪T❫.
+      ∀V,T. ❪G,L❫ ⊢ ➡𝐍[h,0] ⓛ[p]V.T →
+      ∧∧ ❪G,L❫ ⊢ ➡𝐍[h,0] V & ❪G,L.ⓛV❫ ⊢ ➡𝐍[h,0] T.
 #h #p #G #L #V1 #T1 #HVT1 @conj
 [ #V2 #HV2 lapply (HVT1 (ⓛ[p]V2.T1) ?) -HVT1 /2 width=2 by cpr_pair_sn/ -HV2 #H destruct //
 | #T2 #HT2 lapply (HVT1 (ⓛ[p]V1.T2) ?) -HVT1 /2 width=2 by cpm_bind/ -HT2 #H destruct //
@@ -35,7 +37,8 @@ qed-.
 
 (* Basic_2A1: was: cnr_inv_abbr *)
 lemma cnr_inv_abbr_neg (h) (G) (L):
-      ∀V,T. ❪G,L❫ ⊢ ➡[h] 𝐍❪-ⓓV.T❫ → ∧∧ ❪G,L❫ ⊢ ➡[h] 𝐍❪V❫ & ❪G,L.ⓓV❫ ⊢ ➡[h] 𝐍❪T❫.
+      ∀V,T. ❪G,L❫ ⊢ ➡𝐍[h,0] -ⓓV.T →
+      ∧∧ ❪G,L❫ ⊢ ➡𝐍[h,0] V & ❪G,L.ⓓV❫ ⊢ ➡𝐍[h,0] T.
 #h #G #L #V1 #T1 #HVT1 @conj
 [ #V2 #HV2 lapply (HVT1 (-ⓓV2.T1) ?) -HVT1 /2 width=2 by cpr_pair_sn/ -HV2 #H destruct //
 | #T2 #HT2 lapply (HVT1 (-ⓓV1.T2) ?) -HVT1 /2 width=2 by cpm_bind/ -HT2 #H destruct //
@@ -43,7 +46,8 @@ lemma cnr_inv_abbr_neg (h) (G) (L):
 qed-.
 
 (* Basic_2A1: was: cnr_inv_eps *)
-lemma cnr_inv_cast (h) (G) (L): ∀V,T. ❪G,L❫ ⊢ ➡[h] 𝐍❪ⓝV.T❫ → ⊥.
+lemma cnr_inv_cast (h) (G) (L):
+      ∀V,T. ❪G,L❫ ⊢ ➡𝐍[h,0] ⓝV.T → ⊥.
 #h #G #L #V #T #H lapply (H T ?) -H
 /2 width=4 by cpm_eps, discr_tpair_xy_y/
 qed-.
@@ -51,26 +55,28 @@ qed-.
 (* Basic properties *********************************************************)
 
 (* Basic_1: was: nf2_sort *)
-lemma cnr_sort (h) (G) (L): ∀s. ❪G,L❫ ⊢ ➡[h] 𝐍❪⋆s❫.
+lemma cnr_sort (h) (G) (L):
+      ∀s. ❪G,L❫ ⊢ ➡𝐍[h,0] ⋆s.
 #h #G #L #s #X #H
 >(cpr_inv_sort1 … H) //
 qed.
 
-lemma cnr_gref (h) (G) (L): ∀l. ❪G,L❫ ⊢ ➡[h] 𝐍❪§l❫.
+lemma cnr_gref (h) (G) (L):
+      ∀l. ❪G,L❫ ⊢ ➡𝐍[h,0] §l.
 #h #G #L #l #X #H
 >(cpr_inv_gref1 … H) //
 qed.
 
 (* Basic_1: was: nf2_abst *)
 lemma cnr_abst (h) (p) (G) (L):
-      ∀W,T. ❪G,L❫ ⊢ ➡[h] 𝐍❪W❫ → ❪G,L.ⓛW❫ ⊢ ➡[h] 𝐍❪T❫ → ❪G,L❫ ⊢ ➡[h] 𝐍❪ⓛ[p]W.T❫.
+      ∀W,T. ❪G,L❫ ⊢ ➡𝐍[h,0] W → ❪G,L.ⓛW❫ ⊢ ➡𝐍[h,0] T → ❪G,L❫ ⊢ ➡𝐍[h,0] ⓛ[p]W.T.
 #h #p #G #L #W #T #HW #HT #X #H
 elim (cpm_inv_abst1 … H) -H #W0 #T0 #HW0 #HT0 #H destruct
 <(HW … HW0) -W0 <(HT … HT0) -T0 //
 qed.
 
 lemma cnr_abbr_neg (h) (G) (L):
-      ∀V,T. ❪G,L❫ ⊢ ➡[h] 𝐍❪V❫ → ❪G,L.ⓓV❫ ⊢ ➡[h] 𝐍❪T❫ → ❪G,L❫ ⊢ ➡[h] 𝐍❪-ⓓV.T❫.
+      ∀V,T. ❪G,L❫ ⊢ ➡𝐍[h,0] V → ❪G,L.ⓓV❫ ⊢ ➡𝐍[h,0] T → ❪G,L❫ ⊢ ➡𝐍[h,0] -ⓓV.T.
 #h #G #L #V #T #HV #HT #X #H
 elim (cpm_inv_abbr1 … H) -H *
 [ #V0 #T0 #HV0 #HT0 #H destruct
index 6a34bb6048e96b63c31eba12407d4dab4f4ca91a..0cbf720110f0ec0514fd3502c8a48c506bfbea0c 100644 (file)
@@ -21,7 +21,7 @@ include "basic_2/rt_transition/cnr.ma".
 
 (* Basic_1: was only: nf2_csort_lref *)
 lemma cnr_lref_atom (h) (b) (G) (L):
-      ∀i. ⇩*[b,𝐔❨i❩] L ≘ ⋆ → ❪G,L❫ ⊢ ➡[h] 𝐍❪#i❫.
+      ∀i. ⇩*[b,𝐔❨i❩] L ≘ ⋆ → ❪G,L❫ ⊢ ➡𝐍[h,0] #i.
 #h #b #G #L #i #Hi #X #H
 elim (cpr_inv_lref1_drops … H) -H // * #K #V1 #V2 #HLK
 lapply (drops_gen b … HLK) -HLK #HLK
@@ -30,7 +30,7 @@ qed.
 
 (* Basic_1: was: nf2_lref_abst *)
 lemma cnr_lref_abst (h) (G) (L):
-      ∀K,V,i. ⇩[i] L ≘ K.ⓛV → ❪G,L❫ ⊢ ➡[h] 𝐍❪#i❫.
+      ∀K,V,i. ⇩[i] L ≘ K.ⓛV → ❪G,L❫ ⊢ ➡𝐍[h,0] #i.
 #h #G #L #K #V #i #HLK #X #H
 elim (cpr_inv_lref1_drops … H) -H // *
 #K0 #V1 #V2 #HLK0 #_ #_
@@ -38,7 +38,7 @@ lapply (drops_mono … HLK … HLK0) -L #H destruct
 qed.
 
 lemma cnr_lref_unit (h) (I) (G) (L):
-      ∀K,i. ⇩[i] L ≘ K.ⓤ[I] → ❪G,L❫ ⊢ ➡[h] 𝐍❪#i❫.
+      ∀K,i. ⇩[i] L ≘ K.ⓤ[I] → ❪G,L❫ ⊢ ➡𝐍[h,0] #i.
 #h #I #G #L #K #i #HLK #X #H
 elim (cpr_inv_lref1_drops … H) -H // *
 #K0 #V1 #V2 #HLK0 #_ #_
@@ -49,7 +49,7 @@ qed.
 
 (* Basic_1: was: nf2_lift *)
 (* Basic_2A1: uses: cnr_lift *)
-lemma cnr_lifts (h) (G): d_liftable1 … (cnr h G).
+lemma cnr_lifts (h) (G): d_liftable1 … (cnr h G).
 #h #G #K #T #HT #b #f #L #HLK #U #HTU #U0 #H
 elim (cpm_inv_lifts_sn … H … HLK … HTU) -b -L #T0 #HTU0 #HT0
 lapply (HT … HT0) -G -K #H destruct /2 width=4 by lifts_mono/
@@ -59,7 +59,7 @@ qed-.
 
 (* Basic_2A1: was: cnr_inv_delta *)
 lemma cnr_inv_lref_abbr (h) (G) (L):
-      ∀K,V,i. ⇩[i] L ≘ K.ⓓV → ❪G,L❫ ⊢ ➡[h] 𝐍❪#i❫ → ⊥.
+      ∀K,V,i. ⇩[i] L ≘ K.ⓓV → ❪G,L❫ ⊢ ➡𝐍[h,0] #i → ⊥.
 #h #G #L #K #V #i #HLK #H
 elim (lifts_total V 𝐔❨↑i❩) #W #HVW
 lapply (H W ?) -H [ /3 width=6 by cpm_delta_drops/ ] -HLK #H destruct
@@ -70,7 +70,7 @@ qed-.
 
 (* Note: this was missing in Basic_1 *)
 (* Basic_2A1: uses: cnr_inv_lift *)
-lemma cnr_inv_lifts (h) (G): d_deliftable1 … (cnr h G).
+lemma cnr_inv_lifts (h) (G): d_deliftable1 … (cnr h G).
 #h #G #L #U #HU #b #f #K #HLK #T #HTU #T0 #H
 elim (cpm_lifts_sn … H … HLK … HTU) -b -K #U0 #HTU0 #HU0
 lapply (HU … HU0) -G -L #H destruct /2 width=4 by lifts_inj/
index 71c9223b26c191f9f007fff928b42eacb62db8cb..bd1e11c003bccb3175c6d0f082dc3d988d42867c 100644 (file)
@@ -20,7 +20,8 @@ include "basic_2/rt_transition/cnr.ma".
 (* Inversion lemmas with simple terms ***************************************)
 
 lemma cnr_inv_appl (h) (G) (L):
-      ∀V,T. ❪G,L❫ ⊢ ➡[h] 𝐍❪ⓐV.T❫ → ∧∧ ❪G,L❫ ⊢ ➡[h] 𝐍❪V❫ & ❪G,L❫ ⊢ ➡[h] 𝐍❪T❫ & 𝐒❪T❫.
+      ∀V,T. ❪G,L❫ ⊢ ➡𝐍[h,0] ⓐV.T →
+      ∧∧ ❪G,L❫ ⊢ ➡𝐍[h,0] V & ❪G,L❫ ⊢ ➡𝐍[h,0] T & 𝐒❪T❫.
 #h #G #L #V1 #T1 #HVT1 @and3_intro
 [ #V2 #HV2 lapply (HVT1 (ⓐV2.T1) ?) -HVT1 /2 width=1 by cpr_pair_sn/ -HV2 #H destruct //
 | #T2 #HT2 lapply (HVT1 (ⓐV1.T2) ?) -HVT1 /2 width=1 by cpr_flat/ -HT2 #H destruct //
@@ -36,7 +37,7 @@ qed-.
 
 (* Basic_1: was only: nf2_appl_lref *)
 lemma cnr_appl_simple (h) (G) (L):
-      ∀V,T. ❪G,L❫ ⊢ ➡[h] 𝐍❪V❫ → ❪G,L❫ ⊢ ➡[h] 𝐍❪T❫ → 𝐒❪T❫ → ❪G,L❫ ⊢ ➡[h] 𝐍❪ⓐV.T❫.
+      ∀V,T. ❪G,L❫ ⊢ ➡𝐍[h,0] V → ❪G,L❫ ⊢ ➡𝐍[h,0] T → 𝐒❪T❫ → ❪G,L❫ ⊢ ➡𝐍[h,0] ⓐV.T.
 #h #G #L #V #T #HV #HT #HS #X #H
 elim (cpm_inv_appl1_simple … H) -H // #V0 #T0 #HV0 #HT0 #H destruct
 <(HV … HV0) -V0 <(HT … HT0) -T0 //
index 8d23d17b33391b42242a3d706a272f306d709fc2..0f2f9d709d36979e5c8df2f35a69323fc937d397 100644 (file)
@@ -24,8 +24,8 @@ include "basic_2/rt_transition/cnr_drops.ma".
 (* Basic_1: was: nf2_dec *)
 (* Basic_2A1: uses: cnr_dec *)
 lemma cnr_dec_teqx (h) (G) (L):
-      ∀T1. ∨∨ ❪G,L❫ ⊢ ➡[h] 𝐍❪T1❫
-            | ∃∃T2. ❪G,L❫ ⊢ T1 ➡[h] T2 & (T1 ≛ T2 → ⊥).
+      ∀T1. ∨∨ ❪G,L❫ ⊢ ➡𝐍[h,0] T1
+            | ∃∃T2. ❪G,L❫ ⊢ T1 ➡[h,0] T2 & (T1 ≛ T2 → ⊥).
 #h #G #L #T1
 @(fqup_wf_ind_eq (Ⓣ) … G L T1) -G -L -T1 #G0 #L0 #T0 #IH #G #L * *
 [ #s #HG #HL #HT destruct -IH
index 8e60c4f2ea8186eda7c9f1fae34e68a68a8bfafa..c2b95d2ac7798fcd13d8f73a3248dddd29077e25 100644 (file)
@@ -20,101 +20,96 @@ include "ground_2/steps/rtc_max_shift.ma".
 include "ground_2/steps/rtc_isrt_plus.ma".
 include "ground_2/steps/rtc_isrt_max_shift.ma".
 include "basic_2/notation/relations/pred_6.ma".
-include "basic_2/notation/relations/pred_5.ma".
 include "basic_2/rt_transition/cpg.ma".
 
 (* T-BOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
 
 (* Basic_2A1: includes: cpr *)
 definition cpm (h) (G) (L) (n): relation2 term term ≝
-                                λT1,T2. ∃∃c. 𝐑𝐓❪n,c❫ & ❪G,L❫ ⊢ T1 ⬈[eq_t,c,h] T2.
+           λT1,T2. ∃∃c. 𝐑𝐓❪n,c❫ & ❪G,L❫ ⊢ T1 ⬈[eq_t,c,h] T2.
 
 interpretation
    "t-bound context-sensitive parallel rt-transition (term)"
-   'PRed n h G L T1 T2 = (cpm h G L n T1 T2).
-
-interpretation
-   "context-sensitive parallel r-transition (term)"
-   'PRed h G L T1 T2 = (cpm h G L O T1 T2).
+   'PRed h n G L T1 T2 = (cpm h G L n T1 T2).
 
 (* Basic properties *********************************************************)
 
-lemma cpm_ess: ∀h,G,L,s. ❪G,L❫ ⊢ ⋆s ➡[1,h] ⋆(⫯[h]s).
+lemma cpm_ess: ∀h,G,L,s. ❪G,L❫ ⊢ ⋆s ➡[h,1] ⋆(⫯[h]s).
 /2 width=3 by cpg_ess, ex2_intro/ qed.
 
-lemma cpm_delta: ∀n,h,G,K,V1,V2,W2. ❪G,K❫ ⊢ V1 ➡[n,h] V2 →
-                 ⇧[1] V2 ≘ W2 → ❪G,K.ⓓV1❫ ⊢ #0 ➡[n,h] W2.
-#n #h #G #K #V1 #V2 #W2 *
+lemma cpm_delta: ∀h,n,G,K,V1,V2,W2. ❪G,K❫ ⊢ V1 ➡[h,n] V2 →
+                 ⇧[1] V2 ≘ W2 → ❪G,K.ⓓV1❫ ⊢ #0 ➡[h,n] W2.
+#h #n #G #K #V1 #V2 #W2 *
 /3 width=5 by cpg_delta, ex2_intro/
 qed.
 
-lemma cpm_ell: ∀n,h,G,K,V1,V2,W2. ❪G,K❫ ⊢ V1 ➡[n,h] V2 →
-               ⇧[1] V2 ≘ W2 → ❪G,K.ⓛV1❫ ⊢ #0 ➡[↑n,h] W2.
-#n #h #G #K #V1 #V2 #W2 *
+lemma cpm_ell: ∀h,n,G,K,V1,V2,W2. ❪G,K❫ ⊢ V1 ➡[h,n] V2 →
+               ⇧[1] V2 ≘ W2 → ❪G,K.ⓛV1❫ ⊢ #0 ➡[h,↑n] W2.
+#h #n #G #K #V1 #V2 #W2 *
 /3 width=5 by cpg_ell, ex2_intro, isrt_succ/
 qed.
 
-lemma cpm_lref: ∀n,h,I,G,K,T,U,i. ❪G,K❫ ⊢ #i ➡[n,h] T →
-                ⇧[1] T ≘ U → ❪G,K.ⓘ[I]❫ ⊢ #↑i ➡[n,h] U.
-#n #h #I #G #K #T #U #i *
+lemma cpm_lref: ∀h,n,I,G,K,T,U,i. ❪G,K❫ ⊢ #i ➡[h,n] T →
+                ⇧[1] T ≘ U → ❪G,K.ⓘ[I]❫ ⊢ #↑i ➡[h,n] U.
+#h #n #I #G #K #T #U #i *
 /3 width=5 by cpg_lref, ex2_intro/
 qed.
 
 (* Basic_2A1: includes: cpr_bind *)
-lemma cpm_bind: ∀n,h,p,I,G,L,V1,V2,T1,T2.
-                ❪G,L❫ ⊢ V1 ➡[h] V2 → ❪G,L.ⓑ[I]V1❫ ⊢ T1 ➡[n,h] T2 →
-                ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ➡[n,h] ⓑ[p,I]V2.T2.
-#n #h #p #I #G #L #V1 #V2 #T1 #T2 * #cV #HcV #HV12 *
+lemma cpm_bind: ∀h,n,p,I,G,L,V1,V2,T1,T2.
+                ❪G,L❫ ⊢ V1 ➡[h,0] V2 → ❪G,L.ⓑ[I]V1❫ ⊢ T1 ➡[h,n] T2 →
+                ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ➡[h,n] ⓑ[p,I]V2.T2.
+#h #n #p #I #G #L #V1 #V2 #T1 #T2 * #cV #HcV #HV12 *
 /5 width=5 by cpg_bind, isrt_max_O1, isr_shift, ex2_intro/
 qed.
 
-lemma cpm_appl: ∀n,h,G,L,V1,V2,T1,T2.
-                ❪G,L❫ ⊢ V1 ➡[h] V2 → ❪G,L❫ ⊢ T1 ➡[n,h] T2 →
-                ❪G,L❫ ⊢ ⓐV1.T1 ➡[n,h] ⓐV2.T2.
-#n #h #G #L #V1 #V2 #T1 #T2 * #cV #HcV #HV12 *
+lemma cpm_appl: ∀h,n,G,L,V1,V2,T1,T2.
+                ❪G,L❫ ⊢ V1 ➡[h,0] V2 → ❪G,L❫ ⊢ T1 ➡[h,n] T2 →
+                ❪G,L❫ ⊢ ⓐV1.T1 ➡[h,n] ⓐV2.T2.
+#h #n #G #L #V1 #V2 #T1 #T2 * #cV #HcV #HV12 *
 /5 width=5 by isrt_max_O1, isr_shift, cpg_appl, ex2_intro/
 qed.
 
-lemma cpm_cast: ∀n,h,G,L,U1,U2,T1,T2.
-                ❪G,L❫ ⊢ U1 ➡[n,h] U2 → ❪G,L❫ ⊢ T1 ➡[n,h] T2 →
-                ❪G,L❫ ⊢ ⓝU1.T1 ➡[n,h] ⓝU2.T2.
-#n #h #G #L #U1 #U2 #T1 #T2 * #cU #HcU #HU12 *
+lemma cpm_cast: ∀h,n,G,L,U1,U2,T1,T2.
+                ❪G,L❫ ⊢ U1 ➡[h,n] U2 → ❪G,L❫ ⊢ T1 ➡[h,n] T2 →
+                ❪G,L❫ ⊢ ⓝU1.T1 ➡[h,n] ⓝU2.T2.
+#h #n #G #L #U1 #U2 #T1 #T2 * #cU #HcU #HU12 *
 /4 width=6 by cpg_cast, isrt_max_idem1, isrt_mono, ex2_intro/
 qed.
 
 (* Basic_2A1: includes: cpr_zeta *)
-lemma cpm_zeta (n) (h) (G) (L):
-               ∀T1,T. ⇧[1] T ≘ T1 → ∀T2. ❪G,L❫ ⊢ T ➡[n,h] T2 →
-               ∀V. ❪G,L❫ ⊢ +ⓓV.T1 ➡[n,h] T2.
-#n #h #G #L #T1 #T #HT1 #T2 *
+lemma cpm_zeta (h) (n) (G) (L):
+               ∀T1,T. ⇧[1] T ≘ T1 → ∀T2. ❪G,L❫ ⊢ T ➡[h,n] T2 →
+               ∀V. ❪G,L❫ ⊢ +ⓓV.T1 ➡[h,n] T2.
+#h #n #G #L #T1 #T #HT1 #T2 *
 /3 width=5 by cpg_zeta, isrt_plus_O2, ex2_intro/
 qed.
 
 (* Basic_2A1: includes: cpr_eps *)
-lemma cpm_eps: ∀n,h,G,L,V,T1,T2. ❪G,L❫ ⊢ T1 ➡[n,h] T2 → ❪G,L❫ ⊢ ⓝV.T1 ➡[n,h] T2.
-#n #h #G #L #V #T1 #T2 *
+lemma cpm_eps: ∀h,n,G,L,V,T1,T2. ❪G,L❫ ⊢ T1 ➡[h,n] T2 → ❪G,L❫ ⊢ ⓝV.T1 ➡[h,n] T2.
+#h #n #G #L #V #T1 #T2 *
 /3 width=3 by cpg_eps, isrt_plus_O2, ex2_intro/
 qed.
 
-lemma cpm_ee: ∀n,h,G,L,V1,V2,T. ❪G,L❫ ⊢ V1 ➡[n,h] V2 → ❪G,L❫ ⊢ ⓝV1.T ➡[↑n,h] V2.
-#n #h #G #L #V1 #V2 #T *
+lemma cpm_ee: ∀h,n,G,L,V1,V2,T. ❪G,L❫ ⊢ V1 ➡[h,n] V2 → ❪G,L❫ ⊢ ⓝV1.T ➡[h,↑n] V2.
+#h #n #G #L #V1 #V2 #T *
 /3 width=3 by cpg_ee, isrt_succ, ex2_intro/
 qed.
 
 (* Basic_2A1: includes: cpr_beta *)
-lemma cpm_beta: ∀n,h,p,G,L,V1,V2,W1,W2,T1,T2.
-                ❪G,L❫ ⊢ V1 ➡[h] V2 → ❪G,L❫ ⊢ W1 ➡[h] W2 → ❪G,L.ⓛW1❫ ⊢ T1 ➡[n,h] T2 →
-                ❪G,L❫ ⊢ ⓐV1.ⓛ[p]W1.T1 ➡[n,h] ⓓ[p]ⓝW2.V2.T2.
-#n #h #p #G #L #V1 #V2 #W1 #W2 #T1 #T2 * #riV #rhV #HV12 * #riW #rhW #HW12 *
+lemma cpm_beta: ∀h,n,p,G,L,V1,V2,W1,W2,T1,T2.
+                ❪G,L❫ ⊢ V1 ➡[h,0] V2 → ❪G,L❫ ⊢ W1 ➡[h,0] W2 → ❪G,L.ⓛW1❫ ⊢ T1 ➡[h,n] T2 →
+                ❪G,L❫ ⊢ ⓐV1.ⓛ[p]W1.T1 ➡[h,n] ⓓ[p]ⓝW2.V2.T2.
+#h #n #p #G #L #V1 #V2 #W1 #W2 #T1 #T2 * #riV #rhV #HV12 * #riW #rhW #HW12 *
 /6 width=7 by cpg_beta, isrt_plus_O2, isrt_max, isr_shift, ex2_intro/
 qed.
 
 (* Basic_2A1: includes: cpr_theta *)
-lemma cpm_theta: ∀n,h,p,G,L,V1,V,V2,W1,W2,T1,T2.
-                 ❪G,L❫ ⊢ V1 ➡[h] V → ⇧[1] V ≘ V2 → ❪G,L❫ ⊢ W1 ➡[h] W2 →
-                 ❪G,L.ⓓW1❫ ⊢ T1 ➡[n,h] T2 →
-                 ❪G,L❫ ⊢ ⓐV1.ⓓ[p]W1.T1 ➡[n,h] ⓓ[p]W2.ⓐV2.T2.
-#n #h #p #G #L #V1 #V #V2 #W1 #W2 #T1 #T2 * #riV #rhV #HV1 #HV2 * #riW #rhW #HW12 *
+lemma cpm_theta: ∀h,n,p,G,L,V1,V,V2,W1,W2,T1,T2.
+                 ❪G,L❫ ⊢ V1 ➡[h,0] V → ⇧[1] V ≘ V2 → ❪G,L❫ ⊢ W1 ➡[h,0] W2 →
+                 ❪G,L.ⓓW1❫ ⊢ T1 ➡[h,n] T2 →
+                 ❪G,L❫ ⊢ ⓐV1.ⓓ[p]W1.T1 ➡[h,n] ⓓ[p]W2.ⓐV2.T2.
+#h #n #p #G #L #V1 #V #V2 #W1 #W2 #T1 #T2 * #riV #rhV #HV1 #HV2 * #riW #rhW #HW12 *
 /6 width=9 by cpg_theta, isrt_plus_O2, isrt_max, isr_shift, ex2_intro/
 qed.
 
@@ -129,23 +124,23 @@ lemma cpr_refl: ∀h,G,L. reflexive … (cpm h G L 0).
 (* Advanced properties ******************************************************)
 
 lemma cpm_sort (h) (G) (L):
-               ∀n. n ≤ 1 → ∀s. ❪G,L❫ ⊢ ⋆s ➡[n,h] ⋆((next h)^n s).
+               ∀n. n ≤ 1 → ∀s. ❪G,L❫ ⊢ ⋆s ➡[h,n] ⋆((next h)^n s).
 #h #G #L * //
 #n #H #s <(le_n_O_to_eq n) /2 width=1 by le_S_S_to_le/
 qed.
 
 (* Basic inversion lemmas ***************************************************)
 
-lemma cpm_inv_atom1: ∀n,h,J,G,L,T2. ❪G,L❫ ⊢ ⓪[J] ➡[n,h] T2 →
+lemma cpm_inv_atom1: ∀h,n,J,G,L,T2. ❪G,L❫ ⊢ ⓪[J] ➡[h,n] T2 →
                      ∨∨ T2 = ⓪[J] ∧ n = 0
                       | ∃∃s. T2 = ⋆(⫯[h]s) & J = Sort s & n = 1
-                      | ∃∃K,V1,V2. ❪G,K❫ ⊢ V1 ➡[n,h] V2 & ⇧[1] V2 ≘ T2 &
+                      | ∃∃K,V1,V2. ❪G,K❫ ⊢ V1 ➡[h,n] V2 & ⇧[1] V2 ≘ T2 &
                                    L = K.ⓓV1 & J = LRef 0
-                      | ∃∃m,K,V1,V2. ❪G,K❫ ⊢ V1 ➡[m,h] V2 & ⇧[1] V2 ≘ T2 &
+                      | ∃∃m,K,V1,V2. ❪G,K❫ ⊢ V1 ➡[h,m] V2 & ⇧[1] V2 ≘ T2 &
                                      L = K.ⓛV1 & J = LRef 0 & n = ↑m
-                      | ∃∃I,K,T,i. ❪G,K❫ ⊢ #i ➡[n,h] T & ⇧[1] T ≘ T2 &
+                      | ∃∃I,K,T,i. ❪G,K❫ ⊢ #i ➡[h,n] T & ⇧[1] T ≘ T2 &
                                    L = K.ⓘ[I] & J = LRef (↑i).
-#n #h #J #G #L #T2 * #c #Hc #H elim (cpg_inv_atom1 … H) -H *
+#h #n #J #G #L #T2 * #c #Hc #H elim (cpg_inv_atom1 … H) -H *
 [ #H1 #H2 destruct /4 width=1 by isrt_inv_00, or5_intro0, conj/
 | #s #H1 #H2 #H3 destruct /4 width=3 by isrt_inv_01, or5_intro1, ex3_intro/
 | #cV #K #V1 #V2 #HV12 #HVT2 #H1 #H2 #H3 destruct
@@ -158,21 +153,21 @@ lemma cpm_inv_atom1: ∀n,h,J,G,L,T2. ❪G,L❫ ⊢ ⓪[J] ➡[n,h] T2 →
 ]
 qed-.
 
-lemma cpm_inv_sort1: ∀n,h,G,L,T2,s. ❪G,L❫ ⊢ ⋆s ➡[n,h] T2 →
+lemma cpm_inv_sort1: ∀h,n,G,L,T2,s. ❪G,L❫ ⊢ ⋆s ➡[h,n] T2 →
                      ∧∧ T2 = ⋆(((next h)^n) s) & n ≤ 1.
-#n #h #G #L #T2 #s * #c #Hc #H
+#h #n #G #L #T2 #s * #c #Hc #H
 elim (cpg_inv_sort1 … H) -H * #H1 #H2 destruct
 [ lapply (isrt_inv_00 … Hc) | lapply (isrt_inv_01 … Hc) ] -Hc
 #H destruct /2 width=1 by conj/
 qed-.
 
-lemma cpm_inv_zero1: ∀n,h,G,L,T2. ❪G,L❫ ⊢ #0 ➡[n,h] T2 →
+lemma cpm_inv_zero1: ∀h,n,G,L,T2. ❪G,L❫ ⊢ #0 ➡[h,n] T2 →
                      ∨∨ T2 = #0 ∧ n = 0
-                      | ∃∃K,V1,V2. ❪G,K❫ ⊢ V1 ➡[n,h] V2 & ⇧[1] V2 ≘ T2 &
+                      | ∃∃K,V1,V2. ❪G,K❫ ⊢ V1 ➡[h,n] V2 & ⇧[1] V2 ≘ T2 &
                                    L = K.ⓓV1
-                      | ∃∃m,K,V1,V2. ❪G,K❫ ⊢ V1 ➡[m,h] V2 & ⇧[1] V2 ≘ T2 &
+                      | ∃∃m,K,V1,V2. ❪G,K❫ ⊢ V1 ➡[h,m] V2 & ⇧[1] V2 ≘ T2 &
                                      L = K.ⓛV1 & n = ↑m.
-#n #h #G #L #T2 * #c #Hc #H elim (cpg_inv_zero1 … H) -H *
+#h #n #G #L #T2 * #c #Hc #H elim (cpg_inv_zero1 … H) -H *
 [ #H1 #H2 destruct /4 width=1 by isrt_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/
@@ -182,9 +177,9 @@ lemma cpm_inv_zero1: ∀n,h,G,L,T2. ❪G,L❫ ⊢ #0 ➡[n,h] T2 →
 ]
 qed-.
 
-lemma cpm_inv_zero1_unit (n) (h) (I) (K) (G):
-      ∀X2. ❪G,K.ⓤ[I]❫ ⊢ #0 ➡[n,h] X2 → ∧∧ X2 = #0 & n = 0.
-#n #h #I #G #K #X2 #H
+lemma cpm_inv_zero1_unit (h) (n) (I) (K) (G):
+      ∀X2. ❪G,K.ⓤ[I]❫ ⊢ #0 ➡[h,n] X2 → ∧∧ X2 = #0 & n = 0.
+#h #n #I #G #K #X2 #H
 elim (cpm_inv_zero1 … H) -H *
 [ #H1 #H2 destruct /2 width=1 by conj/
 | #Y #X1 #X2 #_ #_ #H destruct
@@ -192,19 +187,19 @@ elim (cpm_inv_zero1 … H) -H *
 ]
 qed.
 
-lemma cpm_inv_lref1: ∀n,h,G,L,T2,i. ❪G,L❫ ⊢ #↑i ➡[n,h] T2 →
+lemma cpm_inv_lref1: ∀h,n,G,L,T2,i. ❪G,L❫ ⊢ #↑i ➡[h,n] T2 →
                      ∨∨ T2 = #(↑i) ∧ n = 0
-                      | ∃∃I,K,T. ❪G,K❫ ⊢ #i ➡[n,h] T & ⇧[1] T ≘ T2 & L = K.ⓘ[I].
-#n #h #G #L #T2 #i * #c #Hc #H elim (cpg_inv_lref1 … H) -H *
+                      | ∃∃I,K,T. ❪G,K❫ ⊢ #i ➡[h,n] T & ⇧[1] T ≘ T2 & L = K.ⓘ[I].
+#h #n #G #L #T2 #i * #c #Hc #H elim (cpg_inv_lref1 … H) -H *
 [ #H1 #H2 destruct /4 width=1 by isrt_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 cpm_inv_lref1_ctop (n) (h) (G):
-      ∀X2,i. ❪G,⋆❫ ⊢ #i ➡[n,h] X2 → ∧∧ X2 = #i & n = 0.
-#n #h #G #X2 * [| #i ] #H
+lemma cpm_inv_lref1_ctop (h) (n) (G):
+      ∀X2,i. ❪G,⋆❫ ⊢ #i ➡[h,n] X2 → ∧∧ X2 = #i & n = 0.
+#h #n #G #X2 * [| #i ] #H
 [ elim (cpm_inv_zero1 … H) -H *
   [ #H1 #H2 destruct /2 width=1 by conj/
   | #Y #X1 #X2 #_ #_ #H destruct
@@ -217,18 +212,18 @@ lemma cpm_inv_lref1_ctop (n) (h) (G):
 ]
 qed.
 
-lemma cpm_inv_gref1: ∀n,h,G,L,T2,l. ❪G,L❫ ⊢ §l ➡[n,h] T2 → T2 = §l ∧ n = 0.
-#n #h #G #L #T2 #l * #c #Hc #H elim (cpg_inv_gref1 … H) -H
+lemma cpm_inv_gref1: ∀h,n,G,L,T2,l. ❪G,L❫ ⊢ §l ➡[h,n] T2 → T2 = §l ∧ n = 0.
+#h #n #G #L #T2 #l * #c #Hc #H elim (cpg_inv_gref1 … H) -H
 #H1 #H2 destruct /3 width=1 by isrt_inv_00, conj/
 qed-.
 
 (* Basic_2A1: includes: cpr_inv_bind1 *)
-lemma cpm_inv_bind1: ∀n,h,p,I,G,L,V1,T1,U2. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ➡[n,h] U2 →
-                     ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡[h] V2 & ❪G,L.ⓑ[I]V1❫ ⊢ T1 ➡[n,h] T2 &
+lemma cpm_inv_bind1: ∀h,n,p,I,G,L,V1,T1,U2. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ➡[h,n] U2 →
+                     ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 & ❪G,L.ⓑ[I]V1❫ ⊢ T1 ➡[h,n] T2 &
                                  U2 = ⓑ[p,I]V2.T2
-                      | ∃∃T. ⇧[1] T ≘ T1 & ❪G,L❫ ⊢ T ➡[n,h] U2 &
+                      | ∃∃T. ⇧[1] T ≘ T1 & ❪G,L❫ ⊢ T ➡[h,n] U2 &
                              p = true & I = Abbr.
-#n #h #p #I #G #L #V1 #T1 #U2 * #c #Hc #H elim (cpg_inv_bind1 … H) -H *
+#h #n #p #I #G #L #V1 #T1 #U2 * #c #Hc #H elim (cpg_inv_bind1 … H) -H *
 [ #cV #cT #V2 #T2 #HV12 #HT12 #H1 #H2 destruct
   elim (isrt_inv_max … Hc) -Hc #nV #nT #HcV #HcT #H destruct
   elim (isrt_inv_shift … HcV) -HcV #HcV #H destruct
@@ -240,11 +235,11 @@ qed-.
 
 (* Basic_1: includes: pr0_gen_abbr pr2_gen_abbr *)
 (* Basic_2A1: includes: cpr_inv_abbr1 *)
-lemma cpm_inv_abbr1: ∀n,h,p,G,L,V1,T1,U2. ❪G,L❫ ⊢ ⓓ[p]V1.T1 ➡[n,h] U2 →
-                     ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡[h] V2 & ❪G,L.ⓓV1❫ ⊢ T1 ➡[n,h] T2 &
+lemma cpm_inv_abbr1: ∀h,n,p,G,L,V1,T1,U2. ❪G,L❫ ⊢ ⓓ[p]V1.T1 ➡[h,n] U2 →
+                     ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 & ❪G,L.ⓓV1❫ ⊢ T1 ➡[h,n] T2 &
                                  U2 = ⓓ[p]V2.T2
-                      | ∃∃T. ⇧[1] T ≘ T1 & ❪G,L❫ ⊢ T ➡[n,h] U2 & p = true.
-#n #h #p #G #L #V1 #T1 #U2 #H
+                      | ∃∃T. ⇧[1] T ≘ T1 & ❪G,L❫ ⊢ T ➡[h,n] U2 & p = true.
+#h #n #p #G #L #V1 #T1 #U2 #H
 elim (cpm_inv_bind1 … H) -H
 [ /3 width=1 by or_introl/
 | * /3 width=3 by ex3_intro, or_intror/
@@ -253,35 +248,35 @@ qed-.
 
 (* Basic_1: includes: pr0_gen_abst pr2_gen_abst *)
 (* Basic_2A1: includes: cpr_inv_abst1 *)
-lemma cpm_inv_abst1: ∀n,h,p,G,L,V1,T1,U2. ❪G,L❫ ⊢ ⓛ[p]V1.T1 ➡[n,h] U2 →
-                     ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡[h] V2 & ❪G,L.ⓛV1❫ ⊢ T1 ➡[n,h] T2 &
+lemma cpm_inv_abst1: ∀h,n,p,G,L,V1,T1,U2. ❪G,L❫ ⊢ ⓛ[p]V1.T1 ➡[h,n] U2 →
+                     ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 & ❪G,L.ⓛV1❫ ⊢ T1 ➡[h,n] T2 &
                               U2 = ⓛ[p]V2.T2.
-#n #h #p #G #L #V1 #T1 #U2 #H
+#h #n #p #G #L #V1 #T1 #U2 #H
 elim (cpm_inv_bind1 … H) -H
 [ /3 width=1 by or_introl/
 | * #T #_ #_ #_ #H destruct
 ]
 qed-.
 
-lemma cpm_inv_abst_bi: ∀n,h,p1,p2,G,L,V1,V2,T1,T2. ❪G,L❫ ⊢ ⓛ[p1]V1.T1 ➡[n,h] ⓛ[p2]V2.T2 →
-                       ∧∧ ❪G,L❫ ⊢ V1 ➡[h] V2 & ❪G,L.ⓛV1❫ ⊢ T1 ➡[n,h] T2 & p1 = p2.
-#n #h #p1 #p2 #G #L #V1 #V2 #T1 #T2 #H
+lemma cpm_inv_abst_bi: ∀h,n,p1,p2,G,L,V1,V2,T1,T2. ❪G,L❫ ⊢ ⓛ[p1]V1.T1 ➡[h,n] ⓛ[p2]V2.T2 →
+                       ∧∧ ❪G,L❫ ⊢ V1 ➡[h,0] V2 & ❪G,L.ⓛV1❫ ⊢ T1 ➡[h,n] T2 & p1 = p2.
+#h #n #p1 #p2 #G #L #V1 #V2 #T1 #T2 #H
 elim (cpm_inv_abst1 … H) -H #XV #XT #HV #HT #H destruct
 /2 width=1 by and3_intro/
 qed-.
 
 (* Basic_1: includes: pr0_gen_appl pr2_gen_appl *)
 (* Basic_2A1: includes: cpr_inv_appl1 *)
-lemma cpm_inv_appl1: ∀n,h,G,L,V1,U1,U2. ❪G,L❫ ⊢ ⓐ V1.U1 ➡[n,h] U2 →
-                     ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡[h] V2 & ❪G,L❫ ⊢ U1 ➡[n,h] T2 &
+lemma cpm_inv_appl1: ∀h,n,G,L,V1,U1,U2. ❪G,L❫ ⊢ ⓐ V1.U1 ➡[h,n] U2 →
+                     ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 & ❪G,L❫ ⊢ U1 ➡[h,n] T2 &
                                  U2 = ⓐV2.T2
-                      | ∃∃p,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h] V2 & ❪G,L❫ ⊢ W1 ➡[h] W2 &
-                                            ❪G,L.ⓛW1❫ ⊢ T1 ➡[n,h] T2 &
+                      | ∃∃p,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 & ❪G,L❫ ⊢ W1 ➡[h,0] W2 &
+                                            ❪G,L.ⓛW1❫ ⊢ T1 ➡[h,n] T2 &
                                             U1 = ⓛ[p]W1.T1 & U2 = ⓓ[p]ⓝW2.V2.T2
-                      | ∃∃p,V,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h] V & ⇧[1] V ≘ V2 &
-                                              ❪G,L❫ ⊢ W1 ➡[h] W2 & ❪G,L.ⓓW1❫ ⊢ T1 ➡[n,h] T2 &
+                      | ∃∃p,V,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h,0] V & ⇧[1] V ≘ V2 &
+                                              ❪G,L❫ ⊢ W1 ➡[h,0] W2 & ❪G,L.ⓓW1❫ ⊢ T1 ➡[h,n] T2 &
                                               U1 = ⓓ[p]W1.T1 & U2 = ⓓ[p]W2.ⓐV2.T2.
-#n #h #G #L #V1 #U1 #U2 * #c #Hc #H elim (cpg_inv_appl1 … H) -H *
+#h #n #G #L #V1 #U1 #U2 * #c #Hc #H elim (cpg_inv_appl1 … H) -H *
 [ #cV #cT #V2 #T2 #HV12 #HT12 #H1 #H2 destruct
   elim (isrt_inv_max … Hc) -Hc #nV #nT #HcV #HcT #H destruct
   elim (isrt_inv_shift … HcV) -HcV #HcV #H destruct
@@ -303,12 +298,12 @@ lemma cpm_inv_appl1: ∀n,h,G,L,V1,U1,U2. ❪G,L❫ ⊢ ⓐ V1.U1 ➡[n,h] U2 
 ]
 qed-.
 
-lemma cpm_inv_cast1: ∀n,h,G,L,V1,U1,U2. ❪G,L❫ ⊢ ⓝV1.U1 ➡[n,h] U2 →
-                     ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡[n,h] V2 & ❪G,L❫ ⊢ U1 ➡[n,h] T2 &
+lemma cpm_inv_cast1: ∀h,n,G,L,V1,U1,U2. ❪G,L❫ ⊢ ⓝV1.U1 ➡[h,n] U2 →
+                     ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡[h,n] V2 & ❪G,L❫ ⊢ U1 ➡[h,n] T2 &
                                  U2 = ⓝV2.T2
-                      | ❪G,L❫ ⊢ U1 ➡[n,h] U2
-                      | ∃∃m. ❪G,L❫ ⊢ V1 ➡[m,h] U2 & n = ↑m.
-#n #h #G #L #V1 #U1 #U2 * #c #Hc #H elim (cpg_inv_cast1 … H) -H *
+                      | ❪G,L❫ ⊢ U1 ➡[h,n] U2
+                      | ∃∃m. ❪G,L❫ ⊢ V1 ➡[h,m] U2 & n = ↑m.
+#h #n #G #L #V1 #U1 #U2 * #c #Hc #H elim (cpg_inv_cast1 … H) -H *
 [ #cV #cT #V2 #T2 #HV12 #HT12 #HcVT #H1 #H2 destruct
   elim (isrt_inv_max … Hc) -Hc #nV #nT #HcV #HcT #H destruct
   lapply (isrt_eq_t_trans … HcV HcVT) -HcVT #H
@@ -325,10 +320,10 @@ qed-.
 (* Basic forward lemmas *****************************************************)
 
 (* Basic_2A1: includes: cpr_fwd_bind1_minus *)
-lemma cpm_fwd_bind1_minus: ∀n,h,I,G,L,V1,T1,T. ❪G,L❫ ⊢ -ⓑ[I]V1.T1 ➡[n,h] T → ∀p.
-                           ∃∃V2,T2. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ➡[n,h] ⓑ[p,I]V2.T2 &
+lemma cpm_fwd_bind1_minus: ∀h,n,I,G,L,V1,T1,T. ❪G,L❫ ⊢ -ⓑ[I]V1.T1 ➡[h,n] T → ∀p.
+                           ∃∃V2,T2. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ➡[h,n] ⓑ[p,I]V2.T2 &
                                     T = -ⓑ[I]V2.T2.
-#n #h #I #G #L #V1 #T1 #T * #c #Hc #H #p elim (cpg_fwd_bind1_minus … H p) -H
+#h #n #I #G #L #V1 #T1 #T * #c #Hc #H #p elim (cpg_fwd_bind1_minus … H p) -H
 /3 width=4 by ex2_2_intro, ex2_intro/
 qed-.
 
@@ -337,32 +332,32 @@ qed-.
 lemma cpm_ind (h): ∀Q:relation5 nat genv lenv term term.
                    (∀I,G,L. Q 0 G L (⓪[I]) (⓪[I])) →
                    (∀G,L,s. Q 1 G L (⋆s) (⋆(⫯[h]s))) →
-                   (∀n,G,K,V1,V2,W2. ❪G,K❫ ⊢ V1 ➡[n,h] V2 → Q n G K V1 V2 →
+                   (∀n,G,K,V1,V2,W2. ❪G,K❫ ⊢ V1 ➡[h,n] V2 → Q n G K V1 V2 →
                      ⇧[1] V2 ≘ W2 → Q n G (K.ⓓV1) (#0) W2
-                   ) → (∀n,G,K,V1,V2,W2. ❪G,K❫ ⊢ V1 ➡[n,h] V2 → Q n G K V1 V2 →
+                   ) → (∀n,G,K,V1,V2,W2. ❪G,K❫ ⊢ V1 ➡[h,n] V2 → Q n G K V1 V2 →
                      ⇧[1] V2 ≘ W2 → Q (↑n) G (K.ⓛV1) (#0) W2
-                   ) → (∀n,I,G,K,T,U,i. ❪G,K❫ ⊢ #i ➡[n,h] T → Q n G K (#i) T →
+                   ) → (∀n,I,G,K,T,U,i. ❪G,K❫ ⊢ #i ➡[h,n] T → Q n G K (#i) T →
                      ⇧[1] T ≘ U → Q n G (K.ⓘ[I]) (#↑i) (U)
-                   ) → (∀n,p,I,G,L,V1,V2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h] V2 → ❪G,L.ⓑ[I]V1❫ ⊢ T1 ➡[n,h] T2 →
+                   ) → (∀n,p,I,G,L,V1,V2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 → ❪G,L.ⓑ[I]V1❫ ⊢ T1 ➡[h,n] T2 →
                      Q 0 G L V1 V2 → Q n G (L.ⓑ[I]V1) T1 T2 → Q n G L (ⓑ[p,I]V1.T1) (ⓑ[p,I]V2.T2)
-                   ) → (∀n,G,L,V1,V2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h] V2 → ❪G,L❫ ⊢ T1 ➡[n,h] T2 →
+                   ) → (∀n,G,L,V1,V2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 → ❪G,L❫ ⊢ T1 ➡[h,n] T2 →
                      Q 0 G L V1 V2 → Q n G L T1 T2 → Q n G L (ⓐV1.T1) (ⓐV2.T2)
-                   ) → (∀n,G,L,V1,V2,T1,T2. ❪G,L❫ ⊢ V1 ➡[n,h] V2 → ❪G,L❫ ⊢ T1 ➡[n,h] T2 →
+                   ) → (∀n,G,L,V1,V2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h,n] V2 → ❪G,L❫ ⊢ T1 ➡[h,n] T2 →
                      Q n G L V1 V2 → Q n G L T1 T2 → Q n G L (ⓝV1.T1) (ⓝV2.T2)
-                   ) → (∀n,G,L,V,T1,T,T2. ⇧[1] T ≘ T1 → ❪G,L❫ ⊢ T ➡[n,h] T2 →
+                   ) → (∀n,G,L,V,T1,T,T2. ⇧[1] T ≘ T1 → ❪G,L❫ ⊢ T ➡[h,n] T2 →
                      Q n G L T T2 → Q n G L (+ⓓV.T1) T2
-                   ) → (∀n,G,L,V,T1,T2. ❪G,L❫ ⊢ T1 ➡[n,h] T2 →
+                   ) → (∀n,G,L,V,T1,T2. ❪G,L❫ ⊢ T1 ➡[h,n] T2 →
                      Q n G L T1 T2 → Q n G L (ⓝV.T1) T2
-                   ) → (∀n,G,L,V1,V2,T. ❪G,L❫ ⊢ V1 ➡[n,h] V2 →
+                   ) → (∀n,G,L,V1,V2,T. ❪G,L❫ ⊢ V1 ➡[h,n] V2 →
                      Q n G L V1 V2 → Q (↑n) G L (ⓝV1.T) V2
-                   ) → (∀n,p,G,L,V1,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h] V2 → ❪G,L❫ ⊢ W1 ➡[h] W2 → ❪G,L.ⓛW1❫ ⊢ T1 ➡[n,h] T2 →
+                   ) → (∀n,p,G,L,V1,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 → ❪G,L❫ ⊢ W1 ➡[h,0] W2 → ❪G,L.ⓛW1❫ ⊢ T1 ➡[h,n] T2 →
                      Q 0 G L V1 V2 → Q 0 G L W1 W2 → Q n G (L.ⓛW1) T1 T2 →
                      Q n G L (ⓐV1.ⓛ[p]W1.T1) (ⓓ[p]ⓝW2.V2.T2)
-                   ) → (∀n,p,G,L,V1,V,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h] V → ❪G,L❫ ⊢ W1 ➡[h] W2 → ❪G,L.ⓓW1❫ ⊢ T1 ➡[n,h] T2 →
+                   ) → (∀n,p,G,L,V1,V,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h,0] V → ❪G,L❫ ⊢ W1 ➡[h,0] W2 → ❪G,L.ⓓW1❫ ⊢ T1 ➡[h,n] T2 →
                      Q 0 G L V1 V → Q 0 G L W1 W2 → Q n G (L.ⓓW1) T1 T2 →
                      ⇧[1] V ≘ V2 → Q n G L (ⓐV1.ⓓ[p]W1.T1) (ⓓ[p]W2.ⓐV2.T2)
                    ) →
-                   ∀n,G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡[n,h] T2 → Q n G L T1 T2.
+                   ∀n,G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡[h,n] T2 → Q n G L T1 T2.
 #h #Q #IH1 #IH2 #IH3 #IH4 #IH5 #IH6 #IH7 #IH8 #IH9 #IH10 #IH11 #IH12 #IH13 #n #G #L #T1 #T2
 * #c #HC #H generalize in match HC; -HC generalize in match n; -n
 elim H -c -G -L -T1 -T2
index 6cc56dc07c6c7cf4c11668d53996a62000c239b4..a096f5229b5c76b282b26dca6edd350b6ff90bd1 100644 (file)
@@ -20,12 +20,12 @@ include "basic_2/rt_transition/lpx_aaa.ma".
 (* Properties with atomic arity assignment for terms ************************)
 
 (* Basic_2A1: includes: cpr_aaa_conf *)
-lemma cpm_aaa_conf (n) (h): ∀G,L. Conf3 … (aaa G L) (cpm h G L n).
+lemma cpm_aaa_conf (h) (n): ∀G,L. Conf3 … (aaa G L) (cpm h G L n).
 /3 width=5 by cpx_aaa_conf, cpm_fwd_cpx/ qed-.
 
 (* Note: one of these U is the inferred type of T *)
 lemma aaa_cpm_SO (h) (G) (L) (A):
-      ∀T. ❪G,L❫ ⊢ T ⁝ A → ∃U. ❪G,L❫ ⊢ T ➡[1,h] U.
+      ∀T. ❪G,L❫ ⊢ T ⁝ A → ∃U. ❪G,L❫ ⊢ T ➡[h,1] U.
 #h #G #L #A #T #H elim H -G -L -T -A
 [ /3 width=2 by ex_intro/
 | * #G #L #V #B #_ * #V0 #HV0
index c3fb02f6802b025787c448df531eee48a2995339..6586e600ce8732e0b376ef8dc523becc0589c88a 100644 (file)
@@ -20,7 +20,7 @@ include "basic_2/rt_transition/cpm.ma".
 (* Forward lemmas with unbound context-sensitive rt-transition for terms ****)
 
 (* Basic_2A1: includes: cpr_cpx *)
-lemma cpm_fwd_cpx: ∀n,h,G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡[n,h] T2 → ❪G,L❫ ⊢ T1 ⬈[h] T2.
-#n #h #G #L #T1 #T2 * #c #Hc #H elim H -L -T1 -T2
+lemma cpm_fwd_cpx: ∀h,n,G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡[h,n] T2 → ❪G,L❫ ⊢ T1 ⬈[h] T2.
+#h #n #G #L #T1 #T2 * #c #Hc #H elim H -L -T1 -T2
 /2 width=3 by cpx_theta, cpx_beta, cpx_ee, cpx_eps, cpx_zeta, cpx_flat, cpx_bind, cpx_lref, cpx_delta/
 qed-.
index acdcba1650944e0055c8c6774e7d59e8ef71a044..91544044c3e92b201ccf1619c05b53acf5faf0f1 100644 (file)
@@ -21,58 +21,58 @@ include "basic_2/rt_transition/cpm.ma".
 
 (* Basic_1: includes: pr0_lift pr2_lift *)
 (* Basic_2A1: includes: cpr_lift *)
-lemma cpm_lifts_sn: ∀n,h,G. d_liftable2_sn … lifts (λL. cpm h G L n).
-#n #h #G #K #T1 #T2 * #c #Hc #HT12 #b #f #L #HLK #U1 #HTU1
+lemma cpm_lifts_sn: ∀h,n,G. d_liftable2_sn … lifts (λL. cpm h G L n).
+#h #n #G #K #T1 #T2 * #c #Hc #HT12 #b #f #L #HLK #U1 #HTU1
 elim (cpg_lifts_sn … HT12 … HLK … HTU1) -K -T1
 /3 width=5 by ex2_intro/
 qed-.
 
-lemma cpm_lifts_bi: ∀n,h,G. d_liftable2_bi … lifts (λL. cpm h G L n).
-#n #h #G #K #T1 #T2 * /3 width=11 by cpg_lifts_bi, ex2_intro/
+lemma cpm_lifts_bi: ∀h,n,G. d_liftable2_bi … lifts (λL. cpm h G L n).
+#h #n #G #K #T1 #T2 * /3 width=11 by cpg_lifts_bi, ex2_intro/
 qed-.
 
 (* Inversion lemmas with generic slicing for local environments *************)
 
 (* Basic_1: includes: pr0_gen_lift pr2_gen_lift *)
 (* Basic_2A1: includes: cpr_inv_lift1 *)
-lemma cpm_inv_lifts_sn: ∀n,h,G. d_deliftable2_sn … lifts (λL. cpm h G L n).
-#n #h #G #L #U1 #U2 * #c #Hc #HU12 #b #f #K #HLK #T1 #HTU1
+lemma cpm_inv_lifts_sn: ∀h,n,G. d_deliftable2_sn … lifts (λL. cpm h G L n).
+#h #n #G #L #U1 #U2 * #c #Hc #HU12 #b #f #K #HLK #T1 #HTU1
 elim (cpg_inv_lifts_sn … HU12 … HLK … HTU1) -L -U1
 /3 width=5 by ex2_intro/
 qed-.
 
-lemma cpm_inv_lifts_bi: ∀n,h,G. d_deliftable2_bi … lifts (λL. cpm h G L n).
-#n #h #G #L #U1 #U2 * /3 width=11 by cpg_inv_lifts_bi, ex2_intro/
+lemma cpm_inv_lifts_bi: ∀h,n,G. d_deliftable2_bi … lifts (λL. cpm h G L n).
+#h #n #G #L #U1 #U2 * /3 width=11 by cpg_inv_lifts_bi, ex2_intro/
 qed-.
 
 (* Advanced properties ******************************************************)
 
 (* Basic_1: includes: pr2_delta1 *)
 (* Basic_2A1: includes: cpr_delta *)
-lemma cpm_delta_drops: ∀n,h,G,L,K,V,V2,W2,i.
-                       ⇩[i] L ≘ K.ⓓV → ❪G,K❫ ⊢ V ➡[n,h] V2 →
-                       ⇧[↑i] V2 ≘ W2 → ❪G,L❫ ⊢ #i ➡[n,h] W2.
-#n #h #G #L #K #V #V2 #W2 #i #HLK *
+lemma cpm_delta_drops: ∀h,n,G,L,K,V,V2,W2,i.
+                       ⇩[i] L ≘ K.ⓓV → ❪G,K❫ ⊢ V ➡[h,n] V2 →
+                       ⇧[↑i] V2 ≘ W2 → ❪G,L❫ ⊢ #i ➡[h,n] W2.
+#h #n #G #L #K #V #V2 #W2 #i #HLK *
 /3 width=8 by cpg_delta_drops, ex2_intro/
 qed.
 
-lemma cpm_ell_drops: ∀n,h,G,L,K,V,V2,W2,i.
-                     ⇩[i] L ≘ K.ⓛV → ❪G,K❫ ⊢ V ➡[n,h] V2 →
-                     ⇧[↑i] V2 ≘ W2 → ❪G,L❫ ⊢ #i ➡[↑n,h] W2.
-#n #h #G #L #K #V #V2 #W2 #i #HLK *
+lemma cpm_ell_drops: ∀h,n,G,L,K,V,V2,W2,i.
+                     ⇩[i] L ≘ K.ⓛV → ❪G,K❫ ⊢ V ➡[h,n] V2 →
+                     ⇧[↑i] V2 ≘ W2 → ❪G,L❫ ⊢ #i ➡[h,↑n] W2.
+#h #n #G #L #K #V #V2 #W2 #i #HLK *
 /3 width=8 by cpg_ell_drops, isrt_succ, ex2_intro/
 qed.
 
 (* Advanced inversion lemmas ************************************************)
 
-lemma cpm_inv_atom1_drops: ∀n,h,I,G,L,T2. ❪G,L❫ ⊢ ⓪[I] ➡[n,h] T2 →
+lemma cpm_inv_atom1_drops: ∀h,n,I,G,L,T2. ❪G,L❫ ⊢ ⓪[I] ➡[h,n] T2 →
                            ∨∨ T2 = ⓪[I] ∧ n = 0
                             | ∃∃s. T2 = ⋆(⫯[h]s) & I = Sort s & n = 1
-                            | ∃∃K,V,V2,i. ⇩[i] L ≘ K.ⓓV & ❪G,K❫ ⊢ V ➡[n,h] V2 &
+                            | ∃∃K,V,V2,i. ⇩[i] L ≘ K.ⓓV & ❪G,K❫ ⊢ V ➡[h,n] V2 &
                                           ⇧[↑i] V2 ≘ T2 & I = LRef i
-                            | ∃∃m,K,V,V2,i. ⇩[i] L ≘ K.ⓛV & ❪G,K❫ ⊢ V ➡[m,h] V2 &
+                            | ∃∃m,K,V,V2,i. ⇩[i] L ≘ K.ⓛV & ❪G,K❫ ⊢ V ➡[h,m] V2 &
                                             ⇧[↑i] V2 ≘ T2 & I = LRef i & n = ↑m.
-#n #h #I #G #L #T2 * #c #Hc #H elim (cpg_inv_atom1_drops … H) -H *
+#h #n #I #G #L #T2 * #c #Hc #H elim (cpg_inv_atom1_drops … H) -H *
 [ #H1 #H2 destruct lapply (isrt_inv_00 … Hc) -Hc
   /3 width=1 by or4_intro0, conj/
 | #s #H1 #H2 #H3 destruct lapply (isrt_inv_01 … Hc) -Hc
@@ -85,13 +85,13 @@ lemma cpm_inv_atom1_drops: ∀n,h,I,G,L,T2. ❪G,L❫ ⊢ ⓪[I] ➡[n,h] T2 →
 ]
 qed-.
 
-lemma cpm_inv_lref1_drops: ∀n,h,G,L,T2,i. ❪G,L❫ ⊢ #i ➡[n,h] T2 →
+lemma cpm_inv_lref1_drops: ∀h,n,G,L,T2,i. ❪G,L❫ ⊢ #i ➡[h,n] T2 →
                            ∨∨ T2 = #i ∧ n = 0
-                            | ∃∃K,V,V2. ⇩[i] L ≘ K.ⓓV & ❪G,K❫ ⊢ V ➡[n,h] V2 &
+                            | ∃∃K,V,V2. ⇩[i] L ≘ K.ⓓV & ❪G,K❫ ⊢ V ➡[h,n] V2 &
                                         ⇧[↑i] V2 ≘ T2
-                            | ∃∃m,K,V,V2. ⇩[i] L ≘ K. ⓛV & ❪G,K❫ ⊢ V ➡[m,h] V2 &
+                            | ∃∃m,K,V,V2. ⇩[i] L ≘ K. ⓛV & ❪G,K❫ ⊢ V ➡[h,m] V2 &
                                           ⇧[↑i] V2 ≘ T2 & n = ↑m.
-#n #h #G #L #T2 #i * #c #Hc #H elim (cpg_inv_lref1_drops … H) -H *
+#h #n #G #L #T2 #i * #c #Hc #H elim (cpg_inv_lref1_drops … H) -H *
 [ #H1 #H2 destruct lapply (isrt_inv_00 … Hc) -Hc
   /3 width=1 by or3_intro0, conj/
 | #cV #K #V1 #V2 #HLK #HV12 #HVT2 #H destruct
@@ -104,10 +104,10 @@ qed-.
 
 (* Advanced forward lemmas **************************************************)
 
-fact cpm_fwd_plus_aux (n) (h): ∀G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡[n,h] T2 →
+fact cpm_fwd_plus_aux (h) (n): ∀G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡[h,n] T2 →
                                ∀n1,n2. n1+n2 = n →
-                               ∃∃T. ❪G,L❫ ⊢ T1 ➡[n1,h] T & ❪G,L❫ ⊢ T ➡[n2,h] T2.
-#n #h #G #L #T1 #T2 #H @(cpm_ind … H) -G -L -T1 -T2 -n
+                               ∃∃T. ❪G,L❫ ⊢ T1 ➡[h,n1] T & ❪G,L❫ ⊢ T ➡[h,n2] T2.
+#h #n #G #L #T1 #T2 #H @(cpm_ind … H) -G -L -T1 -T2 -n
 [ #I #G #L #n1 #n2 #H
   elim (plus_inv_O3 … H) -H #H1 #H2 destruct
   /2 width=3 by ex2_intro/
@@ -165,6 +165,6 @@ fact cpm_fwd_plus_aux (n) (h): ∀G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡[n,h] T2 →
 ]
 qed-.
 
-lemma cpm_fwd_plus (h) (G) (L): ∀n1,n2,T1,T2. ❪G,L❫ ⊢ T1 ➡[n1+n2,h] T2 →
-                                ∃∃T. ❪G,L❫ ⊢ T1 ➡[n1,h] T & ❪G,L❫ ⊢ T ➡[n2,h] T2.
+lemma cpm_fwd_plus (h) (G) (L): ∀n1,n2,T1,T2. ❪G,L❫ ⊢ T1 ➡[h,n1+n2] T2 →
+                                ∃∃T. ❪G,L❫ ⊢ T1 ➡[h,n1] T & ❪G,L❫ ⊢ T ➡[h,n2] T2.
 /2 width=3 by cpm_fwd_plus_aux/ qed-.
index 0c51efd065e682da4e60b2820aef05b3d7a05be3..81ee72afb1b9e0076fe6a6d8d7e55d04a42beac6 100644 (file)
@@ -19,7 +19,7 @@ include "basic_2/rt_transition/cpm_cpx.ma".
 
 (* Forward lemmas with free variables inclusion for restricted closures *****)
 
-lemma cpm_fsge_comp: ∀n,h,G. R_fsge_compatible (λL. cpm h G L n).
+lemma cpm_fsge_comp: ∀h,n,G. R_fsge_compatible (λL. cpm h G L n).
 /3 width=6 by cpm_fwd_cpx, cpx_fsge_comp/ qed-.
 
 lemma rpr_fsge_comp: ∀h,G. rex_fsge_compatible (λL. cpm h G L 0).
index 1f117aab00e73022e9f4d75f9d8acb4cee77f040..e754ff7a709458dfbdcae8d2dc337476014d2819 100644 (file)
@@ -20,11 +20,11 @@ include "basic_2/rt_transition/cpm.ma".
 (* Properties with restricted refinement for local environments *************)
 
 (* Basic_2A1: includes: lsubr_cpr_trans *)
-lemma lsubr_cpm_trans (n) (h) (G): lsub_trans … (λL. cpm h G L n) lsubr.
-#n #h #G #L1 #T1 #T2 * /3 width=5 by lsubr_cpg_trans, ex2_intro/
+lemma lsubr_cpm_trans (h) (n) (G): lsub_trans … (λL. cpm h G L n) lsubr.
+#h #n #G #L1 #T1 #T2 * /3 width=5 by lsubr_cpg_trans, ex2_intro/
 qed-.
 
-lemma cpm_bind_unit (n) (h) (G): ∀L,V1,V2. ❪G,L❫ ⊢ V1 ➡[h] V2 →
-                                 ∀J,T1,T2. ❪G,L.ⓤ[J]❫ ⊢ T1 ➡[n,h] T2 →
-                                 ∀p,I. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ➡[n,h] ⓑ[p,I]V2.T2.
+lemma cpm_bind_unit (h) (n) (G): ∀L,V1,V2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 →
+                                 ∀J,T1,T2. ❪G,L.ⓤ[J]❫ ⊢ T1 ➡[h,n] T2 →
+                                 ∀p,I. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ➡[h,n] ⓑ[p,I]V2.T2.
 /4 width=4 by lsubr_cpm_trans, cpm_bind, lsubr_unit/ qed.
index 33bd855b6b38bac50f7f8072eacd99571cbb0c6c..3b81e99bdb6a2470bb24f3dc6bb989bc397ff8b3 100644 (file)
@@ -20,10 +20,10 @@ include "basic_2/rt_transition/cpm.ma".
 (* Properties with simple terms *********************************************)
 
 (* Basic_2A1: includes: cpr_inv_appl1_simple *)
-lemma cpm_inv_appl1_simple: ∀n,h,G,L,V1,T1,U. ❪G,L❫ ⊢ ⓐV1.T1 ➡[n,h] U → 𝐒❪T1❫ →
-                            ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡[h] V2 & ❪G,L❫ ⊢ T1 ➡[n,h] T2 &
+lemma cpm_inv_appl1_simple: ∀h,n,G,L,V1,T1,U. ❪G,L❫ ⊢ ⓐV1.T1 ➡[h,n] U → 𝐒❪T1❫ →
+                            ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 & ❪G,L❫ ⊢ T1 ➡[h,n] T2 &
                                      U = ⓐV2.T2.
-#n #h #G #L #V1 #T1 #U * #c #Hc #H #HT1 elim (cpg_inv_appl1_simple … H HT1) -H -HT1
+#h #n #G #L #V1 #T1 #U * #c #Hc #H #HT1 elim (cpg_inv_appl1_simple … H HT1) -H -HT1
 #cV #cT #V2 #T2 #HV12 #HT12 #H1 #H2 destruct elim (isrt_inv_max … Hc) -Hc
 #nV #nT #HnV #HnT #H destruct elim (isrt_inv_shift … HnV) -HnV
 #HnV #H destruct /3 width=5 by ex3_2_intro, ex2_intro/
index 90aca3c7eaf4468e26fa3d6079ce2d12189b0b52..c465039d82a48fb76b25c6ffaedc0fd0cf8905ed 100644 (file)
@@ -19,21 +19,21 @@ include "basic_2/rt_transition/cpm_drops.ma".
 
 (* Inversion lemmas with sort-irrelevant equivalence for terms **************)
 
-lemma cpm_teqx_inv_lref_sn (n) (h) (G) (L) (i):
-                           ∀X.  ❪G,L❫ ⊢ #i ➡[n,h] X → #i ≛ X →
+lemma cpm_teqx_inv_lref_sn (h) (n) (G) (L) (i):
+                           ∀X.  ❪G,L❫ ⊢ #i ➡[h,n] X → #i ≛ X →
                            ∧∧ X = #i & n = 0.
-#n #h #G #L #i #X #H1 #H2
+#h #n #G #L #i #X #H1 #H2
 lapply (teqx_inv_lref1 … H2) -H2 #H destruct
 elim (cpm_inv_lref1_drops … H1) -H1 // * [| #m ]
 #K #V1 #V2 #_ #_ #H -V1
 elim (lifts_inv_lref2_uni_lt … H) -H //
 qed-.
 
-lemma cpm_teqx_inv_atom_sn (n) (h) (I) (G) (L):
-                           ∀X. ❪G,L❫ ⊢ ⓪[I] ➡[n,h] X → ⓪[I] ≛ X →
+lemma cpm_teqx_inv_atom_sn (h) (n) (I) (G) (L):
+                           ∀X. ❪G,L❫ ⊢ ⓪[I] ➡[h,n] X → ⓪[I] ≛ X →
                            ∨∨ ∧∧ X = ⓪[I] & n = 0
                             | ∃∃s. X = ⋆(⫯[h]s) & I = Sort s & n = 1.
-#n #h * #s #G #L #X #H1 #H2
+#h #n * #s #G #L #X #H1 #H2
 [ elim (cpm_inv_sort1 … H1) -H1
   cases n -n [| #n ] #H #Hn destruct -H2
   [ /3 width=1 by or_introl, conj/
index 2d0608f9237369077ceb79b172fed79fbbc71e0c..b99663e05ee843c231c29a44359e3be07a8e61b6 100644 (file)
@@ -25,24 +25,24 @@ include "basic_2/rt_transition/cpm.ma".
 (* Note: cpr_flat: does not hold in basic_1 *)
 (* Basic_1: includes: pr2_thin_dx *)
 lemma cpr_flat: ∀h,I,G,L,V1,V2,T1,T2.
-                ❪G,L❫ ⊢ V1 ➡[h] V2 → ❪G,L❫ ⊢ T1 ➡[h] T2 →
-                ❪G,L❫ ⊢ ⓕ[I]V1.T1 ➡[h] ⓕ[I]V2.T2.
+                ❪G,L❫ ⊢ V1 ➡[h,0] V2 → ❪G,L❫ ⊢ T1 ➡[h,0] T2 →
+                ❪G,L❫ ⊢ ⓕ[I]V1.T1 ➡[h,0] ⓕ[I]V2.T2.
 #h * /2 width=1 by cpm_cast, cpm_appl/
 qed.
 
 (* Basic_1: was: pr2_head_1 *)
-lemma cpr_pair_sn: ∀h,I,G,L,V1,V2. ❪G,L❫ ⊢ V1 ➡[h] V2 →
-                   ∀T. ❪G,L❫ ⊢ ②[I]V1.T ➡[h] ②[I]V2.T.
+lemma cpr_pair_sn: ∀h,I,G,L,V1,V2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 →
+                   ∀T. ❪G,L❫ ⊢ ②[I]V1.T ➡[h,0] ②[I]V2.T.
 #h * /2 width=1 by cpm_bind, cpr_flat/
 qed.
 
 (* Basic inversion properties ***********************************************)
 
-lemma cpr_inv_atom1: ∀h,J,G,L,T2. ❪G,L❫ ⊢ ⓪[J] ➡[h] T2 →
+lemma cpr_inv_atom1: ∀h,J,G,L,T2. ❪G,L❫ ⊢ ⓪[J] ➡[h,0] T2 →
                      ∨∨ T2 = ⓪[J]
-                      | ∃∃K,V1,V2. ❪G,K❫ ⊢ V1 ➡[h] V2 & ⇧[1] V2 ≘ T2 &
+                      | ∃∃K,V1,V2. ❪G,K❫ ⊢ V1 ➡[h,0] V2 & ⇧[1] V2 ≘ T2 &
                                    L = K.ⓓV1 & J = LRef 0
-                      | ∃∃I,K,T,i. ❪G,K❫ ⊢ #i ➡[h] T & ⇧[1] T ≘ T2 &
+                      | ∃∃I,K,T,i. ❪G,K❫ ⊢ #i ➡[h,0] T & ⇧[1] T ≘ T2 &
                                    L = K.ⓘ[I] & J = LRef (↑i).
 #h #J #G #L #T2 #H elim (cpm_inv_atom1 … H) -H *
 [2,4:|*: /3 width=8 by or3_intro0, or3_intro1, or3_intro2, ex4_4_intro, ex4_3_intro/ ]
@@ -52,48 +52,48 @@ lemma cpr_inv_atom1: ∀h,J,G,L,T2. ❪G,L❫ ⊢ ⓪[J] ➡[h] T2 →
 qed-.
 
 (* Basic_1: includes: pr0_gen_sort pr2_gen_sort *)
-lemma cpr_inv_sort1: ∀h,G,L,T2,s. ❪G,L❫ ⊢ ⋆s ➡[h] T2 → T2 = ⋆s.
+lemma cpr_inv_sort1: ∀h,G,L,T2,s. ❪G,L❫ ⊢ ⋆s ➡[h,0] T2 → T2 = ⋆s.
 #h #G #L #T2 #s #H elim (cpm_inv_sort1 … H) -H //
 qed-.
 
-lemma cpr_inv_zero1: ∀h,G,L,T2. ❪G,L❫ ⊢ #0 ➡[h] T2 →
+lemma cpr_inv_zero1: ∀h,G,L,T2. ❪G,L❫ ⊢ #0 ➡[h,0] T2 →
                      ∨∨ T2 = #0
-                      | ∃∃K,V1,V2. ❪G,K❫ ⊢ V1 ➡[h] V2 & ⇧[1] V2 ≘ T2 &
+                      | ∃∃K,V1,V2. ❪G,K❫ ⊢ V1 ➡[h,0] V2 & ⇧[1] V2 ≘ T2 &
                                    L = K.ⓓV1.
 #h #G #L #T2 #H elim (cpm_inv_zero1 … H) -H *
 /3 width=6 by ex3_3_intro, or_introl, or_intror/
 #n #K #V1 #V2 #_ #_ #_ #H destruct
 qed-.
 
-lemma cpr_inv_lref1: ∀h,G,L,T2,i. ❪G,L❫ ⊢ #↑i ➡[h] T2 →
+lemma cpr_inv_lref1: ∀h,G,L,T2,i. ❪G,L❫ ⊢ #↑i ➡[h,0] T2 →
                      ∨∨ T2 = #(↑i)
-                      | ∃∃I,K,T. ❪G,K❫ ⊢ #i ➡[h] T & ⇧[1] T ≘ T2 & L = K.ⓘ[I].
+                      | ∃∃I,K,T. ❪G,K❫ ⊢ #i ➡[h,0] T & ⇧[1] T ≘ T2 & L = K.ⓘ[I].
 #h #G #L #T2 #i #H elim (cpm_inv_lref1 … H) -H *
 /3 width=6 by ex3_3_intro, or_introl, or_intror/
 qed-.
 
-lemma cpr_inv_gref1: ∀h,G,L,T2,l. ❪G,L❫ ⊢ §l ➡[h] T2 → T2 = §l.
+lemma cpr_inv_gref1: ∀h,G,L,T2,l. ❪G,L❫ ⊢ §l ➡[h,0] T2 → T2 = §l.
 #h #G #L #T2 #l #H elim (cpm_inv_gref1 … H) -H //
 qed-.
 
 (* Basic_1: includes: pr0_gen_cast pr2_gen_cast *)
-lemma cpr_inv_cast1: ∀h,G,L,V1,U1,U2. ❪G,L❫ ⊢ ⓝ V1.U1 ➡[h] U2 →
-                     ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡[h] V2 & ❪G,L❫ ⊢ U1 ➡[h] T2 &
+lemma cpr_inv_cast1: ∀h,G,L,V1,U1,U2. ❪G,L❫ ⊢ ⓝ V1.U1 ➡[h,0] U2 →
+                     ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 & ❪G,L❫ ⊢ U1 ➡[h,0] T2 &
                                  U2 = ⓝV2.T2
-                      | ❪G,L❫ ⊢ U1 ➡[h] U2.
+                      | ❪G,L❫ ⊢ U1 ➡[h,0] U2.
 #h #G #L #V1 #U1 #U2 #H elim (cpm_inv_cast1 … H) -H
 /2 width=1 by or_introl, or_intror/ * #n #_ #H destruct
 qed-.
 
-lemma cpr_inv_flat1: ∀h,I,G,L,V1,U1,U2. ❪G,L❫ ⊢ ⓕ[I]V1.U1 ➡[h] U2 →
-                     ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡[h] V2 & ❪G,L❫ ⊢ U1 ➡[h] T2 &
+lemma cpr_inv_flat1: ∀h,I,G,L,V1,U1,U2. ❪G,L❫ ⊢ ⓕ[I]V1.U1 ➡[h,0] U2 →
+                     ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 & ❪G,L❫ ⊢ U1 ➡[h,0] T2 &
                                  U2 = ⓕ[I]V2.T2
-                      | (❪G,L❫ ⊢ U1 ➡[h] U2 ∧ I = Cast)
-                      | ∃∃p,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h] V2 & ❪G,L❫ ⊢ W1 ➡[h] W2 &
-                                            ❪G,L.ⓛW1❫ ⊢ T1 ➡[h] T2 & U1 = ⓛ[p]W1.T1 &
+                      | (❪G,L❫ ⊢ U1 ➡[h,0] U2 ∧ I = Cast)
+                      | ∃∃p,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 & ❪G,L❫ ⊢ W1 ➡[h,0] W2 &
+                                            ❪G,L.ⓛW1❫ ⊢ T1 ➡[h,0] T2 & U1 = ⓛ[p]W1.T1 &
                                             U2 = ⓓ[p]ⓝW2.V2.T2 & I = Appl
-                      | ∃∃p,V,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h] V & ⇧[1] V ≘ V2 &
-                                              ❪G,L❫ ⊢ W1 ➡[h] W2 & ❪G,L.ⓓW1❫ ⊢ T1 ➡[h] T2 &
+                      | ∃∃p,V,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h,0] V & ⇧[1] V ≘ V2 &
+                                              ❪G,L❫ ⊢ W1 ➡[h,0] W2 & ❪G,L.ⓓW1❫ ⊢ T1 ➡[h,0] T2 &
                                               U1 = ⓓ[p]W1.T1 &
                                               U2 = ⓓ[p]W2.ⓐV2.T2 & I = Appl.
 #h * #G #L #V1 #U1 #U2 #H
@@ -108,26 +108,26 @@ qed-.
 
 lemma cpr_ind (h): ∀Q:relation4 genv lenv term term.
                    (∀I,G,L. Q G L (⓪[I]) (⓪[I])) →
-                   (∀G,K,V1,V2,W2. ❪G,K❫ ⊢ V1 ➡[h] V2 → Q G K V1 V2 →
+                   (∀G,K,V1,V2,W2. ❪G,K❫ ⊢ V1 ➡[h,0] V2 → Q G K V1 V2 →
                      ⇧[1] V2 ≘ W2 → Q G (K.ⓓV1) (#0) W2
-                   ) → (∀I,G,K,T,U,i. ❪G,K❫ ⊢ #i ➡[h] T → Q G K (#i) T →
+                   ) → (∀I,G,K,T,U,i. ❪G,K❫ ⊢ #i ➡[h,0] T → Q G K (#i) T →
                      ⇧[1] T ≘ U → Q G (K.ⓘ[I]) (#↑i) (U)
-                   ) → (∀p,I,G,L,V1,V2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h] V2 → ❪G,L.ⓑ[I]V1❫ ⊢ T1 ➡[h] T2 →
+                   ) → (∀p,I,G,L,V1,V2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 → ❪G,L.ⓑ[I]V1❫ ⊢ T1 ➡[h,0] T2 →
                      Q G L V1 V2 → Q G (L.ⓑ[I]V1) T1 T2 → Q G L (ⓑ[p,I]V1.T1) (ⓑ[p,I]V2.T2)
-                   ) → (∀I,G,L,V1,V2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h] V2 → ❪G,L❫ ⊢ T1 ➡[h] T2 →
+                   ) → (∀I,G,L,V1,V2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 → ❪G,L❫ ⊢ T1 ➡[h,0] T2 →
                      Q G L V1 V2 → Q G L T1 T2 → Q G L (ⓕ[I]V1.T1) (ⓕ[I]V2.T2)
-                   ) → (∀G,L,V,T1,T,T2. ⇧[1] T ≘ T1 → ❪G,L❫ ⊢ T ➡[h] T2 →
+                   ) → (∀G,L,V,T1,T,T2. ⇧[1] T ≘ T1 → ❪G,L❫ ⊢ T ➡[h,0] T2 →
                      Q G L T T2 → Q G L (+ⓓV.T1) T2
-                   ) → (∀G,L,V,T1,T2. ❪G,L❫ ⊢ T1 ➡[h] T2 → Q G L T1 T2 →
+                   ) → (∀G,L,V,T1,T2. ❪G,L❫ ⊢ T1 ➡[h,0] T2 → Q G L T1 T2 →
                      Q G L (ⓝV.T1) T2
-                   ) → (∀p,G,L,V1,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h] V2 → ❪G,L❫ ⊢ W1 ➡[h] W2 → ❪G,L.ⓛW1❫ ⊢ T1 ➡[h] T2 →
+                   ) → (∀p,G,L,V1,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h,0] V2 → ❪G,L❫ ⊢ W1 ➡[h,0] W2 → ❪G,L.ⓛW1❫ ⊢ T1 ➡[h,0] T2 →
                      Q G L V1 V2 → Q G L W1 W2 → Q G (L.ⓛW1) T1 T2 →
                      Q G L (ⓐV1.ⓛ[p]W1.T1) (ⓓ[p]ⓝW2.V2.T2)
-                   ) → (∀p,G,L,V1,V,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h] V → ❪G,L❫ ⊢ W1 ➡[h] W2 → ❪G,L.ⓓW1❫ ⊢ T1 ➡[h] T2 →
+                   ) → (∀p,G,L,V1,V,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ➡[h,0] V → ❪G,L❫ ⊢ W1 ➡[h,0] W2 → ❪G,L.ⓓW1❫ ⊢ T1 ➡[h,0] T2 →
                      Q G L V1 V → Q G L W1 W2 → Q G (L.ⓓW1) T1 T2 →
                      ⇧[1] V ≘ V2 → Q G L (ⓐV1.ⓓ[p]W1.T1) (ⓓ[p]W2.ⓐV2.T2)
                    ) →
-                   ∀G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡[h] T2 → Q G L T1 T2.
+                   ∀G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡[h,0] T2 → Q G L T1 T2.
 #h #Q #IH1 #IH2 #IH3 #IH4 #IH5 #IH6 #IH7 #IH8 #IH9 #G #L #T1 #T2
 @(insert_eq_0 … 0) #n #H
 @(cpm_ind … H) -G -L -T1 -T2 -n [2,4,11:|*: /3 width=4 by/ ]
index 973329139020066a4a6d34bccbc678151e9bf239..25df04bda0b8021cc8adc889f61f011d7a2d10e0 100644 (file)
@@ -19,9 +19,9 @@ include "basic_2/rt_transition/cpm_drops.ma".
 (* Advanced inversion lemmas ************************************************)
 
 (* Basic_2A1: includes: cpr_inv_atom1 *)
-lemma cpr_inv_atom1_drops: ∀h,I,G,L,T2. ❪G,L❫ ⊢ ⓪[I] ➡[h] T2 →
+lemma cpr_inv_atom1_drops: ∀h,I,G,L,T2. ❪G,L❫ ⊢ ⓪[I] ➡[h,0] T2 →
                            ∨∨ T2 = ⓪[I]
-                            | ∃∃K,V,V2,i. ⇩[i] L ≘ K.ⓓV & ❪G,K❫ ⊢ V ➡[h] V2 &
+                            | ∃∃K,V,V2,i. ⇩[i] L ≘ K.ⓓV & ❪G,K❫ ⊢ V ➡[h,0] V2 &
                                           ⇧[↑i] V2 ≘ T2 & I = LRef i.
 #h #I #G #L #T2 #H elim (cpm_inv_atom1_drops … H) -H *
 [ /2 width=1 by or_introl/
@@ -33,9 +33,9 @@ qed-.
 
 (* Basic_1: includes: pr0_gen_lref pr2_gen_lref *)
 (* Basic_2A1: includes: cpr_inv_lref1 *)
-lemma cpr_inv_lref1_drops: ∀h,G,L,T2,i. ❪G,L❫ ⊢ #i ➡[h] T2 →
+lemma cpr_inv_lref1_drops: ∀h,G,L,T2,i. ❪G,L❫ ⊢ #i ➡[h,0] T2 →
                            ∨∨ T2 = #i
-                            | ∃∃K,V,V2. ⇩[i] L ≘ K. ⓓV & ❪G,K❫ ⊢ V ➡[h] V2 &
+                            | ∃∃K,V,V2. ⇩[i] L ≘ K. ⓓV & ❪G,K❫ ⊢ V ➡[h,0] V2 &
                                         ⇧[↑i] V2 ≘ T2.
 #h #G #L #T2 #i #H elim (cpm_inv_lref1_drops … H) -H *
 [ /2 width=1 by or_introl/
index 988a3d32ee17af1d10d8fa02f642ad4dc31c585a..8de34c2a41d4fe05855ef73cdc983e9a6529790b 100644 (file)
@@ -22,7 +22,7 @@ include "basic_2/rt_transition/cpr.ma".
 
 lemma cpr_subst (h) (G) (L) (U1) (i):
                 ∀K,V. ⇩[i] L ≘ K.ⓓV →
-                ∃∃U2,T2. ❪G,L❫ ⊢ U1 ➡[h] U2 & ⇧[i,1] T2 ≘ U2.
+                ∃∃U2,T2. ❪G,L❫ ⊢ U1 ➡[h,0] U2 & ⇧[i,1] T2 ≘ U2.
 #h #G #L #U1 @(fqup_wf_ind_eq (Ⓣ) … G L U1) -G -L -U1
 #G0 #L0 #U0 #IH #G #L * *
 [ #s #HG #HL #HT #i #K #V #_ destruct -IH
index 3e3020fc304e4325a720b02b400f1c4c5737a6d4..c22674ee2f372f63e111f73b0f1ede5738aa9d62 100644 (file)
@@ -17,9 +17,9 @@ include "basic_2/rt_transition/cpm.ma".
 
 (* CONTEXT-SENSITIVE PARALLEL R-TRANSITION FOR BINDERS **********************)
 
-definition cpr_ext (h) (G): relation3 lenv bind bind ≝
-                            cext2 (λL. cpm h G L 0).
+definition cpr_ext (h) (n) (G): relation3 lenv bind bind ≝
+           cext2 (λL. cpm h G L n).
 
 interpretation
    "context-sensitive parallel r-transition (binder)"
-   'PRed h G L I1 I2 = (cpr_ext h G L I1 I2).
+   'PRed h n G L I1 I2 = (cpr_ext h n G L I1 I2).
index be549cdaebd9294bbedc3c50b21985f9bcd2a6cf..6c05df3d38e2e73b26815b666ad0d5d6bb625863 100644 (file)
@@ -20,7 +20,7 @@ include "basic_2/rt_transition/cpr_drops_basic.ma".
 (* Properties with context-free sort-irrelevant equivalence *****************)
 
 lemma cpr_abbr_pos_tneqx (h) (G) (L) (V) (T1):
-      ∃∃T2. ❪G,L❫ ⊢ +ⓓV.T1 ➡[h] T2 & (+ⓓV.T1 ≛ T2 → ⊥).
+      ∃∃T2. ❪G,L❫ ⊢ +ⓓV.T1 ➡[h,0] T2 & (+ⓓV.T1 ≛ T2 → ⊥).
 #h #G #L #V #U1
 elim (cpr_subst h G (L.ⓓV) U1 … 0) [|*: /2 width=4 by drops_refl/ ] #U2 #T2 #HU12 #HTU2
 elim (teqx_dec U1 U2) [ -HU12 #HU12 | -HTU2 #HnU12 ]
index d1a733be663175cf2db5089e95bf3432ffc44df8..72fab31b06025fdfcba735d3067755131501c876 100644 (file)
@@ -160,7 +160,7 @@ lemma cpt_inv_lref_sn (h) (n) (G) (L) (i):
 ]
 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 *
index bf7dff5d9f84865033deb8d8b9ab65b51ec61ed3..aadec180c3281d0a71a08e994dc810f61abae39b 100644 (file)
@@ -20,7 +20,7 @@ include "basic_2/rt_transition/cpt_fqu.ma".
 (* Forward lemmas with t-bound rt-transition for terms **********************)
 
 lemma cpt_fwd_cpm (h) (n) (G) (L):
-      ∀T1,T2. ❪G,L❫ ⊢ T1 ⬆[h,n] T2 → ❪G,L❫ ⊢ T1 ➡[n,h] T2.
+      ∀T1,T2. ❪G,L❫ ⊢ T1 ⬆[h,n] T2 → ❪G,L❫ ⊢ T1 ➡[h,n] T2.
 #h #n #G #L #T1 #T2 #H
 @(cpt_ind … H) -n -G -L -T1 -T2
 /3 width=3 by cpm_ee, cpm_cast, cpm_appl, cpm_bind, cpm_lref, cpm_ell, cpm_delta/
index 5b0c68c2a6f563bcf0897e602ad61f5f96294023..3e31edb7e2d1832059e8b87b6b4c86643a74e62e 100644 (file)
@@ -32,10 +32,10 @@ interpretation
 (* Basic properties *********************************************************)
 
 (* Basic_2A1: includes: cpr_fpb *)
-lemma cpm_fpb (n) (h) (G) (L): ∀T1,T2. ❪G,L❫ ⊢ T1 ➡[n,h] T2 → (T1 ≛ T2 → ⊥) →
+lemma cpm_fpb (h) (n) (G) (L): ∀T1,T2. ❪G,L❫ ⊢ T1 ➡[h,n] T2 → (T1 ≛ T2 → ⊥) →
                                    ❪G,L,T1❫ ≻[h] ❪G,L,T2❫.
 /3 width=2 by fpb_cpx, cpm_fwd_cpx/ qed.
 
-lemma lpr_fpb (h) (G) (T): ∀L1,L2. ❪G,L1❫ ⊢ ➡[h] L2 → (L1 ≛[T] L2 → ⊥) →
+lemma lpr_fpb (h) (G) (T): ∀L1,L2. ❪G,L1❫ ⊢ ➡[h,0] L2 → (L1 ≛[T] L2 → ⊥) →
                            ❪G,L1,T❫ ≻[h] ❪G,L2,T❫.
 /3 width=1 by fpb_lpx, lpr_fwd_lpx/ qed.
index 3175d6556775e3200a20571fd44c90c0d16b68c0..3e3472135b3c4a9ad727cfe5b86c0cd83984f555 100644 (file)
@@ -37,10 +37,10 @@ lemma fpbq_refl (h): tri_reflexive … (fpbq h).
 /2 width=1 by fpbq_cpx/ qed.
 
 (* Basic_2A1: includes: cpr_fpbq *)
-lemma cpm_fpbq (n) (h) (G) (L): ∀T1,T2. ❪G,L❫ ⊢ T1 ➡[n,h] T2 → ❪G,L,T1❫ ≽[h] ❪G,L,T2❫.
+lemma cpm_fpbq (h) (n) (G) (L): ∀T1,T2. ❪G,L❫ ⊢ T1 ➡[h,n] T2 → ❪G,L,T1❫ ≽[h] ❪G,L,T2❫.
 /3 width=2 by fpbq_cpx, cpm_fwd_cpx/ qed.
 
-lemma lpr_fpbq (h) (G) (T): ∀L1,L2. ❪G,L1❫ ⊢ ➡[h] L2 → ❪G,L1,T❫ ≽[h] ❪G,L2,T❫.
+lemma lpr_fpbq (h) (G) (T): ∀L1,L2. ❪G,L1❫ ⊢ ➡[h,0] L2 → ❪G,L1,T❫ ≽[h] ❪G,L2,T❫.
 /3 width=1 by fpbq_lpx, lpr_fwd_lpx/ qed.
 
 (* Basic_2A1: removed theorems 2:
index 646689287619ce00a727a8250c26207b40fcce7f..2cfb7ff4de6b73f14f9c19ea4ab52d76ec60dbab 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/predsn_4.ma".
+include "basic_2/notation/relations/predsn_5.ma".
 include "static_2/relocation/lex.ma".
 include "basic_2/rt_transition/cpr_ext.ma".
 
 (* PARALLEL R-TRANSITION FOR FULL LOCAL ENVIRONMENTS ************************)
 
-definition lpr (h) (G): relation lenv ≝
-                        lex (λL. cpm h G L 0).
+definition lpr (h) (n) (G): relation lenv ≝
+           lex (λL. cpm h G L n).
 
 interpretation
    "parallel rt-transition (full local environment)"
-   'PRedSn h G L1 L2 = (lpr h G L1 L2).
+   'PRedSn h n G L1 L2 = (lpr h n G L1 L2).
 
 (* Basic properties *********************************************************)
 
-lemma lpr_bind (h) (G): ∀K1,K2. ❪G,K1❫ ⊢ ➡[h] K2 →
-                        ∀I1,I2. ❪G,K1❫ ⊢ I1 ➡[h] I2 → ❪G,K1.ⓘ[I1]❫ ⊢ ➡[h] K2.ⓘ[I2].
+lemma lpr_bind (h) (G): ∀K1,K2. ❪G,K1❫ ⊢ ➡[h,0] K2 →
+                        ∀I1,I2. ❪G,K1❫ ⊢ I1 ➡[h,0] I2 → ❪G,K1.ⓘ[I1]❫ ⊢ ➡[h,0] K2.ⓘ[I2].
 /2 width=1 by lex_bind/ qed.
 
 (* Note: lemma 250 *)
-lemma lpr_refl (h) (G): reflexive … (lpr h G).
+lemma lpr_refl (h) (G): reflexive … (lpr h G).
 /2 width=1 by lex_refl/ qed.
 
 (* Advanced properties ******************************************************)
 
-lemma lpr_bind_refl_dx (h) (G): ∀K1,K2. ❪G,K1❫ ⊢ ➡[h] K2 →
-                                ∀I. ❪G,K1.ⓘ[I]❫ ⊢ ➡[h] K2.ⓘ[I].
+lemma lpr_bind_refl_dx (h) (G): ∀K1,K2. ❪G,K1❫ ⊢ ➡[h,0] K2 →
+                                ∀I. ❪G,K1.ⓘ[I]❫ ⊢ ➡[h,0] K2.ⓘ[I].
 /2 width=1 by lex_bind_refl_dx/ qed.
 
-lemma lpr_pair (h) (G): ∀K1,K2,V1,V2. ❪G,K1❫ ⊢ ➡[h] K2 → ❪G,K1❫ ⊢ V1 ➡[h] V2 →
-                        ∀I. ❪G,K1.ⓑ[I]V1❫ ⊢ ➡[h] K2.ⓑ[I]V2.
+lemma lpr_pair (h) (G): ∀K1,K2,V1,V2. ❪G,K1❫ ⊢ ➡[h,0] K2 → ❪G,K1❫ ⊢ V1 ➡[h,0] V2 →
+                        ∀I. ❪G,K1.ⓑ[I]V1❫ ⊢ ➡[h,0] K2.ⓑ[I]V2.
 /2 width=1 by lex_pair/ qed.
 
 (* Basic inversion lemmas ***************************************************)
 
 (* Basic_2A1: was: lpr_inv_atom1 *)
 (* Basic_1: includes: wcpr0_gen_sort *)
-lemma lpr_inv_atom_sn (h) (G): ∀L2. ❪G,⋆❫ ⊢ ➡[h] L2 → L2 = ⋆.
+lemma lpr_inv_atom_sn (h) (G): ∀L2. ❪G,⋆❫ ⊢ ➡[h,0] L2 → L2 = ⋆.
 /2 width=2 by lex_inv_atom_sn/ qed-.
 
-lemma lpr_inv_bind_sn (h) (G): ∀I1,L2,K1. ❪G,K1.ⓘ[I1]❫ ⊢ ➡[h] L2 →
-                               ∃∃I2,K2. ❪G,K1❫ ⊢ ➡[h] K2 & ❪G,K1❫ ⊢ I1 ➡[h] I2 &
+lemma lpr_inv_bind_sn (h) (G): ∀I1,L2,K1. ❪G,K1.ⓘ[I1]❫ ⊢ ➡[h,0] L2 →
+                               ∃∃I2,K2. ❪G,K1❫ ⊢ ➡[h,0] K2 & ❪G,K1❫ ⊢ I1 ➡[h,0] I2 &
                                         L2 = K2.ⓘ[I2].
 /2 width=1 by lex_inv_bind_sn/ qed-.
 
 (* Basic_2A1: was: lpr_inv_atom2 *)
-lemma lpr_inv_atom_dx (h) (G): ∀L1. ❪G,L1❫ ⊢ ➡[h] ⋆ → L1 = ⋆.
+lemma lpr_inv_atom_dx (h) (G): ∀L1. ❪G,L1❫ ⊢ ➡[h,0] ⋆ → L1 = ⋆.
 /2 width=2 by lex_inv_atom_dx/ qed-.
 
-lemma lpr_inv_bind_dx (h) (G): ∀I2,L1,K2. ❪G,L1❫ ⊢ ➡[h] K2.ⓘ[I2] →
-                               ∃∃I1,K1. ❪G,K1❫ ⊢ ➡[h] K2 & ❪G,K1❫ ⊢ I1 ➡[h] I2 &
+lemma lpr_inv_bind_dx (h) (G): ∀I2,L1,K2. ❪G,L1❫ ⊢ ➡[h,0] K2.ⓘ[I2] →
+                               ∃∃I1,K1. ❪G,K1❫ ⊢ ➡[h,0] K2 & ❪G,K1❫ ⊢ I1 ➡[h,0] I2 &
                                         L1 = K1.ⓘ[I1].
 /2 width=1 by lex_inv_bind_dx/ qed-.
 
 (* Advanced inversion lemmas ************************************************)
 
-lemma lpr_inv_unit_sn (h) (G): ∀I,L2,K1. ❪G,K1.ⓤ[I]❫ ⊢ ➡[h] L2 →
-                               ∃∃K2. ❪G,K1❫ ⊢ ➡[h] K2 & L2 = K2.ⓤ[I].
+lemma lpr_inv_unit_sn (h) (G): ∀I,L2,K1. ❪G,K1.ⓤ[I]❫ ⊢ ➡[h,0] L2 →
+                               ∃∃K2. ❪G,K1❫ ⊢ ➡[h,0] K2 & L2 = K2.ⓤ[I].
 /2 width=1 by lex_inv_unit_sn/ qed-.
 
 (* Basic_2A1: was: lpr_inv_pair1 *)
 (* Basic_1: includes: wcpr0_gen_head *)
-lemma lpr_inv_pair_sn (h) (G): ∀I,L2,K1,V1. ❪G,K1.ⓑ[I]V1❫ ⊢ ➡[h] L2 →
-                               ∃∃K2,V2. ❪G,K1❫ ⊢ ➡[h] K2 & ❪G,K1❫ ⊢ V1 ➡[h] V2 &
+lemma lpr_inv_pair_sn (h) (G): ∀I,L2,K1,V1. ❪G,K1.ⓑ[I]V1❫ ⊢ ➡[h,0] L2 →
+                               ∃∃K2,V2. ❪G,K1❫ ⊢ ➡[h,0] K2 & ❪G,K1❫ ⊢ V1 ➡[h,0] V2 &
                                         L2 = K2.ⓑ[I]V2.
 /2 width=1 by lex_inv_pair_sn/ qed-.
 
-lemma lpr_inv_unit_dx (h) (G): ∀I,L1,K2. ❪G,L1❫ ⊢ ➡[h] K2.ⓤ[I] →
-                               ∃∃K1. ❪G,K1❫ ⊢ ➡[h] K2 & L1 = K1.ⓤ[I].
+lemma lpr_inv_unit_dx (h) (G): ∀I,L1,K2. ❪G,L1❫ ⊢ ➡[h,0] K2.ⓤ[I] →
+                               ∃∃K1. ❪G,K1❫ ⊢ ➡[h,0] K2 & L1 = K1.ⓤ[I].
 /2 width=1 by lex_inv_unit_dx/ qed-.
 
 (* Basic_2A1: was: lpr_inv_pair2 *)
-lemma lpr_inv_pair_dx (h) (G): ∀I,L1,K2,V2. ❪G,L1❫ ⊢ ➡[h] K2.ⓑ[I]V2 →
-                               ∃∃K1,V1. ❪G,K1❫ ⊢ ➡[h] K2 & ❪G,K1❫ ⊢ V1 ➡[h] V2 &
+lemma lpr_inv_pair_dx (h) (G): ∀I,L1,K2,V2. ❪G,L1❫ ⊢ ➡[h,0] K2.ⓑ[I]V2 →
+                               ∃∃K1,V1. ❪G,K1❫ ⊢ ➡[h,0] K2 & ❪G,K1❫ ⊢ V1 ➡[h,0] V2 &
                                         L1 = K1.ⓑ[I]V1.
 /2 width=1 by lex_inv_pair_dx/ qed-.
 
-lemma lpr_inv_pair (h) (G): ∀I1,I2,L1,L2,V1,V2. ❪G,L1.ⓑ[I1]V1❫ ⊢ ➡[h] L2.ⓑ[I2]V2 →
-                            ∧∧ ❪G,L1❫ ⊢ ➡[h] L2 & ❪G,L1❫ ⊢ V1 ➡[h] V2 & I1 = I2.
+lemma lpr_inv_pair (h) (G): ∀I1,I2,L1,L2,V1,V2. ❪G,L1.ⓑ[I1]V1❫ ⊢ ➡[h,0] L2.ⓑ[I2]V2 →
+                            ∧∧ ❪G,L1❫ ⊢ ➡[h,0] L2 & ❪G,L1❫ ⊢ V1 ➡[h,0] V2 & I1 = I2.
 /2 width=1 by lex_inv_pair/ qed-.
 
 (* Basic_1: removed theorems 3: wcpr0_getl wcpr0_getl_back
index c051cf6d9d6f778b3bb3faedb16e14ceadd3696a..2e6e577ef85c0bfcf75d3b9df236bcd20aabf656 100644 (file)
@@ -19,5 +19,5 @@ include "basic_2/rt_transition/lpx_aaa.ma".
 
 (* Properties with atomic arity assignment for terms ************************)
 
-lemma lpr_aaa_conf (h): ∀G,T. Conf3 … (λL. aaa G L T) (lpr h G).
+lemma lpr_aaa_conf (h): ∀G,T. Conf3 … (λL. aaa G L T) (lpr h G).
 /3 width=5 by lpx_aaa_conf, lpr_fwd_lpx/ qed-.
index 97b4f2c8f442d0242279ea1caf727522c2cbdaa2..6c9f743cbd8e6c4c2ac6dab6c3ef41024d3e93fc 100644 (file)
@@ -23,8 +23,8 @@ include "basic_2/rt_transition/lpr.ma".
 (* Properties with extended structural successor for closures ***************)
 
 lemma fqu_cpr_trans_sn (h) (b): ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂[b] ❪G2,L2,T2❫ →
-                                ∀U2. ❪G2,L2❫ ⊢ T2 ➡[h] U2 →
-                                ∃∃L,U1. ❪G1,L1❫ ⊢ ➡[h] L & ❪G1,L1❫ ⊢ T1 ➡[h] U1 & ❪G1,L,U1❫ ⬂[b] ❪G2,L2,U2❫.
+                                ∀U2. ❪G2,L2❫ ⊢ T2 ➡[h,0] U2 →
+                                ∃∃L,U1. ❪G1,L1❫ ⊢ ➡[h,0] L & ❪G1,L1❫ ⊢ T1 ➡[h,0] U1 & ❪G1,L,U1❫ ⬂[b] ❪G2,L2,U2❫.
 #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
 [ /3 width=5 by lpr_pair, fqu_lref_O, ex3_2_intro/
 | /3 width=5 by cpr_pair_sn, fqu_pair_sn, ex3_2_intro/
@@ -38,8 +38,8 @@ lemma fqu_cpr_trans_sn (h) (b): ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂[b] ❪G
 qed-.
 
 lemma fqu_cpr_trans_dx (h) (b): ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂[b] ❪G2,L2,T2❫ →
-                                ∀U2. ❪G2,L2❫ ⊢ T2 ➡[h] U2 →
-                                ∃∃L,U1. ❪G1,L1❫ ⊢ ➡[h] L & ❪G1,L❫ ⊢ T1 ➡[h] U1 & ❪G1,L,U1❫ ⬂[b] ❪G2,L2,U2❫.
+                                ∀U2. ❪G2,L2❫ ⊢ T2 ➡[h,0] U2 →
+                                ∃∃L,U1. ❪G1,L1❫ ⊢ ➡[h,0] L & ❪G1,L❫ ⊢ T1 ➡[h,0] U1 & ❪G1,L,U1❫ ⬂[b] ❪G2,L2,U2❫.
 #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
 [ /3 width=5 by lpr_pair, fqu_lref_O, ex3_2_intro/
 | /3 width=5 by cpr_pair_sn, fqu_pair_sn, ex3_2_intro/
@@ -53,8 +53,8 @@ lemma fqu_cpr_trans_dx (h) (b): ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂[b] ❪G
 qed-.
 
 lemma fqu_lpr_trans (h) (b): ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂[b] ❪G2,L2,T2❫ →
-                             ∀K2. ❪G2,L2❫ ⊢ ➡[h] K2 →
-                             ∃∃K1,T. ❪G1,L1❫ ⊢ ➡[h] K1 & ❪G1,L1❫ ⊢ T1 ➡[h] T & ❪G1,K1,T❫ ⬂[b] ❪G2,K2,T2❫.
+                             ∀K2. ❪G2,L2❫ ⊢ ➡[h,0] K2 →
+                             ∃∃K1,T. ❪G1,L1❫ ⊢ ➡[h,0] K1 & ❪G1,L1❫ ⊢ T1 ➡[h,0] T & ❪G1,K1,T❫ ⬂[b] ❪G2,K2,T2❫.
 #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
 [ /3 width=5 by lpr_bind_refl_dx, fqu_lref_O, ex3_2_intro/
 | /3 width=5 by cpr_pair_sn, fqu_pair_sn, ex3_2_intro/
@@ -72,8 +72,8 @@ qed-.
 (* Note: does not hold in Basic_2A1 because it requires cpm *)
 (* Note: L1 = K0.ⓛV0 and T1 = #0 require n = 1 *)
 lemma lpr_fqu_trans (h) (b): ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂[b] ❪G2,L2,T2❫ →
-                             ∀K1. ❪G1,K1❫ ⊢ ➡[h] L1 →
-                             ∃∃n,K2,T. ❪G1,K1❫ ⊢ T1 ➡[n,h] T & ❪G1,K1,T❫ ⬂[b] ❪G2,K2,T2❫ & ❪G2,K2❫ ⊢ ➡[h] L2 & n ≤ 1.
+                             ∀K1. ❪G1,K1❫ ⊢ ➡[h,0] L1 →
+                             ∃∃n,K2,T. ❪G1,K1❫ ⊢ T1 ➡[h,n] T & ❪G1,K1,T❫ ⬂[b] ❪G2,K2,T2❫ & ❪G2,K2❫ ⊢ ➡[h,0] L2 & n ≤ 1.
 #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
 [ * #G #K #V #K1 #H
   elim (lpr_inv_pair_dx … H) -H #K0 #V0 #HK0 #HV0 #H destruct
@@ -92,8 +92,8 @@ qed-.
 (* Properties with extended optional structural successor for closures ******)
 
 lemma fquq_cpr_trans_sn (h) (b): ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂⸮[b] ❪G2,L2,T2❫ →
-                                 ∀U2. ❪G2,L2❫ ⊢ T2 ➡[h] U2 →
-                                 ∃∃L,U1. ❪G1,L1❫ ⊢ ➡[h] L & ❪G1,L1❫ ⊢ T1 ➡[h] U1 & ❪G1,L,U1❫ ⬂⸮[b] ❪G2,L2,U2❫.
+                                 ∀U2. ❪G2,L2❫ ⊢ T2 ➡[h,0] U2 →
+                                 ∃∃L,U1. ❪G1,L1❫ ⊢ ➡[h,0] L & ❪G1,L1❫ ⊢ T1 ➡[h,0] U1 & ❪G1,L,U1❫ ⬂⸮[b] ❪G2,L2,U2❫.
 #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H #U2 #HTU2 cases H -H
 [ #HT12 elim (fqu_cpr_trans_sn … HT12 … HTU2) /3 width=5 by fqu_fquq, ex3_2_intro/
 | * #H1 #H2 #H3 destruct /2 width=5 by ex3_2_intro/
@@ -101,8 +101,8 @@ lemma fquq_cpr_trans_sn (h) (b): ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂⸮[b]
 qed-.
 
 lemma fquq_cpr_trans_dx (h) (b): ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂⸮[b] ❪G2,L2,T2❫ →
-                                 ∀U2. ❪G2,L2❫ ⊢ T2 ➡[h] U2 →
-                                 ∃∃L,U1. ❪G1,L1❫ ⊢ ➡[h] L & ❪G1,L❫ ⊢ T1 ➡[h] U1 & ❪G1,L,U1❫ ⬂⸮[b] ❪G2,L2,U2❫.
+                                 ∀U2. ❪G2,L2❫ ⊢ T2 ➡[h,0] U2 →
+                                 ∃∃L,U1. ❪G1,L1❫ ⊢ ➡[h,0] L & ❪G1,L❫ ⊢ T1 ➡[h,0] U1 & ❪G1,L,U1❫ ⬂⸮[b] ❪G2,L2,U2❫.
 #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H #U2 #HTU2 cases H -H
 [ #HT12 elim (fqu_cpr_trans_dx … HT12 … HTU2) /3 width=5 by fqu_fquq, ex3_2_intro/
 | * #H1 #H2 #H3 destruct /2 width=5 by ex3_2_intro/
@@ -110,8 +110,8 @@ lemma fquq_cpr_trans_dx (h) (b): ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂⸮[b]
 qed-.
 
 lemma fquq_lpr_trans (h) (b): ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂⸮[b] ❪G2,L2,T2❫ →
-                              ∀K2. ❪G2,L2❫ ⊢ ➡[h] K2 →
-                              ∃∃K1,T. ❪G1,L1❫ ⊢ ➡[h] K1 & ❪G1,L1❫ ⊢ T1 ➡[h] T & ❪G1,K1,T❫ ⬂⸮[b] ❪G2,K2,T2❫.
+                              ∀K2. ❪G2,L2❫ ⊢ ➡[h,0] K2 →
+                              ∃∃K1,T. ❪G1,L1❫ ⊢ ➡[h,0] K1 & ❪G1,L1❫ ⊢ T1 ➡[h,0] T & ❪G1,K1,T❫ ⬂⸮[b] ❪G2,K2,T2❫.
 #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H #K2 #HLK2 cases H -H
 [ #H12 elim (fqu_lpr_trans … H12 … HLK2) /3 width=5 by fqu_fquq, ex3_2_intro/
 | * #H1 #H2 #H3 destruct /2 width=5 by ex3_2_intro/
@@ -119,8 +119,8 @@ lemma fquq_lpr_trans (h) (b): ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂⸮[b] ❪
 qed-.
 
 lemma lpr_fquq_trans (h) (b): ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂⸮[b] ❪G2,L2,T2❫ →
-                              ∀K1. ❪G1,K1❫ ⊢ ➡[h] L1 →
-                              ∃∃n,K2,T. ❪G1,K1❫ ⊢ T1 ➡[n,h] T & ❪G1,K1,T❫ ⬂⸮[b] ❪G2,K2,T2❫ & ❪G2,K2❫ ⊢ ➡[h] L2 & n ≤ 1.
+                              ∀K1. ❪G1,K1❫ ⊢ ➡[h,0] L1 →
+                              ∃∃n,K2,T. ❪G1,K1❫ ⊢ T1 ➡[h,n] T & ❪G1,K1,T❫ ⬂⸮[b] ❪G2,K2,T2❫ & ❪G2,K2❫ ⊢ ➡[h,0] L2 & n ≤ 1.
 #h #b #G1 #G2 #L1 #L2 #T1 #T2 #H #K1 #HKL1 cases H -H
 [ #H12 elim (lpr_fqu_trans … H12 … HKL1) -L1 /3 width=7 by fqu_fquq, ex4_3_intro/
 | * #H1 #H2 #H3 destruct /2 width=7 by ex4_3_intro/
index cd15d3434da1398a8ddd1130e4e858fe19727a93..3a548a496ace9fcb0cf8aed330cb355d77c32508 100644 (file)
@@ -17,5 +17,5 @@ include "basic_2/rt_transition/lpr.ma".
 
 (* PARALLEL R-TRANSITION FOR FULL LOCAL ENVIRONMENTS ************************)
 
-lemma lpr_fwd_length (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡[h] L2 → |L1| = |L2|.
+lemma lpr_fwd_length (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡[h,0] L2 → |L1| = |L2|.
 /2 width=2 by lex_fwd_length/ qed-.
index 2b92825d3514708c5a3727cfd534e5781e310b01..73509adecf4ba65ec0423b515f9b02987f28cd25 100644 (file)
@@ -21,14 +21,14 @@ include "basic_2/rt_transition/lpr_drops.ma".
 (* PARALLEL R-TRANSITION FOR FULL LOCAL ENVIRONMENTS ************************)
 
 definition IH_cpr_conf_lpr (h): relation3 genv lenv term ≝ λG,L,T.
-                           ∀T1. ❪G,L❫ ⊢ T ➡[h] T1 → ∀T2. ❪G,L❫ ⊢ T ➡[h] T2 →
-                           ∀L1. ❪G,L❫ ⊢ ➡[h] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h] L2 →
-                           ∃∃T0. ❪G,L1❫ ⊢ T1 ➡[h] T0 & ❪G,L2❫ ⊢ T2 ➡[h] T0.
+                           ∀T1. ❪G,L❫ ⊢ T ➡[h,0] T1 → ∀T2. ❪G,L❫ ⊢ T ➡[h,0] T2 →
+                           ∀L1. ❪G,L❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G,L❫ ⊢ ➡[h,0] L2 →
+                           ∃∃T0. ❪G,L1❫ ⊢ T1 ➡[h,0] T0 & ❪G,L2❫ ⊢ T2 ➡[h,0] T0.
 
 (* Main properties with context-sensitive parallel reduction for terms ******)
 
 fact cpr_conf_lpr_atom_atom (h):
-   ∀I,G,L1,L2. ∃∃T. ❪G,L1❫ ⊢ ⓪[I] ➡[h] T & ❪G,L2❫ ⊢ ⓪[I] ➡[h] T.
+   ∀I,G,L1,L2. ∃∃T. ❪G,L1❫ ⊢ ⓪[I] ➡[h,0] T & ❪G,L2❫ ⊢ ⓪[I] ➡[h,0] T.
 /2 width=3 by cpr_refl, ex2_intro/ qed-.
 
 fact cpr_conf_lpr_atom_delta (h):
@@ -36,9 +36,9 @@ fact cpr_conf_lpr_atom_delta (h):
       ∀G,L,T. ❪G0,L0,#i❫ ⬂+ ❪G,L,T❫ → IH_cpr_conf_lpr h G L T
    ) →
    ∀K0,V0. ⇩[i] L0 ≘ K0.ⓓV0 →
-   ∀V2. ❪G0,K0❫ ⊢ V0 ➡[h] V2 → ∀T2. ⇧[↑i] V2 ≘ T2 →
-   ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-   ∃∃T. ❪G0,L1❫ ⊢ #i ➡[h] T & ❪G0,L2❫ ⊢ T2 ➡[h] T.
+   ∀V2. ❪G0,K0❫ ⊢ V0 ➡[h,0] V2 → ∀T2. ⇧[↑i] V2 ≘ T2 →
+   ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+   ∃∃T. ❪G0,L1❫ ⊢ #i ➡[h,0] T & ❪G0,L2❫ ⊢ T2 ➡[h,0] T.
 #h #G0 #L0 #i #IH #K0 #V0 #HLK0 #V2 #HV02 #T2 #HVT2 #L1 #HL01 #L2 #HL02
 elim (lpr_drops_conf … HLK0 … HL01) -HL01 // #X1 #H1 #HLK1
 elim (lpr_inv_pair_sn … H1) -H1 #K1 #V1 #HK01 #HV01 #H destruct
@@ -57,11 +57,11 @@ fact cpr_conf_lpr_delta_delta (h):
       ∀G,L,T. ❪G0,L0,#i❫ ⬂+ ❪G,L,T❫ → IH_cpr_conf_lpr h G L T
    ) →
    ∀K0,V0. ⇩[i] L0 ≘ K0.ⓓV0 →
-   ∀V1. ❪G0,K0❫ ⊢ V0 ➡[h] V1 → ∀T1. ⇧[↑i] V1 ≘ T1 →
+   ∀V1. ❪G0,K0❫ ⊢ V0 ➡[h,0] V1 → ∀T1. ⇧[↑i] V1 ≘ T1 →
    ∀KX,VX. ⇩[i] L0 ≘ KX.ⓓVX →
-   ∀V2. ❪G0,KX❫ ⊢ VX ➡[h] V2 → ∀T2. ⇧[↑i] V2 ≘ T2 →
-   ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-   ∃∃T. ❪G0,L1❫ ⊢ T1 ➡[h] T & ❪G0,L2❫ ⊢ T2 ➡[h] T.
+   ∀V2. ❪G0,KX❫ ⊢ VX ➡[h,0] V2 → ∀T2. ⇧[↑i] V2 ≘ T2 →
+   ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+   ∃∃T. ❪G0,L1❫ ⊢ T1 ➡[h,0] T & ❪G0,L2❫ ⊢ T2 ➡[h,0] T.
 #h #G0 #L0 #i #IH #K0 #V0 #HLK0 #V1 #HV01 #T1 #HVT1
 #KX #VX #H #V2 #HV02 #T2 #HVT2 #L1 #HL01 #L2 #HL02
 lapply (drops_mono … H … HLK0) -H #H destruct
@@ -81,10 +81,10 @@ fact cpr_conf_lpr_bind_bind (h):
    ∀p,I,G0,L0,V0,T0. (
       ∀G,L,T. ❪G0,L0,ⓑ[p,I]V0.T0❫ ⬂+ ❪G,L,T❫ → IH_cpr_conf_lpr h G L T
    ) →
-   ∀V1. ❪G0,L0❫ ⊢ V0 ➡[h] V1 → ∀T1. ❪G0,L0.ⓑ[I]V0❫ ⊢ T0 ➡[h] T1 →
-   ∀V2. ❪G0,L0❫ ⊢ V0 ➡[h] V2 → ∀T2. ❪G0,L0.ⓑ[I]V0❫ ⊢ T0 ➡[h] T2 →
-   ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-   ∃∃T. ❪G0,L1❫ ⊢ ⓑ[p,I]V1.T1 ➡[h] T & ❪G0,L2❫ ⊢ ⓑ[p,I]V2.T2 ➡[h] T.
+   ∀V1. ❪G0,L0❫ ⊢ V0 ➡[h,0] V1 → ∀T1. ❪G0,L0.ⓑ[I]V0❫ ⊢ T0 ➡[h,0] T1 →
+   ∀V2. ❪G0,L0❫ ⊢ V0 ➡[h,0] V2 → ∀T2. ❪G0,L0.ⓑ[I]V0❫ ⊢ T0 ➡[h,0] T2 →
+   ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+   ∃∃T. ❪G0,L1❫ ⊢ ⓑ[p,I]V1.T1 ➡[h,0] T & ❪G0,L2❫ ⊢ ⓑ[p,I]V2.T2 ➡[h,0] T.
 #h #p #I #G0 #L0 #V0 #T0 #IH #V1 #HV01 #T1 #HT01
 #V2 #HV02 #T2 #HT02 #L1 #HL01 #L2 #HL02
 elim (IH … HV01 … HV02 … HL01 … HL02) //
@@ -96,10 +96,10 @@ fact cpr_conf_lpr_bind_zeta (h):
    ∀G0,L0,V0,T0. (
       ∀G,L,T. ❪G0,L0,+ⓓV0.T0❫ ⬂+ ❪G,L,T❫ → IH_cpr_conf_lpr h G L T
    ) →
-   ∀V1. ❪G0,L0❫ ⊢ V0 ➡[h] V1 → ∀T1. ❪G0,L0.ⓓV0❫ ⊢ T0 ➡[h] T1 →
-   ∀T2. ⇧[1]T2 ≘ T0 → ∀X2. ❪G0,L0❫ ⊢ T2 ➡[h] X2 →
-   ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-   ∃∃T. ❪G0,L1❫ ⊢ +ⓓV1.T1 ➡[h] T & ❪G0,L2❫ ⊢ X2 ➡[h] T.
+   ∀V1. ❪G0,L0❫ ⊢ V0 ➡[h,0] V1 → ∀T1. ❪G0,L0.ⓓV0❫ ⊢ T0 ➡[h,0] T1 →
+   ∀T2. ⇧[1]T2 ≘ T0 → ∀X2. ❪G0,L0❫ ⊢ T2 ➡[h,0] X2 →
+   ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+   ∃∃T. ❪G0,L1❫ ⊢ +ⓓV1.T1 ➡[h,0] T & ❪G0,L2❫ ⊢ X2 ➡[h,0] T.
 #h #G0 #L0 #V0 #T0 #IH #V1 #HV01 #T1 #HT01
 #T2 #HT20 #X2 #HTX2 #L1 #HL01 #L2 #HL02
 elim (cpm_inv_lifts_sn … HT01 (Ⓣ) … L0 … HT20) -HT01 [| /3 width=1 by drops_refl, drops_drop/ ] #T #HT1 #HT2
@@ -111,10 +111,10 @@ fact cpr_conf_lpr_zeta_zeta (h):
    ∀G0,L0,V0,T0. (
       ∀G,L,T. ❪G0,L0,+ⓓV0.T0❫ ⬂+ ❪G,L,T❫ → IH_cpr_conf_lpr h G L T
    ) →
-   ∀T1. ⇧[1] T1 ≘ T0 → ∀X1. ❪G0,L0❫ ⊢ T1 ➡[h] X1 →
-   ∀T2. ⇧[1] T2 ≘ T0 → ∀X2. ❪G0,L0❫ ⊢ T2 ➡[h] X2 →
-   ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-   ∃∃T. ❪G0,L1❫ ⊢ X1 ➡[h] T & ❪G0,L2❫ ⊢ X2 ➡[h] T.
+   ∀T1. ⇧[1] T1 ≘ T0 → ∀X1. ❪G0,L0❫ ⊢ T1 ➡[h,0] X1 →
+   ∀T2. ⇧[1] T2 ≘ T0 → ∀X2. ❪G0,L0❫ ⊢ T2 ➡[h,0] X2 →
+   ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+   ∃∃T. ❪G0,L1❫ ⊢ X1 ➡[h,0] T & ❪G0,L2❫ ⊢ X2 ➡[h,0] T.
 #h #G0 #L0 #V0 #T0 #IH #T1 #HT10 #X1 #HTX1
 #T2 #HT20 #X2 #HTX2 #L1 #HL01 #L2 #HL02
 lapply (lifts_inj … HT20 … HT10) -HT20 #H destruct
@@ -126,10 +126,10 @@ fact cpr_conf_lpr_flat_flat (h):
    ∀I,G0,L0,V0,T0. (
       ∀G,L,T. ❪G0,L0,ⓕ[I]V0.T0❫ ⬂+ ❪G,L,T❫ → IH_cpr_conf_lpr h G L T
    ) →
-   ∀V1. ❪G0,L0❫ ⊢ V0 ➡[h] V1 → ∀T1. ❪G0,L0❫ ⊢ T0 ➡[h] T1 →
-   ∀V2. ❪G0,L0❫ ⊢ V0 ➡[h] V2 → ∀T2. ❪G0,L0❫ ⊢ T0 ➡[h] T2 →
-   ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-   ∃∃T. ❪G0,L1❫ ⊢ ⓕ[I]V1.T1 ➡[h] T & ❪G0,L2❫ ⊢ ⓕ[I]V2.T2 ➡[h] T.
+   ∀V1. ❪G0,L0❫ ⊢ V0 ➡[h,0] V1 → ∀T1. ❪G0,L0❫ ⊢ T0 ➡[h,0] T1 →
+   ∀V2. ❪G0,L0❫ ⊢ V0 ➡[h,0] V2 → ∀T2. ❪G0,L0❫ ⊢ T0 ➡[h,0] T2 →
+   ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+   ∃∃T. ❪G0,L1❫ ⊢ ⓕ[I]V1.T1 ➡[h,0] T & ❪G0,L2❫ ⊢ ⓕ[I]V2.T2 ➡[h,0] T.
 #h #I #G0 #L0 #V0 #T0 #IH #V1 #HV01 #T1 #HT01
 #V2 #HV02 #T2 #HT02 #L1 #HL01 #L2 #HL02
 elim (IH … HV01 … HV02 … HL01 … HL02) //
@@ -141,9 +141,9 @@ fact cpr_conf_lpr_flat_eps (h):
    ∀G0,L0,V0,T0. (
       ∀G,L,T. ❪G0,L0,ⓝV0.T0❫ ⬂+ ❪G,L,T❫ → IH_cpr_conf_lpr h G L T
    ) →
-   ∀V1,T1. ❪G0,L0❫ ⊢ T0 ➡[h] T1 → ∀T2. ❪G0,L0❫ ⊢ T0 ➡[h] T2 →
-   ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-   ∃∃T. ❪G0,L1❫ ⊢ ⓝV1.T1 ➡[h] T & ❪G0,L2❫ ⊢ T2 ➡[h] T.
+   ∀V1,T1. ❪G0,L0❫ ⊢ T0 ➡[h,0] T1 → ∀T2. ❪G0,L0❫ ⊢ T0 ➡[h,0] T2 →
+   ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+   ∃∃T. ❪G0,L1❫ ⊢ ⓝV1.T1 ➡[h,0] T & ❪G0,L2❫ ⊢ T2 ➡[h,0] T.
 #h #G0 #L0 #V0 #T0 #IH #V1 #T1 #HT01
 #T2 #HT02 #L1 #HL01 #L2 #HL02
 elim (IH … HT01 … HT02 … HL01 … HL02) // -L0 -V0 -T0
@@ -154,9 +154,9 @@ fact cpr_conf_lpr_eps_eps (h):
    ∀G0,L0,V0,T0. (
       ∀G,L,T. ❪G0,L0,ⓝV0.T0❫ ⬂+ ❪G,L,T❫ → IH_cpr_conf_lpr h G L T
    ) →
-   ∀T1. ❪G0,L0❫ ⊢ T0 ➡[h] T1 → ∀T2. ❪G0,L0❫ ⊢ T0 ➡[h] T2 →
-   ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-   ∃∃T. ❪G0,L1❫ ⊢ T1 ➡[h] T & ❪G0,L2❫ ⊢ T2 ➡[h] T.
+   ∀T1. ❪G0,L0❫ ⊢ T0 ➡[h,0] T1 → ∀T2. ❪G0,L0❫ ⊢ T0 ➡[h,0] T2 →
+   ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+   ∃∃T. ❪G0,L1❫ ⊢ T1 ➡[h,0] T & ❪G0,L2❫ ⊢ T2 ➡[h,0] T.
 #h #G0 #L0 #V0 #T0 #IH #T1 #HT01
 #T2 #HT02 #L1 #HL01 #L2 #HL02
 elim (IH … HT01 … HT02 … HL01 … HL02) // -L0 -V0 -T0
@@ -167,10 +167,10 @@ fact cpr_conf_lpr_flat_beta (h):
    ∀p,G0,L0,V0,W0,T0. (
       ∀G,L,T. ❪G0,L0,ⓐV0.ⓛ[p]W0.T0❫ ⬂+ ❪G,L,T❫ → IH_cpr_conf_lpr h G L T
    ) →
-   ∀V1. ❪G0,L0❫ ⊢ V0 ➡[h] V1 → ∀T1. ❪G0,L0❫ ⊢ ⓛ[p]W0.T0 ➡[h] T1 →
-   ∀V2. ❪G0,L0❫ ⊢ V0 ➡[h] V2 → ∀W2. ❪G0,L0❫ ⊢ W0 ➡[h] W2 → ∀T2. ❪G0,L0.ⓛW0❫ ⊢ T0 ➡[h] T2 →
-   ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-   ∃∃T. ❪G0,L1❫ ⊢ ⓐV1.T1 ➡[h] T & ❪G0,L2❫ ⊢ ⓓ[p]ⓝW2.V2.T2 ➡[h] T.
+   ∀V1. ❪G0,L0❫ ⊢ V0 ➡[h,0] V1 → ∀T1. ❪G0,L0❫ ⊢ ⓛ[p]W0.T0 ➡[h,0] T1 →
+   ∀V2. ❪G0,L0❫ ⊢ V0 ➡[h,0] V2 → ∀W2. ❪G0,L0❫ ⊢ W0 ➡[h,0] W2 → ∀T2. ❪G0,L0.ⓛW0❫ ⊢ T0 ➡[h,0] T2 →
+   ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+   ∃∃T. ❪G0,L1❫ ⊢ ⓐV1.T1 ➡[h,0] T & ❪G0,L2❫ ⊢ ⓓ[p]ⓝW2.V2.T2 ➡[h,0] T.
 #h #p #G0 #L0 #V0 #W0 #T0 #IH #V1 #HV01 #X #H
 #V2 #HV02 #W2 #HW02 #T2 #HT02 #L1 #HL01 #L2 #HL02
 elim (cpm_inv_abst1 … H) -H #W1 #T1 #HW01 #HT01 #H destruct
@@ -189,11 +189,11 @@ fact cpr_conf_lpr_flat_theta (h):
    ∀p,G0,L0,V0,W0,T0. (
       ∀G,L,T. ❪G0,L0,ⓐV0.ⓓ[p]W0.T0❫ ⬂+ ❪G,L,T❫ → IH_cpr_conf_lpr h G L T
    ) →
-   ∀V1. ❪G0,L0❫ ⊢ V0 ➡[h] V1 → ∀T1. ❪G0,L0❫ ⊢ ⓓ[p]W0.T0 ➡[h] T1 →
-   ∀V2. ❪G0,L0❫ ⊢ V0 ➡[h] V2 → ∀U2. ⇧[1] V2 ≘ U2 →
-   ∀W2. ❪G0,L0❫ ⊢ W0 ➡[h] W2 → ∀T2. ❪G0,L0.ⓓW0❫ ⊢ T0 ➡[h] T2 →
-   ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-   ∃∃T. ❪G0,L1❫ ⊢ ⓐV1.T1 ➡[h] T & ❪G0,L2❫ ⊢ ⓓ[p]W2.ⓐU2.T2 ➡[h] T.
+   ∀V1. ❪G0,L0❫ ⊢ V0 ➡[h,0] V1 → ∀T1. ❪G0,L0❫ ⊢ ⓓ[p]W0.T0 ➡[h,0] T1 →
+   ∀V2. ❪G0,L0❫ ⊢ V0 ➡[h,0] V2 → ∀U2. ⇧[1] V2 ≘ U2 →
+   ∀W2. ❪G0,L0❫ ⊢ W0 ➡[h,0] W2 → ∀T2. ❪G0,L0.ⓓW0❫ ⊢ T0 ➡[h,0] T2 →
+   ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+   ∃∃T. ❪G0,L1❫ ⊢ ⓐV1.T1 ➡[h,0] T & ❪G0,L2❫ ⊢ ⓓ[p]W2.ⓐU2.T2 ➡[h,0] T.
 #h #p #G0 #L0 #V0 #W0 #T0 #IH #V1 #HV01 #X #H
 #V2 #HV02 #U2 #HVU2 #W2 #HW02 #T2 #HT02 #L1 #HL01 #L2 #HL02
 elim (IH … HV01 … HV02 … HL01 … HL02) -HV01 -HV02 /2 width=1 by/ #V #HV1 #HV2
@@ -214,10 +214,10 @@ fact cpr_conf_lpr_beta_beta (h):
    ∀p,G0,L0,V0,W0,T0. (
       ∀G,L,T. ❪G0,L0,ⓐV0.ⓛ[p]W0.T0❫ ⬂+ ❪G,L,T❫ → IH_cpr_conf_lpr h G L T
    ) →
-   ∀V1. ❪G0,L0❫ ⊢ V0 ➡[h] V1 → ∀W1. ❪G0,L0❫ ⊢ W0 ➡[h] W1 → ∀T1. ❪G0,L0.ⓛW0❫ ⊢ T0 ➡[h] T1 →
-   ∀V2. ❪G0,L0❫ ⊢ V0 ➡[h] V2 → ∀W2. ❪G0,L0❫ ⊢ W0 ➡[h] W2 → ∀T2. ❪G0,L0.ⓛW0❫ ⊢ T0 ➡[h] T2 →
-   ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-   ∃∃T. ❪G0,L1❫ ⊢ ⓓ[p]ⓝW1.V1.T1 ➡[h] T & ❪G0,L2❫ ⊢ ⓓ[p]ⓝW2.V2.T2 ➡[h] T.
+   ∀V1. ❪G0,L0❫ ⊢ V0 ➡[h,0] V1 → ∀W1. ❪G0,L0❫ ⊢ W0 ➡[h,0] W1 → ∀T1. ❪G0,L0.ⓛW0❫ ⊢ T0 ➡[h,0] T1 →
+   ∀V2. ❪G0,L0❫ ⊢ V0 ➡[h,0] V2 → ∀W2. ❪G0,L0❫ ⊢ W0 ➡[h,0] W2 → ∀T2. ❪G0,L0.ⓛW0❫ ⊢ T0 ➡[h,0] T2 →
+   ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+   ∃∃T. ❪G0,L1❫ ⊢ ⓓ[p]ⓝW1.V1.T1 ➡[h,0] T & ❪G0,L2❫ ⊢ ⓓ[p]ⓝW2.V2.T2 ➡[h,0] T.
 #h #p #G0 #L0 #V0 #W0 #T0 #IH #V1 #HV01 #W1 #HW01 #T1 #HT01
 #V2 #HV02 #W2 #HW02 #T2 #HT02 #L1 #HL01 #L2 #HL02
 elim (IH … HV01 … HV02 … HL01 … HL02) -HV01 -HV02 /2 width=1 by/ #V #HV1 #HV2
@@ -233,12 +233,12 @@ fact cpr_conf_lpr_theta_theta (h):
    ∀p,G0,L0,V0,W0,T0. (
       ∀G,L,T. ❪G0,L0,ⓐV0.ⓓ[p]W0.T0❫ ⬂+ ❪G,L,T❫ → IH_cpr_conf_lpr h G L T
    ) →
-   ∀V1. ❪G0,L0❫ ⊢ V0 ➡[h] V1 → ∀U1. ⇧[1] V1 ≘ U1 →
-   ∀W1. ❪G0,L0❫ ⊢ W0 ➡[h] W1 → ∀T1. ❪G0,L0.ⓓW0❫ ⊢ T0 ➡[h] T1 →
-   ∀V2. ❪G0,L0❫ ⊢ V0 ➡[h] V2 → ∀U2. ⇧[1] V2 ≘ U2 →
-   ∀W2. ❪G0,L0❫ ⊢ W0 ➡[h] W2 → ∀T2. ❪G0,L0.ⓓW0❫ ⊢ T0 ➡[h] T2 →
-   ∀L1. ❪G0,L0❫ ⊢ ➡[h] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h] L2 →
-   ∃∃T. ❪G0,L1❫ ⊢ ⓓ[p]W1.ⓐU1.T1 ➡[h] T & ❪G0,L2❫ ⊢ ⓓ[p]W2.ⓐU2.T2 ➡[h] T.
+   ∀V1. ❪G0,L0❫ ⊢ V0 ➡[h,0] V1 → ∀U1. ⇧[1] V1 ≘ U1 →
+   ∀W1. ❪G0,L0❫ ⊢ W0 ➡[h,0] W1 → ∀T1. ❪G0,L0.ⓓW0❫ ⊢ T0 ➡[h,0] T1 →
+   ∀V2. ❪G0,L0❫ ⊢ V0 ➡[h,0] V2 → ∀U2. ⇧[1] V2 ≘ U2 →
+   ∀W2. ❪G0,L0❫ ⊢ W0 ➡[h,0] W2 → ∀T2. ❪G0,L0.ⓓW0❫ ⊢ T0 ➡[h,0] T2 →
+   ∀L1. ❪G0,L0❫ ⊢ ➡[h,0] L1 → ∀L2. ❪G0,L0❫ ⊢ ➡[h,0] L2 →
+   ∃∃T. ❪G0,L1❫ ⊢ ⓓ[p]W1.ⓐU1.T1 ➡[h,0] T & ❪G0,L2❫ ⊢ ⓓ[p]W2.ⓐU2.T2 ➡[h,0] T.
 #h #p #G0 #L0 #V0 #W0 #T0 #IH #V1 #HV01 #U1 #HVU1 #W1 #HW01 #T1 #HT01
 #V2 #HV02 #U2 #HVU2 #W2 #HW02 #T2 #HT02 #L1 #HL01 #L2 #HL02
 elim (IH … HV01 … HV02 … HL01 … HL02) -HV01 -HV02 /2 width=1 by/ #V #HV1 #HV2
@@ -308,15 +308,15 @@ qed-.
 
 (* Properties with context-sensitive parallel reduction for terms ***********)
 
-lemma lpr_cpr_conf_dx (h) (G): ∀L0. ∀T0,T1:term. ❪G,L0❫ ⊢ T0 ➡[h] T1 → ∀L1. ❪G,L0❫ ⊢ ➡[h] L1 →
-                               ∃∃T. ❪G,L1❫ ⊢ T0 ➡[h] T & ❪G,L1❫ ⊢ T1 ➡[h] T.
+lemma lpr_cpr_conf_dx (h) (G): ∀L0. ∀T0,T1:term. ❪G,L0❫ ⊢ T0 ➡[h,0] T1 → ∀L1. ❪G,L0❫ ⊢ ➡[h,0] L1 →
+                               ∃∃T. ❪G,L1❫ ⊢ T0 ➡[h,0] T & ❪G,L1❫ ⊢ T1 ➡[h,0] T.
 #h #G #L0 #T0 #T1 #HT01 #L1 #HL01
 elim (cpr_conf_lpr … HT01 T0 … HL01 … HL01) -HT01 -HL01
 /2 width=3 by ex2_intro/
 qed-.
 
-lemma lpr_cpr_conf_sn (h) (G): ∀L0. ∀T0,T1:term. ❪G,L0❫ ⊢ T0 ➡[h] T1 → ∀L1. ❪G,L0❫ ⊢ ➡[h] L1 →
-                               ∃∃T. ❪G,L1❫ ⊢ T0 ➡[h] T & ❪G,L0❫ ⊢ T1 ➡[h] T.
+lemma lpr_cpr_conf_sn (h) (G): ∀L0. ∀T0,T1:term. ❪G,L0❫ ⊢ T0 ➡[h,0] T1 → ∀L1. ❪G,L0❫ ⊢ ➡[h,0] L1 →
+                               ∃∃T. ❪G,L1❫ ⊢ T0 ➡[h,0] T & ❪G,L0❫ ⊢ T1 ➡[h,0] T.
 #h #G #L0 #T0 #T1 #HT01 #L1 #HL01
 elim (cpr_conf_lpr … HT01 T0 … L0 … HL01) -HT01 -HL01
 /2 width=3 by ex2_intro/
@@ -324,6 +324,6 @@ qed-.
 
 (* Main properties **********************************************************)
 
-theorem lpr_conf (h) (G): confluent … (lpr h G).
+theorem lpr_conf (h) (G): confluent … (lpr h G).
 /3 width=6 by lex_conf, cpr_conf_lpr/
 qed-.
index df7889d629e965796825de5b60f3746553d30abf..65bc4fa37b9da454cbe31cfcd4961e3213566746 100644 (file)
@@ -21,5 +21,5 @@ include "basic_2/rt_transition/lpr.ma".
 (* Forward lemmas with unbound parallel rt-transition for ref local envs ****)
 
 (* Basic_2A1: was: lpr_lpx *)
-lemma lpr_fwd_lpx (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡[h] L2 → ❪G,L1❫ ⊢ ⬈[h] L2.
+lemma lpr_fwd_lpx (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡[h,0] L2 → ❪G,L1❫ ⊢ ⬈[h] L2.
 /3 width=3 by cpm_fwd_cpx, lex_co/ qed-.
index 4a02ae6ff1873af279b04609b8598f3424b4a368..4a8f9c713083f7dccc829a15baf4feb7de416932 100644 (file)
@@ -65,16 +65,16 @@ table {
           }
         ]
         [ { "context-sensitive parallel r-computation" * } {
-             [ [ "evaluation for terms" ] "cprre ( ❪?,?❫ ⊢ ? ➡*[?] 𝐍❪?❫ )" "cprre_csx" + "cprre_cpms" + "cprre_cprre" * ]
-             [ [ "for lenvs on all entries" ] "lprs ( ❪?,?❫ ⊢ ➡*[?] ? )" "lprs_tc" + "lprs_ctc" + "lprs_length" + "lprs_drops" + "lprs_aaa" + "lprs_lpr" + "lprs_lpxs" + "lprs_cpms" + "lprs_cprs" + "lprs_lprs" * ]
-             [ [ "for binders" ] "cprs_ext" + "( ❪?,?❫ ⊢ ? ➡*[?] ?)" * ]
-             [ [ "for terms" ] "cprs" + "( ❪?,?❫ ⊢ ? ➡*[?] ?)" "cprs_ctc" + "cprs_tweq" + "cprs_drops" + "cprs_cpr" + "cprs_lpr" + "cprs_cnr" + "cprs_cprs" * ]
+             [ [ "evaluation for terms" ] "cprre" "cprre_csx" + "cprre_cpms" + "cprre_cprre" * ]
+             [ [ "for lenvs on all entries" ] "lprs ( ❪?,?❫ ⊢ ➡*[?,?] ? )" "lprs_tc" + "lprs_ctc" + "lprs_length" + "lprs_drops" + "lprs_aaa" + "lprs_lpr" + "lprs_lpxs" + "lprs_cpms" + "lprs_cprs" + "lprs_lprs" * ]
+             [ [ "for binders" ] "cprs_ext" + "( ❪?,?❫ ⊢ ? ➡*[?,?] ?)" * ]
+             [ [ "for terms" ] "cprs" "cprs_ctc" + "cprs_tweq" + "cprs_drops" + "cprs_cpr" + "cprs_lpr" + "cprs_cnr" + "cprs_cprs" * ]
           }
         ]
         [ { "t-bound context-sensitive parallel rt-computation" * } {
              [ [ "t-unbound whd evaluation for terms" ] "cpmuwe ( ❪?,?❫ ⊢ ? ➡*𝐍𝐖*[?,?] ? )" "cpmuwe_csx" + "cpmuwe_cpmuwe" * ]
              [ [ "t-unbound whd normal form for terms" ] "cnuw ( ❪?,?❫ ⊢ ➡𝐍𝐖*[?] ? )" "cnuw_drops" + "cnuw_simple" + "cnuw_cnuw" * ]
-             [ [ "t-bpund evaluation for terms" ] "cpmre ( ❪?,?❫ ⊢ ? ➡*[?,?] 𝐍❪?❫ )" "cpmre_aaa" * ]
+             [ [ "t-bpund evaluation for terms" ] "cpmre ( ❪?,?❫ ⊢ ? ➡*𝐍[?,?] ? )" "cpmre_aaa" * ]
              [ [ "for terms" ] "cpms" + "( ❪?,?❫ ⊢ ? ➡*[?,?] ? )" "cpms_drops" + "cpms_lsubr" + "cpms_reqx" + "cpms_aaa" + "cpms_lpr" + "cpms_cpxs" + "cpms_fpbs" + "cpms_fpbg" + "cpms_cpms" * ]
           }
         ]
@@ -103,10 +103,10 @@ table {
           }
         ]
         [ { "context-sensitive parallel r-transition" * } {
-             [ [ "normal form for terms" ] "cnr ( ❪?,?❫ ⊢ ➡[?] 𝐍❪?❫ )" "cnr_simple" + "cnr_teqx" + "cnr_drops" * ]
-             [ [ "for lenvs on all entries" ] "lpr" + "( ❪?,?❫ ⊢ ➡[?] ? )" "lpr_length" + "lpr_drops" + "lpr_fquq" + "lpr_aaa" + "lpr_lpx" + "lpr_lpr" * ]
-             [ [ "for binders" ] "cpr_ext" + "( ❪?,?❫ ⊢ ? ➡[?] ? )" * ]
-             [ [ "for terms" ] "cpr" + "( ❪?,?❫ ⊢ ? ➡[?] ? )" "cpr_drops" + "cpr_drops_basic" + "cpr_teqx" + "cpr_cpr" * ]
+             [ [ "normal form for terms" ] "cnr ( ❪?,?❫ ⊢ ➡𝐍[?,?] ? )" "cnr_simple" + "cnr_teqx" + "cnr_drops" * ]
+             [ [ "for lenvs on all entries" ] "lpr" + "( ❪?,?❫ ⊢ ➡[?,?] ? )" "lpr_length" + "lpr_drops" + "lpr_fquq" + "lpr_aaa" + "lpr_lpx" + "lpr_lpr" * ]
+             [ [ "for binders" ] "cpr_ext" * ]
+             [ [ "for terms" ] "cpr" "cpr_drops" + "cpr_drops_basic" + "cpr_teqx" + "cpr_cpr" * ]
           }
         ]
         [ { "t-bound context-sensitive parallel rt-transition" * } {
@@ -127,7 +127,7 @@ table {
           }
         ]
         [ { "bound context-sensitive parallel rt-transition" * } {
-             [ [ "for terms" ] "cpg" + "( ❪?,?❫ ⊢ ? ⬈[?,?] ? )" "cpg_simple" + "cpg_drops" + "cpg_lsubr" * ]
+             [ [ "for terms" ] "cpg" + "( ❪?,?❫ ⊢ ? ⬈[?,?,?] ? )" "cpg_simple" + "cpg_drops" + "cpg_lsubr" * ]
           }
         ]
      }