(* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************)
definition IH_cnv_cpm_teqx_cpm_trans (h) (a): relation3 genv lenv term ≝
- λG,L,T1. â¦\83G,Lâ¦\84 ⊢ T1 ![h,a] →
- â\88\80n1,T. â¦\83G,Lâ¦\84 ⊢ T1 ➡[n1,h] T → T1 ≛ T →
- â\88\80n2,T2. â¦\83G,Lâ¦\84 ⊢ T ➡[n2,h] T2 →
- â\88\83â\88\83T0. â¦\83G,Lâ¦\84 â\8a¢ T1 â\9e¡[n2,h] T0 & â¦\83G,Lâ¦\84 ⊢ T0 ➡[n1,h] T2 & T0 ≛ T2.
+ λG,L,T1. â\9dªG,Lâ\9d« ⊢ T1 ![h,a] →
+ â\88\80n1,T. â\9dªG,Lâ\9d« ⊢ T1 ➡[n1,h] T → T1 ≛ T →
+ â\88\80n2,T2. â\9dªG,Lâ\9d« ⊢ T ➡[n2,h] T2 →
+ â\88\83â\88\83T0. â\9dªG,Lâ\9d« â\8a¢ T1 â\9e¡[n2,h] T0 & â\9dªG,Lâ\9d« ⊢ T0 ➡[n1,h] T2 & T0 ≛ T2.
(* Transitive properties restricted rt-transition for terms *****************)
fact cnv_cpm_teqx_cpm_trans_sub (h) (a) (G0) (L0) (T0):
- (â\88\80G,L,T. â¦\83G0,L0,T0â¦\84 >[h] â¦\83G,L,Tâ¦\84 → IH_cnv_cpm_trans_lpr h a G L T) →
- (â\88\80G,L,T. â¦\83G0,L0,T0â¦\84 â¬\82+ â¦\83G,L,Tâ¦\84 → IH_cnv_cpm_teqx_cpm_trans h a G L T) →
+ (â\88\80G,L,T. â\9dªG0,L0,T0â\9d« >[h] â\9dªG,L,Tâ\9d« → IH_cnv_cpm_trans_lpr h a G L T) →
+ (â\88\80G,L,T. â\9dªG0,L0,T0â\9d« â¬\82+ â\9dªG,L,Tâ\9d« → 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 * [| * [| * ]]
[ #I #_ #_ #_ #_ #n1 #X1 #H1X #H2X #n2 #X2 #HX2 destruct -G0 -L0 -T0
elim (cpm_inv_bind1 … HX2) -HX2 *
[ #V2 #T2 #HV12 #HT2 #H destruct
elim (IH1 … H0T1 … H1T1 H2T1 … HT2) -T -IH1 [| // ] #T0 #HT10 #H1T02 #H2T02
- lapply (IH2 … H0T1 … HT10 (L.ⓑ{I}V1) ?) -IH2 -H0T1 [3:|*: /2 width=1 by fqup_fpbg/ ] #HT0
- lapply (cpm_teqx_free … HT0 … H1T02 H2T02 G (L.ⓑ{I}V2)) -H1T02 #H1T02
+ lapply (IH2 … H0T1 … HT10 (L.ⓑ[I]V1) ?) -IH2 -H0T1 [3:|*: /2 width=1 by fqup_fpbg/ ] #HT0
+ lapply (cpm_teqx_free … HT0 … H1T02 H2T02 G (L.ⓑ[I]V2)) -H1T02 #H1T02
/3 width=6 by cpm_bind, teqx_pair, ex3_intro/
| #T2 #HT2 #HTX2 #H1 #H2 destruct -IH2
elim (teqx_inv_lifts_dx … H2T1 … HT2) -H2T1 #XT #HXT1 #H2XT2
qed-.
fact cnv_cpm_teqx_cpm_trans_aux (h) (a) (G0) (L0) (T0):
- (â\88\80G,L,T. â¦\83G0,L0,T0â¦\84 >[h] â¦\83G,L,Tâ¦\84 → IH_cnv_cpm_trans_lpr h a G L T) →
+ (â\88\80G,L,T. â\9dªG0,L0,T0â\9d« >[h] â\9dªG,L,Tâ\9d« → 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