]> matita.cs.unibo.it Git - helm.git/commitdiff
milestone update in basic_2, update in ground and static_2
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Thu, 16 Apr 2020 16:13:01 +0000 (18:13 +0200)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Sat, 18 Apr 2020 11:43:38 +0000 (13:43 +0200)
+ new definition of cpx and derivatives without the sort hierarchy parameter
+ sort hierarchy parameter removed from ex_fpbg_refl.ma

187 files changed:
matita/matita/contribs/lambdadelta/apps_2/examples/ex_fpbg_refl.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_trans.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_trans.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_cpmuwe.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_fsb.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_preserve_sub.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/nta_fsb.ma
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubty_6.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubty_7.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtyproper_6.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtyproper_7.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystar_6.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystar_7.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystarproper_6.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystarproper_7.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystrong_3.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystrong_4.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predty_4.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predty_5.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predty_7.ma
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtynormal_3.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtynormal_4.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysn_3.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysn_4.ma
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysn_5.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysnstar_3.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysnstar_4.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysnstrong_3.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysnstrong_4.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtystar_4.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtystar_5.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtystrong_3.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtystrong_4.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/topredtysnstrong_3.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/topredtysnstrong_4.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpmre_aaa.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_cpxs.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/cpmuwe_csx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cprre_csx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_aaa.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_cnx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_cpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_drops.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_ext.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_feqx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_fqus.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_lpx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_lsubr.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_reqx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_teqo.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_teqo_vector.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_teqx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_aaa.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_cnx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_cnx_vector.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_cpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_csx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_csx_vector.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_drops.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_feqx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_fpbq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_fqus.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_gcp.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_gcr.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lpx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_lsubr.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_reqx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_simple.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_simple_teqo.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_vector.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_cpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_fpbg.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_fpbs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_fqup.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbg_lpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_aaa.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_cpx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_cpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_csx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fpb.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fpbs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fqup.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_fqus.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fpbs_lpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_aaa.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_csx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_feqx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_fpbg.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/jsx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/jsx_csx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/jsx_drops.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/jsx_jsx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/jsx_lsubr.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/jsx_rsx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_lpr.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lprs_lpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_aaa.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_cpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_drops.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_feqx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_length.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_lpx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_lpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_reqx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx_csx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx_drops.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx_fqup.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx_length.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx_lpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rsx_rsx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_equivalence/cpcs_csx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_basic.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_cnx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_drops.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cnx_simple.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg_drops.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg_lsubr.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpg_simple.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpm.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/cpt.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpt_drops.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_drops_basic.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_ext.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_feqx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_fqus.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_lsubr.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_req.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_reqx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_simple.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_feqx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_reqx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpbq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpbq_aaa.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpbq_fpb.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpr_lpx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_aaa.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_drops.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_fquq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_fsle.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_length.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/lpx_reqx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_drops.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_fqup.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_fsle.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_length.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_lpx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_reqx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_rpx.ma
matita/matita/contribs/lambdadelta/basic_2/web/basic_2.ldw.xml
matita/matita/contribs/lambdadelta/basic_2/web/basic_2_src.tbl
matita/matita/contribs/lambdadelta/ground/lib/arith.ma
matita/matita/contribs/lambdadelta/ground/lib/relations.ma
matita/matita/contribs/lambdadelta/ground/steps/rtc.ma
matita/matita/contribs/lambdadelta/ground/steps/rtc_isrt.ma
matita/matita/contribs/lambdadelta/ground/steps/rtc_isrt_max.ma
matita/matita/contribs/lambdadelta/static_2/i_static/rexs_lex.ma
matita/matita/contribs/lambdadelta/static_2/relocation/sex.ma
matita/matita/contribs/lambdadelta/static_2/relocation/sex_sex.ma
matita/matita/contribs/lambdadelta/static_2/static/fsle_fsle.ma
matita/matita/contribs/lambdadelta/static_2/static/rex.ma
matita/matita/contribs/lambdadelta/static_2/static/rex_fsle.ma
matita/matita/contribs/lambdadelta/static_2/static/rex_lex.ma
matita/matita/contribs/lambdadelta/static_2/syntax/sh.ma

index 8a459a0be7b90e0925f4b8703ea35a4079f80aee..fea399443dafe8d3a00ced2888886b478a4a9a47 100644 (file)
@@ -12,8 +12,8 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/rt_computation/fpbs_cpxs.ma".
 include "basic_2/rt_computation/fpbg_fqup.ma".
+include "basic_2/rt_computation/fpbs_cpxs.ma".
 include "basic_2/rt_computation/fpbg_fpbs.ma".
 
 (* EXAMPLES *****************************************************************)
@@ -36,22 +36,28 @@ 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,0] ApplOmega2 s0 s.
-/2 width=1 by cpm_beta/ qed.
+lemma cpr_ApplOmega_12 (G) (L) (s0) (s):
+      ❪G,L❫ ⊢ ApplOmega1 s0 s ⬈ ApplOmega2 s0 s.
+/2 width=1 by cpx_beta/ qed.
 
-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_23 (G) (L) (s0) (s):
+      ❪G,L❫ ⊢ ApplOmega2 s0 s ⬈ ApplOmega3 s0 s.
+/6 width=3 by cpx_eps, cpx_flat, cpx_bind, cpx_delta, ApplDelta_lifts/ qed.
 
-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 cpr_ApplOmega_34 (G) (L) (s0) (s):
+      ❪G,L❫ ⊢ ApplOmega3 s0 s ⬈ ApplOmega4 s0 s.
+/4 width=3 by cpx_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.
-/5 width=4 by cpxs_strap1, cpm_fwd_cpx/ qed.
+lemma cpxs_ApplOmega_14 (G) (L) (s0) (s):
+      ❪G,L❫ ⊢ ApplOmega1 s0 s ⬈* ApplOmega4 s0 s.
+/5 width=5 by cpxs_strap1, cpx_cpxs/ qed.
 
-lemma fqup_ApplOmega_41 (G) (L) (s0) (s): ❪G,L,ApplOmega4 s0 s❫ ⬂+ ❪G,L,ApplOmega1 s0 s❫.
+lemma fqup_ApplOmega_41 (G) (L) (s0) (s):
+      ❪G,L,ApplOmega4 s0 s❫ ⬂+ ❪G,L,ApplOmega1 s0 s❫.
 /2 width=1 by/ qed.
 
 (* Main properties **********************************************************)
 
-theorem fpbg_refl (h) (G) (L) (s0) (s): ❪G,L,ApplOmega1 s0 s❫ >[h] ❪G,L,ApplOmega1 s0 s❫.
+theorem fpbg_refl (G) (L) (s0) (s):
+        ❪G,L,ApplOmega1 s0 s❫ > ❪G,L,ApplOmega1 s0 s❫.
 /3 width=5 by fpbs_fpbg_trans, fqup_fpbg, cpxs_fpbs/ qed.
index d8c2d4e26d7491b77b4d1d8d7a54d90d6748b7d6..3ef5de466273fa4774a2cfdf073373ed2302fd6d 100644 (file)
@@ -32,7 +32,7 @@ fact cnv_cpm_conf_lpr_atom_ess_aux (h) (G) (L1) (L2) (s):
 /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) →
+     (∀G0,L0,T0. ❪G,L,#i❫ > ❪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 ➡[h,n] XV →
@@ -54,7 +54,7 @@ elim (cpms_lifts_sn … HVX … HLK2 … HXV) -XV -HLK2 #XV #HVX #HXV
 qed-.
 
 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) →
+     (∀G0,L0,T0. ❪G,L,#i❫ > ❪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 ➡[h,n] XW →
@@ -76,7 +76,7 @@ elim (cpms_lifts_sn … HWX … HLK2 … HXW) -XW -HLK2 #XW #HWX #HXW
 qed-.
 
 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) →
+     (∀G0,L0,T0. ❪G,L,#i❫ > ❪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 ➡[h,n1] XV1 → ∀n2,XV2. ❪G,K2❫ ⊢ V2 ➡[h,n2] XV2 →
@@ -108,7 +108,7 @@ lapply (drops_mono … HLK2 … HLK1) -L -i #H destruct
 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) →
+     (∀G0,L0,T0. ❪G,L,ⓑ[p,I]V.T❫ > ❪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,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 →
@@ -125,7 +125,7 @@ elim (cnv_cpm_conf_lpr_sub … IH … HT01 … HT02 (L1.ⓑ[I]V1) … (L2.ⓑ[I]
 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) →
+     (∀G0,L0,T0. ❪G,L,+ⓓV.T❫ > ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ +ⓓV.T ![h,a] →
      ∀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 →
@@ -145,7 +145,7 @@ elim (cnv_cpm_conf_lpr_sub … IH … HXT12 … HXT2 … HL01 … HL02)
 qed-.
 
 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) →
+     (∀G0,L0,T0. ❪G,L,+ⓓV.T❫ > ❪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 ➡[h,n1] XT1 → ∀n2,XT2. ❪G,L❫ ⊢ T2 ➡[h,n2] XT2 →
@@ -164,7 +164,7 @@ elim (cnv_cpm_conf_lpr_sub … IH … HXT1 … HXT2 … HL01 … HL02)
 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) →
+     (∀G0,L0,T0. ❪G,L,ⓐV.T❫ > ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ ⓐV.T ![h,a] →
      ∀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 →
@@ -181,7 +181,7 @@ elim (cnv_cpm_conf_lpr_sub … IH … HT01 … HT02 … HL01 … HL02) [|*: /2 w
 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) →
+     (∀G0,L0,T0. ❪G,L,ⓐV.ⓛ[p]W.T❫ > ❪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,0] V1 → ∀V2. ❪G,L❫ ⊢ V ➡[h,0] V2 →
      ∀W2. ❪G,L❫ ⊢ W ➡[h,0] W2 →
@@ -203,7 +203,7 @@ lapply (lsubr_cpms_trans … HT2 (L2.ⓓⓝW2.V2) ?) -HT2 [ /2 width=1 by lsubr_
 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) →
+     (∀G0,L0,T0. ❪G,L,ⓐV.ⓓ[p]W.T❫ > ❪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,0] V1 → ∀V2. ❪G,L❫ ⊢ V ➡[h,0] V2 →
      ∀W2. ❪G,L❫ ⊢ W ➡[h,0] W2 →
@@ -234,7 +234,7 @@ elim (cpm_inv_abbr1 … HX) -HX *
 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) →
+     (∀G0,L0,T0. ❪G,L,ⓐV.ⓛ[p]W.T❫ > ❪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,0] V1 → ∀V2. ❪G,L❫ ⊢ V ➡[h,0] V2 →
      ∀W1. ❪G,L❫ ⊢ W ➡[h,0] W1 → ∀W2. ❪G,L❫ ⊢ W ➡[h,0] W2 →
@@ -256,7 +256,7 @@ lapply (lsubr_cpms_trans … HT2 (L2.ⓓⓝW2.V2) ?) -HT2 /2 width=1 by lsubr_be
 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) →
+     (∀G0,L0,T0. ❪G,L,ⓐV.ⓓ[p]W.T❫ > ❪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,0] V1 → ∀V2. ❪G,L❫ ⊢ V ➡[h,0] V2 →
      ∀W1. ❪G,L❫ ⊢ W ➡[h,0] W1 → ∀W2. ❪G,L❫ ⊢ W ➡[h,0] W2 →
@@ -279,7 +279,7 @@ lapply (cpm_lifts_bi … HV2 (Ⓣ) … (L2.ⓓW2) … HVU2 … HVU) -V2 -V [ /3
 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) →
+     (∀G0,L0,T0. ❪G,L,ⓝV.T❫ > ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ ⓝV.T ![h,a] →
      ∀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 →
@@ -296,7 +296,7 @@ elim (cnv_cpm_conf_lpr_sub … IH … HT01 … HT02 … HL01 … HL02) [|*: /2 w
 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) →
+     (∀G0,L0,T0. ❪G,L,ⓝV.T❫ > ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ ⓝV.T ![h,a] →
      ∀n1,V1. ❪G,L❫ ⊢ V ➡[h,n1] V1 →
      ∀T1. ❪G,L❫ ⊢ T ➡[h,n1] T1 → ∀n2,T2. ❪G,L❫ ⊢ T ➡[h,n2] T2 →
@@ -312,8 +312,8 @@ elim (cnv_cpm_conf_lpr_sub … IH … HT01 … HT02 … HL01 … HL02) [|*: /2 w
 qed-.
 
 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) →
+     (∀G0,L0,T0. ❪G,L,ⓝV.T❫ > ❪G0,L0,T0❫ → IH_cnv_cpm_trans_lpr h a G0 L0 T0) →
+     (∀G0,L0,T0. ❪G,L,ⓝV.T❫ > ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ ⓝV.T ![h,a] →
      ∀n1,V1. ❪G,L❫ ⊢ V ➡[h,n1] V1 → ∀n2,V2. ❪G,L❫ ⊢ V ➡[h,n2] V2 →
      ∀T1. ❪G,L❫ ⊢ T ➡[h,n1] T1 →
@@ -327,7 +327,7 @@ lapply (cnv_cpms_trans_lpr_sub … IH2 … HVX0 … L0 ?) [4:|*: /2 width=1 by f
 elim (cnv_cpms_strip_lpr_sub … IH1 … HVX0 … HV02 … L0 … HL02) [|*: /2 width=1 by fqup_fpbg/ ]
 elim (cnv_cpms_strip_lpr_sub … IH1 … HTX0 … HT01 … L0 … HL01) [|*: /2 width=1 by fqup_fpbg/ ]
 -HV02 -HTX0 -HT01 <minus_O_n <minus_n_O #T #HT2 #HT1 #V #HV1 #HV2
-elim (IH1 … HV1 … HT2 … HL02 … HL01) [|*: /2 width=4 by fqup_cpms_fwd_fpbg/ ]
+elim (IH1 … HV1 … HT2 … HL02 … HL01) [|*: /2 width=5 by fqup_cpms_fwd_fpbg/ ]
 -L0 -V0 -T0 -X0 #U #HVU #HTU
 lapply (cpms_trans … HV2 … HVU) -V <plus_O_n >minus_plus #H2
 lapply (cpms_trans … HT1 … HTU) -T <arith_l2 #H1
@@ -335,7 +335,7 @@ lapply (cpms_trans … HT1 … HTU) -T <arith_l2 #H1
 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) →
+     (∀G0,L0,T0. ❪G,L,ⓝV.T❫ > ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ ⓝV.T ![h,a] →
      ∀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 →
@@ -350,8 +350,8 @@ elim (cnv_cpm_conf_lpr_sub … IH … HT01 … HT02 … HL01 … HL02) [|*: /2 w
 qed-.
 
 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) →
+     (∀G0,L0,T0. ❪G,L,ⓝV.T❫ > ❪G0,L0,T0❫ → IH_cnv_cpm_trans_lpr h a G0 L0 T0) →
+     (∀G0,L0,T0. ❪G,L,ⓝV.T❫ > ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ ⓝV.T ![h,a] →
      ∀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 →
@@ -364,7 +364,7 @@ lapply (cnv_cpms_trans_lpr_sub … IH2 … HVX0 … L0 ?) [4:|*: /2 width=1 by f
 elim (cnv_cpms_strip_lpr_sub … IH1 … HVX0 … HV02 … L0 … HL02) [|*: /2 width=1 by fqup_fpbg/ ]
 elim (cnv_cpms_strip_lpr_sub … IH1 … HTX0 … HT01 … L0 … HL01) [|*: /2 width=1 by fqup_fpbg/ ]
 -HV02 -HTX0 -HT01 <minus_O_n <minus_n_O #T #HT2 #HT1 #V #HV1 #HV2
-elim (IH1 … HV1 … HT2 … HL02 … HL01) [|*: /2 width=4 by fqup_cpms_fwd_fpbg/ ]
+elim (IH1 … HV1 … HT2 … HL02 … HL01) [|*: /2 width=5 by fqup_cpms_fwd_fpbg/ ]
 -L0 -V0 -T0 -X0 #U #HVU #HTU
 lapply (cpms_trans … HV2 … HVU) -V <plus_O_n >minus_plus #H2
 lapply (cpms_trans … HT1 … HTU) -T <arith_l2 #H1
@@ -372,7 +372,7 @@ lapply (cpms_trans … HT1 … HTU) -T <arith_l2 #H1
 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) →
+     (∀G0,L0,T0. ❪G,L,ⓝV.T❫ > ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
      ❪G,L❫ ⊢ ⓝV.T ![h,a] →
      ∀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 →
@@ -388,8 +388,8 @@ qed-.
 
 fact cnv_cpm_conf_lpr_aux (h) (a):
      ∀G0,L0,T0.
-     (∀G1,L1,T1. ❪G0,L0,T0❫ >[h] ❪G1,L1,T1❫ → IH_cnv_cpm_trans_lpr h a G1 L1 T1) →
-     (∀G1,L1,T1. ❪G0,L0,T0❫ >[h] ❪G1,L1,T1❫ → IH_cnv_cpms_conf_lpr h a G1 L1 T1) →
+     (∀G1,L1,T1. ❪G0,L0,T0❫ > ❪G1,L1,T1❫ → IH_cnv_cpm_trans_lpr h a G1 L1 T1) →
+     (∀G1,L1,T1. ❪G0,L0,T0❫ > ❪G1,L1,T1❫ → IH_cnv_cpms_conf_lpr h a G1 L1 T1) →
      ∀G1,L1,T1. G0 = G1 → L0 = L1 → T0 = T1 → IH_cnv_cpm_conf_lpr h a G1 L1 T1.
 #h #a #G0 #L0 #T0 #IH2 #IH1 #G #L * [| * [| * ]]
 [ #I #HG0 #HL0 #HT0 #HT #n1 #X1 #HX1 #n2 #X2 #HX2 #L1 #HL1 #L2 #HL2 destruct
index 7d7676f1ac1e5db7464bcc431083e8f262c4920a..23287638d8a15802812e79d3d9f92191303c5f19 100644 (file)
@@ -46,7 +46,7 @@ lemma cnv_cpr_teqx_fwd_refl (h) (a) (G) (L):
 | #G #L #U #T1 #T2 #HT12 #_ #H1 #H2
   elim (cnv_fpbg_refl_false … H2) -a
   @(fpbg_teqx_div … H1) -H1
-  /3 width=6 by cpm_tneqx_cpm_fpbg, cpm_eps, teqx_inv_pair_xy_y/
+  /3 width=7 by cpm_tneqx_cpm_fpbg, cpm_eps, teqx_inv_pair_xy_y/
 | #p #G #L #V1 #V2 #W1 #W2 #T1 #T2 #_ #_ #_ #_ #_ #_ #H1 #_
   elim (teqx_inv_pair … H1) -H1 #H #_ #_ destruct
 | #p #G #L #V1 #V2 #X2 #W1 #W2 #T1 #T2 #_ #_ #_ #_ #_ #_ #_ #H1 #_
@@ -106,11 +106,11 @@ elim (cpm_inv_cast1 … H1) -H1 [ * || * ]
 | #HT1X
   elim (cnv_fpbg_refl_false … H0) -a
   @(fpbg_teqx_div … H2) -H2
-  /3 width=6 by cpm_tneqx_cpm_fpbg, cpm_eps, teqx_inv_pair_xy_y/
+  /3 width=7 by cpm_tneqx_cpm_fpbg, cpm_eps, teqx_inv_pair_xy_y/
 | #m #HU1X #H destruct
   elim (cnv_fpbg_refl_false … H0) -a
   @(fpbg_teqx_div … H2) -H2
-  /3 width=6 by cpm_tneqx_cpm_fpbg, cpm_ee, teqx_inv_pair_xy_x/
+  /3 width=7 by cpm_tneqx_cpm_fpbg, cpm_ee, teqx_inv_pair_xy_x/
 ]
 qed-.
 
index 67104bbc65c07dbf8568d9e3ee1ea3e74c0c8943..8c50c3a7ec2aa1399b9c34a167ca0014fe93ffbe 100644 (file)
@@ -26,7 +26,7 @@ definition IH_cnv_cpm_teqx_cpm_trans (h) (a): relation3 genv lenv term ≝
 (* Transitive properties restricted rt-transition for terms *****************)
 
 fact cnv_cpm_teqx_cpm_trans_sub (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❫ > ❪G,L,T❫ → IH_cnv_cpm_trans_lpr h a G L T) →
      (∀G,L,T. ❪G0,L0,T0❫ ⬂+ ❪G,L,T❫ → IH_cnv_cpm_teqx_cpm_trans h a G L T) →
      ∀G,L,T1. G0 = G → L0 = L → T0 = T1 → IH_cnv_cpm_teqx_cpm_trans h a G L T1.
 #h #a #G0 #L0 #T0 #IH2 #IH1 #G #L * [| * [| * ]]
@@ -89,7 +89,7 @@ fact cnv_cpm_teqx_cpm_trans_sub (h) (a) (G0) (L0) (T0):
 qed-.
 
 fact cnv_cpm_teqx_cpm_trans_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❫ > ❪G,L,T❫ → IH_cnv_cpm_trans_lpr h a G L T) →
      IH_cnv_cpm_teqx_cpm_trans h a G0 L0 T0.
 #h #a #G0 #L0 #T0
 @(fqup_wf_ind (Ⓣ) … G0 L0 T0) -G0 -L0 -T0 #G0 #L0 #T0 #IH #IH0
index 700073bb27dba2c7b90040ac09687464450e14d9..f18e5d0ea95feb9cecb07b673f81333e22f549ee 100644 (file)
@@ -25,8 +25,8 @@ include "basic_2/dynamic/lsubv_cnv.ma".
 
 fact cnv_cpm_trans_lpr_aux (h) (a):
      ∀G0,L0,T0.
-     (∀G1,L1,T1. ❪G0,L0,T0❫ >[h] ❪G1,L1,T1❫ → IH_cnv_cpms_conf_lpr h a G1 L1 T1) →
-     (∀G1,L1,T1. ❪G0,L0,T0❫ >[h] ❪G1,L1,T1❫ → IH_cnv_cpm_trans_lpr h a G1 L1 T1) →
+     (∀G1,L1,T1. ❪G0,L0,T0❫ > ❪G1,L1,T1❫ → IH_cnv_cpms_conf_lpr h a G1 L1 T1) →
+     (∀G1,L1,T1. ❪G0,L0,T0❫ > ❪G1,L1,T1❫ → IH_cnv_cpm_trans_lpr h a G1 L1 T1) →
      ∀G1,L1,T1. G0 = G1 → L0 = L1 → T0 = T1 → IH_cnv_cpm_trans_lpr h a G1 L1 T1.
 #h #a #G0 #L0 #T0 #IH2 #IH1 #G1 #L1 * * [|||| * ]
 [ #s #HG0 #HL0 #HT0 #H1 #x #X #H2 #L2 #_ destruct -IH2 -IH1 -H1
@@ -117,7 +117,7 @@ fact cnv_cpm_trans_lpr_aux (h) (a):
     <minus_n_O <minus_O_n #XW1 #HXUW1 #HXW21
     elim (cnv_cpms_strip_lpr_sub … IH2 … HTU1 … HT12 … L1 … HL12) [|*: /2 width=2 by fqup_fpbg/ ] -HTU1 -HT12
     #XT1 #HXUT1 #HXT21
-    elim (IH2 … HXUW1 … HXUT1 … HL12 … HL12) [|*: /2 width=4 by fqup_cpms_fwd_fpbg/ ] -HXUW1 -HXUT1 -HWU1
+    elim (IH2 … HXUW1 … HXUT1 … HL12 … HL12) [|*: /2 width=5 by fqup_cpms_fwd_fpbg/ ] -HXUW1 -HXUT1 -HWU1
     >eq_minus_O // #W0 #H1 #H2 -IH2 -IH1 -L1 -W1 -T1 -U1
     lapply (cprs_trans … HXW21 … H1) -XW1 #H1
     lapply (cpms_trans … HXT21 … H2) -XT1 <arith_l1 #H2
index 7965bcae14b0a054d111a0be9303d310ca849479..a818e63479b36946d67322a37bb90195fb760aaa 100644 (file)
@@ -20,8 +20,8 @@ include "basic_2/dynamic/cnv_cpms_teqx_conf.ma".
 (* Sub confluence propery with t-bound rt-computation for terms *************)
 
 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) →
+     (∀G,L,T. ❪G0,L0,T0❫ > ❪G,L,T❫ → IH_cnv_cpm_trans_lpr h a G L T) →
+     (∀G,L,T. ❪G0,L0,T0❫ > ❪G,L,T❫ → IH_cnv_cpms_conf_lpr h a G L T) →
      ❪G0,L0❫ ⊢ T0 ![h,a] →
      ∀n1,T1. ❪G0,L0❫ ⊢ T0 ➡*[h,n1] T1 → T0 ≛ T1 →
      ∀n2,T2. ❪G0,L0❫ ⊢ T0 ➡*[h,n2] T2 → T0 ≛ T2 →
@@ -35,8 +35,8 @@ elim (cnv_cpms_teqx_conf_lpr_aux … IH2 IH1 … H1T01 … H1T02 … HL01 … HL
 qed-.
 
 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) →
+     (∀G,L,T. ❪G0,L0,T0❫ > ❪G,L,T❫ → IH_cnv_cpm_trans_lpr h a G L T) →
+     (∀G,L,T. ❪G0,L0,T0❫ > ❪G,L,T❫ → IH_cnv_cpms_conf_lpr h a G L T) →
      ❪G0,L0❫ ⊢ T0 ![h,a] →
      ∀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 →
@@ -47,9 +47,9 @@ fact cnv_cpms_conf_lpr_refl_tneqx_sub (h) (a) (G0) (L0) (T0) (m21) (m22):
 lapply (cnv_cpm_trans_lpr_aux … IH1 IH2 … HX02 … L0 ?) // #HX2
 elim (cnv_cpm_conf_lpr_aux … IH2 IH1 … HX02 … 0 T0 … L0 … HL01) //
 <minus_n_O <minus_O_n #Y1 #HXY1 #HTY1
-elim (cnv_cpms_strip_lpr_sub … IH1 … HXT2 0 X2 … HL02 L0) [|*: /4 width=2 by fpb_fpbg, cpm_fpb/ ]
+elim (cnv_cpms_strip_lpr_sub … IH1 … HXT2 0 X2 … HL02 L0) [|*: /4 width=3 by fpb_fpbg, cpm_fpb/ ]
 <minus_n_O <minus_O_n #Y2 #HTY2 #HXY2 -HXT2
-elim (IH1 … HXY1 … HXY2 … HL01 … HL02) [|*: /4 width=2 by fpb_fpbg, cpm_fpb/ ]
+elim (IH1 … HXY1 … HXY2 … HL01 … HL02) [|*: /4 width=3 by fpb_fpbg, cpm_fpb/ ]
 -a -L0 -X2 <minus_n_O <minus_O_n #Y #HY1 #HY2
 lapply (cpms_trans … HTY1 … HY1) -Y1 #HT0Y
 lapply (cpms_trans … HTY2 … HY2) -Y2 #HT2Y
@@ -57,14 +57,14 @@ lapply (cpms_trans … HTY2 … HY2) -Y2 #HT2Y
 qed-.
 
 fact cnv_cpms_conf_lpr_step_tneqx_sub (h) (a) (G0) (L0) (T0) (m11) (m12) (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) →
+     (∀G,L,T. ❪G0,L0,T0❫ > ❪G,L,T❫ → IH_cnv_cpm_trans_lpr h a G L T) →
+     (∀G,L,T. ❪G0,L0,T0❫ > ❪G,L,T❫ → IH_cnv_cpms_conf_lpr h a G L T) →
      ❪G0,L0❫ ⊢ T0 ![h,a] →
      ∀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) →
+     ((∀G,L,T. ❪G0,L0,X1❫ > ❪G,L,T❫ → IH_cnv_cpm_trans_lpr h a G L T) →
+       (∀G,L,T. ❪G0,L0,X1❫ > ❪G,L,T❫ → IH_cnv_cpms_conf_lpr h a G L T) →
        ∀m21,m22.
        ∀X2. ❪G0,L0❫ ⊢ X1 ➡[h,m21] X2 → (X1 ≛ X2 → ⊥) →
        ∀T2. ❪G0,L0❫ ⊢ X2 ➡*[h,m22] T2 →
@@ -78,8 +78,8 @@ fact cnv_cpms_conf_lpr_step_tneqx_sub (h) (a) (G0) (L0) (T0) (m11) (m12) (m21) (
 lapply (cnv_cpm_trans_lpr_aux … IH1 IH2 … H1X01 … L0 ?) // #HX1
 lapply (cnv_cpm_trans_lpr_aux … IH1 IH2 … H1X02 … L0 ?) // #HX2
 elim (cnv_cpm_conf_lpr_aux … IH2 IH1 … H1X01 … H1X02 … L0 … L0) // #Z0 #HXZ10 #HXZ20
-cut (❪G0, L0, T0❫ >[h] ❪G0, L0, X2❫) [ /4 width=5 by cpms_fwd_fpbs, cpm_fpb, ex2_3_intro/ ] #H1fpbg (**) (* cut *)
-lapply (fpbg_fpbs_trans ?? G0 ? L0 ? Z0 ? … H1fpbg) [ /2 width=2 by cpms_fwd_fpbs/ ] #H2fpbg
+cut (❪G0, L0, T0❫ > ❪G0, L0, X2❫) [ /4 width=5 by cpms_fwd_fpbs, cpm_fpb, ex2_3_intro/ ] #H1fpbg (**) (* cut *)
+lapply (fpbg_fpbs_trans ? G0 ? L0 ? Z0 ? … H1fpbg) [ /2 width=3 by cpms_fwd_fpbs/ ] #H2fpbg
 lapply (cnv_cpms_trans_lpr_sub … IH2 … HXZ20 … L0 ?) // #HZ0
 elim (IH1 … HXT2 … HXZ20 … L2 … L0) [|*: /4 width=2 by fpb_fpbg, cpm_fpb/ ] -HXT2 -HXZ20 #Z2 #HTZ2 #HZ02
 elim (teqx_dec X1 Z0) #H2XZ
@@ -99,8 +99,8 @@ lapply (cpms_trans … HTZ2 … HZ02) -Z2 <arith_l4 #HT2Z
 qed-.
 
 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) →
+     (∀G,L,T. ❪G0,L0,T0❫ > ❪G,L,T❫ → IH_cnv_cpm_trans_lpr h a G L T) →
+     (∀G,L,T. ❪G0,L0,T0❫ > ❪G,L,T❫ → IH_cnv_cpms_conf_lpr h a G L T) →
      ❪G0,L0❫ ⊢ T0 ![h,a] →
      ∀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 →
@@ -122,8 +122,8 @@ generalize in match IH1; generalize in match IH2;
 qed-.
 
 fact cnv_cpms_conf_lpr_tneqx_tneqx_aux (h) (a) (G0) (L0) (T0) (m11) (m12) (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) →
+     (∀G,L,T. ❪G0,L0,T0❫ > ❪G,L,T❫ → IH_cnv_cpm_trans_lpr h a G L T) →
+     (∀G,L,T. ❪G0,L0,T0❫ > ❪G,L,T❫ → IH_cnv_cpms_conf_lpr h a G L T) →
      ❪G0,L0❫ ⊢ T0 ![h,a] →
      ∀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 →
@@ -135,11 +135,11 @@ fact cnv_cpms_conf_lpr_tneqx_tneqx_aux (h) (a) (G0) (L0) (T0) (m11) (m12) (m21)
 lapply (cnv_cpm_trans_lpr_aux … IH1 IH2 … HX01 … L0 ?) // #HX1
 lapply (cnv_cpm_trans_lpr_aux … IH1 IH2 … HX02 … L0 ?) // #HX2
 elim (cnv_cpm_conf_lpr_aux … IH2 IH1 … HX01 … HX02 … L0 … L0) // #Z0 #HXZ10 #HXZ20
-cut (❪G0, L0, T0❫ >[h] ❪G0, L0, X1❫) [ /4 width=5 by cpms_fwd_fpbs, cpm_fpb, ex2_3_intro/ ] #H1fpbg (**) (* cut *)
-lapply (fpbg_fpbs_trans ?? G0 ? L0 ? Z0 ? … H1fpbg) [ /2 width=2 by cpms_fwd_fpbs/ ] #H2fpbg
+cut (❪G0, L0, T0❫ > ❪G0, L0, X1❫) [ /4 width=5 by cpms_fwd_fpbs, cpm_fpb, ex2_3_intro/ ] #H1fpbg (**) (* cut *)
+lapply (fpbg_fpbs_trans ? G0 ? L0 ? Z0 ? … H1fpbg) [ /2 width=3 by cpms_fwd_fpbs/ ] #H2fpbg
 lapply (cnv_cpms_trans_lpr_sub … IH2 … HXZ10 … L0 ?) // #HZ0
 elim (IH1 … HXT1 … HXZ10 … L1 … L0) [|*: /4 width=2 by fpb_fpbg, cpm_fpb/ ] -HXT1 -HXZ10 #Z1 #HTZ1 #HZ01
-elim (IH1 … HXT2 … HXZ20 … L2 … L0) [|*: /4 width=2 by fpb_fpbg, cpm_fpb/ ] -HXT2 -HXZ20 #Z2 #HTZ2 #HZ02
+elim (IH1 … HXT2 … HXZ20 … L2 … L0) [|*: /4 width=3 by fpb_fpbg, cpm_fpb/ ] -HXT2 -HXZ20 #Z2 #HTZ2 #HZ02
 elim (IH1 … HZ01 … HZ02  L1 … L2) // -L0 -T0 -X1 -X2 -Z0 #Z #HZ01 #HZ02
 lapply (cpms_trans … HTZ1 … HZ01) -Z1 <arith_l4 #HT1Z
 lapply (cpms_trans … HTZ2 … HZ02) -Z2 <arith_l4 #HT2Z
@@ -147,8 +147,8 @@ lapply (cpms_trans … HTZ2 … HZ02) -Z2 <arith_l4 #HT2Z
 qed-.
 
 fact cnv_cpms_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) →
+     (∀G,L,T. ❪G0,L0,T0❫ > ❪G,L,T❫ → IH_cnv_cpm_trans_lpr h a G L T) →
+     (∀G,L,T. ❪G0,L0,T0❫ > ❪G,L,T❫ → IH_cnv_cpms_conf_lpr h a G L T) →
      ∀G,L,T. G0 = G → L0 = L → T0 = T → IH_cnv_cpms_conf_lpr h a G L T.
 #h #a #G #L #T #IH2 #IH1 #G0 #L0 #T0 #HG #HL #HT
 #HT0 #n1 #T1 #HT01 #n2 #T2 #HT02 #L1 #HL01 #L2 #HL02 destruct
index 13530d00863fbd0b2366305d4f1df58bd2c5965b..967e63de50cfcd5cb8404aa8b48cfebf39aecc44 100644 (file)
@@ -20,8 +20,8 @@ include "basic_2/dynamic/cnv_cpm_teqx_trans.ma".
 
 fact cpms_tneqx_fwd_step_sn_aux (h) (a) (n) (G) (L) (T1):
      ∀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) →
+     (∀G0,L0,T0. ❪G,L,T1❫ > ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
+     (∀G0,L0,T0. ❪G,L,T1❫ > ❪G0,L0,T0❫ → IH_cnv_cpm_trans_lpr h a G0 L0 T0) →
      ∃∃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
@@ -46,8 +46,8 @@ 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 ➡[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) →
+     (∀G0,L0,T0. ❪G,L,T1❫ > ❪G0,L0,T0❫ → IH_cnv_cpms_conf_lpr h a G0 L0 T0) →
+     (∀G0,L0,T0. ❪G,L,T1❫ > ❪G0,L0,T0❫ → IH_cnv_cpm_trans_lpr h a G0 L0 T0) →
      Q n T1.
 #h #a #G #L #T2 #Q #IB1 #IB2 #n #T1 #H
 @(cpms_ind_sn … H) -n -T1
@@ -59,7 +59,7 @@ fact cpms_teqx_ind_sn (h) (a) (G) (L) (T2) (Q:relation2 …):
     /6 width=7 by cpm_fpbq, fpbq_fpbg_trans/ (**)
   | -IB2 -IH -IH2 -IH1
     elim (cnv_fpbg_refl_false … H0T1) -a -Q
-    /3 width=8 by cpm_tneqx_cpm_cpms_teqx_sym_fwd_fpbg/
+    /3 width=9 by cpm_tneqx_cpm_cpms_teqx_sym_fwd_fpbg/
   ]
 ]
 qed-.
index 3271b4e11934081415831173bd181a20b6ac6081..24a56092c849864dd191d8f5690b65a74d9437c1 100644 (file)
@@ -20,8 +20,8 @@ include "basic_2/dynamic/cnv_cpms_teqx.ma".
 (* Sub confluence propery with restricted rt-transition for terms ***********)
 
 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) →
+     (∀G,L,T. ❪G0,L0,T0❫ > ❪G,L,T❫ → IH_cnv_cpm_trans_lpr h a G L T) →
+     (∀G,L,T. ❪G0,L0,T0❫ > ❪G,L,T❫ → IH_cnv_cpms_conf_lpr h a G L 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 →
@@ -45,8 +45,8 @@ fact cnv_cpms_teqx_strip_lpr_aux (h) (a) (G0) (L0) (T0):
 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) →
+     (∀G,L,T. ❪G0,L0,T0❫ > ❪G,L,T❫ → IH_cnv_cpm_trans_lpr h a G L T) →
+     (∀G,L,T. ❪G0,L0,T0❫ > ❪G,L,T❫ → IH_cnv_cpms_conf_lpr h a G L 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 →
index ce73661f85265d67aab1ee1b03d715b05d23ddf9..99eb4d4becf6da685655fbafba902614f19f6d0f 100644 (file)
@@ -27,7 +27,7 @@ lemma cnv_cpmuwe_trans (h) (a) (G) (L):
 
 lemma cnv_R_cpmuwe_total (h) (a) (G) (L):
       ∀T1. ❪G,L❫ ⊢ T1 ![h,a] → ∃n. R_cpmuwe h G L T1 n.
-/4 width=2 by cnv_fwd_fsb, fsb_inv_csx, R_cpmuwe_total_csx/ qed-.
+/4 width=3 by cnv_fwd_fsb, fsb_inv_csx, R_cpmuwe_total_csx/ qed-.
 
 (* Main inversions with head evaluation for t-bound rt-transition on terms **)
 
index 866a48566b17c83e1b527886dc3a3fad2e297656..6055f11e3760c7312baeff5f6be2b549dbee86d9 100644 (file)
@@ -22,20 +22,20 @@ include "basic_2/dynamic/cnv_aaa.ma".
 (* Note: this is the "big tree" theorem *)
 (* Basic_2A1: uses: snv_fwd_fsb *)
 lemma cnv_fwd_fsb (h) (a):
-      ∀G,L,T. ❪G,L❫ ⊢ T ![h,a] → ≥𝐒[h] ❪G,L,T❫.
+      ∀G,L,T. ❪G,L❫ ⊢ T ![h,a] → ≥𝐒 ❪G,L,T❫.
 #h #a #G #L #T #H elim (cnv_fwd_aaa … H) -H /2 width=2 by aaa_fsb/
 qed-.
 
 (* Forward lemmas with strongly rt-normalizing terms ************************)
 
 lemma cnv_fwd_csx (h) (a):
-      ∀G,L,T. ❪G,L❫ ⊢ T ![h,a] → ❪G,L❫ ⊢ ⬈*𝐒[h] T.
+      ∀G,L,T. ❪G,L❫ ⊢ T ![h,a] → ❪G,L❫ ⊢ ⬈*𝐒 T.
 #h #a #G #L #T #H
-/3 width=2 by cnv_fwd_fsb, fsb_inv_csx/
+/3 width=3 by cnv_fwd_fsb, fsb_inv_csx/
 qed-.
 
 (* Inversion lemmas with proper parallel rst-computation for closures *******)
 
 lemma cnv_fpbg_refl_false (h) (a):
-      ∀G,L,T. ❪G,L❫ ⊢ T ![h,a] → ❪G,L,T❫ >[h] ❪G,L,T❫ → ⊥.
+      ∀G,L,T. ❪G,L❫ ⊢ T ![h,a] → ❪G,L,T❫ > ❪G,L,T❫ → ⊥.
 /3 width=7 by cnv_fwd_fsb, fsb_fpbg_refl_false/ qed-.
index b9b06348d6a8a49ab7a81739a5f3c0c9d3436405..6239b4798b1c44abb73d3afbb9d0c4c0e7b38e0b 100644 (file)
@@ -51,8 +51,8 @@ definition IH_cnv_cpms_conf_lpr (h) (a): relation3 genv lenv term ≝
 
 fact cnv_cpms_trans_lpr_sub (h) (a):
      ∀G0,L0,T0.
-     (∀G1,L1,T1. ❪G0,L0,T0❫ >[h] ❪G1,L1,T1❫ → IH_cnv_cpm_trans_lpr h a G1 L1 T1) →
-     ∀G1,L1,T1. ❪G0,L0,T0❫ >[h] ❪G1,L1,T1❫ → IH_cnv_cpms_trans_lpr h a G1 L1 T1.
+     (∀G1,L1,T1. ❪G0,L0,T0❫ > ❪G1,L1,T1❫ → IH_cnv_cpm_trans_lpr h a G1 L1 T1) →
+     ∀G1,L1,T1. ❪G0,L0,T0❫ > ❪G1,L1,T1❫ → IH_cnv_cpms_trans_lpr h a G1 L1 T1.
 #h #a #G0 #L0 #T0 #IH #G1 #L1 #T1 #H01 #HT1 #n #T2 #H
 @(cpms_ind_dx … H) -n -T2
 /3 width=7 by fpbg_cpms_trans/
@@ -60,12 +60,12 @@ qed-.
 
 fact cnv_cpm_conf_lpr_sub (h) (a):
      ∀G0,L0,T0.
-     (∀G1,L1,T1. ❪G0,L0,T0❫ >[h] ❪G1,L1,T1❫ → IH_cnv_cpms_conf_lpr h a G1 L1 T1) →
-     ∀G1,L1,T1. ❪G0,L0,T0❫ >[h] ❪G1,L1,T1❫ → IH_cnv_cpm_conf_lpr h a G1 L1 T1.
+     (∀G1,L1,T1. ❪G0,L0,T0❫ > ❪G1,L1,T1❫ → IH_cnv_cpms_conf_lpr h a G1 L1 T1) →
+     ∀G1,L1,T1. ❪G0,L0,T0❫ > ❪G1,L1,T1❫ → IH_cnv_cpm_conf_lpr h a G1 L1 T1.
 /3 width=8 by cpm_cpms/ qed-.
 
 fact cnv_cpms_strip_lpr_sub (h) (a):
      ∀G0,L0,T0.
-     (∀G1,L1,T1. ❪G0,L0,T0❫ >[h] ❪G1,L1,T1❫ → IH_cnv_cpms_conf_lpr h a G1 L1 T1) →
-     ∀G1,L1,T1. ❪G0,L0,T0❫ >[h] ❪G1,L1,T1❫ → IH_cnv_cpms_strip_lpr h a G1 L1 T1.
+     (∀G1,L1,T1. ❪G0,L0,T0❫ > ❪G1,L1,T1❫ → IH_cnv_cpms_conf_lpr h a G1 L1 T1) →
+     ∀G1,L1,T1. ❪G0,L0,T0❫ > ❪G1,L1,T1❫ → IH_cnv_cpms_strip_lpr h a G1 L1 T1.
 /3 width=8 by cpm_cpms/ qed-.
index 7e94833d3fdb5652ce656cf70e151a5f4520e8ec..de8554b4820a249801e6b0ff95dee49635b6fc6c 100644 (file)
@@ -25,8 +25,8 @@ include "basic_2/dynamic/nta.ma".
 (* Basic_2A1: uses: nta_fwd_csn *)
 theorem nta_fwd_fsb (h) (a) (G) (L):
         ∀T,U. ❪G,L❫ ⊢ T :[h,a] U →
-        ∧∧ ≥𝐒[h] ❪G,L,T❫ & ≥𝐒[h] ❪G,L,U❫.
+        ∧∧ ≥𝐒 ❪G,L,T❫ & ≥𝐒 ❪G,L,U❫.
 #h #a #G #L #T #U #H
 elim (cnv_inv_cast … H) #X #HU #HT #_ #_ -X
-/3 width=2 by cnv_fwd_fsb, conj/
+/3 width=3 by cnv_fwd_fsb, conj/
 qed-.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubty_6.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubty_6.ma
new file mode 100644 (file)
index 0000000..d6b61d9
--- /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 G1, break term 46 L1, break term 46 T1 ❫ ≽ ❪ break term 46 G2, break term 46 L2, break term 46 T2 ❫ )"
+   non associative with precedence 45
+   for @{ 'PRedSubTy $G1 $L1 $T1 $G2 $L2 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubty_7.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubty_7.ma
deleted file mode 100644 (file)
index 4f1dc6a..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 G1, break term 46 L1, break term 46 T1 ❫ ≽[ break term 46 h ] ❪ break term 46 G2, break term 46 L2, break term 46 T2 ❫ )"
-   non associative with precedence 45
-   for @{ 'PRedSubTy $h $G1 $L1 $T1 $G2 $L2 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtyproper_6.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtyproper_6.ma
new file mode 100644 (file)
index 0000000..7494d34
--- /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 G1, break term 46 L1, break term 46 T1 ❫ ≻ ❪ break term 46 G2, break term 46 L2, break term 46 T2 ❫ )"
+   non associative with precedence 45
+   for @{ 'PRedSubTyProper $G1 $L1 $T1 $G2 $L2 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtyproper_7.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtyproper_7.ma
deleted file mode 100644 (file)
index d0f1337..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 G1, break term 46 L1, break term 46 T1 ❫ ≻[ break term 46 h ] ❪ break term 46 G2, break term 46 L2, break term 46 T2 ❫ )"
-   non associative with precedence 45
-   for @{ 'PRedSubTyProper $h $G1 $L1 $T1 $G2 $L2 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystar_6.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystar_6.ma
new file mode 100644 (file)
index 0000000..79ad698
--- /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 G1, break term 46 L1, break term 46 T1 ❫ ≥ ❪ break term 46 G2, break term 46 L2, break term 46 T2 ❫ )"
+   non associative with precedence 45
+   for @{ 'PRedSubTyStar $G1 $L1 $T1 $G2 $L2 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystar_7.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystar_7.ma
deleted file mode 100644 (file)
index 348db55..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 G1, break term 46 L1, break term 46 T1 ❫ ≥[ break term 46 h ] ❪ break term 46 G2, break term 46 L2, break term 46 T2 ❫ )"
-   non associative with precedence 45
-   for @{ 'PRedSubTyStar $h $G1 $L1 $T1 $G2 $L2 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystarproper_6.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystarproper_6.ma
new file mode 100644 (file)
index 0000000..9c20aed
--- /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 G1, break term 46 L1, break term 46 T1 ❫ > ❪ break term 46 G2, break term 46 L2, break term 46 T2 ❫ )"
+   non associative with precedence 45
+   for @{ 'PRedSubTyStarProper $G1 $L1 $T1 $G2 $L2 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystarproper_7.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystarproper_7.ma
deleted file mode 100644 (file)
index 2dc4444..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 G1, break term 46 L1, break term 46 T1 ❫ >[ break term 46 h ] ❪ break term 46 G2, break term 46 L2, break term 46 T2 ❫ )"
-   non associative with precedence 45
-   for @{ 'PRedSubTyStarProper $h $G1 $L1 $T1 $G2 $L2 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystrong_3.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystrong_3.ma
new file mode 100644 (file)
index 0000000..c7b9875
--- /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( ≥𝐒❪ break term 46 G, break term 46 L, break term 46 T ❫ )"
+   non associative with precedence 45
+   for @{ 'PRedSubTyStrong $G $L $T }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystrong_4.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystrong_4.ma
deleted file mode 100644 (file)
index 2006de0..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 h ] ❪ break term 46 G, break term 46 L, break term 46 T ❫ )"
-   non associative with precedence 45
-   for @{ 'PRedSubTyStrong $h $G $L $T }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predty_4.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predty_4.ma
new file mode 100644 (file)
index 0000000..bb7f36f
--- /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 T1 ⬈ break term 46 T2 )"
+   non associative with precedence 45
+   for @{ 'PRedTy $G $L $T1 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predty_5.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predty_5.ma
deleted file mode 100644 (file)
index b2ab29a..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 @{ 'PRedTy $h $G $L $T1 $T2 }.
index c59a40dcbbbf3d097afe497e7f5c51f3165c00e3..37ae1e7999857d23e7340742fb470f4a33a19ae6 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 Rt, break term 46 c, break term 46 h ] break term 46 T2 )"
+notation "hvbox( ❪ term 46 G, break term 46 L ❫ ⊢ break term 46 T1 ⬈[ break term 46 Rs, break term 46 Rk, break term 46 c ] break term 46 T2 )"
    non associative with precedence 45
-   for @{ 'PRedTy $Rt $c $h $G $L $T1 $T2 }.
+   for @{ 'PRedTy $Rs $Rk $c $G $L $T1 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtynormal_3.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtynormal_3.ma
new file mode 100644 (file)
index 0000000..1c87b36
--- /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 T )"
+   non associative with precedence 45
+   for @{ 'PRedTyNormal $G $L $T }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtynormal_4.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtynormal_4.ma
deleted file mode 100644 (file)
index b31ae8a..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 @{ 'PRedTyNormal $h $G $L $T }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysn_3.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysn_3.ma
new file mode 100644 (file)
index 0000000..ea2d222
--- /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 L2 )"
+   non associative with precedence 45
+   for @{ 'PRedTySn $G $L1 $L2 }.
index f900505eaed7c09e976301013261a47ab884f7a5..ad637ef51986d27d04eb0cf7b0a1dff0328ef61d 100644 (file)
@@ -14,6 +14,6 @@
 
 (* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************)
 
-notation "hvbox( ❪ term 46 G, break term 46 L1 ❫ ⊢ ⬈[ break term 46 h ] break term 46 L2 )"
+notation "hvbox( ❪ term 46 G, break term 46 L1 ❫ ⊢ ⬈[ break term 46 T ] break term 46 L2 )"
    non associative with precedence 45
-   for @{ 'PRedTySn $h $G $L1 $L2 }.
+   for @{ 'PRedTySn $T $G $L1 $L2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysn_5.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysn_5.ma
deleted file mode 100644 (file)
index fdcc1a4..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 T ] break term 46 L2 )"
-   non associative with precedence 45
-   for @{ 'PRedTySn $h $T $G $L1 $L2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysnstar_3.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysnstar_3.ma
new file mode 100644 (file)
index 0000000..c1f89d6
--- /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 L2 )"
+   non associative with precedence 45
+   for @{ 'PRedTySnStar $G $L1 $L2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysnstar_4.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysnstar_4.ma
deleted file mode 100644 (file)
index 5cb97d0..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 @{ 'PRedTySnStar $h $G $L1 $L2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysnstrong_3.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysnstrong_3.ma
new file mode 100644 (file)
index 0000000..c5dfce5
--- /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( G ⊢ ⬈*𝐒[ break term 46 T ] break term 46 L )"
+   non associative with precedence 45
+   for @{ 'PRedTySNStrong $G $T $L }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysnstrong_4.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysnstrong_4.ma
deleted file mode 100644 (file)
index af9ca53..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( G ⊢ ⬈*𝐒[ break term 46 h, break term 46 T ] break term 46 L )"
-   non associative with precedence 45
-   for @{ 'PRedTySNStrong $h $T $G $L }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtystar_4.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtystar_4.ma
new file mode 100644 (file)
index 0000000..fca7baa
--- /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 T1 ⬈* break term 46 T2 )"
+   non associative with precedence 45
+   for @{ 'PRedTyStar $G $L $T1 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtystar_5.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtystar_5.ma
deleted file mode 100644 (file)
index 217b589..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 @{ 'PRedTyStar $h $G $L $T1 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtystrong_3.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtystrong_3.ma
new file mode 100644 (file)
index 0000000..a32fcc4
--- /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 T )"
+   non associative with precedence 45
+   for @{ 'PRedTyStrong $G $L $T }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtystrong_4.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtystrong_4.ma
deleted file mode 100644 (file)
index e2da53d..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 @{ 'PRedTyStrong $h $G $L $T }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/topredtysnstrong_3.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/topredtysnstrong_3.ma
new file mode 100644 (file)
index 0000000..b830ac3
--- /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( G ⊢ break term 46 L1 ⊒ break term 46 L2 )"
+   non associative with precedence 45
+   for @{ 'ToPRedTySNStrong $G $L1 $L2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/topredtysnstrong_4.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/topredtysnstrong_4.ma
deleted file mode 100644 (file)
index 7b0f2e4..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( G ⊢ break term 46 L1 ⊒[ break term 46 h] break term 46 L2 )"
-   non associative with precedence 45
-   for @{ 'ToPRedTySNStrong $h $G $L1 $L2 }.
index 3f3cf8bffc23ea37ca288739c9f603e093116329..8639ec1a37f70f4d9696dd1e31ba7fa88da10f7a 100644 (file)
@@ -27,6 +27,6 @@ lemma cpmre_total_aaa (h) (n) (A) (G) (L):
 elim (cpms_total_aaa h … n … HT1) #T0 #HT10
 elim (cprre_total_csx h G L T0)
 [ #T2 /3 width=4 by cpms_cprre_trans, ex_intro/
-| /4 width=4 by cpms_fwd_cpxs, aaa_csx, csx_cpxs_trans/
+| /4 width=5 by cpms_fwd_cpxs, aaa_csx, csx_cpxs_trans/
 ]
 qed-.
index 71b0f64f676a4d5dc4db9d9e2025457c438673ee..7a053812eecff897304fc12c1b7b3dca4cb94559 100644 (file)
@@ -18,10 +18,11 @@ include "basic_2/rt_computation/cpms.ma".
 
 (* T-BOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
 
-(* Forward lemmas with unbound context-sensitive rt-computation for terms ***)
+(* Forward lemmas with extended context-sensitive rt-computation for terms **)
 
 (* Basic_2A1: includes: scpds_fwd_cpxs cprs_cpxs *)
-lemma cpms_fwd_cpxs (h) (n): ∀G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡*[h,n] T2 → ❪G,L❫ ⊢ T1 ⬈*[h] T2.
+lemma cpms_fwd_cpxs (h) (n) (G) (L):
+      ∀T1,T2. ❪G,L❫ ⊢ T1 ➡*[h,n] T2 → ❪G,L❫ ⊢ T1 ⬈* T2.
 #h #n #G #L #T1 #T2 #H @(cpms_ind_dx … H) -T2
-/3 width=4 by cpxs_strap1, cpm_fwd_cpx/
+/3 width=5 by cpxs_strap1, cpm_fwd_cpx/
 qed-.
index b96b5fcc62452c9aa383b070bb169d569a052e94..09a2e9ceb0050e957ae4d28c84684ec7cebd15eb 100644 (file)
@@ -22,27 +22,27 @@ include "basic_2/rt_computation/cpms_fpbs.ma".
 
 lemma cpms_tneqx_fwd_fpbg (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 cpms_fwd_cpxs, cpxs_tneqx_fpbg/ qed-.
+      (T1 ≛ T2 → ⊥) → ❪G,L,T1❫ > ❪G,L,T2❫.
+/3 width=3 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 ➡*[h,n] T2 → ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
+      ∀G1,G2,L1,L2,T1,T. ❪G1,L1,T1❫ > ❪G2,L2,T❫ →
+      ∀T2. ❪G2,L2❫ ⊢ T ➡*[h,n] T2 → ❪G1,L1,T1❫ > ❪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 ➡*[h,n] T →
-      ∀G2,L2,T2. ❪G1,L1,T❫ >[h] ❪G2,L2,T2❫ → ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
+      ∀G2,L2,T2. ❪G1,L1,T❫ > ❪G2,L2,T2❫ → ❪G1,L1,T1❫ > ❪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 ➡*[h,n] T2 → ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
+      ∀n,T2. ❪G2,L2❫ ⊢ T ➡*[h,n] T2 → ❪G1,L1,T1❫ > ❪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 ➡[h,n1] T → (T1 ≛ T → ⊥) →
-      ∀n2,T2. ❪G,L❫⊢ T ➡*[h,n2] T2 → T1 ≛ T2 → ❪G,L,T1❫ >[h] ❪G,L,T1❫.
+      ∀n2,T2. ❪G,L❫⊢ T ➡*[h,n2] T2 → T1 ≛ T2 → ❪G,L,T1❫ > ❪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 ec8e45b13319e35baeb3ae7b9ae6c1750f44e31e..7a6ace0849d23b227fa9d9e53da7e92cb6691273 100644 (file)
@@ -21,5 +21,5 @@ include "basic_2/rt_computation/cpms_cpxs.ma".
 
 (* Basic_2A1: uses: cprs_fpbs *)
 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-.
+      ∀G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡*[h,n] T2 → ❪G,L,T1❫ ≥ ❪G,L,T2❫.
+/3 width=3 by cpms_fwd_cpxs, cpxs_fpbs/ qed-.
index 3fb6d1cd9b313612b7a40710f01216a07fbd6278..b38e8ca8dfb145e19d9e29d46928f030f2eda20f 100644 (file)
@@ -20,10 +20,10 @@ include "basic_2/rt_computation/cpmuwe.ma".
 
 (* T-UNBOUND WHD EVALUATION FOR T-BOUND RT-TRANSITION ON TERMS **************)
 
-(* Properties with strong normalization for unbound rt-transition for terms *)
+(* Properties with strongly normalizing terms for extended rt-transition ****)
 
 lemma cpmuwe_total_csx (h) (G) (L):
-      ∀T1. ❪G,L❫ ⊢ ⬈*𝐒[h] T1 → ∃∃T2,n. ❪G,L❫ ⊢ T1 ➡*𝐍𝐖*[h,n] T2.
+      ∀T1. ❪G,L❫ ⊢ ⬈*𝐒 T1 → ∃∃T2,n. ❪G,L❫ ⊢ T1 ➡*𝐍𝐖*[h,n] T2.
 #h #G #L #T1 #H
 @(csx_ind_cpxs … H) -T1 #T1 #_ #IHT1
 elim (cnuw_dec_ex h G L T1)
@@ -32,14 +32,14 @@ elim (cnuw_dec_ex h G L T1)
   elim (IHT1 … T0) -IHT1
   [ #T2 #n2 * #HT02 #HT2 /4 width=5 by cpms_trans, cpmuwe_intro, ex1_2_intro/
   | /3 width=1 by teqx_tweq/
-  | /2 width=2 by cpms_fwd_cpxs/
+  | /2 width=3 by cpms_fwd_cpxs/
   ]
 ]
 qed-.
 
 lemma R_cpmuwe_total_csx (h) (G) (L):
-      ∀T1. ❪G,L❫ ⊢ ⬈*𝐒[h] T1 → ∃n. R_cpmuwe h G L T1 n.
+      ∀T1. ❪G,L❫ ⊢ ⬈*𝐒 T1 → ∃n. R_cpmuwe h G L T1 n.
 #h #G #L #T1 #H
-elim (cpmuwe_total_csx … H) -H #T2 #n #HT12
+elim (cpmuwe_total_csx … H) -H #T2 #n #HT12
 /3 width=3 by ex_intro (* 2x *)/
 qed-.
index 2642f686eaed9fcda4eec85185c46e45ede6d7e2..854fd530b6edfdf18b846f44170cac6db8928a33 100644 (file)
@@ -19,16 +19,16 @@ include "basic_2/rt_computation/cprre.ma".
 
 (* EVALUATION FOR CONTEXT-SENSITIVE PARALLEL R-TRANSITION ON TERMS **********)
 
-(* Properties with strong normalization for unbound rt-transition for terms *)
+(* Properties with strongly normalizing terms for extended rt-transition ****)
 
 (* 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,0] T2.
+      ∀T1. ❪G,L❫ ⊢ ⬈*𝐒 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/ ] *
 #T0 #HT10 #HnT10
-elim (IHT1 … HnT10) -IHT1 -HnT10 [| /2 width=2 by cpm_fwd_cpx/ ]
+elim (IHT1 … HnT10) -IHT1 -HnT10 [| /2 width=3 by cpm_fwd_cpx/ ]
 #T2 * /4 width=3 by cprs_step_sn, ex_intro, cpmre_intro/
 qed-.
index 843ec363691ac8d2250994d81149c3d91c92da75..a8afc2c236d8c458b705d60e4cd9b6f2b9ee7138 100644 (file)
 (**************************************************************************)
 
 include "ground/lib/star.ma".
-include "basic_2/notation/relations/predtystar_5.ma".
+include "basic_2/notation/relations/predtystar_4.ma".
 include "basic_2/rt_transition/cpx.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS *************)
 
-definition cpxs: sh → relation4 genv lenv term term ≝
-                 λh,G. CTC … (cpx h G).
+definition cpxs (G): relation3 lenv term term ≝
+           CTC … (cpx G).
 
-interpretation "unbound context-sensitive parallel rt-computation (term)"
-   'PRedTyStar h G L T1 T2 = (cpxs h G L T1 T2).
+interpretation
+  "extended context-sensitive parallel rt-computation (term)"
+  'PRedTyStar G L T1 T2 = (cpxs G L T1 T2).
 
 (* Basic eliminators ********************************************************)
 
-lemma cpxs_ind: ∀h,G,L,T1. ∀Q:predicate term. 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.
-#h #L #G #T1 #Q #HT1 #IHT1 #T2 #HT12
+lemma cpxs_ind (G) (L) (T1) (Q:predicate …):
+      Q T1 →
+      (∀T,T2. ❪G,L❫ ⊢ T1 ⬈* T → ❪G,L❫ ⊢ T ⬈ T2 → Q T → Q T2) →
+      ∀T2. ❪G,L❫ ⊢ T1 ⬈* T2 → Q T2.
+#L #G #T1 #Q #HT1 #IHT1 #T2 #HT12
 @(TC_star_ind … HT1 IHT1 … HT12) //
 qed-.
 
-lemma cpxs_ind_dx: ∀h,G,L,T2. ∀Q:predicate term. 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.
-#h #G #L #T2 #Q #HT2 #IHT2 #T1 #HT12
+lemma cpxs_ind_dx (G) (L) (T2) (Q:predicate …):
+      Q T2 →
+      (∀T1,T. ❪G,L❫ ⊢ T1 ⬈ T → ❪G,L❫ ⊢ T ⬈* T2 → Q T → Q T1) →
+      ∀T1. ❪G,L❫ ⊢ T1 ⬈* T2 → Q T1.
+#G #L #T2 #Q #HT2 #IHT2 #T1 #HT12
 @(TC_star_ind_dx … HT2 IHT2 … HT12) //
 qed-.
 
 (* Basic properties *********************************************************)
 
-lemma cpxs_refl: ∀h,G,L,T. ❪G,L❫ ⊢ T ⬈*[h] T.
+lemma cpxs_refl (G) (L):
+      ∀T. ❪G,L❫ ⊢ T ⬈* T.
 /2 width=1 by inj/ qed.
 
-lemma cpx_cpxs: ∀h,G,L,T1,T2. ❪G,L❫ ⊢ T1 ⬈[h] T2 → ❪G,L❫ ⊢ T1 ⬈*[h] T2.
+lemma cpx_cpxs (G) (L): ∀T1,T2. ❪G,L❫ ⊢ T1 ⬈ T2 → ❪G,L❫ ⊢ T1 ⬈* T2.
 /2 width=1 by inj/ qed.
 
-lemma cpxs_strap1: ∀h,G,L,T1,T. ❪G,L❫ ⊢ T1 ⬈*[h] T →
-                   ∀T2. ❪G,L❫ ⊢ T ⬈[h] T2 → ❪G,L❫ ⊢ T1 ⬈*[h] T2.
+lemma cpxs_strap1 (G) (L):
+      ∀T1,T. ❪G,L❫ ⊢ T1 ⬈* T →
+      ∀T2. ❪G,L❫ ⊢ T ⬈ T2 → ❪G,L❫ ⊢ T1 ⬈* T2.
 normalize /2 width=3 by step/ qed-.
 
-lemma cpxs_strap2: ∀h,G,L,T1,T. ❪G,L❫ ⊢ T1 ⬈[h] T →
-                   ∀T2. ❪G,L❫ ⊢ T ⬈*[h] T2 → ❪G,L❫ ⊢ T1 ⬈*[h] T2.
+lemma cpxs_strap2 (G) (L):
+      ∀T1,T. ❪G,L❫ ⊢ T1 ⬈ T →
+      ∀T2. ❪G,L❫ ⊢ T ⬈* T2 → ❪G,L❫ ⊢ T1 ⬈* T2.
 normalize /2 width=3 by TC_strap/ qed-.
 
 (* Basic_2A1: was just: cpxs_sort *)
-lemma cpxs_sort: ∀h,G,L,s,n. ❪G,L❫ ⊢ ⋆s ⬈*[h] ⋆((next h)^n s).
-#h #G #L #s #n elim n -n /2 width=1 by cpx_cpxs/
-#n >iter_S /2 width=3 by cpxs_strap1/
-qed.
-
-lemma cpxs_bind_dx: ∀h,G,L,V1,V2. ❪G,L❫ ⊢ V1 ⬈[h] V2 →
-                    ∀I,T1,T2. ❪G,L. ⓑ[I]V1❫ ⊢ T1 ⬈*[h] T2 →
-                    ∀p. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈*[h] ⓑ[p,I]V2.T2.
-#h #G #L #V1 #V2 #HV12 #I #T1 #T2 #HT12 #a @(cpxs_ind_dx … HT12) -T1
+lemma cpxs_qu (G) (L):
+      ∀s1,s2. ❪G,L❫ ⊢ ⋆s1 ⬈* ⋆s2.
+/2 width=1 by cpx_cpxs/ qed.
+
+lemma cpxs_bind_dx (G) (L):
+      ∀V1,V2. ❪G,L❫ ⊢ V1 ⬈ V2 →
+      ∀I,T1,T2. ❪G,L. ⓑ[I]V1❫ ⊢ T1 ⬈* T2 →
+      ∀p. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈* ⓑ[p,I]V2.T2.
+#G #L #V1 #V2 #HV12 #I #T1 #T2 #HT12 #a @(cpxs_ind_dx … HT12) -T1
 /3 width=3 by cpxs_strap2, cpx_cpxs, cpx_pair_sn, cpx_bind/
 qed.
 
-lemma cpxs_flat_dx: ∀h,G,L,V1,V2. ❪G,L❫ ⊢ V1 ⬈[h] V2 →
-                    ∀T1,T2. ❪G,L❫ ⊢ T1 ⬈*[h] T2 →
-                    ∀I. ❪G,L❫ ⊢ ⓕ[I]V1.T1 ⬈*[h] ⓕ[I]V2.T2.
-#h #G #L #V1 #V2 #HV12 #T1 #T2 #HT12 @(cpxs_ind … HT12) -T2
+lemma cpxs_flat_dx (G) (L):
+      ∀V1,V2. ❪G,L❫ ⊢ V1 ⬈ V2 →
+      ∀T1,T2. ❪G,L❫ ⊢ T1 ⬈* T2 →
+      ∀I. ❪G,L❫ ⊢ ⓕ[I]V1.T1 ⬈* ⓕ[I]V2.T2.
+#G #L #V1 #V2 #HV12 #T1 #T2 #HT12 @(cpxs_ind … HT12) -T2
 /3 width=5 by cpxs_strap1, cpx_cpxs, cpx_pair_sn, cpx_flat/
 qed.
 
-lemma cpxs_flat_sn: ∀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.
-#h #G #L #T1 #T2 #HT12 #V1 #V2 #H @(cpxs_ind … H) -V2
+lemma cpxs_flat_sn (G) (L):
+      ∀T1,T2. ❪G,L❫ ⊢ T1 ⬈ T2 →
+      ∀V1,V2. ❪G,L❫ ⊢ V1 ⬈* V2 →
+      ∀I. ❪G,L❫ ⊢ ⓕ[I]V1.T1 ⬈* ⓕ[I]V2.T2.
+#G #L #T1 #T2 #HT12 #V1 #V2 #H @(cpxs_ind … H) -V2
 /3 width=5 by cpxs_strap1, cpx_cpxs, cpx_pair_sn, cpx_flat/
 qed.
 
-lemma cpxs_pair_sn: ∀h,I,G,L,V1,V2. ❪G,L❫ ⊢ V1 ⬈*[h] V2 →
-                    ∀T. ❪G,L❫ ⊢ ②[I]V1.T ⬈*[h] ②[I]V2.T.
-#h #I #G #L #V1 #V2 #H @(cpxs_ind … H) -V2
+lemma cpxs_pair_sn (G) (L):
+      ∀I,V1,V2. ❪G,L❫ ⊢ V1 ⬈* V2 →
+      ∀T. ❪G,L❫ ⊢ ②[I]V1.T ⬈* ②[I]V2.T.
+#G #L #I #V1 #V2 #H @(cpxs_ind … H) -V2
 /3 width=3 by cpxs_strap1, cpx_pair_sn/
 qed.
 
-lemma cpxs_zeta (h) (G) (L) (V):
-                ∀T1,T. ⇧[1] T ≘ T1 →
-                ∀T2. ❪G,L❫ ⊢ T ⬈*[h] T2 → ❪G,L❫ ⊢ +ⓓV.T1 ⬈*[h] T2.
-#h #G #L #V #T1 #T #HT1 #T2 #H @(cpxs_ind … H) -T2
+lemma cpxs_zeta (G) (L) (V):
+      ∀T1,T. ⇧[1] T ≘ T1 →
+      ∀T2. ❪G,L❫ ⊢ T ⬈* T2 → ❪G,L❫ ⊢ +ⓓV.T1 ⬈* T2.
+#G #L #V #T1 #T #HT1 #T2 #H @(cpxs_ind … H) -T2
 /3 width=3 by cpxs_strap1, cpx_cpxs, cpx_zeta/
 qed.
 
 (* Basic_2A1: was: cpxs_zeta *)
-lemma cpxs_zeta_dx (h) (G) (L) (V):
-                   ∀T2,T. ⇧[1] T2 ≘ T →
-                   ∀T1. ❪G,L.ⓓV❫ ⊢ T1 ⬈*[h] T → ❪G,L❫ ⊢ +ⓓV.T1 ⬈*[h] T2.
-#h #G #L #V #T2 #T #HT2 #T1 #H @(cpxs_ind_dx … H) -T1
+lemma cpxs_zeta_dx (G) (L) (V):
+      ∀T2,T. ⇧[1] T2 ≘ T →
+      ∀T1. ❪G,L.ⓓV❫ ⊢ T1 ⬈* T → ❪G,L❫ ⊢ +ⓓV.T1 ⬈* T2.
+#G #L #V #T2 #T #HT2 #T1 #H @(cpxs_ind_dx … H) -T1
 /3 width=3 by cpxs_strap2, cpx_cpxs, cpx_bind, cpx_zeta/
 qed.
 
-lemma cpxs_eps: ∀h,G,L,T1,T2. ❪G,L❫ ⊢ T1 ⬈*[h] T2 →
-                ∀V. ❪G,L❫ ⊢ ⓝV.T1 ⬈*[h] T2.
-#h #G #L #T1 #T2 #H @(cpxs_ind … H) -T2
+lemma cpxs_eps (G) (L):
+      ∀T1,T2. ❪G,L❫ ⊢ T1 ⬈* T2 →
+      ∀V. ❪G,L❫ ⊢ ⓝV.T1 ⬈* T2.
+#G #L #T1 #T2 #H @(cpxs_ind … H) -T2
 /3 width=3 by cpxs_strap1, cpx_cpxs, cpx_eps/
 qed.
 
 (* Basic_2A1: was: cpxs_ct *)
-lemma cpxs_ee: ∀h,G,L,V1,V2. ❪G,L❫ ⊢ V1 ⬈*[h] V2 →
-               ∀T. ❪G,L❫ ⊢ ⓝV1.T ⬈*[h] V2.
-#h #G #L #V1 #V2 #H @(cpxs_ind … H) -V2
+lemma cpxs_ee (G) (L):
+      ∀V1,V2. ❪G,L❫ ⊢ V1 ⬈* V2 →
+      ∀T. ❪G,L❫ ⊢ ⓝV1.T ⬈* V2.
+#G #L #V1 #V2 #H @(cpxs_ind … H) -V2
 /3 width=3 by cpxs_strap1, cpx_cpxs, cpx_ee/
 qed.
 
-lemma cpxs_beta_dx: ∀h,p,G,L,V1,V2,W1,W2,T1,T2.
-                    ❪G,L❫ ⊢ V1 ⬈[h] V2 → ❪G,L.ⓛW1❫ ⊢ T1 ⬈*[h] T2 → ❪G,L❫ ⊢ W1 ⬈[h] W2 →
-                    ❪G,L❫ ⊢ ⓐV1.ⓛ[p]W1.T1 ⬈*[h] ⓓ[p]ⓝW2.V2.T2.
-#h #p #G #L #V1 #V2 #W1 #W2 #T1 #T2 #HV12 * -T2
+lemma cpxs_beta_dx (G) (L):
+      ∀p,V1,V2,W1,W2,T1,T2.
+      ❪G,L❫ ⊢ V1 ⬈ V2 → ❪G,L.ⓛW1❫ ⊢ T1 ⬈* T2 → ❪G,L❫ ⊢ W1 ⬈ W2 →
+      ❪G,L❫ ⊢ ⓐV1.ⓛ[p]W1.T1 ⬈* ⓓ[p]ⓝW2.V2.T2.
+#G #L #p #V1 #V2 #W1 #W2 #T1 #T2 #HV12 * -T2
 /4 width=7 by cpx_cpxs, cpxs_strap1, cpxs_bind_dx, cpxs_flat_dx, cpx_beta/
 qed.
 
-lemma cpxs_theta_dx: ∀h,p,G,L,V1,V,V2,W1,W2,T1,T2.
-                     ❪G,L❫ ⊢ V1 ⬈[h] V → ⇧[1] V ≘ V2 → ❪G,L.ⓓW1❫ ⊢ T1 ⬈*[h] T2 →
-                     ❪G,L❫ ⊢ W1 ⬈[h] W2 → ❪G,L❫ ⊢ ⓐV1.ⓓ[p]W1.T1 ⬈*[h] ⓓ[p]W2.ⓐV2.T2.
-#h #p #G #L #V1 #V #V2 #W1 #W2 #T1 #T2 #HV1 #HV2 * -T2
+lemma cpxs_theta_dx (G) (L):
+      ∀p,V1,V,V2,W1,W2,T1,T2.
+      ❪G,L❫ ⊢ V1 ⬈ V → ⇧[1] V ≘ V2 → ❪G,L.ⓓW1❫ ⊢ T1 ⬈* T2 →
+      ❪G,L❫ ⊢ W1 ⬈ W2 → ❪G,L❫ ⊢ ⓐV1.ⓓ[p]W1.T1 ⬈* ⓓ[p]W2.ⓐV2.T2.
+#G #L #p #V1 #V #V2 #W1 #W2 #T1 #T2 #HV1 #HV2 * -T2
 /4 width=9 by cpx_cpxs, cpxs_strap1, cpxs_bind_dx, cpxs_flat_dx, cpx_theta/
 qed.
 
 (* Basic inversion lemmas ***************************************************)
 
 (* Basic_2A1: wa just: cpxs_inv_sort1 *)
-lemma cpxs_inv_sort1: ∀h,G,L,X2,s. ❪G,L❫ ⊢ ⋆s ⬈*[h] X2 →
-                      ∃n. X2 = ⋆((next h)^n s).
-#h #G #L #X2 #s #H @(cpxs_ind … H) -X2 /2 width=2 by ex_intro/
-#X #X2 #_ #HX2 * #n #H destruct
-elim (cpx_inv_sort1 … HX2) -HX2 #H destruct /2 width=2 by ex_intro/
-@(ex_intro … (↑n)) >iter_S //
+lemma cpxs_inv_sort1 (G) (L):
+      ∀X2,s1. ❪G,L❫ ⊢ ⋆s1 ⬈* X2 →
+      ∃s2. X2 = ⋆s2.
+#G #L #X2 #s1 #H @(cpxs_ind … H) -X2 /2 width=2 by ex_intro/
+#X #X2 #_ #HX2 * #s #H destruct
+elim (cpx_inv_sort1 … HX2) -HX2 #s2 #H destruct /2 width=2 by ex_intro/
 qed-.
 
-lemma cpxs_inv_cast1: ∀h,G,L,W1,T1,U2. ❪G,L❫ ⊢ ⓝW1.T1 ⬈*[h] U2 →
-                      ∨∨ ∃∃W2,T2. ❪G,L❫ ⊢ W1 ⬈*[h] W2 & ❪G,L❫ ⊢ T1 ⬈*[h] T2 & U2 = ⓝW2.T2
-                       | ❪G,L❫ ⊢ T1 ⬈*[h] U2
-                       | ❪G,L❫ ⊢ W1 ⬈*[h] U2.
-#h #G #L #W1 #T1 #U2 #H @(cpxs_ind … H) -U2 /3 width=5 by or3_intro0, ex3_2_intro/
+lemma cpxs_inv_cast1 (G) (L):
+      ∀W1,T1,U2. ❪G,L❫ ⊢ ⓝW1.T1 ⬈* U2 →
+      ∨∨ ∃∃W2,T2. ❪G,L❫ ⊢ W1 ⬈* W2 & ❪G,L❫ ⊢ T1 ⬈* T2 & U2 = ⓝW2.T2
+       | ❪G,L❫ ⊢ T1 ⬈* U2
+       | ❪G,L❫ ⊢ W1 ⬈* U2.
+#G #L #W1 #T1 #U2 #H @(cpxs_ind … H) -U2 /3 width=5 by or3_intro0, ex3_2_intro/
 #U2 #U #_ #HU2 * /3 width=3 by cpxs_strap1, or3_intro1, or3_intro2/ *
 #W #T #HW1 #HT1 #H destruct
 elim (cpx_inv_cast1 … HU2) -HU2 /3 width=3 by cpxs_strap1, or3_intro1, or3_intro2/ *
index b69f83a24fdb6a9e30f556d8640cbdd0720a858e..f63b1416c347e41072bd571c19172366388fbf6c 100644 (file)
 include "basic_2/rt_transition/lpx_aaa.ma".
 include "basic_2/rt_computation/cpxs.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS *************)
 
 (* Properties with atomic arity assignment on terms *************************)
 
-lemma cpxs_aaa_conf: ∀h,G,L. Conf3 … (aaa G L) (cpxs h G L).
+lemma cpxs_aaa_conf (G) (L):
+      Conf3 … (aaa G L) (cpxs G L).
 #h #G #L @TC_Conf3 @cpx_aaa_conf (**) (* auto fails *)
 qed-.
index a2dc4c8853bba9119b936a30d5539d5676699aa7..4f107fec4531c6a0741cb9dc3f7c5f8f65654658 100644 (file)
 include "basic_2/rt_transition/cnx_cnx.ma".
 include "basic_2/rt_computation/cpxs.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS *************)
 
 (* Properties with normal forms *********************************************)
 
-lemma cpxs_cnx (h) (G) (L) (T1):
-      (∀T2. ❪G,L❫ ⊢ T1 ⬈*[h] T2 → T1 ≛ T2) → ❪G,L❫ ⊢ ⬈𝐍[h] T1.
+lemma cpxs_cnx (G) (L) (T1):
+      (∀T2. ❪G,L❫ ⊢ T1 ⬈* T2 → T1 ≛ T2) → ❪G,L❫ ⊢ ⬈𝐍 T1.
 /3 width=1 by cpx_cpxs/ qed.
 
 (* Inversion lemmas with normal terms ***************************************)
 
-lemma cpxs_inv_cnx1 (h) (G) (L):
-      ∀T1,T2. ❪G,L❫ ⊢ T1 ⬈*[h] T2 → ❪G,L❫ ⊢ ⬈𝐍[h] T1 → T1 ≛ T2.
-#h #G #L #T1 #T2 #H @(cpxs_ind_dx … H) -T1
+lemma cpxs_inv_cnx1 (G) (L):
+      ∀T1,T2. ❪G,L❫ ⊢ T1 ⬈* T2 → ❪G,L❫ ⊢ ⬈𝐍 T1 → T1 ≛ T2.
+#G #L #T1 #T2 #H @(cpxs_ind_dx … H) -T1
 /5 width=9 by cnx_teqx_trans, teqx_trans/
 qed-.
index 87bf9f0b192ac05390271548e3ebd5d3c96c65b4..92146c7eeb0e3abee1e10afb5bf90dff45e5aeff 100644 (file)
@@ -16,66 +16,72 @@ include "ground/xoa/ex_4_5.ma".
 include "basic_2/rt_transition/cpx_lsubr.ma".
 include "basic_2/rt_computation/cpxs.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS *************)
 
 (* Main properties **********************************************************)
 
-theorem cpxs_trans: ∀h,G,L. Transitive … (cpxs h G L).
+theorem cpxs_trans (G) (L):
+        Transitive … (cpxs G L).
 normalize /2 width=3 by trans_TC/ qed-.
 
-theorem cpxs_bind: ∀h,p,I,G,L,V1,V2,T1,T2. ❪G,L.ⓑ[I]V1❫ ⊢ T1 ⬈*[h] T2 →
-                   ❪G,L❫ ⊢ V1 ⬈*[h] V2 →
-                   ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈*[h] ⓑ[p,I]V2.T2.
-#h #p #I #G #L #V1 #V2 #T1 #T2 #HT12 #H @(cpxs_ind … H) -V2
+theorem cpxs_bind (G) (L):
+        ∀p,I,V1,V2,T1,T2. ❪G,L.ⓑ[I]V1❫ ⊢ T1 ⬈* T2 →
+        ❪G,L❫ ⊢ V1 ⬈* V2 →
+        ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈* ⓑ[p,I]V2.T2.
+#G #L #p #I #V1 #V2 #T1 #T2 #HT12 #H @(cpxs_ind … H) -V2
 /3 width=5 by cpxs_trans, cpxs_bind_dx/
 qed.
 
-theorem cpxs_flat: ∀h,I,G,L,V1,V2,T1,T2. ❪G,L❫ ⊢ T1 ⬈*[h] T2 →
-                   ❪G,L❫ ⊢ V1 ⬈*[h] V2 →
-                   ❪G,L❫ ⊢ ⓕ[I]V1.T1 ⬈*[h] ⓕ[I]V2.T2.
-#h #I #G #L #V1 #V2 #T1 #T2 #HT12 #H @(cpxs_ind … H) -V2
+theorem cpxs_flat (G) (L):
+        ∀I,V1,V2,T1,T2. ❪G,L❫ ⊢ T1 ⬈* T2 →
+        ❪G,L❫ ⊢ V1 ⬈* V2 →
+        ❪G,L❫ ⊢ ⓕ[I]V1.T1 ⬈* ⓕ[I]V2.T2.
+#G #L #I #V1 #V2 #T1 #T2 #HT12 #H @(cpxs_ind … H) -V2
 /3 width=5 by cpxs_trans, cpxs_flat_dx/
 qed.
 
-theorem cpxs_beta_rc: ∀h,p,G,L,V1,V2,W1,W2,T1,T2.
-                      ❪G,L❫ ⊢ V1 ⬈[h] V2 → ❪G,L.ⓛW1❫ ⊢ T1 ⬈*[h] T2 → ❪G,L❫ ⊢ W1 ⬈*[h] W2 →
-                      ❪G,L❫ ⊢ ⓐV1.ⓛ[p]W1.T1 ⬈*[h] ⓓ[p]ⓝW2.V2.T2.
-#h #p #G #L #V1 #V2 #W1 #W2 #T1 #T2 #HV12 #HT12 #H @(cpxs_ind … H) -W2
+theorem cpxs_beta_rc (G) (L):
+        ∀p,V1,V2,W1,W2,T1,T2.
+        ❪G,L❫ ⊢ V1 ⬈ V2 → ❪G,L.ⓛW1❫ ⊢ T1 ⬈* T2 → ❪G,L❫ ⊢ W1 ⬈* W2 →
+        ❪G,L❫ ⊢ ⓐV1.ⓛ[p]W1.T1 ⬈* ⓓ[p]ⓝW2.V2.T2.
+#G #L #p #V1 #V2 #W1 #W2 #T1 #T2 #HV12 #HT12 #H @(cpxs_ind … H) -W2
 /4 width=5 by cpxs_trans, cpxs_beta_dx, cpxs_bind_dx, cpx_pair_sn/
 qed.
 
-theorem cpxs_beta: ∀h,p,G,L,V1,V2,W1,W2,T1,T2.
-                   ❪G,L.ⓛW1❫ ⊢ T1 ⬈*[h] T2 → ❪G,L❫ ⊢ W1 ⬈*[h] W2 → ❪G,L❫ ⊢ V1 ⬈*[h] V2 →
-                   ❪G,L❫ ⊢ ⓐV1.ⓛ[p]W1.T1 ⬈*[h] ⓓ[p]ⓝW2.V2.T2.
-#h #p #G #L #V1 #V2 #W1 #W2 #T1 #T2 #HT12 #HW12 #H @(cpxs_ind … H) -V2
+theorem cpxs_beta (G) (L):
+        ∀p,V1,V2,W1,W2,T1,T2.
+        ❪G,L.ⓛW1❫ ⊢ T1 ⬈* T2 → ❪G,L❫ ⊢ W1 ⬈* W2 → ❪G,L❫ ⊢ V1 ⬈* V2 →
+        ❪G,L❫ ⊢ ⓐV1.ⓛ[p]W1.T1 ⬈* ⓓ[p]ⓝW2.V2.T2.
+#G #L #p #V1 #V2 #W1 #W2 #T1 #T2 #HT12 #HW12 #H @(cpxs_ind … H) -V2
 /4 width=5 by cpxs_trans, cpxs_beta_rc, cpxs_bind_dx, cpx_flat/
 qed.
 
-theorem cpxs_theta_rc: ∀h,p,G,L,V1,V,V2,W1,W2,T1,T2.
-                       ❪G,L❫ ⊢ V1 ⬈[h] V → ⇧[1] V ≘ V2 →
-                       ❪G,L.ⓓW1❫ ⊢ T1 ⬈*[h] T2 → ❪G,L❫ ⊢ W1 ⬈*[h] W2 →
-                       ❪G,L❫ ⊢ ⓐV1.ⓓ[p]W1.T1 ⬈*[h] ⓓ[p]W2.ⓐV2.T2.
-#h #p #G #L #V1 #V #V2 #W1 #W2 #T1 #T2 #HV1 #HV2 #HT12 #H @(cpxs_ind … H) -W2
+theorem cpxs_theta_rc (G) (L):
+        ∀p,V1,V,V2,W1,W2,T1,T2.
+        ❪G,L❫ ⊢ V1 ⬈ V → ⇧[1] V ≘ V2 →
+        ❪G,L.ⓓW1❫ ⊢ T1 ⬈* T2 → ❪G,L❫ ⊢ W1 ⬈* W2 →
+        ❪G,L❫ ⊢ ⓐV1.ⓓ[p]W1.T1 ⬈* ⓓ[p]W2.ⓐV2.T2.
+#G #L #p #V1 #V #V2 #W1 #W2 #T1 #T2 #HV1 #HV2 #HT12 #H @(cpxs_ind … H) -W2
 /3 width=5 by cpxs_trans, cpxs_theta_dx, cpxs_bind_dx/
 qed.
 
-theorem cpxs_theta: ∀h,p,G,L,V1,V,V2,W1,W2,T1,T2.
-                    ⇧[1] V ≘ V2 → ❪G,L❫ ⊢ W1 ⬈*[h] W2 →
-                    ❪G,L.ⓓW1❫ ⊢ T1 ⬈*[h] T2 → ❪G,L❫ ⊢ V1 ⬈*[h] V →
-                    ❪G,L❫ ⊢ ⓐV1.ⓓ[p]W1.T1 ⬈*[h] ⓓ[p]W2.ⓐV2.T2.
-#h #p #G #L #V1 #V #V2 #W1 #W2 #T1 #T2 #HV2 #HW12 #HT12 #H @(TC_ind_dx … V1 H) -V1
+theorem cpxs_theta (G) (L):
+        ∀p,V1,V,V2,W1,W2,T1,T2.
+        ⇧[1] V ≘ V2 → ❪G,L❫ ⊢ W1 ⬈* W2 →
+        ❪G,L.ⓓW1❫ ⊢ T1 ⬈* T2 → ❪G,L❫ ⊢ V1 ⬈* V →
+        ❪G,L❫ ⊢ ⓐV1.ⓓ[p]W1.T1 ⬈* ⓓ[p]W2.ⓐV2.T2.
+#p #G #L #V1 #V #V2 #W1 #W2 #T1 #T2 #HV2 #HW12 #HT12 #H @(TC_ind_dx … V1 H) -V1
 /3 width=5 by cpxs_trans, cpxs_theta_rc, cpxs_flat_dx/
 qed.
 
 (* Advanced inversion lemmas ************************************************)
 
-lemma cpxs_inv_appl1: ∀h,G,L,V1,T1,U2. ❪G,L❫ ⊢ ⓐV1.T1 ⬈*[h] U2 →
-                      ∨∨ ∃∃V2,T2.       ❪G,L❫ ⊢ V1 ⬈*[h] V2 & ❪G,L❫ ⊢ T1 ⬈*[h] T2 &
-                                        U2 = ⓐV2.T2
-                       | ∃∃p,W,T.       ❪G,L❫ ⊢ T1 ⬈*[h] ⓛ[p]W.T & ❪G,L❫ ⊢ ⓓ[p]ⓝW.V1.T ⬈*[h] U2
-                       | ∃∃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] U2.
-#h #G #L #V1 #T1 #U2 #H @(cpxs_ind … H) -U2 [ /3 width=5 by or3_intro0, ex3_2_intro/ ]
+lemma cpxs_inv_appl1 (G) (L):
+      ∀V1,T1,U2. ❪G,L❫ ⊢ ⓐV1.T1 ⬈* U2 →
+      ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ⬈* V2 & ❪G,L❫ ⊢ T1 ⬈* T2 & U2 = ⓐV2.T2
+       | ∃∃p,W,T. ❪G,L❫ ⊢ T1 ⬈* ⓛ[p]W.T & ❪G,L❫ ⊢ ⓓ[p]ⓝW.V1.T ⬈* U2
+       | ∃∃p,V0,V2,V,T. ❪G,L❫ ⊢ V1 ⬈* V0 & ⇧[1] V0 ≘ V2 & ❪G,L❫ ⊢ T1 ⬈* ⓓ[p]V.T & ❪G,L❫ ⊢ ⓓ[p]V.ⓐV2.T ⬈* U2.
+#G #L #V1 #T1 #U2 #H @(cpxs_ind … H) -U2 [ /3 width=5 by or3_intro0, ex3_2_intro/ ]
 #U #U2 #_ #HU2 * *
 [ #V0 #T0 #HV10 #HT10 #H destruct
   elim (cpx_inv_appl1 … HU2) -HU2 *
index 7f472e2ad1d4f0adda0847421e51569bbc0c2a11..793a5184f62b566a2369dcc3c04d27c8dea1b349 100644 (file)
@@ -16,13 +16,14 @@ include "static_2/relocation/drops_ctc.ma".
 include "basic_2/rt_transition/cpx_drops.ma".
 include "basic_2/rt_computation/cpxs.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS *************)
 
 (* Advanced properties ******************************************************)
 
-lemma cpxs_delta: ∀h,I,G,K,V1,V2. ❪G,K❫ ⊢ V1 ⬈*[h] V2 →
-                  ∀W2. ⇧[1] V2 ≘ W2 → ❪G,K.ⓑ[I]V1❫ ⊢ #0 ⬈*[h] W2.
-#h #I #G #K #V1 #V2 #H @(cpxs_ind … H) -V2
+lemma cpxs_delta (G) (K):
+      ∀I,V1,V2. ❪G,K❫ ⊢ V1 ⬈* V2 →
+      ∀W2. ⇧[1] V2 ≘ W2 → ❪G,K.ⓑ[I]V1❫ ⊢ #0 ⬈* W2.
+#G #K #I #V1 #V2 #H @(cpxs_ind … H) -V2
 [ /3 width=3 by cpx_cpxs, cpx_delta/
 | #V #V2 #_ #HV2 #IH #W2 #HVW2
   elim (lifts_total V (𝐔❨1❩))
@@ -30,9 +31,10 @@ lemma cpxs_delta: ∀h,I,G,K,V1,V2. ❪G,K❫ ⊢ V1 ⬈*[h] V2 →
 ]
 qed.
 
-lemma cpxs_lref: ∀h,I,G,K,T,i. ❪G,K❫ ⊢ #i ⬈*[h] T →
-                 ∀U. ⇧[1] T ≘ U → ❪G,K.ⓘ[I]❫ ⊢ #↑i ⬈*[h] U.
-#h #I #G #K #T #i #H @(cpxs_ind … H) -T
+lemma cpxs_lref (G) (K):
+      ∀I,T,i. ❪G,K❫ ⊢ #i ⬈* T →
+      ∀U. ⇧[1] T ≘ U → ❪G,K.ⓘ[I]❫ ⊢ #↑i ⬈* U.
+#G #K #I #T #i #H @(cpxs_ind … H) -T
 [ /3 width=3 by cpx_cpxs, cpx_lref/
 | #T0 #T #_ #HT2 #IH #U #HTU
   elim (lifts_total T0 (𝐔❨1❩))
@@ -41,10 +43,10 @@ lemma cpxs_lref: ∀h,I,G,K,T,i. ❪G,K❫ ⊢ #i ⬈*[h] T →
 qed.
 
 (* Basic_2A1: was: cpxs_delta *)
-lemma cpxs_delta_drops: ∀h,I,G,L,K,V1,V2,i.
-                        ⇩[i] L ≘ K.ⓑ[I]V1 → ❪G,K❫ ⊢ V1 ⬈*[h] V2 →
-                        ∀W2. ⇧[↑i] V2 ≘ W2 → ❪G,L❫ ⊢ #i ⬈*[h] W2.
-#h #I #G #L #K #V1 #V2 #i #HLK #H @(cpxs_ind … H) -V2
+lemma cpxs_delta_drops (G) (L):
+      ∀I,K,V1,V2,i. ⇩[i] L ≘ K.ⓑ[I]V1 → ❪G,K❫ ⊢ V1 ⬈* V2 →
+      ∀W2. ⇧[↑i] V2 ≘ W2 → ❪G,L❫ ⊢ #i ⬈* W2.
+#G #L #I #K #V1 #V2 #i #HLK #H @(cpxs_ind … H) -V2
 [ /3 width=7 by cpx_cpxs, cpx_delta_drops/
 | #V #V2 #_ #HV2 #IH #W2 #HVW2
   elim (lifts_total V (𝐔❨↑i❩))
@@ -54,11 +56,11 @@ qed.
 
 (* Advanced inversion lemmas ************************************************)
 
-lemma cpxs_inv_zero1: ∀h,G,L,T2. ❪G,L❫ ⊢ #0 ⬈*[h] T2 →
-                      T2 = #0 ∨
-                      ∃∃I,K,V1,V2. ❪G,K❫ ⊢ V1 ⬈*[h] V2 & ⇧[1] V2 ≘ T2 &
-                                   L = K.ⓑ[I]V1.
-#h #G #L #T2 #H @(cpxs_ind … H) -T2 /2 width=1 by or_introl/
+lemma cpxs_inv_zero1 (G) (L):
+      ∀T2. ❪G,L❫ ⊢ #0 ⬈* T2 →
+      ∨∨ T2 = #0
+       | ∃∃I,K,V1,V2. ❪G,K❫ ⊢ V1 ⬈* V2 & ⇧[1] V2 ≘ T2 & L = K.ⓑ[I]V1.
+#G #L #T2 #H @(cpxs_ind … H) -T2 /2 width=1 by or_introl/
 #T #T2 #_ #HT2 *
 [ #H destruct
   elim (cpx_inv_zero1 … HT2) -HT2 /2 width=1 by or_introl/
@@ -69,10 +71,11 @@ lemma cpxs_inv_zero1: ∀h,G,L,T2. ❪G,L❫ ⊢ #0 ⬈*[h] T2 →
 ]
 qed-.
 
-lemma cpxs_inv_lref1: ∀h,G,L,T2,i. ❪G,L❫ ⊢ #↑i ⬈*[h] T2 →
-                      T2 = #(↑i) ∨
-                      ∃∃I,K,T. ❪G,K❫ ⊢ #i ⬈*[h] T & ⇧[1] T ≘ T2 & L = K.ⓘ[I].
-#h #G #L #T2 #i #H @(cpxs_ind … H) -T2 /2 width=1 by or_introl/
+lemma cpxs_inv_lref1 (G) (L):
+      ∀T2,i. ❪G,L❫ ⊢ #↑i ⬈* T2 →
+      ∨∨ T2 = #(↑i)
+       | ∃∃I,K,T. ❪G,K❫ ⊢ #i ⬈* T & ⇧[1] T ≘ T2 & L = K.ⓘ[I].
+#G #L #T2 #i #H @(cpxs_ind … H) -T2 /2 width=1 by or_introl/
 #T #T2 #_ #HT2 *
 [ #H destruct
   elim (cpx_inv_lref1 … HT2) -HT2 /2 width=1 by or_introl/
@@ -84,11 +87,11 @@ lemma cpxs_inv_lref1: ∀h,G,L,T2,i. ❪G,L❫ ⊢ #↑i ⬈*[h] T2 →
 qed-.
 
 (* Basic_2A1: was: cpxs_inv_lref1 *)
-lemma cpxs_inv_lref1_drops: ∀h,G,L,T2,i. ❪G,L❫ ⊢ #i ⬈*[h] T2 →
-                            T2 = #i ∨
-                            ∃∃I,K,V1,T1. ⇩[i] L ≘ K.ⓑ[I]V1 & ❪G,K❫ ⊢ V1 ⬈*[h] T1 &
-                                         ⇧[↑i] T1 ≘ T2.
-#h #G #L #T2 #i #H @(cpxs_ind … H) -T2 /2 width=1 by or_introl/
+lemma cpxs_inv_lref1_drops (G) (L):
+      ∀T2,i. ❪G,L❫ ⊢ #i ⬈* T2 →
+      ∨∨ T2 = #i
+       | ∃∃I,K,V1,T1. ⇩[i] L ≘ K.ⓑ[I]V1 & ❪G,K❫ ⊢ V1 ⬈* T1 & ⇧[↑i] T1 ≘ T2.
+#G #L #T2 #i #H @(cpxs_ind … H) -T2 /2 width=1 by or_introl/
 #T #T2 #_ #HT2 *
 [ #H destruct
   elim (cpx_inv_lref1_drops … HT2) -HT2 /2 width=1 by or_introl/
@@ -103,17 +106,21 @@ qed-.
 (* Properties with generic relocation ***************************************)
 
 (* Basic_2A1: includes: cpxs_lift *)
-lemma cpxs_lifts_sn: ∀h,G. d_liftable2_sn … lifts (cpxs h G).
+lemma cpxs_lifts_sn (G):
+      d_liftable2_sn … lifts (cpxs G).
 /3 width=10 by cpx_lifts_sn, cpxs_strap1, d2_liftable_sn_CTC/ qed-.
 
-lemma cpxs_lifts_bi: ∀h,G. d_liftable2_bi … lifts (cpxs h G).
+lemma cpxs_lifts_bi (G):
+      d_liftable2_bi … lifts (cpxs G).
 /3 width=12 by cpxs_lifts_sn, d_liftable2_sn_bi, lifts_mono/ qed-.
 
 (* Inversion lemmas with generic relocation *********************************)
 
 (* Basic_2A1: includes: cpxs_inv_lift1 *)
-lemma cpxs_inv_lifts_sn: ∀h,G. d_deliftable2_sn … lifts (cpxs h G).
+lemma cpxs_inv_lifts_sn (G):
+      d_deliftable2_sn … lifts (cpxs G).
 /3 width=6 by d2_deliftable_sn_CTC, cpx_inv_lifts_sn/ qed-.
 
-lemma cpxs_inv_lifts_bi: ∀h,G. d_deliftable2_bi … lifts (cpxs h G).
+lemma cpxs_inv_lifts_bi (G):
+      d_deliftable2_bi … lifts (cpxs G).
 /3 width=12 by cpxs_inv_lifts_sn, d_deliftable2_sn_bi, lifts_inj/ qed-.
index c3280871acfffaad9541db2c74c29e096fcfe1f8..e942e64e59bb00637a288efb69e60d84c242dbba 100644 (file)
 include "static_2/syntax/cext2.ma".
 include "basic_2/rt_computation/cpxs.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR BINDERS ************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR BINDERS ***********)
 
-definition cpxs_ext (h) (G): relation3 lenv bind bind ≝
-                             cext2 (cpxs h G).
+definition cpxs_ext (G): relation3 lenv bind bind ≝
+           cext2 (cpxs G).
 
 interpretation
-   "unbound context-sensitive parallel rt-computation (binder)"
-   'PRedTyStar h G L I1 I2 = (cpxs_ext h G L I1 I2).
+  "extended context-sensitive parallel rt-computation (binder)"
+  'PRedTyStar G L I1 I2 = (cpxs_ext G L I1 I2).
index abbddfab7a31a7dafb901af68da5816325df1f0e..882543af4eb8dbf24b65ac7a3b233a5118d26bc6 100644 (file)
 include "static_2/static/feqx.ma".
 include "basic_2/rt_computation/cpxs_reqx.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS *************)
 
 (* Properties with sort-irrelevant equivalence for closures *****************)
 
-lemma feqx_cpxs_trans: ∀h,G1,G2,L1,L2,T1,T. ❪G1,L1,T1❫ ≛ ❪G2,L2,T❫ →
-                       ∀T2. ❪G2,L2❫ ⊢ T ⬈*[h] T2 →
-                       ∃∃T0. ❪G1,L1❫ ⊢ T1 ⬈*[h] T0 & ❪G1,L1,T0❫ ≛ ❪G2,L2,T2❫.
-#h #G1 #G2 #L1 #L2 #T1 #T #H #T2 #HT2
+lemma feqx_cpxs_trans:
+      ∀G1,G2,L1,L2,T1,T. ❪G1,L1,T1❫ ≛ ❪G2,L2,T❫ →
+      ∀T2. ❪G2,L2❫ ⊢ T ⬈* T2 →
+      ∃∃T0. ❪G1,L1❫ ⊢ T1 ⬈* T0 & ❪G1,L1,T0❫ ≛ ❪G2,L2,T2❫.
+#G1 #G2 #L1 #L2 #T1 #T #H #T2 #HT2
 elim (feqx_inv_gen_dx … H) -H #H #HL12 #HT1 destruct
 elim (reqx_cpxs_trans … HT2 … HL12) #T0 #HT0 #HT02
 lapply (cpxs_reqx_conf_dx … HT2 … HL12) -HL12 #HL12
index 1dd3b59db63d3bfb937afebd3bea918f83bf9135..778ba66811968708ea961416b4ea52e3c12bb429 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS *************)
 
 include "basic_2/rt_transition/cpx_fqus.ma".
 include "basic_2/rt_computation/cpxs_drops.ma".
@@ -21,44 +21,49 @@ include "basic_2/rt_computation/cpxs_cpxs.ma".
 
 (* Properties on supclosure *************************************************)
 
-lemma fqu_cpxs_trans: ∀h,b,G1,G2,L1,L2,T2,U2. ❪G2,L2❫ ⊢ T2 ⬈*[h] U2 →
-                      ∀T1. ❪G1,L1,T1❫ ⬂[b] ❪G2,L2,T2❫ →
-                      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈*[h] U1 & ❪G1,L1,U1❫ ⬂[b] ❪G2,L2,U2❫.
-#h #b #G1 #G2 #L1 #L2 #T2 #U2 #H @(cpxs_ind_dx … H) -T2 /2 width=3 by ex2_intro/
+lemma fqu_cpxs_trans (b):
+      ∀G1,G2,L1,L2,T2,U2. ❪G2,L2❫ ⊢ T2 ⬈* U2 →
+      ∀T1. ❪G1,L1,T1❫ ⬂[b] ❪G2,L2,T2❫ →
+      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈* U1 & ❪G1,L1,U1❫ ⬂[b] ❪G2,L2,U2❫.
+#b #G1 #G2 #L1 #L2 #T2 #U2 #H @(cpxs_ind_dx … H) -T2 /2 width=3 by ex2_intro/
 #T #T2 #HT2 #_ #IHTU2 #T1 #HT1 elim (fqu_cpx_trans … HT1 … HT2) -T
 #T #HT1 #HT2 elim (IHTU2 … HT2) -T2 /3 width=3 by cpxs_strap2, ex2_intro/
 qed-.
 
-lemma fquq_cpxs_trans: ∀h,b,G1,G2,L1,L2,T2,U2. ❪G2,L2❫ ⊢ T2 ⬈*[h] U2 →
-                       ∀T1. ❪G1,L1,T1❫ ⬂⸮[b] ❪G2,L2,T2❫ →
-                       ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈*[h] U1 & ❪G1,L1,U1❫ ⬂⸮[b] ❪G2,L2,U2❫.
-#h #b #G1 #G2 #L1 #L2 #T2 #U2 #H @(cpxs_ind_dx … H) -T2 /2 width=3 by ex2_intro/
+lemma fquq_cpxs_trans (b):
+      ∀G1,G2,L1,L2,T2,U2. ❪G2,L2❫ ⊢ T2 ⬈* U2 →
+      ∀T1. ❪G1,L1,T1❫ ⬂⸮[b] ❪G2,L2,T2❫ →
+      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈* U1 & ❪G1,L1,U1❫ ⬂⸮[b] ❪G2,L2,U2❫.
+#b #G1 #G2 #L1 #L2 #T2 #U2 #H @(cpxs_ind_dx … H) -T2 /2 width=3 by ex2_intro/
 #T #T2 #HT2 #_ #IHTU2 #T1 #HT1 elim (fquq_cpx_trans … HT1 … HT2) -T
 #T #HT1 #HT2 elim (IHTU2 … HT2) -T2 /3 width=3 by cpxs_strap2, ex2_intro/
 qed-.
 
-lemma fqup_cpxs_trans: ∀h,b,G1,G2,L1,L2,T2,U2. ❪G2,L2❫ ⊢ T2 ⬈*[h] U2 →
-                       ∀T1. ❪G1,L1,T1❫ ⬂+[b] ❪G2,L2,T2❫ →
-                       ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈*[h] U1 & ❪G1,L1,U1❫ ⬂+[b] ❪G2,L2,U2❫.
-#h #b #G1 #G2 #L1 #L2 #T2 #U2 #H @(cpxs_ind_dx … H) -T2 /2 width=3 by ex2_intro/
+lemma fqup_cpxs_trans (b):
+      ∀G1,G2,L1,L2,T2,U2. ❪G2,L2❫ ⊢ T2 ⬈* U2 →
+      ∀T1. ❪G1,L1,T1❫ ⬂+[b] ❪G2,L2,T2❫ →
+      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈* U1 & ❪G1,L1,U1❫ ⬂+[b] ❪G2,L2,U2❫.
+#b #G1 #G2 #L1 #L2 #T2 #U2 #H @(cpxs_ind_dx … H) -T2 /2 width=3 by ex2_intro/
 #T #T2 #HT2 #_ #IHTU2 #T1 #HT1 elim (fqup_cpx_trans … HT1 … HT2) -T
 #U1 #HTU1 #H2 elim (IHTU2 … H2) -T2 /3 width=3 by cpxs_strap2, ex2_intro/
 qed-.
 
-lemma fqus_cpxs_trans: ∀h,b,G1,G2,L1,L2,T2,U2. ❪G2,L2❫ ⊢ T2 ⬈*[h] U2 →
-                       ∀T1. ❪G1,L1,T1❫ ⬂*[b] ❪G2,L2,T2❫ →
-                       ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈*[h] U1 & ❪G1,L1,U1❫ ⬂*[b] ❪G2,L2,U2❫.
-#h #b #G1 #G2 #L1 #L2 #T2 #U2 #H @(cpxs_ind_dx … H) -T2 /2 width=3 by ex2_intro/
+lemma fqus_cpxs_trans (b):
+      ∀G1,G2,L1,L2,T2,U2. ❪G2,L2❫ ⊢ T2 ⬈* U2 →
+      ∀T1. ❪G1,L1,T1❫ ⬂*[b] ❪G2,L2,T2❫ →
+      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈* U1 & ❪G1,L1,U1❫ ⬂*[b] ❪G2,L2,U2❫.
+#b #G1 #G2 #L1 #L2 #T2 #U2 #H @(cpxs_ind_dx … H) -T2 /2 width=3 by ex2_intro/
 #T #T2 #HT2 #_ #IHTU2 #T1 #HT1 elim (fqus_cpx_trans … HT1 … HT2) -T
 #U1 #HTU1 #H2 elim (IHTU2 … H2) -T2 /3 width=3 by cpxs_strap2, ex2_intro/
 qed-.
 
 (* Note: a proof based on fqu_cpx_trans_tneqx might exist *)
 (* Basic_2A1: uses: fqu_cpxs_trans_neq *)
-lemma fqu_cpxs_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂[b] ❪G2,L2,T2❫ →
-                            ∀U2. ❪G2,L2❫ ⊢ T2 ⬈*[h] U2 → (T2 ≛ U2 → ⊥) →
-                            ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈*[h] U1 & T1 ≛ U1 → ⊥ & ❪G1,L1,U1❫ ⬂[b] ❪G2,L2,U2❫.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
+lemma fqu_cpxs_trans_tneqx (b):
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂[b] ❪G2,L2,T2❫ →
+      ∀U2. ❪G2,L2❫ ⊢ T2 ⬈* U2 → (T2 ≛ U2 → ⊥) →
+      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈* U1 & T1 ≛ U1 → ⊥ & ❪G1,L1,U1❫ ⬂[b] ❪G2,L2,U2❫.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
 [ #I #G #L #V1 #V2 #HV12 #_ elim (lifts_total V2 𝐔❨1❩)
   #U2 #HVU2 @(ex3_intro … U2)
   [1,3: /3 width=7 by cpxs_delta, fqu_drop/
@@ -88,10 +93,11 @@ lemma fqu_cpxs_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂[b] ❪G
 qed-.
 
 (* Basic_2A1: uses: fquq_cpxs_trans_neq *)
-lemma fquq_cpxs_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂⸮[b] ❪G2,L2,T2❫ →
-                             ∀U2. ❪G2,L2❫ ⊢ T2 ⬈*[h] U2 → (T2 ≛ U2 → ⊥) →
-                             ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈*[h] U1 & T1 ≛ U1 → ⊥ & ❪G1,L1,U1❫ ⬂⸮[b] ❪G2,L2,U2❫.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H12 elim H12 -H12
+lemma fquq_cpxs_trans_tneqx (b):
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂⸮[b] ❪G2,L2,T2❫ →
+      ∀U2. ❪G2,L2❫ ⊢ T2 ⬈* U2 → (T2 ≛ U2 → ⊥) →
+      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈* U1 & T1 ≛ U1 → ⊥ & ❪G1,L1,U1❫ ⬂⸮[b] ❪G2,L2,U2❫.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H12 elim H12 -H12
 [ #H12 #U2 #HTU2 #H elim (fqu_cpxs_trans_tneqx … H12 … HTU2 H) -T2
   /3 width=4 by fqu_fquq, ex3_intro/
 | * #HG #HL #HT destruct /3 width=4 by ex3_intro/
@@ -99,10 +105,11 @@ lemma fquq_cpxs_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂⸮[b]
 qed-.
 
 (* Basic_2A1: uses: fqup_cpxs_trans_neq *)
-lemma fqup_cpxs_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂+[b] ❪G2,L2,T2❫ →
-                             ∀U2. ❪G2,L2❫ ⊢ T2 ⬈*[h] U2 → (T2 ≛ U2 → ⊥) →
-                             ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈*[h] U1 & T1 ≛ U1 → ⊥ & ❪G1,L1,U1❫ ⬂+[b] ❪G2,L2,U2❫.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind_dx … H) -G1 -L1 -T1
+lemma fqup_cpxs_trans_tneqx (b):
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂+[b] ❪G2,L2,T2❫ →
+      ∀U2. ❪G2,L2❫ ⊢ T2 ⬈* U2 → (T2 ≛ U2 → ⊥) →
+      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈* U1 & T1 ≛ U1 → ⊥ & ❪G1,L1,U1❫ ⬂+[b] ❪G2,L2,U2❫.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind_dx … H) -G1 -L1 -T1
 [ #G1 #L1 #T1 #H12 #U2 #HTU2 #H elim (fqu_cpxs_trans_tneqx … H12 … HTU2 H) -T2
   /3 width=4 by fqu_fqup, ex3_intro/
 | #G #G1 #L #L1 #T #T1 #H1 #_ #IH12 #U2 #HTU2 #H elim (IH12 … HTU2 H) -T2
@@ -112,10 +119,11 @@ lemma fqup_cpxs_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂+[b] 
 qed-.
 
 (* Basic_2A1: uses: fqus_cpxs_trans_neq *)
-lemma fqus_cpxs_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂*[b] ❪G2,L2,T2❫ →
-                             ∀U2. ❪G2,L2❫ ⊢ T2 ⬈*[h] U2 → (T2 ≛ U2 → ⊥) →
-                             ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈*[h] U1 & T1 ≛ U1 → ⊥ & ❪G1,L1,U1❫ ⬂*[b] ❪G2,L2,U2❫.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H12 #U2 #HTU2 #H elim (fqus_inv_fqup … H12) -H12
+lemma fqus_cpxs_trans_tneqx (b):
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂*[b] ❪G2,L2,T2❫ →
+      ∀U2. ❪G2,L2❫ ⊢ T2 ⬈* U2 → (T2 ≛ U2 → ⊥) →
+      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈* U1 & T1 ≛ U1 → ⊥ & ❪G1,L1,U1❫ ⬂*[b] ❪G2,L2,U2❫.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H12 #U2 #HTU2 #H elim (fqus_inv_fqup … H12) -H12
 [ #H12 elim (fqup_cpxs_trans_tneqx … H12 … HTU2 H) -T2
   /3 width=4 by fqup_fqus, ex3_intro/
 | * #HG #HL #HT destruct /3 width=4 by ex3_intro/
index 43aee248dc99ffc86d762fff574cc078a3356b13..52957ff1def2f8d4c4f86ab21fbb5402700c2a8a 100644 (file)
@@ -17,14 +17,15 @@ include "basic_2/rt_transition/lpx_fquq.ma".
 include "basic_2/rt_computation/cpxs_drops.ma".
 include "basic_2/rt_computation/cpxs_cpxs.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS *************)
 
-(* Properties with unbound rt-transition for full local environments ********)
+(* Properties with extended rt-transition for full local environments *******)
 
-lemma lpx_cpx_trans: ∀h,G. s_r_transitive … (cpx h G) (λ_.lpx h G).
-#h #G #L2 #T1 #T2 #H @(cpx_ind … H) -G -L2 -T1 -T2
+lemma lpx_cpx_trans (G):
+      s_r_transitive … (cpx G) (λ_.lpx G).
+#G #L2 #T1 #T2 #H @(cpx_ind … H) -G -L2 -T1 -T2
 [ /2 width=3 by/
-| /3 width=2 by cpx_cpxs, cpx_ess/
+| /3 width=2 by cpx_cpxs, cpx_qu/
 | #I #G #K2 #V2 #V4 #W4 #_ #IH #HVW4 #L1 #H
   elim (lpx_inv_pair_dx … H) -H #K1 #V1 #HK12 #HV12 #H destruct
   /4 width=3 by cpxs_delta, cpxs_strap2/
@@ -38,29 +39,33 @@ lemma lpx_cpx_trans: ∀h,G. s_r_transitive … (cpx h G) (λ_.lpx h G).
 ]
 qed-.
 
-lemma lpx_cpxs_trans: ∀h,G. s_rs_transitive … (cpx h G) (λ_.lpx h G).
-#h #G @s_r_trans_CTC1 /2 width=3 by lpx_cpx_trans/ (**) (* full auto fails *)
+lemma lpx_cpxs_trans (G):
+      s_rs_transitive … (cpx G) (λ_.lpx G).
+#G @s_r_trans_CTC1 /2 width=3 by lpx_cpx_trans/ (**) (* full auto fails *)
 qed-.
 
 (* Advanced properties ******************************************************)
 
-lemma cpx_bind2: ∀h,G,L,V1,V2. ❪G,L❫ ⊢ V1 ⬈[h] V2 →
-                 ∀I,T1,T2. ❪G,L.ⓑ[I]V2❫ ⊢ T1 ⬈[h] T2 →
-                 ∀p. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈*[h] ⓑ[p,I]V2.T2.
+lemma cpx_bind2 (G) (L):
+      ∀V1,V2. ❪G,L❫ ⊢ V1 ⬈ V2 →
+      ∀I,T1,T2. ❪G,L.ⓑ[I]V2❫ ⊢ T1 ⬈ T2 →
+      ∀p. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈* ⓑ[p,I]V2.T2.
 /4 width=5 by lpx_cpx_trans, cpxs_bind_dx, lpx_pair/ qed.
 
-lemma cpxs_bind2_dx: ∀h,G,L,V1,V2. ❪G,L❫ ⊢ V1 ⬈[h] V2 →
-                     ∀I,T1,T2. ❪G,L.ⓑ[I]V2❫ ⊢ T1 ⬈*[h] T2 →
-                     ∀p. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈*[h] ⓑ[p,I]V2.T2.
+lemma cpxs_bind2_dx (G) (L):
+      ∀V1,V2. ❪G,L❫ ⊢ V1 ⬈ V2 →
+      ∀I,T1,T2. ❪G,L.ⓑ[I]V2❫ ⊢ T1 ⬈* T2 →
+      ∀p. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈* ⓑ[p,I]V2.T2.
 /4 width=5 by lpx_cpxs_trans, cpxs_bind_dx, lpx_pair/ qed.
 
 (* Properties with plus-iterated structural successor for closures **********)
 
 (* Basic_2A1: uses: lpx_fqup_trans *)
-lemma lpx_fqup_trans: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂+[b] ❪G2,L2,T2❫ →
-                      ∀K1. ❪G1,K1❫ ⊢ ⬈[h] L1 →
-                      ∃∃K2,T. ❪G1,K1❫ ⊢ T1 ⬈*[h] T & ❪G1,K1,T❫ ⬂+[b] ❪G2,K2,T2❫ & ❪G2,K2❫ ⊢ ⬈[h] L2.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind … H) -G2 -L2 -T2
+lemma lpx_fqup_trans (b):
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂+[b] ❪G2,L2,T2❫ →
+      ∀K1. ❪G1,K1❫ ⊢ ⬈ L1 →
+      ∃∃K2,T. ❪G1,K1❫ ⊢ T1 ⬈* T & ❪G1,K1,T❫ ⬂+[b] ❪G2,K2,T2❫ & ❪G2,K2❫ ⊢ ⬈ L2.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind … H) -G2 -L2 -T2
 [ #G2 #L2 #T2 #H12 #K1 #HKL1 elim (lpx_fqu_trans … H12 … HKL1) -L1
   /3 width=5 by cpx_cpxs, fqu_fqup, ex3_2_intro/
 | #G #G2 #L #L2 #T #T2 #_ #H2 #IH1 #K1 #HLK1 elim (IH1 … HLK1) -L1
@@ -73,10 +78,11 @@ qed-.
 (* Properties with star-iterated structural successor for closures **********)
 
 (* Basic_2A1: uses: lpx_fqus_trans *)
-lemma lpx_fqus_trans: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂*[b] ❪G2,L2,T2❫ →
-                      ∀K1. ❪G1,K1❫ ⊢ ⬈[h] L1 →
-                      ∃∃K2,T. ❪G1,K1❫ ⊢ T1 ⬈*[h] T & ❪G1,K1,T❫ ⬂*[b] ❪G2,K2,T2❫ & ❪G2,K2❫ ⊢ ⬈[h] L2.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H #K1 #HKL1 elim (fqus_inv_fqup … H) -H
+lemma lpx_fqus_trans (b):
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂*[b] ❪G2,L2,T2❫ →
+      ∀K1. ❪G1,K1❫ ⊢ ⬈ L1 →
+      ∃∃K2,T. ❪G1,K1❫ ⊢ T1 ⬈* T & ❪G1,K1,T❫ ⬂*[b] ❪G2,K2,T2❫ & ❪G2,K2❫ ⊢ ⬈ L2.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H #K1 #HKL1 elim (fqus_inv_fqup … H) -H
 [ #H12 elim (lpx_fqup_trans … H12 … HKL1) -L1 /3 width=5 by fqup_fqus, ex3_2_intro/
 | * #H1 #H2 #H3 destruct /2 width=5 by ex3_2_intro/
 ]
index a4b533b19f1bd8c5f3b84c9fd141da70e45fda81..173da6adc460ded352ba6a050899911d3f514ce0 100644 (file)
 include "basic_2/rt_transition/cpx_lsubr.ma".
 include "basic_2/rt_computation/cpxs.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS *************)
 
 (* Properties with restricted refinement for local environments *************)
 
-lemma lsubr_cpxs_trans: ∀h,G. lsub_trans … (cpxs h G) lsubr.
+lemma lsubr_cpxs_trans (G): lsub_trans … (cpxs G) lsubr.
 /3 width=5 by lsubr_cpx_trans, CTC_lsub_trans/
 qed-.
index 0e93ddb5bc3d1c5cc21c09de41ec2fb47f55525d..b523f08b8e550c4f0aa264556406a8b49fbfde12 100644 (file)
 include "basic_2/rt_transition/cpx_reqx.ma".
 include "basic_2/rt_computation/cpxs_teqx.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS *************)
 
 (* Properties with sort-irrelevant equivalence for local environments *******)
 
 (* Basic_2A1: was just: lleq_cpxs_trans *)
-lemma reqx_cpxs_trans: ∀h,G,L0,T0,T1. ❪G,L0❫ ⊢ T0 ⬈*[h] T1 →
-                       ∀L2. L2 ≛[T0] L0 →
-                       ∃∃T. ❪G,L2❫ ⊢ T0 ⬈*[h] T & T ≛ T1.
-#h #G #L0 #T0 #T1 #H @(cpxs_ind_dx … H) -T0 /2 width=3 by ex2_intro/
+lemma reqx_cpxs_trans (G):
+      ∀L0,T0,T1. ❪G,L0❫ ⊢ T0 ⬈* T1 → ∀L2. L2 ≛[T0] L0 →
+      ∃∃T. ❪G,L2❫ ⊢ T0 ⬈* T & T ≛ T1.
+#G #L0 #T0 #T1 #H @(cpxs_ind_dx … H) -T0 /2 width=3 by ex2_intro/
 #T0 #T #HT0 #_ #IH #L2 #HL2
 elim (reqx_cpx_trans … HL2 … HT0) #U1 #H1 #H2
 elim (IH L2) -IH /2 width=5 by cpx_reqx_conf_dx/ -L0 #U2 #H3 #H4
@@ -32,18 +32,20 @@ elim (teqx_cpxs_trans … H2 … H3) -T #U0 #H2 #H3
 qed-.
 
 (* Basic_2A1: was just: cpxs_lleq_conf *)
-lemma cpxs_reqx_conf: ∀h,G,L0,T0,T1. ❪G,L0❫ ⊢ T0 ⬈*[h] T1 →
-                      ∀L2. L0 ≛[T0] L2 →
-                      ∃∃T. ❪G,L2❫ ⊢ T0 ⬈*[h] T & T ≛ T1.
+lemma cpxs_reqx_conf (G):
+      ∀L0,T0,T1. ❪G,L0❫ ⊢ T0 ⬈* T1 → ∀L2. L0 ≛[T0] L2 →
+      ∃∃T. ❪G,L2❫ ⊢ T0 ⬈* T & T ≛ T1.
 /3 width=3 by reqx_cpxs_trans, reqx_sym/ qed-.
 
 (* Basic_2A1: was just: cpxs_lleq_conf_dx *)
-lemma cpxs_reqx_conf_dx: ∀h,G,L2,T1,T2. ❪G,L2❫ ⊢ T1 ⬈*[h] T2 →
-                         ∀L1. L1 ≛[T1] L2 → L1 ≛[T2] L2.
-#h #G #L2 #T1 #T2 #H @(cpxs_ind … H) -T2 /3 width=6 by cpx_reqx_conf_dx/
+lemma cpxs_reqx_conf_dx (G):
+      ∀L2,T1,T2. ❪G,L2❫ ⊢ T1 ⬈* T2 →
+      ∀L1. L1 ≛[T1] L2 → L1 ≛[T2] L2.
+#G #L2 #T1 #T2 #H @(cpxs_ind … H) -T2 /3 width=6 by cpx_reqx_conf_dx/
 qed-.
 
 (* Basic_2A1: was just: lleq_conf_sn *)
-lemma cpxs_reqx_conf_sn: ∀h,G,L1,T1,T2. ❪G,L1❫ ⊢ T1 ⬈*[h] T2 →
-                         ∀L2. L1 ≛[T1] L2 → L1 ≛[T2] L2.
+lemma cpxs_reqx_conf_sn (G):
+      ∀L1,T1,T2. ❪G,L1❫ ⊢ T1 ⬈* T2 →
+      ∀L2. L1 ≛[T1] L2 → L1 ≛[T2] L2.
 /4 width=6 by cpxs_reqx_conf_dx, reqx_sym/ qed-.
index b71b21075b1af4f945336d001da1c1f9deffbb6f..276d8c18fff5be187b3559572b37cd97542fdfdd 100644 (file)
@@ -17,24 +17,24 @@ include "basic_2/rt_computation/cpxs_lsubr.ma".
 include "basic_2/rt_computation/cpxs_cnx.ma".
 include "basic_2/rt_computation/lpxs_cpxs.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS *************)
 
 (* Forward lemmas with sort-irrelevant outer equivalence for terms **********)
 
-lemma cpxs_fwd_sort (h) (G) (L):
-      ∀X2,s1. ❪G,L❫ ⊢ ⋆s1 ⬈*[h] X2 → ⋆s1 ⩳ X2.
-#h #G #L #X2 #s1 #H
+lemma cpxs_fwd_sort (G) (L):
+      ∀X2,s1. ❪G,L❫ ⊢ ⋆s1 ⬈* X2 → ⋆s1 ⩳ X2.
+#G #L #X2 #s1 #H
 elim (cpxs_inv_sort1 … H) -H #s2 #H destruct //
 qed-.
 
 (* Note: probably this is an inversion lemma *)
 (* Basic_2A1: was: cpxs_fwd_delta *)
-lemma cpxs_fwd_delta_drops (h) (I) (G) (L) (K):
+lemma cpxs_fwd_delta_drops (I) (G) (L) (K):
       ∀V1,i. ⇩[i] L ≘ K.ⓑ[I]V1 →
       ∀V2. ⇧[↑i] V1 ≘ V2 →
-      ∀X2. ❪G,L❫ ⊢ #i ⬈*[h] X2 →
-      ∨∨ #i ⩳ X2 | ❪G,L❫ ⊢ V2 ⬈*[h] X2.
-#h #I #G #L #K #V1 #i #HLK #V2 #HV12 #X2 #H
+      ∀X2. ❪G,L❫ ⊢ #i ⬈* X2 →
+      ∨∨ #i ⩳ X2 | ❪G,L❫ ⊢ V2 ⬈* X2.
+#I #G #L #K #V1 #i #HLK #V2 #HV12 #X2 #H
 elim (cpxs_inv_lref1_drops … H) -H /2 width=1 by or_introl/
 * #I0 #K0 #V0 #U0 #HLK0 #HVU0 #HU0
 lapply (drops_mono … HLK0 … HLK) -HLK0 #H destruct
@@ -42,10 +42,10 @@ lapply (drops_mono … HLK0 … HLK) -HLK0 #H destruct
 qed-.
 
 (* Basic_1: was just: pr3_iso_beta *)
-lemma cpxs_fwd_beta (h) (p) (G) (L):
-      ∀V,W,T,X2. ❪G,L❫ ⊢ ⓐV.ⓛ[p]W.T ⬈*[h] X2 →
-      ∨∨ ⓐV.ⓛ[p]W.T ⩳ X2 | ❪G,L❫ ⊢ ⓓ[p]ⓝW.V.T ⬈*[h] X2.
-#h #p #G #L #V #W #T #X2 #H elim (cpxs_inv_appl1 … H) -H *
+lemma cpxs_fwd_beta (p) (G) (L):
+      ∀V,W,T,X2. ❪G,L❫ ⊢ ⓐV.ⓛ[p]W.T ⬈* X2 →
+      ∨∨ ⓐV.ⓛ[p]W.T ⩳ X2 | ❪G,L❫ ⊢ ⓓ[p]ⓝW.V.T ⬈* X2.
+#p #G #L #V #W #T #X2 #H elim (cpxs_inv_appl1 … H) -H *
 [ #V0 #T0 #_ #_ #H destruct /2 width=1 by teqo_pair, or_introl/
 | #b #W0 #T0 #HT0 #HU
   elim (cpxs_inv_abst1 … HT0) -HT0 #W1 #T1 #HW1 #HT1 #H destruct
@@ -56,11 +56,11 @@ lemma cpxs_fwd_beta (h) (p) (G) (L):
 ]
 qed-.
 
-lemma cpxs_fwd_theta (h) (p) (G) (L):
-           ∀V1,V,T,X2. ❪G,L❫ ⊢ ⓐV1.ⓓ[p]V.T ⬈*[h] X2 →
+lemma cpxs_fwd_theta (p) (G) (L):
+           ∀V1,V,T,X2. ❪G,L❫ ⊢ ⓐV1.ⓓ[p]V.T ⬈* X2 →
            ∀V2. ⇧[1] V1 ≘ V2 →
-           ∨∨ ⓐV1.ⓓ[p]V.T ⩳ X2 | ❪G,L❫ ⊢ ⓓ[p]V.ⓐV2.T ⬈*[h] X2.
-#h #p #G #L #V1 #V #T #X2 #H #V2 #HV12
+           ∨∨ ⓐV1.ⓓ[p]V.T ⩳ X2 | ❪G,L❫ ⊢ ⓓ[p]V.ⓐV2.T ⬈* X2.
+#p #G #L #V1 #V #T #X2 #H #V2 #HV12
 elim (cpxs_inv_appl1 … H) -H *
 [ -HV12 #V0 #T0 #_ #_ #H destruct /2 width=1 by teqo_pair, or_introl/
 | #q #W #T0 #HT0 #HU
@@ -88,15 +88,15 @@ elim (cpxs_inv_appl1 … H) -H *
 ]
 qed-.
 
-lemma cpxs_fwd_cast (h) (G) (L):
-      ∀W,T,X2. ❪G,L❫ ⊢ ⓝW.T ⬈*[h] X2 →
-      ∨∨ ⓝW. T ⩳ X2 | ❪G,L❫ ⊢ T ⬈*[h] X2 | ❪G,L❫ ⊢ W ⬈*[h] X2.
-#h #G #L #W #T #X2 #H
+lemma cpxs_fwd_cast (G) (L):
+      ∀W,T,X2. ❪G,L❫ ⊢ ⓝW.T ⬈* X2 →
+      ∨∨ ⓝW. T ⩳ X2 | ❪G,L❫ ⊢ T ⬈* X2 | ❪G,L❫ ⊢ W ⬈* X2.
+#G #L #W #T #X2 #H
 elim (cpxs_inv_cast1 … H) -H /2 width=1 by or3_intro1, or3_intro2/ *
 #W0 #T0 #_ #_ #H destruct /2 width=1 by teqo_pair, or3_intro0/
 qed-.
 
-lemma cpxs_fwd_cnx (h) (G) (L):
-      ∀T1. ❪G,L❫ ⊢ ⬈𝐍[h] T1 →
-      ∀X2. ❪G,L❫ ⊢ T1 ⬈*[h] X2 → T1 ⩳ X2.
+lemma cpxs_fwd_cnx (G) (L):
+      ∀T1. ❪G,L❫ ⊢ ⬈𝐍 T1 →
+      ∀X2. ❪G,L❫ ⊢ T1 ⬈* X2 → T1 ⩳ X2.
 /3 width=5 by cpxs_inv_cnx1, teqx_teqo/ qed-.
index 96e1fbb615152f2a5165460b9c460919ef5a46f8..5bc7ef7800e37f8d24f2a0ec2572f4ed8d775df1 100644 (file)
@@ -16,13 +16,13 @@ include "static_2/syntax/teqo_simple_vector.ma".
 include "static_2/relocation/lifts_vector.ma".
 include "basic_2/rt_computation/cpxs_teqo.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS *************)
 
 (* Vector form of forward lemmas with outer equivalence for terms ***********)
 
-lemma cpxs_fwd_sort_vector (h) (G) (L):
-      ∀s,Vs,X2. ❪G,L❫ ⊢ ⒶVs.⋆s ⬈*[h] X2 → ⒶVs.⋆s ⩳ X2.
-#h #G #L #s #Vs elim Vs -Vs /2 width=4 by cpxs_fwd_sort/
+lemma cpxs_fwd_sort_vector (G) (L):
+      ∀s,Vs,X2. ❪G,L❫ ⊢ ⒶVs.⋆s ⬈* X2 → ⒶVs.⋆s ⩳ X2.
+#G #L #s #Vs elim Vs -Vs /2 width=4 by cpxs_fwd_sort/
 #V #Vs #IHVs #X2 #H
 elim (cpxs_inv_appl1 … H) -H *
 [ -IHVs #V1 #T1 #_ #_ #H destruct /2 width=1 by teqo_pair/
@@ -36,12 +36,12 @@ elim (cpxs_inv_appl1 … H) -H *
 qed-.
 
 (* Basic_2A1: was: cpxs_fwd_delta_vector *)
-lemma cpxs_fwd_delta_drops_vector (h) (I) (G) (L) (K):
+lemma cpxs_fwd_delta_drops_vector (I) (G) (L) (K):
       ∀V1,i. ⇩[i] L ≘ K.ⓑ[I]V1 →
       ∀V2. ⇧[↑i] V1 ≘ V2 →
-      ∀Vs,X2. ❪G,L❫ ⊢ ⒶVs.#i ⬈*[h] X2 →
-      ∨∨ ⒶVs.#i ⩳ X2 | ❪G,L❫ ⊢ ⒶVs.V2 ⬈*[h] X2.
-#h #I #G #L #K #V1 #i #HLK #V2 #HV12 #Vs
+      ∀Vs,X2. ❪G,L❫ ⊢ ⒶVs.#i ⬈* X2 →
+      ∨∨ ⒶVs.#i ⩳ X2 | ❪G,L❫ ⊢ ⒶVs.V2 ⬈* X2.
+#I #G #L #K #V1 #i #HLK #V2 #HV12 #Vs
 elim Vs -Vs /2 width=5 by cpxs_fwd_delta_drops/
 #V #Vs #IHVs #X2 #H -K -V1
 elim (cpxs_inv_appl1 … H) -H *
@@ -64,10 +64,10 @@ elim (cpxs_inv_appl1 … H) -H *
 qed-.
 
 (* Basic_1: was just: pr3_iso_appls_beta *)
-lemma cpxs_fwd_beta_vector (h) (p) (G) (L):
-      ∀Vs,V,W,T,X2. ❪G,L❫ ⊢ ⒶVs.ⓐV.ⓛ[p]W.T ⬈*[h] X2 →
-      ∨∨ ⒶVs.ⓐV.ⓛ[p]W. T ⩳ X2 | ❪G,L❫ ⊢ ⒶVs.ⓓ[p]ⓝW.V.T ⬈*[h] X2.
-#h #p #G #L #Vs elim Vs -Vs /2 width=1 by cpxs_fwd_beta/
+lemma cpxs_fwd_beta_vector (p) (G) (L):
+      ∀Vs,V,W,T,X2. ❪G,L❫ ⊢ ⒶVs.ⓐV.ⓛ[p]W.T ⬈* X2 →
+      ∨∨ ⒶVs.ⓐV.ⓛ[p]W. T ⩳ X2 | ❪G,L❫ ⊢ ⒶVs.ⓓ[p]ⓝW.V.T ⬈* X2.
+#p #G #L #Vs elim Vs -Vs /2 width=1 by cpxs_fwd_beta/
 #V0 #Vs #IHVs #V #W #T #X2 #H
 elim (cpxs_inv_appl1 … H) -H *
 [ -IHVs #V1 #T1 #_ #_ #H destruct /2 width=1 by teqo_pair, or_introl/
@@ -89,11 +89,11 @@ elim (cpxs_inv_appl1 … H) -H *
 qed-.
 
 (* Basic_1: was just: pr3_iso_appls_abbr *)
-lemma cpxs_fwd_theta_vector (h) (G) (L):
+lemma cpxs_fwd_theta_vector (G) (L):
       ∀V1b,V2b. ⇧[1] V1b ≘ V2b →
-      ∀p,V,T,X2. ❪G,L❫ ⊢ ⒶV1b.ⓓ[p]V.T ⬈*[h] X2 →
-      ∨∨ ⒶV1b.ⓓ[p]V.T ⩳ X2 | ❪G,L❫ ⊢ ⓓ[p]V.ⒶV2b.T ⬈*[h] X2.
-#h #G #L #V1b #V2b * -V1b -V2b /3 width=1 by or_intror/
+      ∀p,V,T,X2. ❪G,L❫ ⊢ ⒶV1b.ⓓ[p]V.T ⬈* X2 →
+      ∨∨ ⒶV1b.ⓓ[p]V.T ⩳ X2 | ❪G,L❫ ⊢ ⓓ[p]V.ⒶV2b.T ⬈* X2.
+#G #L #V1b #V2b * -V1b -V2b /3 width=1 by or_intror/
 #V1b #V2b #V1a #V2a #HV12a #HV12b #p
 generalize in match HV12a; -HV12a
 generalize in match V2a; -V2a
@@ -139,12 +139,12 @@ elim (cpxs_inv_appl1 … H) -H *
 qed-.
 
 (* Basic_1: was just: pr3_iso_appls_cast *)
-lemma cpxs_fwd_cast_vector (h) (G) (L):
-      ∀Vs,W,T,X2. ❪G,L❫ ⊢ ⒶVs.ⓝW.T ⬈*[h] X2 →
+lemma cpxs_fwd_cast_vector (G) (L):
+      ∀Vs,W,T,X2. ❪G,L❫ ⊢ ⒶVs.ⓝW.T ⬈* X2 →
       ∨∨ ⒶVs. ⓝW. T ⩳ X2
-       | ❪G,L❫ ⊢ ⒶVs.T ⬈*[h] X2
-       | ❪G,L❫ ⊢ ⒶVs.W ⬈*[h] X2.
-#h #G #L #Vs elim Vs -Vs /2 width=1 by cpxs_fwd_cast/
+       | ❪G,L❫ ⊢ ⒶVs.T ⬈* X2
+       | ❪G,L❫ ⊢ ⒶVs.W ⬈* X2.
+#G #L #Vs elim Vs -Vs /2 width=1 by cpxs_fwd_cast/
 #V #Vs #IHVs #W #T #X2 #H
 elim (cpxs_inv_appl1 … H) -H *
 [ -IHVs #V0 #T0 #_ #_ #H destruct /2 width=1 by teqo_pair, or3_intro0/
@@ -171,10 +171,10 @@ elim (cpxs_inv_appl1 … H) -H *
 qed-.
 
 (* Basic_1: was just: nf2_iso_appls_lref *)
-lemma cpxs_fwd_cnx_vector (h) (G) (L):
-      ∀T. 𝐒❪T❫ → ❪G,L❫ ⊢ ⬈𝐍[h] T →
-      ∀Vs,X2. ❪G,L❫ ⊢ ⒶVs.T ⬈*[h] X2 → ⒶVs.T ⩳ X2.
-#h #G #L #T #H1T #H2T #Vs elim Vs -Vs [ @(cpxs_fwd_cnx … H2T) ] (**) (* /2 width=3 by cpxs_fwd_cnx/ does not work *)
+lemma cpxs_fwd_cnx_vector (G) (L):
+      ∀T. 𝐒❪T❫ → ❪G,L❫ ⊢ ⬈𝐍 T →
+      ∀Vs,X2. ❪G,L❫ ⊢ ⒶVs.T ⬈* X2 → ⒶVs.T ⩳ X2.
+#G #L #T #H1T #H2T #Vs elim Vs -Vs [ @(cpxs_fwd_cnx … H2T) ] (**) (* /2 width=3 by cpxs_fwd_cnx/ does not work *)
 #V #Vs #IHVs #X2 #H
 elim (cpxs_inv_appl1 … H) -H *
 [ -IHVs #V0 #T0 #_ #_ #H destruct /2 width=1 by teqo_pair/
index 5ccc22d538ef330bbebfa0e6d6d44b600395ab08..f3164e75e2513cead646a37021d3f035d74c3d9f 100644 (file)
 include "basic_2/rt_transition/rpx_reqx.ma".
 include "basic_2/rt_computation/cpxs.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS *************)
 
 (* Properties with sort-irrelevant equivalence for terms ********************)
 
-lemma teqx_cpxs_trans: ∀h,U1,T1. U1 ≛ T1 → ∀G,L,T2. ❪G,L❫ ⊢ T1 ⬈*[h] T2 →
-                       ∃∃U2. ❪G,L❫ ⊢ U1 ⬈*[h] U2 & U2 ≛ T2.
-#h #U1 #T1 #HUT1 #G #L #T2 #HT12 @(cpxs_ind … HT12) -T2 /2 width=3 by ex2_intro/
+lemma teqx_cpxs_trans (G) (L):
+      ∀U1,T1. U1 ≛ T1 → ∀T2. ❪G,L❫ ⊢ T1 ⬈* T2 →
+      ∃∃U2. ❪G,L❫ ⊢ U1 ⬈* U2 & U2 ≛ T2.
+#G #L #U1 #T1 #HUT1 #T2 #HT12 @(cpxs_ind … HT12) -T2 /2 width=3 by ex2_intro/
 #T #T2 #_ #HT2 * #U #HU1 #HUT elim (teqx_cpx_trans … HUT … HT2) -T -T1
 /3 width=3 by ex2_intro, cpxs_strap1/
 qed-.
 
 (* Note: this requires teqx to be symmetric *)
 (* Nasic_2A1: uses: cpxs_neq_inv_step_sn *)
-lemma cpxs_tneqx_fwd_step_sn: ∀h,G,L,T1,T2. ❪G,L❫ ⊢ T1 ⬈*[h] T2 → (T1 ≛ T2 → ⊥) →
-                              ∃∃T,T0. ❪G,L❫ ⊢ T1 ⬈[h] T & T1 ≛ T → ⊥ & ❪G,L❫ ⊢ T ⬈*[h] T0 & T0 ≛ T2.
-#h #G #L #T1 #T2 #H @(cpxs_ind_dx … H) -T1
+lemma cpxs_tneqx_fwd_step_sn (G) (L):
+      ∀T1,T2. ❪G,L❫ ⊢ T1 ⬈* T2 → (T1 ≛ T2 → ⊥) →
+      ∃∃T,T0. ❪G,L❫ ⊢ T1 ⬈ T & T1 ≛ T → ⊥ & ❪G,L❫ ⊢ T ⬈* T0 & T0 ≛ T2.
+#G #L #T1 #T2 #H @(cpxs_ind_dx … H) -T1
 [ #H elim H -H //
 | #T1 #T0 #HT10 #HT02 #IH #Hn12
   elim (teqx_dec T1 T0) [ -HT10 -HT02 #H10 | -IH #Hn10 ]
index 31f2e017a2ace0bb5c3cf792a1805440203f8b68..13db8d1f3a1c9f74e48deedad6e9d6f73ea2091f 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/predtystrong_4.ma".
+include "basic_2/notation/relations/predtystrong_3.ma".
 include "static_2/syntax/teqx.ma".
 include "basic_2/rt_transition/cpx.ma".
 
-(* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
+(* STRONGLY NORMALIZING TERMS FOR EXTENDED PARALLEL RT-TRANSITION ***********)
 
-definition csx (h) (G) (L): predicate term ≝
-           SN … (cpx G L) teqx.
+definition csx (G) (L): predicate term ≝
+           SN … (cpx G L) teqx.
 
 interpretation
-  "strong normalization for unbound context-sensitive parallel rt-transition (term)"
-  'PRedTyStrong h G L T = (csx h G L T).
+  "strong normalization for extended context-sensitive parallel rt-transition (term)"
+  'PRedTyStrong G L T = (csx G L T).
 
 (* Basic eliminators ********************************************************)
 
-lemma csx_ind (h) (G) (L) (Q:predicate …):
-      (∀T1. ❪G,L❫ ⊢ ⬈*𝐒[h] T1 →
-        (∀T2. ❪G,L❫ ⊢ T1 ⬈[h] T2 → (T1 ≛ T2 → ⊥) → Q T2) →
+lemma csx_ind (G) (L) (Q:predicate …):
+      (∀T1. ❪G,L❫ ⊢ ⬈*𝐒 T1 →
+        (∀T2. ❪G,L❫ ⊢ T1 ⬈ T2 → (T1 ≛ T2 → ⊥) → Q T2) →
         Q T1
       ) →
-      ∀T. ❪G,L❫ ⊢ ⬈*𝐒[h] T →  Q T.
-#h #G #L #Q #H0 #T1 #H elim H -T1
+      ∀T. ❪G,L❫ ⊢ ⬈*𝐒 T →  Q T.
+#G #L #Q #H0 #T1 #H elim H -T1
 /5 width=1 by SN_intro/
 qed-.
 
 (* Basic properties *********************************************************)
 
 (* Basic_1: was just: sn3_pr2_intro *)
-lemma csx_intro (h) (G) (L):
-      ∀T1. (∀T2. ❪G,L❫ ⊢ T1 ⬈[h] T2 → (T1 ≛ T2 → ⊥) → ❪G,L❫ ⊢ ⬈*𝐒[h] T2) →
-      ❪G,L❫ ⊢ ⬈*𝐒[h] T1.
+lemma csx_intro (G) (L):
+      ∀T1. (∀T2. ❪G,L❫ ⊢ T1 ⬈ T2 → (T1 ≛ T2 → ⊥) → ❪G,L❫ ⊢ ⬈*𝐒 T2) →
+      ❪G,L❫ ⊢ ⬈*𝐒 T1.
 /4 width=1 by SN_intro/ qed.
 
 (* Basic forward lemmas *****************************************************)
 
-fact csx_fwd_pair_sn_aux (h) (G) (L):
-     ∀U. ❪G,L❫ ⊢ ⬈*𝐒[h] U →
-     ∀I,V,T. U = ②[I]V.T → ❪G,L❫ ⊢ ⬈*𝐒[h] V.
-#h #G #L #U #H elim H -H #U0 #_ #IH #I #V #T #H destruct
+fact csx_fwd_pair_sn_aux (G) (L):
+     ∀U. ❪G,L❫ ⊢ ⬈*𝐒 U →
+     ∀I,V,T. U = ②[I]V.T → ❪G,L❫ ⊢ ⬈*𝐒 V.
+#G #L #U #H elim H -H #U0 #_ #IH #I #V #T #H destruct
 @csx_intro #V2 #HLV2 #HV2
-@(IH (②[I]V2.T)) -IH /2 width=3 by cpx_pair_sn/ -HLV2
-#H elim (teqx_inv_pair … H) -H /2 width=1 by/
+@(IH (②[I]V2.T)) -IH /2 width=3 by cpx_pair_sn/ -HLV2 #H
+elim (teqx_inv_pair … H) -H /2 width=1 by/
 qed-.
 
 (* Basic_1: was just: sn3_gen_head *)
-lemma csx_fwd_pair_sn (h) (G) (L):
-      ∀I,V,T. ❪G,L❫ ⊢ ⬈*𝐒[h] ②[I]V.T → ❪G,L❫ ⊢ ⬈*𝐒[h] V.
+lemma csx_fwd_pair_sn (G) (L):
+      ∀I,V,T. ❪G,L❫ ⊢ ⬈*𝐒 ②[I]V.T → ❪G,L❫ ⊢ ⬈*𝐒 V.
 /2 width=5 by csx_fwd_pair_sn_aux/ qed-.
 
-fact csx_fwd_bind_dx_aux (h) (G) (L):
-     ∀U. ❪G,L❫ ⊢ ⬈*𝐒[h] U →
-     ∀p,I,V,T. U = ⓑ[p,I]V.T → ❪G,L.ⓑ[I]V❫ ⊢ ⬈*𝐒[h] T.
-#h #G #L #U #H elim H -H #U0 #_ #IH #p #I #V #T #H destruct
+fact csx_fwd_bind_dx_aux (G) (L):
+     ∀U. ❪G,L❫ ⊢ ⬈*𝐒 U →
+     ∀p,I,V,T. U = ⓑ[p,I]V.T → ❪G,L.ⓑ[I]V❫ ⊢ ⬈*𝐒 T.
+#G #L #U #H elim H -H #U0 #_ #IH #p #I #V #T #H destruct
 @csx_intro #T2 #HLT2 #HT2
-@(IH (ⓑ[p, I]V.T2)) -IH /2 width=3 by cpx_bind/ -HLT2
-#H elim (teqx_inv_pair … H) -H /2 width=1 by/
+@(IH (ⓑ[p, I]V.T2)) -IH /2 width=3 by cpx_bind/ -HLT2 #H
+elim (teqx_inv_pair … H) -H /2 width=1 by/
 qed-.
 
 (* Basic_1: was just: sn3_gen_bind *)
-lemma csx_fwd_bind_dx (h) (G) (L):
-      ∀p,I,V,T. ❪G,L❫ ⊢ ⬈*𝐒[h] ⓑ[p,I]V.T → ❪G,L.ⓑ[I]V❫ ⊢ ⬈*𝐒[h] T.
+lemma csx_fwd_bind_dx (G) (L):
+      ∀p,I,V,T. ❪G,L❫ ⊢ ⬈*𝐒 ⓑ[p,I]V.T → ❪G,L.ⓑ[I]V❫ ⊢ ⬈*𝐒 T.
 /2 width=4 by csx_fwd_bind_dx_aux/ qed-.
 
-fact csx_fwd_flat_dx_aux (h) (G) (L):
-     ∀U. ❪G,L❫ ⊢ ⬈*𝐒[h] U →
-     ∀I,V,T. U = ⓕ[I]V.T → ❪G,L❫ ⊢ ⬈*𝐒[h] T.
-#h #G #L #U #H elim H -H #U0 #_ #IH #I #V #T #H destruct
+fact csx_fwd_flat_dx_aux (G) (L):
+     ∀U. ❪G,L❫ ⊢ ⬈*𝐒 U →
+     ∀I,V,T. U = ⓕ[I]V.T → ❪G,L❫ ⊢ ⬈*𝐒 T.
+#G #L #U #H elim H -H #U0 #_ #IH #I #V #T #H destruct
 @csx_intro #T2 #HLT2 #HT2
-@(IH (ⓕ[I]V.T2)) -IH /2 width=3 by cpx_flat/ -HLT2
-#H elim (teqx_inv_pair … H) -H /2 width=1 by/
+@(IH (ⓕ[I]V.T2)) -IH /2 width=3 by cpx_flat/ -HLT2 #H
+elim (teqx_inv_pair … H) -H /2 width=1 by/
 qed-.
 
 (* Basic_1: was just: sn3_gen_flat *)
-lemma csx_fwd_flat_dx (h) (G) (L):
-      ∀I,V,T. ❪G,L❫ ⊢ ⬈*𝐒[h] ⓕ[I]V.T → ❪G,L❫ ⊢ ⬈*𝐒[h] T.
+lemma csx_fwd_flat_dx (G) (L):
+      ∀I,V,T. ❪G,L❫ ⊢ ⬈*𝐒 ⓕ[I]V.T → ❪G,L❫ ⊢ ⬈*𝐒 T.
 /2 width=5 by csx_fwd_flat_dx_aux/ qed-.
 
-lemma csx_fwd_bind (h) (G) (L):
-      ∀p,I,V,T. ❪G,L❫ ⊢ ⬈*𝐒[h] ⓑ[p,I]V.T →
-      ∧∧ ❪G,L❫ ⊢ ⬈*𝐒[h] V & ❪G,L.ⓑ[I]V❫ ⊢ ⬈*𝐒[h] T.
+lemma csx_fwd_bind (G) (L):
+      ∀p,I,V,T. ❪G,L❫ ⊢ ⬈*𝐒 ⓑ[p,I]V.T →
+      ∧∧ ❪G,L❫ ⊢ ⬈*𝐒 V & ❪G,L.ⓑ[I]V❫ ⊢ ⬈*𝐒 T.
 /3 width=3 by csx_fwd_pair_sn, csx_fwd_bind_dx, conj/ qed-.
 
-lemma csx_fwd_flat (h) (G) (L):
-      ∀I,V,T. ❪G,L❫ ⊢ ⬈*𝐒[h] ⓕ[I]V.T →
-      ∧∧ ❪G,L❫ ⊢ ⬈*𝐒[h] V & ❪G,L❫ ⊢ ⬈*𝐒[h] T.
+lemma csx_fwd_flat (G) (L):
+      ∀I,V,T. ❪G,L❫ ⊢ ⬈*𝐒 ⓕ[I]V.T →
+      ∧∧ ❪G,L❫ ⊢ ⬈*𝐒 V & ❪G,L❫ ⊢ ⬈*𝐒 T.
 /3 width=3 by csx_fwd_pair_sn, csx_fwd_flat_dx, conj/ qed-.
 
 (* Basic_1: removed theorems 14:
index 2f2544ad847e87e9a78c605e7b2be8f3b0a8ebcb..3e1beaa7b19c9b7c84d630ace31b8d7455be154e 100644 (file)
@@ -17,49 +17,49 @@ include "basic_2/rt_computation/cpxs_aaa.ma".
 include "basic_2/rt_computation/csx_gcp.ma".
 include "basic_2/rt_computation/csx_gcr.ma".
 
-(* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
+(* STRONGLY NORMALIZING TERMS FOR EXTENDED PARALLEL RT-TRANSITION ***********)
 
 (* Main properties with atomic arity assignment *****************************)
 
-theorem aaa_csx (h) (G) (L):
-        ∀T,A. ❪G,L❫ ⊢ T ⁝ A → ❪G,L❫ ⊢ ⬈*𝐒[h] T.
-#h #G #L #T #A #H
-@(gcr_aaa … (csx_gcp h) (csx_gcr h) … H)
+theorem aaa_csx (G) (L):
+        ∀T,A. ❪G,L❫ ⊢ T ⁝ A → ❪G,L❫ ⊢ ⬈*𝐒 T.
+#G #L #T #A #H
+@(gcr_aaa … csx_gcp csx_gcr … H)
 qed.
 
 (* Advanced eliminators *****************************************************)
 
-fact aaa_ind_csx_aux (h) (G) (L):
-     ∀A. ∀Q:predicate term.
+fact aaa_ind_csx_aux (G) (L):
+     ∀A. ∀Q:predicate .
      (∀T1. ❪G,L❫ ⊢ T1 ⁝ A →
-       (∀T2. ❪G,L❫ ⊢ T1 ⬈[h] T2 → (T1 ≛ T2 → ⊥) → Q T2) → Q T1
+       (∀T2. ❪G,L❫ ⊢ T1 ⬈ T2 → (T1 ≛ T2 → ⊥) → Q T2) → Q T1
      ) →
-     ∀T. ❪G,L❫ ⊢ ⬈*𝐒[h] T → ❪G,L❫ ⊢ T ⁝ A →  Q T.
-#h #G #L #A #Q #IH #T #H @(csx_ind … H) -T /4 width=5 by cpx_aaa_conf/
+     ∀T. ❪G,L❫ ⊢ ⬈*𝐒 T → ❪G,L❫ ⊢ T ⁝ A →  Q T.
+#G #L #A #Q #IH #T #H @(csx_ind … H) -T /4 width=5 by cpx_aaa_conf/
 qed-.
 
-lemma aaa_ind_csx (h) (G) (L):
-      ∀A. ∀Q:predicate term.
+lemma aaa_ind_csx (G) (L):
+      ∀A. ∀Q:predicate .
       (∀T1. ❪G,L❫ ⊢ T1 ⁝ A →
-        (∀T2. ❪G,L❫ ⊢ T1 ⬈[h] T2 → (T1 ≛ T2 → ⊥) → Q T2) → Q T1
+        (∀T2. ❪G,L❫ ⊢ T1 ⬈ T2 → (T1 ≛ T2 → ⊥) → Q T2) → Q T1
       ) →
       ∀T. ❪G,L❫ ⊢ T ⁝ A → Q T.
 /5 width=9 by aaa_ind_csx_aux, aaa_csx/ qed-.
 
-fact aaa_ind_csx_cpxs_aux (h) (G) (L):
-     ∀A. ∀Q:predicate term.
+fact aaa_ind_csx_cpxs_aux (G) (L):
+     ∀A. ∀Q:predicate .
      (∀T1. ❪G,L❫ ⊢ T1 ⁝ A →
-       (∀T2. ❪G,L❫ ⊢ T1 ⬈*[h] T2 → (T1 ≛ T2 → ⊥) → Q T2) → Q T1
+       (∀T2. ❪G,L❫ ⊢ T1 ⬈* T2 → (T1 ≛ T2 → ⊥) → Q T2) → Q T1
      ) →
-     ∀T. ❪G,L❫ ⊢ ⬈*𝐒[h] T → ❪G,L❫ ⊢ T ⁝ A →  Q T.
-#h #G #L #A #Q #IH #T #H @(csx_ind_cpxs … H) -T /4 width=5 by cpxs_aaa_conf/
+     ∀T. ❪G,L❫ ⊢ ⬈*𝐒 T → ❪G,L❫ ⊢ T ⁝ A →  Q T.
+#G #L #A #Q #IH #T #H @(csx_ind_cpxs … H) -T /4 width=5 by cpxs_aaa_conf/
 qed-.
 
 (* Basic_2A1: was: aaa_ind_csx_alt *)
-lemma aaa_ind_csx_cpxs (h) (G) (L):
-      ∀A. ∀Q:predicate term.
+lemma aaa_ind_csx_cpxs (G) (L):
+      ∀A. ∀Q:predicate .
       (∀T1. ❪G,L❫ ⊢ T1 ⁝ A →
-        (∀T2. ❪G,L❫ ⊢ T1 ⬈*[h] T2 → (T1 ≛ T2 → ⊥) → Q T2) → Q T1
+        (∀T2. ❪G,L❫ ⊢ T1 ⬈* T2 → (T1 ≛ T2 → ⊥) → Q T2) → Q T1
       ) →
-     ∀T. ❪G,L❫ ⊢ T ⁝ A → Q T.
+      ∀T. ❪G,L❫ ⊢ T ⁝ A → Q T.
 /5 width=9 by aaa_ind_csx_cpxs_aux, aaa_csx/ qed-.
index feee761c6e9a1ee4d04b4daf0bd9fd1993ef5028..dfb86156af00378d79ae74ce1a266575aee9558f 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-(* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
-
 include "basic_2/rt_transition/cnx.ma".
 include "basic_2/rt_computation/csx.ma".
 
-(* Properties with normal terms for unbound parallel rt-transition **********)
+(* STRONGLY NORMALIZING TERMS FOR EXTENDED PARALLEL RT-TRANSITION ***********)
+
+(* Properties with normal terms for extended parallel rt-transition *********)
 
 (* Basic_1: was just: sn3_nf2 *)
-lemma cnx_csx (h) (G) (L):
-      ∀T. ❪G,L❫ ⊢ ⬈𝐍[h] T → ❪G,L❫ ⊢ ⬈*𝐒[h] T.
+lemma cnx_csx (G) (L):
+      ∀T. ❪G,L❫ ⊢ ⬈𝐍 T → ❪G,L❫ ⊢ ⬈*𝐒 T.
 /2 width=1 by NF_to_SN/ qed.
 
 (* Advanced properties ******************************************************)
 
-lemma csx_sort (h) (G) (L):
-      ∀s. ❪G,L❫ ⊢ ⬈*𝐒[h] ⋆s.
+lemma csx_sort (G) (L):
+      ∀s. ❪G,L❫ ⊢ ⬈*𝐒 ⋆s.
 /3 width=4 by cnx_csx, cnx_sort/ qed.
index a1f65935581d5ee559bf3e36a8eb76f83ed03f8f..6110714a1d11908f9ac99f03d24ceb29077ff142 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-(* STRONGLY NORMALIZING TERM VECTORS FOR UNBOUND PARALLEL RT-TRANSITION *****)
-
 include "basic_2/rt_computation/cpxs_teqo_vector.ma".
 include "basic_2/rt_computation/csx_simple_teqo.ma".
 include "basic_2/rt_computation/csx_cnx.ma".
 include "basic_2/rt_computation/csx_cpxs.ma".
 include "basic_2/rt_computation/csx_vector.ma".
 
-(* Properties with normal terms for unbound parallel rt-transition **********)
+(* STRONGLY NORMALIZING TERM VECTORS FOR EXTENDED PARALLEL RT-TRANSITION ****)
+
+(* Properties with normal terms for extended parallel rt-transition *********)
 
 (* Basic_1: was just: sn3_appls_lref *)
-lemma csx_applv_cnx (h) (G) (L):
-      ∀T. 𝐒❪T❫ → ❪G,L❫ ⊢ ⬈𝐍[h] T →
-      ∀Vs. ❪G,L❫ ⊢ ⬈*𝐒[h] Vs → ❪G,L❫ ⊢ ⬈*𝐒[h] ⒶVs.T.
-#h #G #L #T #H1T #H2T #Vs elim Vs -Vs
-[ #_ normalize in ⊢ (????%); /2 width=1 by cnx_csx/
+lemma csx_applv_cnx (G) (L):
+      ∀T. 𝐒❪T❫ → ❪G,L❫ ⊢ ⬈𝐍 T →
+      ∀Vs. ❪G,L❫ ⊢ ⬈*𝐒 Vs → ❪G,L❫ ⊢ ⬈*𝐒 ⒶVs.T.
+#G #L #T #H1T #H2T #Vs elim Vs -Vs
+[ #_ normalize in ⊢ (???%); /2 width=1 by cnx_csx/
 | #V #Vs #IHV #H
   elim (csxv_inv_cons … H) -H #HV #HVs
   @csx_appl_simple_teqo /2 width=1 by applv_simple/ -IHV -HV -HVs
@@ -40,6 +40,6 @@ qed.
 (* Advanced properties ******************************************************)
 
 (* Note: strong normalization does not depend on this any more *)
-lemma csx_applv_sort (h) (G) (L):
-      ∀s,Vs. ❪G,L❫ ⊢ ⬈*𝐒[h] Vs → ❪G,L❫ ⊢ ⬈*𝐒[h] ⒶVs.⋆s.
+lemma csx_applv_sort (G) (L):
+      ∀s,Vs. ❪G,L❫ ⊢ ⬈*𝐒 Vs → ❪G,L❫ ⊢ ⬈*𝐒 ⒶVs.⋆s.
 /3 width=6 by csx_applv_cnx, cnx_sort, simple_atom/ qed.
index 1fecc55e4ce5d911daf1489b5a7a04b4063113ec..baba7a13128c28adadd4d7e6ed848e26af54f665 100644 (file)
@@ -16,34 +16,34 @@ include "basic_2/rt_computation/cpxs_teqx.ma".
 include "basic_2/rt_computation/cpxs_cpxs.ma".
 include "basic_2/rt_computation/csx_csx.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
+(* STRONGLY NORMALIZING TERMS FOR EXTENDED PARALLEL RT-TRANSITION ***********)
 
-(* Properties with unbound context-sensitive rt-computation for terms *******)
+(* Properties with extended context-sensitive rt-computation for terms ******)
 
 (* Basic_1: was just: sn3_intro *)
-lemma csx_intro_cpxs (h) (G) (L):
-      ∀T1. (∀T2. ❪G,L❫ ⊢ T1 ⬈*[h] T2 → (T1 ≛ T2 → ⊥) → ❪G,L❫ ⊢ ⬈*𝐒[h] T2) →
-      ❪G,L❫ ⊢ ⬈*𝐒[h] T1.
+lemma csx_intro_cpxs (G) (L):
+      ∀T1. (∀T2. ❪G,L❫ ⊢ T1 ⬈* T2 → (T1 ≛ T2 → ⊥) → ❪G,L❫ ⊢ ⬈*𝐒 T2) →
+      ❪G,L❫ ⊢ ⬈*𝐒 T1.
 /4 width=1 by cpx_cpxs, csx_intro/ qed-.
 
 (* Basic_1: was just: sn3_pr3_trans *)
-lemma csx_cpxs_trans (h) (G) (L):
-      ∀T1. ❪G,L❫ ⊢ ⬈*𝐒[h] T1 →
-      ∀T2. ❪G,L❫ ⊢ T1 ⬈*[h] T2 → ❪G,L❫ ⊢ ⬈*𝐒[h] T2.
-#h #G #L #T1 #HT1 #T2 #H @(cpxs_ind … H) -T2
+lemma csx_cpxs_trans (G) (L):
+      ∀T1. ❪G,L❫ ⊢ ⬈*𝐒 T1 →
+      ∀T2. ❪G,L❫ ⊢ T1 ⬈* T2 → ❪G,L❫ ⊢ ⬈*𝐒 T2.
+#G #L #T1 #HT1 #T2 #H @(cpxs_ind … H) -T2
 /2 width=3 by csx_cpx_trans/
 qed-.
 
-(* Eliminators with unbound context-sensitive rt-computation for terms ******)
+(* Eliminators with extended context-sensitive rt-computation for terms *****)
 
-lemma csx_ind_cpxs_teqx (h) (G) (L):
+lemma csx_ind_cpxs_teqx (G) (L):
       ∀Q:predicate term.
-      (∀T1. ❪G,L❫ ⊢ ⬈*𝐒[h] T1 →
-        (∀T2. ❪G,L❫ ⊢ T1 ⬈*[h] T2 → (T1 ≛ T2 → ⊥) → Q T2) → Q T1
+      (∀T1. ❪G,L❫ ⊢ ⬈*𝐒 T1 →
+        (∀T2. ❪G,L❫ ⊢ T1 ⬈* T2 → (T1 ≛ T2 → ⊥) → Q T2) → Q T1
       ) →
-      ∀T1. ❪G,L❫ ⊢ ⬈*𝐒[h] T1 →
-      ∀T0. ❪G,L❫ ⊢ T1 ⬈*[h] T0 → ∀T2. T0 ≛ T2 → Q T2.
-#h #G #L #Q #IH #T1 #H @(csx_ind … H) -T1
+      ∀T1. ❪G,L❫ ⊢ ⬈*𝐒 T1 →
+      ∀T0. ❪G,L❫ ⊢ T1 ⬈* T0 → ∀T2. T0 ≛ T2 → Q T2.
+#G #L #Q #IH #T1 #H @(csx_ind … H) -T1
 #T1 #HT1 #IH1 #T0 #HT10 #T2 #HT02
 @IH -IH /3 width=3 by csx_cpxs_trans, csx_teqx_trans/ -HT1 #V2 #HTV2 #HnTV2
 lapply (teqx_tneqx_trans … HT02 … HnTV2) -HnTV2 #H
@@ -61,11 +61,11 @@ elim (teqx_dec T1 T0) #H
 qed-.
 
 (* Basic_2A1: was: csx_ind_alt *)
-lemma csx_ind_cpxs (h) (G) (L) (Q:predicate …):
-      (∀T1. ❪G,L❫ ⊢ ⬈*𝐒[h] T1 →
-        (∀T2. ❪G,L❫ ⊢ T1 ⬈*[h] T2 → (T1 ≛ T2 → ⊥) → Q T2) → Q T1
+lemma csx_ind_cpxs (G) (L) (Q:predicate …):
+      (∀T1. ❪G,L❫ ⊢ ⬈*𝐒 T1 →
+        (∀T2. ❪G,L❫ ⊢ T1 ⬈* T2 → (T1 ≛ T2 → ⊥) → Q T2) → Q T1
       ) →
-      ∀T. ❪G,L❫ ⊢ ⬈*𝐒[h] T → Q T.
-#h #G #L #Q #IH #T #HT
+      ∀T. ❪G,L❫ ⊢ ⬈*𝐒 T → Q T.
+#G #L #Q #IH #T #HT
 @(csx_ind_cpxs_teqx … IH … HT) -IH -HT // (**) (* full auto fails *)
 qed-.
index 4a89de6b3e54f50f97efd68ad52352f5ea63c0be..86dc07b45fa41b3723979cb35031ac83b490f35b 100644 (file)
 include "basic_2/rt_transition/lpx_reqx.ma".
 include "basic_2/rt_computation/csx_drops.ma".
 
-(* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
+(* STRONGLY NORMALIZING TERMS FOR EXTENDED PARALLEL RT-TRANSITION ***********)
 
 (* Advanced properties ******************************************************)
 
-lemma csx_teqx_trans (h) (G) (L):
-      ∀T1. ❪G,L❫ ⊢ ⬈*𝐒[h] T1 →
-      ∀T2. T1 ≛ T2 → ❪G,L❫ ⊢ ⬈*𝐒[h] T2.
-#h #G #L #T1 #H @(csx_ind … H) -T1 #T #_ #IH #T2 #HT2
+lemma csx_teqx_trans (G) (L):
+      ∀T1. ❪G,L❫ ⊢ ⬈*𝐒 T1 →
+      ∀T2. T1 ≛ T2 → ❪G,L❫ ⊢ ⬈*𝐒 T2.
+#G #L #T1 #H @(csx_ind … H) -T1 #T #_ #IH #T2 #HT2
 @csx_intro #T1 #HT21 #HnT21 elim (teqx_cpx_trans … HT2 … HT21) -HT21
 /4 width=5 by teqx_repl/
 qed-.
 
-lemma csx_cpx_trans (h) (G) (L):
-      ∀T1. ❪G,L❫ ⊢ ⬈*𝐒[h] T1 →
-      ∀T2. ❪G,L❫ ⊢ T1 ⬈[h] T2 → ❪G,L❫ ⊢ ⬈*𝐒[h] T2.
-#h #G #L #T1 #H @(csx_ind … H) -T1 #T1 #HT1 #IHT1 #T2 #HLT12
+lemma csx_cpx_trans (G) (L):
+      ∀T1. ❪G,L❫ ⊢ ⬈*𝐒 T1 →
+      ∀T2. ❪G,L❫ ⊢ T1 ⬈ T2 → ❪G,L❫ ⊢ ⬈*𝐒 T2.
+#G #L #T1 #H @(csx_ind … H) -T1 #T1 #HT1 #IHT1 #T2 #HLT12
 elim (teqx_dec T1 T2) /3 width=4 by csx_teqx_trans/
 qed-.
 
 (* Basic_1: was just: sn3_cast *)
-lemma csx_cast (h) (G) (L):
-      ∀W. ❪G,L❫ ⊢ ⬈*𝐒[h] W →
-      ∀T. ❪G,L❫ ⊢ ⬈*𝐒[h] T → ❪G,L❫ ⊢ ⬈*𝐒[h] ⓝW.T.
-#h #G #L #W #HW @(csx_ind … HW) -W
+lemma csx_cast (G) (L):
+      ∀W. ❪G,L❫ ⊢ ⬈*𝐒 W →
+      ∀T. ❪G,L❫ ⊢ ⬈*𝐒 T → ❪G,L❫ ⊢ ⬈*𝐒 ⓝW.T.
+#G #L #W #HW @(csx_ind … HW) -W
 #W #HW #IHW #T #HT @(csx_ind … HT) -T
 #T #HT #IHT @csx_intro
 #X #H1 #H2 elim (cpx_inv_cast1 … H1) -H1
@@ -54,10 +54,10 @@ qed.
 
 (* Basic_1: was just: sn3_abbr *)
 (* Basic_2A1: was: csx_lref_bind *)
-lemma csx_lref_pair_drops (h) (G) (L):
+lemma csx_lref_pair_drops (G) (L):
       ∀I,K,V,i. ⇩[i] L ≘ K.ⓑ[I]V →
-      ❪G,K❫ ⊢ ⬈*𝐒[h] V → ❪G,L❫ ⊢ ⬈*𝐒[h] #i.
-#h #G #L #I #K #V #i #HLK #HV
+      ❪G,K❫ ⊢ ⬈*𝐒 V → ❪G,L❫ ⊢ ⬈*𝐒 #i.
+#G #L #I #K #V #i #HLK #HV
 @csx_intro #X #H #Hi elim (cpx_inv_lref1_drops … H) -H
 [ #H destruct elim Hi //
 | -Hi * #I0 #K0 #V0 #V1 #HLK0 #HV01 #HV1
@@ -70,19 +70,19 @@ qed.
 
 (* Basic_1: was: sn3_gen_def *)
 (* Basic_2A1: was: csx_inv_lref_bind *)
-lemma csx_inv_lref_pair_drops (h) (G) (L):
+lemma csx_inv_lref_pair_drops (G) (L):
       ∀I,K,V,i. ⇩[i] L ≘ K.ⓑ[I]V →
-      ❪G,L❫ ⊢ ⬈*𝐒[h] #i → ❪G,K❫ ⊢ ⬈*𝐒[h] V.
-#h #G #L #I #K #V #i #HLK #Hi
+      ❪G,L❫ ⊢ ⬈*𝐒 #i → ❪G,K❫ ⊢ ⬈*𝐒 V.
+#G #L #I #K #V #i #HLK #Hi
 elim (lifts_total V (𝐔❨↑i❩))
 /4 width=9 by csx_inv_lifts, csx_cpx_trans, cpx_delta_drops, drops_isuni_fwd_drop2/
 qed-.
 
-lemma csx_inv_lref_drops (h) (G) (L):
-      ∀i. ❪G,L❫ ⊢ ⬈*𝐒[h] #i →
+lemma csx_inv_lref_drops (G) (L):
+      ∀i. ❪G,L❫ ⊢ ⬈*𝐒 #i →
       ∨∨ ⇩*[Ⓕ,𝐔❨i❩] L ≘ ⋆
        | ∃∃I,K. ⇩[i] L ≘ K.ⓤ[I]
-       | ∃∃I,K,V. ⇩[i] L ≘ K.ⓑ[I]V & ❪G,K❫ ⊢ ⬈*𝐒[h] V.
-#h #G #L #i #H elim (drops_F_uni L i) /2 width=1 by or3_intro0/
+       | ∃∃I,K,V. ⇩[i] L ≘ K.ⓑ[I]V & ❪G,K❫ ⊢ ⬈*𝐒 V.
+#G #L #i #H elim (drops_F_uni L i) /2 width=1 by or3_intro0/
 * * /4 width=9 by csx_inv_lref_pair_drops, ex2_3_intro, ex1_2_intro, or3_intro2, or3_intro1/
 qed-.
index 39779d75a562f9239501eebd7909896b171dd541..c5d14bbe2273e6a3e619775570991d57e7a9ec79 100644 (file)
@@ -18,15 +18,15 @@ include "basic_2/rt_computation/csx_lsubr.ma".
 include "basic_2/rt_computation/csx_lpx.ma".
 include "basic_2/rt_computation/csx_vector.ma".
 
-(* STRONGLY NORMALIZING TERM VECTORS FOR UNBOUND PARALLEL RT-TRANSITION *****)
+(* STRONGLY NORMALIZING TERM VECTORS FOR EXTENDED PARALLEL RT-TRANSITION ****)
 
 (* Advanced properties ************************************* ****************)
 
 (* Basic_1: was just: sn3_appls_beta *)
-lemma csx_applv_beta (h) (G) (L):
-      ∀p,Vs,V,W,T. ❪G,L❫ ⊢ ⬈*𝐒[h] ⒶVs.ⓓ[p]ⓝW.V.T →
-      ❪G,L❫ ⊢ ⬈*𝐒[h] ⒶVs.ⓐV.ⓛ[p]W.T.
-#h #G #L #p #Vs elim Vs -Vs /2 width=1 by csx_appl_beta/
+lemma csx_applv_beta (G) (L):
+      ∀p,Vs,V,W,T. ❪G,L❫ ⊢ ⬈*𝐒 ⒶVs.ⓓ[p]ⓝW.V.T →
+      ❪G,L❫ ⊢ ⬈*𝐒 ⒶVs.ⓐV.ⓛ[p]W.T.
+#G #L #p #Vs elim Vs -Vs /2 width=1 by csx_appl_beta/
 #V0 #Vs #IHV #V #W #T #H1T
 lapply (csx_fwd_pair_sn … H1T) #HV0
 lapply (csx_fwd_flat_dx … H1T) #H2T
@@ -38,11 +38,11 @@ elim (cpxs_fwd_beta_vector … H) -H #H
 ]
 qed.
 
-lemma csx_applv_delta_drops (h) (G) (L):
+lemma csx_applv_delta_drops (G) (L):
       ∀I,K,V1,i. ⇩[i] L ≘ K.ⓑ[I]V1 →
       ∀V2. ⇧[↑i] V1 ≘ V2 →
-      ∀Vs. ❪G,L❫ ⊢ ⬈*𝐒[h] ⒶVs.V2 → ❪G,L❫ ⊢ ⬈*𝐒[h] ⒶVs.#i.
-#h #G #L #I #K #V1 #i #HLK #V2 #HV12 #Vs elim Vs -Vs
+      ∀Vs. ❪G,L❫ ⊢ ⬈*𝐒 ⒶVs.V2 → ❪G,L❫ ⊢ ⬈*𝐒 ⒶVs.#i.
+#G #L #I #K #V1 #i #HLK #V2 #HV12 #Vs elim Vs -Vs
 [ /4 width=11 by csx_inv_lifts, csx_lref_pair_drops, drops_isuni_fwd_drop2/
 | #V #Vs #IHV #H1T
   lapply (csx_fwd_pair_sn … H1T) #HV
@@ -57,10 +57,10 @@ lemma csx_applv_delta_drops (h) (G) (L):
 qed.
 
 (* Basic_1: was just: sn3_appls_abbr *)
-lemma csx_applv_theta (h) (G) (L):
+lemma csx_applv_theta (G) (L):
       ∀p,V1b,V2b. ⇧[1] V1b ≘ V2b →
-      ∀V,T. ❪G,L❫ ⊢ ⬈*𝐒[h] ⓓ[p]V.ⒶV2b.T → ❪G,L❫ ⊢ ⬈*𝐒[h] ⒶV1b.ⓓ[p]V.T.
-#h #G #L #p #V1b #V2b * -V1b -V2b /2 width=1 by/
+      ∀V,T. ❪G,L❫ ⊢ ⬈*𝐒 ⓓ[p]V.ⒶV2b.T → ❪G,L❫ ⊢ ⬈*𝐒 ⒶV1b.ⓓ[p]V.T.
+#G #L #p #V1b #V2b * -V1b -V2b /2 width=1 by/
 #V1b #V2b #V1 #V2 #HV12 #H
 generalize in match HV12; -HV12 generalize in match V2; -V2 generalize in match V1; -V1
 elim H -V1b -V2b /2 width=3 by csx_appl_theta/
@@ -76,10 +76,10 @@ elim (cpxs_fwd_theta_vector … (V2⨮V2b) … H1) -H1 /2 width=1 by liftsv_cons
 qed.
 
 (* Basic_1: was just: sn3_appls_cast *)
-lemma csx_applv_cast (h) (G) (L):
-      ∀Vs,U. ❪G,L❫ ⊢ ⬈*𝐒[h] ⒶVs.U →
-      ∀T. ❪G,L❫ ⊢ ⬈*𝐒[h] ⒶVs.T → ❪G,L❫ ⊢ ⬈*𝐒[h] ⒶVs.ⓝU.T.
-#h #G #L #Vs elim Vs -Vs /2 width=1 by csx_cast/
+lemma csx_applv_cast (G) (L):
+      ∀Vs,U. ❪G,L❫ ⊢ ⬈*𝐒 ⒶVs.U →
+      ∀T. ❪G,L❫ ⊢ ⬈*𝐒 ⒶVs.T → ❪G,L❫ ⊢ ⬈*𝐒 ⒶVs.ⓝU.T.
+#G #L #Vs elim Vs -Vs /2 width=1 by csx_cast/
 #V #Vs #IHV #U #H1U #T #H1T
 lapply (csx_fwd_pair_sn … H1U) #HV
 lapply (csx_fwd_flat_dx … H1U) #H2U
index c9b3c1ebf2350970cd27648cde211dda6969f445..dbc631bb03f16eb8a7e912ce0694b8555efe2d2b 100644 (file)
@@ -16,15 +16,15 @@ include "static_2/relocation/lifts_teqx.ma".
 include "basic_2/rt_transition/cpx_drops.ma".
 include "basic_2/rt_computation/csx.ma".
 
-(* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
+(* STRONGLY NORMALIZING TERMS FOR EXTENDED PARALLEL RT-TRANSITION ***********)
 
 (* Properties with generic relocation ***************************************)
 
 (* Basic_1: was just: sn3_lift *)
 (* Basic_2A1: was just: csx_lift *)
-lemma csx_lifts (h) (G):
-      d_liftable1 … (csx G).
-#h #G #K #T #H @(csx_ind … H) -T
+lemma csx_lifts (G):
+      d_liftable1 … (csx G).
+#G #K #T #H @(csx_ind … H) -T
 #T1 #_ #IH #b #f #L #HLK #U1 #HTU1
 @csx_intro #U2 #HU12 #HnU12
 elim (cpx_inv_lifts_sn … HU12 … HLK … HTU1) -HU12
@@ -35,9 +35,9 @@ qed-.
 
 (* Basic_1: was just: sn3_gen_lift *)
 (* Basic_2A1: was just: csx_inv_lift *)
-lemma csx_inv_lifts (h) (G):
-      d_deliftable1 … (csx G).
-#h #G #L #U #H @(csx_ind … H) -U
+lemma csx_inv_lifts (G):
+      d_deliftable1 … (csx G).
+#G #L #U #H @(csx_ind … H) -U
 #U1 #_ #IH #b #f #K #HLK #T1 #HTU1
 @csx_intro #T2 #HT12 #HnT12
 elim (cpx_lifts_sn … HT12 … HLK … HTU1) -HT12
index 5c8c2c00ca1d672a81dcd0349891f41dd714834f..dc64354d088f43c808a6ac381a3939376402fa64 100644 (file)
 include "static_2/static/feqx.ma".
 include "basic_2/rt_computation/csx_reqx.ma".
 
-(* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
+(* STRONGLY NORMALIZING TERMS FOR EXTENDED PARALLEL RT-TRANSITION ***********)
 
 (* Properties with sort-irrelevant equivalence for closures *****************)
 
-lemma csx_feqx_conf (h):
-      ∀G1,L1,T1. ❪G1,L1❫ ⊢ ⬈*𝐒[h] T1 →
-      ∀G2,L2,T2. ❪G1,L1,T1❫ ≛ ❪G2,L2,T2❫ → ❪G2,L2❫ ⊢ ⬈*𝐒[h] T2.
-#h #G1 #L1 #T1 #HT1 #G2 #L2 #T2 * -G2 -L2 -T2
+lemma csx_feqx_conf:
+      ∀G1,L1,T1. ❪G1,L1❫ ⊢ ⬈*𝐒 T1 →
+      ∀G2,L2,T2. ❪G1,L1,T1❫ ≛ ❪G2,L2,T2❫ → ❪G2,L2❫ ⊢ ⬈*𝐒 T2.
+#G1 #L1 #T1 #HT1 #G2 #L2 #T2 * -G2 -L2 -T2
 /3 width=3 by csx_reqx_conf, csx_teqx_trans/
 qed-.
index da10c51435b9d8faa4cd18d0e048c20e1d25fc30..70f70453d47bd91d8a37dc4cd9944cea1236294b 100644 (file)
@@ -17,14 +17,14 @@ include "basic_2/rt_computation/csx_fqus.ma".
 include "basic_2/rt_computation/csx_feqx.ma".
 include "basic_2/rt_computation/csx_lpx.ma".
 
-(* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
+(* STRONGLY NORMALIZING TERMS FOR EXTENDED PARALLEL RT-TRANSITION ***********)
 
 (* Properties with parallel rst-transition for closures *********************)
 
 (* Basic_2A1: was: csx_fpb_conf *)
-lemma csx_fpbq_conf (h):
-      ∀G1,L1,T1. ❪G1,L1❫ ⊢ ⬈*𝐒[h] T1 →
-      ∀G2,L2,T2. ❪G1,L1,T1❫ ≽[h] ❪G2,L2,T2❫ → ❪G2,L2❫ ⊢ ⬈*𝐒[h] T2.
-#h #G1 #L1 #T1 #HT1 #G2 #L2 #T2 *
+lemma csx_fpbq_conf:
+      ∀G1,L1,T1. ❪G1,L1❫ ⊢ ⬈*𝐒 T1 →
+      ∀G2,L2,T2. ❪G1,L1,T1❫ ≽ ❪G2,L2,T2❫ → ❪G2,L2❫ ⊢ ⬈*𝐒 T2.
+#G1 #L1 #T1 #HT1 #G2 #L2 #T2 *
 /2 width=6 by csx_cpx_trans, csx_fquq_conf, csx_lpx_conf, csx_feqx_conf/
 qed-.
index 811435f343df1922ce9544bbb08270021652e189..2c4c560277abde1a15d754c9cf0c573062990dce 100644 (file)
 include "static_2/s_computation/fqus.ma".
 include "basic_2/rt_computation/csx_lsubr.ma".
 
-(* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
+(* STRONGLY NORMALIZING TERMS FOR EXTENDED PARALLEL RT-TRANSITION ***********)
 
 (* Properties with extended supclosure **************************************)
 
-lemma csx_fqu_conf (h) (b):
+lemma csx_fqu_conf (b):
       ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂[b] ❪G2,L2,T2❫ →
-      ❪G1,L1❫ ⊢ ⬈*𝐒[h] T1 → ❪G2,L2❫ ⊢ ⬈*𝐒[h] T2.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
+      ❪G1,L1❫ ⊢ ⬈*𝐒 T1 → ❪G2,L2❫ ⊢ ⬈*𝐒 T2.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
 [ /3 width=5 by csx_inv_lref_pair_drops, drops_refl/
 | /2 width=3 by csx_fwd_pair_sn/
 | /2 width=2 by csx_fwd_bind_dx/
@@ -32,23 +32,23 @@ lemma csx_fqu_conf (h) (b):
 ]
 qed-.
 
-lemma csx_fquq_conf (h) (b):
+lemma csx_fquq_conf (b):
       ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂⸮[b] ❪G2,L2,T2❫ →
-      ❪G1,L1❫ ⊢ ⬈*𝐒[h] T1 → ❪G2,L2❫ ⊢ ⬈*𝐒[h] T2.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 * /2 width=6 by csx_fqu_conf/
+      ❪G1,L1❫ ⊢ ⬈*𝐒 T1 → ❪G2,L2❫ ⊢ ⬈*𝐒 T2.
+#b #G1 #G2 #L1 #L2 #T1 #T2 * /2 width=6 by csx_fqu_conf/
 * #HG #HL #HT destruct //
 qed-.
 
-lemma csx_fqup_conf (h) (b):
+lemma csx_fqup_conf (b):
       ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂+[b] ❪G2,L2,T2❫ →
-      ❪G1,L1❫ ⊢ ⬈*𝐒[h] T1 → ❪G2,L2❫ ⊢ ⬈*𝐒[h] T2.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind … H) -G2 -L2 -T2
+      ❪G1,L1❫ ⊢ ⬈*𝐒 T1 → ❪G2,L2❫ ⊢ ⬈*𝐒 T2.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind … H) -G2 -L2 -T2
 /3 width=6 by csx_fqu_conf/
 qed-.
 
-lemma csx_fqus_conf (h) (b):
+lemma csx_fqus_conf (b):
       ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂*[b] ❪G2,L2,T2❫ →
-      ❪G1,L1❫ ⊢ ⬈*𝐒[h] T1 → ❪G2,L2❫ ⊢ ⬈*𝐒[h] T2.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqus_ind … H) -H
+      ❪G1,L1❫ ⊢ ⬈*𝐒 T1 → ❪G2,L2❫ ⊢ ⬈*𝐒 T2.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqus_ind … H) -H
 /3 width=6 by csx_fquq_conf/
 qed-.
index e042402ea6b684739730a28a97b5ce9319d2ca6c..c35b3873130bd2d25065649788d9e64a0bf06589 100644 (file)
@@ -16,13 +16,13 @@ include "static_2/static/gcp.ma".
 include "basic_2/rt_transition/cnx_drops.ma".
 include "basic_2/rt_computation/csx_drops.ma".
 
-(* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
+(* STRONGLY NORMALIZING TERMS FOR EXTENDED PARALLEL RT-TRANSITION ***********)
 
 (* Main properties with generic computation properties **********************)
 
-theorem csx_gcp (h):
-        gcp (cpx h) teqx (csx h).
-#h @mk_gcp
+theorem csx_gcp:
+        gcp cpx teqx csx.
+@mk_gcp
 [ normalize /3 width=13 by cnx_lifts/
 | /2 width=4 by cnx_sort/
 | /2 width=8 by csx_lifts/
index 24ce3517d2c1162ee8ffbe03d2408298dd103e21..c75fddb61fa16ec7802ea6259bd69018d0e5ad76 100644 (file)
@@ -16,13 +16,13 @@ include "static_2/static/gcp_cr.ma".
 include "basic_2/rt_computation/csx_cnx_vector.ma".
 include "basic_2/rt_computation/csx_csx_vector.ma".
 
-(* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
+(* STRONGLY NORMALIZING TERMS FOR EXTENDED PARALLEL RT-TRANSITION ***********)
 
 (* Main properties with generic candidates of reducibility ******************)
 
-theorem csx_gcr (h):
-        gcr (cpx h) teqx (csx h) (csx h).
-#h @mk_gcr
+theorem csx_gcr:
+        gcr cpx teqx csx csx.
+@mk_gcr
 [ //
 | #G #L #Vs #Hvs #T #HT #H
   @(csx_applv_cnx … H) -H // (**) (* auto fails *)
index 04b75e3ead82d4e864f3e4e73c42ed3710c61611..bcb4dea88470fe086eccdf69d1f98d2010f1c0d6 100644 (file)
 include "basic_2/rt_computation/cpxs_lpx.ma".
 include "basic_2/rt_computation/csx_cpxs.ma".
 
-(* CONTEXT-SENSITIVE EXTENDED STRONGLY NORMALIZING TERMS ********************)
+(* STRONGLY NORMALIZING TERMS FOR EXTENDED PARALLEL RT-TRANSITION ***********)
 
-(* Properties with unbound parallel rt-transition on all entries ************)
+(* Properties with extended parallel rt-transition on all entries ***********)
 
-lemma csx_lpx_conf (h) (G) (L1):
-      ∀T. ❪G,L1❫ ⊢ ⬈*𝐒[h] T →
-      ∀L2. ❪G,L1❫ ⊢ ⬈[h] L2 → ❪G,L2❫ ⊢ ⬈*𝐒[h] T.
-#h #G #L1 #T #H @(csx_ind_cpxs … H) -T
+lemma csx_lpx_conf (G) (L1):
+      ∀T. ❪G,L1❫ ⊢ ⬈*𝐒 T →
+      ∀L2. ❪G,L1❫ ⊢ ⬈ L2 → ❪G,L2❫ ⊢ ⬈*𝐒 T.
+#G #L1 #T #H @(csx_ind_cpxs … H) -T
 /4 width=3 by csx_intro, lpx_cpx_trans/
 qed-.
 
 (* Advanced properties ******************************************************)
 
-lemma csx_abst (h) (G) (L):
-      ∀p,W. ❪G,L❫ ⊢ ⬈*𝐒[h] W →
-      ∀T. ❪G,L.ⓛW❫ ⊢ ⬈*𝐒[h] T → ❪G,L❫ ⊢ ⬈*𝐒[h] ⓛ[p]W.T.
-#h #G #L #p #W #HW
+lemma csx_abst (G) (L):
+      ∀p,W. ❪G,L❫ ⊢ ⬈*𝐒 W →
+      ∀T. ❪G,L.ⓛW❫ ⊢ ⬈*𝐒 T → ❪G,L❫ ⊢ ⬈*𝐒 ⓛ[p]W.T.
+#G #L #p #W #HW
 @(csx_ind … HW) -W #W #_ #IHW #T #HT
 @(csx_ind … HT) -T #T #HT #IHT
 @csx_intro #X #H1 #H2
@@ -44,10 +44,10 @@ elim (tneqx_inv_pair  … H2) -H2
 ]
 qed.
 
-lemma csx_abbr (h) (G) (L):
-      ∀p,V. ❪G,L❫ ⊢ ⬈*𝐒[h] V →
-      ∀T. ❪G,L.ⓓV❫ ⊢ ⬈*𝐒[h] T → ❪G,L❫ ⊢ ⬈*𝐒[h] ⓓ[p]V.T.
-#h #G #L #p #V #HV
+lemma csx_abbr (G) (L):
+      ∀p,V. ❪G,L❫ ⊢ ⬈*𝐒 V →
+      ∀T. ❪G,L.ⓓV❫ ⊢ ⬈*𝐒 T → ❪G,L❫ ⊢ ⬈*𝐒 ⓓ[p]V.T.
+#G #L #p #V #HV
 @(csx_ind … HV) -V #V #_ #IHV #T #HT
 @(csx_ind_cpxs … HT) -T #T #HT #IHT
 @csx_intro #X #H1 #H2
@@ -63,17 +63,17 @@ elim (cpx_inv_abbr1 … H1) -H1 *
 ]
 qed.
 
-lemma csx_bind (h) (G) (L):
-      ∀p,I,V. ❪G,L❫ ⊢ ⬈*𝐒[h] V →
-      ∀T. ❪G,L.ⓑ[I]V❫ ⊢ ⬈*𝐒[h] T → ❪G,L❫ ⊢ ⬈*𝐒[h] ⓑ[p,I]V.T.
-#h #G #L #p * #V #HV #T #HT
+lemma csx_bind (G) (L):
+      ∀p,I,V. ❪G,L❫ ⊢ ⬈*𝐒 V →
+      ∀T. ❪G,L.ⓑ[I]V❫ ⊢ ⬈*𝐒 T → ❪G,L❫ ⊢ ⬈*𝐒 ⓑ[p,I]V.T.
+#G #L #p * #V #HV #T #HT
 /2 width=1 by csx_abbr, csx_abst/
 qed.
 
-fact csx_appl_theta_aux (h) (G) (L):
-     ∀p,U. ❪G,L❫ ⊢ ⬈*𝐒[h] U → ∀V1,V2. ⇧[1] V1 ≘ V2 →
-     ∀V,T. U = ⓓ[p]V.ⓐV2.T → ❪G,L❫ ⊢ ⬈*𝐒[h] ⓐV1.ⓓ[p]V.T.
-#h #G #L #p #X #H
+fact csx_appl_theta_aux (G) (L):
+     ∀p,U. ❪G,L❫ ⊢ ⬈*𝐒 U → ∀V1,V2. ⇧[1] V1 ≘ V2 →
+     ∀V,T. U = ⓓ[p]V.ⓐV2.T → ❪G,L❫ ⊢ ⬈*𝐒 ⓐV1.ⓓ[p]V.T.
+#G #L #p #X #H
 @(csx_ind_cpxs … H) -X #X #HVT #IHVT #V1 #V2 #HV12 #V #T #H destruct
 lapply (csx_fwd_pair_sn … HVT) #HV
 lapply (csx_fwd_bind_dx … HVT) -HVT #HVT
@@ -105,7 +105,7 @@ elim (cpx_inv_appl1 … HL) -HL *
 ]
 qed-.
 
-lemma csx_appl_theta (h) (G) (L):
-      ∀p,V,V2,T. ❪G,L❫ ⊢ ⬈*𝐒[h] ⓓ[p]V.ⓐV2.T →
-      ∀V1. ⇧[1] V1 ≘ V2 → ❪G,L❫ ⊢ ⬈*𝐒[h] ⓐV1.ⓓ[p]V.T.
+lemma csx_appl_theta (G) (L):
+      ∀p,V,V2,T. ❪G,L❫ ⊢ ⬈*𝐒 ⓓ[p]V.ⓐV2.T →
+      ∀V1. ⇧[1] V1 ≘ V2 → ❪G,L❫ ⊢ ⬈*𝐒 ⓐV1.ⓓ[p]V.T.
 /2 width=5 by csx_appl_theta_aux/ qed.
index a8a930a31f163ed7732042d095df34646e39e07c..fdc989cbc4a44eec84597294166b015b68fddfdc 100644 (file)
 include "basic_2/rt_computation/csx_lpx.ma".
 include "basic_2/rt_computation/lpxs_lpx.ma".
 
-(* CONTEXT-SENSITIVE EXTENDED STRONGLY NORMALIZING TERMS ********************)
+(* STRONGLY NORMALIZING TERMS FOR EXTENDED PARALLEL RT-TRANSITION ***********)
 
-(* Properties with unbound parallel rt-computation on all entries ***********)
+(* Properties with extended parallel rt-computation on all entries **********)
 
-lemma csx_lpxs_conf (h) (G) (L1):
-      ∀L2,T. ❪G,L1❫ ⊢ ⬈*[h] L2 → ❪G,L1❫ ⊢ ⬈*𝐒[h] T → ❪G,L2❫ ⊢ ⬈*𝐒[h] T.
-#h #G #L1 #L2 #T #H @(lpxs_ind_dx … H) -L2
+lemma csx_lpxs_conf (G) (L1):
+      ∀L2,T. ❪G,L1❫ ⊢ ⬈* L2 → ❪G,L1❫ ⊢ ⬈*𝐒 T → ❪G,L2❫ ⊢ ⬈*𝐒 T.
+#G #L1 #L2 #T #H @(lpxs_ind_dx … H) -L2
 /3 by lpxs_step_dx, csx_lpx_conf/
 qed-.
index 2be0d7fdb8fc27870e0d7803ceb203d01b10480a..8dd554a95d0511bfb577b43591c68e9e21572590 100644 (file)
 include "basic_2/rt_transition/cpx_lsubr.ma".
 include "basic_2/rt_computation/csx_csx.ma".
 
-(* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
+(* STRONGLY NORMALIZING TERMS FOR EXTENDED PARALLEL RT-TRANSITION ***********)
 
 (* Advanced properties ******************************************************)
 
-fact csx_appl_beta_aux (h) (G) (L):
-     ∀p,U1. ❪G,L❫ ⊢ ⬈*𝐒[h] U1 →
-     ∀V,W,T1. U1 = ⓓ[p]ⓝW.V.T1 → ❪G,L❫ ⊢ ⬈*𝐒[h] ⓐV.ⓛ[p]W.T1.
-#h #G #L #p #X #H @(csx_ind … H) -X
+fact csx_appl_beta_aux (G) (L):
+     ∀p,U1. ❪G,L❫ ⊢ ⬈*𝐒 U1 →
+     ∀V,W,T1. U1 = ⓓ[p]ⓝW.V.T1 → ❪G,L❫ ⊢ ⬈*𝐒 ⓐV.ⓛ[p]W.T1.
+#G #L #p #X #H @(csx_ind … H) -X
 #X #HT1 #IHT1 #V #W #T1 #H1 destruct
 @csx_intro #X #H1 #H2
 elim (cpx_inv_appl1 … H1) -H1 *
@@ -43,36 +43,36 @@ elim (cpx_inv_appl1 … H1) -H1 *
 qed-.
 
 (* Basic_1: was just: sn3_beta *)
-lemma csx_appl_beta (h) (G) (L):
-      ∀p,V,W,T. ❪G,L❫ ⊢ ⬈*𝐒[h] ⓓ[p]ⓝW.V.T → ❪G,L❫ ⊢ ⬈*𝐒[h] ⓐV.ⓛ[p]W.T.
+lemma csx_appl_beta (G) (L):
+      ∀p,V,W,T. ❪G,L❫ ⊢ ⬈*𝐒 ⓓ[p]ⓝW.V.T → ❪G,L❫ ⊢ ⬈*𝐒 ⓐV.ⓛ[p]W.T.
 /2 width=3 by csx_appl_beta_aux/ qed.
 
 (* Advanced forward lemmas **************************************************)
 
-fact csx_fwd_bind_dx_unit_aux (h) (G) (L):
-     ∀U. ❪G,L❫ ⊢ ⬈*𝐒[h] U →
-     ∀p,I,J,V,T. U = ⓑ[p,I]V.T → ❪G,L.ⓤ[J]❫ ⊢ ⬈*𝐒[h] T.
-#h #G #L #U #H elim H -H #U0 #_ #IH #p #I #J #V #T #H destruct
+fact csx_fwd_bind_dx_unit_aux (G) (L):
+     ∀U. ❪G,L❫ ⊢ ⬈*𝐒 U →
+     ∀p,I,J,V,T. U = ⓑ[p,I]V.T → ❪G,L.ⓤ[J]❫ ⊢ ⬈*𝐒 T.
+#G #L #U #H elim H -H #U0 #_ #IH #p #I #J #V #T #H destruct
 @csx_intro #T2 #HLT2 #HT2
-@(IH (ⓑ[p, I]V.T2)) -IH /2 width=4 by cpx_bind_unit/ -HLT2
-#H elim (teqx_inv_pair … H) -H /2 width=1 by/
+@(IH (ⓑ[p, I]V.T2)) -IH /2 width=4 by cpx_bind_unit/ -HLT2 #H
+elim (teqx_inv_pair … H) -H /2 width=1 by/
 qed-.
 
-lemma csx_fwd_bind_dx_unit (h) (G) (L):
-      ∀p,I,V,T. ❪G,L❫ ⊢ ⬈*𝐒[h] ⓑ[p,I]V.T →
-      ∀J. ❪G,L.ⓤ[J]❫ ⊢ ⬈*𝐒[h] T.
+lemma csx_fwd_bind_dx_unit (G) (L):
+      ∀p,I,V,T. ❪G,L❫ ⊢ ⬈*𝐒 ⓑ[p,I]V.T →
+      ∀J. ❪G,L.ⓤ[J]❫ ⊢ ⬈*𝐒 T.
 /2 width=6 by csx_fwd_bind_dx_unit_aux/ qed-.
 
-lemma csx_fwd_bind_unit (h) (G) (L):
-      ∀p,I,V,T. ❪G,L❫ ⊢ ⬈*𝐒[h] ⓑ[p,I]V.T →
-      ∀J. ∧∧ ❪G,L❫ ⊢ ⬈*𝐒[h] V & ❪G,L.ⓤ[J]❫ ⊢ ⬈*𝐒[h] T.
+lemma csx_fwd_bind_unit (G) (L):
+      ∀p,I,V,T. ❪G,L❫ ⊢ ⬈*𝐒 ⓑ[p,I]V.T →
+      ∀J. ∧∧ ❪G,L❫ ⊢ ⬈*𝐒 V & ❪G,L.ⓤ[J]❫ ⊢ ⬈*𝐒 T.
 /3 width=4 by csx_fwd_pair_sn, csx_fwd_bind_dx_unit, conj/ qed-.
 
 (* Properties with restricted refinement for local environments *************)
 
-lemma csx_lsubr_conf (h) (G) (L1):
-      ∀T. ❪G,L1❫ ⊢ ⬈*𝐒[h] T → ∀L2. L1 ⫃ L2 → ❪G,L2❫ ⊢ ⬈*𝐒[h] T.
-#h #G #L1 #T #H
+lemma csx_lsubr_conf (G) (L1):
+      ∀T. ❪G,L1❫ ⊢ ⬈*𝐒 T → ∀L2. L1 ⫃ L2 → ❪G,L2❫ ⊢ ⬈*𝐒 T.
+#G #L1 #T #H
 @(csx_ind … H) -T #T1 #_ #IH #L2 #HL12
 @csx_intro #T2 #HT12 #HnT12
 /3 width=3 by lsubr_cpx_trans/
index 59e5eb289b9a02b248ab631d61ce0f016618e7ba..f6f8970e3f9740679a8c4c24f45f8714717e9a43 100644 (file)
 include "basic_2/rt_transition/cpx_reqx.ma".
 include "basic_2/rt_computation/csx_csx.ma".
 
-(* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
+(* STRONGLY NORMALIZING TERMS FOR EXTENDED PARALLEL RT-TRANSITION ***********)
 
 (* Properties with sort-irrelevant equivalence for local environments *******)
 
 (* Basic_2A1: uses: csx_lleq_conf *)
-lemma csx_reqx_conf (h) (G) (L1):
-      ∀T. ❪G,L1❫ ⊢ ⬈*𝐒[h] T →
-      ∀L2. L1 ≛[T] L2 → ❪G,L2❫ ⊢ ⬈*𝐒[h] T.
-#h #G #L1 #T #H
+lemma csx_reqx_conf (G) (L1):
+      ∀T. ❪G,L1❫ ⊢ ⬈*𝐒 T →
+      ∀L2. L1 ≛[T] L2 → ❪G,L2❫ ⊢ ⬈*𝐒 T.
+#G #L1 #T #H
 @(csx_ind … H) -T #T1 #_ #IH #L2 #HL12
 @csx_intro #T2 #HT12 #HnT12
 elim (reqx_cpx_trans … HL12 … HT12) -HT12
@@ -31,6 +31,6 @@ elim (reqx_cpx_trans … HL12 … HT12) -HT12
 qed-.
 
 (* Basic_2A1: uses: csx_lleq_trans *)
-lemma csx_reqx_trans (h) (G) (L2):
-      ∀L1,T. L1 ≛[T] L2 → ❪G,L2❫ ⊢ ⬈*𝐒[h] T → ❪G,L1❫ ⊢ ⬈*𝐒[h] T.
+lemma csx_reqx_trans (G) (L2):
+      ∀L1,T. L1 ≛[T] L2 → ❪G,L2❫ ⊢ ⬈*𝐒 T → ❪G,L1❫ ⊢ ⬈*𝐒 T.
 /3 width=3 by csx_reqx_conf, reqx_sym/ qed-.
index 1fbc8de21a1cc0f16f08b07cbe8b6bd5eda85480..1f732d61de1301712fd21341983588b9f64ead04 100644 (file)
 include "basic_2/rt_transition/cpx_simple.ma".
 include "basic_2/rt_computation/csx_csx.ma".
 
-(* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
+(* STRONGLY NORMALIZING TERMS FOR EXTENDED PARALLEL RT-TRANSITION ***********)
 
 (* Properties with simple terms *********************************************)
 
-lemma csx_appl_simple (h) (G) (L):
-      ∀V. ❪G,L❫ ⊢ ⬈*𝐒[h] V → ∀T1.
-      (∀T2. ❪G,L❫ ⊢ T1 ⬈[h] T2 → (T1 ≛ T2 → ⊥) → ❪G,L❫ ⊢ ⬈*𝐒[h] ⓐV.T2) →
-      𝐒❪T1❫ → ❪G,L❫ ⊢ ⬈*𝐒[h] ⓐV.T1.
-#h #G #L #V #H @(csx_ind … H) -V
+lemma csx_appl_simple (G) (L):
+      ∀V. ❪G,L❫ ⊢ ⬈*𝐒 V → ∀T1.
+      (∀T2. ❪G,L❫ ⊢ T1 ⬈ T2 → (T1 ≛ T2 → ⊥) → ❪G,L❫ ⊢ ⬈*𝐒 ⓐV.T2) →
+      𝐒❪T1❫ → ❪G,L❫ ⊢ ⬈*𝐒 ⓐV.T1.
+#G #L #V #H @(csx_ind … H) -V
 #V #_ #IHV #T1 #IHT1 #HT1
 @csx_intro #X #H1 #H2
 elim (cpx_inv_appl1_simple … H1) // -H1
index 12815d38ec76516aba51343af588f354562d4375..bb450e75608ea6035fa06161956e558249b1cc30 100644 (file)
@@ -18,17 +18,17 @@ include "basic_2/rt_transition/cpx_simple.ma".
 include "basic_2/rt_computation/cpxs.ma".
 include "basic_2/rt_computation/csx_csx.ma".
 
-(* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
+(* STRONGLY NORMALIZING TERMS FOR EXTENDED PARALLEL RT-TRANSITION ***********)
 
 (* Properties with outer equivalence for terms ******************************)
 
 (* Basic_1: was just: sn3_appl_appl *)
 (* Basic_2A1: was: csx_appl_simple_tsts *)
-lemma csx_appl_simple_teqo (h) (G) (L):
-      ∀V. ❪G,L❫ ⊢ ⬈*𝐒[h] V → ∀T1. ❪G,L❫ ⊢ ⬈*𝐒[h] T1 →
-      (∀T2. ❪G,L❫ ⊢ T1 ⬈*[h] T2 → (T1 ⩳ T2 → ⊥) → ❪G,L❫ ⊢ ⬈*𝐒[h] ⓐV.T2) →
-      𝐒❪T1❫ → ❪G,L❫ ⊢ ⬈*𝐒[h] ⓐV.T1.
-#h #G #L #V #H @(csx_ind … H) -V
+lemma csx_appl_simple_teqo (G) (L):
+      ∀V. ❪G,L❫ ⊢ ⬈*𝐒 V → ∀T1. ❪G,L❫ ⊢ ⬈*𝐒 T1 →
+      (∀T2. ❪G,L❫ ⊢ T1 ⬈* T2 → (T1 ⩳ T2 → ⊥) → ❪G,L❫ ⊢ ⬈*𝐒 ⓐV.T2) →
+      𝐒❪T1❫ → ❪G,L❫ ⊢ ⬈*𝐒 ⓐV.T1.
+#G #L #V #H @(csx_ind … H) -V
 #V #_ #IHV #T1 #H @(csx_ind … H) -T1
 #T1 #H1T1 #IHT1 #H2T1 #H3T1
 @csx_intro #X #HL #H
index ab7046fd1719b2ae2c96081b9d7a8d0e1f19c02b..faad2323aacbb97c37ef93c852bf34cc6b4041e1 100644 (file)
 include "static_2/syntax/term_vector.ma".
 include "basic_2/rt_computation/csx.ma".
 
-(* STRONGLY NORMALIZING TERMS VECTORS FOR UNBOUND PARALLEL RT-TRANSITION ****)
+(* STRONGLY NORMALIZING TERMS VECTORS FOR EXTENDED PARALLEL RT-TRANSITION ***)
 
-definition csxv (h) (G) (L): predicate (list term) ≝
-           all … (csx G L).
+definition csxv (G) (L): predicate (list term) ≝
+           all … (csx G L).
 
 interpretation
-   "strong normalization for unbound context-sensitive parallel rt-transition (term vector)"
-   'PRedTyStrong h G L Ts = (csxv h G L Ts).
+  "strong normalization for extended context-sensitive parallel rt-transition (term vector)"
+  'PRedTyStrong G L Ts = (csxv G L Ts).
 
 (* Basic inversion lemmas ***************************************************)
 
-lemma csxv_inv_cons (h) (G) (L):
-      ∀T,Ts. ❪G,L❫ ⊢ ⬈*𝐒[h] T⨮Ts →
-      ∧∧ ❪G,L❫ ⊢ ⬈*𝐒[h] T & ❪G,L❫ ⊢ ⬈*𝐒[h] Ts.
+lemma csxv_inv_cons (G) (L):
+      ∀T,Ts. ❪G,L❫ ⊢ ⬈*𝐒 T⨮Ts →
+      ∧∧ ❪G,L❫ ⊢ ⬈*𝐒 T & ❪G,L❫ ⊢ ⬈*𝐒 Ts.
 normalize // qed-.
 
 (* Basic forward lemmas *****************************************************)
 
-lemma csx_fwd_applv (h) (G) (L):
-      ∀T,Vs. ❪G,L❫ ⊢ ⬈*𝐒[h] ⒶVs.T →
-      ∧∧ ❪G,L❫ ⊢ ⬈*𝐒[h] Vs & ❪G,L❫ ⊢ ⬈*𝐒[h] T.
-#h #G #L #T #Vs elim Vs -Vs /2 width=1 by conj/
+lemma csx_fwd_applv (G) (L):
+      ∀T,Vs. ❪G,L❫ ⊢ ⬈*𝐒 ⒶVs.T →
+      ∧∧ ❪G,L❫ ⊢ ⬈*𝐒 Vs & ❪G,L❫ ⊢ ⬈*𝐒 T.
+#G #L #T #Vs elim Vs -Vs /2 width=1 by conj/
 #V #Vs #IHVs #HVs
 lapply (csx_fwd_pair_sn … HVs) #HV
 lapply (csx_fwd_flat_dx … HVs) -HVs #HVs
index f58c55387bb24db19d6f84c86fd5f5629998a83a..1a3d604e9ef226564349b4f8b4f0ba049b7b80c4 100644 (file)
 (**************************************************************************)
 
 include "ground/xoa/ex_2_3.ma".
-include "basic_2/notation/relations/predsubtystarproper_7.ma".
+include "basic_2/notation/relations/predsubtystarproper_6.ma".
 include "basic_2/rt_transition/fpb.ma".
 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❫.
+definition fpbg: tri_relation genv lenv term ≝
+           λG1,L1,T1,G2,L2,T2.
+           ∃∃G,L,T. ❪G1,L1,T1❫ ≻ ❪G,L,T❫ & ❪G,L,T❫ ≥ ❪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).
+   'PRedSubTyStarProper G1 L1 T1 G2 L2 T2 = (fpbg 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:
+      ∀G1,G2,L1,L2,T1,T2.
+      ❪G1,L1,T1❫ ≻ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ > ❪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❫.
-#h #G1 #G #G2 #L1 #L #L2 #T1 #T #T2 *
+lemma fpbg_fpbq_trans:
+      ∀G1,G,G2,L1,L,L2,T1,T,T2.
+      ❪G1,L1,T1❫ > ❪G,L,T❫ → ❪G,L,T❫ ≽ ❪G2,L2,T2❫ →
+      ❪G1,L1,T1❫ > ❪G2,L2,T2❫.
+#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❫.
-#h #G1 #G #G2 #L1 #L #L2 #T1 #T #T2 #H1 #H2
+lemma fpbg_fqu_trans:
+      ∀G1,G,G2,L1,L,L2,T1,T,T2.
+      ❪G1,L1,T1❫ > ❪G,L,T❫ → ❪G,L,T❫ ⬂ ❪G2,L2,T2❫ →
+      ❪G1,L1,T1❫ > ❪G2,L2,T2❫.
+#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.
-      â\9dªG,L,Tâ\9d« â\89¥[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/
+lemma fpbg_fpbs_trans: 
+      â\88\80G,G2,L,L2,T,T2. â\9dªG,L,Tâ\9d« â\89¥ ❪G2,L2,T2❫ →
+      ∀G1,L1,T1. ❪G1,L1,T1❫ > ❪G,L,T❫ → ❪G1,L1,T1❫ > ❪G2,L2,T2❫.
+#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.
-      â\9dªG1,L1,T1â\9d« >[h] ❪G,L,T❫ →
-      ∀G2,L2,T2. ❪G,L,T❫ ≛ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
+lemma fpbg_feqx_trans:
+      â\88\80G1,G,L1,L,T1,T. â\9dªG1,L1,T1â\9d« > ❪G,L,T❫ →
+      ∀G2,L2,T2. ❪G,L,T❫ ≛ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ > ❪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 ➡[h,n1] T → (T1 ≛ T → ⊥) →
-      ∀n2,T2. ❪G,L❫ ⊢ T ➡[h,n2] T2 → ❪G,L,T1❫ >[h] ❪G,L,T2❫.
+      ∀n2,T2. ❪G,L❫ ⊢ T ➡[h,n2] T2 → ❪G,L,T1❫ > ❪G,L,T2❫.
 /4 width=5 by fpbq_fpbs, cpm_fpbq, cpm_fpb, ex2_3_intro/ qed.
index e12dae65165469a9d5281df9bbe4d35f34bfadb5..335243516c00f64ee75497c00c05cfc9e0520fba 100644 (file)
@@ -18,16 +18,18 @@ include "basic_2/rt_computation/fpbg_fpbs.ma".
 
 (* PROPER PARALLEL RST-COMPUTATION FOR CLOSURES *****************************)
 
-(* Properties with unbound context-sensitive parallel rt-computation ********)
+(* Properties with extended context-sensitive parallel rt-computation *******)
 
 (* Basic_2A1: was: cpxs_fpbg *)
-lemma cpxs_tneqx_fpbg (h): ∀G,L,T1,T2. ❪G,L❫ ⊢ T1 ⬈*[h] T2 →
-                           (T1 ≛ T2 → ⊥) → ❪G,L,T1❫ >[h] ❪G,L,T2❫.
-#h #G #L #T1 #T2 #H #H0
+lemma cpxs_tneqx_fpbg:
+      ∀G,L,T1,T2. ❪G,L❫ ⊢ T1 ⬈* T2 →
+      (T1 ≛ T2 → ⊥) → ❪G,L,T1❫ > ❪G,L,T2❫.
+#G #L #T1 #T2 #H #H0
 elim (cpxs_tneqx_fwd_step_sn … H … H0) -H -H0
 /4 width=5 by cpxs_teqx_fpbs, fpb_cpx, ex2_3_intro/
 qed.
 
-lemma cpxs_fpbg_trans (h): ∀G1,L1,T1,T. ❪G1,L1❫ ⊢ T1 ⬈*[h] T →
-                           ∀G2,L2,T2. ❪G1,L1,T❫ >[h] ❪G2,L2,T2❫ → ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
+lemma cpxs_fpbg_trans:
+      ∀G1,L1,T1,T. ❪G1,L1❫ ⊢ T1 ⬈* T →
+      ∀G2,L2,T2. ❪G1,L1,T❫ > ❪G2,L2,T2❫ → ❪G1,L1,T1❫ > ❪G2,L2,T2❫.
 /3 width=5 by fpbs_fpbg_trans, cpxs_fpbs/ qed-.
index 6d511b7f4bc09bbf2238f73051d10de4db7ed35b..499d08c5dae831acc0ab1d67646e1943b50906d7 100644 (file)
@@ -18,5 +18,6 @@ include "basic_2/rt_computation/fpbg_fpbs.ma".
 
 (* Main properties **********************************************************)
 
-theorem fpbg_trans: ∀h. tri_transitive … (fpbg h).
+theorem fpbg_trans:
+        tri_transitive … fpbg.
 /3 width=5 by fpbg_fpbs_trans, fpbg_fwd_fpbs/ qed-.
index 888b969696dba7be6a3e48e8bb058e437dcbace5..fcfcbc9784d7e1e5bce76d93866acfad0b48b9b8 100644 (file)
@@ -21,60 +21,66 @@ include "basic_2/rt_computation/fpbg.ma".
 
 (* Advanced forward lemmas **************************************************)
 
-lemma fpbg_fwd_fpbs: ∀h,G1,G2,L1,L2,T1,T2.
-                     ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
-#h #G1 #G2 #L1 #L2 #T1 #T2 *
+lemma fpbg_fwd_fpbs:
+      ∀G1,G2,L1,L2,T1,T2.
+      ❪G1,L1,T1❫ > ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
+#G1 #G2 #L1 #L2 #T1 #T2 *
 /3 width=5 by fpbs_strap2, fpb_fpbq/
 qed-.
 
 (* Advanced properties with sort-irrelevant equivalence on closures *********)
 
 (* Basic_2A1: uses: fleq_fpbg_trans *)
-lemma feqx_fpbg_trans: ∀h,G,G2,L,L2,T,T2. ❪G,L,T❫ >[h] ❪G2,L2,T2❫ →
-                       ∀G1,L1,T1. ❪G1,L1,T1❫ ≛ ❪G,L,T❫ → ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
-#h #G #G2 #L #L2 #T #T2 * #G0 #L0 #T0 #H0 #H02 #G1 #L1 #T1 #H1
+lemma feqx_fpbg_trans:
+      ∀G,G2,L,L2,T,T2. ❪G,L,T❫ > ❪G2,L2,T2❫ →
+      ∀G1,L1,T1. ❪G1,L1,T1❫ ≛ ❪G,L,T❫ → ❪G1,L1,T1❫ > ❪G2,L2,T2❫.
+#G #G2 #L #L2 #T #T2 * #G0 #L0 #T0 #H0 #H02 #G1 #L1 #T1 #H1
 elim (feqx_fpb_trans …  H1 … H0) -G -L -T
 /4 width=9 by fpbs_strap2, fpbq_feqx, ex2_3_intro/
 qed-.
 
 (* Properties with parallel proper rst-reduction on closures ****************)
 
-lemma fpb_fpbg_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❫.
+lemma fpb_fpbg_trans:
+      ∀G1,G,G2,L1,L,L2,T1,T,T2.
+      ❪G1,L1,T1❫ ≻ ❪G,L,T❫ → ❪G,L,T❫ > ❪G2,L2,T2❫ →
+      ❪G1,L1,T1❫ > ❪G2,L2,T2❫.
 /3 width=5 by fpbg_fwd_fpbs, ex2_3_intro/ qed-.
 
 (* Properties with parallel rst-reduction on closures ***********************)
 
-lemma fpbq_fpbg_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❫.
-#h #G1 #G #G2 #L1 #L #L2 #T1 #T #T2 #H1 #H2
+lemma fpbq_fpbg_trans:
+      ∀G1,G,G2,L1,L,L2,T1,T,T2.
+      ❪G1,L1,T1❫ ≽ ❪G,L,T❫ → ❪G,L,T❫ > ❪G2,L2,T2❫ →
+      ❪G1,L1,T1❫ > ❪G2,L2,T2❫.
+#G1 #G #G2 #L1 #L #L2 #T1 #T #T2 #H1 #H2
 elim (fpbq_inv_fpb … H1) -H1
 /2 width=5 by feqx_fpbg_trans, fpb_fpbg_trans/
 qed-.
 
 (* Properties with parallel rst-compuutation on closures ********************)
 
-lemma fpbs_fpbg_trans: ∀h,G1,G,L1,L,T1,T. ❪G1,L1,T1❫ ≥[h] ❪G,L,T❫ →
-                       ∀G2,L2,T2. ❪G,L,T❫ >[h] ❪G2,L2,T2❫ → ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
-#h #G1 #G #L1 #L #T1 #T #H @(fpbs_ind … H) -G -L -T /3 width=5 by fpbq_fpbg_trans/
+lemma fpbs_fpbg_trans:
+      ∀G1,G,L1,L,T1,T. ❪G1,L1,T1❫ ≥ ❪G,L,T❫ →
+      ∀G2,L2,T2. ❪G,L,T❫ > ❪G2,L2,T2❫ → ❪G1,L1,T1❫ > ❪G2,L2,T2❫.
+#G1 #G #L1 #L #T1 #T #H @(fpbs_ind … H) -G -L -T /3 width=5 by fpbq_fpbg_trans/
 qed-.
 
 (* Advanced properties with plus-iterated structural successor for closures *)
 
-lemma fqup_fpbg_trans (h):
+lemma fqup_fpbg_trans:
       ∀G1,G,L1,L,T1,T. ❪G1,L1,T1❫ ⬂+ ❪G,L,T❫ →
-      ∀G2,L2,T2. ❪G,L,T❫ >[h] ❪G2,L2,T2❫ → ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
+      ∀G2,L2,T2. ❪G,L,T❫ > ❪G2,L2,T2❫ → ❪G1,L1,T1❫ > ❪G2,L2,T2❫.
 /3 width=5 by fpbs_fpbg_trans, fqup_fpbs/ qed-.
 
 (* Advanced inversion lemmas of parallel rst-computation on closures ********)
 
 (* Basic_2A1: was: fpbs_fpbg *)
-lemma fpbs_inv_fpbg: ∀h,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫ →
-                     ∨∨ ❪G1,L1,T1❫ ≛ ❪G2,L2,T2❫
-                      | ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
-#h #G1 #G2 #L1 #L2 #T1 #T2 #H @(fpbs_ind … H) -G2 -L2 -T2
+lemma fpbs_inv_fpbg:
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫ →
+      ∨∨ ❪G1,L1,T1❫ ≛ ❪G2,L2,T2❫
+       | ❪G1,L1,T1❫ > ❪G2,L2,T2❫.
+#G1 #G2 #L1 #L2 #T1 #T2 #H @(fpbs_ind … H) -G2 -L2 -T2
 [ /2 width=1 by or_introl/
 | #G #G2 #L #L2 #T #T2 #_ #H2 * #H1
   elim (fpbq_inv_fpb … H2) -H2 #H2
@@ -89,10 +95,11 @@ qed-.
 
 (* Advanced properties of parallel rst-computation on closures **************)
 
-lemma fpbs_fpb_trans: ∀h,F1,F2,K1,K2,T1,T2. ❪F1,K1,T1❫ ≥[h] ❪F2,K2,T2❫ →
-                      ∀G2,L2,U2. ❪F2,K2,T2❫ ≻[h] ❪G2,L2,U2❫ →
-                      ∃∃G1,L1,U1. ❪F1,K1,T1❫ ≻[h] ❪G1,L1,U1❫ & ❪G1,L1,U1❫ ≥[h] ❪G2,L2,U2❫.
-#h #F1 #F2 #K1 #K2 #T1 #T2 #H elim (fpbs_inv_fpbg … H) -H
+lemma fpbs_fpb_trans:
+      ∀F1,F2,K1,K2,T1,T2. ❪F1,K1,T1❫ ≥ ❪F2,K2,T2❫ →
+      ∀G2,L2,U2. ❪F2,K2,T2❫ ≻ ❪G2,L2,U2❫ →
+      ∃∃G1,L1,U1. ❪F1,K1,T1❫ ≻ ❪G1,L1,U1❫ & ❪G1,L1,U1❫ ≥ ❪G2,L2,U2❫.
+#F1 #F2 #K1 #K2 #T1 #T2 #H elim (fpbs_inv_fpbg … H) -H
 [ #H12 #G2 #L2 #U2 #H2 elim (feqx_fpb_trans … H12 … H2) -F2 -K2 -T2
   /3 width=5 by feqx_fpbs, ex2_3_intro/
 | * #H1 #H2 #H3 #H4 #H5 #H6 #H7 #H8 #H9
index 029c086d30775c1e08a94e451f6c6fcbb4f0074d..71451e88698309a1a512ffe9b23f0476d49d7b0f 100644 (file)
@@ -19,14 +19,16 @@ include "basic_2/rt_computation/fpbg.ma".
 
 (* Advanced properties with sort-irrelevant equivalence for terms ***********)
 
-lemma fpbg_teqx_div: ∀h,G1,G2,L1,L2,T1,T. ❪G1,L1,T1❫ >[h] ❪G2,L2,T❫ →
-                     ∀T2. T2 ≛ T → ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
+lemma fpbg_teqx_div:
+      ∀G1,G2,L1,L2,T1,T. ❪G1,L1,T1❫ > ❪G2,L2,T❫ →
+      ∀T2. T2 ≛ T → ❪G1,L1,T1❫ > ❪G2,L2,T2❫.
 /4 width=5 by fpbg_feqx_trans, teqx_feqx, teqx_sym/ qed-.
 
 (* Properties with plus-iterated structural successor for closures **********)
 
 (* Note: this is used in the closure proof *)
-lemma fqup_fpbg: ∀h,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂+ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫.
-#h #G1 #G2 #L1 #L2 #T1 #T2 #H elim (fqup_inv_step_sn … H) -H
+lemma fqup_fpbg:
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂+ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ > ❪G2,L2,T2❫.
+#G1 #G2 #L1 #L2 #T1 #T2 #H elim (fqup_inv_step_sn … H) -H
 /3 width=5 by fqus_fpbs, fpb_fqu, ex2_3_intro/
 qed.
index 2893e58e55fa3b73b80b0f5cbad0d8318b7994a2..1864df4b31c96adc0598052856056b2b4d46ea83 100644 (file)
@@ -17,12 +17,13 @@ include "basic_2/rt_computation/fpbg.ma".
 
 (* PROPER PARALLEL RST-COMPUTATION FOR CLOSURES *****************************)
 
-(* Properties with unbound rt-computation on full local environments ********)
+(* Properties with extended rt-computation on full local environments *******)
 
 (* Basic_2A1: uses: lpxs_fpbg *)
-lemma lpxs_rneqx_fpbg: ∀h,G,L1,L2,T. ❪G,L1❫ ⊢ ⬈*[h] L2 →
-                       (L1 ≛[T] L2 → ⊥) → ❪G,L1,T❫ >[h] ❪G,L2,T❫.
-#h #G #L1 #L2 #T #H #H0
+lemma lpxs_rneqx_fpbg:
+      ∀G,L1,L2,T. ❪G,L1❫ ⊢ ⬈* L2 →
+      (L1 ≛[T] L2 → ⊥) → ❪G,L1,T❫ > ❪G,L2,T❫.
+#G #L1 #L2 #T #H #H0
 elim (lpxs_rneqx_inv_step_sn … H … H0) -H -H0
 /4 width=7 by fpb_lpx, lpxs_feqx_fpbs, feqx_intro_sn, ex2_3_intro/
 qed.
index a945cf34c132c564eebb503c1cbd06fd3b739664..827912dfa000fe5fd6728e228925703d3f6b6f55 100644 (file)
 (**************************************************************************)
 
 include "ground/lib/star.ma".
-include "basic_2/notation/relations/predsubtystar_7.ma".
+include "basic_2/notation/relations/predsubtystar_6.ma".
 include "basic_2/rt_transition/fpbq.ma".
 
 (* PARALLEL RST-COMPUTATION FOR CLOSURES ************************************)
 
-definition fpbs: ∀h. tri_relation genv lenv term ≝
-                 λh. tri_TC … (fpbq h).
+definition fpbs: tri_relation genv lenv term ≝
+           tri_TC … fpbq.
 
-interpretation "parallel rst-computation (closure)"
-   'PRedSubTyStar  h G1 L1 T1 G2 L2 T2 = (fpbs h G1 L1 T1 G2 L2 T2).
+interpretation
+  "parallel rst-computation (closure)"
+  'PRedSubTyStar  G1 L1 T1 G2 L2 T2 = (fpbs G1 L1 T1 G2 L2 T2).
 
 (* Basic eliminators ********************************************************)
 
-lemma fpbs_ind: ∀h,G1,L1,T1. ∀Q:relation3 genv lenv term. Q G1 L1 T1 →
-                (∀G,G2,L,L2,T,T2. ❪G1,L1,T1❫ ≥[h] ❪G,L,T❫ → ❪G,L,T❫ ≽[h] ❪G2,L2,T2❫ → Q G L T → Q G2 L2 T2) →
-                ∀G2,L2,T2. ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫ → Q G2 L2 T2.
+lemma fpbs_ind:
+      ∀G1,L1,T1. ∀Q:relation3 genv lenv term. Q G1 L1 T1 →
+      (∀G,G2,L,L2,T,T2. ❪G1,L1,T1❫ ≥ ❪G,L,T❫ → ❪G,L,T❫ ≽ ❪G2,L2,T2❫ → Q G L T → Q G2 L2 T2) →
+      ∀G2,L2,T2. ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫ → Q G2 L2 T2.
 /3 width=8 by tri_TC_star_ind/ qed-.
 
-lemma fpbs_ind_dx: ∀h,G2,L2,T2. ∀Q:relation3 genv lenv term. Q G2 L2 T2 →
-                   (∀G1,G,L1,L,T1,T. ❪G1,L1,T1❫ ≽[h] ❪G,L,T❫ → ❪G,L,T❫ ≥[h] ❪G2,L2,T2❫ → Q G L T → Q G1 L1 T1) →
-                   ∀G1,L1,T1. ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫ → Q G1 L1 T1.
+lemma fpbs_ind_dx:
+      ∀G2,L2,T2. ∀Q:relation3 genv lenv term. Q G2 L2 T2 →
+      (∀G1,G,L1,L,T1,T. ❪G1,L1,T1❫ ≽ ❪G,L,T❫ → ❪G,L,T❫ ≥ ❪G2,L2,T2❫ → Q G L T → Q G1 L1 T1) →
+      ∀G1,L1,T1. ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫ → Q G1 L1 T1.
 /3 width=8 by tri_TC_star_ind_dx/ qed-.
 
 (* Basic properties *********************************************************)
 
-lemma fpbs_refl: ∀h. tri_reflexive … (fpbs h).
+lemma fpbs_refl:
+      tri_reflexive … fpbs.
 /2 width=1 by tri_inj/ qed.
 
-lemma fpbq_fpbs: ∀h,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≽[h] ❪G2,L2,T2❫ →
-                 ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
+lemma fpbq_fpbs:
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≽ ❪G2,L2,T2❫ →
+      ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
 /2 width=1 by tri_inj/ qed.
 
-lemma fpbs_strap1: ∀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❫.
+lemma fpbs_strap1:
+      ∀G1,G,G2,L1,L,L2,T1,T,T2. ❪G1,L1,T1❫ ≥ ❪G,L,T❫ →
+      ❪G,L,T❫ ≽ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
 /2 width=5 by tri_step/ qed-.
 
-lemma fpbs_strap2: ∀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❫.
+lemma fpbs_strap2:
+      ∀G1,G,G2,L1,L,L2,T1,T,T2. ❪G1,L1,T1❫ ≽ ❪G,L,T❫ →
+      ❪G,L,T❫ ≥ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
 /2 width=5 by tri_TC_strap/ qed-.
 
 (* Basic_2A1: uses: lleq_fpbs fleq_fpbs *)
-lemma feqx_fpbs: ∀h,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≛ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
+lemma feqx_fpbs:
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≛ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
 /3 width=1 by fpbq_fpbs, fpbq_feqx/ qed.
 
 (* Basic_2A1: uses: fpbs_lleq_trans *)
-lemma fpbs_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 fpbs_feqx_trans:
+      ∀G1,G,L1,L,T1,T. ❪G1,L1,T1❫ ≥ ❪G,L,T❫ →
+      ∀G2,L2,T2. ❪G,L,T❫ ≛ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
 /3 width=9 by fpbs_strap1, fpbq_feqx/ qed-.
 
 (* Basic_2A1: uses: lleq_fpbs_trans *)
-lemma feqx_fpbs_trans: ∀h,G,G2,L,L2,T,T2. ❪G,L,T❫ ≥[h] ❪G2,L2,T2❫ →
-                       ∀G1,L1,T1. ❪G1,L1,T1❫ ≛ ❪G,L,T❫ → ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
+lemma feqx_fpbs_trans:
+      ∀G,G2,L,L2,T,T2. ❪G,L,T❫ ≥ ❪G2,L2,T2❫ →
+      ∀G1,L1,T1. ❪G1,L1,T1❫ ≛ ❪G,L,T❫ → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
 /3 width=5 by fpbs_strap2, fpbq_feqx/ qed-.
 
-lemma teqx_reqx_lpx_fpbs: ∀h,T1,T2. T1 ≛ T2 → ∀L1,L0. L1 ≛[T2] L0 →
-                          ∀G,L2. ❪G,L0❫ ⊢ ⬈[h] L2 → ❪G,L1,T1❫ ≥[h] ❪G,L2,T2❫.
+lemma teqx_reqx_lpx_fpbs:
+      ∀T1,T2. T1 ≛ T2 → ∀L1,L0. L1 ≛[T2] L0 →
+      ∀G,L2. ❪G,L0❫ ⊢ ⬈ L2 → ❪G,L1,T1❫ ≥ ❪G,L2,T2❫.
 /4 width=5 by feqx_fpbs, fpbs_strap1, fpbq_lpx, feqx_intro_dx/ qed.
 
 (* Basic_2A1: removed theorems 3:
index 9a54fb6c5de04e63c56139d06b0d681f9caa1187..94a8229990784fa043d6623adab38ba815d4e825 100644 (file)
@@ -19,9 +19,10 @@ include "basic_2/rt_computation/fpbs.ma".
 
 (* Properties with atomic arity assignment for terms ************************)
 
-lemma fpbs_aaa_conf: ∀h,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫ →
-                     ∀A1. ❪G1,L1❫ ⊢ T1 ⁝ A1 → ∃A2. ❪G2,L2❫ ⊢ T2 ⁝ A2.
-#h #G1 #G2 #L1 #L2 #T1 #T2 #H @(fpbs_ind … H) -G2 -L2 -T2 /2 width=2 by ex_intro/
+lemma fpbs_aaa_conf:
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫ →
+      ∀A1. ❪G1,L1❫ ⊢ T1 ⁝ A1 → ∃A2. ❪G2,L2❫ ⊢ T2 ⁝ A2.
+#G1 #G2 #L1 #L2 #T1 #T2 #H @(fpbs_ind … H) -G2 -L2 -T2 /2 width=2 by ex_intro/
 #G #G2 #L #L2 #T #T2 #_ #H2 #IH1 #A #HA elim (IH1 … HA) -IH1 -A
 /2 width=8 by fpbq_aaa_conf/
 qed-.
index 536e532a4b084056066e1e493e0b401274071ed4..5127496b10aa609b1953cfade6f087c81fcc767a 100644 (file)
@@ -18,13 +18,14 @@ include "basic_2/rt_computation/fpbs_lpxs.ma".
 
 (* PARALLEL RST-COMPUTATION FOR CLOSURES ************************************)
 
-(* Properties with unbound context-sensitive parallel rt-transition *********)
+(* Properties with extended context-sensitive parallel rt-transition ********)
 
 (* Basic_2A1: uses: fpbs_cpx_trans_neq *)
-lemma fpbs_cpx_tneqx_trans: ∀h,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫ →
-                            ∀U2. ❪G2,L2❫ ⊢ T2 ⬈[h] U2 → (T2 ≛ U2 → ⊥) →
-                            ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈[h] U1 & T1 ≛ U1 → ⊥ & ❪G1,L1,U1❫ ≥[h] ❪G2,L2,U2❫.
-#h #G1 #G2 #L1 #L2 #T1 #T2 #H #U2 #HTU2 #HnTU2
+lemma fpbs_cpx_tneqx_trans:
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫ →
+      ∀U2. ❪G2,L2❫ ⊢ T2 ⬈ U2 → (T2 ≛ U2 → ⊥) →
+      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈ U1 & T1 ≛ U1 → ⊥ & ❪G1,L1,U1❫ ≥ ❪G2,L2,U2❫.
+#G1 #G2 #L1 #L2 #T1 #T2 #H #U2 #HTU2 #HnTU2
 elim (fpbs_inv_star … H) -H #G0 #L0 #L3 #T0 #T3 #HT10 #H10 #HL03 #H32
 elim (feqx_cpx_trans … H32 … HTU2) -HTU2 #T4 #HT34 #H42
 lapply (feqx_tneqx_repl_dx … H32 … H42 … HnTU2) -T2 #HnT34
index 872882627045d743ec98602281c9a1af8e8fde72..ec9cf1bb57e49d51f0dea0fa36f7945adf5cd64b 100644 (file)
@@ -17,42 +17,48 @@ include "basic_2/rt_computation/fpbs_fqup.ma".
 
 (* PARALLEL RST-COMPUTATION FOR CLOSURES ************************************)
 
-(* Properties with unbound context-sensitive parallel rt-computation ********)
+(* Properties with extended context-sensitive parallel rt-computation *******)
 
-lemma cpxs_fpbs: ∀h,G,L,T1,T2. ❪G,L❫ ⊢ T1 ⬈*[h] T2 → ❪G,L,T1❫ ≥[h] ❪G,L,T2❫.
-#h #G #L #T1 #T2 #H @(cpxs_ind … H) -T2
+lemma cpxs_fpbs:
+      ∀G,L,T1,T2. ❪G,L❫ ⊢ T1 ⬈* T2 → ❪G,L,T1❫ ≥ ❪G,L,T2❫.
+#G #L #T1 #T2 #H @(cpxs_ind … H) -T2
 /3 width=5 by fpbq_cpx, fpbs_strap1/
 qed.
 
-lemma fpbs_cpxs_trans: ∀h,G1,G,L1,L,T1,T. ❪G1,L1,T1❫ ≥[h] ❪G,L,T❫ →
-                       ∀T2. ❪G,L❫ ⊢ T ⬈*[h] T2 → ❪G1,L1,T1❫ ≥[h] ❪G,L,T2❫.
-#h #G1 #G #L1 #L #T1 #T #H1 #T2 #H @(cpxs_ind … H) -T2
+lemma fpbs_cpxs_trans:
+      ∀G1,G,L1,L,T1,T. ❪G1,L1,T1❫ ≥ ❪G,L,T❫ →
+      ∀T2. ❪G,L❫ ⊢ T ⬈* T2 → ❪G1,L1,T1❫ ≥ ❪G,L,T2❫.
+#G1 #G #L1 #L #T1 #T #H1 #T2 #H @(cpxs_ind … H) -T2
 /3 width=5 by fpbs_strap1, fpbq_cpx/
 qed-.
 
-lemma cpxs_fpbs_trans: ∀h,G1,G2,L1,L2,T,T2. ❪G1,L1,T❫ ≥[h] ❪G2,L2,T2❫ →
-                       ∀T1. ❪G1,L1❫ ⊢ T1 ⬈*[h] T → ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
-#h #G1 #G2 #L1 #L2 #T #T2 #H1 #T1 #H @(cpxs_ind_dx … H) -T1
+lemma cpxs_fpbs_trans:
+      ∀G1,G2,L1,L2,T,T2. ❪G1,L1,T❫ ≥ ❪G2,L2,T2❫ →
+      ∀T1. ❪G1,L1❫ ⊢ T1 ⬈* T → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
+#G1 #G2 #L1 #L2 #T #T2 #H1 #T1 #H @(cpxs_ind_dx … H) -T1
 /3 width=5 by fpbs_strap2, fpbq_cpx/
 qed-.
 
-lemma cpxs_teqx_fpbs_trans: ∀h,G1,L1,T1,T. ❪G1,L1❫ ⊢ T1 ⬈*[h] T →
-                            ∀T0. T ≛ T0 →
-                            ∀G2,L2,T2. ❪G1,L1,T0❫ ≥[h] ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
+lemma cpxs_teqx_fpbs_trans:
+      ∀G1,L1,T1,T. ❪G1,L1❫ ⊢ T1 ⬈* T → ∀T0. T ≛ T0 →
+      ∀G2,L2,T2. ❪G1,L1,T0❫ ≥ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
 /3 width=3 by cpxs_fpbs_trans, teqx_fpbs_trans/ qed-.
 
-lemma cpxs_teqx_fpbs: ∀h,G,L,T1,T. ❪G,L❫ ⊢ T1 ⬈*[h] T →
-                      ∀T2. T ≛ T2 → ❪G,L,T1❫ ≥[h] ❪G,L,T2❫.
+lemma cpxs_teqx_fpbs:
+      ∀G,L,T1,T. ❪G,L❫ ⊢ T1 ⬈* T →
+      ∀T2. T ≛ T2 → ❪G,L,T1❫ ≥ ❪G,L,T2❫.
 /4 width=3 by cpxs_fpbs_trans, feqx_fpbs, teqx_feqx/ qed.
 
 (* Properties with star-iterated structural successor for closures **********)
 
-lemma cpxs_fqus_fpbs: ∀h,G1,L1,T1,T. ❪G1,L1❫ ⊢ T1 ⬈*[h] T →
-                      ∀G2,L2,T2. ❪G1,L1,T❫ ⬂* ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
+lemma cpxs_fqus_fpbs:
+      ∀G1,L1,T1,T. ❪G1,L1❫ ⊢ T1 ⬈* T →
+      ∀G2,L2,T2. ❪G1,L1,T❫ ⬂* ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
 /3 width=5 by fpbs_fqus_trans, cpxs_fpbs/ qed.
 
 (* Properties with plus-iterated structural successor for closures **********)
 
-lemma cpxs_fqup_fpbs: ∀h,G1,L1,T1,T. ❪G1,L1❫ ⊢ T1 ⬈*[h] T →
-                      ∀G2,L2,T2. ❪G1,L1,T❫ ⬂+ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
+lemma cpxs_fqup_fpbs:
+      ∀G1,L1,T1,T. ❪G1,L1❫ ⊢ T1 ⬈* T →
+      ∀G2,L2,T2. ❪G1,L1,T❫ ⬂+ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
 /3 width=5 by fpbs_fqup_trans, cpxs_fpbs/ qed.
index 4a1349f1ad3317ba960ad9d1970959d9b3a45c17..c68d3a6610b4e36365cf9310da8f233876469343 100644 (file)
@@ -17,11 +17,12 @@ include "basic_2/rt_computation/fpbs.ma".
 
 (* PARALLEL RST-COMPUTATION FOR CLOSURES ************************************)
 
-(* Properties with sn for unbound parallel rt-transition for terms **********)
+(* Properties with sn for extended parallel rt-transition for terms *********)
 
 (* Basic_2A1: was: csx_fpbs_conf *)
-lemma fpbs_csx_conf: ∀h,G1,L1,T1. ❪G1,L1❫ ⊢ ⬈*𝐒[h] T1 →
-                     ∀G2,L2,T2. ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫ → ❪G2,L2❫ ⊢ ⬈*𝐒[h] T2.
-#h #G1 #L1 #T1 #HT1 #G2 #L2 #T2 #H @(fpbs_ind … H) -G2 -L2 -T2
+lemma fpbs_csx_conf:
+      ∀G1,L1,T1. ❪G1,L1❫ ⊢ ⬈*𝐒 T1 →
+      ∀G2,L2,T2. ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫ → ❪G2,L2❫ ⊢ ⬈*𝐒 T2.
+#G1 #L1 #T1 #HT1 #G2 #L2 #T2 #H @(fpbs_ind … H) -G2 -L2 -T2
 /2 width=5 by csx_fpbq_conf/
 qed-.
index 711bb73a760eedf65076506059ed210f3dca5ab6..73715fc3a0fefc9269f2604612838be752b2783a 100644 (file)
@@ -19,6 +19,7 @@ include "basic_2/rt_computation/fpbs.ma".
 
 (* Properties with proper parallel rst-reduction on closures ****************)
 
-lemma fpb_fpbs: ∀h,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≻[h] ❪G2,L2,T2❫ →
-                ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
+lemma fpb_fpbs:
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≻ ❪G2,L2,T2❫ →
+      ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
 /3 width=1 by fpbq_fpbs, fpb_fpbq/ qed.
index 6e75949fc07b855c5532624a4518f72e0d2d3190..7f0815322b76774a7bc09e9b5ac4bad62e4ff5f6 100644 (file)
@@ -18,5 +18,6 @@ include "basic_2/rt_computation/fpbs.ma".
 
 (* Main properties **********************************************************)
 
-theorem fpbs_trans: ∀h. tri_transitive … (fpbs h).
+theorem fpbs_trans:
+        tri_transitive … fpbs.
 /2 width=5 by tri_TC_transitive/ qed-.
index 72c12b91e721c5591db79a5afad97bc0f5f45f6b..9cd35030d018d738f6aea4bc0d456edbbec04695 100644 (file)
@@ -20,26 +20,30 @@ include "basic_2/rt_computation/fpbs_fqus.ma".
 
 (* Advanced properties ******************************************************)
 
-lemma teqx_fpbs_trans: ∀h,T1,T. T1 ≛ T →
-                       ∀G1,G2,L1,L2,T2. ❪G1,L1,T❫ ≥[h] ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
+lemma teqx_fpbs_trans:
+      ∀T1,T. T1 ≛ T →
+      ∀G1,G2,L1,L2,T2. ❪G1,L1,T❫ ≥ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
 /3 width=5 by feqx_fpbs_trans, teqx_feqx/ qed-.
 
-lemma fpbs_teqx_trans: ∀h,G1,G2,L1,L2,T1,T. ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T❫ →
-                       ∀T2. T ≛ T2 →  ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
+lemma fpbs_teqx_trans:
+      ∀G1,G2,L1,L2,T1,T. ❪G1,L1,T1❫ ≥ ❪G2,L2,T❫ →
+      ∀T2. T ≛ T2 → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
 /3 width=5 by fpbs_feqx_trans, teqx_feqx/ qed-.
 
 (* Properties with plus-iterated structural successor for closures **********)
 
-lemma fqup_fpbs: ∀h,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂+ ❪G2,L2,T2❫ →
-                 ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
-#h #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind … H) -G2 -L2 -T2
+lemma fqup_fpbs:
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂+ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
+#G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind … H) -G2 -L2 -T2
 /4 width=5 by fqu_fquq, fpbq_fquq, tri_step/
 qed.
 
-lemma fpbs_fqup_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 fpbs_fqup_trans:
+      ∀G1,G,L1,L,T1,T. ❪G1,L1,T1❫ ≥ ❪G,L,T❫ →
+      ∀G2,L2,T2. ❪G,L,T❫ ⬂+ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
 /3 width=5 by fpbs_fqus_trans, fqup_fqus/ qed-.
 
-lemma fqup_fpbs_trans: ∀h,G,G2,L,L2,T,T2. ❪G,L,T❫ ≥[h] ❪G2,L2,T2❫ →
-                       ∀G1,L1,T1. ❪G1,L1,T1❫ ⬂+ ❪G,L,T❫ → ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
+lemma fqup_fpbs_trans:
+      ∀G,G2,L,L2,T,T2. ❪G,L,T❫ ≥ ❪G2,L2,T2❫ →
+      ∀G1,L1,T1. ❪G1,L1,T1❫ ⬂+ ❪G,L,T❫ → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
 /3 width=5 by fqus_fpbs_trans, fqup_fqus/ qed-.
index 808c2615b8778b370b886391c0bdb01f4d38db45..3476c11d59b46fff31473e27a2b8e7006fc03ce0 100644 (file)
@@ -19,20 +19,23 @@ include "basic_2/rt_computation/fpbs.ma".
 
 (* Properties with star-iterated structural successor for closures **********)
 
-lemma fqus_fpbs: ∀h,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂* ❪G2,L2,T2❫ →
-                 ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
-#h #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqus_ind … H) -G2 -L2 -T2
+lemma fqus_fpbs:
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂* ❪G2,L2,T2❫ →
+      ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
+#G1 #G2 #L1 #L2 #T1 #T2 #H @(fqus_ind … H) -G2 -L2 -T2
 /3 width=5 by fpbq_fquq, tri_step/
 qed.
 
-lemma fpbs_fqus_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❫.
-#h #G1 #G #L1 #L #T1 #T #H1 #G2 #L2 #T2 #H @(fqus_ind … H) -G2 -L2 -T2
+lemma fpbs_fqus_trans:
+      ∀G1,G,L1,L,T1,T. ❪G1,L1,T1❫ ≥ ❪G,L,T❫ →
+      ∀G2,L2,T2. ❪G,L,T❫ ⬂* ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
+#G1 #G #L1 #L #T1 #T #H1 #G2 #L2 #T2 #H @(fqus_ind … H) -G2 -L2 -T2
 /3 width=5 by fpbs_strap1, fpbq_fquq/
 qed-.
 
-lemma fqus_fpbs_trans: ∀h,G,G2,L,L2,T,T2. ❪G,L,T❫ ≥[h] ❪G2,L2,T2❫ →
-                       ∀G1,L1,T1. ❪G1,L1,T1❫ ⬂* ❪G,L,T❫ → ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
-#h #G #G2 #L #L2 #T #T2 #H1 #G1 #L1 #T1 #H @(fqus_ind_dx … H) -G1 -L1 -T1
+lemma fqus_fpbs_trans:
+      ∀G,G2,L,L2,T,T2. ❪G,L,T❫ ≥ ❪G2,L2,T2❫ →
+      ∀G1,L1,T1. ❪G1,L1,T1❫ ⬂* ❪G,L,T❫ → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
+#G #G2 #L #L2 #T #T2 #H1 #G1 #L1 #T1 #H @(fqus_ind_dx … H) -G1 -L1 -T1
 /3 width=5 by fpbs_strap2, fpbq_fquq/
 qed-.
index 857f394d95f8a125d01c2aad6cda6bf7ad7de6aa..92fd0dd561db4a353e4de4dc056af4850f4e689b 100644 (file)
@@ -21,52 +21,60 @@ include "basic_2/rt_computation/fpbs_cpxs.ma".
 
 (* PARALLEL RST-COMPUTATION FOR CLOSURES ************************************)
 
-(* Properties with unbound rt-computation on full local environments  *******)
+(* Properties with extended rt-computation on full local environments  ******)
 
-lemma lpxs_fpbs: ∀h,G,L1,L2,T. ❪G,L1❫ ⊢ ⬈*[h] L2 → ❪G,L1,T❫ ≥[h] ❪G,L2,T❫.
-#h #G #L1 #L2 #T #H @(lpxs_ind_dx … H) -L2
+lemma lpxs_fpbs:
+      ∀G,L1,L2,T. ❪G,L1❫ ⊢ ⬈* L2 → ❪G,L1,T❫ ≥ ❪G,L2,T❫.
+#G #L1 #L2 #T #H @(lpxs_ind_dx … H) -L2
 /3 width=5 by fpbq_lpx, fpbs_strap1/
 qed.
 
-lemma fpbs_lpxs_trans: ∀h,G1,G2,L1,L,T1,T2. ❪G1,L1,T1❫ ≥[h] ❪G2,L,T2❫ →
-                       ∀L2. ❪G2,L❫ ⊢ ⬈*[h] L2 → ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
-#h #G1 #G2 #L1 #L #T1 #T2 #H1 #L2 #H @(lpxs_ind_dx … H) -L2
+lemma fpbs_lpxs_trans:
+      ∀G1,G2,L1,L,T1,T2. ❪G1,L1,T1❫ ≥ ❪G2,L,T2❫ →
+      ∀L2. ❪G2,L❫ ⊢ ⬈* L2 → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
+#G1 #G2 #L1 #L #T1 #T2 #H1 #L2 #H @(lpxs_ind_dx … H) -L2
 /3 width=5 by fpbs_strap1, fpbq_lpx/
 qed-.
 
-lemma lpxs_fpbs_trans: ∀h,G1,G2,L,L2,T1,T2. ❪G1,L,T1❫ ≥[h] ❪G2,L2,T2❫ →
-                       ∀L1. ❪G1,L1❫ ⊢ ⬈*[h] L → ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
-#h #G1 #G2 #L #L2 #T1 #T2 #H1 #L1 #H @(lpxs_ind_sn … H) -L1
+lemma lpxs_fpbs_trans:
+      ∀G1,G2,L,L2,T1,T2. ❪G1,L,T1❫ ≥ ❪G2,L2,T2❫ →
+      ∀L1. ❪G1,L1❫ ⊢ ⬈* L → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
+#G1 #G2 #L #L2 #T1 #T2 #H1 #L1 #H @(lpxs_ind_sn … H) -L1
 /3 width=5 by fpbs_strap2, fpbq_lpx/
 qed-.
 
 (* Basic_2A1: uses: lpxs_lleq_fpbs *)
-lemma lpxs_feqx_fpbs: ∀h,G1,L1,L,T1. ❪G1,L1❫ ⊢ ⬈*[h] L →
-                      ∀G2,L2,T2. ❪G1,L,T1❫ ≛ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
+lemma lpxs_feqx_fpbs:
+      ∀G1,L1,L,T1. ❪G1,L1❫ ⊢ ⬈* L →
+      ∀G2,L2,T2. ❪G1,L,T1❫ ≛ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
 /3 width=3 by lpxs_fpbs_trans, feqx_fpbs/ qed.
 
-lemma fpbs_lpx_trans: ∀h,G1,G2,L1,L,T1,T2. ❪G1,L1,T1❫ ≥[h] ❪G2,L,T2❫ →
-                      ∀L2. ❪G2,L❫ ⊢ ⬈[h] L2 → ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
+lemma fpbs_lpx_trans:
+      ∀G1,G2,L1,L,T1,T2. ❪G1,L1,T1❫ ≥ ❪G2,L,T2❫ →
+      ∀L2. ❪G2,L❫ ⊢ ⬈ L2 → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
 /3 width=3 by fpbs_lpxs_trans, lpx_lpxs/ qed-.
 
 (* Properties with star-iterated structural successor for closures **********)
 
-lemma fqus_lpxs_fpbs: ∀h,G1,G2,L1,L,T1,T2. ❪G1,L1,T1❫ ⬂* ❪G2,L,T2❫ →
-                      ∀L2. ❪G2,L❫ ⊢ ⬈*[h] L2 → ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
+lemma fqus_lpxs_fpbs:
+      ∀G1,G2,L1,L,T1,T2. ❪G1,L1,T1❫ ⬂* ❪G2,L,T2❫ →
+      ∀L2. ❪G2,L❫ ⊢ ⬈* L2 → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
 /3 width=3 by fpbs_lpxs_trans, fqus_fpbs/ qed.
 
-(* Properties with unbound context-sensitive parallel rt-computation ********)
+(* Properties with extended context-sensitive parallel rt-computation *******)
 
-lemma cpxs_fqus_lpxs_fpbs: ∀h,G1,L1,T1,T. ❪G1,L1❫ ⊢ T1 ⬈*[h] T →
-                           ∀G2,L,T2. ❪G1,L1,T❫ ⬂* ❪G2,L,T2❫ →
-                           ∀L2.❪G2,L❫ ⊢ ⬈*[h] L2 → ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫.
+lemma cpxs_fqus_lpxs_fpbs:
+      ∀G1,L1,T1,T. ❪G1,L1❫ ⊢ T1 ⬈* T →
+      ∀G2,L,T2. ❪G1,L1,T❫ ⬂* ❪G2,L,T2❫ →
+      ∀L2.❪G2,L❫ ⊢ ⬈* L2 → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫.
 /3 width=5 by cpxs_fqus_fpbs, fpbs_lpxs_trans/ qed.
 
-lemma fpbs_cpxs_teqx_fqup_lpx_trans: ∀h,G1,G3,L1,L3,T1,T3. ❪G1,L1,T1❫ ≥ [h] ❪G3,L3,T3❫ →
-                                     ∀T4. ❪G3,L3❫ ⊢ T3 ⬈*[h] T4 → ∀T5. T4 ≛ T5 →
-                                     ∀G2,L4,T2. ❪G3,L3,T5❫ ⬂+ ❪G2,L4,T2❫ →
-                                     ∀L2. ❪G2,L4❫ ⊢ ⬈[h] L2 → ❪G1,L1,T1❫ ≥ [h] ❪G2,L2,T2❫.
-#h #G1 #G3 #L1 #L3 #T1 #T3 #H13 #T4 #HT34 #T5 #HT45 #G2 #L4 #T2 #H34 #L2 #HL42
+lemma fpbs_cpxs_teqx_fqup_lpx_trans:
+      ∀G1,G3,L1,L3,T1,T3. ❪G1,L1,T1❫ ≥  ❪G3,L3,T3❫ →
+      ∀T4. ❪G3,L3❫ ⊢ T3 ⬈* T4 → ∀T5. T4 ≛ T5 →
+      ∀G2,L4,T2. ❪G3,L3,T5❫ ⬂+ ❪G2,L4,T2❫ →
+      ∀L2. ❪G2,L4❫ ⊢ ⬈ L2 → ❪G1,L1,T1❫ ≥  ❪G2,L2,T2❫.
+#G1 #G3 #L1 #L3 #T1 #T3 #H13 #T4 #HT34 #T5 #HT45 #G2 #L4 #T2 #H34 #L2 #HL42
 @(fpbs_lpx_trans … HL42) -L2 (**) (* full auto too slow *)
 @(fpbs_fqup_trans … H34) -G2 -L4 -T2
 /3 width=3 by fpbs_cpxs_trans, fpbs_teqx_trans/
@@ -75,19 +83,20 @@ qed-.
 (* Advanced properties ******************************************************)
 
 (* Basic_2A1: uses: fpbs_intro_alt *)
-lemma fpbs_intro_star: ∀h,G1,L1,T1,T. ❪G1,L1❫ ⊢ T1 ⬈*[h] T →
-                       ∀G,L,T0. ❪G1,L1,T❫ ⬂* ❪G,L,T0❫ →
-                       ∀L0. ❪G,L❫ ⊢ ⬈*[h] L0 →
-                       ∀G2,L2,T2. ❪G,L0,T0❫ ≛ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫ .
+lemma fpbs_intro_star:
+      ∀G1,L1,T1,T. ❪G1,L1❫ ⊢ T1 ⬈* T →
+      ∀G,L,T0. ❪G1,L1,T❫ ⬂* ❪G,L,T0❫ →
+      ∀L0. ❪G,L❫ ⊢ ⬈* L0 →
+      ∀G2,L2,T2. ❪G,L0,T0❫ ≛ ❪G2,L2,T2❫ → ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫ .
 /3 width=5 by cpxs_fqus_lpxs_fpbs, fpbs_strap1, fpbq_feqx/ qed.
 
 (* Advanced inversion lemmas *************************************************)
 
 (* Basic_2A1: uses: fpbs_inv_alt *)
-lemma fpbs_inv_star: ∀h,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫ →
-                     ∃∃G,L,L0,T,T0. ❪G1,L1❫ ⊢ T1 ⬈*[h] T & ❪G1,L1,T❫ ⬂* ❪G,L,T0❫
-                                  & ❪G,L❫ ⊢ ⬈*[h] L0 & ❪G,L0,T0❫ ≛ ❪G2,L2,T2❫.
-#h #G1 #G2 #L1 #L2 #T1 #T2 #H @(fpbs_ind_dx … H) -G1 -L1 -T1
+lemma fpbs_inv_star:
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫ →
+      ∃∃G,L,L0,T,T0. ❪G1,L1❫ ⊢ T1 ⬈* T & ❪G1,L1,T❫ ⬂* ❪G,L,T0❫ & ❪G,L❫ ⊢ ⬈* L0 & ❪G,L0,T0❫ ≛ ❪G2,L2,T2❫.
+#G1 #G2 #L1 #L2 #T1 #T2 #H @(fpbs_ind_dx … H) -G1 -L1 -T1
 [ /2 width=9 by ex4_5_intro/
 | #G1 #G0 #L1 #L0 #T1 #T0 * -G0 -L0 -T0
   [ #G0 #L0 #T0 #H10 #_ * #G3 #L3 #L4 #T3 #T4 #HT03 #H34 #HL34 #H42
index 72c73ae87ea0fe4b55be75eb276178d9cfcc40de..dc6cd669412c610a622981e96c867588e7e8bbcb 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/predsubtystrong_4.ma".
+include "basic_2/notation/relations/predsubtystrong_3.ma".
 include "basic_2/rt_transition/fpb.ma".
 
 (* STRONGLY NORMALIZING CLOSURES FOR PARALLEL RST-TRANSITION ****************)
 
-inductive fsb (h): relation3 genv lenv term ≝
-| fsb_intro: ∀G1,L1,T1. (
-               ∀G2,L2,T2. ❪G1,L1,T1❫ ≻[h] ❪G2,L2,T2❫ → fsb h G2 L2 T2
-             ) → fsb h G1 L1 T1
+inductive fsb: relation3 genv lenv term ≝
+| fsb_intro: ∀G1,L1,T1.
+             (∀G2,L2,T2. ❪G1,L1,T1❫ ≻ ❪G2,L2,T2❫ → fsb G2 L2 T2) →
+             fsb G1 L1 T1
 .
 
 interpretation
-   "strong normalization for parallel rst-transition (closure)"
-   'PRedSubTyStrong h G L T = (fsb h G L T).
+  "strong normalization for parallel rst-transition (closure)"
+  'PRedSubTyStrong G L T = (fsb G L T).
 
 (* Basic eliminators ********************************************************)
 
 (* Note: eliminator with shorter ground hypothesis *)
 (* Note: to be named fsb_ind when fsb becomes a definition like csx, rsx ****)
-lemma fsb_ind_alt (h) (Q:relation3 …):
-      (∀G1,L1,T1. ≥𝐒[h] ❪G1,L1,T1❫ →
-        (∀G2,L2,T2. ❪G1,L1,T1❫ ≻[h] ❪G2,L2,T2❫ → Q G2 L2 T2) →
+lemma fsb_ind_alt (Q:relation3 …):
+      (∀G1,L1,T1. ≥𝐒 ❪G1,L1,T1❫ →
+        (∀G2,L2,T2. ❪G1,L1,T1❫ ≻ ❪G2,L2,T2❫ → Q G2 L2 T2) →
         Q G1 L1 T1
       ) →
-      ∀G,L,T. ≥𝐒[h] ❪G,L,T❫ → Q G L T.
-#h #Q #IH #G #L #T #H elim H -G -L -T
+      ∀G,L,T. ≥𝐒 ❪G,L,T❫ → Q G L T.
+#Q #IH #G #L #T #H elim H -G -L -T
 /4 width=1 by fsb_intro/
 qed-.
 
index a87de3b2b3698846a1316c3c01abdcb8ba9ee25e..b03c6a61533847c5df34d67db3c4f40faa11caff 100644 (file)
@@ -21,51 +21,51 @@ include "basic_2/rt_computation/fsb_csx.ma".
 
 (* Main properties with atomic arity assignment for terms *******************)
 
-theorem aaa_fsb (h):
-        ∀G,L,T,A. ❪G,L❫ ⊢ T ⁝ A → ≥𝐒[h] ❪G,L,T❫.
+theorem aaa_fsb:
+        ∀G,L,T,A. ❪G,L❫ ⊢ T ⁝ A → ≥𝐒 ❪G,L,T❫.
 /3 width=2 by aaa_csx, csx_fsb/ qed.
 
 (* Advanced eliminators with atomic arity assignment for terms **************)
 
-fact aaa_ind_fpb_aux (h) (Q:relation3 …):
+fact aaa_ind_fpb_aux (Q:relation3 …):
      (∀G1,L1,T1,A.
        ❪G1,L1❫ ⊢ T1 ⁝ A →
-       (∀G2,L2,T2. ❪G1,L1,T1❫ ≻[h] ❪G2,L2,T2❫ → Q G2 L2 T2) →
+       (∀G2,L2,T2. ❪G1,L1,T1❫ ≻ ❪G2,L2,T2❫ → Q G2 L2 T2) →
        Q G1 L1 T1
      ) →
-     ∀G,L,T. ❪G,L❫ ⊢ ⬈*𝐒[h] T → ∀A. ❪G,L❫ ⊢ T ⁝ A →  Q G L T.
-#h #R #IH #G #L #T #H @(csx_ind_fpb … H) -G -L -T
+     ∀G,L,T. ❪G,L❫ ⊢ ⬈*𝐒 T → ∀A. ❪G,L❫ ⊢ T ⁝ A →  Q G L T.
+#R #IH #G #L #T #H @(csx_ind_fpb … H) -G -L -T
 #G1 #L1 #T1 #H1 #IH1 #A1 #HTA1 @IH -IH //
 #G2 #L2 #T2 #H12 elim (fpbs_aaa_conf … G2 … L2 … T2 … HTA1) -A1
 /2 width=2 by fpb_fpbs/
 qed-.
 
-lemma aaa_ind_fpb (h) (Q:relation3 …):
+lemma aaa_ind_fpb (Q:relation3 …):
       (∀G1,L1,T1,A.
         ❪G1,L1❫ ⊢ T1 ⁝ A →
-        (∀G2,L2,T2. ❪G1,L1,T1❫ ≻[h] ❪G2,L2,T2❫ → Q G2 L2 T2) →
+        (∀G2,L2,T2. ❪G1,L1,T1❫ ≻ ❪G2,L2,T2❫ → Q G2 L2 T2) →
         Q G1 L1 T1
       ) →
       ∀G,L,T,A. ❪G,L❫ ⊢ T ⁝ A → Q G L T.
 /4 width=4 by aaa_ind_fpb_aux, aaa_csx/ qed-.
 
-fact aaa_ind_fpbg_aux (h) (Q:relation3 …):
+fact aaa_ind_fpbg_aux (Q:relation3 …):
      (∀G1,L1,T1,A.
        ❪G1,L1❫ ⊢ T1 ⁝ A →
-       (∀G2,L2,T2. ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫ → Q G2 L2 T2) →
+       (∀G2,L2,T2. ❪G1,L1,T1❫ > ❪G2,L2,T2❫ → Q G2 L2 T2) →
        Q G1 L1 T1
      ) →
-     ∀G,L,T. ❪G,L❫ ⊢ ⬈*𝐒[h] T → ∀A. ❪G,L❫ ⊢ T ⁝ A →  Q G L T.
-#h #Q #IH #G #L #T #H @(csx_ind_fpbg … H) -G -L -T
+     ∀G,L,T. ❪G,L❫ ⊢ ⬈*𝐒 T → ∀A. ❪G,L❫ ⊢ T ⁝ A →  Q G L T.
+#Q #IH #G #L #T #H @(csx_ind_fpbg … H) -G -L -T
 #G1 #L1 #T1 #H1 #IH1 #A1 #HTA1 @IH -IH //
 #G2 #L2 #T2 #H12 elim (fpbs_aaa_conf … G2 … L2 … T2 … HTA1) -A1
 /2 width=2 by fpbg_fwd_fpbs/
 qed-.
 
-lemma aaa_ind_fpbg (h) (Q:relation3 …):
+lemma aaa_ind_fpbg (Q:relation3 …):
       (∀G1,L1,T1,A.
         ❪G1,L1❫ ⊢ T1 ⁝ A →
-        (∀G2,L2,T2. ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫ → Q G2 L2 T2) →
+        (∀G2,L2,T2. ❪G1,L1,T1❫ > ❪G2,L2,T2❫ → Q G2 L2 T2) →
         Q G1 L1 T1
       ) →
       ∀G,L,T,A. ❪G,L❫ ⊢ T ⁝ A → Q G L T.
index 0ee6c19fc33d79d6875f51a137d99d8657c9d7f6..1839df0f8a3d800c1237a3c5a005fe2ddefccad8 100644 (file)
@@ -21,17 +21,17 @@ include "basic_2/rt_computation/fsb_fpbg.ma".
 
 (* Inversion lemmas with context-sensitive stringly rt-normalizing terms ****)
 
-lemma fsb_inv_csx (h):
-      ∀G,L,T. ≥𝐒[h] ❪G,L,T❫ → ❪G,L❫ ⊢ ⬈*𝐒[h] T.
-#h #G #L #T #H @(fsb_ind_alt … H) -G -L -T /5 width=1 by csx_intro, fpb_cpx/
+lemma fsb_inv_csx:
+      ∀G,L,T. ≥𝐒 ❪G,L,T❫ → ❪G,L❫ ⊢ ⬈*𝐒 T.
+#G #L #T #H @(fsb_ind_alt … H) -G -L -T /5 width=1 by csx_intro, fpb_cpx/
 qed-.
 
 (* Propreties with context-sensitive stringly rt-normalizing terms **********)
 
-lemma csx_fsb_fpbs (h):
-      ∀G1,L1,T1. ❪G1,L1❫ ⊢ ⬈*𝐒[h] T1 →
-      ∀G2,L2,T2. ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫ → ≥𝐒[h] ❪G2,L2,T2❫.
-#h #G1 #L1 #T1 #H @(csx_ind … H) -T1
+lemma csx_fsb_fpbs:
+      ∀G1,L1,T1. ❪G1,L1❫ ⊢ ⬈*𝐒 T1 →
+      ∀G2,L2,T2. ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫ → ≥𝐒 ❪G2,L2,T2❫.
+#G1 #L1 #T1 #H @(csx_ind … H) -T1
 #T1 #HT1 #IHc #G2 #L2 #T2 @(fqup_wf_ind (Ⓣ) … G2 L2 T2) -G2 -L2 -T2
 #G0 #L0 #T0 #IHu #H10
 lapply (fpbs_csx_conf … H10) // -HT1 #HT0
@@ -58,26 +58,26 @@ generalize in match IHu; -IHu generalize in match H10; -H10
 ]
 qed.
 
-lemma csx_fsb (h):
-      ∀G,L,T. ❪G,L❫ ⊢ ⬈*𝐒[h] T → ≥𝐒[h] ❪G,L,T❫.
+lemma csx_fsb:
+      ∀G,L,T. ❪G,L❫ ⊢ ⬈*𝐒 T → ≥𝐒 ❪G,L,T❫.
 /2 width=5 by csx_fsb_fpbs/ qed.
 
 (* Advanced eliminators *****************************************************)
 
-lemma csx_ind_fpb (h) (Q:relation3 …):
+lemma csx_ind_fpb (Q:relation3 …):
       (∀G1,L1,T1.
-        ❪G1,L1❫ ⊢ ⬈*𝐒[h] T1 →
-        (∀G2,L2,T2. ❪G1,L1,T1❫ ≻[h] ❪G2,L2,T2❫ → Q G2 L2 T2) →
+        ❪G1,L1❫ ⊢ ⬈*𝐒 T1 →
+        (∀G2,L2,T2. ❪G1,L1,T1❫ ≻ ❪G2,L2,T2❫ → Q G2 L2 T2) →
         Q G1 L1 T1
       ) →
-      ∀G,L,T. ❪G,L❫ ⊢ ⬈*𝐒[h] T → Q G L T.
+      ∀G,L,T. ❪G,L❫ ⊢ ⬈*𝐒 T → Q G L T.
 /4 width=4 by fsb_inv_csx, csx_fsb, fsb_ind_alt/ qed-.
 
-lemma csx_ind_fpbg (h) (Q:relation3 …):
+lemma csx_ind_fpbg (Q:relation3 …):
       (∀G1,L1,T1.
-        ❪G1,L1❫ ⊢ ⬈*𝐒[h] T1 →
-        (∀G2,L2,T2. ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫ → Q G2 L2 T2) →
+        ❪G1,L1❫ ⊢ ⬈*𝐒 T1 →
+        (∀G2,L2,T2. ❪G1,L1,T1❫ > ❪G2,L2,T2❫ → Q G2 L2 T2) →
         Q G1 L1 T1
       ) →
-      ∀G,L,T. ❪G,L❫ ⊢ ⬈*𝐒[h] T → Q G L T.
+      ∀G,L,T. ❪G,L❫ ⊢ ⬈*𝐒 T → Q G L T.
 /4 width=4 by fsb_inv_csx, csx_fsb, fsb_ind_fpbg/ qed-.
index 251fef0ebf3aa6470104dc04be08efc8070d3d02..159663b11ca223d17900155cca8997737ea06695 100644 (file)
@@ -19,9 +19,10 @@ include "basic_2/rt_computation/fsb.ma".
 
 (* Properties with sort-irrelevant equivalence for closures *****************)
 
-lemma fsb_feqx_trans: ∀h,G1,L1,T1. ≥𝐒[h] ❪G1,L1,T1❫ →
-                      ∀G2,L2,T2. ❪G1,L1,T1❫ ≛ ❪G2,L2,T2❫ → ≥𝐒[h] ❪G2,L2,T2❫.
-#h #G1 #L1 #T1 #H @(fsb_ind_alt … H) -G1 -L1 -T1
+lemma fsb_feqx_trans:
+      ∀G1,L1,T1. ≥𝐒 ❪G1,L1,T1❫ →
+      ∀G2,L2,T2. ❪G1,L1,T1❫ ≛ ❪G2,L2,T2❫ → ≥𝐒 ❪G2,L2,T2❫.
+#G1 #L1 #T1 #H @(fsb_ind_alt … H) -G1 -L1 -T1
 #G1 #L1 #T1 #_ #IH #G2 #L2 #T2 #H12
 @fsb_intro #G #L #T #H2
 elim (feqx_fpb_trans … H12 … H2) -G2 -L2 -T2
index 20c01020604940d60c04fb06237ff8bd01c8a160..41138b8a558c503e9f3c6322e6fa65a935933f0d 100644 (file)
@@ -19,9 +19,10 @@ include "basic_2/rt_computation/fsb_feqx.ma".
 
 (* Properties with parallel rst-computation for closures ********************)
 
-lemma fsb_fpbs_trans: ∀h,G1,L1,T1. ≥𝐒[h] ❪G1,L1,T1❫ →
-                      ∀G2,L2,T2. ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫ → ≥𝐒[h] ❪G2,L2,T2❫.
-#h #G1 #L1 #T1 #H @(fsb_ind_alt … H) -G1 -L1 -T1
+lemma fsb_fpbs_trans:
+      ∀G1,L1,T1. ≥𝐒 ❪G1,L1,T1❫ →
+      ∀G2,L2,T2. ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫ → ≥𝐒 ❪G2,L2,T2❫.
+#G1 #L1 #T1 #H @(fsb_ind_alt … H) -G1 -L1 -T1
 #G1 #L1 #T1 #H1 #IH #G2 #L2 #T2 #H12
 elim (fpbs_inv_fpbg … H12) -H12
 [ -IH /2 width=5 by fsb_feqx_trans/
@@ -31,21 +32,22 @@ qed-.
 
 (* Properties with proper parallel rst-computation for closures *************)
 
-lemma fsb_intro_fpbg: ∀h,G1,L1,T1. (
-                         ∀G2,L2,T2. ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫ → ≥𝐒[h] ❪G2,L2,T2❫
-                      ) → ≥𝐒[h] ❪G1,L1,T1❫.
+lemma fsb_intro_fpbg:
+      ∀G1,L1,T1.
+      (∀G2,L2,T2. ❪G1,L1,T1❫ > ❪G2,L2,T2❫ → ≥𝐒 ❪G2,L2,T2❫) →
+      ≥𝐒 ❪G1,L1,T1❫.
 /4 width=1 by fsb_intro, fpb_fpbg/ qed.
 
 (* Eliminators with proper parallel rst-computation for closures ************)
 
-lemma fsb_ind_fpbg_fpbs: ∀h. ∀Q:relation3 genv lenv term.
-                         (∀G1,L1,T1. ≥𝐒[h] ❪G1,L1,T1❫ →
-                                     (∀G2,L2,T2. ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫ → Q G2 L2 T2) →
-                                     Q G1 L1 T1
-                         ) →
-                         ∀G1,L1,T1. ≥𝐒[h] ❪G1,L1,T1❫ →
-                         ∀G2,L2,T2. ❪G1,L1,T1❫ ≥[h] ❪G2,L2,T2❫ → Q G2 L2 T2.
-#h #Q #IH1 #G1 #L1 #T1 #H @(fsb_ind_alt … H) -G1 -L1 -T1
+lemma fsb_ind_fpbg_fpbs (Q:relation3 …):
+      (∀G1,L1,T1. ≥𝐒 ❪G1,L1,T1❫ →
+        (∀G2,L2,T2. ❪G1,L1,T1❫ > ❪G2,L2,T2❫ → Q G2 L2 T2) →
+        Q G1 L1 T1
+      ) →
+      ∀G1,L1,T1. ≥𝐒 ❪G1,L1,T1❫ →
+      ∀G2,L2,T2. ❪G1,L1,T1❫ ≥ ❪G2,L2,T2❫ → Q G2 L2 T2.
+#Q #IH1 #G1 #L1 #T1 #H @(fsb_ind_alt … H) -G1 -L1 -T1
 #G1 #L1 #T1 #H1 #IH #G2 #L2 #T2 #H12
 @IH1 -IH1
 [ -IH /2 width=5 by fsb_fpbs_trans/
@@ -55,21 +57,21 @@ lemma fsb_ind_fpbg_fpbs: ∀h. ∀Q:relation3 genv lenv term.
 ]
 qed-.
 
-lemma fsb_ind_fpbg: ∀h. ∀Q:relation3 genv lenv term.
-                    (∀G1,L1,T1. ≥𝐒[h] ❪G1,L1,T1❫ →
-                                (∀G2,L2,T2. ❪G1,L1,T1❫ >[h] ❪G2,L2,T2❫ → Q G2 L2 T2) →
-                                Q G1 L1 T1
-                    ) →
-                    ∀G1,L1,T1. ≥𝐒[h] ❪G1,L1,T1❫ →  Q G1 L1 T1.
-#h #Q #IH #G1 #L1 #T1 #H @(fsb_ind_fpbg_fpbs … H) -H
+lemma fsb_ind_fpbg (Q:relation3 …):
+      (∀G1,L1,T1. ≥𝐒 ❪G1,L1,T1❫ →
+        (∀G2,L2,T2. ❪G1,L1,T1❫ > ❪G2,L2,T2❫ → Q G2 L2 T2) →
+        Q G1 L1 T1
+      ) →
+      ∀G1,L1,T1. ≥𝐒 ❪G1,L1,T1❫ →  Q G1 L1 T1.
+#Q #IH #G1 #L1 #T1 #H @(fsb_ind_fpbg_fpbs … H) -H
 /3 width=1 by/
 qed-.
 
 (* Inversion lemmas with proper parallel rst-computation for closures *******)
 
-lemma fsb_fpbg_refl_false (h) (G) (L) (T):
-                          ≥𝐒[h] ❪G,L,T❫ → ❪G,L,T❫ >[h] ❪G,L,T❫ → ⊥.
-#h #G #L #T #H
+lemma fsb_fpbg_refl_false (G) (L) (T):
+      ≥𝐒 ❪G,L,T❫ → ❪G,L,T❫ > ❪G,L,T❫ → ⊥.
+#G #L #T #H
 @(fsb_ind_fpbg … H) -G -L -T #G1 #L1 #T1 #_ #IH #H
 /2 width=5 by/
 qed-.
index 6ae05e9447d760e147f7f8803d22553770138115..fb21e76c94fdeca706e5d3e2768ab6369b5a8fa3 100644 (file)
 (**************************************************************************)
 
 include "ground/xoa/ex_4_3.ma".
-include "basic_2/notation/relations/topredtysnstrong_4.ma".
+include "basic_2/notation/relations/topredtysnstrong_3.ma".
 include "basic_2/rt_computation/rsx.ma".
 
-(* COMPATIBILITY OF STRONG NORMALIZATION FOR UNBOUND RT-TRANSITION **********)
+(* COMPATIBILITY OF STRONG NORMALIZATION FOR EXTENDED RT-TRANSITION *********)
 
 (* Note: this should be an instance of a more general sex *)
 (* Basic_2A1: uses: lcosx *)
-inductive jsx (h) (G): relation lenv ≝
-| jsx_atom: jsx G (⋆) (⋆)
-| jsx_bind: ∀I,K1,K2. jsx G K1 K2 →
-            jsx G (K1.ⓘ[I]) (K2.ⓘ[I])
-| jsx_pair: ∀I,K1,K2,V. jsx G K1 K2 →
-            G ⊢ ⬈*𝐒[h,V] K2 → jsx h G (K1.ⓑ[I]V) (K2.ⓧ)
+inductive jsx (G): relation lenv ≝
+| jsx_atom: jsx G (⋆) (⋆)
+| jsx_bind: ∀I,K1,K2. jsx G K1 K2 →
+            jsx G (K1.ⓘ[I]) (K2.ⓘ[I])
+| jsx_pair: ∀I,K1,K2,V. jsx G K1 K2 →
+            G ⊢ ⬈*𝐒[V] K2 → jsx G (K1.ⓑ[I]V) (K2.ⓧ)
 .
 
 interpretation
-  "strong normalization for unbound parallel rt-transition (compatibility)"
-  'ToPRedTySNStrong h G L1 L2 = (jsx h G L1 L2).
+  "strong normalization for extended parallel rt-transition (compatibility)"
+  'ToPRedTySNStrong G L1 L2 = (jsx G L1 L2).
 
 (* Basic inversion lemmas ***************************************************)
 
-fact jsx_inv_atom_sn_aux (h) (G):
-     ∀L1,L2. G ⊢ L1 ⊒[h] L2 → L1 = ⋆ → L2 = ⋆.
-#h #G #L1 #L2 * -L1 -L2
+fact jsx_inv_atom_sn_aux (G):
+     ∀L1,L2. G ⊢ L1 ⊒ L2 → L1 = ⋆ → L2 = ⋆.
+#G #L1 #L2 * -L1 -L2
 [ //
 | #I #K1 #K2 #_ #H destruct
 | #I #K1 #K2 #V #_ #_ #H destruct
 ]
 qed-.
 
-lemma jsx_inv_atom_sn (h) (G):
-      ∀L2. G ⊢ ⋆ ⊒[h] L2 → L2 = ⋆.
+lemma jsx_inv_atom_sn (G):
+      ∀L2. G ⊢ ⋆ ⊒ L2 → L2 = ⋆.
 /2 width=5 by jsx_inv_atom_sn_aux/ qed-.
 
-fact jsx_inv_bind_sn_aux (h) (G):
-     ∀L1,L2. G ⊢ L1 ⊒[h] L2 →
+fact jsx_inv_bind_sn_aux (G):
+     ∀L1,L2. G ⊢ L1 ⊒ L2 →
      ∀I,K1. L1 = K1.ⓘ[I] →
-     ∨∨ ∃∃K2. G ⊢ K1 ⊒[h] K2 & L2 = K2.ⓘ[I]
-      | ∃∃J,K2,V. G ⊢ K1 ⊒[h] K2 & G ⊢ ⬈*𝐒[h,V] K2 & I = BPair J V & L2 = K2.ⓧ.
-#h #G #L1 #L2 * -L1 -L2
+     ∨∨ ∃∃K2. G ⊢ K1 ⊒ K2 & L2 = K2.ⓘ[I]
+      | ∃∃J,K2,V. G ⊢ K1 ⊒ K2 & G ⊢ ⬈*𝐒[V] K2 & I = BPair J V & L2 = K2.ⓧ.
+#G #L1 #L2 * -L1 -L2
 [ #J #L1 #H destruct
 | #I #K1 #K2 #HK12 #J #L1 #H destruct /3 width=3 by ex2_intro, or_introl/
 | #I #K1 #K2 #V #HK12 #HV #J #L1 #H destruct /3 width=7 by ex4_3_intro, or_intror/
 ]
 qed-.
 
-lemma jsx_inv_bind_sn (h) (G):
-     ∀I,K1,L2. G ⊢ K1.ⓘ[I] ⊒[h] L2 →
-     ∨∨ ∃∃K2. G ⊢ K1 ⊒[h] K2 & L2 = K2.ⓘ[I]
-      | ∃∃J,K2,V. G ⊢ K1 ⊒[h] K2 & G ⊢ ⬈*𝐒[h,V] K2 & I = BPair J V & L2 = K2.ⓧ.
+lemma jsx_inv_bind_sn (G):
+      ∀I,K1,L2. G ⊢ K1.ⓘ[I] ⊒ L2 →
+      ∨∨ ∃∃K2. G ⊢ K1 ⊒ K2 & L2 = K2.ⓘ[I]
+       | ∃∃J,K2,V. G ⊢ K1 ⊒ K2 & G ⊢ ⬈*𝐒[V] K2 & I = BPair J V & L2 = K2.ⓧ.
 /2 width=3 by jsx_inv_bind_sn_aux/ qed-.
 
 (* Advanced inversion lemmas ************************************************)
 
 (* Basic_2A1: uses: lcosx_inv_pair *)
-lemma jsx_inv_pair_sn (h) (G):
-      ∀I,K1,L2,V. G ⊢ K1.ⓑ[I]V ⊒[h] L2 →
-      ∨∨ ∃∃K2. G ⊢ K1 ⊒[h] K2 & L2 = K2.ⓑ[I]V
-       | ∃∃K2. G ⊢ K1 ⊒[h] K2 & G ⊢ ⬈*𝐒[h,V] K2 & L2 = K2.ⓧ.
-#h #G #I #K1 #L2 #V #H elim (jsx_inv_bind_sn … H) -H *
+lemma jsx_inv_pair_sn (G):
+      ∀I,K1,L2,V. G ⊢ K1.ⓑ[I]V ⊒ L2 →
+      ∨∨ ∃∃K2. G ⊢ K1 ⊒ K2 & L2 = K2.ⓑ[I]V
+       | ∃∃K2. G ⊢ K1 ⊒ K2 & G ⊢ ⬈*𝐒[V] K2 & L2 = K2.ⓧ.
+#G #I #K1 #L2 #V #H elim (jsx_inv_bind_sn … H) -H *
 [ /3 width=3 by ex2_intro, or_introl/
 | #J #K2 #X #HK12 #HX #H1 #H2 destruct /3 width=4 by ex3_intro, or_intror/
 ]
 qed-.
 
-lemma jsx_inv_void_sn (h) (G):
-      ∀K1,L2. G ⊢ K1.ⓧ ⊒[h] L2 →
-      ∃∃K2. G ⊢ K1 ⊒[h] K2 & L2 = K2.ⓧ.
-#h #G #K1 #L2 #H elim (jsx_inv_bind_sn … H) -H *
+lemma jsx_inv_void_sn (G):
+      ∀K1,L2. G ⊢ K1.ⓧ ⊒ L2 →
+      ∃∃K2. G ⊢ K1 ⊒ K2 & L2 = K2.ⓧ.
+#G #K1 #L2 #H elim (jsx_inv_bind_sn … H) -H *
 /2 width=3 by ex2_intro/
 qed-.
 
 (* Advanced forward lemmas **************************************************)
 
-lemma jsx_fwd_bind_sn (h) (G):
-      ∀I1,K1,L2. G ⊢ K1.ⓘ[I1] ⊒[h] L2 →
-      ∃∃I2,K2. G ⊢ K1 ⊒[h] K2 & L2 = K2.ⓘ[I2].
-#h #G #I1 #K1 #L2 #H elim (jsx_inv_bind_sn … H) -H *
+lemma jsx_fwd_bind_sn (G):
+      ∀I1,K1,L2. G ⊢ K1.ⓘ[I1] ⊒ L2 →
+      ∃∃I2,K2. G ⊢ K1 ⊒ K2 & L2 = K2.ⓘ[I2].
+#G #I1 #K1 #L2 #H elim (jsx_inv_bind_sn … H) -H *
 /2 width=4 by ex2_2_intro/
 qed-.
 
 (* Advanced properties ******************************************************)
 
 (* Basic_2A1: uses: lcosx_O *)
-lemma jsx_refl (h) (G): reflexive … (jsx h G).
-#h #G #L elim L -L /2 width=1 by jsx_atom, jsx_bind/
+lemma jsx_refl (G):
+      reflexive … (jsx G).
+#G #L elim L -L /2 width=1 by jsx_atom, jsx_bind/
 qed.
 
 (* Basic_2A1: removed theorems 2:
index 70286909217d9da41406616e08a1944582dc83ed..c11a6bfc9e8e47a71c607cfc6c69bf21959be22d 100644 (file)
@@ -16,22 +16,22 @@ include "basic_2/rt_computation/rsx_csx.ma".
 include "basic_2/rt_computation/jsx_drops.ma".
 include "basic_2/rt_computation/jsx_lsubr.ma".
 
-(* COMPATIBILITY OF STRONG NORMALIZATION FOR UNBOUND RT-TRANSITION **********)
+(* COMPATIBILITY OF STRONG NORMALIZATION FOR EXTENDED RT-TRANSITION *********)
 
 (* Properties with strongly rt-normalizing terms ****************************)
 
-lemma jsx_csx_conf (h) (G):
-      ∀L1,L2. G ⊢ L1 ⊒[h] L2 →
-      ∀T. ❪G,L1❫ ⊢ ⬈*𝐒[h] T → ❪G,L2❫ ⊢ ⬈*𝐒[h] T.
+lemma jsx_csx_conf (G):
+      ∀L1,L2. G ⊢ L1 ⊒ L2 →
+      ∀T. ❪G,L1❫ ⊢ ⬈*𝐒 T → ❪G,L2❫ ⊢ ⬈*𝐒 T.
 /3 width=5 by jsx_fwd_lsubr, csx_lsubr_conf/ qed-.
 
 (* Properties with strongly rt-normalizing referred local environments ******)
 
 (* Note: Try by induction on the 2nd premise by generalizing V with f *)
-lemma rsx_jsx_trans (h) (G):
-      ∀L1,V. G ⊢ ⬈*𝐒[h,V] L1 →
-      ∀L2. G ⊢ L1 ⊒[h] L2 → G ⊢ ⬈*𝐒[h,V] L2.
-#h #G #L1 #V @(fqup_wf_ind_eq (Ⓕ) … G L1 V) -G -L1 -V
+lemma rsx_jsx_trans (G):
+      ∀L1,V. G ⊢ ⬈*𝐒[V] L1 →
+      ∀L2. G ⊢ L1 ⊒ L2 → G ⊢ ⬈*𝐒[V] L2.
+#G #L1 #V @(fqup_wf_ind_eq (Ⓕ) … G L1 V) -G -L1 -V
 #G0 #L0 #V0 #IH #G #L1 * *
 [ //
 | #i #HG #HL #HV #H #L2 #HL12 destruct
index 56148c3af34f511052e67312edf1bc7c856dbd39..2fb26c5b5cfd693a0ce58353561b79e9339329bf 100644 (file)
 include "static_2/relocation/drops.ma".
 include "basic_2/rt_computation/jsx.ma".
 
-(* COMPATIBILITY OF STRONG NORMALIZATION FOR UNBOUND RT-TRANSITION **********)
+(* COMPATIBILITY OF STRONG NORMALIZATION FOR EXTENDED RT-TRANSITION *********)
 
 (* Forward lemmas with uniform slicing for local environments ***************)
 
-lemma jsx_fwd_drops_atom_sn (h) (b) (G):
-      ∀L1,L2. G ⊢ L1 ⊒[h] L2 →
+lemma jsx_fwd_drops_atom_sn (b) (G):
+      ∀L1,L2. G ⊢ L1 ⊒ L2 →
       ∀f. 𝐔❪f❫ → ⇩*[b,f]L1 ≘ ⋆ → ⇩*[b,f]L2 ≘ ⋆.
-#h #b #G #L1 #L2 #H elim H -L1 -L2
+#b #G #L1 #L2 #H elim H -L1 -L2
 [ #f #_ #H //
 | #I #K1 #K2 #_ #IH #f #Hf #H
 | #I #K1 #K2 #V #_ #HV #IH #f #Hf #H
@@ -33,11 +33,11 @@ elim (drops_inv_bind1_isuni … H) -H [3,6: // |*: * -Hf ]
 ]
 qed-.
 
-lemma jsx_fwd_drops_unit_sn (h) (b) (G):
-      ∀L1,L2. G ⊢ L1 ⊒[h] L2 →
+lemma jsx_fwd_drops_unit_sn (b) (G):
+      ∀L1,L2. G ⊢ L1 ⊒ L2 →
       ∀f. 𝐔❪f❫ → ∀I,K1. ⇩*[b,f]L1 ≘ K1.ⓤ[I] →
-      ∃∃K2. G ⊢ K1 ⊒[h] K2 & ⇩*[b,f]L2 ≘ K2.ⓤ[I].
-#h #b #G #L1 #L2 #H elim H -L1 -L2
+      ∃∃K2. G ⊢ K1 ⊒ K2 & ⇩*[b,f]L2 ≘ K2.ⓤ[I].
+#b #G #L1 #L2 #H elim H -L1 -L2
 [ #f #_ #J #Y1 #H
   lapply (drops_inv_atom1 … H) -H * #H #_ destruct
 | #I #K1 #K2 #HK12 #IH #f #Hf #J #Y1 #H
@@ -52,12 +52,12 @@ elim (drops_inv_bind1_isuni … H) -H [3,6: // |*: * -Hf ]
 ]
 qed-.
 
-lemma jsx_fwd_drops_pair_sn (h) (b) (G):
-      ∀L1,L2. G ⊢ L1 ⊒[h] L2 →
+lemma jsx_fwd_drops_pair_sn (b) (G):
+      ∀L1,L2. G ⊢ L1 ⊒ L2 →
       ∀f. 𝐔❪f❫ → ∀I,K1,V. ⇩*[b,f]L1 ≘ K1.ⓑ[I]V →
-      ∨∨ ∃∃K2. G ⊢ K1 ⊒[h] K2 & ⇩*[b,f]L2 ≘ K2.ⓑ[I]V
-       | ∃∃K2. G ⊢ K1 ⊒[h] K2 & ⇩*[b,f]L2 ≘ K2.ⓧ & G ⊢ ⬈*𝐒[h,V] K2.
-#h #b #G #L1 #L2 #H elim H -L1 -L2
+      ∨∨ ∃∃K2. G ⊢ K1 ⊒ K2 & ⇩*[b,f]L2 ≘ K2.ⓑ[I]V
+       | ∃∃K2. G ⊢ K1 ⊒ K2 & ⇩*[b,f]L2 ≘ K2.ⓧ & G ⊢ ⬈*𝐒[V] K2.
+#b #G #L1 #L2 #H elim H -L1 -L2
 [ #f #_ #J #Y1 #X1 #H
   lapply (drops_inv_atom1 … H) -H * #H #_ destruct
 | #I #K1 #K2 #HK12 #IH #f #Hf #J #Y1 #X1 #H
index b53d0d6f7635520003569e6ec1c9eea749af5b0c..0b93e69ebd08d81a3dc0f0a44068b41df4d78a17 100644 (file)
 
 include "basic_2/rt_computation/jsx_csx.ma".
 
-(* COMPATIBILITY OF STRONG NORMALIZATION FOR UNBOUND RT-TRANSITION **********)
+(* COMPATIBILITY OF STRONG NORMALIZATION FOR EXTENDED RT-TRANSITION *********)
 
 (* Main properties **********************************************************)
 
-theorem jsx_trans (h) (G): Transitive … (jsx h G).
-#h #G #L1 #L #H elim H -L1 -L
+theorem jsx_trans (G): Transitive … (jsx G).
+#G #L1 #L #H elim H -L1 -L
 [ #L2 #H
   >(jsx_inv_atom_sn … H) -L2 //
 | #I #K1 #K #_ #IH #L2 #H
index 4e048982b52f16ddfefdbb4ebb2c03701731e49f..a821861ed656c54e04152c06d1584cbd71ae7c3a 100644 (file)
 include "static_2/static/lsubr.ma".
 include "basic_2/rt_computation/jsx.ma".
 
-(* COMPATIBILITY OF STRONG NORMALIZATION FOR UNBOUND RT-TRANSITION **********)
+(* COMPATIBILITY OF STRONG NORMALIZATION FOR EXTENDED RT-TRANSITION *********)
 
 (* Forward lemmas with restricted refinement for local environments *********)
 
-lemma jsx_fwd_lsubr (h) (G):
-      ∀L1,L2. G ⊢ L1 ⊒[h] L2 → L1 ⫃ L2.
-#h #G #L1 #L2 #H elim H -L1 -L2
+lemma jsx_fwd_lsubr (G):
+      ∀L1,L2. G ⊢ L1 ⊒ L2 → L1 ⫃ L2.
+#G #L1 #L2 #H elim H -L1 -L2
 /2 width=1 by lsubr_bind, lsubr_unit/
 qed-.
index 0137a4087c1f43e50d72c545cb0c2eac4aef9bd6..44d8ac0299c1a52c6f109411111f1e97eb935e6d 100644 (file)
@@ -16,15 +16,15 @@ include "basic_2/rt_computation/rsx_drops.ma".
 include "basic_2/rt_computation/rsx_lpxs.ma".
 include "basic_2/rt_computation/jsx.ma".
 
-(* COMPATIBILITY OF STRONG NORMALIZATION FOR UNBOUND RT-TRANSITION **********)
+(* COMPATIBILITY OF STRONG NORMALIZATION FOR EXTENDED RT-TRANSITION *********)
 
 (* Properties with strongly normalizing referred local environments *********)
 
 (* Basic_2A1: uses: lsx_cpx_trans_lcosx *)
-lemma rsx_cpx_trans_jsx (h) (G):
-      ∀L0,T1,T2. ❪G,L0❫ ⊢ T1 ⬈[h] T2 →
-      ∀L. G ⊢ L0 ⊒[h] L → G ⊢ ⬈*𝐒[h,T1] L → G ⊢ ⬈*𝐒[h,T2] L.
-#h #G #L0 #T1 #T2 #H @(cpx_ind … H) -G -L0 -T1 -T2
+lemma rsx_cpx_trans_jsx (G):
+      ∀L0,T1,T2. ❪G,L0❫ ⊢ T1 ⬈ T2 →
+      ∀L. G ⊢ L0 ⊒ L → G ⊢ ⬈*𝐒[T1] L → G ⊢ ⬈*𝐒[T2] L.
+#G #L0 #T1 #T2 #H @(cpx_ind … H) -G -L0 -T1 -T2
 [ //
 | //
 | #I0 #G #K0 #V1 #V2 #W2 #_ #IH #HVW2 #L #HK0 #HL
@@ -63,15 +63,15 @@ qed-.
 (* Advanced properties of strongly normalizing referred local environments **)
 
 (* Basic_2A1: uses: lsx_cpx_trans_O *)
-lemma rsx_cpx_trans (h) (G):
-      ∀L,T1,T2. ❪G,L❫ ⊢ T1 ⬈[h] T2 →
-      G ⊢ ⬈*𝐒[h,T1] L → G ⊢ ⬈*𝐒[h,T2] L.
+lemma rsx_cpx_trans (G):
+      ∀L,T1,T2. ❪G,L❫ ⊢ T1 ⬈ T2 →
+      G ⊢ ⬈*𝐒[T1] L → G ⊢ ⬈*𝐒[T2] L.
 /3 width=6 by rsx_cpx_trans_jsx, jsx_refl/ qed-.
 
-lemma rsx_cpxs_trans (h) (G):
-      ∀L,T1,T2. ❪G,L❫ ⊢ T1 ⬈*[h] T2 →
-      G ⊢ ⬈*𝐒[h,T1] L → G ⊢ ⬈*𝐒[h,T2] L.
-#h #G #L #T1 #T2 #H
-@(cpxs_ind_dx ???????? H) -T1 //
+lemma rsx_cpxs_trans (G):
+      ∀L,T1,T2. ❪G,L❫ ⊢ T1 ⬈* T2 →
+      G ⊢ ⬈*𝐒[T1] L → G ⊢ ⬈*𝐒[T2] L.
+#G #L #T1 #T2 #H
+@(cpxs_ind_dx ??????? H) -T1 //
 /3 width=3 by rsx_cpx_trans/
 qed-.
index b1ce9c2429a659f6a9703b890cb7d859647b2c9a..0edc5d3b17c0b75008dd72ba159b8be6618e16a0 100644 (file)
@@ -32,7 +32,7 @@ lemma lprs_ind_dx (h) (G) (L1):
       ∀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 ********)
+(* Properties with extended rt-transition for full local environments *******)
 
 lemma lpr_lprs (h) (G):
       ∀L1,L2. ❪G,L1❫ ⊢ ➡[h,0] L2 → ❪G,L1❫ ⊢ ➡*[h,0] L2.
index 17b1277132e3d64b687929aae447e0bb1e994262..48d1d0d1fb0eb8ef0809711571b6badf1b5d823e 100644 (file)
@@ -18,9 +18,10 @@ include "basic_2/rt_computation/lprs.ma".
 
 (* PARALLEL R-COMPUTATION FOR FULL LOCAL ENVIRONMENTS ***********************)
 
-(* Forward lemmas with unbound rt-computation for full local environments ***)
+(* Forward lemmas with extended rt-computation for full local environments **)
 
 (* 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,0] L2 → ❪G,L1❫ ⊢ ⬈*[h] L2.
+lemma lprs_fwd_lpxs (h) (G):
+      ∀L1,L2. ❪G,L1❫ ⊢ ➡*[h,0] L2 → ❪G,L1❫ ⊢ ⬈* L2.
 /3 width=3 by cpms_fwd_cpxs, lex_co/ qed-.
index ade37fde5a7aa19e2b53c0be3824591792928263..17f352a9c6e3fbff8a1d2fbdb4a253d4c1b4876e 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/predtysnstar_4.ma".
+include "basic_2/notation/relations/predtysnstar_3.ma".
 include "static_2/relocation/lex.ma".
 include "basic_2/rt_computation/cpxs_ext.ma".
 
-(* UNBOUND PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS **************)
+(* EXTENDED PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS *************)
 
-definition lpxs (h) (G): relation lenv ≝
-                         lex (cpxs h G).
+definition lpxs (G): relation lenv ≝
+           lex (cpxs G).
 
 interpretation
-   "unbound parallel rt-computation on all entries (local environment)"
-   'PRedTySnStar h G L1 L2 = (lpxs h G L1 L2).
+  "extended parallel rt-computation on all entries (local environment)"
+  'PRedTySnStar G L1 L2 = (lpxs G L1 L2).
 
 (* Basic properties *********************************************************)
 
 (* Basic_2A1: uses: lpxs_pair_refl *)
-lemma lpxs_bind_refl_dx (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ⬈*[h] L2 →
-                                 ∀I. ❪G,L1.ⓘ[I]❫ ⊢ ⬈*[h] L2.ⓘ[I].
+lemma lpxs_bind_refl_dx (G):
+      ∀L1,L2. ❪G,L1❫ ⊢ ⬈* L2 →
+      ∀I. ❪G,L1.ⓘ[I]❫ ⊢ ⬈* L2.ⓘ[I].
 /2 width=1 by lex_bind_refl_dx/ qed.
 
-lemma lpxs_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 lpxs_pair (G):
+      ∀L1,L2. ❪G,L1❫ ⊢ ⬈* L2 →
+      ∀V1,V2. ❪G,L1❫ ⊢ V1 ⬈* V2 →
+      ∀I. ❪G,L1.ⓑ[I]V1❫ ⊢ ⬈* L2.ⓑ[I]V2.
 /2 width=1 by lex_pair/ qed.
 
-lemma lpxs_refl (h) (G): reflexive … (lpxs h G).
+lemma lpxs_refl (G):
+      reflexive … (lpxs G).
 /2 width=1 by lex_refl/ qed.
 
 (* Basic inversion lemmas ***************************************************)
 
 (* Basic_2A1: was: lpxs_inv_atom1 *)
-lemma lpxs_inv_atom_sn (h) (G): ∀L2. ❪G,⋆❫ ⊢ ⬈*[h] L2 → L2 = ⋆.
+lemma lpxs_inv_atom_sn (G):
+      ∀L2. ❪G,⋆❫ ⊢ ⬈* L2 → L2 = ⋆.
 /2 width=2 by lex_inv_atom_sn/ qed-.
 
-lemma lpxs_inv_bind_sn (h) (G): ∀I1,L2,K1. ❪G,K1.ⓘ[I1]❫ ⊢ ⬈*[h] L2 →
-                                ∃∃I2,K2. ❪G,K1❫ ⊢ ⬈*[h] K2 & ❪G,K1❫ ⊢ I1 ⬈*[h] I2 & L2 = K2.ⓘ[I2].
+lemma lpxs_inv_bind_sn (G):
+      ∀I1,L2,K1. ❪G,K1.ⓘ[I1]❫ ⊢ ⬈* L2 →
+      ∃∃I2,K2. ❪G,K1❫ ⊢ ⬈* K2 & ❪G,K1❫ ⊢ I1 ⬈* I2 & L2 = K2.ⓘ[I2].
 /2 width=1 by lex_inv_bind_sn/ qed-.
 
 (* Basic_2A1: was: lpxs_inv_pair1 *)
-lemma lpxs_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 & L2 = K2.ⓑ[I]V2.
+lemma lpxs_inv_pair_sn (G):
+      ∀I,L2,K1,V1. ❪G,K1.ⓑ[I]V1❫ ⊢ ⬈* L2 →
+      ∃∃K2,V2. ❪G,K1❫ ⊢ ⬈* K2 & ❪G,K1❫ ⊢ V1 ⬈* V2 & L2 = K2.ⓑ[I]V2.
 /2 width=1 by lex_inv_pair_sn/ qed-.
 
 (* Basic_2A1: was: lpxs_inv_atom2 *)
-lemma lpxs_inv_atom_dx (h) (G): ∀L1. ❪G,L1❫ ⊢ ⬈*[h] ⋆ → L1 = ⋆.
+lemma lpxs_inv_atom_dx (G):
+      ∀L1. ❪G,L1❫ ⊢ ⬈* ⋆ → L1 = ⋆.
 /2 width=2 by lex_inv_atom_dx/ qed-.
 
 (* Basic_2A1: was: lpxs_inv_pair2 *)
-lemma lpxs_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.
+lemma lpxs_inv_pair_dx (G):
+      ∀I,L1,K2,V2. ❪G,L1❫ ⊢ ⬈* K2.ⓑ[I]V2 →
+      ∃∃K1,V1. ❪G,K1❫ ⊢ ⬈* K2 & ❪G,K1❫ ⊢ V1 ⬈* V2 & L1 = K1.ⓑ[I]V1.
 /2 width=1 by lex_inv_pair_dx/ qed-.
 
 (* Basic eliminators ********************************************************)
 
 (* Basic_2A1: was: lpxs_ind_alt *)
-lemma lpxs_ind (h) (G): ∀Q:relation lenv.
-                        Q (⋆) (⋆) → (
-                          ∀I,K1,K2.
-                          ❪G,K1❫ ⊢ ⬈*[h] K2 →
-                          Q K1 K2 → Q (K1.ⓘ[I]) (K2.ⓘ[I])
-                        ) → (
-                          ∀I,K1,K2,V1,V2.
-                          ❪G,K1❫ ⊢ ⬈*[h] K2 → ❪G,K1❫ ⊢ V1 ⬈*[h] V2 →
-                          Q K1 K2 → Q (K1.ⓑ[I]V1) (K2.ⓑ[I]V2)
-                        ) →
-                        ∀L1,L2. ❪G,L1❫ ⊢ ⬈*[h] L2 → Q L1 L2.
+lemma lpxs_ind (G) (Q:relation …):
+      Q (⋆) (⋆) → (
+        ∀I,K1,K2.
+        ❪G,K1❫ ⊢ ⬈* K2 →
+        Q K1 K2 → Q (K1.ⓘ[I]) (K2.ⓘ[I])
+      ) → (
+        ∀I,K1,K2,V1,V2.
+        ❪G,K1❫ ⊢ ⬈* K2 → ❪G,K1❫ ⊢ V1 ⬈* V2 →
+        Q K1 K2 → Q (K1.ⓑ[I]V1) (K2.ⓑ[I]V2)
+      ) →
+      ∀L1,L2. ❪G,L1❫ ⊢ ⬈* L2 → Q L1 L2.
 /3 width=4 by lex_ind/ qed-.
index 3ec2414687e26ae7bf04fd34a20e189b57a123bd..a8f73eac90af7cde4e93c599b523b9b20d370c05 100644 (file)
 include "basic_2/rt_transition/lpx_aaa.ma".
 include "basic_2/rt_computation/lpxs_lpx.ma".
 
-(* UNBOUND PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS **************)
+(* EXTENDED PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS *************)
 
 (* Properties with atomic arity assignment for terms ************************)
 
-lemma lpxs_aaa_conf (h) (G) (T): Conf3 … (λL. aaa G L T) (lpxs h G).
-#h #G #T #A #L1 #HT #L2 #H
+lemma lpxs_aaa_conf (G) (T):
+      Conf3 … (λL. aaa G L T) (lpxs G).
+#G #T #A #L1 #HT #L2 #H
 lapply (lex_inv_CTC … H) -H //
 @TC_Conf3 [4: // |*: /2 width=4 by lpx_aaa_conf/ ]
 qed-.
index d820662f6349e0e3c487f7f28659803df886d342..99d72a494a20df45b7054264d0448be4eeb6ef3b 100644 (file)
 
 include "basic_2/rt_computation/lpxs_lpx.ma".
 
-(* UNBOUND PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS **************)
+(* EXTENDED PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS *************)
 
 (* Properties with context-sensitive extended rt-computation for terms ******)
 
 (* Basic_2A1: was: cpxs_bind2 *)
-lemma cpxs_bind_alt (h) (G):
-      ∀L,V1,V2. ❪G,L❫ ⊢ V1 ⬈*[h] V2 →
-      ∀I,T1,T2. ❪G,L.ⓑ[I]V2❫ ⊢ T1 ⬈*[h] T2 →
-      ∀p. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈*[h] ⓑ[p,I]V2.T2.
+lemma cpxs_bind_alt (G):
+      ∀L,V1,V2. ❪G,L❫ ⊢ V1 ⬈* V2 →
+      ∀I,T1,T2. ❪G,L.ⓑ[I]V2❫ ⊢ T1 ⬈* T2 →
+      ∀p. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈* ⓑ[p,I]V2.T2.
 /4 width=5 by lpxs_cpxs_trans, lpxs_pair, cpxs_bind/ qed.
 
 (* Inversion lemmas with context-sensitive ext rt-computation for terms *****)
 
-lemma cpxs_inv_abst1 (h) (G):
-      ∀p,L,V1,T1,U2. ❪G,L❫ ⊢ ⓛ[p]V1.T1 ⬈*[h] U2 →
-      ∃∃V2,T2. ❪G,L❫ ⊢ V1 ⬈*[h] V2 & ❪G,L.ⓛV1❫ ⊢ T1 ⬈*[h] T2 & U2 = ⓛ[p]V2.T2.
-#h #G #p #L #V1 #T1 #U2 #H @(cpxs_ind … H) -U2 /2 width=5 by ex3_2_intro/
+lemma cpxs_inv_abst1 (G):
+      ∀p,L,V1,T1,U2. ❪G,L❫ ⊢ ⓛ[p]V1.T1 ⬈* U2 →
+      ∃∃V2,T2. ❪G,L❫ ⊢ V1 ⬈* V2 & ❪G,L.ⓛV1❫ ⊢ T1 ⬈* T2 & U2 = ⓛ[p]V2.T2.
+#G #p #L #V1 #T1 #U2 #H @(cpxs_ind … H) -U2 /2 width=5 by ex3_2_intro/
 #U0 #U2 #_ #HU02 * #V0 #T0 #HV10 #HT10 #H destruct
 elim (cpx_inv_abst1 … HU02) -HU02 #V2 #T2 #HV02 #HT02 #H destruct
 lapply (lpxs_cpx_trans … HT02 (L.ⓛV1) ?)
@@ -38,11 +38,11 @@ lapply (lpxs_cpx_trans … HT02 (L.ⓛV1) ?)
 qed-.
 
 (* Basic_2A1: was: cpxs_inv_abbr1 *)
-lemma cpxs_inv_abbr1_dx (h) (p) (G) (L):
-      ∀V1,T1,U2. ❪G,L❫ ⊢ ⓓ[p]V1.T1 ⬈*[h] U2 →
-      ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ⬈*[h] V2 & ❪G,L.ⓓV1❫ ⊢ T1 ⬈*[h] T2 & U2 = ⓓ[p]V2.T2
-       | ∃∃T2. ❪G,L.ⓓV1❫ ⊢ T1 ⬈*[h] T2 & ⇧[1] U2 ≘ T2 & p = Ⓣ.
-#h #p #G #L #V1 #T1 #U2 #H
+lemma cpxs_inv_abbr1_dx (p) (G) (L):
+      ∀V1,T1,U2. ❪G,L❫ ⊢ ⓓ[p]V1.T1 ⬈* U2 →
+      ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ⬈* V2 & ❪G,L.ⓓV1❫ ⊢ T1 ⬈* T2 & U2 = ⓓ[p]V2.T2
+       | ∃∃T2. ❪G,L.ⓓV1❫ ⊢ T1 ⬈* T2 & ⇧[1] U2 ≘ T2 & p = Ⓣ.
+#p #G #L #V1 #T1 #U2 #H
 @(cpxs_ind … H) -U2 /3 width=5 by ex3_2_intro, or_introl/
 #U0 #U2 #_ #HU02 * *
 [ #V0 #T0 #HV10 #HT10 #H destruct
index 9578dad4edaacdd6abed8c5fa0eefe2da90ec276..9af34d4feaadbf122e6afa40188a83ec32da486d 100644 (file)
 include "static_2/relocation/drops_lex.ma".
 include "basic_2/rt_computation/cpxs_drops.ma".
 
-(* UNBOUND PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS **************)
+(* EXTENDED PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS *************)
 
 (* Properties with generic slicing for local environments *******************)
 
 (* Basic_2A1: was: drop_lpxs_trans *)
-lemma drops_lpxs_trans (h) (G): dedropable_sn (cpxs h G).
+lemma drops_lpxs_trans (G):
+      dedropable_sn (cpxs G).
 /3 width=6 by lex_liftable_dedropable_sn, cpxs_lifts_sn/ qed-.
 
 (* Inversion lemmas with generic slicing for local environments *************)
 
 (* Basic_2A1: was: lpxs_drop_conf *)
-lemma lpxs_drops_conf (h) (G): dropable_sn (cpxs h G).
+lemma lpxs_drops_conf (G):
+      dropable_sn (cpxs G).
 /2 width=3 by lex_dropable_sn/ qed-.
 
 (* Basic_2A1: was: lpxs_drop_trans_O1 *)
-lemma lpxs_drops_trans (h) (G): dropable_dx (cpxs h G).
+lemma lpxs_drops_trans (G):
+      dropable_dx (cpxs G).
 /2 width=3 by lex_dropable_dx/ qed-.
index 4c2a560db5c08690adffbfa5d7bee89e5800e278..04f5a2b2904efbdd49e6185f4a91d5a6c8dc5fbe 100644 (file)
 include "static_2/static/feqx.ma".
 include "basic_2/rt_computation/lpxs_reqx.ma".
 
-(* UNBOUND PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS **************)
+(* EXTENDED PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS **************)
 
 (* Properties with sort-irrelevant equivalence on closures ******************)
 
-lemma feqx_lpxs_trans (h): ∀G1,G2,L1,L0,T1,T2. ❪G1,L1,T1❫ ≛ ❪G2,L0,T2❫ →
-                           ∀L2. ❪G2,L0❫ ⊢⬈*[h] L2 →
-                           ∃∃L. ❪G1,L1❫ ⊢⬈*[h] L & ❪G1,L,T1❫ ≛ ❪G2,L2,T2❫.
-#h #G1 #G2 #L1 #L0 #T1 #T2 #H1 #L2 #HL02
+lemma feqx_lpxs_trans:
+      ∀G1,G2,L1,L0,T1,T2. ❪G1,L1,T1❫ ≛ ❪G2,L0,T2❫ →
+      ∀L2. ❪G2,L0❫ ⊢⬈* L2 →
+      ∃∃L. ❪G1,L1❫ ⊢⬈* L & ❪G1,L,T1❫ ≛ ❪G2,L2,T2❫.
+#G1 #G2 #L1 #L0 #T1 #T2 #H1 #L2 #HL02
 elim (feqx_inv_gen_dx … H1) -H1 #HG #HL10 #HT12 destruct
 elim (reqx_lpxs_trans … HL02 … HL10) -L0 #L0 #HL10 #HL02
 /3 width=3 by feqx_intro_dx, ex2_intro/
index ec5b9dbe77cf7bf0d4c2881128da4f5fb01002a2..e851d511fa15f1e7c88cde5aa1cd5afd4b0998d4 100644 (file)
 include "static_2/relocation/lex_length.ma".
 include "basic_2/rt_computation/lpxs.ma".
 
-(* UNBOUND PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS **************)
+(* EXTENDED PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS *************)
 
 (* Forward lemmas with length for local environments ************************)
 
-lemma lpxs_fwd_length (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ⬈*[h] L2 → |L1| = |L2|.
+lemma lpxs_fwd_length (G):
+      ∀L1,L2. ❪G,L1❫ ⊢ ⬈* L2 → |L1| = |L2|.
 /2 width=2 by lex_fwd_length/ qed-.
index 18c5bb7ee7c1f53e5ca1706aaa03196f71c2baae..3faf56bf8c5874e0a624646622774d28fd5669c5 100644 (file)
@@ -16,41 +16,47 @@ include "static_2/relocation/lex_tc.ma".
 include "basic_2/rt_computation/cpxs_lpx.ma".
 include "basic_2/rt_computation/lpxs.ma".
 
-(* UNBOUND PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS **************)
+(* EXTENDED PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS *************)
 
-(* Properties with unbound rt-transition for full local environments ********)
+(* Properties with extended rt-transition for full local environments *******)
 
-lemma lpx_lpxs (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ⬈[h] L2 → ❪G,L1❫ ⊢ ⬈*[h] L2.
+lemma lpx_lpxs (G):
+      ∀L1,L2. ❪G,L1❫ ⊢ ⬈ L2 → ❪G,L1❫ ⊢ ⬈* L2.
 /3 width=3 by lpx_cpxs_trans, lex_CTC_inj/ qed.
 
 (* Basic_2A1: was: lpxs_strap2 *)
-lemma lpxs_step_sn (h) (G): ∀L1,L. ❪G,L1❫ ⊢ ⬈[h] L →
-                            ∀L2. ❪G,L❫ ⊢ ⬈*[h] L2 → ❪G,L1❫ ⊢ ⬈*[h] L2.
+lemma lpxs_step_sn (G):
+      ∀L1,L. ❪G,L1❫ ⊢ ⬈ L →
+      ∀L2. ❪G,L❫ ⊢ ⬈* L2 → ❪G,L1❫ ⊢ ⬈* L2.
 /3 width=3 by lpx_cpxs_trans, lex_CTC_step_sn/ qed-.
 
 (* Basic_2A1: was: lpxs_strap1 *)
-lemma lpxs_step_dx (h) (G): ∀L1,L. ❪G,L1❫ ⊢ ⬈*[h] L →
-                            ∀L2. ❪G,L❫ ⊢ ⬈[h] L2 → ❪G,L1❫ ⊢ ⬈*[h] L2.
+lemma lpxs_step_dx (G):
+      ∀L1,L. ❪G,L1❫ ⊢ ⬈* L →
+      ∀L2. ❪G,L❫ ⊢ ⬈ L2 → ❪G,L1❫ ⊢ ⬈* L2.
 /3 width=3 by lpx_cpxs_trans, lex_CTC_step_dx/ qed-.
 
-(* Eliminators with unbound rt-transition for full local environments *******)
+(* Eliminators with extended rt-transition for full local environments ******)
 
 (* Basic_2A1: was: lpxs_ind_dx *)
-lemma lpxs_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 lpxs_ind_sn (G) (L2) (Q:predicate …):
+      Q L2 →
+      (∀L1,L. ❪G,L1❫ ⊢ ⬈ L → ❪G,L❫ ⊢ ⬈* L2 → Q L → Q L1) →
+      ∀L1. ❪G,L1❫ ⊢ ⬈* L2 → Q L1.
 /3 width=7 by lpx_cpxs_trans, cpx_refl, lex_CTC_ind_sn/ qed-.
 
 (* Basic_2A1: was: lpxs_ind *)
-lemma lpxs_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 lpxs_ind_dx (G) (L1) (Q:predicate …):
+      Q L1 →
+      (∀L,L2. ❪G,L1❫ ⊢ ⬈* L → ❪G,L❫ ⊢ ⬈ L2 → Q L → Q L2) →
+      ∀L2. ❪G,L1❫ ⊢ ⬈* L2 → Q L2.
 /3 width=7 by lpx_cpxs_trans, cpx_refl, lex_CTC_ind_dx/ qed-.
 
 (* Properties with context-sensitive extended rt-transition for terms *******)
 
-lemma lpxs_cpx_trans (h) (G): s_r_transitive … (cpx h G) (λ_.lpxs h G).
-#h #G #L2 #T1 #T2 #HT12 #L1 #HL12
+lemma lpxs_cpx_trans (G):
+      s_r_transitive … (cpx G) (λ_.lpxs G).
+#G #L2 #T1 #T2 #HT12 #L1 #HL12
 @(s_r_trans_CTC2 ???????? HT12) -HT12
 /2 width=4 by lpx_cpxs_trans, lex_inv_CTC/
 qed-.
@@ -58,14 +64,16 @@ qed-.
 (* Properties with context-sensitive extended rt-computation for terms ******)
 
 (* Note: alternative proof by s_r_to_s_rs_trans *)
-lemma lpxs_cpxs_trans (h) (G): s_rs_transitive … (cpx h G) (λ_.lpxs h G).
-#h #G @s_r_trans_CTC1 /2 width=3 by lpxs_cpx_trans/
+lemma lpxs_cpxs_trans (G):
+      s_rs_transitive … (cpx G) (λ_.lpxs G).
+#G @s_r_trans_CTC1 /2 width=3 by lpxs_cpx_trans/
 qed-.
 
 (* Advanced properties ******************************************************)
 
 (* Basic_2A1: was: lpxs_pair2 *)
-lemma lpxs_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 lpxs_pair_dx (G):
+      ∀L1,L2. ❪G,L1❫ ⊢ ⬈* L2 →
+      ∀V1,V2. ❪G,L2❫ ⊢ V1 ⬈* V2 →
+      ∀I. ❪G,L1.ⓑ[I]V1❫ ⊢ ⬈* L2.ⓑ[I]V2.
 /3 width=3 by lpxs_pair, lpxs_cpxs_trans/ qed.
index e20b6598224f2f986ae4c6e12a9ddccfc578d196..6330bfc72e2f055fa8bdc29239fbde56378a28cc 100644 (file)
@@ -15,9 +15,9 @@
 include "static_2/relocation/lex_lex.ma".
 include "basic_2/rt_computation/lpxs_lpx.ma".
 
-(* UNBOUND PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS **************)
+(* EXTENDED PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS *************)
 
 (* Main properties **********************************************************)
 
-theorem lpxs_trans (h) (G): Transitive … (lpxs h G).
+theorem lpxs_trans (G): Transitive … (lpxs G).
 /4 width=5 by lpxs_cpxs_trans, cpxs_trans, lex_trans/ qed-.
index 29deb02390f28d93936f637b0d4a2a3a8c8b47fb..886c4dffbbb72af5e83efd2fdd546e3092996e7b 100644 (file)
 include "basic_2/rt_transition/lpx_reqx.ma".
 include "basic_2/rt_computation/lpxs_lpx.ma".
 
-(* UNBOUND PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS **************)
+(* EXTENDED PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS *************)
 
 (* Properties with sort-irrelevant equivalence on referred entries **********)
 
 (* Basic_2A1: uses: lleq_lpxs_trans *)
-lemma reqx_lpxs_trans (h) (G) (T:term):
-                      ∀L2,K2. ❪G,L2❫ ⊢ ⬈*[h] K2 →
-                      ∀L1. L1 ≛[T] L2 →
-                      ∃∃K1. ❪G,L1❫ ⊢ ⬈*[h] K1 & K1 ≛[T] K2.
-#h #G #T #L2 #K2 #H @(lpxs_ind_sn … H) -L2 /2 width=3 by ex2_intro/
+lemma reqx_lpxs_trans (G) (T:term):
+      ∀L2,K2. ❪G,L2❫ ⊢ ⬈* K2 → ∀L1. L1 ≛[T] L2 →
+      ∃∃K1. ❪G,L1❫ ⊢ ⬈* K1 & K1 ≛[T] K2.
+#G #T #L2 #K2 #H @(lpxs_ind_sn … H) -L2 /2 width=3 by ex2_intro/
 #L #L2 #HL2 #_ #IH #L1 #HT
 elim (reqx_lpx_trans … HL2 … HT) -L #L #HL1 #HT
 elim (IH … HT) -L2 #K #HLK #HT
@@ -32,11 +31,10 @@ elim (IH … HT) -L2 #K #HLK #HT
 qed-.
 
 (* Basic_2A1: uses: lpxs_nlleq_inv_step_sn *)
-lemma lpxs_rneqx_inv_step_sn (h) (G) (T:term):
-                             ∀L1,L2. ❪G,L1❫ ⊢ ⬈*[h] L2 → (L1 ≛[T] L2 → ⊥) →
-                             ∃∃L,L0. ❪G,L1❫ ⊢ ⬈[h] L & L1 ≛[T] L → ⊥ &
-                                     ❪G,L❫ ⊢ ⬈*[h] L0 & L0 ≛[T] L2.
-#h #G #T #L1 #L2 #H @(lpxs_ind_sn … H) -L1
+lemma lpxs_rneqx_inv_step_sn (G) (T:term):
+      ∀L1,L2. ❪G,L1❫ ⊢ ⬈* L2 → (L1 ≛[T] L2 → ⊥) →
+      ∃∃L,L0. ❪G,L1❫ ⊢ ⬈ L & L1 ≛[T] L → ⊥ & ❪G,L❫ ⊢ ⬈* L0 & L0 ≛[T] L2.
+#G #T #L1 #L2 #H @(lpxs_ind_sn … H) -L1
 [ #H elim H -H //
 | #L1 #L #H1 #H2 #IH2 #H12 elim (reqx_dec L1 L T) #H
   [ -H1 -H2 elim IH2 -IH2 /3 width=3 by reqx_trans/ -H12
index 35e326136b35ddf0c997fdd4b22a9fe466264cd4..9d62485711889effa4bf894ec21fe9602b50d582 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/predtysnstrong_4.ma".
+include "basic_2/notation/relations/predtysnstrong_3.ma".
 include "static_2/static/reqx.ma".
 include "basic_2/rt_transition/lpx.ma".
 
-(* STRONGLY NORMALIZING REFERRED LOCAL ENV.S FOR UNBOUND RT-TRANSITION ******)
+(* STRONGLY NORMALIZING REFERRED LOCAL ENVS FOR EXTENDED RT-TRANSITION ******)
 
-definition rsx (h) (G) (T): predicate lenv ≝
-           SN … (lpx G) (reqx T).
+definition rsx (G) (T): predicate lenv ≝
+           SN … (lpx G) (reqx T).
 
 interpretation
-  "strong normalization for unbound context-sensitive parallel rt-transition on referred entries (local environment)"
-  'PRedTySNStrong h T G L = (rsx h G T L).
+  "strong normalization for extended context-sensitive parallel rt-transition on referred entries (local environment)"
+  'PRedTySNStrong G T L = (rsx G T L).
 
 (* Basic eliminators ********************************************************)
 
 (* Basic_2A1: uses: lsx_ind *)
-lemma rsx_ind (h) (G) (T) (Q:predicate …):
-      (∀L1. G ⊢ ⬈*𝐒[h,T] L1 →
-        (∀L2. ❪G,L1❫ ⊢ ⬈[h] L2 → (L1 ≛[T] L2 → ⊥) → Q L2) →
+lemma rsx_ind (G) (T) (Q:predicate …):
+      (∀L1. G ⊢ ⬈*𝐒[T] L1 →
+        (∀L2. ❪G,L1❫ ⊢ ⬈ L2 → (L1 ≛[T] L2 → ⊥) → Q L2) →
         Q L1
       ) →
-      ∀L. G ⊢ ⬈*𝐒[h,T] L →  Q L.
-#h #G #T #Q #H0 #L1 #H elim H -L1
+      ∀L. G ⊢ ⬈*𝐒[T] L →  Q L.
+#G #T #Q #H0 #L1 #H elim H -L1
 /5 width=1 by SN_intro/
 qed-.
 
 (* Basic properties *********************************************************)
 
 (* Basic_2A1: uses: lsx_intro *)
-lemma rsx_intro (h) (G) (T):
+lemma rsx_intro (G) (T):
       ∀L1.
-      (∀L2. ❪G,L1❫ ⊢ ⬈[h] L2 → (L1 ≛[T] L2 → ⊥) → G ⊢ ⬈*𝐒[h,T] L2) →
-      G ⊢ ⬈*𝐒[h,T] L1.
+      (∀L2. ❪G,L1❫ ⊢ ⬈ L2 → (L1 ≛[T] L2 → ⊥) → G ⊢ ⬈*𝐒[T] L2) →
+      G ⊢ ⬈*𝐒[T] L1.
 /5 width=1 by SN_intro/ qed.
 
 (* Basic forward lemmas *****************************************************)
 
 (* Basic_2A1: uses: lsx_fwd_pair_sn lsx_fwd_bind_sn lsx_fwd_flat_sn *)
-lemma rsx_fwd_pair_sn (h) (G):
-      ∀I,L,V,T. G ⊢ ⬈*𝐒[h,②[I]V.T] L →
-      G ⊢ ⬈*𝐒[h,V] L.
-#h #G #I #L #V #T #H
+lemma rsx_fwd_pair_sn (G):
+      ∀I,L,V,T. G ⊢ ⬈*𝐒[②[I]V.T] L →
+      G ⊢ ⬈*𝐒[V] L.
+#G #I #L #V #T #H
 @(rsx_ind … H) -L #L1 #_ #IHL1
 @rsx_intro #L2 #HL12 #HnL12
 /4 width=3 by reqx_fwd_pair_sn/
 qed-.
 
 (* Basic_2A1: uses: lsx_fwd_flat_dx *)
-lemma rsx_fwd_flat_dx (h) (G):
-      ∀I,L,V,T. G ⊢ ⬈*𝐒[h,ⓕ[I]V.T] L →
-      G ⊢ ⬈*𝐒[h,T] L.
-#h #G #I #L #V #T #H
+lemma rsx_fwd_flat_dx (G):
+      ∀I,L,V,T. G ⊢ ⬈*𝐒[ⓕ[I]V.T] L →
+      G ⊢ ⬈*𝐒[T] L.
+#G #I #L #V #T #H
 @(rsx_ind … H) -L #L1 #_ #IHL1
 @rsx_intro #L2 #HL12 #HnL12
 /4 width=3 by reqx_fwd_flat_dx/
 qed-.
 
-fact rsx_fwd_pair_aux (h) (G):
-     ∀L. G ⊢ ⬈*𝐒[h,#0] L →
-     ∀I,K,V. L = K.ⓑ[I]V → G ⊢ ⬈*𝐒[h,V] K.
-#h #G #L #H
+fact rsx_fwd_pair_aux (G):
+     ∀L. G ⊢ ⬈*𝐒[#0] L →
+     ∀I,K,V. L = K.ⓑ[I]V → G ⊢ ⬈*𝐒[V] K.
+#G #L #H
 @(rsx_ind … H) -L #L1 #_ #IH #I #K1 #V #H destruct
 /5 width=5 by lpx_pair, rsx_intro, reqx_fwd_zero_pair/
 qed-.
 
-lemma rsx_fwd_pair (h) (G):
-      ∀I,K,V. G ⊢ ⬈*𝐒[h,#0] K.ⓑ[I]V → G ⊢ ⬈*𝐒[h,V] K.
+lemma rsx_fwd_pair (G):
+      ∀I,K,V. G ⊢ ⬈*𝐒[#0] K.ⓑ[I]V → G ⊢ ⬈*𝐒[V] K.
 /2 width=4 by rsx_fwd_pair_aux/ qed-.
 
 (* Basic inversion lemmas ***************************************************)
 
 (* Basic_2A1: uses: lsx_inv_flat *)
-lemma rsx_inv_flat (h) (G):
-      ∀I,L,V,T. G ⊢ ⬈*𝐒[h,ⓕ[I]V.T] L →
-      ∧∧ G ⊢ ⬈*𝐒[h,V] L & G ⊢ ⬈*𝐒[h,T] L.
+lemma rsx_inv_flat (G):
+      ∀I,L,V,T. G ⊢ ⬈*𝐒[ⓕ[I]V.T] L →
+      ∧∧ G ⊢ ⬈*𝐒[V] L & G ⊢ ⬈*𝐒[T] L.
 /3 width=3 by rsx_fwd_pair_sn, rsx_fwd_flat_dx, conj/ qed-.
 
 (* Basic_2A1: removed theorems 9:
index e9e5f5a374de5b36daed08b417095b8b26e694ea..c56d1c6ccfbe4462b087a349a35ca98a191b8c8f 100644 (file)
@@ -16,14 +16,14 @@ include "basic_2/rt_computation/csx_lsubr.ma".
 include "basic_2/rt_computation/csx_cpxs.ma".
 include "basic_2/rt_computation/jsx_rsx.ma".
 
-(* STRONGLY NORMALIZING REFERRED LOCAL ENV.S FOR UNBOUND RT-TRANSITION ******)
+(* STRONGLY NORMALIZING REFERRED LOCAL ENVS FOR EXTENDED RT-TRANSITION ******)
 
 (* Forward lemmas with strongly rt-normalizing terms ************************)
 
-fact rsx_fwd_lref_pair_csx_aux (h) (G):
-     ∀L. G ⊢ ⬈*𝐒[h,#0] L →
-     ∀I,K,V. L = K.ⓑ[I]V → ❪G,K❫ ⊢ ⬈*𝐒[h] V.
-#h #G #L #H
+fact rsx_fwd_lref_pair_csx_aux (G):
+     ∀L. G ⊢ ⬈*𝐒[#0] L →
+     ∀I,K,V. L = K.ⓑ[I]V → ❪G,K❫ ⊢ ⬈*𝐒 V.
+#G #L #H
 @(rsx_ind … H) -L #L #_ #IH #I #K #V1 #H destruct
 @csx_intro #V2 #HV12 #HnV12
 @(IH … I) -IH [1,4: // | -HnV12 | -G #H ]
@@ -33,13 +33,13 @@ fact rsx_fwd_lref_pair_csx_aux (h) (G):
 ]
 qed-.
 
-lemma rsx_fwd_lref_pair_csx (h) (G):
-      ∀I,K,V. G ⊢ ⬈*𝐒[h,#0] K.ⓑ[I]V → ❪G,K❫ ⊢ ⬈*𝐒[h] V.
+lemma rsx_fwd_lref_pair_csx (G):
+      ∀I,K,V. G ⊢ ⬈*𝐒[#0] K.ⓑ[I]V → ❪G,K❫ ⊢ ⬈*𝐒 V.
 /2 width=4 by rsx_fwd_lref_pair_csx_aux/ qed-.
 
-lemma rsx_fwd_lref_pair_csx_drops (h) (G):
-      ∀I,K,V,i,L. ⇩[i] L ≘ K.ⓑ[I]V → G ⊢ ⬈*𝐒[h,#i] L → ❪G,K❫ ⊢ ⬈*𝐒[h] V.
-#h #G #I #K #V #i elim i -i
+lemma rsx_fwd_lref_pair_csx_drops (G):
+      ∀I,K,V,i,L. ⇩[i] L ≘ K.ⓑ[I]V → G ⊢ ⬈*𝐒[#i] L → ❪G,K❫ ⊢ ⬈*𝐒 V.
+#G #I #K #V #i elim i -i
 [ #L #H >(drops_fwd_isid … H) -H
   /2 width=2 by rsx_fwd_lref_pair_csx/
 | #i #IH #L #H1 #H2
@@ -51,22 +51,22 @@ qed-.
 
 (* Inversion lemmas with strongly rt-normalizing terms **********************)
 
-lemma rsx_inv_lref_pair (h) (G):
-      ∀I,K,V. G ⊢ ⬈*𝐒[h,#0] K.ⓑ[I]V →
-      ∧∧ ❪G,K❫ ⊢ ⬈*𝐒[h] V & G ⊢ ⬈*𝐒[h,V] K.
+lemma rsx_inv_lref_pair (G):
+      ∀I,K,V. G ⊢ ⬈*𝐒[#0] K.ⓑ[I]V →
+      ∧∧ ❪G,K❫ ⊢ ⬈*𝐒 V & G ⊢ ⬈*𝐒[V] K.
 /3 width=2 by rsx_fwd_lref_pair_csx, rsx_fwd_pair, conj/ qed-.
 
-lemma rsx_inv_lref_pair_drops (h) (G):
-      ∀I,K,V,i,L. ⇩[i] L ≘ K.ⓑ[I]V → G ⊢ ⬈*𝐒[h,#i] L →
-      ∧∧ ❪G,K❫ ⊢ ⬈*𝐒[h] V & G ⊢ ⬈*𝐒[h,V] K.
+lemma rsx_inv_lref_pair_drops (G):
+      ∀I,K,V,i,L. ⇩[i] L ≘ K.ⓑ[I]V → G ⊢ ⬈*𝐒[#i] L →
+      ∧∧ ❪G,K❫ ⊢ ⬈*𝐒 V & G ⊢ ⬈*𝐒[V] K.
 /3 width=5 by rsx_fwd_lref_pair_csx_drops, rsx_fwd_lref_pair_drops, conj/ qed-.
 
-lemma rsx_inv_lref_drops (h) (G):
-      ∀L,i. G ⊢ ⬈*𝐒[h,#i] L →
+lemma rsx_inv_lref_drops (G):
+      ∀L,i. G ⊢ ⬈*𝐒[#i] L →
       ∨∨ ⇩*[Ⓕ,𝐔❨i❩] L ≘ ⋆
        | ∃∃I,K. ⇩[i] L ≘ K.ⓤ[I]
-       | ∃∃I,K,V. ⇩[i] L ≘ K.ⓑ[I]V & ❪G,K❫ ⊢ ⬈*𝐒[h] V & G ⊢ ⬈*𝐒[h,V] K.
-#h #G #L #i #H elim (drops_F_uni L i)
+       | ∃∃I,K,V. ⇩[i] L ≘ K.ⓑ[I]V & ❪G,K❫ ⊢ ⬈*𝐒 V & G ⊢ ⬈*𝐒[V] K.
+#G #L #i #H elim (drops_F_uni L i)
 [ /2 width=1 by or3_intro0/
 | * * /4 width=10 by rsx_fwd_lref_pair_csx_drops, rsx_fwd_lref_pair_drops, ex3_3_intro, ex1_2_intro, or3_intro2, or3_intro1/
 ]
@@ -76,11 +76,11 @@ qed-.
 
 (* Note: swapping the eliminations to avoid rsx_cpx_trans: no solution found *)
 (* Basic_2A1: uses: lsx_lref_be_lpxs *)
-lemma rsx_lref_pair_lpxs (h) (G):
-      ∀K1,V. ❪G,K1❫ ⊢ ⬈*𝐒[h] V →
-      ∀K2. G ⊢ ⬈*𝐒[h,V] K2 → ❪G,K1❫ ⊢ ⬈*[h] K2 →
-      ∀I. G ⊢ ⬈*𝐒[h,#0] K2.ⓑ[I]V.
-#h #G #K1 #V #H
+lemma rsx_lref_pair_lpxs (G):
+      ∀K1,V. ❪G,K1❫ ⊢ ⬈*𝐒 V →
+      ∀K2. G ⊢ ⬈*𝐒[V] K2 → ❪G,K1❫ ⊢ ⬈* K2 →
+      ∀I. G ⊢ ⬈*𝐒[#0] K2.ⓑ[I]V.
+#G #K1 #V #H
 @(csx_ind_cpxs … H) -V #V0 #_ #IHV0 #K2 #H
 @(rsx_ind … H) -K2 #K0 #HK0 #IHK0 #HK10 #I
 @rsx_intro #Y #HY #HnY
@@ -95,15 +95,15 @@ elim (teqx_dec V0 V2) #HnV02 destruct [ -IHV0 -HV02 -HK0 | -IHK0 -HnY ]
 ]
 qed.
 
-lemma rsx_lref_pair (h) (G):
-      ∀K,V. ❪G,K❫ ⊢ ⬈*𝐒[h] V → G ⊢ ⬈*𝐒[h,V] K → ∀I. G ⊢ ⬈*𝐒[h,#0] K.ⓑ[I]V.
+lemma rsx_lref_pair (G):
+      ∀K,V. ❪G,K❫ ⊢ ⬈*𝐒 V → G ⊢ ⬈*𝐒[V] K → ∀I. G ⊢ ⬈*𝐒[#0] K.ⓑ[I]V.
 /2 width=3 by rsx_lref_pair_lpxs/ qed.
 
 (* Basic_2A1: uses: lsx_lref_be *)
-lemma rsx_lref_pair_drops (h) (G):
-      ∀K,V. ❪G,K❫ ⊢ ⬈*𝐒[h] V → G ⊢ ⬈*𝐒[h,V] K →
-      ∀I,i,L. ⇩[i] L ≘ K.ⓑ[I]V → G ⊢ ⬈*𝐒[h,#i] L.
-#h #G #K #V #HV #HK #I #i elim i -i
+lemma rsx_lref_pair_drops (G):
+      ∀K,V. ❪G,K❫ ⊢ ⬈*𝐒 V → G ⊢ ⬈*𝐒[V] K →
+      ∀I,i,L. ⇩[i] L ≘ K.ⓑ[I]V → G ⊢ ⬈*𝐒[#i] L.
+#G #K #V #HV #HK #I #i elim i -i
 [ #L #H >(drops_fwd_isid … H) -H /2 width=1 by rsx_lref_pair/
 | #i #IH #L #H
   elim (drops_inv_bind2_isuni_next … H) -H // #J #Y #HY #H destruct
@@ -114,9 +114,9 @@ qed.
 (* Main properties with strongly rt-normalizing terms ***********************)
 
 (* Basic_2A1: uses: csx_lsx *)
-theorem csx_rsx (h) (G):
-        ∀L,T. ❪G,L❫ ⊢ ⬈*𝐒[h] T → G ⊢ ⬈*𝐒[h,T] L.
-#h #G #L #T @(fqup_wf_ind_eq (Ⓣ) … G L T) -G -L -T
+theorem csx_rsx (G):
+        ∀L,T. ❪G,L❫ ⊢ ⬈*𝐒 T → G ⊢ ⬈*𝐒[T] L.
+#G #L #T @(fqup_wf_ind_eq (Ⓣ) … G L T) -G -L -T
 #Z #Y #X #IH #G #L * *
 [ //
 | #i #HG #HL #HT #H destruct
index c4f6113ce7e70975937776885ac7e51248c43388..b8d78ca674dbb34472a340c1584c82e840bd0330 100644 (file)
@@ -17,15 +17,15 @@ include "basic_2/rt_transition/lpx_drops.ma".
 include "basic_2/rt_computation/rsx_length.ma".
 include "basic_2/rt_computation/rsx_fqup.ma".
 
-(* STRONGLY NORMALIZING REFERRED LOCAL ENV.S FOR UNBOUND RT-TRANSITION ******)
+(* STRONGLY NORMALIZING REFERRED LOCAL ENVS FOR EXTENDED RT-TRANSITION ******)
 
 (* Properties with generic relocation ***************************************)
 
 (* Note: this uses length *)
 (* Basic_2A1: uses: lsx_lift_le lsx_lift_ge *)
-lemma rsx_lifts (h) (G):
-      d_liftable1_isuni … (λL,T. G ⊢ ⬈*𝐒[h,T] L).
-#h #G #K #T #H @(rsx_ind … H) -K
+lemma rsx_lifts (G):
+      d_liftable1_isuni … (λL,T. G ⊢ ⬈*𝐒[T] L).
+#G #K #T #H @(rsx_ind … H) -K
 #K1 #_ #IH #b #f #L1 #HLK1 #Hf #U #HTU @rsx_intro
 #L2 #HL12 #HnL12 elim (lpx_drops_conf … HLK1 … HL12)
 /5 width=9 by reqx_lifts_bi, lpx_fwd_length/
@@ -34,9 +34,9 @@ qed-.
 (* Inversion lemmas on relocation *******************************************)
 
 (* Basic_2A1: uses: lsx_inv_lift_le lsx_inv_lift_be lsx_inv_lift_ge *)
-lemma rsx_inv_lifts (h) (G):
-      d_deliftable1_isuni … (λL,T. G ⊢ ⬈*𝐒[h,T] L).
-#h #G #L #U #H @(rsx_ind … H) -L
+lemma rsx_inv_lifts (G):
+      d_deliftable1_isuni … (λL,T. G ⊢ ⬈*𝐒[T] L).
+#G #L #U #H @(rsx_ind … H) -L
 #L1 #_ #IH #b #f #K1 #HLK1 #Hf #T #HTU @rsx_intro
 #K2 #HK12 #HnK12 elim (drops_lpx_trans … HLK1 … HK12) -HK12
 /4 width=10 by reqx_inv_lifts_bi/
@@ -45,26 +45,26 @@ qed-.
 (* Advanced properties ******************************************************)
 
 (* Basic_2A1: uses: lsx_lref_free *)
-lemma rsx_lref_atom_drops (h) (G):
-      ∀L,i. ⇩*[Ⓕ,𝐔❨i❩] L ≘ ⋆ → G ⊢ ⬈*𝐒[h,#i] L.
-#h #G #L1 #i #HL1
+lemma rsx_lref_atom_drops (G):
+      ∀L,i. ⇩*[Ⓕ,𝐔❨i❩] L ≘ ⋆ → G ⊢ ⬈*𝐒[#i] L.
+#G #L1 #i #HL1
 @(rsx_lifts … (#0) … HL1) -HL1 //
 qed.
 
 (* Basic_2A1: uses: lsx_lref_skip *)
-lemma rsx_lref_unit_drops (h) (G):
-      ∀I,L,K,i. ⇩[i] L ≘ K.ⓤ[I] → G ⊢ ⬈*𝐒[h,#i] L.
-#h #G #I #L1 #K1 #i #HL1
+lemma rsx_lref_unit_drops (G):
+      ∀I,L,K,i. ⇩[i] L ≘ K.ⓤ[I] → G ⊢ ⬈*𝐒[#i] L.
+#G #I #L1 #K1 #i #HL1
 @(rsx_lifts … (#0) … HL1) -HL1 //
 qed.
 
 (* Advanced forward lemmas **************************************************)
 
 (* Basic_2A1: uses: lsx_fwd_lref_be *)
-lemma rsx_fwd_lref_pair_drops (h) (G):
-      ∀L,i. G ⊢ ⬈*𝐒[h,#i] L →
-      ∀I,K,V. ⇩[i] L ≘ K.ⓑ[I]V → G ⊢ ⬈*𝐒[h,V] K.
-#h #G #L #i #HL #I #K #V #HLK
+lemma rsx_fwd_lref_pair_drops (G):
+      ∀L,i. G ⊢ ⬈*𝐒[#i] L →
+      ∀I,K,V. ⇩[i] L ≘ K.ⓑ[I]V → G ⊢ ⬈*𝐒[V] K.
+#G #L #i #HL #I #K #V #HLK
 lapply (rsx_inv_lifts … HL … HLK … (#0) ?) -L
 /2 width=2 by rsx_fwd_pair/
 qed-.
index b638da30e8ed1c9bddeae37a1442ac42a9fdf1e8..224ad7717ae6102f16bf3afde04f23140485cbf4 100644 (file)
 include "static_2/static/reqx_fqup.ma".
 include "basic_2/rt_computation/rsx.ma".
 
-(* STRONGLY NORMALIZING REFERRED LOCAL ENV.S FOR UNBOUND RT-TRANSITION ******)
+(* STRONGLY NORMALIZING REFERRED LOCAL ENVS FOR EXTENDED RT-TRANSITION ******)
 
 (* Advanced properties ******************************************************)
 
 (* Basic_2A1: uses: lsx_atom *)
-lemma lfsx_atom (h) (G) (T): G ⊢ ⬈*𝐒[h,T] ⋆.
-#h #G #T
+lemma lfsx_atom (G) (T): G ⊢ ⬈*𝐒[T] ⋆.
+#G #T
 @rsx_intro #Y #H #HnT
 lapply (lpx_inv_atom_sn … H) -H #H destruct
 elim HnT -HnT //
@@ -32,9 +32,9 @@ qed.
 (* Basic_2A1: uses: lsx_fwd_bind_dx *)
 (* Note: the exclusion binder (ⓧ) makes this more elegant and much simpler *)
 (* Note: the old proof without the exclusion binder requires lreq *)
-lemma rsx_fwd_bind_dx_void (h) (G):
-      ∀p,I,L,V,T. G ⊢ ⬈*𝐒[h,ⓑ[p,I]V.T] L → G ⊢ ⬈*𝐒[h,T] L.ⓧ.
-#h #G #p #I #L #V #T #H
+lemma rsx_fwd_bind_dx_void (G):
+      ∀p,I,L,V,T. G ⊢ ⬈*𝐒[ⓑ[p,I]V.T] L → G ⊢ ⬈*𝐒[T] L.ⓧ.
+#G #p #I #L #V #T #H
 @(rsx_ind … H) -L #L1 #_ #IH
 @rsx_intro #Y #H #HT
 elim (lpx_inv_unit_sn … H) -H #L2 #HL12 #H destruct
@@ -44,7 +44,7 @@ qed-.
 (* Advanced inversion lemmas ************************************************)
 
 (* Basic_2A1: uses: lsx_inv_bind *)
-lemma rsx_inv_bind_void (h) (G):
-      ∀p,I,L,V,T. G ⊢ ⬈*𝐒[h,ⓑ[p,I]V.T] L →
-      ∧∧ G ⊢ ⬈*𝐒[h,V] L & G ⊢ ⬈*𝐒[h,T] L.ⓧ.
+lemma rsx_inv_bind_void (G):
+      ∀p,I,L,V,T. G ⊢ ⬈*𝐒[ⓑ[p,I]V.T] L →
+      ∧∧ G ⊢ ⬈*𝐒[V] L & G ⊢ ⬈*𝐒[T] L.ⓧ.
 /3 width=4 by rsx_fwd_pair_sn, rsx_fwd_bind_dx_void, conj/ qed-.
index 4a5a8a4e50182a4ed719d96d94efbd8bc30a2c7f..98951ee646140e7bd53db694272bf7562cf1c897 100644 (file)
@@ -16,24 +16,24 @@ include "static_2/static/reqx_length.ma".
 include "basic_2/rt_transition/lpx_length.ma".
 include "basic_2/rt_computation/rsx.ma".
 
-(* STRONGLY NORMALIZING REFERRED LOCAL ENV.S FOR UNBOUND RT-TRANSITION ******)
+(* STRONGLY NORMALIZING REFERRED LOCAL ENVS FOR EXTENDED RT-TRANSITION ******)
 
 (* Advanced properties ******************************************************)
 
 (* Basic_2A1: uses: lsx_sort *)
-lemma rsx_sort (h) (G): ∀L,s. G ⊢ ⬈*𝐒[h,⋆s] L.
-#h #G #L1 #s @rsx_intro #L2 #H #Hs
+lemma rsx_sort (G): ∀L,s. G ⊢ ⬈*𝐒[⋆s] L.
+#G #L1 #s @rsx_intro #L2 #H #Hs
 elim Hs -Hs /3 width=3 by lpx_fwd_length, reqx_sort_length/
 qed.
 
 (* Basic_2A1: uses: lsx_gref *)
-lemma rsx_gref (h) (G): ∀L,l. G ⊢ ⬈*𝐒[h,§l] L.
-#h #G #L1 #s @rsx_intro #L2 #H #Hs
+lemma rsx_gref (G): ∀L,l. G ⊢ ⬈*𝐒[§l] L.
+#G #L1 #s @rsx_intro #L2 #H #Hs
 elim Hs -Hs /3 width=3 by lpx_fwd_length, reqx_gref_length/
 qed.
 
-lemma rsx_unit (h) (G): ∀I,L. G ⊢ ⬈*𝐒[h,#0] L.ⓤ[I].
-#h #G #I #L1 @rsx_intro
+lemma rsx_unit (G): ∀I,L. G ⊢ ⬈*𝐒[#0] L.ⓤ[I].
+#G #I #L1 @rsx_intro
 #Y #HY #HnY elim HnY -HnY
 elim (lpx_inv_unit_sn … HY) -HY #L2 #HL12 #H destruct
 /3 width=3 by lpx_fwd_length, reqx_unit_length/
index 5bbdcb1801880c446b3f2b315ef151e3c3993aa4..2c8e0ccb0bfb1b6a0f7af9d63c3d894352825f03 100644 (file)
@@ -16,34 +16,34 @@ include "basic_2/rt_computation/lpxs_reqx.ma".
 include "basic_2/rt_computation/lpxs_lpxs.ma".
 include "basic_2/rt_computation/rsx_rsx.ma".
 
-(* STRONGLY NORMALIZING REFERRED LOCAL ENV.S FOR UNBOUND RT-TRANSITION ******)
+(* STRONGLY NORMALIZING REFERRED LOCAL ENVS FOR EXTENDED RT-TRANSITION ******)
 
-(* Properties with unbound rt-computation for full local environments *******)
+(* Properties with extended rt-computation for full local environments ******)
 
 (* Basic_2A1: uses: lsx_intro_alt *)
-lemma rsx_intro_lpxs (h) (G):
-      ∀L1,T. (∀L2. ❪G,L1❫ ⊢ ⬈*[h] L2 → (L1 ≛[T] L2 → ⊥) → G ⊢ ⬈*𝐒[h,T] L2) →
-      G ⊢ ⬈*𝐒[h,T] L1.
+lemma rsx_intro_lpxs (G):
+      ∀L1,T. (∀L2. ❪G,L1❫ ⊢ ⬈* L2 → (L1 ≛[T] L2 → ⊥) → G ⊢ ⬈*𝐒[T] L2) →
+      G ⊢ ⬈*𝐒[T] L1.
 /4 width=1 by lpx_lpxs, rsx_intro/ qed-.
 
 (* Basic_2A1: uses: lsx_lpxs_trans *)
-lemma rsx_lpxs_trans (h) (G):
-      ∀L1,T. G ⊢ ⬈*𝐒[h,T] L1 →
-      ∀L2. ❪G,L1❫ ⊢ ⬈*[h] L2 → G ⊢ ⬈*𝐒[h,T] L2.
-#h #G #L1 #T #HL1 #L2 #H @(lpxs_ind_dx … H) -L2
+lemma rsx_lpxs_trans (G):
+      ∀L1,T. G ⊢ ⬈*𝐒[T] L1 →
+      ∀L2. ❪G,L1❫ ⊢ ⬈* L2 → G ⊢ ⬈*𝐒[T] L2.
+#G #L1 #T #HL1 #L2 #H @(lpxs_ind_dx … H) -L2
 /2 width=3 by rsx_lpx_trans/
 qed-.
 
-(* Eliminators with unbound rt-computation for full local environments ******)
+(* Eliminators with extended rt-computation for full local environments *****)
 
-lemma rsx_ind_lpxs_reqx (h) (G) (T) (Q:predicate lenv):
-      (∀L1. G ⊢ ⬈*𝐒[h,T] L1 →
-        (∀L2. ❪G,L1❫ ⊢ ⬈*[h] L2 → (L1 ≛[T] L2 → ⊥) → Q L2) →
+lemma rsx_ind_lpxs_reqx (G) (T) (Q:predicate lenv):
+      (∀L1. G ⊢ ⬈*𝐒[T] L1 →
+        (∀L2. ❪G,L1❫ ⊢ ⬈* L2 → (L1 ≛[T] L2 → ⊥) → Q L2) →
         Q L1
       ) →
-      ∀L1. G ⊢ ⬈*𝐒[h,T] L1 →
-      ∀L0. ❪G,L1❫ ⊢ ⬈*[h] L0 → ∀L2. L0 ≛[T] L2 → Q L2.
-#h #G #T #Q #IH #L1 #H @(rsx_ind … H) -L1
+      ∀L1. G ⊢ ⬈*𝐒[T] L1 →
+      ∀L0. ❪G,L1❫ ⊢ ⬈* L0 → ∀L2. L0 ≛[T] L2 → Q L2.
+#G #T #Q #IH #L1 #H @(rsx_ind … H) -L1
 #L1 #HL1 #IH1 #L0 #HL10 #L2 #HL02
 @IH -IH /3 width=3 by rsx_lpxs_trans, rsx_reqx_trans/ -HL1 #K2 #HLK2 #HnLK2
 lapply (reqx_rneqx_trans … HL02 … HnLK2) -HnLK2 #H
@@ -61,24 +61,24 @@ elim (reqx_dec L1 L0 T) #H
 qed-.
 
 (* Basic_2A1: uses: lsx_ind_alt *)
-lemma rsx_ind_lpxs (h) (G) (T) (Q:predicate lenv):
-      (∀L1. G ⊢ ⬈*𝐒[h,T] L1 →
-        (∀L2. ❪G,L1❫ ⊢ ⬈*[h] L2 → (L1 ≛[T] L2 → ⊥) → Q L2) →
+lemma rsx_ind_lpxs (G) (T) (Q:predicate lenv):
+      (∀L1. G ⊢ ⬈*𝐒[T] L1 →
+        (∀L2. ❪G,L1❫ ⊢ ⬈* L2 → (L1 ≛[T] L2 → ⊥) → Q L2) →
         Q L1
       ) →
-      ∀L. G ⊢ ⬈*𝐒[h,T] L → Q L.
-#h #G #T #Q #IH #L #HL
+      ∀L. G ⊢ ⬈*𝐒[T] L → Q L.
+#G #T #Q #IH #L #HL
 @(rsx_ind_lpxs_reqx … IH … HL) -IH -HL // (**) (* full auto fails *)
 qed-.
 
 (* Advanced properties ******************************************************)
 
-fact rsx_bind_lpxs_aux (h) (G):
-     ∀p,I,L1,V. G ⊢ ⬈*𝐒[h,V] L1 →
-     ∀Y,T. G ⊢ ⬈*𝐒[h,T] Y →
-     ∀L2. Y = L2.ⓑ[I]V → ❪G,L1❫ ⊢ ⬈*[h] L2 →
-     G ⊢ ⬈*𝐒[h,ⓑ[p,I]V.T] L2.
-#h #G #p #I #L1 #V #H @(rsx_ind_lpxs … H) -L1
+fact rsx_bind_lpxs_aux (G):
+     ∀p,I,L1,V. G ⊢ ⬈*𝐒[V] L1 →
+     ∀Y,T. G ⊢ ⬈*𝐒[T] Y →
+     ∀L2. Y = L2.ⓑ[I]V → ❪G,L1❫ ⊢ ⬈* L2 →
+     G ⊢ ⬈*𝐒[ⓑ[p,I]V.T] L2.
+#G #p #I #L1 #V #H @(rsx_ind_lpxs … H) -L1
 #L1 #_ #IHL1 #Y #T #H @(rsx_ind_lpxs … H) -Y
 #Y #HY #IHY #L2 #H #HL12 destruct
 @rsx_intro_lpxs #L0 #HL20
@@ -94,18 +94,18 @@ elim (rneqx_inv_bind … H) -H [ -IHY | -HY -IHL1 -HL12 ]
 qed-.
 
 (* Basic_2A1: uses: lsx_bind *)
-lemma rsx_bind (h) (G):
-      ∀p,I,L,V. G ⊢ ⬈*𝐒[h,V] L →
-      ∀T. G ⊢ ⬈*𝐒[h,T] L.ⓑ[I]V →
-      G ⊢ ⬈*𝐒[h,ⓑ[p,I]V.T] L.
+lemma rsx_bind (G):
+      ∀p,I,L,V. G ⊢ ⬈*𝐒[V] L →
+      ∀T. G ⊢ ⬈*𝐒[T] L.ⓑ[I]V →
+      G ⊢ ⬈*𝐒[ⓑ[p,I]V.T] L.
 /2 width=3 by rsx_bind_lpxs_aux/ qed.
 
 (* Basic_2A1: uses: lsx_flat_lpxs *)
-lemma rsx_flat_lpxs (h) (G):
-      ∀I,L1,V. G ⊢ ⬈*𝐒[h,V] L1 →
-      ∀L2,T. G ⊢ ⬈*𝐒[h,T] L2 → ❪G,L1❫ ⊢ ⬈*[h] L2 →
-      G ⊢ ⬈*𝐒[h,ⓕ[I]V.T] L2.
-#h #G #I #L1 #V #H @(rsx_ind_lpxs … H) -L1
+lemma rsx_flat_lpxs (G):
+      ∀I,L1,V. G ⊢ ⬈*𝐒[V] L1 →
+      ∀L2,T. G ⊢ ⬈*𝐒[T] L2 → ❪G,L1❫ ⊢ ⬈* L2 →
+      G ⊢ ⬈*𝐒[ⓕ[I]V.T] L2.
+#G #I #L1 #V #H @(rsx_ind_lpxs … H) -L1
 #L1 #HL1 #IHL1 #L2 #T #H @(rsx_ind_lpxs … H) -L2
 #L2 #HL2 #IHL2 #HL12 @rsx_intro_lpxs
 #L0 #HL20 lapply (lpxs_trans … HL12 … HL20)
@@ -120,17 +120,17 @@ lemma rsx_flat_lpxs (h) (G):
 qed-.
 
 (* Basic_2A1: uses: lsx_flat *)
-lemma rsx_flat (h) (G):
-      ∀I,L,V. G ⊢ ⬈*𝐒[h,V] L →
-      ∀T. G ⊢ ⬈*𝐒[h,T] L → G ⊢ ⬈*𝐒[h,ⓕ[I]V.T] L.
+lemma rsx_flat (G):
+      ∀I,L,V. G ⊢ ⬈*𝐒[V] L →
+      ∀T. G ⊢ ⬈*𝐒[T] L → G ⊢ ⬈*𝐒[ⓕ[I]V.T] L.
 /2 width=3 by rsx_flat_lpxs/ qed.
 
-fact rsx_bind_lpxs_void_aux (h) (G):
-     ∀p,I,L1,V. G ⊢ ⬈*𝐒[h,V] L1 →
-     ∀Y,T. G ⊢ ⬈*𝐒[h,T] Y →
-     ∀L2. Y = L2.ⓧ → ❪G,L1❫ ⊢ ⬈*[h] L2 →
-     G ⊢ ⬈*𝐒[h,ⓑ[p,I]V.T] L2.
-#h #G #p #I #L1 #V #H @(rsx_ind_lpxs … H) -L1
+fact rsx_bind_lpxs_void_aux (G):
+     ∀p,I,L1,V. G ⊢ ⬈*𝐒[V] L1 →
+     ∀Y,T. G ⊢ ⬈*𝐒[T] Y →
+     ∀L2. Y = L2.ⓧ → ❪G,L1❫ ⊢ ⬈* L2 →
+     G ⊢ ⬈*𝐒[ⓑ[p,I]V.T] L2.
+#G #p #I #L1 #V #H @(rsx_ind_lpxs … H) -L1
 #L1 #_ #IHL1 #Y #T #H @(rsx_ind_lpxs … H) -Y
 #Y #HY #IHY #L2 #H #HL12 destruct
 @rsx_intro_lpxs #L0 #HL20
@@ -145,8 +145,8 @@ elim (rneqx_inv_bind_void … H) -H [ -IHY | -HY -IHL1 -HL12 ]
 ]
 qed-.
 
-lemma rsx_bind_void (h) (G):
-      ∀p,I,L,V. G ⊢ ⬈*𝐒[h,V] L →
-      ∀T. G ⊢ ⬈*𝐒[h,T] L.ⓧ →
-      G ⊢ ⬈*𝐒[h,ⓑ[p,I]V.T] L.
+lemma rsx_bind_void (G):
+      ∀p,I,L,V. G ⊢ ⬈*𝐒[V] L →
+      ∀T. G ⊢ ⬈*𝐒[T] L.ⓧ →
+      G ⊢ ⬈*𝐒[ⓑ[p,I]V.T] L.
 /2 width=3 by rsx_bind_lpxs_void_aux/ qed.
index 5e594b77504d82cc8978f510c6517ebd7ca594e5..e9e8d7a8b567557d9d0713057797ff61aa80066e 100644 (file)
 include "basic_2/rt_transition/lpx_reqx.ma".
 include "basic_2/rt_computation/rsx.ma".
 
-(* STRONGLY NORMALIZING REFERRED LOCAL ENV.S FOR UNBOUND RT-TRANSITION ******)
+(* STRONGLY NORMALIZING REFERRED LOCAL ENVS FOR EXTENDED RT-TRANSITION ******)
 
 (* Advanced properties ******************************************************)
 
 (* Basic_2A1: uses: lsx_lleq_trans *)
-lemma rsx_reqx_trans (h) (G):
-      ∀L1,T. G ⊢ ⬈*𝐒[h,T] L1 →
-      ∀L2. L1 ≛[T] L2 → G ⊢ ⬈*𝐒[h,T] L2.
-#h #G #L1 #T #H @(rsx_ind … H) -L1
+lemma rsx_reqx_trans (G):
+      ∀L1,T. G ⊢ ⬈*𝐒[T] L1 →
+      ∀L2. L1 ≛[T] L2 → G ⊢ ⬈*𝐒[T] L2.
+#G #L1 #T #H @(rsx_ind … H) -L1
 #L1 #_ #IHL1 #L2 #HL12 @rsx_intro
 #L #HL2 #HnL2 elim (reqx_lpx_trans … HL2 … HL12) -HL2
 /4 width=5 by reqx_repl/
 qed-.
 
 (* Basic_2A1: uses: lsx_lpx_trans *)
-lemma rsx_lpx_trans (h) (G):
-      ∀L1,T. G ⊢ ⬈*𝐒[h,T] L1 →
-      ∀L2. ❪G,L1❫ ⊢ ⬈[h] L2 → G ⊢ ⬈*𝐒[h,T] L2.
-#h #G #L1 #T #H @(rsx_ind … H) -L1 #L1 #HL1 #IHL1 #L2 #HL12
+lemma rsx_lpx_trans (G):
+      ∀L1,T. G ⊢ ⬈*𝐒[T] L1 →
+      ∀L2. ❪G,L1❫ ⊢ ⬈ L2 → G ⊢ ⬈*𝐒[T] L2.
+#G #L1 #T #H @(rsx_ind … H) -L1 #L1 #HL1 #IHL1 #L2 #HL12
 elim (reqx_dec L1 L2 T) /3 width=4 by rsx_reqx_trans/
 qed-.
index 465871f60915c5c67dfc7dc35f2dd4eb94cec5db..777d5ecd7d2831fc1f1ce36379d17aaa3335555e 100644 (file)
@@ -18,15 +18,15 @@ include "basic_2/rt_equivalence/cpcs_cprs.ma".
 
 (* CONTEXT-SENSITIVE PARALLEL R-EQUIVALENCE FOR TERMS ***********************)
 
-(* Properties with strongly normalizing terms for unbound rt-transition *****)
+(* Properties with strongly normalizing terms for extended rt-transition ****)
 
 (* Basic_1: was: cpcs_dec *)
 lemma csx_cpcs_dec (h) (G) (L):
-      ∀T1. ❪G,L❫ ⊢ ⬈*𝐒[h] T1 → ∀T2. ❪G,L❫ ⊢ ⬈*𝐒[h] T2 →
+      ∀T1. ❪G,L❫ ⊢ ⬈*𝐒 T1 → ∀T2. ❪G,L❫ ⊢ ⬈*𝐒 T2 →
       Decidable … (❪G,L❫ ⊢ T1 ⬌*[h] T2).
 #h #G #L #T1 #HT1 #T2 #HT2
-elim (cprre_total_csx … HT1) -HT1 #U1 #HTU1
-elim (cprre_total_csx … HT2) -HT2 #U2 #HTU2
+elim (cprre_total_csx … HT1) -HT1 #U1 #HTU1
+elim (cprre_total_csx … HT2) -HT2 #U2 #HTU2
 elim (eq_term_dec U1 U2) [ #H destruct | #HnU12 ]
 [ cases HTU1 -HTU1 #HTU1 #_
   cases HTU2 -HTU2 #HTU2 #_
index 1aa7d1daa1a911daf45736be8b9db58f501e318f..f958591d49b12ee31cf5e980a6903a31c1a8d757 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/predtynormal_4.ma".
+include "basic_2/notation/relations/predtynormal_3.ma".
 include "static_2/syntax/teqx.ma".
 include "basic_2/rt_transition/cpx.ma".
 
-(* NORMAL TERMS FOR UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION ********)
+(* NORMAL TERMS FOR EXTENDED CONTEXT-SENSITIVE PARALLEL RT-TRANSITION *******)
 
-definition cnx: ∀h. relation3 genv lenv term ≝
-                λh,G,L. NF … (cpx h G L) teqx.
+definition cnx: relation3 genv lenv term ≝
+           λG,L. NF … (cpx G L) teqx.
 
 interpretation
-   "normality for unbound context-sensitive parallel rt-transition (term)"
-   'PRedTyNormal h G L T = (cnx h G L T).
+  "normality for extended context-sensitive parallel rt-transition (term)"
+  'PRedTyNormal G L T = (cnx G L T).
 
 (* Basic inversion lemmas ***************************************************)
 
-lemma cnx_inv_abst: ∀h,p,G,L,V,T. ❪G,L❫ ⊢ ⬈𝐍[h] ⓛ[p]V.T →
-                    ∧∧ ❪G,L❫ ⊢ ⬈𝐍[h] V & ❪G,L.ⓛV❫ ⊢ ⬈𝐍[h] T.
-#h #p #G #L #V1 #T1 #HVT1 @conj
+lemma cnx_inv_abst (G) (L):
+      ∀p,V,T. ❪G,L❫ ⊢ ⬈𝐍 ⓛ[p]V.T →
+      ∧∧ ❪G,L❫ ⊢ ⬈𝐍 V & ❪G,L.ⓛV❫ ⊢ ⬈𝐍 T.
+#G #L #p #V1 #T1 #HVT1 @conj
 [ #V2 #HV2 lapply (HVT1 (ⓛ[p]V2.T1) ?) -HVT1 /2 width=2 by cpx_pair_sn/ -HV2
 | #T2 #HT2 lapply (HVT1 (ⓛ[p]V1.T2) ?) -HVT1 /2 width=2 by cpx_bind/ -HT2
 ]
@@ -37,9 +38,10 @@ lemma cnx_inv_abst: ∀h,p,G,L,V,T. ❪G,L❫ ⊢ ⬈𝐍[h] ⓛ[p]V.T →
 qed-.
 
 (* Basic_2A1: was: cnx_inv_abbr *)
-lemma cnx_inv_abbr_neg: ∀h,G,L,V,T. ❪G,L❫ ⊢ ⬈𝐍[h] -ⓓV.T →
-                        ∧∧ ❪G,L❫ ⊢ ⬈𝐍[h] V & ❪G,L.ⓓV❫ ⊢ ⬈𝐍[h] T.
-#h #G #L #V1 #T1 #HVT1 @conj
+lemma cnx_inv_abbr_neg (G) (L):
+      ∀V,T. ❪G,L❫ ⊢ ⬈𝐍 -ⓓV.T →
+      ∧∧ ❪G,L❫ ⊢ ⬈𝐍 V & ❪G,L.ⓓV❫ ⊢ ⬈𝐍 T.
+#G #L #V1 #T1 #HVT1 @conj
 [ #V2 #HV2 lapply (HVT1 (-ⓓV2.T1) ?) -HVT1 /2 width=2 by cpx_pair_sn/ -HV2
 | #T2 #HT2 lapply (HVT1 (-ⓓV1.T2) ?) -HVT1 /2 width=2 by cpx_bind/ -HT2
 ]
@@ -47,21 +49,23 @@ lemma cnx_inv_abbr_neg: ∀h,G,L,V,T. ❪G,L❫ ⊢ ⬈𝐍[h] -ⓓV.T →
 qed-.
 
 (* Basic_2A1: was: cnx_inv_eps *)
-lemma cnx_inv_cast: ∀h,G,L,V,T. ❪G,L❫ ⊢ ⬈𝐍[h] ⓝV.T → ⊥.
-#h #G #L #V #T #H lapply (H T ?) -H
+lemma cnx_inv_cast (G) (L):
+      ∀V,T. ❪G,L❫ ⊢ ⬈𝐍 ⓝV.T → ⊥.
+#G #L #V #T #H lapply (H T ?) -H
 /2 width=6 by cpx_eps, teqx_inv_pair_xy_y/
 qed-.
 
 (* Basic properties *********************************************************)
 
-lemma cnx_sort: ∀h,G,L,s. ❪G,L❫ ⊢ ⬈𝐍[h] ⋆s.
-#h #G #L #s #X #H elim (cpx_inv_sort1 … H) -H
+lemma cnx_sort (G) (L):
+      ∀s. ❪G,L❫ ⊢ ⬈𝐍 ⋆s.
+#G #L #s #X #H elim (cpx_inv_sort1 … H) -H
 /2 width=1 by teqx_sort/
 qed.
 
-lemma cnx_abst: ∀h,p,G,L,W,T. ❪G,L❫ ⊢ ⬈𝐍[h] W → ❪G,L.ⓛW❫ ⊢ ⬈𝐍[h] T →
-                ❪G,L❫ ⊢ ⬈𝐍[h] ⓛ[p]W.T.
-#h #p #G #L #W #T #HW #HT #X #H
+lemma cnx_abst (G) (L):
+      ∀p,W,T. ❪G,L❫ ⊢ ⬈𝐍 W → ❪G,L.ⓛW❫ ⊢ ⬈𝐍 T → ❪G,L❫ ⊢ ⬈𝐍 ⓛ[p]W.T.
+#G #L #p #W #T #HW #HT #X #H
 elim (cpx_inv_abst1 … H) -H #W0 #T0 #HW0 #HT0 #H destruct
 @teqx_pair [ @HW | @HT ] // (**) (* auto fails because δ-expansion gets in the way *)
 qed.
index b99b444cc7e261865883e12099342fdbaeca0293..1532cfcf67a0d169dbcbebef6b3c341faf1cde7b 100644 (file)
@@ -16,14 +16,14 @@ include "static_2/relocation/lifts_teqx.ma".
 include "basic_2/rt_transition/cpx_drops_basic.ma".
 include "basic_2/rt_transition/cnx.ma".
 
-(* NORMAL TERMS FOR UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION ********)
+(* NORMAL TERMS FOR EXTENDED CONTEXT-SENSITIVE PARALLEL RT-TRANSITION *******)
 
 (* Advanced inversion lemmas ************************************************)
 
-lemma cnx_inv_abbr_pos (h) (G) (L):
-      ∀V,T. ❪G,L❫ ⊢ ⬈𝐍[h] +ⓓV.T → ⊥.
-#h #G #L #V #U1 #H
-elim (cpx_subst G (L.ⓓV) U1 … 0) [|*: /2 width=4 by drops_refl/ ] #U2 #T2 #HU12 #HTU2
+lemma cnx_inv_abbr_pos (G) (L):
+      ∀V,T. ❪G,L❫ ⊢ ⬈𝐍 +ⓓV.T → ⊥.
+#G #L #V #U1 #H
+elim (cpx_subst G (L.ⓓV) U1 … 0) [|*: /2 width=4 by drops_refl/ ] #U2 #T2 #HU12 #HTU2
 elim (teqx_dec U1 U2) #HnU12 [ -HU12 | -HTU2 ]
 [ elim (teqx_inv_lifts_dx … HnU12 … HTU2) -U2 #T1 #HTU1 #_ -T2
   lapply (H T1 ?) -H [ /2 width=3 by cpx_zeta/ ] #H
index a93454c7d041eef0535c04d7a873e0feab73c683..810fb85f31d672e83e0bce0490ad12b2d987c0d1 100644 (file)
 include "basic_2/rt_transition/rpx_reqx.ma".
 include "basic_2/rt_transition/cnx.ma".
 
-(* NORMAL TERMS FOR UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION ********)
+(* NORMAL TERMS FOR EXTENDED CONTEXT-SENSITIVE PARALLEL RT-TRANSITION *******)
 
 (* Advanced properties ******************************************************)
 
-lemma cnx_teqx_trans: ∀h,G,L,T1. ❪G,L❫ ⊢ ⬈𝐍[h] T1 →
-                      ∀T2. T1 ≛ T2 → ❪G,L❫ ⊢ ⬈𝐍[h] T2.
-#h #G #L #T1 #HT1 #T2 #HT12 #T #HT2
+lemma cnx_teqx_trans (G) (L):
+      ∀T1. ❪G,L❫ ⊢ ⬈𝐍 T1 → ∀T2. T1 ≛ T2 → ❪G,L❫ ⊢ ⬈𝐍 T2.
+#G #L #T1 #HT1 #T2 #HT12 #T #HT2
 elim (teqx_cpx_trans … HT12 … HT2) -HT2 #T0 #HT10 #HT0
 lapply (HT1 … HT10) -HT1 -HT10 /2 width=5 by teqx_repl/ (**) (* full auto fails *)
 qed-.
index 0f57cbb00a990a2e114455c17b277ddf017fdcfe..57cb5d216cd9bcd8be7636265486e67e8679ddc2 100644 (file)
@@ -16,23 +16,25 @@ include "static_2/relocation/lifts_teqx.ma".
 include "basic_2/rt_transition/cpx_drops.ma".
 include "basic_2/rt_transition/cnx.ma".
 
-(* NORMAL TERMS FOR UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION ********)
+(* NORMAL TERMS FOR EXTENDED CONTEXT-SENSITIVE PARALLEL RT-TRANSITION *******)
 
 (* Properties with generic slicing ******************************************)
 
-lemma cnx_lref_atom: ∀h,G,L,i. ⇩[i] L ≘ ⋆ → ❪G,L❫ ⊢ ⬈𝐍[h] #i.
-#h #G #L #i #Hi #X #H elim (cpx_inv_lref1_drops … H) -H // *
+lemma cnx_lref_atom (G) (L):
+      ∀i. ⇩[i] L ≘ ⋆ → ❪G,L❫ ⊢ ⬈𝐍 #i.
+#G #L #i #Hi #X #H elim (cpx_inv_lref1_drops … H) -H // *
 #I #K #V1 #V2 #HLK lapply (drops_mono … Hi … HLK) -L #H destruct
 qed.
 
-lemma cnx_lref_unit: ∀h,I,G,L,K,i. ⇩[i] L ≘ K.ⓤ[I] → ❪G,L❫ ⊢ ⬈𝐍[h] #i.
-#h #I #G #L #K #i #HLK #X #H elim (cpx_inv_lref1_drops … H) -H // *
+lemma cnx_lref_unit (G) (L):
+      ∀I,K,i. ⇩[i] L ≘ K.ⓤ[I] → ❪G,L❫ ⊢ ⬈𝐍 #i.
+#G #L #I #K #i #HLK #X #H elim (cpx_inv_lref1_drops … H) -H // *
 #Z #Y #V1 #V2 #HLY lapply (drops_mono … HLK … HLY) -L #H destruct
 qed.
 
 (* Basic_2A1: includes: cnx_lift *)
-lemma cnx_lifts: ∀h,G. d_liftable1 … (cnx h G).
-#h #G #K #T #HT #b #f #L #HLK #U #HTU #U0 #H
+lemma cnx_lifts (G): d_liftable1 … (cnx G).
+#G #K #T #HT #b #f #L #HLK #U #HTU #U0 #H
 elim (cpx_inv_lifts_sn … H … HLK … HTU) -b -L #T0 #HTU0 #HT0
 lapply (HT … HT0) -G -K /2 width=6 by teqx_lifts_bi/
 qed-.
@@ -40,9 +42,9 @@ qed-.
 (* Inversion lemmas with generic slicing ************************************)
 
 (* Basic_2A1: was: cnx_inv_delta *)
-lemma cnx_inv_lref_pair:
-      ∀h,I,G,L,K,V,i. ⇩[i] L ≘ K.ⓑ[I]V → ❪G,L❫ ⊢ ⬈𝐍[h] #i → ⊥.
-#h #I #G #L #K #V #i #HLK #H
+lemma cnx_inv_lref_pair (G) (L):
+      ∀I,K,V,i. ⇩[i] L ≘ K.ⓑ[I]V → ❪G,L❫ ⊢ ⬈𝐍 #i → ⊥.
+#G #L #I #K #V #i #HLK #H
 elim (lifts_total V (𝐔❨↑i❩)) #W #HVW
 lapply (H W ?) -H /2 width=7 by cpx_delta_drops/ -HLK
 #H lapply (teqx_inv_lref1 … H) -H #H destruct
@@ -50,8 +52,8 @@ lapply (H W ?) -H /2 width=7 by cpx_delta_drops/ -HLK
 qed-.
 
 (* Basic_2A1: includes: cnx_inv_lift *)
-lemma cnx_inv_lifts: ∀h,G. d_deliftable1 … (cnx h G).
-#h #G #L #U #HU #b #f #K #HLK #T #HTU #T0 #H
+lemma cnx_inv_lifts (G): d_deliftable1 … (cnx G).
+#G #L #U #HU #b #f #K #HLK #T #HTU #T0 #H
 elim (cpx_lifts_sn … H … HLK … HTU) -b -K #U0 #HTU0 #HU0
 lapply (HU … HU0) -G -L /2 width=6 by teqx_inv_lifts_bi/
 qed-.
index dfee9d0e0ea167378f31b4a976c2d4d8bfe2fedb..261a220aa54b341f2cf86f85274efb7115b28072 100644 (file)
 include "basic_2/rt_transition/cpx_simple.ma".
 include "basic_2/rt_transition/cnx.ma".
 
-(* NORMAL TERMS FOR UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION ********)
+(* NORMAL TERMS FOR EXTENDED CONTEXT-SENSITIVE PARALLEL RT-TRANSITION *******)
 
 (* Inversion lemmas with simple terms ***************************************)
 
-lemma cnx_inv_appl: ∀h,G,L,V,T. ❪G,L❫ ⊢ ⬈𝐍[h] ⓐV.T →
-                    ∧∧ ❪G,L❫ ⊢ ⬈𝐍[h] V & ❪G,L❫ ⊢ ⬈𝐍[h] T & 𝐒❪T❫.
-#h #G #L #V1 #T1 #HVT1 @and3_intro
+lemma cnx_inv_appl (G) (L):
+      ∀V,T. ❪G,L❫ ⊢ ⬈𝐍 ⓐV.T →
+      ∧∧ ❪G,L❫ ⊢ ⬈𝐍 V & ❪G,L❫ ⊢ ⬈𝐍 T & 𝐒❪T❫.
+#G #L #V1 #T1 #HVT1 @and3_intro
 [ #V2 #HV2 lapply (HVT1 (ⓐV2.T1) ?) -HVT1 /2 width=1 by cpx_pair_sn/ -HV2
   #H elim (teqx_inv_pair … H) -H //
 | #T2 #HT2 lapply (HVT1 (ⓐV1.T2) ?) -HVT1 /2 width=1 by cpx_flat/ -HT2
@@ -39,9 +40,9 @@ qed-.
 
 (* Properties with simple terms *********************************************)
 
-lemma cnx_appl_simple: ∀h,G,L,V,T. ❪G,L❫ ⊢ ⬈𝐍[h] V → ❪G,L❫ ⊢ ⬈𝐍[h] T → 𝐒❪T❫ →
-                       ❪G,L❫ ⊢ ⬈𝐍[h] ⓐV.T.
-#h #G #L #V #T #HV #HT #HS #X #H elim (cpx_inv_appl1_simple … H) -H //
+lemma cnx_appl_simple (G) (L):
+      ∀V,T. ❪G,L❫ ⊢ ⬈𝐍 V → ❪G,L❫ ⊢ ⬈𝐍 T → 𝐒❪T❫ → ❪G,L❫ ⊢ ⬈𝐍 ⓐV.T.
+#G #L #V #T #HV #HT #HS #X #H elim (cpx_inv_appl1_simple … H) -H //
 #V0 #T0 #HV0 #HT0 #H destruct
 @teqx_pair [ @HV | @HT ] // (**) (* auto fails because δ-expansion gets in the way *)
 qed.
index 36b69f4c594186b97010d1e0a55c6d9dc8894228..ad020929be506ce06bda80d136da981a207a2294 100644 (file)
@@ -23,7 +23,6 @@ include "ground/steps/rtc_shift.ma".
 include "ground/steps/rtc_plus.ma".
 include "ground/steps/rtc_max.ma".
 include "basic_2/notation/relations/predty_7.ma".
-include "static_2/syntax/sh.ma".
 include "static_2/syntax/lenv.ma".
 include "static_2/syntax/genv.ma".
 include "static_2/relocation/lifts.ma".
@@ -31,63 +30,62 @@ include "static_2/relocation/lifts.ma".
 (* BOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS *****************)
 
 (* avtivate genv *)
-inductive cpg (Rt:relation rtc) (h): rtc → relation4 genv lenv term term ≝
-| cpg_atom : ∀I,G,L. cpg Rt h (𝟘𝟘) G L (⓪[I]) (⓪[I])
-| cpg_ess  : ∀G,L,s. cpg Rt h (𝟘𝟙) G L (⋆s) (⋆(⫯[h]s))
-| cpg_delta: ∀c,G,L,V1,V2,W2. cpg Rt h c G L V1 V2 →
-             ⇧[1] V2 ≘ W2 → cpg Rt h c G (L.ⓓV1) (#0) W2
-| cpg_ell  : ∀c,G,L,V1,V2,W2. cpg Rt h c G L V1 V2 →
-             ⇧[1] V2 ≘ W2 → cpg Rt h (c+𝟘𝟙) G (L.ⓛV1) (#0) W2
-| cpg_lref : ∀c,I,G,L,T,U,i. cpg Rt h c G L (#i) T →
-             ⇧[1] T ≘ U → cpg Rt h c G (L.ⓘ[I]) (#↑i) U
+inductive cpg (Rs:relation nat) (Rk:relation rtc): rtc → relation4 genv lenv term term ≝
+| cpg_atom : ∀I,G,L. cpg Rs Rk (𝟘𝟘) G L (⓪[I]) (⓪[I])
+| cpg_ess  : ∀G,L,s1,s2. Rs s1 s2 → cpg Rs Rk (𝟘𝟙) G L (⋆s1) (⋆s2)
+| cpg_delta: ∀c,G,L,V1,V2,W2. cpg Rs Rk c G L V1 V2 →
+             ⇧[1] V2 ≘ W2 → cpg Rs Rk c G (L.ⓓV1) (#0) W2
+| cpg_ell  : ∀c,G,L,V1,V2,W2. cpg Rs Rk c G L V1 V2 →
+             ⇧[1] V2 ≘ W2 → cpg Rs Rk (c+𝟘𝟙) G (L.ⓛV1) (#0) W2
+| cpg_lref : ∀c,I,G,L,T,U,i. cpg Rs Rk c G L (#i) T →
+             ⇧[1] T ≘ U → cpg Rs Rk c G (L.ⓘ[I]) (#↑i) U
 | cpg_bind : ∀cV,cT,p,I,G,L,V1,V2,T1,T2.
-             cpg Rt h cV G L V1 V2 → cpg Rt h cT G (L.ⓑ[I]V1) T1 T2 →
-             cpg Rt h ((↕*cV)∨cT) G L (ⓑ[p,I]V1.T1) (ⓑ[p,I]V2.T2)
+             cpg Rs Rk cV G L V1 V2 → cpg Rs Rk cT G (L.ⓑ[I]V1) T1 T2 →
+             cpg Rs Rk ((↕*cV)∨cT) G L (ⓑ[p,I]V1.T1) (ⓑ[p,I]V2.T2)
 | cpg_appl : ∀cV,cT,G,L,V1,V2,T1,T2.
-             cpg Rt h cV G L V1 V2 → cpg Rt h cT G L T1 T2 →
-             cpg Rt h ((↕*cV)∨cT) G L (ⓐV1.T1) (ⓐV2.T2)
-| cpg_cast : ∀cU,cT,G,L,U1,U2,T1,T2. Rt cU cT →
-             cpg Rt h cU G L U1 U2 → cpg Rt h cT G L T1 T2 →
-             cpg Rt h (cU∨cT) G L (ⓝU1.T1) (ⓝU2.T2)
-| cpg_zeta : ∀c,G,L,V,T1,T,T2. ⇧[1] T ≘ T1 → cpg Rt h c G L T T2 →
-             cpg Rt h (c+𝟙𝟘) G L (+ⓓV.T1) T2
-| cpg_eps  : ∀c,G,L,V,T1,T2. cpg Rt h c G L T1 T2 → cpg Rt h (c+𝟙𝟘) G L (ⓝV.T1) T2
-| cpg_ee   : ∀c,G,L,V1,V2,T. cpg Rt h c G L V1 V2 → cpg Rt h (c+𝟘𝟙) G L (ⓝV1.T) V2
+             cpg Rs Rk cV G L V1 V2 → cpg Rs Rk cT G L T1 T2 →
+             cpg Rs Rk ((↕*cV)∨cT) G L (ⓐV1.T1) (ⓐV2.T2)
+| cpg_cast : ∀cU,cT,G,L,U1,U2,T1,T2. Rk cU cT →
+             cpg Rs Rk cU G L U1 U2 → cpg Rs Rk cT G L T1 T2 →
+             cpg Rs Rk (cU∨cT) G L (ⓝU1.T1) (ⓝU2.T2)
+| cpg_zeta : ∀c,G,L,V,T1,T,T2. ⇧[1] T ≘ T1 → cpg Rs Rk c G L T T2 →
+             cpg Rs Rk (c+𝟙𝟘) G L (+ⓓV.T1) T2
+| cpg_eps  : ∀c,G,L,V,T1,T2. cpg Rs Rk c G L T1 T2 → cpg Rs Rk (c+𝟙𝟘) G L (ⓝV.T1) T2
+| cpg_ee   : ∀c,G,L,V1,V2,T. cpg Rs Rk c G L V1 V2 → cpg Rs Rk (c+𝟘𝟙) G L (ⓝV1.T) V2
 | cpg_beta : ∀cV,cW,cT,p,G,L,V1,V2,W1,W2,T1,T2.
-             cpg Rt h cV G L V1 V2 → cpg Rt h cW G L W1 W2 → cpg Rt h cT G (L.ⓛW1) T1 T2 →
-             cpg Rt h (((↕*cV)∨(↕*cW)∨cT)+𝟙𝟘) G L (ⓐV1.ⓛ[p]W1.T1) (ⓓ[p]ⓝW2.V2.T2)
+             cpg Rs Rk cV G L V1 V2 → cpg Rs Rk cW G L W1 W2 → cpg Rs Rk cT G (L.ⓛW1) T1 T2 →
+             cpg Rs Rk (((↕*cV)∨(↕*cW)∨cT)+𝟙𝟘) G L (ⓐV1.ⓛ[p]W1.T1) (ⓓ[p]ⓝW2.V2.T2)
 | cpg_theta: ∀cV,cW,cT,p,G,L,V1,V,V2,W1,W2,T1,T2.
-             cpg Rt h cV G L V1 V → ⇧[1] V ≘ V2 → cpg Rt h cW G L W1 W2 →
-             cpg Rt h cT G (L.ⓓW1) T1 T2 →
-             cpg Rt h (((↕*cV)∨(↕*cW)∨cT)+𝟙𝟘) G L (ⓐV1.ⓓ[p]W1.T1) (ⓓ[p]W2.ⓐV2.T2)
+             cpg Rs Rk cV G L V1 V → ⇧[1] V ≘ V2 → cpg Rs Rk cW G L W1 W2 →
+             cpg Rs Rk cT G (L.ⓓW1) T1 T2 →
+             cpg Rs Rk (((↕*cV)∨(↕*cW)∨cT)+𝟙𝟘) G L (ⓐV1.ⓓ[p]W1.T1) (ⓓ[p]W2.ⓐV2.T2)
 .
 
 interpretation
    "bound context-sensitive parallel rt-transition (term)"
-   'PRedTy Rt c h G L T1 T2 = (cpg Rt h c G L T1 T2).
+   'PRedTy Rs Rk c G L T1 T2 = (cpg Rs Rk c G L T1 T2).
 
 (* Basic properties *********************************************************)
 
-(* Note: this is "∀Rt. reflexive … Rt → ∀h,g,L. reflexive … (cpg Rt h (𝟘𝟘) L)" *)
-lemma cpg_refl: ∀Rt. reflexive … Rt → ∀h,G,T,L. ❪G,L❫ ⊢ T ⬈[Rt,𝟘𝟘,h] T.
-#Rt #HRt #h #G #T elim T -T // * /2 width=1 by cpg_bind/
+(* Note: this is "∀Rs,Rk. reflexive … Rk → ∀G,L. reflexive … (cpg Rs Rk (𝟘𝟘) G L)" *)
+lemma cpg_refl (Rs) (Rk):
+      reflexive … Rk → ∀G,T,L. ❪G,L❫ ⊢ T ⬈[Rs,Rk,𝟘𝟘] T.
+#Rk #HRk #h #G #T elim T -T // * /2 width=1 by cpg_bind/
 * /2 width=1 by cpg_appl, cpg_cast/
 qed.
 
 (* Basic inversion lemmas ***************************************************)
 
-fact cpg_inv_atom1_aux: ∀Rt,c,h,G,L,T1,T2. ❪G,L❫ ⊢ T1 ⬈[Rt,c,h] T2 → ∀J. T1 = ⓪[J] →
-                        ∨∨ T2 = ⓪[J] ∧ c = 𝟘𝟘
-                         | ∃∃s. J = Sort s & T2 = ⋆(⫯[h]s) & c = 𝟘𝟙
-                         | ∃∃cV,K,V1,V2. ❪G,K❫ ⊢ V1 ⬈[Rt,cV,h] V2 & ⇧[1] V2 ≘ T2 &
-                                         L = K.ⓓV1 & J = LRef 0 & c = cV
-                         | ∃∃cV,K,V1,V2. ❪G,K❫ ⊢ V1 ⬈[Rt,cV,h] V2 & ⇧[1] V2 ≘ T2 &
-                                         L = K.ⓛV1 & J = LRef 0 & c = cV+𝟘𝟙
-                         | ∃∃I,K,T,i. ❪G,K❫ ⊢ #i ⬈[Rt,c,h] T & ⇧[1] T ≘ T2 &
-                                      L = K.ⓘ[I] & J = LRef (↑i).
-#Rt #c #h #G #L #T1 #T2 * -c -G -L -T1 -T2
+fact cpg_inv_atom1_aux (Rs) (Rk) (c) (G) (L):
+     ∀T1,T2. ❪G,L❫ ⊢ T1 ⬈[Rs,Rk,c] T2 → ∀J. T1 = ⓪[J] →
+     ∨∨ ∧∧ T2 = ⓪[J] & c = 𝟘𝟘
+      | ∃∃s1,s2. Rs s1 s2 & J = Sort s1 & T2 = ⋆s2 & c = 𝟘𝟙
+      | ∃∃cV,K,V1,V2. ❪G,K❫ ⊢ V1 ⬈[Rs,Rk,cV] V2 & ⇧[1] V2 ≘ T2 & L = K.ⓓV1 & J = LRef 0 & c = cV
+      | ∃∃cV,K,V1,V2. ❪G,K❫ ⊢ V1 ⬈[Rs,Rk,cV] V2 & ⇧[1] V2 ≘ T2 & L = K.ⓛV1 & J = LRef 0 & c = cV+𝟘𝟙
+      | ∃∃I,K,T,i. ❪G,K❫ ⊢ #i ⬈[Rs,Rk,c] T & ⇧[1] T ≘ T2 & L = K.ⓘ[I] & J = LRef (↑i).
+#Rs #Rk #c #G #L #T1 #T2 * -c -G -L -T1 -T2
 [ #I #G #L #J #H destruct /3 width=1 by or5_intro0, conj/
-| #G #L #s #J #H destruct /3 width=3 by or5_intro1, ex3_intro/
+| #G #L #s1 #s2 #HRs #J #H destruct /3 width=5 by or5_intro1, ex4_2_intro/
 | #c #G #L #V1 #V2 #W2 #HV12 #VW2 #J #H destruct /3 width=8 by or5_intro2, ex5_4_intro/
 | #c #G #L #V1 #V2 #W2 #HV12 #VW2 #J #H destruct /3 width=8 by or5_intro3, ex5_4_intro/
 | #c #I #G #L #T #U #i #HT #HTU #J #H destruct /3 width=8 by or5_intro4, ex4_4_intro/
@@ -102,70 +100,70 @@ fact cpg_inv_atom1_aux: ∀Rt,c,h,G,L,T1,T2. ❪G,L❫ ⊢ T1 ⬈[Rt,c,h] T2 →
 ]
 qed-.
 
-lemma cpg_inv_atom1: ∀Rt,c,h,J,G,L,T2. ❪G,L❫ ⊢ ⓪[J] ⬈[Rt,c,h] T2 →
-                     ∨∨ T2 = ⓪[J] ∧ c = 𝟘𝟘
-                      | ∃∃s. J = Sort s & T2 = ⋆(⫯[h]s) & c = 𝟘𝟙
-                      | ∃∃cV,K,V1,V2. ❪G,K❫ ⊢ V1 ⬈[Rt,cV,h] V2 & ⇧[1] V2 ≘ T2 &
-                                      L = K.ⓓV1 & J = LRef 0 & c = cV
-                      | ∃∃cV,K,V1,V2. ❪G,K❫ ⊢ V1 ⬈[Rt,cV,h] V2 & ⇧[1] V2 ≘ T2 &
-                                      L = K.ⓛV1 & J = LRef 0 & c = cV+𝟘𝟙
-                      | ∃∃I,K,T,i. ❪G,K❫ ⊢ #i ⬈[Rt,c,h] T & ⇧[1] T ≘ T2 &
-                                   L = K.ⓘ[I] & J = LRef (↑i).
+lemma cpg_inv_atom1 (Rs) (Rk) (c) (G) (L):
+      ∀J,T2. ❪G,L❫ ⊢ ⓪[J] ⬈[Rs,Rk,c] T2 →
+      ∨∨ ∧∧ T2 = ⓪[J] & c = 𝟘𝟘
+       | ∃∃s1,s2. Rs s1 s2 & J = Sort s1 & T2 = ⋆s2 & c = 𝟘𝟙
+       | ∃∃cV,K,V1,V2. ❪G,K❫ ⊢ V1 ⬈[Rs,Rk,cV] V2 & ⇧[1] V2 ≘ T2 & L = K.ⓓV1 & J = LRef 0 & c = cV
+       | ∃∃cV,K,V1,V2. ❪G,K❫ ⊢ V1 ⬈[Rs,Rk,cV] V2 & ⇧[1] V2 ≘ T2 & L = K.ⓛV1 & J = LRef 0 & c = cV+𝟘𝟙
+       | ∃∃I,K,T,i. ❪G,K❫ ⊢ #i ⬈[Rs,Rk,c] T & ⇧[1] T ≘ T2 & L = K.ⓘ[I] & J = LRef (↑i).
 /2 width=3 by cpg_inv_atom1_aux/ qed-.
 
-lemma cpg_inv_sort1: ∀Rt,c,h,G,L,T2,s. ❪G,L❫ ⊢ ⋆s ⬈[Rt,c,h] T2 →
-                     ∨∨ T2 = ⋆s ∧ c = 𝟘𝟘 | T2 = ⋆(⫯[h]s) ∧ c = 𝟘𝟙.
-#Rt #c #h #G #L #T2 #s #H
+lemma cpg_inv_sort1 (Rs) (Rk) (c) (G) (L):
+      ∀T2,s1. ❪G,L❫ ⊢ ⋆s1 ⬈[Rs,Rk,c] T2 →
+      ∨∨ ∧∧ T2 = ⋆s1 & c = 𝟘𝟘
+       | ∃∃s2. Rs s1 s2 & T2 = ⋆s2 & c = 𝟘𝟙.
+#Rs #Rk #c #G #L #T2 #s #H
 elim (cpg_inv_atom1 … H) -H * /3 width=1 by or_introl, conj/
-[ #s0 #H destruct /3 width=1 by or_intror, conj/
+[ #s1 #s2 #HRs #H1 #H2 #H3 destruct /3 width=3 by ex3_intro, or_intror/
 |2,3: #cV #K #V1 #V2 #_ #_ #_ #H destruct
 | #I #K #T #i #_ #_ #_ #H destruct
 ]
 qed-.
 
-lemma cpg_inv_zero1: ∀Rt,c,h,G,L,T2. ❪G,L❫ ⊢ #0 ⬈[Rt,c,h] T2 →
-                     ∨∨ T2 = #0 ∧ c = 𝟘𝟘
-                      | ∃∃cV,K,V1,V2. ❪G,K❫ ⊢ V1 ⬈[Rt,cV,h] V2 & ⇧[1] V2 ≘ T2 &
-                                      L = K.ⓓV1 & c = cV
-                      | ∃∃cV,K,V1,V2. ❪G,K❫ ⊢ V1 ⬈[Rt,cV,h] V2 & ⇧[1] V2 ≘ T2 &
-                                      L = K.ⓛV1 & c = cV+𝟘𝟙.
-#Rt #c #h #G #L #T2 #H
+lemma cpg_inv_zero1 (Rs) (Rk) (c) (G) (L):
+      ∀T2. ❪G,L❫ ⊢ #0 ⬈[Rs,Rk,c] T2 →
+      ∨∨ ∧∧ T2 = #0 & c = 𝟘𝟘
+       | ∃∃cV,K,V1,V2. ❪G,K❫ ⊢ V1 ⬈[Rs,Rk,cV] V2 & ⇧[1] V2 ≘ T2 & L = K.ⓓV1 & c = cV
+       | ∃∃cV,K,V1,V2. ❪G,K❫ ⊢ V1 ⬈[Rs,Rk,cV] V2 & ⇧[1] V2 ≘ T2 & L = K.ⓛV1 & c = cV+𝟘𝟙.
+#Rs #Rk #c #G #L #T2 #H
 elim (cpg_inv_atom1 … H) -H * /3 width=1 by or3_intro0, conj/
-[ #s #H destruct
+[ #s1 #s2 #_ #H destruct
 |2,3: #cV #K #V1 #V2 #HV12 #HVT2 #H1 #_ #H2 destruct /3 width=8 by or3_intro1, or3_intro2, ex4_4_intro/
 | #I #K #T #i #_ #_ #_ #H destruct
 ]
 qed-.
 
-lemma cpg_inv_lref1: ∀Rt,c,h,G,L,T2,i. ❪G,L❫ ⊢ #↑i ⬈[Rt,c,h] T2 →
-                     ∨∨ T2 = #(↑i) ∧ c = 𝟘𝟘
-                      | ∃∃I,K,T. ❪G,K❫ ⊢ #i ⬈[Rt,c,h] T & ⇧[1] T ≘ T2 & L = K.ⓘ[I].
-#Rt #c #h #G #L #T2 #i #H
+lemma cpg_inv_lref1 (Rs) (Rk) (c) (G) (L):
+      ∀T2,i. ❪G,L❫ ⊢ #↑i ⬈[Rs,Rk,c] T2 →
+      ∨∨ ∧∧ T2 = #(↑i) & c = 𝟘𝟘
+       | ∃∃I,K,T. ❪G,K❫ ⊢ #i ⬈[Rs,Rk,c] T & ⇧[1] T ≘ T2 & L = K.ⓘ[I].
+#Rs #Rk #c #G #L #T2 #i #H
 elim (cpg_inv_atom1 … H) -H * /3 width=1 by or_introl, conj/
-[ #s #H destruct
+[ #s1 #s2 #_ #H destruct
 |2,3: #cV #K #V1 #V2 #_ #_ #_ #H destruct
 | #I #K #T #j #HT #HT2 #H1 #H2 destruct /3 width=6 by ex3_3_intro, or_intror/
 ]
 qed-.
 
-lemma cpg_inv_gref1: ∀Rt,c,h,G,L,T2,l. ❪G,L❫ ⊢ §l ⬈[Rt,c,h] T2 → T2 = §l ∧ c = 𝟘𝟘.
-#Rt #c #h #G #L #T2 #l #H
+lemma cpg_inv_gref1 (Rs) (Rk) (c) (G) (L):
+      ∀T2,l. ❪G,L❫ ⊢ §l ⬈[Rs,Rk,c] T2 → ∧∧ T2 = §l & c = 𝟘𝟘.
+#Rs #Rk #c #G #L #T2 #l #H
 elim (cpg_inv_atom1 … H) -H * /2 width=1 by conj/
-[ #s #H destruct
+[ #s1 #s2 #_ #H destruct
 |2,3: #cV #K #V1 #V2 #_ #_ #_ #H destruct
 | #I #K #T #i #_ #_ #_ #H destruct
 ]
 qed-.
 
-fact cpg_inv_bind1_aux: ∀Rt,c,h,G,L,U,U2. ❪G,L❫ ⊢ U ⬈[Rt,c,h] U2 →
-                        ∀p,J,V1,U1. U = ⓑ[p,J]V1.U1 →
-                        ∨∨ ∃∃cV,cT,V2,T2. ❪G,L❫ ⊢ V1 ⬈[Rt,cV,h] V2 & ❪G,L.ⓑ[J]V1❫ ⊢ U1 ⬈[Rt,cT,h] T2 &
-                                          U2 = ⓑ[p,J]V2.T2 & c = ((↕*cV)∨cT)
-                         | ∃∃cT,T. ⇧[1] T ≘ U1 & ❪G,L❫ ⊢ T ⬈[Rt,cT,h] U2 &
-                                   p = true & J = Abbr & c = cT+𝟙𝟘.
-#Rt #c #h #G #L #U #U2 * -c -G -L -U -U2
+fact cpg_inv_bind1_aux (Rs) (Rk) (c) (G) (L):
+     ∀U,U2. ❪G,L❫ ⊢ U ⬈[Rs,Rk,c] U2 →
+     ∀p,J,V1,U1. U = ⓑ[p,J]V1.U1 →
+     ∨∨ ∃∃cV,cT,V2,T2. ❪G,L❫ ⊢ V1 ⬈[Rs,Rk,cV] V2 & ❪G,L.ⓑ[J]V1❫ ⊢ U1 ⬈[Rs,Rk,cT] T2 & U2 = ⓑ[p,J]V2.T2 & c = ((↕*cV)∨cT)
+      | ∃∃cT,T. ⇧[1] T ≘ U1 & ❪G,L❫ ⊢ T ⬈[Rs,Rk,cT] U2 & p = true & J = Abbr & c = cT+𝟙𝟘.
+#Rs #Rk #c #G #L #U #U2 * -c -G -L -U -U2
 [ #I #G #L #q #J #W #U1 #H destruct
-| #G #L #s #q #J #W #U1 #H destruct
+| #G #L #s1 #s2 #_ #q #J #W #U1 #H destruct
 | #c #G #L #V1 #V2 #W2 #_ #_ #q #J #W #U1 #H destruct
 | #c #G #L #V1 #V2 #W2 #_ #_ #q #J #W #U1 #H destruct
 | #c #I #G #L #T #U #i #_ #_ #q #J #W #U1 #H destruct
@@ -180,42 +178,38 @@ fact cpg_inv_bind1_aux: ∀Rt,c,h,G,L,U,U2. ❪G,L❫ ⊢ U ⬈[Rt,c,h] U2 →
 ]
 qed-.
 
-lemma cpg_inv_bind1: ∀Rt,c,h,p,I,G,L,V1,T1,U2. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈[Rt,c,h] U2 →
-                     ∨∨ ∃∃cV,cT,V2,T2. ❪G,L❫ ⊢ V1 ⬈[Rt,cV,h] V2 & ❪G,L.ⓑ[I]V1❫ ⊢ T1 ⬈[Rt,cT,h] T2 &
-                                       U2 = ⓑ[p,I]V2.T2 & c = ((↕*cV)∨cT)
-                      | ∃∃cT,T. ⇧[1] T ≘ T1 & ❪G,L❫ ⊢ T ⬈[Rt,cT,h] U2 &
-                                p = true & I = Abbr & c = cT+𝟙𝟘.
+lemma cpg_inv_bind1 (Rs) (Rk) (c) (G) (L):
+      ∀p,I,V1,T1,U2. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈[Rs,Rk,c] U2 →
+      ∨∨ ∃∃cV,cT,V2,T2. ❪G,L❫ ⊢ V1 ⬈[Rs,Rk,cV] V2 & ❪G,L.ⓑ[I]V1❫ ⊢ T1 ⬈[Rs,Rk,cT] T2 & U2 = ⓑ[p,I]V2.T2 & c = ((↕*cV)∨cT)
+       | ∃∃cT,T. ⇧[1] T ≘ T1 & ❪G,L❫ ⊢ T ⬈[Rs,Rk,cT] U2 & p = true & I = Abbr & c = cT+𝟙𝟘.
 /2 width=3 by cpg_inv_bind1_aux/ qed-.
 
-lemma cpg_inv_abbr1: ∀Rt,c,h,p,G,L,V1,T1,U2. ❪G,L❫ ⊢ ⓓ[p]V1.T1 ⬈[Rt,c,h] U2 →
-                     ∨∨ ∃∃cV,cT,V2,T2. ❪G,L❫ ⊢ V1 ⬈[Rt,cV,h] V2 & ❪G,L.ⓓV1❫ ⊢ T1 ⬈[Rt,cT,h] T2 &
-                                       U2 = ⓓ[p]V2.T2 & c = ((↕*cV)∨cT)
-                      | ∃∃cT,T. ⇧[1] T ≘ T1 & ❪G,L❫ ⊢ T ⬈[Rt,cT,h] U2 &
-                                p = true & c = cT+𝟙𝟘.
-#Rt #c #h #p #G #L #V1 #T1 #U2 #H elim (cpg_inv_bind1 … H) -H *
+lemma cpg_inv_abbr1 (Rs) (Rk) (c) (G) (L):
+      ∀p,V1,T1,U2. ❪G,L❫ ⊢ ⓓ[p]V1.T1 ⬈[Rs,Rk,c] U2 →
+      ∨∨ ∃∃cV,cT,V2,T2. ❪G,L❫ ⊢ V1 ⬈[Rs,Rk,cV] V2 & ❪G,L.ⓓV1❫ ⊢ T1 ⬈[Rs,Rk,cT] T2 & U2 = ⓓ[p]V2.T2 & c = ((↕*cV)∨cT)
+       | ∃∃cT,T. ⇧[1] T ≘ T1 & ❪G,L❫ ⊢ T ⬈[Rs,Rk,cT] U2 & p = true & c = cT+𝟙𝟘.
+#Rs #Rk #c #p #G #L #V1 #T1 #U2 #H elim (cpg_inv_bind1 … H) -H *
 /3 width=8 by ex4_4_intro, ex4_2_intro, or_introl, or_intror/
 qed-.
 
-lemma cpg_inv_abst1: ∀Rt,c,h,p,G,L,V1,T1,U2. ❪G,L❫ ⊢ ⓛ[p]V1.T1 ⬈[Rt,c,h] U2 →
-                     ∃∃cV,cT,V2,T2. ❪G,L❫ ⊢ V1 ⬈[Rt,cV,h] V2 & ❪G,L.ⓛV1❫ ⊢ T1 ⬈[Rt,cT,h] T2 &
-                                    U2 = ⓛ[p]V2.T2 & c = ((↕*cV)∨cT).
-#Rt #c #h #p #G #L #V1 #T1 #U2 #H elim (cpg_inv_bind1 … H) -H *
+lemma cpg_inv_abst1 (Rs) (Rk) (c) (G) (L):
+      ∀p,V1,T1,U2. ❪G,L❫ ⊢ ⓛ[p]V1.T1 ⬈[Rs,Rk,c] U2 →
+      ∃∃cV,cT,V2,T2. ❪G,L❫ ⊢ V1 ⬈[Rs,Rk,cV] V2 & ❪G,L.ⓛV1❫ ⊢ T1 ⬈[Rs,Rk,cT] T2 & U2 = ⓛ[p]V2.T2 & c = ((↕*cV)∨cT).
+#Rs #Rk #c #p #G #L #V1 #T1 #U2 #H elim (cpg_inv_bind1 … H) -H *
 [ /3 width=8 by ex4_4_intro/
 | #c #T #_ #_ #_ #H destruct
 ]
 qed-.
 
-fact cpg_inv_appl1_aux: ∀Rt,c,h,G,L,U,U2. ❪G,L❫ ⊢ U ⬈[Rt,c,h] U2 →
-                        ∀V1,U1. U = ⓐV1.U1 →
-                        ∨∨ ∃∃cV,cT,V2,T2. ❪G,L❫ ⊢ V1 ⬈[Rt,cV,h] V2 & ❪G,L❫ ⊢ U1 ⬈[Rt,cT,h] T2 &
-                                          U2 = ⓐV2.T2 & c = ((↕*cV)∨cT)
-                         | ∃∃cV,cW,cT,p,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ⬈[Rt,cV,h] V2 & ❪G,L❫ ⊢ W1 ⬈[Rt,cW,h] W2 & ❪G,L.ⓛW1❫ ⊢ T1 ⬈[Rt,cT,h] T2 &
-                                                        U1 = ⓛ[p]W1.T1 & U2 = ⓓ[p]ⓝW2.V2.T2 & c = ((↕*cV)∨(↕*cW)∨cT)+𝟙𝟘
-                         | ∃∃cV,cW,cT,p,V,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ⬈[Rt,cV,h] V & ⇧[1] V ≘ V2 & ❪G,L❫ ⊢ W1 ⬈[Rt,cW,h] W2 & ❪G,L.ⓓW1❫ ⊢ T1 ⬈[Rt,cT,h] T2 &
-                                                          U1 = ⓓ[p]W1.T1 & U2 = ⓓ[p]W2.ⓐV2.T2 & c = ((↕*cV)∨(↕*cW)∨cT)+𝟙𝟘.
-#Rt #c #h #G #L #U #U2 * -c -G -L -U -U2
+fact cpg_inv_appl1_aux (Rs) (Rk) (c) (G) (L):
+     ∀U,U2. ❪G,L❫ ⊢ U ⬈[Rs,Rk,c] U2 →
+     ∀V1,U1. U = ⓐV1.U1 →
+     ∨∨ ∃∃cV,cT,V2,T2. ❪G,L❫ ⊢ V1 ⬈[Rs,Rk,cV] V2 & ❪G,L❫ ⊢ U1 ⬈[Rs,Rk,cT] T2 & U2 = ⓐV2.T2 & c = ((↕*cV)∨cT)
+      | ∃∃cV,cW,cT,p,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ⬈[Rs,Rk,cV] V2 & ❪G,L❫ ⊢ W1 ⬈[Rs,Rk,cW] W2 & ❪G,L.ⓛW1❫ ⊢ T1 ⬈[Rs,Rk,cT] T2 & U1 = ⓛ[p]W1.T1 & U2 = ⓓ[p]ⓝW2.V2.T2 & c = ((↕*cV)∨(↕*cW)∨cT)+𝟙𝟘
+      | ∃∃cV,cW,cT,p,V,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ⬈[Rs,Rk,cV] V & ⇧[1] V ≘ V2 & ❪G,L❫ ⊢ W1 ⬈[Rs,Rk,cW] W2 & ❪G,L.ⓓW1❫ ⊢ T1 ⬈[Rs,Rk,cT] T2 & U1 = ⓓ[p]W1.T1 & U2 = ⓓ[p]W2.ⓐV2.T2 & c = ((↕*cV)∨(↕*cW)∨cT)+𝟙𝟘.
+#Rs #Rk #c #G #L #U #U2 * -c -G -L -U -U2
 [ #I #G #L #W #U1 #H destruct
-| #G #L #s #W #U1 #H destruct
+| #G #L #s1 #s2 #_ #W #U1 #H destruct
 | #c #G #L #V1 #V2 #W2 #_ #_ #W #U1 #H destruct
 | #c #G #L #V1 #V2 #W2 #_ #_ #W #U1 #H destruct
 | #c #I #G #L #T #U #i #_ #_ #W #U1 #H destruct
@@ -230,30 +224,28 @@ fact cpg_inv_appl1_aux: ∀Rt,c,h,G,L,U,U2. ❪G,L❫ ⊢ U ⬈[Rt,c,h] U2 →
 ]
 qed-.
 
-lemma cpg_inv_appl1: ∀Rt,c,h,G,L,V1,U1,U2. ❪G,L❫ ⊢ ⓐV1.U1 ⬈[Rt,c,h] U2 →
-                     ∨∨ ∃∃cV,cT,V2,T2. ❪G,L❫ ⊢ V1 ⬈[Rt,cV,h] V2 & ❪G,L❫ ⊢ U1 ⬈[Rt,cT,h] T2 &
-                                       U2 = ⓐV2.T2 & c = ((↕*cV)∨cT)
-                      | ∃∃cV,cW,cT,p,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ⬈[Rt,cV,h] V2 & ❪G,L❫ ⊢ W1 ⬈[Rt,cW,h] W2 & ❪G,L.ⓛW1❫ ⊢ T1 ⬈[Rt,cT,h] T2 &
-                                                     U1 = ⓛ[p]W1.T1 & U2 = ⓓ[p]ⓝW2.V2.T2 & c = ((↕*cV)∨(↕*cW)∨cT)+𝟙𝟘
-                      | ∃∃cV,cW,cT,p,V,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ⬈[Rt,cV,h] V & ⇧[1] V ≘ V2 & ❪G,L❫ ⊢ W1 ⬈[Rt,cW,h] W2 & ❪G,L.ⓓW1❫ ⊢ T1 ⬈[Rt,cT,h] T2 &
-                                                       U1 = ⓓ[p]W1.T1 & U2 = ⓓ[p]W2.ⓐV2.T2 & c = ((↕*cV)∨(↕*cW)∨cT)+𝟙𝟘.
+lemma cpg_inv_appl1 (Rs) (Rk) (c) (G) (L):
+      ∀V1,U1,U2. ❪G,L❫ ⊢ ⓐV1.U1 ⬈[Rs,Rk,c] U2 →
+      ∨∨ ∃∃cV,cT,V2,T2. ❪G,L❫ ⊢ V1 ⬈[Rs,Rk,cV] V2 & ❪G,L❫ ⊢ U1 ⬈[Rs,Rk,cT] T2 & U2 = ⓐV2.T2 & c = ((↕*cV)∨cT)
+       | ∃∃cV,cW,cT,p,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ⬈[Rs,Rk,cV] V2 & ❪G,L❫ ⊢ W1 ⬈[Rs,Rk,cW] W2 & ❪G,L.ⓛW1❫ ⊢ T1 ⬈[Rs,Rk,cT] T2 & U1 = ⓛ[p]W1.T1 & U2 = ⓓ[p]ⓝW2.V2.T2 & c = ((↕*cV)∨(↕*cW)∨cT)+𝟙𝟘
+       | ∃∃cV,cW,cT,p,V,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ⬈[Rs,Rk,cV] V & ⇧[1] V ≘ V2 & ❪G,L❫ ⊢ W1 ⬈[Rs,Rk,cW] W2 & ❪G,L.ⓓW1❫ ⊢ T1 ⬈[Rs,Rk,cT] T2 & U1 = ⓓ[p]W1.T1 & U2 = ⓓ[p]W2.ⓐV2.T2 & c = ((↕*cV)∨(↕*cW)∨cT)+𝟙𝟘.
 /2 width=3 by cpg_inv_appl1_aux/ qed-.
 
-fact cpg_inv_cast1_aux: ∀Rt,c,h,G,L,U,U2. ❪G,L❫ ⊢ U ⬈[Rt,c,h] U2 →
-                        ∀V1,U1. U = ⓝV1.U1 →
-                        ∨∨ ∃∃cV,cT,V2,T2. ❪G,L❫ ⊢ V1 ⬈[Rt,cV,h] V2 & ❪G,L❫ ⊢ U1 ⬈[Rt,cT,h] T2 &
-                                          Rt cV cT & U2 = ⓝV2.T2 & c = (cV∨cT)
-                         | ∃∃cT. ❪G,L❫ ⊢ U1 ⬈[Rt,cT,h] U2 & c = cT+𝟙𝟘
-                         | ∃∃cV. ❪G,L❫ ⊢ V1 ⬈[Rt,cV,h] U2 & c = cV+𝟘𝟙.
-#Rt #c #h #G #L #U #U2 * -c -G -L -U -U2
+fact cpg_inv_cast1_aux (Rs) (Rk) (c) (G) (L):
+     ∀U,U2. ❪G,L❫ ⊢ U ⬈[Rs,Rk,c] U2 →
+     ∀V1,U1. U = ⓝV1.U1 →
+     ∨∨ ∃∃cV,cT,V2,T2. ❪G,L❫ ⊢ V1 ⬈[Rs,Rk,cV] V2 & ❪G,L❫ ⊢ U1 ⬈[Rs,Rk,cT] T2 & Rk cV cT & U2 = ⓝV2.T2 & c = (cV∨cT)
+      | ∃∃cT. ❪G,L❫ ⊢ U1 ⬈[Rs,Rk,cT] U2 & c = cT+𝟙𝟘
+      | ∃∃cV. ❪G,L❫ ⊢ V1 ⬈[Rs,Rk,cV] U2 & c = cV+𝟘𝟙.
+#Rs #Rk #c #G #L #U #U2 * -c -G -L -U -U2
 [ #I #G #L #W #U1 #H destruct
-| #G #L #s #W #U1 #H destruct
+| #G #L #s1 #s2 #_ #W #U1 #H destruct
 | #c #G #L #V1 #V2 #W2 #_ #_ #W #U1 #H destruct
 | #c #G #L #V1 #V2 #W2 #_ #_ #W #U1 #H destruct
 | #c #I #G #L #T #U #i #_ #_ #W #U1 #H destruct
 | #cV #cT #p #I #G #L #V1 #V2 #T1 #T2 #_ #_ #W #U1 #H destruct
 | #cV #cT #G #L #V1 #V2 #T1 #T2 #_ #_ #W #U1 #H destruct
-| #cV #cT #G #L #V1 #V2 #T1 #T2 #HRt #HV12 #HT12 #W #U1 #H destruct /3 width=9 by or3_intro0, ex5_4_intro/
+| #cV #cT #G #L #V1 #V2 #T1 #T2 #HRk #HV12 #HT12 #W #U1 #H destruct /3 width=9 by or3_intro0, ex5_4_intro/
 | #c #G #L #V #T1 #T #T2 #_ #_ #W #U1 #H destruct
 | #c #G #L #V #T1 #T2 #HT12 #W #U1 #H destruct /3 width=3 by or3_intro1, ex2_intro/
 | #c #G #L #V1 #V2 #T #HV12 #W #U1 #H destruct /3 width=3 by or3_intro2, ex2_intro/
@@ -262,38 +254,38 @@ fact cpg_inv_cast1_aux: ∀Rt,c,h,G,L,U,U2. ❪G,L❫ ⊢ U ⬈[Rt,c,h] U2 →
 ]
 qed-.
 
-lemma cpg_inv_cast1: ∀Rt,c,h,G,L,V1,U1,U2. ❪G,L❫ ⊢ ⓝV1.U1 ⬈[Rt,c,h] U2 →
-                     ∨∨ ∃∃cV,cT,V2,T2. ❪G,L❫ ⊢ V1 ⬈[Rt,cV,h] V2 & ❪G,L❫ ⊢ U1 ⬈[Rt,cT,h] T2 &
-                                       Rt cV cT & U2 = ⓝV2.T2 & c = (cV∨cT)
-                      | ∃∃cT. ❪G,L❫ ⊢ U1 ⬈[Rt,cT,h] U2 & c = cT+𝟙𝟘
-                      | ∃∃cV. ❪G,L❫ ⊢ V1 ⬈[Rt,cV,h] U2 & c = cV+𝟘𝟙.
+lemma cpg_inv_cast1 (Rs) (Rk) (c) (G) (L):
+      ∀V1,U1,U2. ❪G,L❫ ⊢ ⓝV1.U1 ⬈[Rs,Rk,c] U2 →
+      ∨∨ ∃∃cV,cT,V2,T2. ❪G,L❫ ⊢ V1 ⬈[Rs,Rk,cV] V2 & ❪G,L❫ ⊢ U1 ⬈[Rs,Rk,cT] T2 & Rk cV cT & U2 = ⓝV2.T2 & c = (cV∨cT)
+       | ∃∃cT. ❪G,L❫ ⊢ U1 ⬈[Rs,Rk,cT] U2 & c = cT+𝟙𝟘
+       | ∃∃cV. ❪G,L❫ ⊢ V1 ⬈[Rs,Rk,cV] U2 & c = cV+𝟘𝟙.
 /2 width=3 by cpg_inv_cast1_aux/ qed-.
 
 (* Advanced inversion lemmas ************************************************)
 
-lemma cpg_inv_zero1_pair: ∀Rt,c,h,I,G,K,V1,T2. ❪G,K.ⓑ[I]V1❫ ⊢ #0 ⬈[Rt,c,h] T2 →
-                          ∨∨ T2 = #0 ∧ c = 𝟘𝟘
-                           | ∃∃cV,V2. ❪G,K❫ ⊢ V1 ⬈[Rt,cV,h] V2 & ⇧[1] V2 ≘ T2 &
-                                      I = Abbr & c = cV
-                           | ∃∃cV,V2. ❪G,K❫ ⊢ V1 ⬈[Rt,cV,h] V2 & ⇧[1] V2 ≘ T2 &
-                                      I = Abst & c = cV+𝟘𝟙.
-#Rt #c #h #I #G #K #V1 #T2 #H elim (cpg_inv_zero1 … H) -H /2 width=1 by or3_intro0/
+lemma cpg_inv_zero1_pair (Rs) (Rk) (c) (G) (K):
+      ∀I,V1,T2. ❪G,K.ⓑ[I]V1❫ ⊢ #0 ⬈[Rs,Rk,c] T2 →
+      ∨∨ ∧∧ T2 = #0 & c = 𝟘𝟘
+       | ∃∃cV,V2. ❪G,K❫ ⊢ V1 ⬈[Rs,Rk,cV] V2 & ⇧[1] V2 ≘ T2 & I = Abbr & c = cV
+       | ∃∃cV,V2. ❪G,K❫ ⊢ V1 ⬈[Rs,Rk,cV] V2 & ⇧[1] V2 ≘ T2 & I = Abst & c = cV+𝟘𝟙.
+#Rs #Rk #c #G #K #I #V1 #T2 #H elim (cpg_inv_zero1 … H) -H /2 width=1 by or3_intro0/
 * #z #Y #X1 #X2 #HX12 #HXT2 #H1 #H2 destruct /3 width=5 by or3_intro1, or3_intro2, ex4_2_intro/
 qed-.
 
-lemma cpg_inv_lref1_bind: ∀Rt,c,h,I,G,K,T2,i. ❪G,K.ⓘ[I]❫ ⊢ #↑i ⬈[Rt,c,h] T2 →
-                          ∨∨ T2 = #(↑i) ∧ c = 𝟘𝟘
-                           | ∃∃T. ❪G,K❫ ⊢ #i ⬈[Rt,c,h] T & ⇧[1] T ≘ T2.
-#Rt #c #h #I #G #L #T2 #i #H elim (cpg_inv_lref1 … H) -H /2 width=1 by or_introl/
+lemma cpg_inv_lref1_bind (Rs) (Rk) (c) (G) (K):
+      ∀I,T2,i. ❪G,K.ⓘ[I]❫ ⊢ #↑i ⬈[Rs,Rk,c] T2 →
+      ∨∨ ∧∧ T2 = #(↑i) & c = 𝟘𝟘
+       | ∃∃T. ❪G,K❫ ⊢ #i ⬈[Rs,Rk,c] T & ⇧[1] T ≘ T2.
+#Rs #Rk #c #G #K #I #T2 #i #H elim (cpg_inv_lref1 … H) -H /2 width=1 by or_introl/
 * #Z #Y #T #HT #HT2 #H destruct /3 width=3 by ex2_intro, or_intror/
 qed-.
 
 (* Basic forward lemmas *****************************************************)
 
-lemma cpg_fwd_bind1_minus: ∀Rt,c,h,I,G,L,V1,T1,T. ❪G,L❫ ⊢ -ⓑ[I]V1.T1 ⬈[Rt,c,h] T → ∀p.
-                           ∃∃V2,T2. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈[Rt,c,h] ⓑ[p,I]V2.T2 &
-                                    T = -ⓑ[I]V2.T2.
-#Rt #c #h #I #G #L #V1 #T1 #T #H #p elim (cpg_inv_bind1 … H) -H *
+lemma cpg_fwd_bind1_minus (Rs) (Rk) (c) (G) (L):
+      ∀I,V1,T1,T. ❪G,L❫ ⊢ -ⓑ[I]V1.T1 ⬈[Rs,Rk,c] T → ∀p.
+      ∃∃V2,T2. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈[Rs,Rk,c] ⓑ[p,I]V2.T2 & T = -ⓑ[I]V2.T2.
+#Rs #Rk #c #G #L #I #V1 #T1 #T #H #p elim (cpg_inv_bind1 … H) -H *
 [ #cV #cT #V2 #T2 #HV12 #HT12 #H1 #H2 destruct /3 width=4 by cpg_bind, ex2_2_intro/
 | #c #T2 #_ #_ #H destruct
 ]
index 9908844c8f2a692208f995b62a5f0f18cb8d2ab6..4e66d137de367a4df8a8e5052258e1731cc823ae 100644 (file)
@@ -22,9 +22,10 @@ include "basic_2/rt_transition/cpg.ma".
 
 (* Advanced properties ******************************************************)
 
-lemma cpg_delta_drops: ∀Rt,c,h,G,K,V,V2,i,L,T2. ⇩[i] L ≘ K.ⓓV → ❪G,K❫ ⊢ V ⬈[Rt,c,h] V2 →
-                       ⇧[↑i] V2 ≘ T2 →  ❪G,L❫ ⊢ #i ⬈[Rt,c,h] T2.
-#Rt #c #h #G #K #V #V2 #i elim i -i
+lemma cpg_delta_drops (Rs) (Rk) (c) (G) (K):
+      ∀V,V2,i,L,T2. ⇩[i] L ≘ K.ⓓV → ❪G,K❫ ⊢ V ⬈[Rs,Rk,c] V2 →
+      ⇧[↑i] V2 ≘ T2 → ❪G,L❫ ⊢ #i ⬈[Rs,Rk,c] T2.
+#Rs #Rk #c #G #K #V #V2 #i elim i -i
 [ #L #T2 #HLK lapply (drops_fwd_isid … HLK ?) // #H destruct /3 width=3 by cpg_delta/
 | #i #IH #L0 #T0 #H0 #HV2 #HVT2
   elim (drops_inv_succ … H0) -H0 #I #L #HLK #H destruct
@@ -32,9 +33,10 @@ lemma cpg_delta_drops: ∀Rt,c,h,G,K,V,V2,i,L,T2. ⇩[i] L ≘ K.ⓓV → ❪G,K
 ]
 qed.
 
-lemma cpg_ell_drops: ∀Rt,c,h,G,K,V,V2,i,L,T2. ⇩[i] L ≘ K.ⓛV → ❪G,K❫ ⊢ V ⬈[Rt,c,h] V2 →
-                     ⇧[↑i] V2 ≘ T2 →  ❪G,L❫ ⊢ #i ⬈[Rt,c+𝟘𝟙,h] T2.
-#Rt #c #h #G #K #V #V2 #i elim i -i
+lemma cpg_ell_drops (Rs) (Rk) (c) (G) (K):
+      ∀V,V2,i,L,T2. ⇩[i] L ≘ K.ⓛV → ❪G,K❫ ⊢ V ⬈[Rs,Rk,c] V2 →
+      ⇧[↑i] V2 ≘ T2 → ❪G,L❫ ⊢ #i ⬈[Rs,Rk,c+𝟘𝟙] T2.
+#Rs #Rk #c #G #K #V #V2 #i elim i -i
 [ #L #T2 #HLK lapply (drops_fwd_isid … HLK ?) // #H destruct /3 width=3 by cpg_ell/
 | #i #IH #L0 #T0 #H0 #HV2 #HVT2
   elim (drops_inv_succ … H0) -H0 #I #L #HLK #H destruct
@@ -44,13 +46,12 @@ qed.
 
 (* Advanced inversion lemmas ************************************************)
 
-lemma cpg_inv_lref1_drops: ∀Rt,c,h,G,i,L,T2. ❪G,L❫ ⊢ #i ⬈[Rt,c,h] T2 →
-                           ∨∨ T2 = #i ∧ c = 𝟘𝟘
-                            | ∃∃cV,K,V,V2. ⇩[i] L ≘ K.ⓓV & ❪G,K❫ ⊢ V ⬈[Rt,cV,h] V2 &
-                                           ⇧[↑i] V2 ≘ T2 & c = cV
-                            | ∃∃cV,K,V,V2. ⇩[i] L ≘ K.ⓛV & ❪G,K❫ ⊢ V ⬈[Rt,cV,h] V2 &
-                                           ⇧[↑i] V2 ≘ T2 & c = cV + 𝟘𝟙.
-#Rt #c #h #G #i elim i -i
+lemma cpg_inv_lref1_drops (Rs) (Rk) (c) (G):
+      ∀i,L,T2. ❪G,L❫ ⊢ #i ⬈[Rs,Rk,c] T2 →
+      ∨∨ ∧∧ T2 = #i & c = 𝟘𝟘
+       | ∃∃cV,K,V,V2. ⇩[i] L ≘ K.ⓓV & ❪G,K❫ ⊢ V ⬈[Rs,Rk,cV] V2 & ⇧[↑i] V2 ≘ T2 & c = cV
+       | ∃∃cV,K,V,V2. ⇩[i] L ≘ K.ⓛV & ❪G,K❫ ⊢ V ⬈[Rs,Rk,cV] V2 & ⇧[↑i] V2 ≘ T2 & c = cV + 𝟘𝟙.
+#Rs #Rk #c #G #i elim i -i
 [ #L #T2 #H elim (cpg_inv_zero1 … H) -H * /3 width=1 by or3_intro0, conj/
   /4 width=8 by drops_refl, ex4_4_intro, or3_intro2, or3_intro1/
 | #i #IH #L #T2 #H elim (cpg_inv_lref1 … H) -H * /3 width=1 by or3_intro0, conj/
@@ -65,16 +66,15 @@ lemma cpg_inv_lref1_drops: ∀Rt,c,h,G,i,L,T2. ❪G,L❫ ⊢ #i ⬈[Rt,c,h] T2 
 ]
 qed-.
 
-lemma cpg_inv_atom1_drops: ∀Rt,c,h,I,G,L,T2. ❪G,L❫ ⊢ ⓪[I] ⬈[Rt,c,h] T2 →
-                           ∨∨ T2 = ⓪[I] ∧ c = 𝟘𝟘
-                            | ∃∃s. T2 = ⋆(⫯[h]s) & I = Sort s & c = 𝟘𝟙
-                            | ∃∃cV,i,K,V,V2. ⇩[i] L ≘ K.ⓓV & ❪G,K❫ ⊢ V ⬈[Rt,cV,h] V2 &
-                                             ⇧[↑i] V2 ≘ T2 & I = LRef i & c = cV
-                            | ∃∃cV,i,K,V,V2. ⇩[i] L ≘ K.ⓛV & ❪G,K❫ ⊢ V ⬈[Rt,cV,h] V2 &
-                                             ⇧[↑i] V2 ≘ T2 & I = LRef i & c = cV + 𝟘𝟙.
-#Rt #c #h * #n #G #L #T2 #H
+lemma cpg_inv_atom1_drops (Rs) (Rk) (c) (G) (L):
+      ∀I,T2. ❪G,L❫ ⊢ ⓪[I] ⬈[Rs,Rk,c] T2 →
+      ∨∨ ∧∧ T2 = ⓪[I] & c = 𝟘𝟘
+       | ∃∃s1,s2. Rs s1 s2 & T2 = ⋆s2 & I = Sort s1 & c = 𝟘𝟙
+       | ∃∃cV,i,K,V,V2. ⇩[i] L ≘ K.ⓓV & ❪G,K❫ ⊢ V ⬈[Rs,Rk,cV] V2 & ⇧[↑i] V2 ≘ T2 & I = LRef i & c = cV
+       | ∃∃cV,i,K,V,V2. ⇩[i] L ≘ K.ⓛV & ❪G,K❫ ⊢ V ⬈[Rs,Rk,cV] V2 & ⇧[↑i] V2 ≘ T2 & I = LRef i & c = cV + 𝟘𝟙.
+#Rs #Rk #c #G #L * #x #T2 #H
 [ elim (cpg_inv_sort1 … H) -H *
-  /3 width=3 by or4_intro0, or4_intro1, ex3_intro, conj/
+  /3 width=5 by or4_intro0, or4_intro1, ex4_2_intro, conj/
 | elim (cpg_inv_lref1_drops … H) -H *
   /3 width=10 by or4_intro0, or4_intro2, or4_intro3, ex5_5_intro, conj/
 | elim (cpg_inv_gref1 … H) -H
@@ -85,14 +85,16 @@ qed-.
 (* Properties with generic slicing for local environments *******************)
 
 (* Note: it should use drops_split_trans_pair2 *)
-lemma cpg_lifts_sn: ∀Rt. reflexive … Rt →
-                    ∀c,h,G. d_liftable2_sn … lifts (cpg Rt h c G).
-#Rt #HRt #c #h #G #K #T generalize in match c; -c
+lemma cpg_lifts_sn (Rs) (Rk) (c) (G): reflexive … Rk →
+      d_liftable2_sn … lifts (cpg Rs Rk c G).
+#Rs #Rk #c #G #HRk #K #T generalize in match c; -c
 @(fqup_wf_ind_eq (Ⓣ) … G K T) -G -K -T #G0 #K0 #T0 #IH #G #K * *
-[ #s #HG #HK #HT #c #X2 #H2 #b #f #L #HLK #X1 #H1 destruct -IH
+[ #s1 #HG #HK #HT #c #X2 #H2 #b #f #L #HLK #X1 #H1 destruct -IH
   lapply (lifts_inv_sort1 … H1) -H1 #H destruct
-  elim (cpg_inv_sort1 … H2) -H2 * #H1 #H2 destruct
-  /2 width=3 by cpg_atom, cpg_ess, lifts_sort, ex2_intro/
+  elim (cpg_inv_sort1 … H2) -H2 *
+  [ #H1 #H2 destruct /2 width=3 by cpg_atom, lifts_sort, ex2_intro/
+  | #s2 #HRs #H1 #H2 destruct /3 width=3 by cpg_ess, lifts_sort, ex2_intro/
+  ]
 | #i1 #HG #HK #HT #c #T2 #H2 #b #f #L #HLK #X1 #H1 destruct
   elim (cpg_inv_lref1_drops … H2) -H2 *
   [ #H1 #H2 destruct /3 width=3 by cpg_refl, ex2_intro/ ]
@@ -163,20 +165,22 @@ lemma cpg_lifts_sn: ∀Rt. reflexive … Rt →
 ]
 qed-.
 
-lemma cpg_lifts_bi: ∀Rt. reflexive … Rt →
-                    ∀c,h,G. d_liftable2_bi … lifts (cpg Rt h c G).
+lemma cpg_lifts_bi (Rs) (Rk) (c) (G): reflexive … Rk →
+      d_liftable2_bi … lifts (cpg Rs Rk c G).
 /3 width=12 by cpg_lifts_sn, d_liftable2_sn_bi, lifts_mono/ qed-.
 
 (* Inversion lemmas with generic slicing for local environments *************)
 
-lemma cpg_inv_lifts_sn: ∀Rt. reflexive … Rt →
-                        ∀c,h,G. d_deliftable2_sn … lifts (cpg Rt h c G).
-#Rt #HRt #c #h #G #L #U generalize in match c; -c
+lemma cpg_inv_lifts_sn (Rs) (Rk) (c) (G): reflexive … Rk →
+      d_deliftable2_sn … lifts (cpg Rs Rk c G).
+#Rs #Rk #c #G #HRk #L #U generalize in match c; -c
 @(fqup_wf_ind_eq (Ⓣ) … G L U) -G -L -U #G0 #L0 #U0 #IH #G #L * *
-[ #s #HG #HL #HU #c #X2 #H2 #b #f #K #HLK #X1 #H1 destruct -IH
+[ #s1 #HG #HL #HU #c #X2 #H2 #b #f #K #HLK #X1 #H1 destruct -IH
   lapply (lifts_inv_sort2 … H1) -H1 #H destruct
-  elim (cpg_inv_sort1 … H2) -H2 * #H1 #H2 destruct
-  /2 width=3 by cpg_atom, cpg_ess, lifts_sort, ex2_intro/
+  elim (cpg_inv_sort1 … H2) -H2 *
+  [ #H1 #H2 destruct /2 width=3 by cpg_atom, lifts_sort, ex2_intro/
+  | #s2 #HRs #H1 #H2 destruct /3 width=3 by cpg_ess, lifts_sort, ex2_intro/
+  ] 
 | #i2 #HG #HL #HU #c #U2 #H2 #b #f #K #HLK #X1 #H1 destruct
   elim (cpg_inv_lref1_drops … H2) -H2 *
   [ #H1 #H2 destruct /3 width=3 by cpg_refl, ex2_intro/ ]
@@ -245,6 +249,6 @@ lemma cpg_inv_lifts_sn: ∀Rt. reflexive … Rt →
 ]
 qed-.
 
-lemma cpg_inv_lifts_bi: ∀Rt. reflexive … Rt →
-                        ∀c,h,G. d_deliftable2_bi … lifts (cpg Rt h c G).
+lemma cpg_inv_lifts_bi (Rs) (Rk) (c) (G): reflexive … Rk →
+      d_deliftable2_bi … lifts (cpg Rs Rk c G).
 /3 width=12 by cpg_inv_lifts_sn, d_deliftable2_sn_bi, lifts_inj/ qed-.
index ed99d317abeaa88de4c30c3e0c28a4fc166b1d27..4ca10e1a3ac437e9e582bbe6cfe3556aa1d055e0 100644 (file)
@@ -19,8 +19,9 @@ include "basic_2/rt_transition/cpg.ma".
 
 (* Properties with restricted refinement for local environments *************)
 
-lemma lsubr_cpg_trans: ∀Rt,c,h,G. lsub_trans … (cpg Rt h c G) lsubr.
-#Rt #c #h #G #L1 #T1 #T2 #H elim H -c -G -L1 -T1 -T2
+lemma lsubr_cpg_trans (Rs) (Rk) (c) (G):
+      lsub_trans … (cpg Rs Rk c G) lsubr.
+#Rs #Rk #c #G #L1 #T1 #T2 #H elim H -c -G -L1 -T1 -T2
 [ //
 | /2 width=2 by cpg_ess/
 | #c #G #L1 #V1 #V2 #W2 #_ #HVW2 #IH #X #H
index 4785791d03bb84445f154b2bc4533273349df5c2..47277708a8d9fa675e6ef08ad6feaf8d9d7641b2 100644 (file)
@@ -20,10 +20,10 @@ include "basic_2/rt_transition/cpg.ma".
 (* Properties with simple terms *********************************************)
 
 (* Note: the main property of simple terms *)
-lemma cpg_inv_appl1_simple: ∀Rt,c,h,G,L,V1,T1,U. ❪G,L❫ ⊢ ⓐV1.T1 ⬈[Rt,c,h] U → 𝐒❪T1❫ →
-                            ∃∃cV,cT,V2,T2. ❪G,L❫ ⊢ V1 ⬈[Rt,cV,h] V2 & ❪G,L❫ ⊢ T1 ⬈[Rt,cT,h] T2 &
-                                           U = ⓐV2.T2 & c = ((↕*cV)∨cT).
-#Rt #c #h #G #L #V1 #T1 #U #H #HT1 elim (cpg_inv_appl1 … H) -H *
+lemma cpg_inv_appl1_simple (Rs) (Rk) (c) (G) (L):
+      ∀V1,T1,U. ❪G,L❫ ⊢ ⓐV1.T1 ⬈[Rs,Rk,c] U → 𝐒❪T1❫ →
+      ∃∃cV,cT,V2,T2. ❪G,L❫ ⊢ V1 ⬈[Rs,Rk,cV] V2 & ❪G,L❫ ⊢ T1 ⬈[Rs,Rk,cT] T2 & U = ⓐV2.T2 & c = ((↕*cV)∨cT).
+#Rs #Rk #c #G #L #V1 #T1 #U #H #HT1 elim (cpg_inv_appl1 … H) -H *
 [ /2 width=8 by ex4_4_intro/
 | #cV #cW #cT #p #V2 #W1 #W2 #U1 #U2 #_ #_ #_ #H destruct
   elim (simple_inv_bind … HT1)
index 30b04dc62ec806a05fc82213a5c9b48279b4ecda..ac451b66c580f81de831319b96bbc455013c211c 100644 (file)
@@ -19,6 +19,7 @@ include "ground/xoa/ex_6_7.ma".
 include "ground/steps/rtc_max_shift.ma".
 include "ground/steps/rtc_isrt_plus.ma".
 include "ground/steps/rtc_isrt_max_shift.ma".
+include "static_2/syntax/sh.ma".
 include "basic_2/notation/relations/pred_6.ma".
 include "basic_2/rt_transition/cpg.ma".
 
@@ -26,90 +27,100 @@ include "basic_2/rt_transition/cpg.ma".
 
 (* 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 ⬈[sh_is_next h,rtc_eq_t,c] T2.
 
 interpretation
-   "t-bound context-sensitive parallel rt-transition (term)"
-   'PRed h n G L T1 T2 = (cpm h G L n T1 T2).
+  "t-bound context-sensitive parallel rt-transition (term)"
+  '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 ➡[h,1] ⋆(⫯[h]s).
-/2 width=3 by cpg_ess, ex2_intro/ qed.
+lemma cpm_ess (h) (G) (L):
+      ∀s. ❪G,L❫ ⊢ ⋆s ➡[h,1] ⋆(⫯[h]s).
+/3 width=3 by cpg_ess, ex2_intro/ qed.
 
-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.
+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: ∀h,n,G,K,V1,V2,W2. ❪G,K❫ ⊢ V1 ➡[h,n] V2 →
-               ⇧[1] V2 ≘ W2 → ❪G,K.ⓛV1❫ ⊢ #0 ➡[h,↑n] 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: ∀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 *
+lemma cpm_lref (h) (n) (G) (K):
+      ∀I,T,U,i. ❪G,K❫ ⊢ #i ➡[h,n] T →
+      ⇧[1] T ≘ U → ❪G,K.ⓘ[I]❫ ⊢ #↑i ➡[h,n] U.
+#h #n #G #K #I #T #U #i *
 /3 width=5 by cpg_lref, ex2_intro/
 qed.
 
 (* Basic_2A1: includes: cpr_bind *)
-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 *
+lemma cpm_bind (h) (n) (G) (L):
+      ∀p,I,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 #G #L #p #I #V1 #V2 #T1 #T2 * #cV #HcV #HV12 *
 /5 width=5 by cpg_bind, isrt_max_O1, isr_shift, ex2_intro/
 qed.
 
-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.
+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: ∀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.
+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 (h) (n) (G) (L):
-               ∀T1,T. ⇧[1] T ≘ T1 → ∀T2. ❪G,L❫ ⊢ T ➡[h,n] T2 →
-               ∀V. ❪G,L❫ ⊢ +ⓓV.T1 ➡[h,n] T2.
+      ∀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: ∀h,n,G,L,V,T1,T2. ❪G,L❫ ⊢ T1 ➡[h,n] T2 → ❪G,L❫ ⊢ ⓝV.T1 ➡[h,n] 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: ∀h,n,G,L,V1,V2,T. ❪G,L❫ ⊢ V1 ➡[h,n] V2 → ❪G,L❫ ⊢ ⓝV1.T ➡[h,↑n] V2.
+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: ∀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 *
+lemma cpm_beta (h) (n) (G) (L):
+      ∀p,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 #G #L #p #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: ∀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 *
+lemma cpm_theta (h) (n) (G) (L):
+      ∀p,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 #G #L #p #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.
 
@@ -118,31 +129,29 @@ qed.
 (* Note: this is needed by cpms_ind_sn and cpms_ind_dx *)
 (* Basic_1: includes by definition: pr0_refl *)
 (* Basic_2A1: includes: cpr_atom *)
-lemma cpr_refl: ∀h,G,L. reflexive … (cpm h G L 0).
+lemma cpr_refl (h) (G) (L): reflexive … (cpm h G L 0).
 /3 width=3 by cpg_refl, ex2_intro/ qed.
 
 (* Advanced properties ******************************************************)
 
-lemma cpm_sort (h) (G) (L):
-               ∀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/
+lemma cpm_sort (h) (n) (G) (L): n ≤ 1 →
+      ∀s. ❪G,L❫ ⊢ ⋆s ➡[h,n] ⋆((next h)^n s).
+#h * //
+#n #G #L #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: ∀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 ➡[h,n] V2 & ⇧[1] V2 ≘ T2 &
-                                   L = K.ⓓV1 & J = LRef 0
-                      | ∃∃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 ➡[h,n] T & ⇧[1] T ≘ T2 &
-                                   L = K.ⓘ[I] & J = LRef (↑i).
-#h #n #J #G #L #T2 * #c #Hc #H elim (cpg_inv_atom1 … H) -H *
+lemma cpm_inv_atom1 (h) (n) (G) (L):
+      ∀J,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 ➡[h,n] V2 & ⇧[1] V2 ≘ T2 & L = K.ⓓV1 & J = LRef 0
+       | ∃∃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 ➡[h,n] T & ⇧[1] T ≘ T2 & L = K.ⓘ[I] & J = LRef (↑i).
+#h #n #G #L #J #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/
+| #s1 #s2 #H1 #H2 #H3 #H4 destruct /4 width=3 by isrt_inv_01, or5_intro1, ex3_intro/
 | #cV #K #V1 #V2 #HV12 #HVT2 #H1 #H2 #H3 destruct
   /4 width=6 by or5_intro2, ex4_3_intro, ex2_intro/
 | #cV #K #V1 #V2 #HV12 #HVT2 #H1 #H2 #H3 destruct
@@ -153,20 +162,24 @@ lemma cpm_inv_atom1: ∀h,n,J,G,L,T2. ❪G,L❫ ⊢ ⓪[J] ➡[h,n] T2 →
 ]
 qed-.
 
-lemma cpm_inv_sort1: ∀h,n,G,L,T2,s. ❪G,L❫ ⊢ ⋆s ➡[h,n] T2 →
-                     ∧∧ T2 = ⋆(((next h)^n) s) & n ≤ 1.
-#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
+lemma cpm_inv_sort1 (h) (n) (G) (L):
+      ∀T2,s1. ❪G,L❫ ⊢ ⋆s1 ➡[h,n] T2 →
+      ∧∧ T2 = ⋆(((next h)^n) s1) & n ≤ 1.
+#h #n #G #L #T2 #s1 * #c #Hc #H
+elim (cpg_inv_sort1 … H) -H *
+[ #H1 #H2 destruct
+  lapply (isrt_inv_00 … Hc)
+| #s2 #H1 #H2 #H3 destruct
+  lapply (isrt_inv_01 … Hc)
+] -Hc
 #H destruct /2 width=1 by conj/
 qed-.
 
-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 ➡[h,n] V2 & ⇧[1] V2 ≘ T2 &
-                                   L = K.ⓓV1
-                      | ∃∃m,K,V1,V2. ❪G,K❫ ⊢ V1 ➡[h,m] V2 & ⇧[1] V2 ≘ T2 &
-                                     L = K.ⓛV1 & n = ↑m.
+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 ➡[h,n] V2 & ⇧[1] V2 ≘ T2 & L = K.ⓓV1
+       | ∃∃m,K,V1,V2. ❪G,K❫ ⊢ V1 ➡[h,m] V2 & ⇧[1] V2 ≘ T2 & L = K.ⓛV1 & n = ↑m.
 #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
@@ -187,9 +200,10 @@ elim (cpm_inv_zero1 … H) -H *
 ]
 qed.
 
-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 ➡[h,n] T & ⇧[1] T ≘ T2 & L = K.ⓘ[I].
+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 ➡[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
@@ -212,18 +226,18 @@ lemma cpm_inv_lref1_ctop (h) (n) (G):
 ]
 qed.
 
-lemma cpm_inv_gref1: ∀h,n,G,L,T2,l. ❪G,L❫ ⊢ §l ➡[h,n] T2 → T2 = §l ∧ n = 0.
+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: ∀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 ➡[h,n] U2 &
-                             p = true & I = Abbr.
-#h #n #p #I #G #L #V1 #T1 #U2 * #c #Hc #H elim (cpg_inv_bind1 … H) -H *
+lemma cpm_inv_bind1 (h) (n) (G) (L):
+      ∀p,I,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 ➡[h,n] U2 & p = true & I = Abbr.
+#h #n #G #L #p #I #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
@@ -235,11 +249,11 @@ qed-.
 
 (* Basic_1: includes: pr0_gen_abbr pr2_gen_abbr *)
 (* Basic_2A1: includes: cpr_inv_abbr1 *)
-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 ➡[h,n] U2 & p = true.
-#h #n #p #G #L #V1 #T1 #U2 #H
+lemma cpm_inv_abbr1 (h) (n) (G) (L):
+      ∀p,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 ➡[h,n] U2 & p = true.
+#h #n #G #L #p #V1 #T1 #U2 #H
 elim (cpm_inv_bind1 … H) -H
 [ /3 width=1 by or_introl/
 | * /3 width=3 by ex3_intro, or_intror/
@@ -248,34 +262,31 @@ qed-.
 
 (* Basic_1: includes: pr0_gen_abst pr2_gen_abst *)
 (* Basic_2A1: includes: cpr_inv_abst1 *)
-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.
-#h #n #p #G #L #V1 #T1 #U2 #H
+lemma cpm_inv_abst1 (h) (n) (G) (L):
+      ∀p,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.
+#h #n #G #L #p #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: ∀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
+lemma cpm_inv_abst_bi (h) (n) (G) (L):
+      ∀p1,p2,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 #G #L #p1 #p2 #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: ∀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,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,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.
+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,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,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.
 #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
@@ -298,11 +309,11 @@ lemma cpm_inv_appl1: ∀h,n,G,L,V1,U1,U2. ❪G,L❫ ⊢ ⓐ V1.U1 ➡[h,n] U2 
 ]
 qed-.
 
-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 ➡[h,n] U2
-                      | ∃∃m. ❪G,L❫ ⊢ V1 ➡[h,m] U2 & n = ↑m.
+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 ➡[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
@@ -320,49 +331,49 @@ qed-.
 (* Basic forward lemmas *****************************************************)
 
 (* Basic_2A1: includes: cpr_fwd_bind1_minus *)
-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.
-#h #n #I #G #L #V1 #T1 #T * #c #Hc #H #p elim (cpg_fwd_bind1_minus … H p) -H
+lemma cpm_fwd_bind1_minus (h) (n) (G) (L):
+      ∀I,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.
+#h #n #G #L #I #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-.
 
 (* Basic eliminators ********************************************************)
 
-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 ➡[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 ➡[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 ➡[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,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,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 ➡[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 ➡[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 ➡[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 ➡[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,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,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 ➡[h,n] T2 → Q n G L T1 T2.
+lemma cpm_ind (h) (Q:relation5 …):
+      (∀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 ➡[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 ➡[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 ➡[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,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,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 ➡[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 ➡[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 ➡[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 ➡[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,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,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 ➡[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
 [ #I #G #L #n #H <(isrt_inv_00 … H) -H //
-| #G #L #s #n #H <(isrt_inv_01 … H) -H //
+| #G #L #s1 #s2 #HRs #n #H <(isrt_inv_01 … H) -H destruct //
 | /3 width=4 by ex2_intro/
 | #c #G #L #V1 #V2 #W2 #HV12 #HVW2 #IH #x #H
   elim (isrt_inv_plus_SO_dx … H) -H // #n #Hc #H destruct
index 6586e600ce8732e0b376ef8dc523becc0589c88a..5251ac507408ec19aa9560c5dbe0ab3d0e5eb1cd 100644 (file)
@@ -17,10 +17,11 @@ include "basic_2/rt_transition/cpm.ma".
 
 (* T-BOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
 
-(* Forward lemmas with unbound context-sensitive rt-transition for terms ****)
+(* Forward lemmas with extended context-sensitive rt-transition for terms ***)
 
 (* Basic_2A1: includes: cpr_cpx *)
-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/
+lemma cpm_fwd_cpx (h) (n) (G) (L):
+      ∀T1,T2. ❪G,L❫ ⊢ T1 ➡[h,n] T2 → ❪G,L❫ ⊢ T1 ⬈ T2.
+#h #n #G #L #T1 #T2 * #c #_ #HT12
+/2 width=4 by cpg_cpx/
 qed-.
index 91544044c3e92b201ccf1619c05b53acf5faf0f1..38c78dea6644e6979362d7ed92d28b6880125796 100644 (file)
@@ -21,13 +21,13 @@ include "basic_2/rt_transition/cpm.ma".
 
 (* Basic_1: includes: pr0_lift pr2_lift *)
 (* Basic_2A1: includes: cpr_lift *)
-lemma cpm_lifts_sn: ∀h,n,G. d_liftable2_sn … lifts (λL. cpm h G L n).
+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: ∀h,n,G. d_liftable2_bi … lifts (λL. cpm h G L n).
+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-.
 
@@ -35,13 +35,13 @@ qed-.
 
 (* Basic_1: includes: pr0_gen_lift pr2_gen_lift *)
 (* Basic_2A1: includes: cpr_inv_lift1 *)
-lemma cpm_inv_lifts_sn: ∀h,n,G. d_deliftable2_sn … lifts (λL. cpm h G L n).
+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: ∀h,n,G. d_deliftable2_bi … lifts (λL. cpm h G L n).
+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-.
 
@@ -49,33 +49,34 @@ qed-.
 
 (* Basic_1: includes: pr2_delta1 *)
 (* Basic_2A1: includes: cpr_delta *)
-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.
+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: ∀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.
+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: ∀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 ➡[h,n] V2 &
-                                          ⇧[↑i] V2 ≘ T2 & I = LRef i
-                            | ∃∃m,K,V,V2,i. ⇩[i] L ≘ K.ⓛV & ❪G,K❫ ⊢ V ➡[h,m] V2 &
-                                            ⇧[↑i] V2 ≘ T2 & I = LRef i & n = ↑m.
-#h #n #I #G #L #T2 * #c #Hc #H elim (cpg_inv_atom1_drops … H) -H *
+lemma cpm_inv_atom1_drops (h) (n) (G) (L):
+      ∀I,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 ➡[h,n] V2 & ⇧[↑i] V2 ≘ T2 & I = LRef i
+       | ∃∃m,K,V,V2,i. ⇩[i] L ≘ K.ⓛV & ❪G,K❫ ⊢ V ➡[h,m] V2 & ⇧[↑i] V2 ≘ T2 & I = LRef i & n = ↑m.
+#h #n #G #L #I #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
+| #s1 #s2 #H1 #H2 #H3 #H4 destruct lapply (isrt_inv_01 … Hc) -Hc
   /4 width=3 by or4_intro1, ex3_intro, sym_eq/ (**) (* sym_eq *)
 | #cV #i #K #V1 #V2 #HLK #HV12 #HVT2 #H1 #H2 destruct
   /4 width=8 by ex4_4_intro, ex2_intro, or4_intro2/
@@ -85,12 +86,11 @@ lemma cpm_inv_atom1_drops: ∀h,n,I,G,L,T2. ❪G,L❫ ⊢ ⓪[I] ➡[h,n] T2 →
 ]
 qed-.
 
-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 ➡[h,n] V2 &
-                                        ⇧[↑i] V2 ≘ T2
-                            | ∃∃m,K,V,V2. ⇩[i] L ≘ K. ⓛV & ❪G,K❫ ⊢ V ➡[h,m] V2 &
-                                          ⇧[↑i] V2 ≘ T2 & n = ↑m.
+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 ➡[h,n] V2 & ⇧[↑i] V2 ≘ T2
+       | ∃∃m,K,V,V2. ⇩[i] L ≘ K. ⓛV & ❪G,K❫ ⊢ V ➡[h,m] V2 & ⇧[↑i] V2 ≘ T2 & n = ↑m.
 #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/
@@ -104,9 +104,10 @@ qed-.
 
 (* Advanced forward lemmas **************************************************)
 
-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 ➡[h,n1] T & ❪G,L❫ ⊢ T ➡[h,n2] 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 ➡[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
@@ -165,6 +166,7 @@ fact cpm_fwd_plus_aux (h) (n): ∀G,L,T1,T2. ❪G,L❫ ⊢ T1 ➡[h,n] T2 →
 ]
 qed-.
 
-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.
+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 b3fb715e5be2bd7a9f6771648bf2ab3db0538de7..4f41f762df352ca8babcd74183e125c20c992be7 100644 (file)
@@ -16,13 +16,14 @@ include "ground/xoa/ex_4_3.ma".
 include "ground/steps/rtc_ist_shift.ma".
 include "ground/steps/rtc_ist_plus.ma".
 include "ground/steps/rtc_ist_max.ma".
+include "static_2/syntax/sh.ma".
 include "basic_2/notation/relations/pty_6.ma".
 include "basic_2/rt_transition/cpg.ma".
 
 (* T-BOUND CONTEXT-SENSITIVE PARALLEL T-TRANSITION FOR TERMS ****************)
 
 definition cpt (h) (G) (L) (n): relation2 term term ≝
-           λT1,T2. ∃∃c. 𝐓❪n,c❫ & ❪G,L❫ ⊢ T1 ⬈[eq …,c,h] T2.
+           λT1,T2. ∃∃c. 𝐓❪n,c❫ & ❪G,L❫ ⊢ T1 ⬈[sh_is_next h,eq …,c] T2.
 
 interpretation
   "t-bound context-sensitive parallel t-transition (term)"
@@ -32,7 +33,7 @@ interpretation
 
 lemma cpt_ess (h) (G) (L):
       ∀s. ❪G,L❫ ⊢ ⋆s ⬆[h,1] ⋆(⫯[h]s).
-/2 width=3 by cpg_ess, ex2_intro/ qed.
+/3 width=3 by cpg_ess, ex2_intro/ qed.
 
 lemma cpt_delta (h) (n) (G) (K):
       ∀V1,V2. ❪G,K❫ ⊢ V1 ⬆[h,n] V2 →
@@ -105,7 +106,7 @@ lemma cpt_inv_atom_sn (h) (n) (J) (G) (L):
 #h #n #J #G #L #X2 * #c #Hc #H
 elim (cpg_inv_atom1 … H) -H *
 [ #H1 #H2 destruct /3 width=1 by or5_intro0, conj/
-| #s #H1 #H2 #H3 destruct /3 width=3 by or5_intro1, ex3_intro/
+| #s1 #s2 #H1 #H2 #H3 #H4 destruct /3 width=3 by or5_intro1, ex3_intro/
 | #cV #K #V1 #V2 #HV12 #HVT2 #H1 #H2 #H3 destruct
   /4 width=6 by or5_intro2, ex4_3_intro, ex2_intro/
 | #cV #K #V1 #V2 #HV12 #HVT2 #H1 #H2 #H3 destruct
@@ -121,7 +122,9 @@ lemma cpt_inv_sort_sn (h) (n) (G) (L) (s):
       ∧∧ X2 = ⋆(((next h)^n) s) & n ≤ 1.
 #h #n #G #L #s #X2 * #c #Hc #H
 elim (cpg_inv_sort1 … H) -H * #H1 #H2 destruct
-/2 width=1 by conj/
+[ /2 width=1 by conj/
+| #H1 #H2 destruct /2 width=1 by conj/
+] 
 qed-.
 
 lemma cpt_inv_zero_sn (h) (n) (G) (L):
index 1d4e8b33a5b5c479101be1a29e470969eab67e7e..29cbdfc0d7f7e903160d721e1feb37753abc5df2 100644 (file)
@@ -72,7 +72,7 @@ lemma cpt_inv_atom_sn_drops (h) (n) (I) (G) (L):
 #h #n #I #G #L #X2 * #c #Hc #H elim (cpg_inv_atom1_drops … H) -H *
 [ #H1 #H2 destruct
   /3 width=1 by or4_intro0, conj/
-| #s #H1 #H2 #H3 destruct
+| #s1 #s2 #H1 #H2 #H3 #H4 destruct
   /3 width=3 by or4_intro1, ex3_intro/
 | #cV #i #K #V1 #V2 #HLK #HV12 #HVT2 #H1 #H2 destruct
   /4 width=8 by ex4_4_intro, ex2_intro, or4_intro2/
index 2da498aa0f136cbf73dd5b55332738da4445f98e..13e3a4230fb5e03800ae041d72cc55b19a018d14 100644 (file)
@@ -19,214 +19,217 @@ include "ground/xoa/ex_6_6.ma".
 include "ground/xoa/ex_6_7.ma".
 include "ground/xoa/ex_7_7.ma".
 include "ground/xoa/or_4.ma".
-include "basic_2/notation/relations/predty_5.ma".
+include "basic_2/notation/relations/predty_4.ma".
 include "basic_2/rt_transition/cpg.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS **************)
 
-definition cpx (h): relation4 genv lenv term term ≝
-                    λG,L,T1,T2. ∃c. ❪G,L❫ ⊢ T1 ⬈[eq_f,c,h] T2.
+definition sort_eq_f: relation nat ≝ λs1,s2. ⊤.
+
+definition cpx (G) (L): relation2 term term ≝
+           λT1,T2. ∃c. ❪G,L❫ ⊢ T1 ⬈[sort_eq_f,rtc_eq_f,c] T2.
 
 interpretation
-   "unbound context-sensitive parallel rt-transition (term)"
-   'PRedTy h G L T1 T2 = (cpx h G L T1 T2).
+  "extended context-sensitive parallel rt-transition (term)"
+  'PRedTy G L T1 T2 = (cpx G L T1 T2).
 
 (* Basic properties *********************************************************)
 
-(* Basic_2A1: was: cpx_st *)
-lemma cpx_ess: ∀h,G,L,s. ❪G,L❫ ⊢ ⋆s ⬈[h] ⋆(⫯[h]s).
-/2 width=2 by cpg_ess, ex_intro/ qed.
+(* Basic_2A1: uses: cpx_st *)
+lemma cpx_qu (G) (L): ∀s1,s2. ❪G,L❫ ⊢ ⋆s1 ⬈ ⋆s2.
+/3 width=2 by cpg_ess, ex_intro/ qed.
 
-lemma cpx_delta: ∀h,I,G,K,V1,V2,W2. ❪G,K❫ ⊢ V1 ⬈[h] V2 →
-                 ⇧[1] V2 ≘ W2 → ❪G,K.ⓑ[I]V1❫ ⊢ #0 ⬈[h] W2.
-#h * #G #K #V1 #V2 #W2 *
+lemma cpx_delta (G) (K):
+      ∀I,V1,V2,W2. ❪G,K❫ ⊢ V1 ⬈ V2 →
+      ⇧[1] V2 ≘ W2 → ❪G,K.ⓑ[I]V1❫ ⊢ #0 ⬈ W2.
+#G #K * #V1 #V2 #W2 *
 /3 width=4 by cpg_delta, cpg_ell, ex_intro/
 qed.
 
-lemma cpx_lref: ∀h,I,G,K,T,U,i. ❪G,K❫ ⊢ #i ⬈[h] T →
-                ⇧[1] T ≘ U → ❪G,K.ⓘ[I]❫ ⊢ #↑i ⬈[h] U.
-#h #I #G #K #T #U #i *
+lemma cpx_lref (G) (K):
+      ∀I,T,U,i. ❪G,K❫ ⊢ #i ⬈ T →
+      ⇧[1] T ≘ U → ❪G,K.ⓘ[I]❫ ⊢ #↑i ⬈ U.
+#G #K #I #T #U #i *
 /3 width=4 by cpg_lref, ex_intro/
 qed.
 
-lemma cpx_bind: ∀h,p,I,G,L,V1,V2,T1,T2.
-                ❪G,L❫ ⊢ V1 ⬈[h] V2 → ❪G,L.ⓑ[I]V1❫ ⊢ T1 ⬈[h] T2 →
-                ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈[h] ⓑ[p,I]V2.T2.
-#h #p #I #G #L #V1 #V2 #T1 #T2 * #cV #HV12 *
+lemma cpx_bind (G) (L):
+      ∀p,I,V1,V2,T1,T2.
+      ❪G,L❫ ⊢ V1 ⬈ V2 → ❪G,L.ⓑ[I]V1❫ ⊢ T1 ⬈ T2 →
+      ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈ ⓑ[p,I]V2.T2.
+#G #L #p #I #V1 #V2 #T1 #T2 * #cV #HV12 *
 /3 width=2 by cpg_bind, ex_intro/
 qed.
 
-lemma cpx_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.
-#h * #G #L #V1 #V2 #T1 #T2 * #cV #HV12 *
+lemma cpx_flat (G) (L):
+      ∀I,V1,V2,T1,T2.
+      ❪G,L❫ ⊢ V1 ⬈ V2 → ❪G,L❫ ⊢ T1 ⬈ T2 →
+      ❪G,L❫ ⊢ ⓕ[I]V1.T1 ⬈ ⓕ[I]V2.T2.
+#G #L * #V1 #V2 #T1 #T2 * #cV #HV12 *
 /3 width=5 by cpg_appl, cpg_cast, ex_intro/
 qed.
 
-lemma cpx_zeta (h) (G) (L):
-               ∀T1,T. ⇧[1] T ≘ T1 → ∀T2. ❪G,L❫ ⊢ T ⬈[h] T2 →
-               ∀V. ❪G,L❫ ⊢ +ⓓV.T1 ⬈[h] T2.
-#h #G #L #T1 #T #HT1 #T2 *
+lemma cpx_zeta (G) (L):
+      ∀T1,T. ⇧[1] T ≘ T1 → ∀T2. ❪G,L❫ ⊢ T ⬈ T2 →
+      ∀V. ❪G,L❫ ⊢ +ⓓV.T1 ⬈ T2.
+#G #L #T1 #T #HT1 #T2 *
 /3 width=4 by cpg_zeta, ex_intro/
 qed.
 
-lemma cpx_eps: ∀h,G,L,V,T1,T2. ❪G,L❫ ⊢ T1 ⬈[h] T2 → ❪G,L❫ ⊢ ⓝV.T1 ⬈[h] T2.
-#h #G #L #V #T1 #T2 *
+lemma cpx_eps (G) (L):
+      ∀V,T1,T2. ❪G,L❫ ⊢ T1 ⬈ T2 → ❪G,L❫ ⊢ ⓝV.T1 ⬈ T2.
+#G #L #V #T1 #T2 *
 /3 width=2 by cpg_eps, ex_intro/
 qed.
 
 (* Basic_2A1: was: cpx_ct *)
-lemma cpx_ee: ∀h,G,L,V1,V2,T. ❪G,L❫ ⊢ V1 ⬈[h] V2 → ❪G,L❫ ⊢ ⓝV1.T ⬈[h] V2.
-#h #G #L #V1 #V2 #T *
+lemma cpx_ee (G) (L):
+      ∀V1,V2,T. ❪G,L❫ ⊢ V1 ⬈ V2 → ❪G,L❫ ⊢ ⓝV1.T ⬈ V2.
+#G #L #V1 #V2 #T *
 /3 width=2 by cpg_ee, ex_intro/
 qed.
 
-lemma cpx_beta: ∀h,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 →
-                ❪G,L❫ ⊢ ⓐV1.ⓛ[p]W1.T1 ⬈[h] ⓓ[p]ⓝW2.V2.T2.
-#h #p #G #L #V1 #V2 #W1 #W2 #T1 #T2 * #cV #HV12 * #cW #HW12 *
+lemma cpx_beta (G) (L):
+      ∀p,V1,V2,W1,W2,T1,T2.
+      ❪G,L❫ ⊢ V1 ⬈ V2 → ❪G,L❫ ⊢ W1 ⬈ W2 → ❪G,L.ⓛW1❫ ⊢ T1 ⬈ T2 →
+      ❪G,L❫ ⊢ ⓐV1.ⓛ[p]W1.T1 ⬈ ⓓ[p]ⓝW2.V2.T2.
+#G #L #p #V1 #V2 #W1 #W2 #T1 #T2 * #cV #HV12 * #cW #HW12 *
 /3 width=2 by cpg_beta, ex_intro/
 qed.
 
-lemma cpx_theta: ∀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 ⬈[h] T2 →
-                 ❪G,L❫ ⊢ ⓐV1.ⓓ[p]W1.T1 ⬈[h] ⓓ[p]W2.ⓐV2.T2.
-#h #p #G #L #V1 #V #V2 #W1 #W2 #T1 #T2 * #cV #HV1 #HV2 * #cW #HW12 *
+lemma cpx_theta (G) (L):
+      ∀p,V1,V,V2,W1,W2,T1,T2.
+      ❪G,L❫ ⊢ V1 ⬈ V → ⇧[1] V ≘ V2 → ❪G,L❫ ⊢ W1 ⬈ W2 → ❪G,L.ⓓW1❫ ⊢ T1 ⬈ T2 →
+      ❪G,L❫ ⊢ ⓐV1.ⓓ[p]W1.T1 ⬈ ⓓ[p]W2.ⓐV2.T2.
+#G #L #p #V1 #V #V2 #W1 #W2 #T1 #T2 * #cV #HV1 #HV2 * #cW #HW12 *
 /3 width=4 by cpg_theta, ex_intro/
 qed.
 
 (* Basic_2A1: includes: cpx_atom *)
-lemma cpx_refl: ∀h,G,L. reflexive … (cpx h G L).
+lemma cpx_refl (G) (L): reflexive … (cpx G L).
 /3 width=2 by cpg_refl, ex_intro/ qed.
 
 (* Advanced properties ******************************************************)
 
-lemma cpx_pair_sn: ∀h,I,G,L,V1,V2. ❪G,L❫ ⊢ V1 ⬈[h] V2 →
-                   ∀T. ❪G,L❫ ⊢ ②[I]V1.T ⬈[h] ②[I]V2.T.
-#h * /2 width=2 by cpx_flat, cpx_bind/
+lemma cpx_pair_sn (G) (L):
+      ∀I,V1,V2. ❪G,L❫ ⊢ V1 ⬈ V2 →
+      ∀T. ❪G,L❫ ⊢ ②[I]V1.T ⬈ ②[I]V2.T.
+#G #L * /2 width=2 by cpx_flat, cpx_bind/
 qed.
 
-lemma cpg_cpx (h) (Rt) (c) (G) (L):
-              ∀T1,T2. ❪G,L❫ ⊢ T1 ⬈[Rt,c,h] T2 → ❪G,L❫ ⊢ T1 ⬈[h] T2.
-#h #Rt #c #G #L #T1 #T2 #H elim H -c -G -L -T1 -T2
+lemma cpg_cpx (Rs) (Rk) (c) (G) (L):
+      ∀T1,T2. ❪G,L❫ ⊢ T1 ⬈[Rs,Rk,c] T2 → ❪G,L❫ ⊢ T1 ⬈ T2.
+#Rs #Rk #c #G #L #T1 #T2 #H elim H -c -G -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.
 
 (* Basic inversion lemmas ***************************************************)
 
-lemma cpx_inv_atom1: ∀h,J,G,L,T2. ❪G,L❫ ⊢ ⓪[J] ⬈[h] T2 →
-                     ∨∨ T2 = ⓪[J]
-                      | ∃∃s. T2 = ⋆(⫯[h]s) & J = Sort s
-                      | ∃∃I,K,V1,V2. ❪G,K❫ ⊢ V1 ⬈[h] V2 & ⇧[1] V2 ≘ T2 &
-                                     L = K.ⓑ[I]V1 & J = LRef 0
-                      | ∃∃I,K,T,i. ❪G,K❫ ⊢ #i ⬈[h] T & ⇧[1] T ≘ T2 &
-                                   L = K.ⓘ[I] & J = LRef (↑i).
-#h #J #G #L #T2 * #c #H elim (cpg_inv_atom1 … H) -H *
-/4 width=8 by or4_intro0, or4_intro1, or4_intro2, or4_intro3, ex4_4_intro, ex2_intro, ex_intro/
+lemma cpx_inv_atom1 (G) (L):
+      ∀J,T2. ❪G,L❫ ⊢ ⓪[J] ⬈ T2 →
+      ∨∨ T2 = ⓪[J]
+       | ∃∃s1,s2. T2 = ⋆s2 & J = Sort s1
+       | ∃∃I,K,V1,V2. ❪G,K❫ ⊢ V1 ⬈ V2 & ⇧[1] V2 ≘ T2 & L = K.ⓑ[I]V1 & J = LRef 0
+       | ∃∃I,K,T,i. ❪G,K❫ ⊢ #i ⬈ T & ⇧[1] T ≘ T2 & L = K.ⓘ[I] & J = LRef (↑i).
+#G #L #J #T2 * #c #H elim (cpg_inv_atom1 … H) -H *
+/4 width=8 by or4_intro0, or4_intro1, or4_intro2, or4_intro3, ex4_4_intro, ex2_2_intro, ex_intro/
 qed-.
 
-lemma cpx_inv_sort1: ∀h,G,L,T2,s. ❪G,L❫ ⊢ ⋆s ⬈[h] T2 →
-                     ∨∨ T2 = ⋆s | T2 = ⋆(⫯[h]s).
-#h #G #L #T2 #s * #c #H elim (cpg_inv_sort1 … H) -H *
-/2 width=1 by or_introl, or_intror/
+lemma cpx_inv_sort1 (G) (L):
+      ∀T2,s1. ❪G,L❫ ⊢ ⋆s1 ⬈ T2 →
+      ∃s2. T2 = ⋆s2.
+#G #L #T2 #s1 * #c #H elim (cpg_inv_sort1 … H) -H *
+/2 width=2 by ex_intro/
 qed-.
 
-lemma cpx_inv_zero1: ∀h,G,L,T2. ❪G,L❫ ⊢ #0 ⬈[h] T2 →
-                     ∨∨ T2 = #0
-                      | ∃∃I,K,V1,V2. ❪G,K❫ ⊢ V1 ⬈[h] V2 & ⇧[1] V2 ≘ T2 &
-                                     L = K.ⓑ[I]V1.
-#h #G #L #T2 * #c #H elim (cpg_inv_zero1 … H) -H *
+lemma cpx_inv_zero1 (G) (L):
+      ∀T2. ❪G,L❫ ⊢ #0 ⬈ T2 →
+      ∨∨ T2 = #0
+       | ∃∃I,K,V1,V2. ❪G,K❫ ⊢ V1 ⬈ V2 & ⇧[1] V2 ≘ T2 & L = K.ⓑ[I]V1.
+#G #L #T2 * #c #H elim (cpg_inv_zero1 … H) -H *
 /4 width=7 by ex3_4_intro, ex_intro, or_introl, or_intror/
 qed-.
 
-lemma cpx_inv_lref1: ∀h,G,L,T2,i. ❪G,L❫ ⊢ #↑i ⬈[h] T2 →
-                     ∨∨ T2 = #(↑i)
-                      | ∃∃I,K,T. ❪G,K❫ ⊢ #i ⬈[h] T & ⇧[1] T ≘ T2 & L = K.ⓘ[I].
-#h #G #L #T2 #i * #c #H elim (cpg_inv_lref1 … H) -H *
+lemma cpx_inv_lref1 (G) (L):
+      ∀T2,i. ❪G,L❫ ⊢ #↑i ⬈ T2 →
+      ∨∨ T2 = #(↑i)
+       | ∃∃I,K,T. ❪G,K❫ ⊢ #i ⬈ T & ⇧[1] T ≘ T2 & L = K.ⓘ[I].
+#G #L #T2 #i * #c #H elim (cpg_inv_lref1 … H) -H *
 /4 width=6 by ex3_3_intro, ex_intro, or_introl, or_intror/
 qed-.
 
-lemma cpx_inv_gref1: ∀h,G,L,T2,l. ❪G,L❫ ⊢ §l ⬈[h] T2 → T2 = §l.
-#h #G #L #T2 #l * #c #H elim (cpg_inv_gref1 … H) -H //
+lemma cpx_inv_gref1 (G) (L):
+      ∀T2,l. ❪G,L❫ ⊢ §l ⬈ T2 → T2 = §l.
+#G #L #T2 #l * #c #H elim (cpg_inv_gref1 … H) -H //
 qed-.
 
-lemma cpx_inv_bind1: ∀h,p,I,G,L,V1,T1,U2. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈[h] U2 →
-                     ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ⬈[h] V2 & ❪G,L.ⓑ[I]V1❫ ⊢ T1 ⬈[h] T2 &
-                                 U2 = ⓑ[p,I]V2.T2
-                      | ∃∃T. ⇧[1] T ≘ T1 & ❪G,L❫ ⊢ T ⬈[h] U2 &
-                             p = true & I = Abbr.
-#h #p #I #G #L #V1 #T1 #U2 * #c #H elim (cpg_inv_bind1 … H) -H *
+lemma cpx_inv_bind1 (G) (L):
+      ∀p,I,V1,T1,U2. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈ U2 →
+      ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ⬈ V2 & ❪G,L.ⓑ[I]V1❫ ⊢ T1 ⬈ T2 & U2 = ⓑ[p,I]V2.T2
+       | ∃∃T. ⇧[1] T ≘ T1 & ❪G,L❫ ⊢ T ⬈ U2 & p = true & I = Abbr.
+#G #L #p #I #V1 #T1 #U2 * #c #H elim (cpg_inv_bind1 … H) -H *
 /4 width=5 by ex4_intro, ex3_2_intro, ex_intro, or_introl, or_intror/
 qed-.
 
-lemma cpx_inv_abbr1: ∀h,p,G,L,V1,T1,U2. ❪G,L❫ ⊢ ⓓ[p]V1.T1 ⬈[h] U2 →
-                     ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ⬈[h] V2 & ❪G,L.ⓓV1❫ ⊢ T1 ⬈[h] T2 &
-                                 U2 = ⓓ[p]V2.T2
-                      | ∃∃T. ⇧[1] T ≘ T1 & ❪G,L❫ ⊢ T ⬈[h] U2 & p = true.
-#h #p #G #L #V1 #T1 #U2 * #c #H elim (cpg_inv_abbr1 … H) -H *
+lemma cpx_inv_abbr1 (G) (L):
+      ∀p,V1,T1,U2. ❪G,L❫ ⊢ ⓓ[p]V1.T1 ⬈ U2 →
+      ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ⬈ V2 & ❪G,L.ⓓV1❫ ⊢ T1 ⬈ T2 & U2 = ⓓ[p]V2.T2
+       | ∃∃T. ⇧[1] T ≘ T1 & ❪G,L❫ ⊢ T ⬈ U2 & p = true.
+#G #L #p #V1 #T1 #U2 * #c #H elim (cpg_inv_abbr1 … H) -H *
 /4 width=5 by ex3_2_intro, ex3_intro, ex_intro, or_introl, or_intror/
 qed-.
 
-lemma cpx_inv_abst1: ∀h,p,G,L,V1,T1,U2. ❪G,L❫ ⊢ ⓛ[p]V1.T1 ⬈[h] U2 →
-                     ∃∃V2,T2. ❪G,L❫ ⊢ V1 ⬈[h] V2 & ❪G,L.ⓛV1❫ ⊢ T1 ⬈[h] T2 &
-                              U2 = ⓛ[p]V2.T2.
-#h #p #G #L #V1 #T1 #U2 * #c #H elim (cpg_inv_abst1 … H) -H
+lemma cpx_inv_abst1 (G) (L):
+      ∀p,V1,T1,U2. ❪G,L❫ ⊢ ⓛ[p]V1.T1 ⬈ U2 →
+      ∃∃V2,T2. ❪G,L❫ ⊢ V1 ⬈ V2 & ❪G,L.ⓛV1❫ ⊢ T1 ⬈ T2 & U2 = ⓛ[p]V2.T2.
+#G #L #p #V1 #T1 #U2 * #c #H elim (cpg_inv_abst1 … H) -H
 /3 width=5 by ex3_2_intro, ex_intro/
 qed-.
 
-lemma cpx_inv_appl1: ∀h,G,L,V1,U1,U2. ❪G,L❫ ⊢ ⓐ V1.U1 ⬈[h] U2 →
-                     ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ⬈[h] V2 & ❪G,L❫ ⊢ U1 ⬈[h] T2 &
-                                 U2 = ⓐV2.T2
-                      | ∃∃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 & 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 ⬈[h] T2 &
-                                              U1 = ⓓ[p]W1.T1 & U2 = ⓓ[p]W2.ⓐV2.T2.
-#h #G #L #V1 #U1 #U2 * #c #H elim (cpg_inv_appl1 … H) -H *
+lemma cpx_inv_appl1 (G) (L):
+      ∀V1,U1,U2. ❪G,L❫ ⊢ ⓐ V1.U1 ⬈ U2 →
+      ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ⬈ V2 & ❪G,L❫ ⊢ U1 ⬈ T2 & U2 = ⓐV2.T2
+       | ∃∃p,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ⬈ V2 & ❪G,L❫ ⊢ W1 ⬈ W2 & ❪G,L.ⓛW1❫ ⊢ T1 ⬈ T2 & U1 = ⓛ[p]W1.T1 & U2 = ⓓ[p]ⓝW2.V2.T2
+       | ∃∃p,V,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ⬈ V & ⇧[1] V ≘ V2 & ❪G,L❫ ⊢ W1 ⬈ W2 & ❪G,L.ⓓW1❫ ⊢ T1 ⬈ T2 & U1 = ⓓ[p]W1.T1 & U2 = ⓓ[p]W2.ⓐV2.T2.
+#G #L #V1 #U1 #U2 * #c #H elim (cpg_inv_appl1 … H) -H *
 /4 width=13 by or3_intro0, or3_intro1, or3_intro2, ex6_7_intro, ex5_6_intro, ex3_2_intro, ex_intro/
 qed-.
 
-lemma cpx_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 &
-                                 U2 = ⓝV2.T2
-                      | ❪G,L❫ ⊢ U1 ⬈[h] U2
-                      | ❪G,L❫ ⊢ V1 ⬈[h] U2.
-#h #G #L #V1 #U1 #U2 * #c #H elim (cpg_inv_cast1 … H) -H *
+lemma cpx_inv_cast1 (G) (L):
+      ∀V1,U1,U2. ❪G,L❫ ⊢ ⓝV1.U1 ⬈ U2 →
+      ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ⬈ V2 & ❪G,L❫ ⊢ U1 ⬈ T2 & U2 = ⓝV2.T2
+       | ❪G,L❫ ⊢ U1 ⬈ U2
+       | ❪G,L❫ ⊢ V1 ⬈ U2.
+#G #L #V1 #U1 #U2 * #c #H elim (cpg_inv_cast1 … H) -H *
 /4 width=5 by or3_intro0, or3_intro1, or3_intro2, ex3_2_intro, ex_intro/
 qed-.
 
 (* Advanced inversion lemmas ************************************************)
 
-lemma cpx_inv_zero1_pair: ∀h,I,G,K,V1,T2. ❪G,K.ⓑ[I]V1❫ ⊢ #0 ⬈[h] T2 →
-                          ∨∨ T2 = #0
-                           | ∃∃V2. ❪G,K❫ ⊢ V1 ⬈[h] V2 & ⇧[1] V2 ≘ T2.
-#h #I #G #L #V1 #T2 * #c #H elim (cpg_inv_zero1_pair … H) -H *
+lemma cpx_inv_zero1_pair (G) (K):
+      ∀I,V1,T2. ❪G,K.ⓑ[I]V1❫ ⊢ #0 ⬈ T2 →
+      ∨∨ T2 = #0
+       | ∃∃V2. ❪G,K❫ ⊢ V1 ⬈ V2 & ⇧[1] V2 ≘ T2.
+#G #K #I #V1 #T2 * #c #H elim (cpg_inv_zero1_pair … H) -H *
 /4 width=3 by ex2_intro, ex_intro, or_intror, or_introl/
 qed-.
 
-lemma cpx_inv_lref1_bind: ∀h,I,G,K,T2,i. ❪G,K.ⓘ[I]❫ ⊢ #↑i ⬈[h] T2 →
-                          ∨∨ T2 = #(↑i)
-                           | ∃∃T. ❪G,K❫ ⊢ #i ⬈[h] T & ⇧[1] T ≘ T2.
-#h #I #G #L #T2 #i * #c #H elim (cpg_inv_lref1_bind … H) -H *
+lemma cpx_inv_lref1_bind (G) (K):
+      ∀I,T2,i. ❪G,K.ⓘ[I]❫ ⊢ #↑i ⬈ T2 →
+      ∨∨ T2 = #(↑i)
+       | ∃∃T. ❪G,K❫ ⊢ #i ⬈ T & ⇧[1] T ≘ T2.
+#G #K #I #T2 #i * #c #H elim (cpg_inv_lref1_bind … H) -H *
 /4 width=3 by ex2_intro, ex_intro, or_introl, or_intror/
 qed-.
 
-lemma cpx_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 &
-                                 U2 = ⓕ[I]V2.T2
-                      | (❪G,L❫ ⊢ U1 ⬈[h] U2 ∧ I = Cast)
-                      | (❪G,L❫ ⊢ V1 ⬈[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 &
-                                            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 &
-                                              U1 = ⓓ[p]W1.T1 &
-                                              U2 = ⓓ[p]W2.ⓐV2.T2 & I = Appl.
-#h * #G #L #V1 #U1 #U2 #H
+lemma cpx_inv_flat1 (G) (L):
+      ∀I,V1,U1,U2. ❪G,L❫ ⊢ ⓕ[I]V1.U1 ⬈ U2 →
+      ∨∨ ∃∃V2,T2. ❪G,L❫ ⊢ V1 ⬈ V2 & ❪G,L❫ ⊢ U1 ⬈ T2 & U2 = ⓕ[I]V2.T2
+       | (❪G,L❫ ⊢ U1 ⬈ U2 ∧ I = Cast)
+       | (❪G,L❫ ⊢ V1 ⬈ U2 ∧ I = Cast)
+       | ∃∃p,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ⬈ V2 & ❪G,L❫ ⊢ W1 ⬈ W2 & ❪G,L.ⓛW1❫ ⊢ T1 ⬈ T2 & U1 = ⓛ[p]W1.T1 & U2 = ⓓ[p]ⓝW2.V2.T2 & I = Appl
+       | ∃∃p,V,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ⬈ V & ⇧[1] V ≘ V2 & ❪G,L❫ ⊢ W1 ⬈ W2 & ❪G,L.ⓓW1❫ ⊢ T1 ⬈ T2 & U1 = ⓓ[p]W1.T1 & U2 = ⓓ[p]W2.ⓐV2.T2 & I = Appl.
+#G #L * #V1 #U1 #U2 #H
 [ elim (cpx_inv_appl1 … H) -H *
   /3 width=14 by or5_intro0, or5_intro3, or5_intro4, ex7_7_intro, ex6_6_intro, ex3_2_intro/
 | elim (cpx_inv_cast1 … H) -H [ * ]
@@ -236,40 +239,40 @@ qed-.
 
 (* Basic forward lemmas *****************************************************)
 
-lemma cpx_fwd_bind1_minus: ∀h,I,G,L,V1,T1,T. ❪G,L❫ ⊢ -ⓑ[I]V1.T1 ⬈[h] T → ∀p.
-                           ∃∃V2,T2. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈[h] ⓑ[p,I]V2.T2 &
-                                    T = -ⓑ[I]V2.T2.
-#h #I #G #L #V1 #T1 #T * #c #H #p elim (cpg_fwd_bind1_minus … H p) -H
+lemma cpx_fwd_bind1_minus (G) (L):
+      ∀I,V1,T1,T. ❪G,L❫ ⊢ -ⓑ[I]V1.T1 ⬈ T → ∀p.
+      ∃∃V2,T2. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈ ⓑ[p,I]V2.T2 & T = -ⓑ[I]V2.T2.
+#G #L #I #V1 #T1 #T * #c #H #p elim (cpg_fwd_bind1_minus … H p) -H
 /3 width=4 by ex2_2_intro, ex_intro/
 qed-.
 
 (* Basic eliminators ********************************************************)
 
-lemma cpx_ind: ∀h. ∀Q:relation4 genv lenv term term.
-               (∀I,G,L. Q G L (⓪[I]) (⓪[I])) →
-               (∀G,L,s. Q G L (⋆s) (⋆(⫯[h]s))) →
-               (∀I,G,K,V1,V2,W2. ❪G,K❫ ⊢ V1 ⬈[h] V2 → Q G K V1 V2 →
-                 ⇧[1] V2 ≘ W2 → Q G (K.ⓑ[I]V1) (#0) W2
-               ) → (∀I,G,K,T,U,i. ❪G,K❫ ⊢ #i ⬈[h] 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 →
-                  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 →
-                  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 → 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 →
-                  Q G L (ⓝV.T1) T2
-               ) → (∀G,L,V1,V2,T. ❪G,L❫ ⊢ V1 ⬈[h] V2 → Q G L V1 V2 →
-                  Q G L (ⓝV1.T) V2
-               ) → (∀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 →
-                  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 →
-                  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.
-#h #Q #IH1 #IH2 #IH3 #IH4 #IH5 #IH6 #IH7 #IH8 #IH9 #IH10 #IH11 #G #L #T1 #T2
+lemma cpx_ind (Q:relation4 …):
+      (∀I,G,L. Q G L (⓪[I]) (⓪[I])) →
+      (∀G,L,s1,s2. Q G L (⋆s1) (⋆s2)) →
+      (∀I,G,K,V1,V2,W2. ❪G,K❫ ⊢ V1 ⬈ V2 → Q G K V1 V2 →
+        ⇧[1] V2 ≘ W2 → Q G (K.ⓑ[I]V1) (#0) W2
+      ) → (∀I,G,K,T,U,i. ❪G,K❫ ⊢ #i ⬈ 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 ⬈ V2 → ❪G,L.ⓑ[I]V1❫ ⊢ T1 ⬈ 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 ⬈ V2 → ❪G,L❫ ⊢ T1 ⬈ 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 ⬈ T2 → Q G L T T2 →
+        Q G L (+ⓓV.T1) T2
+      ) → (∀G,L,V,T1,T2. ❪G,L❫ ⊢ T1 ⬈ T2 → Q G L T1 T2 →
+        Q G L (ⓝV.T1) T2
+      ) → (∀G,L,V1,V2,T. ❪G,L❫ ⊢ V1 ⬈ V2 → Q G L V1 V2 →
+        Q G L (ⓝV1.T) V2
+      ) → (∀p,G,L,V1,V2,W1,W2,T1,T2. ❪G,L❫ ⊢ V1 ⬈ V2 → ❪G,L❫ ⊢ W1 ⬈ W2 → ❪G,L.ⓛW1❫ ⊢ T1 ⬈ 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 ⬈ V → ❪G,L❫ ⊢ W1 ⬈ W2 → ❪G,L.ⓓW1❫ ⊢ T1 ⬈ 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 ⬈ T2 → Q G L T1 T2.
+#Q #IH1 #IH2 #IH3 #IH4 #IH5 #IH6 #IH7 #IH8 #IH9 #IH10 #IH11 #G #L #T1 #T2
 * #c #H elim H -c -G -L -T1 -T2 /3 width=4 by ex_intro/
 qed-.
index 5b9970d0fa3f5cde4d6cff50564e56752d90e7f4..686dfe0ad3659b393cf0515ee4f1b9e9a283bcd8 100644 (file)
@@ -16,61 +16,62 @@ include "ground/xoa/ex_4_5.ma".
 include "basic_2/rt_transition/cpg_drops.ma".
 include "basic_2/rt_transition/cpx.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS **************)
 
 (* Advanced properties ******************************************************)
 
 (* Basic_2A1: was: cpx_delta *)
-lemma cpx_delta_drops: ∀h,I,G,L,K,V,V2,W2,i.
-                       ⇩[i] L ≘ K.ⓑ[I]V → ❪G,K❫ ⊢ V ⬈[h] V2 →
-                       ⇧[↑i] V2 ≘ W2 → ❪G,L❫ ⊢ #i ⬈[h] W2.
-#h * #G #L #K #V #V2 #W2 #i #HLK *
+lemma cpx_delta_drops (G) (L):
+      ∀I,K,V,V2,W2,i.
+      ⇩[i] L ≘ K.ⓑ[I]V → ❪G,K❫ ⊢ V ⬈ V2 →
+      ⇧[↑i] V2 ≘ W2 → ❪G,L❫ ⊢ #i ⬈ W2.
+#G #L * #K #V #V2 #W2 #i #HLK *
 /3 width=7 by cpg_ell_drops, cpg_delta_drops, ex_intro/
 qed.
 
 (* Advanced inversion lemmas ************************************************)
 
 (* Basic_2A1: was: cpx_inv_atom1 *)
-lemma cpx_inv_atom1_drops: ∀h,I,G,L,T2. ❪G,L❫ ⊢ ⓪[I] ⬈[h] T2 →
-                           ∨∨ T2 = ⓪[I]
-                            | ∃∃s. T2 = ⋆(⫯[h]s) & I = Sort s
-                            | ∃∃J,K,V,V2,i. ⇩[i] L ≘ K.ⓑ[J]V & ❪G,K❫ ⊢ V ⬈[h] V2 &
-                                            ⇧[↑i] V2 ≘ T2 & I = LRef i.
-#h #I #G #L #T2 * #c #H elim (cpg_inv_atom1_drops … H) -H *
-/4 width=9 by or3_intro0, or3_intro1, or3_intro2, ex4_5_intro, ex2_intro, ex_intro/
+lemma cpx_inv_atom1_drops (G) (L):
+      ∀I,T2. ❪G,L❫ ⊢ ⓪[I] ⬈ T2 →
+      ∨∨ T2 = ⓪[I]
+       | ∃∃s1,s2. T2 = ⋆s2 & I = Sort s1
+       | ∃∃J,K,V,V2,i. ⇩[i] L ≘ K.ⓑ[J]V & ❪G,K❫ ⊢ V ⬈ V2 & ⇧[↑i] V2 ≘ T2 & I = LRef i.
+#G #L #I #T2 * #c #H elim (cpg_inv_atom1_drops … H) -H *
+/4 width=9 by or3_intro0, or3_intro1, or3_intro2, ex4_5_intro, ex2_2_intro, ex_intro/
 qed-.
 
 (* Basic_2A1: was: cpx_inv_lref1 *)
-lemma cpx_inv_lref1_drops: ∀h,G,L,T2,i. ❪G,L❫ ⊢ #i ⬈[h] T2 →
-                           T2 = #i ∨
-                           ∃∃J,K,V,V2. ⇩[i] L ≘ K. ⓑ[J]V & ❪G,K❫ ⊢ V ⬈[h] V2 &
-                                       ⇧[↑i] V2 ≘ T2.
-#h #G #L #T1 #i * #c #H elim (cpg_inv_lref1_drops … H) -H *
+lemma cpx_inv_lref1_drops (G) (L):
+      ∀T2,i. ❪G,L❫ ⊢ #i ⬈ T2 →
+      ∨∨ T2 = #i 
+       | ∃∃J,K,V,V2. ⇩[i] L ≘ K. ⓑ[J]V & ❪G,K❫ ⊢ V ⬈ V2 & ⇧[↑i] V2 ≘ T2.
+#G #L #T1 #i * #c #H elim (cpg_inv_lref1_drops … H) -H *
 /4 width=7 by ex3_4_intro, ex_intro, or_introl, or_intror/
 qed-.
 
 (* Properties with generic slicing for local environments *******************)
 
 (* Basic_2A1: includes: cpx_lift *)
-lemma cpx_lifts_sn: ∀h,G. d_liftable2_sn … lifts (cpx h G).
-#h #G #K #T1 #T2 * #cT #HT12 #b #f #L #HLK #U1 #HTU1
+lemma cpx_lifts_sn (G): d_liftable2_sn … lifts (cpx G).
+#G #K #T1 #T2 * #cT #HT12 #b #f #L #HLK #U1 #HTU1
 elim (cpg_lifts_sn … HT12 … HLK … HTU1) -K -T1
 /3 width=4 by ex2_intro, ex_intro/
 qed-.
 
-lemma cpx_lifts_bi: ∀h,G. d_liftable2_bi … lifts (cpx h G).
-#h #G #K #T1 #T2 * /3 width=10 by cpg_lifts_bi, ex_intro/
+lemma cpx_lifts_bi (G): d_liftable2_bi … lifts (cpx G).
+#G #K #T1 #T2 * /3 width=10 by cpg_lifts_bi, ex_intro/
 qed-.
 
 (* Inversion lemmas with generic slicing for local environments *************)
 
 (* Basic_2A1: includes: cpx_inv_lift1 *)
-lemma cpx_inv_lifts_sn: ∀h,G. d_deliftable2_sn … lifts (cpx h G).
-#h #G #L #U1 #U2 * #cU #HU12 #b #f #K #HLK #T1 #HTU1
+lemma cpx_inv_lifts_sn (G): d_deliftable2_sn … lifts (cpx G).
+#G #L #U1 #U2 * #cU #HU12 #b #f #K #HLK #T1 #HTU1
 elim (cpg_inv_lifts_sn … HU12 … HLK … HTU1) -L -U1
 /3 width=4 by ex2_intro, ex_intro/
 qed-.
 
-lemma cpx_inv_lifts_bi: ∀h,G. d_deliftable2_bi …lifts (cpx h G).
-#h #G #L #U1 #U2 * /3 width=10 by cpg_inv_lifts_bi, ex_intro/
+lemma cpx_inv_lifts_bi (G): d_deliftable2_bi …lifts (cpx G).
+#G #L #U1 #U2 * /3 width=10 by cpg_inv_lifts_bi, ex_intro/
 qed-.
index b01b5d58dbab037644aad0126d0febe765bebf4d..37551625dad494ecd0f87b1a6feb1833674c0f6d 100644 (file)
 include "static_2/relocation/lifts_basic.ma".
 include "basic_2/rt_transition/cpx_drops.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS **************)
 
 (* Properties with basic relocation *****************************************)
 
-lemma cpx_subst (h) (G) (L) (U1) (i):
-                ∀I,K,V. ⇩[i] L ≘ K.ⓑ[I]V →
-                ∃∃U2,T2. ❪G,L❫ ⊢ U1 ⬈[h] U2 & ⇧[i,1] T2 ≘ U2.
-#h #G #L #U1 @(fqup_wf_ind_eq (Ⓣ) … G L U1) -G -L -U1
+lemma cpx_subst (G) (L) (U1) (i):
+      ∀I,K,V. ⇩[i] L ≘ K.ⓑ[I]V →
+      ∃∃U2,T2. ❪G,L❫ ⊢ U1 ⬈ U2 & ⇧[i,1] T2 ≘ U2.
+#G #L #U1 @(fqup_wf_ind_eq (Ⓣ) … G L U1) -G -L -U1
 #G0 #L0 #U0 #IH #G #L * *
 [ #s #HG #HL #HT #i #I #K #V #_ destruct -IH
   /2 width=4 by lifts_sort, ex2_2_intro/
index 9e6020a2295271d257b9485b91ecf41b7c04b610..ad3014288ab11ead4a74bd6d14b48fad05ccb550 100644 (file)
 include "static_2/syntax/cext2.ma".
 include "basic_2/rt_transition/cpx.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR BINDERS *************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR BINDERS ************)
 
-definition cpx_ext (h) (G): relation3 lenv bind bind ≝
-                            cext2 (cpx h G).
+definition cpx_ext (G): relation3 lenv bind bind ≝
+           cext2 (cpx G).
 
 interpretation
-   "unbound context-sensitive parallel rt-transition (binder)"
-   'PRedTy h G L I1 I2 = (cpx_ext h G L I1 I2).
+  "extended context-sensitive parallel rt-transition (binder)"
+  'PRedTy G L I1 I2 = (cpx_ext G L I1 I2).
index fc7a7d63169414eff37f19d3b16f65120fa68dab..a0ec5d8f8eff632034d892359dabe805cba68139 100644 (file)
@@ -16,14 +16,15 @@ include "static_2/static/feqx.ma".
 include "basic_2/rt_transition/cpx_reqx.ma".
 include "basic_2/rt_transition/rpx_reqx.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS **************)
 
 (* Properties with sort-irrelevant equivalence for closures *****************)
 
-lemma feqx_cpx_trans: ∀h,G1,G2,L1,L2,T1,T. ❪G1,L1,T1❫ ≛ ❪G2,L2,T❫ →
-                      ∀T2. ❪G2,L2❫ ⊢ T ⬈[h] T2 →
-                      ∃∃T0. ❪G1,L1❫ ⊢ T1 ⬈[h] T0 & ❪G1,L1,T0❫ ≛ ❪G2,L2,T2❫.
-#h #G1 #G2 #L1 #L2 #T1 #T #H #T2 #HT2
+lemma feqx_cpx_trans:
+      ∀G1,G2,L1,L2,T1,T. ❪G1,L1,T1❫ ≛ ❪G2,L2,T❫ →
+      ∀T2. ❪G2,L2❫ ⊢ T ⬈ T2 →
+      ∃∃T0. ❪G1,L1❫ ⊢ T1 ⬈ T0 & ❪G1,L1,T0❫ ≛ ❪G2,L2,T2❫.
+#G1 #G2 #L1 #L2 #T1 #T #H #T2 #HT2
 elim (feqx_inv_gen_dx … H) -H #H #HL12 #HT1 destruct
 elim (reqx_cpx_trans … HL12 … HT2) #T0 #HT0 #HT02
 lapply (cpx_reqx_conf_dx … HT2 … HL12) -HL12 #HL12
index 18a5023359979f8b9358de78e70226c6c03393f9..31dffbb2a64aa8f927ab70dce1f631f046f5ad42 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS **************)
 
 include "static_2/relocation/lifts_teqx.ma".
 include "static_2/s_computation/fqus_fqup.ma".
@@ -21,10 +21,11 @@ include "basic_2/rt_transition/cpx_lsubr.ma".
 
 (* Properties on supclosure *************************************************)
 
-lemma fqu_cpx_trans: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂[b] ❪G2,L2,T2❫ →
-                     ∀U2. ❪G2,L2❫ ⊢ T2 ⬈[h] U2 →
-                     ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈[h] U1 & ❪G1,L1,U1❫ ⬂[b] ❪G2,L2,U2❫.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
+lemma fqu_cpx_trans (b):
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂[b] ❪G2,L2,T2❫ →
+      ∀U2. ❪G2,L2❫ ⊢ T2 ⬈ U2 →
+      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈ U1 & ❪G1,L1,U1❫ ⬂[b] ❪G2,L2,U2❫.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
 /3 width=3 by cpx_pair_sn, cpx_bind, cpx_flat, fqu_pair_sn, fqu_bind_dx, fqu_flat_dx, ex2_intro/
 [ #I #G #L2 #V2 #X2 #HVX2
   elim (lifts_total X2 (𝐔❨1❩))
@@ -36,19 +37,21 @@ lemma fqu_cpx_trans: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂[b] ❪G2,L2,T2
 ]
 qed-.
 
-lemma fquq_cpx_trans: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂⸮[b] ❪G2,L2,T2❫ →
-                      ∀U2. ❪G2,L2❫ ⊢ T2 ⬈[h] U2 →
-                      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈[h] U1 & ❪G1,L1,U1❫ ⬂⸮[b] ❪G2,L2,U2❫.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -H
+lemma fquq_cpx_trans (b):
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂⸮[b] ❪G2,L2,T2❫ →
+      ∀U2. ❪G2,L2❫ ⊢ T2 ⬈ U2 →
+      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈ U1 & ❪G1,L1,U1❫ ⬂⸮[b] ❪G2,L2,U2❫.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -H
 [ #HT12 #U2 #HTU2 elim (fqu_cpx_trans … HT12 … HTU2) /3 width=3 by fqu_fquq, ex2_intro/
 | * #H1 #H2 #H3 destruct /2 width=3 by ex2_intro/
 ]
 qed-.
 
-lemma fqup_cpx_trans: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂+[b] ❪G2,L2,T2❫ →
-                      ∀U2. ❪G2,L2❫ ⊢ T2 ⬈[h] U2 →
-                      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈[h] U1 & ❪G1,L1,U1❫ ⬂+[b] ❪G2,L2,U2❫.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind … H) -G2 -L2 -T2
+lemma fqup_cpx_trans (b):
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂+[b] ❪G2,L2,T2❫ →
+      ∀U2. ❪G2,L2❫ ⊢ T2 ⬈ U2 →
+      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈ U1 & ❪G1,L1,U1❫ ⬂+[b] ❪G2,L2,U2❫.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind … H) -G2 -L2 -T2
 [ #G2 #L2 #T2 #H12 #U2 #HTU2 elim (fqu_cpx_trans … H12 … HTU2) -T2
   /3 width=3 by fqu_fqup, ex2_intro/
 | #G #G2 #L #L2 #T #T2 #_ #HT2 #IHT1 #U2 #HTU2
@@ -57,19 +60,21 @@ lemma fqup_cpx_trans: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂+[b] ❪G2,L2,
 ]
 qed-.
 
-lemma fqus_cpx_trans: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂*[b] ❪G2,L2,T2❫ →
-                      ∀U2. ❪G2,L2❫ ⊢ T2 ⬈[h] U2 →
-                      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈[h] U1 & ❪G1,L1,U1❫ ⬂*[b] ❪G2,L2,U2❫.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim (fqus_inv_fqup … H) -H
+lemma fqus_cpx_trans (b):
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂*[b] ❪G2,L2,T2❫ →
+      ∀U2. ❪G2,L2❫ ⊢ T2 ⬈ U2 →
+      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈ U1 & ❪G1,L1,U1❫ ⬂*[b] ❪G2,L2,U2❫.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H elim (fqus_inv_fqup … H) -H
 [ #HT12 #U2 #HTU2 elim (fqup_cpx_trans … HT12 … HTU2) /3 width=3 by fqup_fqus, ex2_intro/
 | * #H1 #H2 #H3 destruct /2 width=3 by ex2_intro/
 ]
 qed-.
 
-lemma fqu_cpx_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂[b] ❪G2,L2,T2❫ →
-                           ∀U2. ❪G2,L2❫ ⊢ T2 ⬈[h] U2 → (T2 ≛ U2 → ⊥) →
-                           ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈[h] U1 & T1 ≛ U1 → ⊥ & ❪G1,L1,U1❫ ⬂[b] ❪G2,L2,U2❫.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
+lemma fqu_cpx_trans_tneqx (b):
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂[b] ❪G2,L2,T2❫ →
+      ∀U2. ❪G2,L2❫ ⊢ T2 ⬈ U2 → (T2 ≛ U2 → ⊥) →
+      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈ U1 & T1 ≛ U1 → ⊥ & ❪G1,L1,U1❫ ⬂[b] ❪G2,L2,U2❫.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
 [ #I #G #L #V1 #V2 #HV12 #_ elim (lifts_total V2 𝐔❨1❩)
   #U2 #HVU2 @(ex3_intro … U2)
   [1,3: /3 width=7 by cpx_delta, fqu_drop/
@@ -98,20 +103,22 @@ lemma fqu_cpx_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂[b] ❪G2
 ]
 qed-.
 
-lemma fquq_cpx_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂⸮[b] ❪G2,L2,T2❫ →
-                            ∀U2. ❪G2,L2❫ ⊢ T2 ⬈[h] U2 → (T2 ≛ U2 → ⊥) →
-                            ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈[h] U1 & T1 ≛ U1 → ⊥ & ❪G1,L1,U1❫ ⬂⸮[b] ❪G2,L2,U2❫.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H12 elim H12 -H12
+lemma fquq_cpx_trans_tneqx (b):
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂⸮[b] ❪G2,L2,T2❫ →
+      ∀U2. ❪G2,L2❫ ⊢ T2 ⬈ U2 → (T2 ≛ U2 → ⊥) →
+      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈ U1 & T1 ≛ U1 → ⊥ & ❪G1,L1,U1❫ ⬂⸮[b] ❪G2,L2,U2❫.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H12 elim H12 -H12
 [ #H12 #U2 #HTU2 #H elim (fqu_cpx_trans_tneqx … H12 … HTU2 H) -T2
   /3 width=4 by fqu_fquq, ex3_intro/
 | * #HG #HL #HT destruct /3 width=4 by ex3_intro/
 ]
 qed-.
 
-lemma fqup_cpx_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂+[b] ❪G2,L2,T2❫ →
-                            ∀U2. ❪G2,L2❫ ⊢ T2 ⬈[h] U2 → (T2 ≛ U2 → ⊥) →
-                            ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈[h] U1 & T1 ≛ U1 → ⊥ & ❪G1,L1,U1❫ ⬂+[b] ❪G2,L2,U2❫.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind_dx … H) -G1 -L1 -T1
+lemma fqup_cpx_trans_tneqx (b):
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂+[b] ❪G2,L2,T2❫ →
+      ∀U2. ❪G2,L2❫ ⊢ T2 ⬈ U2 → (T2 ≛ U2 → ⊥) →
+      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈ U1 & T1 ≛ U1 → ⊥ & ❪G1,L1,U1❫ ⬂+[b] ❪G2,L2,U2❫.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind_dx … H) -G1 -L1 -T1
 [ #G1 #L1 #T1 #H12 #U2 #HTU2 #H elim (fqu_cpx_trans_tneqx … H12 … HTU2 H) -T2
   /3 width=4 by fqu_fqup, ex3_intro/
 | #G #G1 #L #L1 #T #T1 #H1 #_ #IH12 #U2 #HTU2 #H elim (IH12 … HTU2 H) -T2
@@ -120,10 +127,11 @@ lemma fqup_cpx_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂+[b] ❪
 ]
 qed-.
 
-lemma fqus_cpx_trans_tneqx: ∀h,b,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂*[b] ❪G2,L2,T2❫ →
-                            ∀U2. ❪G2,L2❫ ⊢ T2 ⬈[h] U2 → (T2 ≛ U2 → ⊥) →
-                            ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈[h] U1 & T1 ≛ U1 → ⊥ & ❪G1,L1,U1❫ ⬂*[b] ❪G2,L2,U2❫.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H12 #U2 #HTU2 #H elim (fqus_inv_fqup … H12) -H12
+lemma fqus_cpx_trans_tneqx (b):
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂*[b] ❪G2,L2,T2❫ →
+      ∀U2. ❪G2,L2❫ ⊢ T2 ⬈ U2 → (T2 ≛ U2 → ⊥) →
+      ∃∃U1. ❪G1,L1❫ ⊢ T1 ⬈ U1 & T1 ≛ U1 → ⊥ & ❪G1,L1,U1❫ ⬂*[b] ❪G2,L2,U2❫.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H12 #U2 #HTU2 #H elim (fqus_inv_fqup … H12) -H12
 [ #H12 elim (fqup_cpx_trans_tneqx … H12 … HTU2 H) -T2
   /3 width=4 by fqup_fqus, ex3_intro/
 | * #HG #HL #HT destruct /3 width=4 by ex3_intro/
index ecc4cf82ede84bda9145c55de9196876985581fb..42fd64fa1888d311a14c6611fa4fea377521cea2 100644 (file)
 include "basic_2/rt_transition/cpg_lsubr.ma".
 include "basic_2/rt_transition/cpx.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS **************)
 
 (* Properties with restricted refinement for local environments *************)
 
-lemma lsubr_cpx_trans (h) (G): lsub_trans … (cpx h G) lsubr.
-#h #G #L1 #T1 #T2 * /3 width=4 by lsubr_cpg_trans, ex_intro/
+lemma lsubr_cpx_trans (G): lsub_trans … (cpx G) lsubr.
+#G #L1 #T1 #T2 * /3 width=4 by lsubr_cpg_trans, ex_intro/
 qed-.
 
-lemma cpx_bind_unit (h) (G): ∀L,V1,V2. ❪G,L❫ ⊢ V1 ⬈[h] V2 →
-                             ∀J,T1,T2. ❪G,L.ⓤ[J]❫ ⊢ T1 ⬈[h] T2 →
-                             ∀p,I. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈[h] ⓑ[p,I]V2.T2.
+lemma cpx_bind_unit (G) (L):
+      ∀V1,V2. ❪G,L❫ ⊢ V1 ⬈ V2 →
+      ∀J,T1,T2. ❪G,L.ⓤ[J]❫ ⊢ T1 ⬈ T2 →
+      ∀p,I. ❪G,L❫ ⊢ ⓑ[p,I]V1.T1 ⬈ ⓑ[p,I]V2.T2.
 /4 width=4 by lsubr_cpx_trans, cpx_bind, lsubr_unit/ qed.
-
index 3379c6e23ac7d73568d48bdb3edef9eafc21e90d..f74d42babe9135a0bcb7465c5db946f2c9cdbc27 100644 (file)
 include "static_2/static/req_drops.ma".
 include "basic_2/rt_transition/rpx_fsle.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS **************)
 
 (* Properties with syntactic equivalence for lenvs on referred entries ******)
 
 (* Basic_2A1: was: lleq_cpx_trans *)
-lemma req_cpx_trans (h) (G): req_transitive (cpx h G).
-#h #G #L2 #T1 #T2 #H @(cpx_ind … H) -G -L2 -T1 -T2 /2 width=2 by cpx_ess/
+lemma req_cpx_trans (G): req_transitive (cpx G).
+#G #L2 #T1 #T2 #H @(cpx_ind … H) -G -L2 -T1 -T2 /2 width=2 by cpx_qu/
 [ #I #G #K2 #V1 #V2 #W2 #_ #IH #HVW2 #L1 #H
   elim (req_inv_zero_pair_dx … H) -H #K1 #HK12 #H destruct
   /3 width=3 by cpx_delta/
@@ -50,5 +50,5 @@ lemma req_cpx_trans (h) (G): req_transitive (cpx h G).
 qed-.
 
 (* Basic_2A1: was: cpx_lleq_conf_sn *)
-lemma cpx_req_conf_sn (h) (G): s_r_confluent1 … (cpx h G) req.
+lemma cpx_req_conf_sn (G): s_r_confluent1 … (cpx G) req.
 /2 width=5 by cpx_rex_conf/ qed-.
index d3cbfa45edf4ede11e2b8aa38d9422ebb2912215..7c05f8b2c7307aca46ff2a1e1176fea951105032 100644 (file)
 include "static_2/static/reqx_reqx.ma".
 include "basic_2/rt_transition/rpx_fsle.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS **************)
 
 (* Properties with sort-irrelevant equivalence for local environments *******)
 
 (* Basic_2A1: was just: cpx_lleq_conf_sn *)
-lemma cpx_reqx_conf_sn: ∀h,G. s_r_confluent1 … (cpx h G) reqx.
+lemma cpx_reqx_conf_sn (G):
+      s_r_confluent1 … (cpx G) reqx.
 /3 width=6 by cpx_rex_conf/ qed-.
 
 (* Basic_2A1: was just: cpx_lleq_conf_dx *)
-lemma cpx_reqx_conf_dx: ∀h,G,L2,T1,T2. ❪G,L2❫ ⊢ T1 ⬈[h] T2 →
-                        ∀L1. L1 ≛[T1] L2 → L1 ≛[T2] L2.
+lemma cpx_reqx_conf_dx (G) (L2):
+      ∀T1,T2. ❪G,L2❫ ⊢ T1 ⬈ T2 →
+      ∀L1. L1 ≛[T1] L2 → L1 ≛[T2] L2.
 /4 width=5 by cpx_reqx_conf_sn, reqx_sym/ qed-.
index d0b3e453e1ab52d7137604408a3e06e4e1bc8331..02146309fead4ad02e2dada921fd0167475a1181 100644 (file)
 include "basic_2/rt_transition/cpg_simple.ma".
 include "basic_2/rt_transition/cpx.ma".
 
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS **************)
 
 (* Inversion lemmas with simple terms ***************************************)
 
-lemma cpx_inv_appl1_simple: ∀h,G,L,V1,T1,U. ❪G,L❫ ⊢ ⓐV1.T1 ⬈[h] U → 𝐒❪T1❫ →
-                            ∃∃V2,T2. ❪G,L❫ ⊢ V1 ⬈[h] V2 & ❪G,L❫ ⊢ T1 ⬈[h] T2 &
-                                     U = ⓐV2.T2.
-#h #G #L #V1 #T1 #U * #c #H #HT1 elim (cpg_inv_appl1_simple … H) -H
+lemma cpx_inv_appl1_simple (G) (L):
+      ∀V1,T1,U. ❪G,L❫ ⊢ ⓐV1.T1 ⬈ U → 𝐒❪T1❫ →
+      ∃∃V2,T2. ❪G,L❫ ⊢ V1 ⬈ V2 & ❪G,L❫ ⊢ T1 ⬈ T2 & U = ⓐV2.T2.
+#G #L #V1 #T1 #U * #c #H #HT1 elim (cpg_inv_appl1_simple … H) -H
 /3 width=5 by ex3_2_intro, ex_intro/
 qed-.
index 3e31edb7e2d1832059e8b87b6b4c86643a74e62e..a648ae0e91349761ad3fad64b1048db818fbf18b 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/predsubtyproper_7.ma".
+include "basic_2/notation/relations/predsubtyproper_6.ma".
 include "static_2/s_transition/fqu.ma".
 include "static_2/static/reqx.ma".
 include "basic_2/rt_transition/lpr_lpx.ma".
 
 (* PROPER PARALLEL RST-TRANSITION FOR CLOSURES ******************************)
 
-inductive fpb (h) (G1) (L1) (T1): relation3 genv lenv term ≝
-| fpb_fqu: ∀G2,L2,T2. ❪G1,L1,T1❫ ⬂ ❪G2,L2,T2❫ → fpb G1 L1 T1 G2 L2 T2
-| fpb_cpx: ∀T2. ❪G1,L1❫ ⊢ T1 ⬈[h] T2 → (T1 ≛ T2 → ⊥) → fpb h G1 L1 T1 G1 L1 T2
-| fpb_lpx: ∀L2. ❪G1,L1❫ ⊢ ⬈[h] L2 → (L1 ≛[T1] L2 → ⊥) → fpb h G1 L1 T1 G1 L2 T1
+inductive fpb (G1) (L1) (T1): relation3 genv lenv term ≝
+| fpb_fqu: ∀G2,L2,T2. ❪G1,L1,T1❫ ⬂ ❪G2,L2,T2❫ → fpb G1 L1 T1 G2 L2 T2
+| fpb_cpx: ∀T2. ❪G1,L1❫ ⊢ T1 ⬈ T2 → (T1 ≛ T2 → ⊥) → fpb G1 L1 T1 G1 L1 T2
+| fpb_lpx: ∀L2. ❪G1,L1❫ ⊢ ⬈ L2 → (L1 ≛[T1] L2 → ⊥) → fpb G1 L1 T1 G1 L2 T1
 .
 
 interpretation
-   "proper parallel rst-transition (closure)"
-   'PRedSubTyProper h G1 L1 T1 G2 L2 T2 = (fpb h G1 L1 T1 G2 L2 T2).
+  "proper parallel rst-transition (closure)"
+  'PRedSubTyProper G1 L1 T1 G2 L2 T2 = (fpb G1 L1 T1 G2 L2 T2).
 
 (* Basic properties *********************************************************)
 
 (* Basic_2A1: includes: cpr_fpb *)
-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 cpm_fpb (h) (n) (G) (L):
+      ∀T1,T2. ❪G,L❫ ⊢ T1 ➡[h,n] T2 → (T1 ≛ T2 → ⊥) → ❪G,L,T1❫ ≻ ❪G,L,T2❫.
+/3 width=3 by fpb_cpx, cpm_fwd_cpx/ qed.
 
-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.
+lemma lpr_fpb (h) (G) (T):
+      ∀L1,L2. ❪G,L1❫ ⊢ ➡[h,0] L2 → (L1 ≛[T] L2 → ⊥) → ❪G,L1,T❫ ≻ ❪G,L2,T❫.
+/3 width=2 by fpb_lpx, lpr_fwd_lpx/ qed.
index 633b7c43cc99a4a0ff7b8ba4260022e984a0773c..04989deb0fa126dcdafa7a114277072261d10d43 100644 (file)
@@ -21,10 +21,11 @@ include "basic_2/rt_transition/fpb_reqx.ma".
 (* Properties with degree-based equivalence for closures ********************)
 
 (* Basic_2A1: uses: fleq_fpb_trans *)
-lemma feqx_fpb_trans: ∀h,F1,F2,K1,K2,T1,T2. ❪F1,K1,T1❫ ≛ ❪F2,K2,T2❫ →
-                      ∀G2,L2,U2. ❪F2,K2,T2❫ ≻[h] ❪G2,L2,U2❫ →
-                      ∃∃G1,L1,U1. ❪F1,K1,T1❫ ≻[h] ❪G1,L1,U1❫ & ❪G1,L1,U1❫ ≛ ❪G2,L2,U2❫.
-#h #F1 #F2 #K1 #K2 #T1 #T2 * -F2 -K2 -T2
+lemma feqx_fpb_trans:
+      ∀F1,F2,K1,K2,T1,T2. ❪F1,K1,T1❫ ≛ ❪F2,K2,T2❫ →
+      ∀G2,L2,U2. ❪F2,K2,T2❫ ≻ ❪G2,L2,U2❫ →
+      ∃∃G1,L1,U1. ❪F1,K1,T1❫ ≻ ❪G1,L1,U1❫ & ❪G1,L1,U1❫ ≛ ❪G2,L2,U2❫.
+#F1 #F2 #K1 #K2 #T1 #T2 * -F2 -K2 -T2
 #K2 #T2 #HK12 #HT12 #G2 #L2 #U2 #H12
 elim (teqx_fpb_trans … HT12 … H12) -T2 #K0 #T0 #H #HT0 #HK0
 elim (reqx_fpb_trans … HK12 … H) -K2 #L0 #U0 #H #HUT0 #HLK0
@@ -35,9 +36,10 @@ qed-.
 (* Inversion lemmas with degree-based equivalence for closures **************)
 
 (* Basic_2A1: uses: fpb_inv_fleq *)
-lemma fpb_inv_feqx: ∀h,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≻[h] ❪G2,L2,T2❫ →
-                    ❪G1,L1,T1❫ ≛ ❪G2,L2,T2❫ → ⊥.
-#h #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
+lemma fpb_inv_feqx:
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≻ ❪G2,L2,T2❫ →
+      ❪G1,L1,T1❫ ≛ ❪G2,L2,T2❫ → ⊥.
+#G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
 [ #G2 #L2 #T2 #H12 #H elim (feqx_inv_gen_sn … H) -H
   /3 width=11 by reqx_fwd_length, fqu_inv_teqx/
 | #T2 #_ #HnT #H elim (feqx_inv_gen_sn … H) -H /2 width=1 by/
index 0cc359e488f30c3e010d21cf4f02cefa7a1e2632..9e75e8f961a8826869dddbabdf74a5ccab953b07 100644 (file)
@@ -21,10 +21,11 @@ include "basic_2/rt_transition/fpb.ma".
 
 (* Properties with sort-irrelevant equivalence for local environments *******)
 
-lemma teqx_fpb_trans: ∀h,U2,U1. U2 ≛ U1 →
-                      ∀G1,G2,L1,L2,T1. ❪G1,L1,U1❫ ≻[h] ❪G2,L2,T1❫ →
-                      ∃∃L,T2. ❪G1,L1,U2❫ ≻[h] ❪G2,L,T2❫ & T2 ≛ T1 & L ≛[T1] L2.
-#h #U2 #U1 #HU21 #G1 #G2 #L1 #L2 #T1 * -G2 -L2 -T1
+lemma teqx_fpb_trans:
+      ∀U2,U1. U2 ≛ U1 →
+      ∀G1,G2,L1,L2,T1. ❪G1,L1,U1❫ ≻ ❪G2,L2,T1❫ →
+      ∃∃L,T2. ❪G1,L1,U2❫ ≻ ❪G2,L,T2❫ & T2 ≛ T1 & L ≛[T1] L2.
+#U2 #U1 #HU21 #G1 #G2 #L1 #L2 #T1 * -G2 -L2 -T1
 [ #G2 #L2 #T1 #H
   elim (teqx_fqu_trans … H … HU21) -H
   /3 width=5 by fpb_fqu, ex3_2_intro/
@@ -36,10 +37,11 @@ lemma teqx_fpb_trans: ∀h,U2,U1. U2 ≛ U1 →
 qed-.
 
 (* Basic_2A1: was just: lleq_fpb_trans *)
-lemma reqx_fpb_trans: ∀h,F,K1,K2,T. K1 ≛[T] K2 →
-                      ∀G,L2,U. ❪F,K2,T❫ ≻[h] ❪G,L2,U❫ →
-                      ∃∃L1,U0. ❪F,K1,T❫ ≻[h] ❪G,L1,U0❫ & U0 ≛ U & L1 ≛[U] L2.
-#h #F #K1 #K2 #T #HT #G #L2 #U * -G -L2 -U
+lemma reqx_fpb_trans:
+      ∀F,K1,K2,T. K1 ≛[T] K2 →
+      ∀G,L2,U. ❪F,K2,T❫ ≻ ❪G,L2,U❫ →
+      ∃∃L1,U0. ❪F,K1,T❫ ≻ ❪G,L1,U0❫ & U0 ≛ U & L1 ≛[U] L2.
+#F #K1 #K2 #T #HT #G #L2 #U * -G -L2 -U
 [ #G #L2 #U #H2 elim (reqx_fqu_trans … H2 … HT) -K2
   /3 width=5 by fpb_fqu, ex3_2_intro/
 | #U #HTU #HnTU elim (reqx_cpx_trans … HT … HTU) -HTU
index 3e3472135b3c4a9ad727cfe5b86c0cd83984f555..1290c29706433f869f09adacabdbe1d748cff3b3 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/predsubty_7.ma".
+include "basic_2/notation/relations/predsubty_6.ma".
 include "static_2/static/feqx.ma".
 include "static_2/s_transition/fquq.ma".
 include "basic_2/rt_transition/lpr_lpx.ma".
@@ -20,28 +20,30 @@ include "basic_2/rt_transition/lpr_lpx.ma".
 (* PARALLEL RST-TRANSITION FOR CLOSURES *************************************)
 
 (* Basic_2A1: includes: fleq_fpbq fpbq_lleq *)
-inductive fpbq (h) (G1) (L1) (T1): relation3 genv lenv term ≝
-| fpbq_fquq: ∀G2,L2,T2. ❪G1,L1,T1❫ ⬂⸮ ❪G2,L2,T2❫ → fpbq G1 L1 T1 G2 L2 T2
-| fpbq_cpx : ∀T2. ❪G1,L1❫ ⊢ T1 ⬈[h] T2 → fpbq h G1 L1 T1 G1 L1 T2
-| fpbq_lpx : ∀L2. ❪G1,L1❫ ⊢ ⬈[h] L2 → fpbq h G1 L1 T1 G1 L2 T1
-| fpbq_feqx: ∀G2,L2,T2. ❪G1,L1,T1❫ ≛ ❪G2,L2,T2❫ → fpbq G1 L1 T1 G2 L2 T2
+inductive fpbq (G1) (L1) (T1): relation3 genv lenv term ≝
+| fpbq_fquq: ∀G2,L2,T2. ❪G1,L1,T1❫ ⬂⸮ ❪G2,L2,T2❫ → fpbq G1 L1 T1 G2 L2 T2
+| fpbq_cpx : ∀T2. ❪G1,L1❫ ⊢ T1 ⬈ T2 → fpbq G1 L1 T1 G1 L1 T2
+| fpbq_lpx : ∀L2. ❪G1,L1❫ ⊢ ⬈ L2 → fpbq G1 L1 T1 G1 L2 T1
+| fpbq_feqx: ∀G2,L2,T2. ❪G1,L1,T1❫ ≛ ❪G2,L2,T2❫ → fpbq G1 L1 T1 G2 L2 T2
 .
 
 interpretation
-   "parallel rst-transition (closure)"
-   'PRedSubTy h G1 L1 T1 G2 L2 T2 = (fpbq h G1 L1 T1 G2 L2 T2).
+  "parallel rst-transition (closure)"
+  'PRedSubTy G1 L1 T1 G2 L2 T2 = (fpbq G1 L1 T1 G2 L2 T2).
 
 (* Basic properties *********************************************************)
 
-lemma fpbq_refl (h): tri_reflexive … (fpbq h).
+lemma fpbq_refl: tri_reflexive … fpbq.
 /2 width=1 by fpbq_cpx/ qed.
 
 (* Basic_2A1: includes: cpr_fpbq *)
-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 cpm_fpbq (h) (n) (G) (L):
+      ∀T1,T2. ❪G,L❫ ⊢ T1 ➡[h,n] T2 → ❪G,L,T1❫ ≽ ❪G,L,T2❫.
+/3 width=3 by fpbq_cpx, cpm_fwd_cpx/ qed.
 
-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.
+lemma lpr_fpbq (h) (G) (T):
+      ∀L1,L2. ❪G,L1❫ ⊢ ➡[h,0] L2 → ❪G,L1,T❫ ≽ ❪G,L2,T❫.
+/3 width=2 by fpbq_lpx, lpr_fwd_lpx/ qed.
 
 (* Basic_2A1: removed theorems 2:
               fpbq_fpbqa fpbqa_inv_fpbq
index 8f3a348ac1b301b37daa8e41f58f99b3336882b1..5df72f4af96ac8a7610b8fe00cfc1b822a118a89 100644 (file)
@@ -21,8 +21,9 @@ include "basic_2/rt_transition/fpbq.ma".
 
 (* Properties with atomic arity assignment for terms ************************)
 
-lemma fpbq_aaa_conf: ∀h,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≽[h] ❪G2,L2,T2❫ →
-                     ∀A1. ❪G1,L1❫ ⊢ T1 ⁝ A1 → ∃A2. ❪G2,L2❫ ⊢ T2 ⁝ A2.
-#h #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
+lemma fpbq_aaa_conf:
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≽ ❪G2,L2,T2❫ →
+      ∀A1. ❪G1,L1❫ ⊢ T1 ⁝ A1 → ∃A2. ❪G2,L2❫ ⊢ T2 ⁝ A2.
+#G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
 /3 width=8 by lpx_aaa_conf, cpx_aaa_conf, aaa_feqx_conf, aaa_fquq_conf, ex_intro/
 qed-.
index 0ec2597f1e3ca71c3156f4df3dea8b8b55b9d813..e49faa0eb0845f8a6a2f77200039fb4966a369f2 100644 (file)
@@ -19,24 +19,27 @@ include "basic_2/rt_transition/fpbq.ma".
 
 (* Properties with proper parallel rst-transition for closures **************)
 
-lemma fpb_fpbq: ∀h,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≻[h] ❪G2,L2,T2❫ →
-                ❪G1,L1,T1❫ ≽[h] ❪G2,L2,T2❫.
-#h #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
+lemma fpb_fpbq:
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≻ ❪G2,L2,T2❫ →
+      ❪G1,L1,T1❫ ≽ ❪G2,L2,T2❫.
+#G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
 /3 width=1 by fpbq_fquq, fpbq_cpx, fpbq_lpx, fqu_fquq/
 qed.
 
 (* Basic_2A1: fpb_fpbq_alt *)
-lemma fpb_fpbq_fneqx: ∀h,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≻[h] ❪G2,L2,T2❫ →
-                       ∧∧ ❪G1,L1,T1❫ ≽[h] ❪G2,L2,T2❫ & (❪G1,L1,T1❫ ≛ ❪G2,L2,T2❫ → ⊥).
+lemma fpb_fpbq_fneqx:
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≻ ❪G2,L2,T2❫ →
+      ∧∧ ❪G1,L1,T1❫ ≽ ❪G2,L2,T2❫ & (❪G1,L1,T1❫ ≛ ❪G2,L2,T2❫ → ⊥).
 /3 width=10 by fpb_fpbq, fpb_inv_feqx, conj/ qed-.
 
 (* Inversrion lemmas with proper parallel rst-transition for closures *******)
 
 (* Basic_2A1: uses: fpbq_ind_alt *)
-lemma fpbq_inv_fpb: ∀h,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≽[h] ❪G2,L2,T2❫ →
-                    ∨∨ ❪G1,L1,T1❫ ≛ ❪G2,L2,T2❫
-                     | ❪G1,L1,T1❫ ≻[h] ❪G2,L2,T2❫.
-#h #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
+lemma fpbq_inv_fpb:
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≽ ❪G2,L2,T2❫ →
+      ∨∨ ❪G1,L1,T1❫ ≛ ❪G2,L2,T2❫
+       | ❪G1,L1,T1❫ ≻ ❪G2,L2,T2❫.
+#G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
 [ #G2 #L2 #T2 * [2: * #H1 #H2 #H3 destruct ]
   /3 width=1 by fpb_fqu, feqx_intro_sn, or_intror, or_introl/
 | #T2 #H elim (teqx_dec T1 T2)
@@ -48,8 +51,9 @@ lemma fpbq_inv_fpb: ∀h,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≽[h] ❪G2,L2,T2❫
 qed-.
 
 (* Basic_2A1: fpbq_inv_fpb_alt *)
-lemma fpbq_fneqx_inv_fpb: ∀h,G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≽[h] ❪G2,L2,T2❫ →
-                           (❪G1,L1,T1❫ ≛ ❪G2,L2,T2❫ → ⊥) → ❪G1,L1,T1❫ ≻[h] ❪G2,L2,T2❫.
-#h #G1 #G2 #L1 #L2 #T1 #T2 #H #H0
+lemma fpbq_fneqx_inv_fpb:
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ≽ ❪G2,L2,T2❫ →
+      (❪G1,L1,T1❫ ≛ ❪G2,L2,T2❫ → ⊥) → ❪G1,L1,T1❫ ≻ ❪G2,L2,T2❫.
+#G1 #G2 #L1 #L2 #T1 #T2 #H #H0
 elim (fpbq_inv_fpb … H) -H // #H elim H0 -H0 //
 qed-.
index 65bc4fa37b9da454cbe31cfcd4961e3213566746..ac7a93d628ea55ba6f92a5c31bd86fa8c7172dc0 100644 (file)
@@ -18,8 +18,9 @@ include "basic_2/rt_transition/lpr.ma".
 
 (* PARALLEL R-TRANSITION FOR FULL LOCAL ENVIRONMENTS ************************)
 
-(* Forward lemmas with unbound parallel rt-transition for ref local envs ****)
+(* Forward lemmas with extended parallel rt-transition for ref local envs ***)
 
 (* Basic_2A1: was: lpr_lpx *)
-lemma lpr_fwd_lpx (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ➡[h,0] L2 → ❪G,L1❫ ⊢ ⬈[h] L2.
+lemma lpr_fwd_lpx (h) (G):
+      ∀L1,L2. ❪G,L1❫ ⊢ ➡[h,0] L2 → ❪G,L1❫ ⊢ ⬈ L2.
 /3 width=3 by cpm_fwd_cpx, lex_co/ qed-.
index 4363fb103de399deaf28adc127d39411ab31b3f0..3878acfd8ad969239bcc745fd8af674400ca6ee1 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/predtysn_4.ma".
+include "basic_2/notation/relations/predtysn_3.ma".
 include "static_2/relocation/lex.ma".
 include "basic_2/rt_transition/cpx_ext.ma".
 
-(* UNBOUND PARALLEL RT-TRANSITION FOR FULL LOCAL ENVIRONMENTS ***************)
+(* EXTENDED PARALLEL RT-TRANSITION FOR FULL LOCAL ENVIRONMENTS **************)
 
-definition lpx (h) (G): relation lenv ≝
-                        lex (cpx h G).
+definition lpx (G): relation lenv ≝ lex (cpx G).
 
 interpretation
-   "unbound parallel rt-transition on all entries (local environment)"
-   'PRedTySn h G L1 L2 = (lpx h G L1 L2).
+  "extended parallel rt-transition on all entries (local environment)"
+  'PRedTySn G L1 L2 = (lpx G L1 L2).
 
 (* Basic properties *********************************************************)
 
-lemma lpx_bind (h) (G): ∀K1,K2. ❪G,K1❫ ⊢ ⬈[h] K2 →
-                        ∀I1,I2. ❪G,K1❫ ⊢ I1 ⬈[h] I2 → ❪G,K1.ⓘ[I1]❫ ⊢ ⬈[h] K2.ⓘ[I2].
+lemma lpx_bind (G):
+      ∀K1,K2. ❪G,K1❫ ⊢ ⬈ K2 → ∀I1,I2. ❪G,K1❫ ⊢ I1 ⬈ I2 →
+      ❪G,K1.ⓘ[I1]❫ ⊢ ⬈ K2.ⓘ[I2].
 /2 width=1 by lex_bind/ qed.
 
-lemma lpx_refl (h) (G): reflexive … (lpx h G).
+lemma lpx_refl (G): reflexive … (lpx G).
 /2 width=1 by lex_refl/ qed.
 
 (* Advanced properties ******************************************************)
 
-lemma lpx_bind_refl_dx (h) (G): ∀K1,K2. ❪G,K1❫ ⊢ ⬈[h] K2 →
-                                ∀I. ❪G,K1.ⓘ[I]❫ ⊢ ⬈[h] K2.ⓘ[I].
+lemma lpx_bind_refl_dx (G):
+      ∀K1,K2. ❪G,K1❫ ⊢ ⬈ K2 →
+      ∀I. ❪G,K1.ⓘ[I]❫ ⊢ ⬈ K2.ⓘ[I].
 /2 width=1 by lex_bind_refl_dx/ qed.
 
-lemma lpx_pair (h) (G): ∀K1,K2. ❪G,K1❫ ⊢ ⬈[h] K2 → ∀V1,V2. ❪G,K1❫ ⊢ V1 ⬈[h] V2 →
-                        ∀I.❪G,K1.ⓑ[I]V1❫ ⊢ ⬈[h] K2.ⓑ[I]V2.
+lemma lpx_pair (G):
+      ∀K1,K2. ❪G,K1❫ ⊢ ⬈ K2 → ∀V1,V2. ❪G,K1❫ ⊢ V1 ⬈ V2 →
+      ∀I.❪G,K1.ⓑ[I]V1❫ ⊢ ⬈ K2.ⓑ[I]V2.
 /2 width=1 by lex_pair/ qed.
 
 (* Basic inversion lemmas ***************************************************)
 
 (* Basic_2A1: was: lpx_inv_atom1 *)
-lemma lpx_inv_atom_sn (h) (G): ∀L2. ❪G,⋆❫ ⊢ ⬈[h] L2 → L2 = ⋆.
+lemma lpx_inv_atom_sn (G):
+      ∀L2. ❪G,⋆❫ ⊢ ⬈ L2 → L2 = ⋆.
 /2 width=2 by lex_inv_atom_sn/ qed-.
 
-lemma lpx_inv_bind_sn (h) (G): ∀I1,L2,K1. ❪G,K1.ⓘ[I1]❫ ⊢ ⬈[h] L2 →
-                               ∃∃I2,K2. ❪G,K1❫ ⊢ ⬈[h] K2 & ❪G,K1❫ ⊢ I1 ⬈[h] I2 &
-                                        L2 = K2.ⓘ[I2].
+lemma lpx_inv_bind_sn (G):
+      ∀I1,L2,K1. ❪G,K1.ⓘ[I1]❫ ⊢ ⬈ L2 →
+      ∃∃I2,K2. ❪G,K1❫ ⊢ ⬈ K2 & ❪G,K1❫ ⊢ I1 ⬈ I2 & L2 = K2.ⓘ[I2].
 /2 width=1 by lex_inv_bind_sn/ qed-.
 
 (* Basic_2A1: was: lpx_inv_atom2 *)
-lemma lpx_inv_atom_dx: ∀h,G,L1. ❪G,L1❫ ⊢ ⬈[h] ⋆ → L1 = ⋆.
+lemma lpx_inv_atom_dx (G):
+      ∀L1. ❪G,L1❫ ⊢ ⬈ ⋆ → L1 = ⋆.
 /2 width=2 by lex_inv_atom_dx/ qed-.
 
-lemma lpx_inv_bind_dx (h) (G): ∀I2,L1,K2. ❪G,L1❫ ⊢ ⬈[h] K2.ⓘ[I2] →
-                               ∃∃I1,K1. ❪G,K1❫ ⊢ ⬈[h] K2 & ❪G,K1❫ ⊢ I1 ⬈[h] I2 &
-                                        L1 = K1.ⓘ[I1].
+lemma lpx_inv_bind_dx (G):
+      ∀I2,L1,K2. ❪G,L1❫ ⊢ ⬈ K2.ⓘ[I2] →
+      ∃∃I1,K1. ❪G,K1❫ ⊢ ⬈ K2 & ❪G,K1❫ ⊢ I1 ⬈ I2 & L1 = K1.ⓘ[I1].
 /2 width=1 by lex_inv_bind_dx/ qed-.
 
 (* Advanced inversion lemmas ************************************************)
 
-lemma lpx_inv_unit_sn (h) (G): ∀I,L2,K1. ❪G,K1.ⓤ[I]❫ ⊢ ⬈[h] L2 →
-                               ∃∃K2. ❪G,K1❫ ⊢ ⬈[h] K2 & L2 = K2.ⓤ[I].
+lemma lpx_inv_unit_sn (G):
+      ∀I,L2,K1. ❪G,K1.ⓤ[I]❫ ⊢ ⬈ L2 →
+      ∃∃K2. ❪G,K1❫ ⊢ ⬈ K2 & L2 = K2.ⓤ[I].
 /2 width=1 by lex_inv_unit_sn/ qed-.
 
 (* Basic_2A1: was: lpx_inv_pair1 *)
-lemma lpx_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 &
-                                        L2 = K2.ⓑ[I]V2.
+lemma lpx_inv_pair_sn (G):
+      ∀I,L2,K1,V1. ❪G,K1.ⓑ[I]V1❫ ⊢ ⬈ L2 →
+      ∃∃K2,V2. ❪G,K1❫ ⊢ ⬈ K2 & ❪G,K1❫ ⊢ V1 ⬈ V2 & L2 = K2.ⓑ[I]V2.
 /2 width=1 by lex_inv_pair_sn/ qed-.
 
-lemma lpx_inv_unit_dx (h) (G): ∀I,L1,K2. ❪G,L1❫ ⊢ ⬈[h] K2.ⓤ[I] →
-                               ∃∃K1. ❪G,K1❫ ⊢ ⬈[h] K2 & L1 = K1.ⓤ[I].
+lemma lpx_inv_unit_dx (G):
+      ∀I,L1,K2. ❪G,L1❫ ⊢ ⬈ K2.ⓤ[I] →
+      ∃∃K1. ❪G,K1❫ ⊢ ⬈ K2 & L1 = K1.ⓤ[I].
 /2 width=1 by lex_inv_unit_dx/ qed-.
 
 (* Basic_2A1: was: lpx_inv_pair2 *)
-lemma lpx_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.
+lemma lpx_inv_pair_dx (G):
+      ∀I,L1,K2,V2. ❪G,L1❫ ⊢ ⬈ K2.ⓑ[I]V2 →
+      ∃∃K1,V1. ❪G,K1❫ ⊢ ⬈ K2 & ❪G,K1❫ ⊢ V1 ⬈ V2 & L1 = K1.ⓑ[I]V1.
 /2 width=1 by lex_inv_pair_dx/ qed-.
 
-lemma lpx_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 lpx_inv_pair (G):
+      ∀I1,I2,L1,L2,V1,V2. ❪G,L1.ⓑ[I1]V1❫ ⊢ ⬈ L2.ⓑ[I2]V2 →
+      ∧∧ ❪G,L1❫ ⊢ ⬈ L2 & ❪G,L1❫ ⊢ V1 ⬈ V2 & I1 = I2.
 /2 width=1 by lex_inv_pair/ qed-.
index 4cb7cbe86c3a460fd6645b208dc56ad96bbb15fb..2652783e75b3a5808526519377569143d9aa628d 100644 (file)
@@ -16,18 +16,19 @@ include "static_2/static/aaa_drops.ma".
 include "static_2/static/lsuba_aaa.ma".
 include "basic_2/rt_transition/lpx_drops.ma".
 
-(* UNBOUND PARALLEL RT-TRANSITION FOR FULL LOCAL ENVIRONMENTS ***************)
+(* EXTENDED PARALLEL RT-TRANSITION FOR FULL LOCAL ENVIRONMENTS **************)
 
 (* Properties with atomic arity assignment for terms ************************)
 
 (* Note: lemma 500 *)
 (* Basic_2A1: was: cpx_lpx_aaa_conf *)
-lemma cpx_aaa_conf_lpx (h): ∀G,L1,T1,A. ❪G,L1❫ ⊢ T1 ⁝ A →
-                            ∀T2. ❪G,L1❫ ⊢ T1 ⬈[h] T2 →
-                            ∀L2. ❪G,L1❫ ⊢ ⬈[h] L2 → ❪G,L2❫ ⊢ T2 ⁝ A.
-#h #G #L1 #T1 #A #H elim H -G -L1 -T1 -A
-[ #G #L1 #s #X #H
-  elim (cpx_inv_sort1 … H) -H #H destruct //
+lemma cpx_aaa_conf_lpx (G) (L1):
+      ∀T1,A. ❪G,L1❫ ⊢ T1 ⁝ A →
+      ∀T2. ❪G,L1❫ ⊢ T1 ⬈ T2 →
+      ∀L2. ❪G,L1❫ ⊢ ⬈ L2 → ❪G,L2❫ ⊢ T2 ⁝ A.
+#G #L1 #T1 #A #H elim H -G -L1 -T1 -A
+[ #G #L1 #s1 #X #H
+  elim (cpx_inv_sort1 … H) -H #s2 #H destruct //
 | #I #G #K1 #V1 #B #_ #IH #X #HX #Y #HY
   elim (lpx_inv_pair_sn … HY) -HY #K2 #V2 #HK12 #HV12 #H destruct
   elim (cpx_inv_zero1_pair … HX) -HX
@@ -74,8 +75,9 @@ lemma cpx_aaa_conf_lpx (h): ∀G,L1,T1,A. ❪G,L1❫ ⊢ T1 ⁝ A →
 ]
 qed-.
 
-lemma cpx_aaa_conf (h): ∀G,L. Conf3 … (aaa G L) (cpx h G L).
+lemma cpx_aaa_conf (G) (L): Conf3 … (aaa G L) (cpx G L).
 /2 width=7 by cpx_aaa_conf_lpx/ qed-.
 
-lemma lpx_aaa_conf (h): ∀G,T. Conf3 … (λL. aaa G L T) (lpx h G).
+lemma lpx_aaa_conf (G):
+      ∀T. Conf3 … (λL. aaa G L T) (lpx G).
 /2 width=7 by cpx_aaa_conf_lpx/ qed-.
index 21577aab4beaf1398a54b27b08f9d7003fc732da..9c6a060b866a413e41fdf457623d8e25533c427e 100644 (file)
@@ -21,15 +21,15 @@ include "basic_2/rt_transition/lpx.ma".
 (* Properties with generic slicing for local environments *******************)
 
 (* Basic_2A1: was: drop_lpx_trans *)
-lemma drops_lpx_trans (h) (G): dedropable_sn (cpx h G).
+lemma drops_lpx_trans (G): dedropable_sn (cpx G).
 /3 width=6 by lex_liftable_dedropable_sn, cpx_lifts_sn/ qed-.
 
 (* Inversion lemmas with generic slicing for local environments *************)
 
 (* Basic_2A1: was: lpx_drop_conf *)
-lemma lpx_drops_conf (h) (G): dropable_sn (cpx h G).
+lemma lpx_drops_conf (G): dropable_sn (cpx G).
 /2 width=3 by lex_dropable_sn/ qed-.
 
 (* Basic_2A1: was: lpx_drop_trans_O1 *)
-lemma lpx_drops_trans (h) (G): dropable_dx (cpx h G).
+lemma lpx_drops_trans (G): dropable_dx (cpx G).
 /2 width=3 by lex_dropable_dx/ qed-.
index 23e08858ceda58eeca0fca8fd1a6c22f5255ea54..1198a5fed0346f3898083a413a48ed724bd9467b 100644 (file)
@@ -19,10 +19,11 @@ include "basic_2/rt_transition/lpx.ma".
 
 (* Properties with extended structural successor for closures ***************)
 
-lemma lpx_fqu_trans (h) (b): ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂[b] ❪G2,L2,T2❫ →
-                             ∀K1. ❪G1,K1❫ ⊢ ⬈[h] L1 →
-                             ∃∃K2,T. ❪G1,K1❫ ⊢ T1 ⬈[h] T & ❪G1,K1,T❫ ⬂[b] ❪G2,K2,T2❫ & ❪G2,K2❫ ⊢ ⬈[h] L2.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
+lemma lpx_fqu_trans (b):
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂[b] ❪G2,L2,T2❫ →
+      ∀K1. ❪G1,K1❫ ⊢ ⬈ L1 →
+      ∃∃K2,T. ❪G1,K1❫ ⊢ T1 ⬈ T & ❪G1,K1,T❫ ⬂[b] ❪G2,K2,T2❫ & ❪G2,K2❫ ⊢ ⬈ L2.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
 [ #I #G #K #V #K1 #H
   elim (lpx_inv_pair_dx … H) -H #K0 #V0 #HK0 #HV0 #H destruct
   elim (lifts_total V (𝐔❨1❩)) #T #HVT
@@ -37,10 +38,11 @@ lemma lpx_fqu_trans (h) (b): ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂[b] ❪G2,L
 ]
 qed-.
 
-lemma fqu_lpx_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❫.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
+lemma fqu_lpx_trans (b):
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂[b] ❪G2,L2,T2❫ →
+      ∀K2. ❪G2,L2❫ ⊢ ⬈ K2 →
+      ∃∃K1,T. ❪G1,L1❫ ⊢ ⬈ K1 & ❪G1,L1❫ ⊢ T1 ⬈ T & ❪G1,K1,T❫ ⬂[b] ❪G2,K2,T2❫.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
 [ /3 width=5 by lpx_bind_refl_dx, fqu_lref_O, ex3_2_intro/
 | /3 width=5 by cpx_pair_sn, fqu_pair_sn, ex3_2_intro/
 | #p #I #G2 #L2 #V2 #T2 #Hb #X #H
@@ -56,19 +58,21 @@ qed-.
 
 (* Properties with extended optional structural successor for closures ******)
 
-lemma lpx_fquq_trans (h) (b): ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂⸮[b] ❪G2,L2,T2❫ →
-                              ∀K1. ❪G1,K1❫ ⊢ ⬈[h] L1 →
-                              ∃∃K2,T. ❪G1,K1❫ ⊢ T1 ⬈[h] T & ❪G1,K1,T❫ ⬂⸮[b] ❪G2,K2,T2❫ & ❪G2,K2❫ ⊢ ⬈[h] L2.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H #K1 #HKL1 cases H -H
+lemma lpx_fquq_trans (b):
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂⸮[b] ❪G2,L2,T2❫ →
+      ∀K1. ❪G1,K1❫ ⊢ ⬈ L1 →
+      ∃∃K2,T. ❪G1,K1❫ ⊢ T1 ⬈ T & ❪G1,K1,T❫ ⬂⸮[b] ❪G2,K2,T2❫ & ❪G2,K2❫ ⊢ ⬈ L2.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H #K1 #HKL1 cases H -H
 [ #H12 elim (lpx_fqu_trans … H12 … HKL1) -L1 /3 width=5 by fqu_fquq, ex3_2_intro/
 | * #H1 #H2 #H3 destruct /2 width=5 by ex3_2_intro/
 ]
 qed-.
 
-lemma fquq_lpx_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❫.
-#h #b #G1 #G2 #L1 #L2 #T1 #T2 #H #K2 #HLK2 cases H -H
+lemma fquq_lpx_trans (b):
+      ∀G1,G2,L1,L2,T1,T2. ❪G1,L1,T1❫ ⬂⸮[b] ❪G2,L2,T2❫ →
+      ∀K2. ❪G2,L2❫ ⊢ ⬈ K2 →
+      ∃∃K1,T. ❪G1,L1❫ ⊢ ⬈ K1 & ❪G1,L1❫ ⊢ T1 ⬈ T & ❪G1,K1,T❫ ⬂⸮[b] ❪G2,K2,T2❫.
+#b #G1 #G2 #L1 #L2 #T1 #T2 #H #K2 #HLK2 cases H -H
 [ #H12 elim (fqu_lpx_trans … H12 … HLK2) /3 width=5 by fqu_fquq, ex3_2_intro/
 | * #H1 #H2 #H3 destruct /2 width=5 by ex3_2_intro/
 ]
index 4f90ed805489f07ce8a0c3d576e849a5793da785..14a30512fd2149db2f61405b78020931a3d703f3 100644 (file)
 
 include "basic_2/rt_transition/rpx_lpx.ma".
 
-(* UNBOUND PARALLEL RT-TRANSITION FOR FULL LOCAL ENVIRONMENTS ***************)
+(* EXTENDED PARALLEL RT-TRANSITION FOR FULL LOCAL ENVIRONMENTS **************)
 
 (* Forward lemmas with free variables inclusion for restricted closures *****)
 
 (* Basic_2A1: uses: lpx_cpx_frees_trans *)
-lemma lpx_cpx_conf_fsge (h) (G): ∀L0,T0,T1. ❪G,L0❫ ⊢ T0 ⬈[h] T1 →
-                                 ∀L2. ❪G,L0❫ ⊢ ⬈[h] L2 → ❪L2,T1❫ ⊆ ❪L0,T0❫.
+lemma lpx_cpx_conf_fsge (G):
+      ∀L0,T0,T1. ❪G,L0❫ ⊢ T0 ⬈ T1 →
+      ∀L2. ❪G,L0❫ ⊢ ⬈ L2 → ❪L2,T1❫ ⊆ ❪L0,T0❫.
 /3 width=4 by rpx_cpx_conf_fsge, lpx_rpx/ qed-.
 
 (* Basic_2A1: uses: lpx_frees_trans *)
-lemma lpx_fsge_comp (h) (G): ∀L0,L2,T0. ❪G,L0❫ ⊢ ⬈[h] L2 → ❪L2,T0❫ ⊆ ❪L0,T0❫.
+lemma lpx_fsge_comp (G):
+      ∀L0,L2,T0. ❪G,L0❫ ⊢ ⬈ L2 → ❪L2,T0❫ ⊆ ❪L0,T0❫.
 /2 width=4 by lpx_cpx_conf_fsge/ qed-.
index 2332d68aa113722ecf8ca76a2d8957376a1133ff..aae2d8972d47a40d79350731c6eb0e5921ebb9f0 100644 (file)
 include "static_2/relocation/lex_length.ma".
 include "basic_2/rt_transition/lpx.ma".
 
-(* UNBOUND PARALLEL RT-TRANSITION FOR FULL LOCAL ENVIRONMENTS ***************)
+(* EXTENDED PARALLEL RT-TRANSITION FOR FULL LOCAL ENVIRONMENTS **************)
 
 (* Forward lemmas with length for local environments ************************)
 
-lemma lpx_fwd_length (h) (G): ∀L1,L2. ❪G,L1❫ ⊢ ⬈[h] L2 → |L1| = |L2|.
+lemma lpx_fwd_length (G):
+      ∀L1,L2. ❪G,L1❫ ⊢ ⬈ L2 → |L1| = |L2|.
 /2 width=2 by lex_fwd_length/ qed-.
index 36c97f983e3f83cf90b27fd4616a87c5a4702f68..f75050ec6ef240cf3bea8880b152728c3a86d59b 100644 (file)
@@ -16,15 +16,15 @@ include "static_2/static/reqx_req.ma".
 include "basic_2/rt_transition/rpx_reqx.ma".
 include "basic_2/rt_transition/rpx_lpx.ma".
 
-(* UNBOUND PARALLEL RT-TRANSITION FOR FULL LOCAL ENVIRONMENTS ***************)
+(* EXTENDED PARALLEL RT-TRANSITION FOR FULL LOCAL ENVIRONMENTS **************)
 
 (* Properties with sort-irrelevant equivalence for local environments *******)
 
 (* Basic_2A1: uses: lleq_lpx_trans *)
-lemma reqx_lpx_trans (h) (G): ∀L2,K2. ❪G,L2❫ ⊢ ⬈[h] K2 →
-                              ∀L1. ∀T:term. L1 ≛[T] L2 →
-                              ∃∃K1. ❪G,L1❫ ⊢ ⬈[h] K1 & K1 ≛[T] K2.
-#h #G #L2 #K2 #HLK2 #L1 #T #HL12
+lemma reqx_lpx_trans (G):
+      ∀L2,K2. ❪G,L2❫ ⊢ ⬈ K2 → ∀L1. ∀T:term. L1 ≛[T] L2 →
+      ∃∃K1. ❪G,L1❫ ⊢ ⬈ K1 & K1 ≛[T] K2.
+#G #L2 #K2 #HLK2 #L1 #T #HL12
 lapply (lpx_rpx … T HLK2) -HLK2 #HLK2
 elim (reqx_rpx_trans … HLK2 … HL12) -L2 #K #H #HK2
 elim (rpx_inv_lpx_req … H) -H #K1 #HLK1 #HK1
index b3c8ba2fd43dec6fe786116bd215b73e09182263..c127801613e705d1ec70b7ce80388d9b68591f5f 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/predtysn_5.ma".
+include "basic_2/notation/relations/predtysn_4.ma".
 include "static_2/static/rex.ma".
 include "basic_2/rt_transition/cpx_ext.ma".
 
-(* UNBOUND PARALLEL RT-TRANSITION FOR REFERRED LOCAL ENVIRONMENTS ***********)
+(* EXTENDED PARALLEL RT-TRANSITION FOR REFERRED LOCAL ENVIRONMENTS **********)
 
-definition rpx (h) (G): relation3 term lenv lenv ≝
-                        rex (cpx h G).
+definition rpx (G): relation3 term lenv lenv ≝
+           rex (cpx G).
 
 interpretation
-   "unbound parallel rt-transition on referred entries (local environment)"
-   'PRedTySn h T G L1 L2 = (rpx h G T L1 L2).
+  "extended parallel rt-transition on referred entries (local environment)"
+  'PRedTySn T G L1 L2 = (rpx G T L1 L2).
 
 (* Basic properties ***********************************************************)
 
-lemma rpx_atom: ∀h,I,G. ❪G,⋆❫ ⊢ ⬈[h,⓪[I]] ⋆.
+lemma rpx_atom (G):
+      ∀I. ❪G,⋆❫ ⊢ ⬈[⓪[I]] ⋆.
 /2 width=1 by rex_atom/ qed.
 
-lemma rpx_sort: ∀h,I1,I2,G,L1,L2,s.
-                ❪G,L1❫ ⊢ ⬈[h,⋆s] L2 → ❪G,L1.ⓘ[I1]❫ ⊢ ⬈[h,⋆s] L2.ⓘ[I2].
+lemma rpx_sort (G):
+      ∀I1,I2,L1,L2,s.
+      ❪G,L1❫ ⊢ ⬈[⋆s] L2 → ❪G,L1.ⓘ[I1]❫ ⊢ ⬈[⋆s] L2.ⓘ[I2].
 /2 width=1 by rex_sort/ qed.
 
-lemma rpx_pair: ∀h,I,G,L1,L2,V1,V2.
-                ❪G,L1❫ ⊢ ⬈[h,V1] L2 → ❪G,L1❫ ⊢ V1 ⬈[h] V2 → ❪G,L1.ⓑ[I]V1❫ ⊢ ⬈[h,#0] L2.ⓑ[I]V2.
+lemma rpx_pair (G):
+      ∀I,L1,L2,V1,V2.
+      ❪G,L1❫ ⊢ ⬈[V1] L2 → ❪G,L1❫ ⊢ V1 ⬈ V2 → ❪G,L1.ⓑ[I]V1❫ ⊢ ⬈[#0] L2.ⓑ[I]V2.
 /2 width=1 by rex_pair/ qed.
 
-lemma rpx_lref: ∀h,I1,I2,G,L1,L2,i.
-                ❪G,L1❫ ⊢ ⬈[h,#i] L2 → ❪G,L1.ⓘ[I1]❫ ⊢ ⬈[h,#↑i] L2.ⓘ[I2].
+lemma rpx_lref (G):
+      ∀I1,I2,L1,L2,i.
+      ❪G,L1❫ ⊢ ⬈[#i] L2 → ❪G,L1.ⓘ[I1]❫ ⊢ ⬈[#↑i] L2.ⓘ[I2].
 /2 width=1 by rex_lref/ qed.
 
-lemma rpx_gref: ∀h,I1,I2,G,L1,L2,l.
-                ❪G,L1❫ ⊢ ⬈[h,§l] L2 → ❪G,L1.ⓘ[I1]❫ ⊢ ⬈[h,§l] L2.ⓘ[I2].
+lemma rpx_gref (G):
+      ∀I1,I2,L1,L2,l.
+      ❪G,L1❫ ⊢ ⬈[§l] L2 → ❪G,L1.ⓘ[I1]❫ ⊢ ⬈[§l] L2.ⓘ[I2].
 /2 width=1 by rex_gref/ qed.
 
-lemma rpx_bind_repl_dx: ∀h,I,I1,G,L1,L2,T.
-                        ❪G,L1.ⓘ[I]❫ ⊢ ⬈[h,T] L2.ⓘ[I1] →
-                        ∀I2. ❪G,L1❫ ⊢ I ⬈[h] I2 →
-                        ❪G,L1.ⓘ[I]❫ ⊢ ⬈[h,T] L2.ⓘ[I2].
+lemma rpx_bind_repl_dx (G):
+      ∀I,I1,L1,L2,T. ❪G,L1.ⓘ[I]❫ ⊢ ⬈[T] L2.ⓘ[I1] →
+      ∀I2. ❪G,L1❫ ⊢ I ⬈ I2 → ❪G,L1.ⓘ[I]❫ ⊢ ⬈[T] L2.ⓘ[I2].
 /2 width=2 by rex_bind_repl_dx/ qed-.
 
 (* Basic inversion lemmas ***************************************************)
 
-lemma rpx_inv_atom_sn: ∀h,G,Y2,T. ❪G,⋆❫ ⊢ ⬈[h,T] Y2 → Y2 = ⋆.
+lemma rpx_inv_atom_sn (G):
+      ∀Y2,T. ❪G,⋆❫ ⊢ ⬈[T] Y2 → Y2 = ⋆.
 /2 width=3 by rex_inv_atom_sn/ qed-.
 
-lemma rpx_inv_atom_dx: ∀h,G,Y1,T. ❪G,Y1❫ ⊢ ⬈[h,T] ⋆ → Y1 = ⋆.
+lemma rpx_inv_atom_dx (G):
+      ∀Y1,T. ❪G,Y1❫ ⊢ ⬈[T] ⋆ → Y1 = ⋆.
 /2 width=3 by rex_inv_atom_dx/ qed-.
 
-lemma rpx_inv_sort: ∀h,G,Y1,Y2,s. ❪G,Y1❫ ⊢ ⬈[h,⋆s] Y2 →
-                    ∨∨ Y1 = ⋆ ∧ Y2 = ⋆
-                     | ∃∃I1,I2,L1,L2. ❪G,L1❫ ⊢ ⬈[h,⋆s] L2 &
-                                      Y1 = L1.ⓘ[I1] & Y2 = L2.ⓘ[I2].
+lemma rpx_inv_sort (G):
+      ∀Y1,Y2,s. ❪G,Y1❫ ⊢ ⬈[⋆s] Y2 →
+      ∨∨ ∧∧ Y1 = ⋆ & Y2 = ⋆
+       | ∃∃I1,I2,L1,L2. ❪G,L1❫ ⊢ ⬈[⋆s] L2 & Y1 = L1.ⓘ[I1] & Y2 = L2.ⓘ[I2].
 /2 width=1 by rex_inv_sort/ qed-.
 
-lemma rpx_inv_lref: ∀h,G,Y1,Y2,i. ❪G,Y1❫ ⊢ ⬈[h,#↑i] Y2 →
-                    ∨∨ Y1 = ⋆ ∧ Y2 = ⋆
-                     | ∃∃I1,I2,L1,L2. ❪G,L1❫ ⊢ ⬈[h,#i] L2 &
-                                      Y1 = L1.ⓘ[I1] & Y2 = L2.ⓘ[I2].
+lemma rpx_inv_lref (G):
+      ∀Y1,Y2,i. ❪G,Y1❫ ⊢ ⬈[#↑i] Y2 →
+      ∨∨ ∧∧ Y1 = ⋆ & Y2 = ⋆
+       | ∃∃I1,I2,L1,L2. ❪G,L1❫ ⊢ ⬈[#i] L2 & Y1 = L1.ⓘ[I1] & Y2 = L2.ⓘ[I2].
 /2 width=1 by rex_inv_lref/ qed-.
 
-lemma rpx_inv_gref: ∀h,G,Y1,Y2,l. ❪G,Y1❫ ⊢ ⬈[h,§l] Y2 →
-                    ∨∨ Y1 = ⋆ ∧ Y2 = ⋆
-                     | ∃∃I1,I2,L1,L2. ❪G,L1❫ ⊢ ⬈[h,§l] L2 &
-                                      Y1 = L1.ⓘ[I1] & Y2 = L2.ⓘ[I2].
+lemma rpx_inv_gref (G):
+      ∀Y1,Y2,l. ❪G,Y1❫ ⊢ ⬈[§l] Y2 →
+      ∨∨ ∧∧ Y1 = ⋆ & Y2 = ⋆
+       | ∃∃I1,I2,L1,L2. ❪G,L1❫ ⊢ ⬈[§l] L2 & Y1 = L1.ⓘ[I1] & Y2 = L2.ⓘ[I2].
 /2 width=1 by rex_inv_gref/ qed-.
 
-lemma rpx_inv_bind: ∀h,p,I,G,L1,L2,V,T. ❪G,L1❫ ⊢ ⬈[h,ⓑ[p,I]V.T] L2 →
-                    ∧∧ ❪G,L1❫ ⊢ ⬈[h,V] L2 & ❪G,L1.ⓑ[I]V❫ ⊢ ⬈[h,T] L2.ⓑ[I]V.
+lemma rpx_inv_bind (G):
+      ∀p,I,L1,L2,V,T. ❪G,L1❫ ⊢ ⬈[ⓑ[p,I]V.T] L2 →
+      ∧∧ ❪G,L1❫ ⊢ ⬈[V] L2 & ❪G,L1.ⓑ[I]V❫ ⊢ ⬈[T] L2.ⓑ[I]V.
 /2 width=2 by rex_inv_bind/ qed-.
 
-lemma rpx_inv_flat: ∀h,I,G,L1,L2,V,T. ❪G,L1❫ ⊢ ⬈[h,ⓕ[I]V.T] L2 →
-                    ∧∧ ❪G,L1❫ ⊢ ⬈[h,V] L2 & ❪G,L1❫ ⊢ ⬈[h,T] L2.
+lemma rpx_inv_flat (G):
+      ∀I,L1,L2,V,T. ❪G,L1❫ ⊢ ⬈[ⓕ[I]V.T] L2 →
+      ∧∧ ❪G,L1❫ ⊢ ⬈[V] L2 & ❪G,L1❫ ⊢ ⬈[T] L2.
 /2 width=2 by rex_inv_flat/ qed-.
 
 (* Advanced inversion lemmas ************************************************)
 
-lemma rpx_inv_sort_bind_sn: ∀h,I1,G,Y2,L1,s. ❪G,L1.ⓘ[I1]❫ ⊢ ⬈[h,⋆s] Y2 →
-                            ∃∃I2,L2. ❪G,L1❫ ⊢ ⬈[h,⋆s] L2 & Y2 = L2.ⓘ[I2].
+lemma rpx_inv_sort_bind_sn (G):
+      ∀I1,Y2,L1,s. ❪G,L1.ⓘ[I1]❫ ⊢ ⬈[⋆s] Y2 →
+      ∃∃I2,L2. ❪G,L1❫ ⊢ ⬈[⋆s] L2 & Y2 = L2.ⓘ[I2].
 /2 width=2 by rex_inv_sort_bind_sn/ qed-.
 
-lemma rpx_inv_sort_bind_dx: ∀h,I2,G,Y1,L2,s. ❪G,Y1❫ ⊢ ⬈[h,⋆s] L2.ⓘ[I2] →
-                            ∃∃I1,L1. ❪G,L1❫ ⊢ ⬈[h,⋆s] L2 & Y1 = L1.ⓘ[I1].
+lemma rpx_inv_sort_bind_dx (G):
+      ∀I2,Y1,L2,s. ❪G,Y1❫ ⊢ ⬈[⋆s] L2.ⓘ[I2] →
+      ∃∃I1,L1. ❪G,L1❫ ⊢ ⬈[⋆s] L2 & Y1 = L1.ⓘ[I1].
 /2 width=2 by rex_inv_sort_bind_dx/ qed-.
 
-lemma rpx_inv_zero_pair_sn: ∀h,I,G,Y2,L1,V1. ❪G,L1.ⓑ[I]V1❫ ⊢ ⬈[h,#0] Y2 →
-                            ∃∃L2,V2. ❪G,L1❫ ⊢ ⬈[h,V1] L2 & ❪G,L1❫ ⊢ V1 ⬈[h] V2 &
-                                     Y2 = L2.ⓑ[I]V2.
+lemma rpx_inv_zero_pair_sn (G):
+      ∀I,Y2,L1,V1. ❪G,L1.ⓑ[I]V1❫ ⊢ ⬈[#0] Y2 →
+      ∃∃L2,V2. ❪G,L1❫ ⊢ ⬈[V1] L2 & ❪G,L1❫ ⊢ V1 ⬈ V2 & Y2 = L2.ⓑ[I]V2.
 /2 width=1 by rex_inv_zero_pair_sn/ qed-.
 
-lemma rpx_inv_zero_pair_dx: ∀h,I,G,Y1,L2,V2. ❪G,Y1❫ ⊢ ⬈[h,#0] L2.ⓑ[I]V2 →
-                            ∃∃L1,V1. ❪G,L1❫ ⊢ ⬈[h,V1] L2 & ❪G,L1❫ ⊢ V1 ⬈[h] V2 &
-                                     Y1 = L1.ⓑ[I]V1.
+lemma rpx_inv_zero_pair_dx (G):
+      ∀I,Y1,L2,V2. ❪G,Y1❫ ⊢ ⬈[#0] L2.ⓑ[I]V2 →
+      ∃∃L1,V1. ❪G,L1❫ ⊢ ⬈[V1] L2 & ❪G,L1❫ ⊢ V1 ⬈ V2 & Y1 = L1.ⓑ[I]V1.
 /2 width=1 by rex_inv_zero_pair_dx/ qed-.
 
-lemma rpx_inv_lref_bind_sn: ∀h,I1,G,Y2,L1,i. ❪G,L1.ⓘ[I1]❫ ⊢ ⬈[h,#↑i] Y2 →
-                            ∃∃I2,L2. ❪G,L1❫ ⊢ ⬈[h,#i] L2 & Y2 = L2.ⓘ[I2].
+lemma rpx_inv_lref_bind_sn (G):
+      ∀I1,Y2,L1,i. ❪G,L1.ⓘ[I1]❫ ⊢ ⬈[#↑i] Y2 →
+      ∃∃I2,L2. ❪G,L1❫ ⊢ ⬈[#i] L2 & Y2 = L2.ⓘ[I2].
 /2 width=2 by rex_inv_lref_bind_sn/ qed-.
 
-lemma rpx_inv_lref_bind_dx: ∀h,I2,G,Y1,L2,i. ❪G,Y1❫ ⊢ ⬈[h,#↑i] L2.ⓘ[I2] →
-                            ∃∃I1,L1. ❪G,L1❫ ⊢ ⬈[h,#i] L2 & Y1 = L1.ⓘ[I1].
+lemma rpx_inv_lref_bind_dx (G):
+      ∀I2,Y1,L2,i. ❪G,Y1❫ ⊢ ⬈[#↑i] L2.ⓘ[I2] →
+      ∃∃I1,L1. ❪G,L1❫ ⊢ ⬈[#i] L2 & Y1 = L1.ⓘ[I1].
 /2 width=2 by rex_inv_lref_bind_dx/ qed-.
 
-lemma rpx_inv_gref_bind_sn: ∀h,I1,G,Y2,L1,l. ❪G,L1.ⓘ[I1]❫ ⊢ ⬈[h,§l] Y2 →
-                            ∃∃I2,L2. ❪G,L1❫ ⊢ ⬈[h,§l] L2 & Y2 = L2.ⓘ[I2].
+lemma rpx_inv_gref_bind_sn (G):
+      ∀I1,Y2,L1,l. ❪G,L1.ⓘ[I1]❫ ⊢ ⬈[§l] Y2 →
+      ∃∃I2,L2. ❪G,L1❫ ⊢ ⬈[§l] L2 & Y2 = L2.ⓘ[I2].
 /2 width=2 by rex_inv_gref_bind_sn/ qed-.
 
-lemma rpx_inv_gref_bind_dx: ∀h,I2,G,Y1,L2,l. ❪G,Y1❫ ⊢ ⬈[h,§l] L2.ⓘ[I2] →
-                            ∃∃I1,L1. ❪G,L1❫ ⊢ ⬈[h,§l] L2 & Y1 = L1.ⓘ[I1].
+lemma rpx_inv_gref_bind_dx (G):
+      ∀I2,Y1,L2,l. ❪G,Y1❫ ⊢ ⬈[§l] L2.ⓘ[I2] →
+      ∃∃I1,L1. ❪G,L1❫ ⊢ ⬈[§l] L2 & Y1 = L1.ⓘ[I1].
 /2 width=2 by rex_inv_gref_bind_dx/ qed-.
 
 (* Basic forward lemmas *****************************************************)
 
-lemma rpx_fwd_pair_sn: ∀h,I,G,L1,L2,V,T.
-                       ❪G,L1❫ ⊢ ⬈[h,②[I]V.T] L2 → ❪G,L1❫ ⊢ ⬈[h,V] L2.
+lemma rpx_fwd_pair_sn (G):
+      ∀I,L1,L2,V,T. ❪G,L1❫ ⊢ ⬈[②[I]V.T] L2 → ❪G,L1❫ ⊢ ⬈[V] L2.
 /2 width=3 by rex_fwd_pair_sn/ qed-.
 
-lemma rpx_fwd_bind_dx: ∀h,p,I,G,L1,L2,V,T.
-                       ❪G,L1❫ ⊢ ⬈[h,ⓑ[p,I]V.T] L2 → ❪G,L1.ⓑ[I]V❫ ⊢ ⬈[h,T] L2.ⓑ[I]V.
+lemma rpx_fwd_bind_dx (G):
+      ∀p,I,L1,L2,V,T. ❪G,L1❫ ⊢ ⬈[ⓑ[p,I]V.T] L2 → ❪G,L1.ⓑ[I]V❫ ⊢ ⬈[T] L2.ⓑ[I]V.
 /2 width=2 by rex_fwd_bind_dx/ qed-.
 
-lemma rpx_fwd_flat_dx: ∀h,I,G,L1,L2,V,T.
-                       ❪G,L1❫ ⊢ ⬈[h,ⓕ[I]V.T] L2 → ❪G,L1❫ ⊢ ⬈[h,T] L2.
+lemma rpx_fwd_flat_dx (G):
+      ∀I,L1,L2,V,T. ❪G,L1❫ ⊢ ⬈[ⓕ[I]V.T] L2 → ❪G,L1❫ ⊢ ⬈[T] L2.
 /2 width=3 by rex_fwd_flat_dx/ qed-.
index ae9319282a50898c99146529f8c8a711c777e169..5e37a7213de391f62354f5ac231fc9e1c262ea9a 100644 (file)
@@ -16,23 +16,23 @@ include "static_2/static/rex_drops.ma".
 include "basic_2/rt_transition/cpx_drops.ma".
 include "basic_2/rt_transition/rpx.ma".
 
-(* UNBOUND PARALLEL RT-TRANSITION FOR REFERRED LOCAL ENVIRONMENTS ***********)
+(* EXTENDED PARALLEL RT-TRANSITION FOR REFERRED LOCAL ENVIRONMENTS **********)
 
 (* Properties with generic slicing for local environments *******************)
 
-lemma rpx_lifts_sn (h) (G): f_dedropable_sn (cpx h G).
+lemma rpx_lifts_sn (G): f_dedropable_sn (cpx G).
 /3 width=6 by rex_liftable_dedropable_sn, cpx_lifts_sn/ qed-.
 
 (* Inversion lemmas with generic slicing for local environments *************)
 
-lemma rpx_inv_lifts_sn (h) (G): f_dropable_sn (cpx h G).
+lemma rpx_inv_lifts_sn (G): f_dropable_sn (cpx G).
 /2 width=5 by rex_dropable_sn/ qed-.
 
-lemma rpx_inv_lifts_dx (h) (G): f_dropable_dx (cpx h G).
+lemma rpx_inv_lifts_dx (G): f_dropable_dx (cpx G).
 /2 width=5 by rex_dropable_dx/ qed-.
 
-lemma rpx_inv_lifts_bi (h) (G):
-                       ∀L1,L2,U. ❪G,L1❫ ⊢ ⬈[h,U] L2 → ∀b,f. 𝐔❪f❫ →
-                       ∀K1,K2. ⇩*[b,f] L1 ≘ K1 → ⇩*[b,f] L2 ≘ K2 →
-                       ∀T. ⇧*[f]T ≘ U → ❪G,K1❫ ⊢ ⬈[h,T] K2.
+lemma rpx_inv_lifts_bi (G):
+      ∀L1,L2,U. ❪G,L1❫ ⊢ ⬈[U] L2 → ∀b,f. 𝐔❪f❫ →
+      ∀K1,K2. ⇩*[b,f] L1 ≘ K1 → ⇩*[b,f] L2 ≘ K2 →
+      ∀T. ⇧*[f]T ≘ U → ❪G,K1❫ ⊢ ⬈[T] K2.
 /2 width=10 by rex_inv_lifts_bi/ qed-.
index 29e81b1dd2c3c3c1c3acd9ccd90c11524b418501..e98884c8bfe7a3474d725dc4bb329ec8734cf4a0 100644 (file)
 include "static_2/static/rex_fqup.ma".
 include "basic_2/rt_transition/rpx.ma".
 
-(* UNBOUND PARALLEL RT-TRANSITION FOR REFERRED LOCAL ENVIRONMENTS ***********)
+(* EXTENDED PARALLEL RT-TRANSITION FOR REFERRED LOCAL ENVIRONMENTS **********)
 
 (* Advanced properties ******************************************************)
 
-lemma rpx_refl: ∀h,G,T. reflexive … (rpx h G T).
+lemma rpx_refl (G):
+      ∀T. reflexive … (rpx G T).
 /2 width=1 by rex_refl/ qed.
 
-lemma rpx_pair_refl: ∀h,G,L,V1,V2. ❪G,L❫ ⊢ V1 ⬈[h] V2 →
-                     ∀I,T. ❪G,L.ⓑ[I]V1❫ ⊢ ⬈[h,T] L.ⓑ[I]V2.
+lemma rpx_pair_refl (G):
+      ∀L,V1,V2. ❪G,L❫ ⊢ V1 ⬈ V2 →
+      ∀I,T. ❪G,L.ⓑ[I]V1❫ ⊢ ⬈[T] L.ⓑ[I]V2.
 /2 width=1 by rex_pair_refl/ qed.
 
 (* Advanced inversion lemmas ************************************************)
 
-lemma rpx_inv_bind_void: ∀h,p,I,G,L1,L2,V,T. ❪G,L1❫ ⊢ ⬈[h,ⓑ[p,I]V.T] L2 →
-                         ∧∧ ❪G,L1❫ ⊢ ⬈[h,V] L2 & ❪G,L1.ⓧ❫ ⊢ ⬈[h,T] L2.ⓧ.
+lemma rpx_inv_bind_void (G):
+      ∀p,I,L1,L2,V,T. ❪G,L1❫ ⊢ ⬈[ⓑ[p,I]V.T] L2 →
+      ∧∧ ❪G,L1❫ ⊢ ⬈[V] L2 & ❪G,L1.ⓧ❫ ⊢ ⬈[T] L2.ⓧ.
 /2 width=3 by rex_inv_bind_void/ qed-.
 
 (* Advanced forward lemmas **************************************************)
 
-lemma rpx_fwd_bind_dx_void: ∀h,p,I,G,L1,L2,V,T.
-                            ❪G,L1❫ ⊢ ⬈[h,ⓑ[p,I]V.T] L2 → ❪G,L1.ⓧ❫ ⊢ ⬈[h,T] L2.ⓧ.
+lemma rpx_fwd_bind_dx_void (G):
+      ∀p,I,L1,L2,V,T. ❪G,L1❫ ⊢ ⬈[ⓑ[p,I]V.T] L2 → ❪G,L1.ⓧ❫ ⊢ ⬈[T] L2.ⓧ.
 /2 width=4 by rex_fwd_bind_dx_void/ qed-.
index 3bce5e5cc2f917ddc5284e08cba87f214835c018..d4769c8385ce58e634a184bbb7699f5845714aad 100644 (file)
@@ -24,13 +24,14 @@ include "basic_2/rt_transition/rpx_fqup.ma".
 
 (* Note: "❪L2, T1❫ ⊆ ❪L2, T0❫" does not hold *)
 (* Note: Take L0 = K0.ⓓ(ⓝW.V), L2 = K0.ⓓW, T0 = #0, T1 = ⇧[1]V *)
-(* Note: This invalidates rpxs_cpx_conf: "∀h, G. s_r_confluent1 … (cpx h G) (rpxs h G)" *)
-lemma rpx_cpx_conf_fsge (h) (G): ∀L0,T0,T1. ❪G,L0❫ ⊢ T0 ⬈[h] T1 →
-                                 ∀L2. ❪G,L0❫ ⊢⬈[h,T0] L2 → ❪L2,T1❫ ⊆ ❪L0,T0❫.
-#h #G0 #L0 #T0 @(fqup_wf_ind_eq (Ⓣ) … G0 L0 T0) -G0 -L0 -T0
+(* Note: This invalidates rpxs_cpx_conf: "∀G. s_r_confluent1 … (cpx G) (rpxs G)" *)
+lemma rpx_cpx_conf_fsge (G):
+      ∀L0,T0,T1. ❪G,L0❫ ⊢ T0 ⬈ T1 →
+      ∀L2. ❪G,L0❫ ⊢⬈[T0] L2 → ❪L2,T1❫ ⊆ ❪L0,T0❫.
+#G0 #L0 #T0 @(fqup_wf_ind_eq (Ⓣ) … G0 L0 T0) -G0 -L0 -T0
 #G #L #T #IH #G0 #L0 * *
-[ #s #HG #HL #HT #X #HX #Y #HY destruct -IH
-  elim (cpx_inv_sort1 … HX) -HX #H destruct
+[ #s0 #HG #HL #HT #X #HX #Y #HY destruct -IH
+  elim (cpx_inv_sort1 … HX) -HX #s1 #H destruct
   lapply (rpx_fwd_length … HY) -HY #H0
   /2 width=1 by fsle_sort_bi/
 | * [| #i ] #HG #HL #HT #X #HX #Y #HY destruct
@@ -113,26 +114,27 @@ lemma rpx_cpx_conf_fsge (h) (G): ∀L0,T0,T1. ❪G,L0❫ ⊢ T0 ⬈[h] T1 →
 ]
 qed-.
 
-lemma rpx_fsge_comp (h) (G): rex_fsge_compatible (cpx h G).
+lemma rpx_fsge_comp (G): rex_fsge_compatible (cpx G).
 /2 width=4 by rpx_cpx_conf_fsge/ qed-.
 
 (**) (* this section concerns cpx *)
 (* Properties with generic extension on referred entries ********************)
 
 (* Basic_2A1: uses: cpx_frees_trans *)
-lemma cpx_fsge_comp (h) (G): R_fsge_compatible (cpx h G).
+lemma cpx_fsge_comp (G): R_fsge_compatible (cpx G).
 /2 width=4 by rpx_cpx_conf_fsge/ qed-.
 
 (* Note: lemma 1000 *)
 (* Basic_2A1: uses: cpx_llpx_sn_conf *)
-lemma cpx_rex_conf (R) (h) (G): s_r_confluent1 … (cpx h G) (rex R).
+lemma cpx_rex_conf (R) (G): s_r_confluent1 … (cpx G) (rex R).
 /3 width=3 by fsge_rex_trans, cpx_fsge_comp/ qed-.
 
 (* Advanced properties ******************************************************)
 
-lemma rpx_cpx_conf (h) (G): s_r_confluent1 … (cpx h G) (rpx h G).
+lemma rpx_cpx_conf (G): s_r_confluent1 … (cpx G) (rpx G).
 /2 width=5 by cpx_rex_conf/ qed-.
 
-lemma rpx_cpx_conf_fsge_dx (h) (G): ∀L0,T0,T1. ❪G,L0❫ ⊢ T0 ⬈[h] T1 →
-                                    ∀L2. ❪G,L0❫ ⊢⬈[h,T0] L2 → ❪L2,T1❫ ⊆ ❪L0,T1❫.
+lemma rpx_cpx_conf_fsge_dx (G):
+      ∀L0,T0,T1. ❪G,L0❫ ⊢ T0 ⬈ T1 →
+      ∀L2. ❪G,L0❫ ⊢⬈[T0] L2 → ❪L2,T1❫ ⊆ ❪L0,T1❫.
 /3 width=5 by rpx_cpx_conf, rpx_fsge_comp/ qed-.
index 7f3bdc40d1c24db87cd9ab78c50e24bb96aad6d5..58034f1571ebcdde9225940c22cc5bf477252e77 100644 (file)
 include "static_2/static/rex_length.ma".
 include "basic_2/rt_transition/rpx.ma".
 
-(* UNBOUND PARALLEL RT-TRANSITION FOR REFERRED LOCAL ENVIRONMENTS ***********)
+(* EXTENDED PARALLEL RT-TRANSITION FOR REFERRED LOCAL ENVIRONMENTS **********)
 
 (* Forward lemmas with length for local environments ************************)
 
-lemma rpx_fwd_length: ∀h,G,L1,L2,T. ❪G,L1❫ ⊢ ⬈[h,T] L2 → |L1| = |L2|.
+lemma rpx_fwd_length (G):
+      ∀L1,L2,T. ❪G,L1❫ ⊢ ⬈[T] L2 → |L1| = |L2|.
 /2 width=3 by rex_fwd_length/ qed-.
 
 (* Inversion lemmas with length for local environments **********************)
 
-lemma rpx_inv_zero_length: ∀h,G,Y1,Y2. ❪G,Y1❫ ⊢ ⬈[h,#0] Y2 →
-                           ∨∨ ∧∧ Y1 = ⋆ & Y2 = ⋆
-                            | ∃∃I,L1,L2,V1,V2. ❪G,L1❫ ⊢ ⬈[h,V1] L2 &
-                                               ❪G,L1❫ ⊢ V1 ⬈[h] V2 &
-                                               Y1 = L1.ⓑ[I]V1 & Y2 = L2.ⓑ[I]V2
-                            | ∃∃I,L1,L2. |L1| = |L2| & Y1 = L1.ⓤ[I] & Y2 = L2.ⓤ[I].
+lemma rpx_inv_zero_length (G):
+      ∀Y1,Y2. ❪G,Y1❫ ⊢ ⬈[#0] Y2 →
+      ∨∨ ∧∧ Y1 = ⋆ & Y2 = ⋆
+       | ∃∃I,L1,L2,V1,V2. ❪G,L1❫ ⊢ ⬈[V1] L2 & ❪G,L1❫ ⊢ V1 ⬈ V2 & Y1 = L1.ⓑ[I]V1 & Y2 = L2.ⓑ[I]V2
+       | ∃∃I,L1,L2. |L1| = |L2| & Y1 = L1.ⓤ[I] & Y2 = L2.ⓤ[I].
 /2 width=1 by rex_inv_zero_length/ qed-.
index 7c8a4ae996807a73fbd171cce8ac2e8c347d5f58..cede8bf5296b71eab3f3a16bef43d9d2f27c3316 100644 (file)
@@ -16,20 +16,23 @@ include "static_2/static/rex_lex.ma".
 include "basic_2/rt_transition/rpx_fsle.ma".
 include "basic_2/rt_transition/lpx.ma".
 
-(* UNBOUND PARALLEL RT-TRANSITION FOR REFERRED LOCAL ENVIRONMENTS ***********)
+(* EXTENDED PARALLEL RT-TRANSITION FOR REFERRED LOCAL ENVIRONMENTS **********)
 
 (* Properties with syntactic equivalence for referred local environments ****)
 
-lemma fleq_rpx (h) (G): ∀L1,L2,T. L1 ≡[T] L2 → ❪G,L1❫ ⊢ ⬈[h,T] L2.
+lemma fleq_rpx (G):
+      ∀L1,L2,T. L1 ≡[T] L2 → ❪G,L1❫ ⊢ ⬈[T] L2.
 /2 width=1 by req_fwd_rex/ qed.
 
-(* Properties with unbound parallel rt-transition for full local envs *******)
+(* Properties with extended rt-transition for full local envs ***************)
 
-lemma lpx_rpx: ∀h,G,L1,L2,T. ❪G,L1❫ ⊢ ⬈[h] L2 → ❪G,L1❫ ⊢ ⬈[h,T] L2.
+lemma lpx_rpx (G):
+      ∀L1,L2,T. ❪G,L1❫ ⊢ ⬈ L2 → ❪G,L1❫ ⊢ ⬈[T] L2.
 /2 width=1 by rex_lex/ qed.
 
-(* Inversion lemmas with unbound parallel rt-transition for full local envs *)
+(* Inversion lemmas with extended rt-transition for full local envs *********)
 
-lemma rpx_inv_lpx_req: ∀h,G,L1,L2,T. ❪G,L1❫ ⊢ ⬈[h,T] L2 →
-                       ∃∃L. ❪G,L1❫ ⊢ ⬈[h] L & L ≡[T] L2.
+lemma rpx_inv_lpx_req (G):
+      ∀L1,L2,T. ❪G,L1❫ ⊢ ⬈[T] L2 →
+      ∃∃L. ❪G,L1❫ ⊢ ⬈ L & L ≡[T] L2.
 /3 width=3 by rpx_fsge_comp, rex_inv_lex_req/ qed-.
index 725ddde9a56ba63a4d886d8bc503af3cb1353dbe..19fc79235545f7d5247a93f99d4093cd16f47d74 100644 (file)
@@ -17,37 +17,41 @@ include "static_2/static/reqx_fqup.ma".
 include "static_2/static/reqx_reqx.ma".
 include "basic_2/rt_transition/rpx_fsle.ma".
 
-(* UNBOUND PARALLEL RT-TRANSITION FOR REFERRED LOCAL ENVIRONMENTS ***********)
+(* EXTENDED PARALLEL RT-TRANSITION FOR REFERRED LOCAL ENVIRONMENTS **********)
 
 (* Properties with sort-irrelevant equivalence for local environments *******)
 
-lemma rpx_pair_sn_split: ∀h,G,L1,L2,V. ❪G,L1❫ ⊢ ⬈[h,V] L2 → ∀I,T.
-                         ∃∃L. ❪G,L1❫ ⊢ ⬈[h,②[I]V.T] L & L ≛[V] L2.
+lemma rpx_pair_sn_split (G):
+      ∀L1,L2,V. ❪G,L1❫ ⊢ ⬈[V] L2 → ∀I,T.
+      ∃∃L. ❪G,L1❫ ⊢ ⬈[②[I]V.T] L & L ≛[V] L2.
 /3 width=5 by rpx_fsge_comp, rex_pair_sn_split/ qed-.
 
-lemma rpx_flat_dx_split: ∀h,G,L1,L2,T. ❪G,L1❫ ⊢ ⬈[h,T] L2 → ∀I,V.
-                         ∃∃L. ❪G,L1❫ ⊢ ⬈[h,ⓕ[I]V.T] L & L ≛[T] L2.
+lemma rpx_flat_dx_split (G):
+      ∀L1,L2,T. ❪G,L1❫ ⊢ ⬈[T] L2 → ∀I,V.
+      ∃∃L. ❪G,L1❫ ⊢ ⬈[ⓕ[I]V.T] L & L ≛[T] L2.
 /3 width=5 by rpx_fsge_comp, rex_flat_dx_split/ qed-.
 
-lemma rpx_bind_dx_split: ∀h,I,G,L1,L2,V1,T. ❪G,L1.ⓑ[I]V1❫ ⊢ ⬈[h,T] L2 → ∀p.
-                         ∃∃L,V. ❪G,L1❫ ⊢ ⬈[h,ⓑ[p,I]V1.T] L & L.ⓑ[I]V ≛[T] L2 & ❪G,L1❫ ⊢ V1 ⬈[h] V.
+lemma rpx_bind_dx_split (G):
+      ∀I,L1,L2,V1,T. ❪G,L1.ⓑ[I]V1❫ ⊢ ⬈[T] L2 → ∀p.
+      ∃∃L,V. ❪G,L1❫ ⊢ ⬈[ⓑ[p,I]V1.T] L & L.ⓑ[I]V ≛[T] L2 & ❪G,L1❫ ⊢ V1 ⬈ V.
 /3 width=5 by rpx_fsge_comp, rex_bind_dx_split/ qed-.
 
-lemma rpx_bind_dx_split_void: ∀h,G,K1,L2,T. ❪G,K1.ⓧ❫ ⊢ ⬈[h,T] L2 → ∀p,I,V.
-                              ∃∃K2. ❪G,K1❫ ⊢ ⬈[h,ⓑ[p,I]V.T] K2 & K2.ⓧ ≛[T] L2.
+lemma rpx_bind_dx_split_void (G):
+      ∀K1,L2,T. ❪G,K1.ⓧ❫ ⊢ ⬈[T] L2 → ∀p,I,V.
+      ∃∃K2. ❪G,K1❫ ⊢ ⬈[ⓑ[p,I]V.T] K2 & K2.ⓧ ≛[T] L2.
 /3 width=5 by rpx_fsge_comp, rex_bind_dx_split_void/ qed-.
 
-lemma rpx_teqx_conf: ∀h,G. s_r_confluent1 … cdeq (rpx h G).
+lemma rpx_teqx_conf (G): s_r_confluent1 … cdeq (rpx G).
 /2 width=5 by teqx_rex_conf/ qed-.
 
-lemma rpx_teqx_div: ∀h,T1,T2. T1 ≛ T2 →
-                    ∀G,L1,L2. ❪G,L1❫ ⊢ ⬈[h,T2] L2 → ❪G,L1❫ ⊢ ⬈[h,T1] L2.
+lemma rpx_teqx_div (G):
+      ∀T1,T2. T1 ≛ T2 → ∀L1,L2. ❪G,L1❫ ⊢ ⬈[T2] L2 → ❪G,L1❫ ⊢ ⬈[T1] L2.
 /2 width=5 by teqx_rex_div/ qed-.
 
-lemma cpx_teqx_conf_rex: ∀h,G. R_confluent2_rex … (cpx h G) cdeq (cpx h G) cdeq.
-#h #G #L0 #T0 #T1 #H @(cpx_ind … H) -G -L0 -T0 -T1 /2 width=3 by ex2_intro/
-[ #G #L0 #s0 #X0 #H0 #L1 #HL01 #L2 #HL02
-  elim (teqx_inv_sort1 … H0) -H0 #s1 #H destruct
+lemma cpx_teqx_conf_rex (G): R_confluent2_rex … (cpx G) cdeq (cpx G) cdeq.
+#G #L0 #T0 #T1 #H @(cpx_ind … H) -G -L0 -T0 -T1 /2 width=3 by ex2_intro/
+[ #G #L0 #s0 #s1 #X0 #H0 #L1 #HL01 #L2 #HL02
+  elim (teqx_inv_sort1 … H0) -H0 #s2 #H destruct
   /3 width=3 by teqx_sort, ex2_intro/
 | #I #G #K0 #V0 #V1 #W1 #_ #IH #HVW1 #T2 #H0 #L1 #H1 #L2 #H2
   >(teqx_inv_lref1 … H0) -H0
@@ -125,46 +129,46 @@ lemma cpx_teqx_conf_rex: ∀h,G. R_confluent2_rex … (cpx h G) cdeq (cpx h G) c
 ]
 qed-.
 
-lemma cpx_teqx_conf: ∀h,G,L. ∀T0:term. ∀T1. ❪G,L❫ ⊢ T0 ⬈[h] T1 →
-                     ∀T2. T0 ≛ T2 →
-                     ∃∃T. T1 ≛ T & ❪G,L❫ ⊢ T2 ⬈[h] T.
-#h #G #L #T0 #T1 #HT01 #T2 #HT02
+lemma cpx_teqx_conf (G) (L):
+      ∀T0:term. ∀T1. ❪G,L❫ ⊢ T0 ⬈ T1 → ∀T2. T0 ≛ T2 →
+      ∃∃T. T1 ≛ T & ❪G,L❫ ⊢ T2 ⬈ T.
+#G #L #T0 #T1 #HT01 #T2 #HT02
 elim (cpx_teqx_conf_rex … HT01 … HT02 L … L) -HT01 -HT02
 /2 width=3 by rex_refl, ex2_intro/
 qed-.
 
-lemma teqx_cpx_trans: ∀h,G,L,T2. ∀T0:term. T2 ≛ T0 →
-                      ∀T1. ❪G,L❫ ⊢ T0 ⬈[h] T1 →
-                      ∃∃T. ❪G,L❫ ⊢ T2 ⬈[h] T & T ≛ T1.
-#h #G #L #T2 #T0 #HT20 #T1 #HT01
+lemma teqx_cpx_trans (G) (L):
+      ∀T2. ∀T0:term. T2 ≛ T0 → ∀T1. ❪G,L❫ ⊢ T0 ⬈ T1 →
+      ∃∃T. ❪G,L❫ ⊢ T2 ⬈ T & T ≛ T1.
+#G #L #T2 #T0 #HT20 #T1 #HT01
 elim (cpx_teqx_conf … HT01 T2) -HT01 /3 width=3 by teqx_sym, ex2_intro/
 qed-.
 
 (* Basic_2A1: uses: cpx_lleq_conf *)
-lemma cpx_reqx_conf: ∀h,G,L0,T0,T1. ❪G,L0❫ ⊢ T0 ⬈[h] T1 →
-                     ∀L2. L0 ≛[T0] L2 →
-                     ∃∃T. ❪G,L2❫ ⊢ T0 ⬈[h] T & T1 ≛ T.
-#h #G #L0 #T0 #T1 #HT01 #L2 #HL02
+lemma cpx_reqx_conf (G):
+      ∀L0,T0,T1. ❪G,L0❫ ⊢ T0 ⬈ T1 → ∀L2. L0 ≛[T0] L2 →
+      ∃∃T. ❪G,L2❫ ⊢ T0 ⬈ T & T1 ≛ T.
+#G #L0 #T0 #T1 #HT01 #L2 #HL02
 elim (cpx_teqx_conf_rex … HT01 T0 … L0 … HL02) -HT01 -HL02
 /2 width=3 by rex_refl, ex2_intro/
 qed-.
 
 (* Basic_2A1: uses: lleq_cpx_trans *)
-lemma reqx_cpx_trans: ∀h,G,L2,L0,T0. L2 ≛[T0] L0 →
-                      ∀T1. ❪G,L0❫ ⊢ T0 ⬈[h] T1 →
-                      ∃∃T. ❪G,L2❫ ⊢ T0 ⬈[h] T & T ≛ T1.
-#h #G #L2 #L0 #T0 #HL20 #T1 #HT01
+lemma reqx_cpx_trans (G):
+      ∀L2,L0,T0. L2 ≛[T0] L0 → ∀T1. ❪G,L0❫ ⊢ T0 ⬈ T1 →
+      ∃∃T. ❪G,L2❫ ⊢ T0 ⬈ T & T ≛ T1.
+#G #L2 #L0 #T0 #HL20 #T1 #HT01
 elim (cpx_reqx_conf … HT01 L2) -HT01
 /3 width=3 by reqx_sym, teqx_sym, ex2_intro/
 qed-.
 
-lemma rpx_reqx_conf: ∀h,G,T. confluent2 … (rpx h G T) (reqx T).
+lemma rpx_reqx_conf (G) (T): confluent2 … (rpx G T) (reqx T).
 /3 width=6 by rpx_fsge_comp, reqx_fsge_comp, cpx_teqx_conf_rex, rex_conf/ qed-.
 
-lemma reqx_rpx_trans: ∀h,G,T,L2,K2. ❪G,L2❫ ⊢ ⬈[h,T] K2 →
-                      ∀L1. L1 ≛[T] L2 →
-                      ∃∃K1. ❪G,L1❫ ⊢ ⬈[h,T] K1 & K1 ≛[T] K2.
-#h #G #T #L2 #K2 #HLK2 #L1 #HL12
+lemma reqx_rpx_trans (G) (T):
+      ∀L2,K2. ❪G,L2❫ ⊢ ⬈[T] K2 → ∀L1. L1 ≛[T] L2 →
+      ∃∃K1. ❪G,L1❫ ⊢ ⬈[T] K1 & K1 ≛[T] K2.
+#G #T #L2 #K2 #HLK2 #L1 #HL12
 elim (rpx_reqx_conf … HLK2 L1)
 /3 width=3 by reqx_sym, ex2_intro/
 qed-.
index 85261b95a5810c0357db0466e626742ea5abfb14..ea6d4cf9428212ea2d5c30945990e02579033e3d 100644 (file)
 include "static_2/static/rex_rex.ma".
 include "basic_2/rt_transition/rpx.ma".
 
-(* UNBOUND PARALLEL RT-TRANSITION FOR REFERRED LOCAL ENVIRONMENTS ***********)
+(* EXTENDED PARALLEL RT-TRANSITION FOR REFERRED LOCAL ENVIRONMENTS **********)
 
 (* Main properties **********************************************************)
 
-theorem rpx_bind: ∀h,G,L1,L2,V1. ❪G,L1❫ ⊢ ⬈[h,V1] L2 →
-                  ∀I,V2,T. ❪G,L1.ⓑ[I]V1❫ ⊢ ⬈[h,T] L2.ⓑ[I]V2 →
-                  ∀p. ❪G,L1❫ ⊢ ⬈[h,ⓑ[p,I]V1.T] L2.
+theorem rpx_bind (G):
+        ∀L1,L2,V1. ❪G,L1❫ ⊢ ⬈[V1] L2 →
+        ∀I,V2,T. ❪G,L1.ⓑ[I]V1❫ ⊢ ⬈[T] L2.ⓑ[I]V2 →
+        ∀p. ❪G,L1❫ ⊢ ⬈[ⓑ[p,I]V1.T] L2.
 /2 width=2 by rex_bind/ qed.
 
-theorem rpx_flat: ∀h,G,L1,L2,V. ❪G,L1❫ ⊢ ⬈[h,V] L2 →
-                  ∀I,T. ❪G,L1❫ ⊢ ⬈[h,T] L2 → ❪G,L1❫ ⊢ ⬈[h,ⓕ[I]V.T] L2.
+theorem rpx_flat (G):
+        ∀L1,L2,V. ❪G,L1❫ ⊢ ⬈[V] L2 →
+        ∀I,T. ❪G,L1❫ ⊢ ⬈[T] L2 → ❪G,L1❫ ⊢ ⬈[ⓕ[I]V.T] L2.
 /2 width=1 by rex_flat/ qed.
 
-theorem rpx_bind_void: ∀h,G,L1,L2,V. ❪G,L1❫ ⊢ ⬈[h,V] L2 →
-                       ∀T. ❪G,L1.ⓧ❫ ⊢ ⬈[h,T] L2.ⓧ →
-                       ∀p,I. ❪G,L1❫ ⊢ ⬈[h,ⓑ[p,I]V.T] L2.
+theorem rpx_bind_void (G):
+        ∀L1,L2,V. ❪G,L1❫ ⊢ ⬈[V] L2 →
+        ∀T. ❪G,L1.ⓧ❫ ⊢ ⬈[T] L2.ⓧ →
+        ∀p,I. ❪G,L1❫ ⊢ ⬈[ⓑ[p,I]V.T] L2.
 /2 width=1 by rex_bind_void/ qed.
index 76f5373de334cad876eb53a9230378b6ca9bf4a2..fcabdb760ea8eef4719ebd1de1d2a0ee152c0d9c 100644 (file)
    </body>
    <table name="basic_2_sum"/>
 
+   <news class="gamma" date="2020-04-16.">
+         Sort hierarchy parameter removed from unbound rt-transition
+         (anniversary milestone).
+   </news>
    <news class="gamma" date="2020-02-27.">
          λδ-2B is repackaged without λδ-ground_2.
    </news>
index 385fa7433ea3a07925d843154cb7c03597a559e1..28eae7ce9c1be16a6bad79852230bf46b9339589 100644 (file)
@@ -78,20 +78,20 @@ table {
              [ [ "for terms" ] "cpms" + "( ❪?,?❫ ⊢ ? ➡*[?,?] ? )" "cpms_drops" + "cpms_lsubr" + "cpms_reqx" + "cpms_aaa" + "cpms_lpr" + "cpms_cpxs" + "cpms_fpbs" + "cpms_fpbg" + "cpms_cpms" * ]
           }
         ]
-        [ { "unbound context-sensitive parallel rst-computation" * } {
-             [ [ "strongly normalizing for closures" ] "fsb" + "( ≥𝐒[?] ❪?,?,?❫ )" "fsb_feqx" + "fsb_aaa" + "fsb_csx" + "fsb_fpbg" * ]
-             [ [ "proper for closures" ] "fpbg" + "( ❪?,?,?❫ >[?] ❪?,?,?❫ )" "fpbg_fqup" + "fpbg_cpxs" + "fpbg_lpxs" + "fpbg_fpbs" + "fpbg_fpbg" * ]
-             [ [ "for closures" ] "fpbs" + "( ❪?,?,?❫ ≥[?] ❪?,?,?❫ )" "fpbs_fqup" + "fpbs_fqus" + "fpbs_aaa" + "fpbs_cpx" + "fpbs_fpb" + "fpbs_cpxs" + "fpbs_lpxs" + "fpbs_csx" + "fpbs_fpbs" * ]
+        [ { "extended context-sensitive parallel rst-computation" * } {
+             [ [ "strongly normalizing for closures" ] "fsb" + "( ≥𝐒 ❪?,?,?❫ )" "fsb_feqx" + "fsb_aaa" + "fsb_csx" + "fsb_fpbg" * ]
+             [ [ "proper for closures" ] "fpbg" + "( ❪?,?,?❫ > ❪?,?,?❫ )" "fpbg_fqup" + "fpbg_cpxs" + "fpbg_lpxs" + "fpbg_fpbs" + "fpbg_fpbg" * ]
+             [ [ "for closures" ] "fpbs" + "( ❪?,?,?❫ ≥ ❪?,?,?❫ )" "fpbs_fqup" + "fpbs_fqus" + "fpbs_aaa" + "fpbs_cpx" + "fpbs_fpb" + "fpbs_cpxs" + "fpbs_lpxs" + "fpbs_csx" + "fpbs_fpbs" * ]
           }
         ]
-        [ { "unbound context-sensitive parallel rt-computation" * } {
-             [ [ "compatibility for lenvs" ] "jsx" + "( ? ⊢ ? ⊒[?] ? )" "jsx_drops" + "jsx_lsubr" + "jsx_csx" + "jsx_rsx" + "jsx_jsx" * ]
-             [ [ "strongly normalizing for lenvs on referred entries" ] "rsx" + "( ? ⊢ ⬈*𝐒[?,?] ? )" "rsx_length" + "rsx_drops" + "rsx_fqup" + "rsx_cpxs" + "rsx_csx" + "rsx_rsx" * ]
-             [ [ "strongly normalizing for term vectors" ] "csx_vector" + "( ❪?,?❫ ⊢ ⬈*𝐒[?] ? )" "csx_cnx_vector" + "csx_csx_vector" * ]
-             [ [ "strongly normalizing for terms" ] "csx" + "( ❪?,?❫ ⊢ ⬈*𝐒[?] ? )" "csx_simple" + "csx_simple_teqo" + "csx_drops" + "csx_fqus" + "csx_lsubr" + "csx_reqx" + "csx_feqx" + "csx_aaa" + "csx_gcp" + "csx_gcr" + "csx_lpx" + "csx_cnx" + "csx_fpbq" + "csx_cpxs" + "csx_lpxs" + "csx_csx" * ]
-             [ [ "for lenvs on all entries" ] "lpxs" + "( ❪?,?❫ ⊢ ⬈*[?] ? )" "lpxs_length" + "lpxs_drops" + "lpxs_reqx" + "lpxs_feqx" + "lpxs_aaa" + "lpxs_lpx" + "lpxs_cpxs" + "lpxs_lpxs" * ]
-             [ [ "for binders" ] "cpxs_ext" + "( ❪?,?❫ ⊢ ? ⬈*[?] ? )" * ]
-             [ [ "for terms" ] "cpxs" + "( ❪?,?❫ ⊢ ? ⬈*[?] ? )" "cpxs_teqx" + "cpxs_teqo" + "cpxs_teqo_vector" + "cpxs_drops" + "cpxs_fqus" + "cpxs_lsubr" + "cpxs_reqx" + "cpxs_feqx" + "cpxs_aaa" + "cpxs_lpx" + "cpxs_cnx" + "cpxs_cpxs" * ]
+        [ { "extended context-sensitive parallel rt-computation" * } {
+             [ [ "compatibility for lenvs" ] "jsx" + "( ? ⊢ ? ⊒ ? )" "jsx_drops" + "jsx_lsubr" + "jsx_csx" + "jsx_rsx" + "jsx_jsx" * ]
+             [ [ "strongly normalizing for lenvs on referred entries" ] "rsx" + "( ? ⊢ ⬈*𝐒[?] ? )" "rsx_length" + "rsx_drops" + "rsx_fqup" + "rsx_cpxs" + "rsx_csx" + "rsx_rsx" * ]
+             [ [ "strongly normalizing for term vectors" ] "csx_vector" + "( ❪?,?❫ ⊢ ⬈*𝐒 ? )" "csx_cnx_vector" + "csx_csx_vector" * ]
+             [ [ "strongly normalizing for terms" ] "csx" + "( ❪?,?❫ ⊢ ⬈*𝐒 ? )" "csx_simple" + "csx_simple_teqo" + "csx_drops" + "csx_fqus" + "csx_lsubr" + "csx_reqx" + "csx_feqx" + "csx_aaa" + "csx_gcp" + "csx_gcr" + "csx_lpx" + "csx_cnx" + "csx_fpbq" + "csx_cpxs" + "csx_lpxs" + "csx_csx" * ]
+             [ [ "for lenvs on all entries" ] "lpxs" + "( ❪?,?❫ ⊢ ⬈* ? )" "lpxs_length" + "lpxs_drops" + "lpxs_reqx" + "lpxs_feqx" + "lpxs_aaa" + "lpxs_lpx" + "lpxs_cpxs" + "lpxs_lpxs" * ]
+             [ [ "for binders" ] "cpxs_ext" + "( ❪?,?❫ ⊢ ? ⬈* ? )" * ]
+             [ [ "for terms" ] "cpxs" + "( ❪?,?❫ ⊢ ? ⬈* ? )" "cpxs_teqx" + "cpxs_teqo" + "cpxs_teqo_vector" + "cpxs_drops" + "cpxs_fqus" + "cpxs_lsubr" + "cpxs_reqx" + "cpxs_feqx" + "cpxs_aaa" + "cpxs_lpx" + "cpxs_cnx" + "cpxs_cpxs" * ]
           }
         ]
      }
@@ -113,17 +113,17 @@ table {
              [ [ "for terms" ] "cpm" + "( ❪?,?❫ ⊢ ? ➡[?,?] ? )" "cpm_simple" + "cpm_teqx" + "cpm_drops" + "cpm_lsubr" + "cpm_fsle" + "cpm_aaa" + "cpm_cpx" * ]
           }
         ]
-        [ { "unbound parallel rst-transition" * } {
-             [ [ "for closures" ] "fpbq" + "( ❪?,?,?❫ ≽[?] ❪?,?,?❫ )" "fpbq_aaa" + "fpbq_fpb" * ]
-             [ [ "proper for closures" ] "fpb" + "( ❪?,?,?❫ ≻[?] ❪?,?,?❫ )" "fpb_reqx" + "fpb_feqx" * ]
+        [ { "extended parallel rst-transition" * } {
+             [ [ "for closures" ] "fpbq" + "( ❪?,?,?❫ ≽ ❪?,?,?❫ )" "fpbq_aaa" + "fpbq_fpb" * ]
+             [ [ "proper for closures" ] "fpb" + "( ❪?,?,?❫ ≻ ❪?,?,?❫ )" "fpb_reqx" + "fpb_feqx" * ]
           }
         ]
-        [ { "unbound context-sensitive parallel rt-transition" * } {
-             [ [ "normal form for terms" ] "cnx" + "( ❪?,?❫ ⊢ ⬈𝐍[?] ? )" "cnx_simple" + "cnx_drops" + "cnx_basic" + "cnx_cnx" * ]
-             [ [ "for lenvs on referred entries" ] "rpx" + "( ❪?,?❫ ⊢ ⬈[?,?] ? )" "rpx_length" + "rpx_drops" + "rpx_fqup" + "rpx_fsle" + "rpx_reqx" + "rpx_lpx" + "rpx_rpx" * ]
-             [ [ "for lenvs on all entries" ] "lpx" + "( ❪?,?❫ ⊢ ⬈[?] ? )" "lpx_length" + "lpx_drops" + "lpx_fquq" + "lpx_fsle" + "lpx_reqx" + "lpx_aaa" * ]
-             [ [ "for binders" ] "cpx_ext" + "( ❪?,?❫ ⊢ ? ⬈[?] ? )" * ]
-             [ [ "for terms" ] "cpx" + "( ❪?,?❫ ⊢ ? ⬈[?] ? )" "cpx_simple" + "cpx_drops" + "cpx_drops_basic" + "cpx_fqus" + "cpx_lsubr" + "cpx_req" + "cpx_reqx" + "cpx_feqx" * ]
+        [ { "extended context-sensitive parallel rt-transition" * } {
+             [ [ "normal form for terms" ] "cnx" + "( ❪?,?❫ ⊢ ⬈𝐍 ? )" "cnx_simple" + "cnx_drops" + "cnx_basic" + "cnx_cnx" * ]
+             [ [ "for lenvs on referred entries" ] "rpx" + "( ❪?,?❫ ⊢ ⬈[?] ? )" "rpx_length" + "rpx_drops" + "rpx_fqup" + "rpx_fsle" + "rpx_reqx" + "rpx_lpx" + "rpx_rpx" * ]
+             [ [ "for lenvs on all entries" ] "lpx" + "( ❪?,?❫ ⊢ ⬈ ? )" "lpx_length" + "lpx_drops" + "lpx_fquq" + "lpx_fsle" + "lpx_reqx" + "lpx_aaa" * ]
+             [ [ "for binders" ] "cpx_ext" + "( ❪?,?❫ ⊢ ? ⬈ ? )" * ]
+             [ [ "for terms" ] "cpx" + "( ❪?,?❫ ⊢ ? ⬈ ? )" "cpx_simple" + "cpx_drops" + "cpx_drops_basic" + "cpx_fqus" + "cpx_lsubr" + "cpx_req" + "cpx_reqx" + "cpx_feqx" * ]
           }
         ]
         [ { "bound context-sensitive parallel rt-transition" * } {
index e11ea724d9ae4fcad88dd1464579af9d83721b75..6cbf869858e1d984d92a4233e7f78f504f63bdd2 100644 (file)
@@ -12,6 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
+include "basics/core_notation/exp_2.ma".
 include "arithmetics/nat.ma".
 include "ground/xoa/ex_3_1.ma".
 include "ground/xoa/or_3.ma".
index 98e14be386c44279c3472fac7114cb8460c2aa52..3d67a576c412dc8c8ab59abd5e7535e9082922ec 100644 (file)
@@ -72,6 +72,9 @@ definition transitive2 (A) (R1,R2:relation A): Prop ≝
            ∀a1,a0. R1 a1 a0 → ∀a2. R2 a0 a2 →
            ∃∃a. R2 a1 a & R1 a a2.
 
+definition confluent1 (A) (B): relation2 (relation2 A B) (relation A) ≝
+           λR1,R2. ∀a1,b. R1 a1 b → ∀a2. R2 a1 a2 → R1 a2 b.
+
 definition bi_confluent (A) (B) (R: bi_relation A B): Prop ≝
            ∀a0,a1,b0,b1. R a0 b0 a1 b1 → ∀a2,b2. R a0 b0 a2 b2 →
            ∃∃a,b. R a1 b1 a b & R a2 b2 a b.
index 56ced165b335d4cbc9d6fd44013efa490fb7c9ad..8a81ab6f7d6b53f110f3da8f9f7ebbd36d1512e3 100644 (file)
@@ -40,28 +40,30 @@ interpretation "one r-step (rtc)"
 interpretation "one t-step (rtc)"
    'ZeroOne = (mk_rtc O O O (S O)).
 
-definition eq_f: relation rtc ≝ λc1,c2. ⊤.
+definition rtc_eq_f: relation rtc ≝ λc1,c2. ⊤.
 
-inductive eq_t: relation rtc ≝
+inductive rtc_eq_t: relation rtc ≝
 | eq_t_intro: ∀ri1,ri2,rs1,rs2,ti,ts.
-              eq_t (〈ri1,rs1,ti,ts〉) (〈ri2,rs2,ti,ts〉)
+              rtc_eq_t (〈ri1,rs1,ti,ts〉) (〈ri2,rs2,ti,ts〉)
 .
 
 (* Basic properties *********************************************************)
 
-lemma eq_t_refl: reflexive …  eq_t.
+lemma rtc_eq_t_refl: reflexive …  rtc_eq_t.
 * // qed.
 
 (* Basic inversion lemmas ***************************************************)
 
-fact eq_t_inv_dx_aux: ∀x,y. eq_t x y →
-                      ∀ri1,rs1,ti,ts. x = 〈ri1,rs1,ti,ts〉 →
-                      ∃∃ri2,rs2. y = 〈ri2,rs2,ti,ts〉.
+fact rtc_eq_t_inv_dx_aux:
+     ∀x,y. rtc_eq_t x y →
+     ∀ri1,rs1,ti,ts. x = 〈ri1,rs1,ti,ts〉 →
+     ∃∃ri2,rs2. y = 〈ri2,rs2,ti,ts〉.
 #x #y * -x -y
 #ri1 #ri #rs1 #rs #ti1 #ts1 #ri2 #rs2 #ti2 #ts2 #H destruct -ri2 -rs2
 /2 width=3 by ex1_2_intro/
 qed-.
 
-lemma eq_t_inv_dx: ∀ri1,rs1,ti,ts,y. eq_t (〈ri1,rs1,ti,ts〉) y →
-                   ∃∃ri2,rs2. y = 〈ri2,rs2,ti,ts〉.
-/2 width=5 by eq_t_inv_dx_aux/ qed-.
+lemma rtc_eq_t_inv_dx:
+      ∀ri1,rs1,ti,ts,y. rtc_eq_t (〈ri1,rs1,ti,ts〉) y →
+      ∃∃ri2,rs2. y = 〈ri2,rs2,ti,ts〉.
+/2 width=5 by rtc_eq_t_inv_dx_aux/ qed-.
index 17bba149600ee4e0686a9639f347a7bafa202277..7f9f2f74ad1d7e891662dcf7d0dd2abfeb9cacd1 100644 (file)
@@ -34,9 +34,9 @@ lemma isrt_10: 𝐑𝐓❪0,𝟙𝟘❫.
 lemma isrt_01: 𝐑𝐓❪1,𝟘𝟙❫.
 /2 width=3 by ex1_2_intro/ qed.
 
-lemma isrt_eq_t_trans: ∀n,c1,c2. 𝐑𝐓❪n,c1❫ → eq_t c1 c2 → 𝐑𝐓❪n,c2❫.
+lemma isrt_eq_t_trans: ∀n,c1,c2. 𝐑𝐓❪n,c1❫ → rtc_eq_t c1 c2 → 𝐑𝐓❪n,c2❫.
 #n #c1 #c2 * #ri1 #rs1 #H destruct
-#H elim (eq_t_inv_dx … H) -H /2 width=3 by ex1_2_intro/
+#H elim (rtc_eq_t_inv_dx … H) -H /2 width=3 by ex1_2_intro/
 qed-.
 
 (* Basic inversion properties ***********************************************)
@@ -59,6 +59,6 @@ theorem isrt_inj: ∀n1,n2,c. 𝐑𝐓❪n1,c❫ → 𝐑𝐓❪n2,c❫ → n1 =
 #n1 #n2 #c * #ri1 #rs1 #H1 * #ri2 #rs2 #H2 destruct //
 qed-.
 
-theorem isrt_mono: ∀n,c1,c2. 𝐑𝐓❪n,c1❫ → 𝐑𝐓❪n,c2❫ → eq_t c1 c2.
+theorem isrt_mono: ∀n,c1,c2. 𝐑𝐓❪n,c1❫ → 𝐑𝐓❪n,c2❫ → rtc_eq_t c1 c2.
 #n #c1 #c2 * #ri1 #rs1 #H1 * #ri2 #rs2 #H2 destruct //
 qed-.
index 27b5d84f3485973804b846faf1cce03366bdc39f..ed314bb2239840780632d219180f462d38628271 100644 (file)
@@ -58,7 +58,7 @@ elim (isrt_inv_max … H) -H #n1 #n2 #Hn1 #Hn2 #H destruct
 lapply (isrt_inj … Hn2 H2) -c2 #H destruct //
 qed-.
 
-lemma isrt_inv_max_eq_t: ∀n,c1,c2. 𝐑𝐓❪n,c1 ∨ c2❫ → eq_t c1 c2 →
+lemma isrt_inv_max_eq_t: ∀n,c1,c2. 𝐑𝐓❪n,c1 ∨ c2❫ → rtc_eq_t c1 c2 →
                          ∧∧ 𝐑𝐓❪n,c1❫ & 𝐑𝐓❪n,c2❫.
 #n #c1 #c2 #H #Hc12
 elim (isrt_inv_max … H) -H #n1 #n2 #Hc1 #Hc2 #H destruct
index 46d28f330dcc4028288fb8e0cfcff6f19f7e6a8c..a5a1a42dc3b0cc15ae9025b7ba4255dedabfa333 100644 (file)
@@ -21,26 +21,24 @@ include "static_2/i_static/rexs_fqup.ma".
 
 (* Properties with generic extension of a context sensitive relation ********)
 
-lemma rexs_lex: ∀R. c_reflexive … R →
-                ∀L1,L2,T. L1 ⪤[CTC … R] L2 → L1 ⪤*[R,T] L2.
+lemma rexs_lex (R): c_reflexive … R →
+      ∀L1,L2,T. L1 ⪤[CTC … R] L2 → L1 ⪤*[R,T] L2.
 #R #HR #L1 #L2 #T *
 /5 width=7 by rexs_tc, sex_inv_tc_dx, sex_co, ext2_inv_tc, ext2_refl/
 qed.
 
-lemma rexs_lex_req: ∀R. c_reflexive … R →
-                    ∀L1,L. L1 ⪤[CTC … R] L → ∀L2,T. L ≡[T] L2 →
-                    L1 ⪤*[R,T] L2.
+lemma rexs_lex_req (R): c_reflexive … R →
+      ∀L1,L. L1 ⪤[CTC … R] L → ∀L2,T. L ≡[T] L2 → L1 ⪤*[R,T] L2.
 /3 width=3 by rexs_lex, rexs_step_dx, req_fwd_rex/ qed.
 
 (* Inversion lemmas with generic extension of a context sensitive relation **)
 
 (* Note: s_rs_transitive_lex_inv_isid could be invoked in the last auto but makes it too slow *)
-lemma rexs_inv_lex_req: ∀R. c_reflexive … R →
-                        rex_fsge_compatible R →
-                        s_rs_transitive … R (λ_.lex R) →
-                        req_transitive R →
-                        ∀L1,L2,T. L1 ⪤*[R,T] L2 →
-                        ∃∃L. L1 ⪤[CTC … R] L & L ≡[T] L2.
+lemma rexs_inv_lex_req (R):
+      c_reflexive … R → rex_fsge_compatible R →
+      s_rs_transitive … R (λ_.lex R) → req_transitive R →
+      ∀L1,L2,T. L1 ⪤*[R,T] L2 →
+      ∃∃L. L1 ⪤[CTC … R] L & L ≡[T] L2.
 #R #H1R #H2R #H3R #H4R #L1 #L2 #T #H
 lapply (s_rs_transitive_lex_inv_isid … H3R) -H3R #H3R
 @(rexs_ind_sn … H1R … H) -H -L2
@@ -50,7 +48,7 @@ lapply (s_rs_transitive_lex_inv_isid … H3R) -H3R #H3R
   elim (sex_sdj_split … ceq_ext … HL2 f0 ?) -HL2
   [ #L0 #HL0 #HL02 |*: /2 width=1 by ext2_refl, sdj_isid_dx/ ]
   lapply (sex_sdj … HL0 f1 ?) /2 width=1 by sdj_isid_sn/ #H
-  elim (frees_sex_conf … Hf1 … H) // -H2R -H #f2 #Hf2 #Hf21
+  elim (frees_sex_conf_fsge … Hf1 … H) // -H2R -H #f2 #Hf2 #Hf21
   lapply (sle_sex_trans … HL02 … Hf21) -f1 // #HL02
   lapply (sex_co ?? cfull (CTC … (cext2 R)) … HL1) -HL1 /2 width=1 by ext2_inv_tc/ #HL1
   /8 width=11 by sex_inv_tc_dx, sex_tc_dx, sex_co, ext2_tc, ext2_refl, step, ex2_intro/ (**) (* full auto too slow *)
index 49010d3305684e905ea643f6d35b3491c0780417..3fba7476ad0d087ac365539b8668024fc793e1ee 100644 (file)
@@ -32,6 +32,14 @@ inductive sex (RN,RP:relation3 lenv bind bind): rtmap → relation lenv ≝
 interpretation "generic entrywise extension (local environment)"
    'Relation RN RP f L1 L2 = (sex RN RP f L1 L2).
 
+definition sex_transitive: relation3 lenv bind bind → relation3 lenv bind bind →
+                           relation3 lenv bind bind →
+                           relation3 lenv bind bind → relation3 lenv bind bind →
+                           relation3 rtmap lenv bind ≝
+                           λR1,R2,R3,RN,RP,f,L1,I1.
+                           ∀I. R1 L1 I1 I → ∀L2. L1 ⪤[RN,RP,f] L2 →
+                           ∀I2. R2 L2 I I2 → R3 L1 I1 I2.
+
 definition R_pw_confluent2_sex: relation3 lenv bind bind → relation3 lenv bind bind →
                                 relation3 lenv bind bind → relation3 lenv bind bind →
                                 relation3 lenv bind bind → relation3 lenv bind bind →
@@ -41,13 +49,14 @@ definition R_pw_confluent2_sex: relation3 lenv bind bind → relation3 lenv bind
                                 ∀L1. L0 ⪤[RN1,RP1,f] L1 → ∀L2. L0 ⪤[RN2,RP2,f] L2 →
                                 ∃∃I. R2 L1 I1 I & R1 L2 I2 I.
 
-definition sex_transitive: relation3 lenv bind bind → relation3 lenv bind bind →
-                           relation3 lenv bind bind →
-                           relation3 lenv bind bind → relation3 lenv bind bind →
-                           relation3 rtmap lenv bind ≝
-                           λR1,R2,R3,RN,RP,f,L1,I1.
-                           ∀I. R1 L1 I1 I → ∀L2. L1 ⪤[RN,RP,f] L2 →
-                           ∀I2. R2 L2 I I2 → R3 L1 I1 I2.
+definition R_pw_replace3_sex: relation3 lenv bind bind → relation3 lenv bind bind →
+                              relation3 lenv bind bind → relation3 lenv bind bind →
+                              relation3 lenv bind bind → relation3 lenv bind bind →
+                              relation3 rtmap lenv bind ≝
+                              λR1,R2,RN1,RP1,RN2,RP2,f,L0,I0.
+                              ∀I1. R1 L0 I0 I1 → ∀I2. R2 L0 I0 I2 →
+                              ∀L1. L0 ⪤[RN1,RP1,f] L1 → ∀L2. L0 ⪤[RN2,RP2,f] L2 →
+                              ∀I. R2 L1 I1 I → R1 L2 I2 I.
 
 (* Basic inversion lemmas ***************************************************)
 
index 01e0f16fd564a530e964c3301c52ffe9194cd8a9..342530903ef3406ec58c40563878c772505f76c4 100644 (file)
@@ -82,6 +82,30 @@ theorem sex_conf (RN1) (RP1) (RN2) (RP2):
 ]
 qed-.
 
+lemma sex_repl (RN) (RP) (SN) (SP) (L1) (f):
+      (∀g,I,K1,n. ⇩[n] L1 ≘ K1.ⓘ[I] → ↑g = ⫱*[n] f → R_pw_replace3_sex … RN SN RN RP SN SP g K1 I) →
+      (∀g,I,K1,n. ⇩[n] L1 ≘ K1.ⓘ[I] → ⫯g = ⫱*[n] f → R_pw_replace3_sex … RP SP RN RP SN SP g K1 I) →
+      ∀L2. L1 ⪤[RN,RP,f] L2 → ∀K1. L1 ⪤[SN,SP,f] K1 →
+      ∀K2. L2 ⪤[SN,SP,f] K2 → K1 ⪤[RN,RP,f] K2.
+#RN #RP #SN #SP #L1 elim L1 -L1
+[ #f #_ #_ #Y #HY #Y1 #HY1 #Y2 #HY2
+  lapply (sex_inv_atom1 … HY) -HY #H destruct
+  lapply (sex_inv_atom1 … HY1) -HY1 #H destruct
+  lapply (sex_inv_atom1 … HY2) -HY2 #H destruct //
+| #L1 #I1 #IH #f elim (pn_split f) * #g #H destruct
+  #HN #HP #Y #HY #Y1 #HY1 #Y2 #HY2
+  [ elim (sex_inv_push1 … HY) -HY #I2 #L2 #HL12 #HI12 #H destruct
+    elim (sex_inv_push1 … HY1) -HY1 #J1 #K1 #HLK1 #HIJ1 #H destruct
+    elim (sex_inv_push1 … HY2) -HY2 #J2 #K2 #HLK2 #HIJ2 #H destruct
+    /5 width=13 by sex_push, drops_refl, drops_drop/
+  | elim (sex_inv_next1 … HY) -HY #I2 #L2 #HL12 #HI12 #H destruct
+    elim (sex_inv_next1 … HY1) -HY1 #J1 #K1 #HLK1 #HIJ1 #H destruct
+    elim (sex_inv_next1 … HY2) -HY2 #J2 #K2 #HLK2 #HIJ2 #H destruct
+    /5 width=13 by sex_next, drops_refl, drops_drop/
+  ]
+]
+qed-.
+
 theorem sex_canc_sn: ∀RN,RP,f. Transitive … (sex RN RP f) →
                                symmetric … (sex RN RP f) →
                                left_cancellable … (sex RN RP f).
index 73de6fcd6a8a913baf1fb9b67a895e787c703314..abbee2fdc19a4d3f418373b69eb7aaaf0ea9e99a 100644 (file)
@@ -50,6 +50,27 @@ elim (fsle_frees_trans_eq … H2L … Hf2) // -L2 -T2
 /3 width=6 by frees_mono, sle_eq_repl_back1/
 qed-.
 
+lemma fsle_frees_conf:
+      ∀L1,L2,T1,T2. ❪L1,T1❫ ⊆ ❪L2,T2❫ →
+      ∀f1. L1 ⊢ 𝐅+❪T1❫ ≘ f1 →
+      ∃∃n1,n2,f2. L2 ⊢ 𝐅+❪T2❫ ≘ f2 & L1 ≋ⓧ*[n1,n2] L2 & ⫱*[n1]f1 ⊆ ⫱*[n2]f2.
+#L1 #L2 #T1 #T2 * #n1 #n2 #g1 #g2 #Hg1 #Hg2 #HL #Hn #f1 #Hf1
+lapply (frees_mono … Hg1 … Hf1) -Hg1 -Hf1 #Hgf1
+lapply (tls_eq_repl n1 … Hgf1) -Hgf1 #Hgf1
+lapply (sle_eq_repl_back1 … Hn … Hgf1) -g1
+/2 width=6 by ex3_3_intro/
+qed-.
+
+lemma fsle_frees_conf_eq:
+      ∀L1,L2. |L1| = |L2| →
+      ∀T1,T2. ❪L1,T1❫ ⊆ ❪L2,T2❫ → ∀f1. L1 ⊢ 𝐅+❪T1❫ ≘ f1 →
+      ∃∃f2. L2 ⊢ 𝐅+❪T2❫ ≘ f2 & f1 ⊆ f2.
+#L1 #L2 #H1L #T1 #T2 #H2L #f1 #Hf1
+elim (fsle_frees_conf … H2L … Hf1) -T1 #n1 #n2 #f2 #Hf2 #H2L #Hf12
+elim (lveq_inj_length … H2L) // -L1 #H1 #H2 destruct
+/2 width=3 by ex2_intro/
+qed-.
+
 (* Main properties **********************************************************)
 
 theorem fsle_trans_sn:
index d4c7271235d5ea5e7ae4d24d58c648f869110897..4d10fb256a881c0919a060669007c05da5d6dbc1 100644 (file)
@@ -30,22 +30,31 @@ definition rex (R) (T): relation lenv ≝
 interpretation "generic extension on referred entries (local environment)"
    'Relation R T L1 L2 = (rex R T L1 L2).
 
-definition R_confluent2_rex: relation4 (relation3 lenv term term)
-                                       (relation3 lenv term term) … ≝
-                             λR1,R2,RP1,RP2.
-                             ∀L0,T0,T1. R1 L0 T0 T1 → ∀T2. R2 L0 T0 T2 →
-                             ∀L1. L0 ⪤[RP1,T0] L1 → ∀L2. L0 ⪤[RP2,T0] L2 →
-                             ∃∃T. R2 L1 T1 T & R1 L2 T2 T.
+definition R_confluent2_rex:
+           relation4 (relation3 lenv term term)
+                     (relation3 lenv term term) … ≝
+           λR1,R2,RP1,RP2.
+           ∀L0,T0,T1. R1 L0 T0 T1 → ∀T2. R2 L0 T0 T2 →
+           ∀L1. L0 ⪤[RP1,T0] L1 → ∀L2. L0 ⪤[RP2,T0] L2 →
+           ∃∃T. R2 L1 T1 T & R1 L2 T2 T.
+
+definition R_replace3_rex:
+           relation4 (relation3 lenv term term)
+                     (relation3 lenv term term) … ≝
+           λR1,R2,RP1,RP2.
+           ∀L0,T0,T1. R1 L0 T0 T1 → ∀T2. R2 L0 T0 T2 →
+           ∀L1. L0 ⪤[RP1,T0] L1 → ∀L2. L0 ⪤[RP2,T0] L2 →
+           ∀T. R2 L1 T1 T → R1 L2 T2 T.
 
 definition rex_confluent: relation … ≝
-                          λR1,R2.
-                          ∀K1,K,V1. K1 ⪤[R1,V1] K → ∀V. R1 K1 V1 V →
-                          ∀K2. K ⪤[R2,V] K2 → K ⪤[R2,V1] K2.
+           λR1,R2.
+           ∀K1,K,V1. K1 ⪤[R1,V1] K → ∀V. R1 K1 V1 V →
+           ∀K2. K ⪤[R2,V] K2 → K ⪤[R2,V1] K2.
 
 definition rex_transitive: relation3 ? (relation3 ?? term) … ≝
-                           λR1,R2,R3.
-                           ∀K1,K,V1. K1 ⪤[R1,V1] K →
-                           ∀V. R1 K1 V1 V → ∀V2. R2 K V V2 → R3 K1 V1 V2.
+           λR1,R2,R3.
+           ∀K1,K,V1. K1 ⪤[R1,V1] K →
+           ∀V. R1 K1 V1 V → ∀V2. R2 K V V2 → R3 K1 V1 V2.
 
 (* Basic inversion lemmas ***************************************************)
 
index 641fc459dad28879f9cbc9766457bb9447770a40..ff658827090ee57e5a01932637fb94832793cdae 100644 (file)
@@ -20,17 +20,17 @@ include "static_2/static/rex_rex.ma".
 (* GENERIC EXTENSION ON REFERRED ENTRIES OF A CONTEXT-SENSITIVE REALTION ****)
 
 definition R_fsge_compatible: predicate (relation3 …) ≝ λRN.
-                              ∀L,T1,T2. RN L T1 T2 → ❪L,T2❫ ⊆ ❪L,T1❫.
+           ∀L,T1,T2. RN L T1 T2 → ❪L,T2❫ ⊆ ❪L,T1❫.
 
 definition rex_fsge_compatible: predicate (relation3 …) ≝ λRN.
-                                ∀L1,L2,T. L1 ⪤[RN,T] L2 → ❪L2,T❫ ⊆ ❪L1,T❫.
+           ∀L1,L2,T. L1 ⪤[RN,T] L2 → ❪L2,T❫ ⊆ ❪L1,T❫.
 
 definition rex_fsle_compatible: predicate (relation3 …) ≝ λRN.
-                                ∀L1,L2,T. L1 ⪤[RN,T] L2 → ❪L1,T❫ ⊆ ❪L2,T❫.
+           ∀L1,L2,T. L1 ⪤[RN,T] L2 → ❪L1,T❫ ⊆ ❪L2,T❫.
 
 (* Basic inversions with free variables inclusion for restricted closures ***)
 
-lemma frees_sex_conf (R):
+lemma frees_sex_conf_fsge (R):
       rex_fsge_compatible R →
       ∀L1,T,f1. L1 ⊢ 𝐅+❪T❫ ≘ f1 →
       ∀L2. L1 ⪤[cext2 R,cfull,f1] L2 →
@@ -40,6 +40,16 @@ lapply (HR L1 L2 T ?) /2 width=3 by ex2_intro/ #H2L
 @(fsle_frees_trans_eq … H2L … Hf1) /3 width=4 by sex_fwd_length, sym_eq/
 qed-.
 
+lemma frees_sex_conf_fsle (R):
+      rex_fsle_compatible R →
+      ∀L1,T,f1. L1 ⊢ 𝐅+❪T❫ ≘ f1 →
+      ∀L2. L1 ⪤[cext2 R,cfull,f1] L2 →
+      ∃∃f2. L2 ⊢ 𝐅+❪T❫ ≘ f2 & f1 ⊆ f2.
+#R #HR #L1 #T #f1 #Hf1 #L2 #H1L
+lapply (HR L1 L2 T ?) /2 width=3 by ex2_intro/ #H2L
+@(fsle_frees_conf_eq … H2L … Hf1) /3 width=4 by sex_fwd_length, sym_eq/
+qed-.
+
 (* Properties with free variables inclusion for restricted closures *********)
 
 (* Note: we just need lveq_inv_refl: ∀L, n1, n2. L ≋ⓧ*[n1, n2] L → ∧∧ 0 = n1 & 0 = n2 *)
@@ -57,7 +67,7 @@ lemma rex_sym (R):
       ∀T. symmetric … (rex R T).
 #R #H1R #H2R #T #L1 #L2
 * #f1 #Hf1 #HL12
-elim (frees_sex_conf … Hf1 … HL12) -Hf1 //
+elim (frees_sex_conf_fsge … Hf1 … HL12) -Hf1 //
 /5 width=5 by sle_sex_trans, sex_sym, cext2_sym, ex2_intro/
 qed-.
 
@@ -77,7 +87,7 @@ lapply (sor_eq_repl_back1 … Hy … H1) -y1 #Hy
 lapply (sor_inv_sle_sn … Hy) -y2 #Hfg
 elim (sex_sle_split (cext2 R1) (cext2 R2) … HL12 … Hfg) -HL12 /2 width=1 by ext2_refl/ #L #HL1 #HL2
 lapply (sle_sex_trans … HL1 … Hfg) // #H
-elim (frees_sex_conf … Hf … H) -Hf -H
+elim (frees_sex_conf_fsge … Hf … H) -Hf -H
 /4 width=7 by sle_sex_trans, ex2_intro/
 qed-.
 
@@ -94,7 +104,7 @@ lapply (sor_eq_repl_back2 … Hy … H2) -y2 #Hy
 lapply (sor_inv_sle_dx … Hy) -y1 #Hfg
 elim (sex_sle_split (cext2 R1) (cext2 R2) … HL12 … Hfg) -HL12 /2 width=1 by ext2_refl/ #L #HL1 #HL2
 lapply (sle_sex_trans … HL1 … Hfg) // #H
-elim (frees_sex_conf … Hf … H) -Hf -H
+elim (frees_sex_conf_fsge … Hf … H) -Hf -H
 /4 width=7 by sle_sex_trans, ex2_intro/
 qed-.
 
@@ -115,7 +125,7 @@ elim (sex_sle_split (cext2 R1) (cext2 R2) … HL12 … Hfg) -HL12 /2 width=1 by
 lapply (sle_sex_trans … H … Hfg) // #H0
 elim (sex_inv_next1 … H) -H #Z #L #HL1 #H
 elim (ext2_inv_pair_sn … H) -H #V #HV #H1 #H2 destruct
-elim (frees_sex_conf … Hf … H0) -Hf -H0
+elim (frees_sex_conf_fsge … Hf … H0) -Hf -H0
 /4 width=7 by sle_sex_trans, ex3_2_intro, ex2_intro/
 qed-.
 
@@ -136,12 +146,39 @@ elim (sex_sle_split (cext2 R1) (cext2 R2) … HL12 … Hfg) -HL12 /2 width=1 by
 lapply (sle_sex_trans … H … Hfg) // #H0
 elim (sex_inv_next1 … H) -H #Z #L #HL1 #H
 elim (ext2_inv_unit_sn … H) -H #H destruct
-elim (frees_sex_conf … Hf … H0) -Hf -H0
+elim (frees_sex_conf_fsge … Hf … H0) -Hf -H0
 /4 width=7 by sle_sex_trans, ex2_intro/ (* note: 2 ex2_intro *)
 qed-.
 
 (* Main properties with free variables inclusion for restricted closures ****)
 
+theorem rex_conf1 (R1) (R2):
+        rex_fsge_compatible R2 → (c_reflexive … R2) →
+        R_replace3_rex R1 R2 R1 R2 →
+        ∀T. confluent1 … (rex R1 T) (rex R2 T).
+#R1 #R2 #H1R #H2R #H3R #T #L1 #L * #f1 #Hf1 #HL1 #L2 * #f2 #Hf2 #HL12
+lapply (frees_mono … Hf1 … Hf2) -Hf1 #Hf12
+lapply (sex_eq_repl_back … HL1 … Hf12) -f1 #HL1
+elim (frees_sex_conf_fsge … Hf2 … HL12) // #g2 #Hg2 #Hfg2
+lapply (sex_repl … HL1 … HL12 L ?) //
+[ /3 width=1 by sex_refl, ext2_refl/
+| -g2 #g2 * #I1 [| #V1 ] #K1 #n #HLK1 #Hgf2 #Z1 #H1 #Z2 #H2 #Y1 #HY1 #Y2 #HY2 #Z #HZ
+  [ lapply (ext2_inv_unit_sn … H1) -H1 #H destruct
+    lapply (ext2_inv_unit_sn … H2) -H2 #H destruct
+    lapply (ext2_inv_unit_sn … HZ) -HZ #H destruct
+    /2 width=1 by ext2_unit/
+  | elim (ext2_inv_pair_sn … H1) -H1 #W1 #HW1 #H destruct
+    elim (ext2_inv_pair_sn … H2) -H2 #W2 #HW2 #H destruct
+    elim (ext2_inv_pair_sn … HZ) -HZ #W #HW #H destruct
+    elim (frees_inv_drops_next … Hf2 … HLK1 … Hgf2) -Hf2 -HLK1 -Hgf2 #g0 #Hg0 #Hg02
+    lapply (sle_sex_trans … HY1 … Hg02) // -HY1 #HY1
+    lapply (sle_sex_trans … HY2 … Hg02) // -HY2 #HY2
+    /4 width=9 by ext2_pair, ex2_intro/
+  ]
+| /3 width=5 by sle_sex_trans, ex2_intro/
+]
+qed-.
+
 theorem rex_conf (R1) (R2):
         rex_fsge_compatible R1 → rex_fsge_compatible R2 →
         R_confluent2_rex R1 R2 R1 R2 →
@@ -151,21 +188,21 @@ lapply (frees_mono … Hf1 … Hf) -Hf1 #Hf12
 lapply (sex_eq_repl_back … HL01 … Hf12) -f1 #HL01
 elim (sex_conf … HL01 … HL02) /2 width=3 by ex2_intro/ [ | -HL01 -HL02 ]
 [ #L #HL1 #HL2
-  elim (frees_sex_conf … Hf … HL01) // -HR1 -HL01 #f1 #Hf1 #H1
-  elim (frees_sex_conf … Hf … HL02) // -HR2 -HL02 #f2 #Hf2 #H2
+  elim (frees_sex_conf_fsge … Hf … HL01) // -HR1 -HL01 #f1 #Hf1 #H1
+  elim (frees_sex_conf_fsge … Hf … HL02) // -HR2 -HL02 #f2 #Hf2 #H2
   lapply (sle_sex_trans … HL1 … H1) // -HL1 -H1 #HL1
   lapply (sle_sex_trans … HL2 … H2) // -HL2 -H2 #HL2
   /3 width=5 by ex2_intro/
-| #g * #I0 [2: #V0 ] #K0 #n #HLK0 #Hgf #Z1 #H1 #Z2 #H2 #K1 #HK01 #K2 #HK02
-  [ elim (ext2_inv_pair_sn … H1) -H1 #V1 #HV01 #H destruct
+| #g * #I0 [| #V0 ] #K0 #n #HLK0 #Hgf #Z1 #H1 #Z2 #H2 #K1 #HK01 #K2 #HK02
+  [ lapply (ext2_inv_unit_sn … H1) -H1 #H destruct
+    lapply (ext2_inv_unit_sn … H2) -H2 #H destruct
+    /3 width=3 by ext2_unit, ex2_intro/
+  | elim (ext2_inv_pair_sn … H1) -H1 #V1 #HV01 #H destruct
     elim (ext2_inv_pair_sn … H2) -H2 #V2 #HV02 #H destruct
     elim (frees_inv_drops_next … Hf … HLK0 … Hgf) -Hf -HLK0 -Hgf #g0 #Hg0 #H0
     lapply (sle_sex_trans … HK01 … H0) // -HK01 #HK01
     lapply (sle_sex_trans … HK02 … H0) // -HK02 #HK02
     elim (HR12 … HV01 … HV02 K1 … K2) /3 width=3 by ext2_pair, ex2_intro/
-  | lapply (ext2_inv_unit_sn … H1) -H1 #H destruct
-    lapply (ext2_inv_unit_sn … H2) -H2 #H destruct
-    /3 width=3 by ext2_unit, ex2_intro/
   ]
 ]
 qed-.
index dd074c1c4014d02ac83238b370507274630d2f87..9329d7f84c7704c87bcc840b16f430ccbd3d9d8c 100644 (file)
@@ -37,6 +37,6 @@ lemma rex_inv_lex_req (R):
 elim (sex_sdj_split … ceq_ext … HL 𝐈𝐝 ?) -HL
 [ #L0 #HL10 #HL02 |*: /2 width=1 by ext2_refl, sdj_isid_dx/ ] -H1R
 lapply (sex_sdj … HL10 f1 ?) /2 width=1 by sdj_isid_sn/ #H
-elim (frees_sex_conf … Hf1 … H) // -H2R -H #f0 #Hf0 #Hf01
+elim (frees_sex_conf_fsge … Hf1 … H) // -H2R -H #f0 #Hf0 #Hf01
 /4 width=7 by sle_sex_trans, (* 2x *) ex2_intro/
 qed-.
index 815924202ff696f4ed306fbc9819b75da36e4eca..8129473752d35bd95146f95897f66fe65431a75f 100644 (file)
@@ -24,3 +24,6 @@ record sh: Type[0] ≝ {
 
 interpretation "next sort (sort hierarchy)"
    'UpSpoon h s = (next h s).
+
+definition sh_is_next (h): relation nat ≝
+           λs1,s2. ⫯[h]s1 = s2.