include "static_2/static/fsle_drops.ma".
include "static_2/static/rex_fsle.ma".
include "basic_2/rt_transition/rpx_length.ma".
+include "basic_2/rt_transition/rpx_drops.ma".
include "basic_2/rt_transition/rpx_fqup.ma".
(* UNBOUND PARALLEL RT-TRANSITION FOR REFERRED LOCAL ENVIRONMENTS ***********)
(* Forward lemmas with free variables inclusion for restricted closures *****)
-(* 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: "❪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: "∀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
[ #V1 #T1 #HV01 #HT01 #H destruct
lapply (rpx_fwd_length … HV0) #H0
/4 width=6 by fsle_bind_eq, fsle_fwd_pair_sn/
- | #T #HT #HXT #H1 #H2 destruct
+ | #T #H2T0 #HTX #H1 #H2 destruct
+ lapply (rpx_inv_lifts_bi … HT0 (Ⓣ) … H2T0) -HT0 [6:|*: /3 width=2 by drops_refl, drops_drop/ ] #HT
lapply (rpx_fwd_length … HV0) #H0
- /3 width=8 by fsle_inv_lifts_sn/
+ /5 width=6 by fsle_bind_dx_dx, fsle_lifts_dx, fqup_zeta/
]
| #I #V0 #X0 #HG #HL #HT #X #HX #Y #HY destruct
elim (rex_inv_flat … HY) -HY #HV0 #HX0
]
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-.