]> matita.cs.unibo.it Git - helm.git/commitdiff
milestone in basic_2
authorFerruccio Guidi <fguidi@maelstrom.helm.cs.unibo.it>
Mon, 25 Mar 2019 16:32:22 +0000 (17:32 +0100)
committerFerruccio Guidi <fguidi@maelstrom.helm.cs.unibo.it>
Mon, 25 Mar 2019 16:32:22 +0000 (17:32 +0100)
preservation of validity for rt-computation does not need the sort degree parameter (i.e. no induction on the degree).

151 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_tdeq.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq_conf.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpm_tdeq_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_tdeq.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_cpms_tdeq_conf.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_fsb.ma
matita/matita/contribs/lambdadelta/basic_2/dynamic/cnv_preserve.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/lsubeqx_5.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/lsubeqx_6.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubty_7.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubty_8.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtyproper_7.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtyproper_8.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystar_7.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystar_8.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystarproper_7.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystarproper_8.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystrong_4.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystrong_5.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtynormal_4.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtynormal_5.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysnstrong_4.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysnstrong_5.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtystrong_4.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtystrong_5.ma [deleted file]
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_cwhx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_fpbg.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_fpbs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpms_rdeq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_cnx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_fdeq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_fqus.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_rdeq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_tdeq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_theq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/cpxs_theq_vector.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_fdeq.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_rdeq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_simple.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/csx_simple_theq.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_fdeq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/fsb_fpbg.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_fdeq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lpxs_rdeq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lsubsx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lsubsx_lsubsx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/lsubsx_rdsx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_csx.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_drops.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_fqup.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_length.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_lpxs.ma
matita/matita/contribs/lambdadelta/basic_2/rt_computation/rdsx_rdsx.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/cpm_tdeq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpr_tdeq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_fdeq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_fqus.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cpx_rdeq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/cwhx_rdeq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_fdeq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/fpb_rdeq.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/lpx_rdeq.ma
matita/matita/contribs/lambdadelta/basic_2/rt_transition/rpx_rdeq.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/static_2/notation/relations/stareq_2.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/notation/relations/stareq_3.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/notation/relations/stareq_4.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/notation/relations/stareq_5.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/notation/relations/stareqsn_3.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/notation/relations/stareqsn_5.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/notation/relations/stareqsn_6.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/notation/relations/stareqsn_8.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/notation/relations/topiso_2.ma [new file with mode: 0644]
matita/matita/contribs/lambdadelta/static_2/notation/relations/topiso_4.ma [deleted file]
matita/matita/contribs/lambdadelta/static_2/relocation/lifts_tdeq.ma
matita/matita/contribs/lambdadelta/static_2/s_transition/fqu_tdeq.ma
matita/matita/contribs/lambdadelta/static_2/static/aaa_fdeq.ma
matita/matita/contribs/lambdadelta/static_2/static/aaa_rdeq.ma
matita/matita/contribs/lambdadelta/static_2/static/fdeq.ma
matita/matita/contribs/lambdadelta/static_2/static/fdeq_fdeq.ma
matita/matita/contribs/lambdadelta/static_2/static/fdeq_fqup.ma
matita/matita/contribs/lambdadelta/static_2/static/fdeq_fqus.ma
matita/matita/contribs/lambdadelta/static_2/static/fdeq_req.ma
matita/matita/contribs/lambdadelta/static_2/static/rdeq.ma
matita/matita/contribs/lambdadelta/static_2/static/rdeq_drops.ma
matita/matita/contribs/lambdadelta/static_2/static/rdeq_fqup.ma
matita/matita/contribs/lambdadelta/static_2/static/rdeq_fqus.ma
matita/matita/contribs/lambdadelta/static_2/static/rdeq_length.ma
matita/matita/contribs/lambdadelta/static_2/static/rdeq_rdeq.ma
matita/matita/contribs/lambdadelta/static_2/static/rdeq_req.ma
matita/matita/contribs/lambdadelta/static_2/syntax/tdeq.ma
matita/matita/contribs/lambdadelta/static_2/syntax/tdeq_ext.ma
matita/matita/contribs/lambdadelta/static_2/syntax/tdeq_tdeq.ma
matita/matita/contribs/lambdadelta/static_2/syntax/theq.ma
matita/matita/contribs/lambdadelta/static_2/syntax/theq_simple.ma
matita/matita/contribs/lambdadelta/static_2/syntax/theq_simple_vector.ma
matita/matita/contribs/lambdadelta/static_2/syntax/theq_tdeq.ma
matita/matita/contribs/lambdadelta/static_2/syntax/theq_theq.ma
matita/matita/contribs/lambdadelta/static_2/web/static_2_src.tbl

index 257015d95c14cd69dd8aaf7db31d9eadfe8b5cbe..6ee55d8d0634d8c347c9f3b55e42a88a09fa5c34 100644 (file)
@@ -53,5 +53,5 @@ lemma fqup_ApplOmega_41 (G) (L) (s0) (s): ⦃G,L,ApplOmega4 s0 s⦄ ⊐+ ⦃G,L,
 
 (* Main properties **********************************************************)
 
-theorem fpbg_refl (h) (o) (G) (L) (s0) (s): ⦃G,L,ApplOmega1 s0 s⦄ >[h,o] ⦃G,L,ApplOmega1 s0 s⦄.
+theorem fpbg_refl (h) (G) (L) (s0) (s): ⦃G,L,ApplOmega1 s0 s⦄ >[h] ⦃G,L,ApplOmega1 s0 s⦄.
 /3 width=5 by fpbs_fpbg_trans, fqup_fpbg, cpxs_fpbs/ qed.
index b9b6e4bf8c58f8fad2c366d55b7ed4224088e5d6..3e6527a02a3d9db9213b19115e910962aa67b1eb 100644 (file)
@@ -31,15 +31,15 @@ fact cnv_cpm_conf_lpr_atom_ess_aux (h) (G) (L1) (L2) (s):
      ∃∃T. ⦃G,L1⦄ ⊢ ⋆s ➡*[1,h] T & ⦃G,L2⦄ ⊢ ⋆(next h s) ➡*[h] T.
 /3 width=3 by cpm_cpms, ex2_intro/ qed-.
 
-fact cnv_cpm_conf_lpr_atom_delta_aux (a) (h) (o) (G) (L) (i):
-     (∀G0,L0,T0. ⦃G,L,#i⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
+fact cnv_cpm_conf_lpr_atom_delta_aux (a) (h) (G) (L) (i):
+     (∀G0,L0,T0. ⦃G,L,#i⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
      ⦃G,L⦄⊢#i![a,h] →
      ∀K,V. ⬇*[i]L ≘ K.ⓓV →
      ∀n,XV. ⦃G,K⦄ ⊢ V ➡[n,h] XV →
      ∀X. ⬆*[↑i]XV ≘ X →
      ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G,L1⦄ ⊢ #i ➡*[n,h] T & ⦃G,L2⦄ ⊢ X ➡*[h] T.
-#a #h #o #G #L #i #IH #HT #K #V #HLK #n #XV #HVX #X #HXV #L1 #HL1 #L2 #HL2
+#a #h #G #L #i #IH #HT #K #V #HLK #n #XV #HVX #X #HXV #L1 #HL1 #L2 #HL2
 lapply (cnv_lref_fwd_drops … HT … HLK) -HT #HV
 elim (lpr_drops_conf … HLK … HL1) -HL1 // #Y1 #H1 #HLK1
 elim (lpr_inv_pair_sn … H1) -H1 #K1 #V1 #HK1 #HV1 #H destruct
@@ -53,15 +53,15 @@ elim (cpms_lifts_sn … HVX … HLK2 … HXV) -XV -HLK2 #XV #HVX #HXV
 /3 width=6 by cpms_delta_drops, ex2_intro/
 qed-.
 
-fact cnv_cpm_conf_lpr_atom_ell_aux (a) (h) (o) (G) (L) (i):
-     (∀G0,L0,T0. ⦃G,L,#i⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
+fact cnv_cpm_conf_lpr_atom_ell_aux (a) (h) (G) (L) (i):
+     (∀G0,L0,T0. ⦃G,L,#i⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
      ⦃G,L⦄⊢#i![a,h] →
      ∀K,W. ⬇*[i]L ≘ K.ⓛW →
      ∀n,XW. ⦃G,K⦄ ⊢ W ➡[n,h] XW →
      ∀X. ⬆*[↑i]XW ≘ X →
      ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G,L1⦄ ⊢ #i ➡*[↑n,h] T & ⦃G,L2⦄ ⊢ X ➡*[h] T.
-#a #h #o #G #L #i #IH #HT #K #W #HLK #n #XW #HWX #X #HXW #L1 #HL1 #L2 #HL2
+#a #h #G #L #i #IH #HT #K #W #HLK #n #XW #HWX #X #HXW #L1 #HL1 #L2 #HL2
 lapply (cnv_lref_fwd_drops … HT … HLK) -HT #HW
 elim (lpr_drops_conf … HLK … HL1) -HL1 // #Y1 #H1 #HLK1
 elim (lpr_inv_pair_sn … H1) -H1 #K1 #W1 #HK1 #HW1 #H destruct
@@ -75,15 +75,15 @@ elim (cpms_lifts_sn … HWX … HLK2 … HXW) -XW -HLK2 #XW #HWX #HXW
 /3 width=6 by cpms_ell_drops, ex2_intro/
 qed-.
 
-fact cnv_cpm_conf_lpr_delta_delta_aux (a) (h) (o) (I) (G) (L) (i):
-     (∀G0,L0,T0. ⦃G,L,#i⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
+fact cnv_cpm_conf_lpr_delta_delta_aux (a) (h) (I) (G) (L) (i):
+     (∀G0,L0,T0. ⦃G,L,#i⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
      ⦃G,L⦄⊢#i![a,h] →
      ∀K1,V1. ⬇*[i]L ≘ K1.ⓑ{I}V1 → ∀K2,V2. ⬇*[i]L ≘ K2.ⓑ{I}V2 →
      ∀n1,XV1. ⦃G,K1⦄ ⊢ V1 ➡[n1,h] XV1 → ∀n2,XV2. ⦃G,K2⦄ ⊢ V2 ➡[n2,h] XV2 →
      ∀X1. ⬆*[↑i]XV1 ≘ X1 → ∀X2. ⬆*[↑i]XV2 ≘ X2 →
      ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G,L1⦄ ⊢ X1 ➡*[n2-n1,h] T & ⦃G,L2⦄ ⊢ X2 ➡*[n1-n2,h] T.
-#a #h #o #I #G #L #i #IH #HT
+#a #h #I #G #L #i #IH #HT
 #K #V #HLK #Y #X #HLY #n1 #XV1 #HVX1 #n2 #XV2 #HVX2 #X1 #HXV1 #X2 #HXV2
 #L1 #HL1 #L2 #HL2
 lapply (drops_mono … HLY … HLK) -HLY #H destruct
@@ -107,14 +107,14 @@ fact cnv_cpm_conf_lpr_delta_ell_aux (L) (K1) (K2) (V) (W) (i):
 lapply (drops_mono … HLK2 … HLK1) -L -i #H destruct
 qed-.
 
-fact cnv_cpm_conf_lpr_bind_bind_aux (a) (h) (o) (p) (I) (G) (L) (V) (T):
-     (∀G0,L0,T0. ⦃G,L,ⓑ{p,I}V.T⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
+fact cnv_cpm_conf_lpr_bind_bind_aux (a) (h) (p) (I) (G) (L) (V) (T):
+     (∀G0,L0,T0. ⦃G,L,ⓑ{p,I}V.T⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
      ⦃G,L⦄ ⊢ ⓑ{p,I}V.T ![a,h] →
      ∀V1. ⦃G,L⦄ ⊢ V ➡[h] V1 → ∀V2. ⦃G,L⦄ ⊢ V ➡[h] V2 →
      ∀n1,T1. ⦃G,L.ⓑ{I}V⦄ ⊢ T ➡[n1,h] T1 → ∀n2,T2. ⦃G,L.ⓑ{I}V⦄ ⊢ T ➡[n2,h] T2 →
      ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G,L1⦄ ⊢ ⓑ{p,I}V1.T1 ➡*[n2-n1,h] T & ⦃G,L2⦄ ⊢ ⓑ{p,I}V2.T2 ➡*[n1-n2,h] T.
-#a #h #o #p #I #G0 #L0 #V0 #T0 #IH #H0
+#a #h #p #I #G0 #L0 #V0 #T0 #IH #H0
 #V1 #HV01 #V2 #HV02 #n1 #T1 #HT01 #n2 #T2 #HT02
 #L1 #HL01 #L2 #HL02
 elim (cnv_inv_bind … H0) -H0 #HV0 #HT0
@@ -124,14 +124,14 @@ elim (cnv_cpm_conf_lpr_sub … IH … HT01 … HT02 (L1.ⓑ{I}V1) … (L2.ⓑ{I}
 /3 width=5 by cpms_bind_dx, ex2_intro/
 qed-.
 
-fact cnv_cpm_conf_lpr_bind_zeta_aux (a) (h) (o) (G) (L) (V) (T):
-     (∀G0,L0,T0. ⦃G,L,+ⓓV.T⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
+fact cnv_cpm_conf_lpr_bind_zeta_aux (a) (h) (G) (L) (V) (T):
+     (∀G0,L0,T0. ⦃G,L,+ⓓV.T⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
      ⦃G,L⦄ ⊢ +ⓓV.T ![a,h] →
      ∀V1. ⦃G,L⦄ ⊢V ➡[h] V1 → ∀n1,T1. ⦃G,L.ⓓV⦄ ⊢ T ➡[n1,h] T1 → 
      ∀T2. ⬆*[1]T2 ≘ T → ∀n2,XT2. ⦃G,L⦄ ⊢ T2 ➡[n2,h] XT2 →
      ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G,L1⦄ ⊢ +ⓓV1.T1 ➡*[n2-n1,h] T & ⦃G,L2⦄ ⊢ XT2 ➡*[n1-n2,h] T.
-#a #h #o #G0 #L0 #V0 #T0 #IH #H0
+#a #h #G0 #L0 #V0 #T0 #IH #H0
 #V1 #HV01 #n1 #T1 #HT01 #T2 #HT20 #n2 #XT2 #HXT2
 #L1 #HL01 #L2 #HL02
 elim (cnv_inv_bind … H0) -H0 #_ #HT0
@@ -144,14 +144,14 @@ elim (cnv_cpm_conf_lpr_sub … IH … HXT12 … HXT2 … HL01 … HL02)
 /3 width=3 by cpms_zeta, ex2_intro/
 qed-.
 
-fact cnv_cpm_conf_lpr_zeta_zeta_aux (a) (h) (o) (G) (L) (V) (T):
-     (∀G0,L0,T0. ⦃G,L,+ⓓV.T⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
+fact cnv_cpm_conf_lpr_zeta_zeta_aux (a) (h) (G) (L) (V) (T):
+     (∀G0,L0,T0. ⦃G,L,+ⓓV.T⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
      ⦃G,L⦄ ⊢ +ⓓV.T ![a,h] →
      ∀T1. ⬆*[1]T1 ≘ T → ∀T2. ⬆*[1]T2 ≘ T →
      ∀n1,XT1. ⦃G,L⦄ ⊢ T1 ➡[n1,h] XT1 → ∀n2,XT2. ⦃G,L⦄ ⊢ T2 ➡[n2,h] XT2 →
      ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G,L1⦄ ⊢ XT1 ➡*[n2-n1,h] T & ⦃G,L2⦄ ⊢ XT2 ➡*[n1-n2,h] T.
-#a #h #o #G0 #L0 #V0 #T0 #IH #H0
+#a #h #G0 #L0 #V0 #T0 #IH #H0
 #T1 #HT10 #T2 #HT20 #n1 #XT1 #HXT1 #n2 #XT2 #HXT2
 #L1 #HL01 #L2 #HL02
 elim (cnv_inv_bind … H0) -H0 #_ #HT0
@@ -163,14 +163,14 @@ elim (cnv_cpm_conf_lpr_sub … IH … HXT1 … HXT2 … HL01 … HL02)
 /2 width=3 by ex2_intro/
 qed-.
 
-fact cnv_cpm_conf_lpr_appl_appl_aux (a) (h) (o) (G) (L) (V) (T):
-     (∀G0,L0,T0. ⦃G,L,ⓐV.T⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
+fact cnv_cpm_conf_lpr_appl_appl_aux (a) (h) (G) (L) (V) (T):
+     (∀G0,L0,T0. ⦃G,L,ⓐV.T⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
      ⦃G,L⦄ ⊢ ⓐV.T ![a,h] →
      ∀V1. ⦃G,L⦄ ⊢ V ➡[h] V1 → ∀V2. ⦃G,L⦄ ⊢ V ➡[h] V2 →
      ∀n1,T1. ⦃G,L⦄ ⊢ T ➡[n1,h] T1 → ∀n2,T2. ⦃G,L⦄ ⊢ T ➡[n2,h] T2 →
      ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G,L1⦄ ⊢ ⓐV1.T1 ➡*[n2-n1,h] T & ⦃G,L2⦄ ⊢ ⓐV2.T2 ➡*[n1-n2,h] T.
-#a #h #o #G0 #L0 #V0 #T0 #IH #H0
+#a #h #G0 #L0 #V0 #T0 #IH #H0
 #V1 #HV01 #V2 #HV02 #n1 #T1 #HT01 #n2 #T2 #HT02
 #L1 #HL01 #L2 #HL02
 elim (cnv_inv_appl … H0) -H0 #n0 #p0 #X01 #X02 #_ #HV0 #HT0 #_ #_ -n0 -p0 -X01 -X02
@@ -180,15 +180,15 @@ elim (cnv_cpm_conf_lpr_sub … IH … HT01 … HT02 … HL01 … HL02) [|*: /2 w
 /3 width=5 by cpms_appl_dx, ex2_intro/
 qed-.
 
-fact cnv_cpm_conf_lpr_appl_beta_aux (a) (h) (o) (p) (G) (L) (V) (W) (T):
-     (∀G0,L0,T0. ⦃G,L,ⓐV.ⓛ{p}W.T⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
+fact cnv_cpm_conf_lpr_appl_beta_aux (a) (h) (p) (G) (L) (V) (W) (T):
+     (∀G0,L0,T0. ⦃G,L,ⓐV.ⓛ{p}W.T⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
      ⦃G,L⦄ ⊢ ⓐV.ⓛ{p}W.T ![a,h] →
      ∀V1. ⦃G,L⦄ ⊢ V ➡[h] V1 → ∀V2. ⦃G,L⦄ ⊢ V ➡[h] V2 →
      ∀W2. ⦃G,L⦄ ⊢ W ➡[h] W2 →
      ∀n1,T1. ⦃G,L⦄ ⊢ ⓛ{p}W.T ➡[n1,h] T1 → ∀n2,T2. ⦃G,L.ⓛW⦄ ⊢ T ➡[n2,h] T2 →
      ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G,L1⦄ ⊢ ⓐV1.T1 ➡*[n2-n1,h] T & ⦃G,L2⦄ ⊢ ⓓ{p}ⓝW2.V2.T2 ➡*[n1-n2,h] T.
-#a #h #o #p #G0 #L0 #V0 #W0 #T0 #IH #H0
+#a #h #p #G0 #L0 #V0 #W0 #T0 #IH #H0
 #V1 #HV01 #V2 #HV02 #W2 #HW02 #n1 #X #HX #n2 #T2 #HT02
 #L1 #HL01 #L2 #HL02
 elim (cnv_inv_appl … H0) -H0 #n0 #p0 #X01 #X02 #_ #HV0 #H0 #_ #_ -n0 -p0 -X01 -X02
@@ -202,8 +202,8 @@ lapply (lsubr_cpms_trans … HT2 (L2.ⓓⓝW2.V2) ?) -HT2 [ /2 width=1 by lsubr_
 /4 width=5 by cpms_beta_dx, cpms_bind_dx, cpm_cast, ex2_intro/
 qed-.
 
-fact cnv_cpm_conf_lpr_appl_theta_aux (a) (h) (o) (p) (G) (L) (V) (W) (T):
-     (∀G0,L0,T0. ⦃G,L,ⓐV.ⓓ{p}W.T⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
+fact cnv_cpm_conf_lpr_appl_theta_aux (a) (h) (p) (G) (L) (V) (W) (T):
+     (∀G0,L0,T0. ⦃G,L,ⓐV.ⓓ{p}W.T⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
      ⦃G,L⦄ ⊢ ⓐV.ⓓ{p}W.T ![a,h] →
      ∀V1. ⦃G,L⦄ ⊢ V ➡[h] V1 → ∀V2. ⦃G,L⦄ ⊢ V ➡[h] V2 →
      ∀W2. ⦃G,L⦄ ⊢ W ➡[h] W2 →
@@ -211,7 +211,7 @@ fact cnv_cpm_conf_lpr_appl_theta_aux (a) (h) (o) (p) (G) (L) (V) (W) (T):
      ∀U2. ⬆*[1]V2 ≘ U2 →
      ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G,L1⦄ ⊢ ⓐV1.T1 ➡*[n2-n1,h] T & ⦃G,L2⦄ ⊢ ⓓ{p}W2.ⓐU2.T2 ➡*[n1-n2,h] T.
-#a #h #o #p #G0 #L0 #V0 #W0 #T0 #IH #H0
+#a #h #p #G0 #L0 #V0 #W0 #T0 #IH #H0
 #V1 #HV01 #V2 #HV02 #W2 #HW02 #n1 #X #HX #n2 #T2 #HT02 #U2 #HVU2
 #L1 #HL01 #L2 #HL02
 elim (cnv_inv_appl … H0) -H0 #n0 #p0 #X01 #X02 #_ #HV0 #H0 #_ #_ -n0 -p0 -X01 -X02
@@ -233,15 +233,15 @@ elim (cpm_inv_abbr1 … HX) -HX *
 ]
 qed-.
 
-fact cnv_cpm_conf_lpr_beta_beta_aux (a) (h) (o) (p) (G) (L) (V) (W) (T):
-     (∀G0,L0,T0. ⦃G,L,ⓐV.ⓛ{p}W.T⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
+fact cnv_cpm_conf_lpr_beta_beta_aux (a) (h) (p) (G) (L) (V) (W) (T):
+     (∀G0,L0,T0. ⦃G,L,ⓐV.ⓛ{p}W.T⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
      ⦃G,L⦄ ⊢ ⓐV.ⓛ{p}W.T ![a,h] →
      ∀V1. ⦃G,L⦄ ⊢ V ➡[h] V1 → ∀V2. ⦃G,L⦄ ⊢ V ➡[h] V2 →
      ∀W1. ⦃G,L⦄ ⊢ W ➡[h] W1 → ∀W2. ⦃G,L⦄ ⊢ W ➡[h] W2 →
      ∀n1,T1. ⦃G,L.ⓛW⦄ ⊢ T ➡[n1,h] T1 → ∀n2,T2. ⦃G,L.ⓛW⦄ ⊢ T ➡[n2,h] T2 →
      ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G,L1⦄ ⊢ ⓓ{p}ⓝW1.V1.T1 ➡*[n2-n1,h] T & ⦃G,L2⦄ ⊢ ⓓ{p}ⓝW2.V2.T2 ➡*[n1-n2,h] T.
-#a #h #o #p #G0 #L0 #V0 #W0 #T0 #IH #H0
+#a #h #p #G0 #L0 #V0 #W0 #T0 #IH #H0
 #V1 #HV01 #V2 #HV02 #W1 #HW01 #W2 #HW02 #n1 #T1 #HT01 #n2 #T2 #HT02
 #L1 #HL01 #L2 #HL02
 elim (cnv_inv_appl … H0) -H0 #n0 #p0 #X01 #X02 #_ #HV0 #H0 #_ #_ -n0 -p0 -X01 -X02
@@ -255,8 +255,8 @@ lapply (lsubr_cpms_trans … HT2 (L2.ⓓⓝW2.V2) ?) -HT2 /2 width=1 by lsubr_be
 /4 width=5 by cpms_bind_dx, cpm_eps, ex2_intro/
 qed-.
 
-fact cnv_cpm_conf_lpr_theta_theta_aux (a) (h) (o) (p) (G) (L) (V) (W) (T):
-     (∀G0,L0,T0. ⦃G,L,ⓐV.ⓓ{p}W.T⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
+fact cnv_cpm_conf_lpr_theta_theta_aux (a) (h) (p) (G) (L) (V) (W) (T):
+     (∀G0,L0,T0. ⦃G,L,ⓐV.ⓓ{p}W.T⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
      ⦃G,L⦄ ⊢ ⓐV.ⓓ{p}W.T ![a,h] →
      ∀V1. ⦃G,L⦄ ⊢ V ➡[h] V1 → ∀V2. ⦃G,L⦄ ⊢ V ➡[h] V2 →
      ∀W1. ⦃G,L⦄ ⊢ W ➡[h] W1 → ∀W2. ⦃G,L⦄ ⊢ W ➡[h] W2 →
@@ -264,7 +264,7 @@ fact cnv_cpm_conf_lpr_theta_theta_aux (a) (h) (o) (p) (G) (L) (V) (W) (T):
      ∀U1. ⬆*[1]V1 ≘ U1 → ∀U2. ⬆*[1]V2 ≘ U2 →
      ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G,L1⦄ ⊢ ⓓ{p}W1.ⓐU1.T1 ➡*[n2-n1,h] T & ⦃G,L2⦄ ⊢ ⓓ{p}W2.ⓐU2.T2 ➡*[n1-n2,h] T.
-#a #h #o #p #G0 #L0 #V0 #W0 #T0 #IH #H0
+#a #h #p #G0 #L0 #V0 #W0 #T0 #IH #H0
 #V1 #HV01 #V2 #HV02 #W1 #HW01 #W2 #HW02 #n1 #T1 #HT01 #n2 #T2 #HT02 #U1 #HVU1 #U2 #HVU2
 #L1 #HL01 #L2 #HL02
 elim (cnv_inv_appl … H0) -H0 #n0 #p0 #X01 #X02 #_ #HV0 #H0 #_ #_ -n0 -p0 -X01 -X02
@@ -278,14 +278,14 @@ lapply (cpm_lifts_bi … HV2 (Ⓣ) … (L2.ⓓW2) … HVU2 … HVU) -V2 -V [ /3
 /4 width=7 by cpms_appl_dx, cpms_bind_dx, ex2_intro/
 qed-.
 
-fact cnv_cpm_conf_lpr_cast_cast_aux (a) (h) (o) (G) (L) (V) (T):
-     (∀G0,L0,T0. ⦃G,L,ⓝV.T⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
+fact cnv_cpm_conf_lpr_cast_cast_aux (a) (h) (G) (L) (V) (T):
+     (∀G0,L0,T0. ⦃G,L,ⓝV.T⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
      ⦃G,L⦄ ⊢ ⓝV.T ![a,h] →
      ∀n1,V1. ⦃G,L⦄ ⊢ V ➡[n1,h] V1 → ∀n2,V2. ⦃G,L⦄ ⊢ V ➡[n2,h] V2 →
      ∀T1. ⦃G,L⦄ ⊢ T ➡[n1,h] T1 → ∀T2. ⦃G,L⦄ ⊢ T ➡[n2,h] T2 →
      ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G,L1⦄ ⊢ ⓝV1.T1 ➡*[n2-n1,h] T & ⦃G,L2⦄ ⊢ ⓝV2.T2 ➡*[n1-n2,h] T.
-#a #h #o #G0 #L0 #V0 #T0 #IH #H0
+#a #h #G0 #L0 #V0 #T0 #IH #H0
 #n1 #V1 #HV01 #n2 #V2 #HV02 #T1 #HT01 #T2 #HT02
 #L1 #HL01 #L2 #HL02
 elim (cnv_inv_cast … H0) -H0 #X0 #HV0 #HT0 #_ #_ -X0
@@ -295,14 +295,14 @@ elim (cnv_cpm_conf_lpr_sub … IH … HT01 … HT02 … HL01 … HL02) [|*: /2 w
 /3 width=5 by cpms_cast, ex2_intro/
 qed-.
 
-fact cnv_cpm_conf_lpr_cast_epsilon_aux (a) (h) (o) (G) (L) (V) (T):
-     (∀G0,L0,T0. ⦃G,L,ⓝV.T⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
+fact cnv_cpm_conf_lpr_cast_epsilon_aux (a) (h) (G) (L) (V) (T):
+     (∀G0,L0,T0. ⦃G,L,ⓝV.T⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
      ⦃G,L⦄ ⊢ ⓝV.T ![a,h] →
      ∀n1,V1. ⦃G,L⦄ ⊢ V ➡[n1,h] V1 →
      ∀T1. ⦃G,L⦄ ⊢ T ➡[n1,h] T1 → ∀n2,T2. ⦃G,L⦄ ⊢ T ➡[n2,h] T2 →
      ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G,L1⦄ ⊢ ⓝV1.T1 ➡*[n2-n1,h] T & ⦃G,L2⦄ ⊢ T2 ➡*[n1-n2,h] T.
-#a #h #o #G0 #L0 #V0 #T0 #IH #H0
+#a #h #G0 #L0 #V0 #T0 #IH #H0
 #n1 #V1 #HV01 #T1 #HT01 #n2 #T2 #HT02
 #L1 #HL01 #L2 #HL02
 elim (cnv_inv_cast … H0) -H0 #X0 #HV0 #HT0 #_ #_ -X0
@@ -311,15 +311,15 @@ elim (cnv_cpm_conf_lpr_sub … IH … HT01 … HT02 … HL01 … HL02) [|*: /2 w
 /3 width=3 by cpms_eps, ex2_intro/
 qed-.
 
-fact cnv_cpm_conf_lpr_cast_ee_aux (a) (h) (o) (G) (L) (V) (T):
-     (∀G0,L0,T0. ⦃G,L,ⓝV.T⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpm_trans_lpr a h G0 L0 T0) →
-     (∀G0,L0,T0. ⦃G,L,ⓝV.T⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
+fact cnv_cpm_conf_lpr_cast_ee_aux (a) (h) (G) (L) (V) (T):
+     (∀G0,L0,T0. ⦃G,L,ⓝV.T⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpm_trans_lpr a h G0 L0 T0) →
+     (∀G0,L0,T0. ⦃G,L,ⓝV.T⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
      ⦃G,L⦄ ⊢ ⓝV.T ![a,h] →
      ∀n1,V1. ⦃G,L⦄ ⊢ V ➡[n1,h] V1 → ∀n2,V2. ⦃G,L⦄ ⊢ V ➡[n2,h] V2 →
      ∀T1. ⦃G,L⦄ ⊢ T ➡[n1,h] T1 →
      ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G,L1⦄ ⊢ ⓝV1.T1 ➡*[↑n2-n1,h] T & ⦃G,L2⦄ ⊢ V2 ➡*[n1-↑n2,h] T.
-#a #h #o #G0 #L0 #V0 #T0 #IH2 #IH1 #H0
+#a #h #G0 #L0 #V0 #T0 #IH2 #IH1 #H0
 #n1 #V1 #HV01 #n2 #V2 #HV02 #T1 #HT01
 #L1 #HL01 #L2 #HL02 -HV01
 elim (cnv_inv_cast … H0) -H0 #X0 #HV0 #HT0 #HVX0 #HTX0
@@ -334,13 +334,13 @@ lapply (cpms_trans … HT1 … HTU) -T <arith_l2 #H1
 /3 width=3 by cpms_eps, ex2_intro/
 qed-.
 
-fact cnv_cpm_conf_lpr_epsilon_epsilon_aux (a) (h) (o) (G) (L) (V) (T):
-     (∀G0,L0,T0. ⦃G,L,ⓝV.T⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
+fact cnv_cpm_conf_lpr_epsilon_epsilon_aux (a) (h) (G) (L) (V) (T):
+     (∀G0,L0,T0. ⦃G,L,ⓝV.T⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
      ⦃G,L⦄ ⊢ ⓝV.T ![a,h] →
      ∀n1,T1. ⦃G,L⦄ ⊢ T ➡[n1,h] T1 → ∀n2,T2. ⦃G,L⦄ ⊢ T ➡[n2,h] T2 →
      ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G,L1⦄ ⊢ T1 ➡*[n2-n1,h] T & ⦃G,L2⦄ ⊢ T2 ➡*[n1-n2,h] T.
-#a #h #o #G0 #L0 #V0 #T0 #IH #H0
+#a #h #G0 #L0 #V0 #T0 #IH #H0
 #n1 #T1 #HT01 #n2 #T2 #HT02
 #L1 #HL01 #L2 #HL02
 elim (cnv_inv_cast … H0) -H0 #X0 #_ #HT0 #_ #_ -X0
@@ -349,14 +349,14 @@ elim (cnv_cpm_conf_lpr_sub … IH … HT01 … HT02 … HL01 … HL02) [|*: /2 w
 /2 width=3 by ex2_intro/
 qed-.
 
-fact cnv_cpm_conf_lpr_epsilon_ee_aux (a) (h) (o) (G) (L) (V) (T):
-     (∀G0,L0,T0. ⦃G,L,ⓝV.T⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpm_trans_lpr a h G0 L0 T0) →
-     (∀G0,L0,T0. ⦃G,L,ⓝV.T⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
+fact cnv_cpm_conf_lpr_epsilon_ee_aux (a) (h) (G) (L) (V) (T):
+     (∀G0,L0,T0. ⦃G,L,ⓝV.T⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpm_trans_lpr a h G0 L0 T0) →
+     (∀G0,L0,T0. ⦃G,L,ⓝV.T⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
      ⦃G,L⦄ ⊢ ⓝV.T ![a,h] →
      ∀n1,T1. ⦃G,L⦄ ⊢ T ➡[n1,h] T1 → ∀n2,V2. ⦃G,L⦄ ⊢ V ➡[n2,h] V2 →
      ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G,L1⦄ ⊢ T1 ➡*[↑n2-n1,h] T & ⦃G,L2⦄ ⊢ V2 ➡*[n1-↑n2,h] T.
-#a #h #o #G0 #L0 #V0 #T0 #IH2 #IH1 #H0
+#a #h #G0 #L0 #V0 #T0 #IH2 #IH1 #H0
 #n1 #T1 #HT01 #n2 #V2 #HV02
 #L1 #HL01 #L2 #HL02
 elim (cnv_inv_cast … H0) -H0 #X0 #HV0 #HT0 #HVX0 #HTX0
@@ -371,13 +371,13 @@ lapply (cpms_trans … HT1 … HTU) -T <arith_l2 #H1
 /2 width=3 by ex2_intro/
 qed-.
 
-fact cnv_cpm_conf_lpr_ee_ee_aux (a) (h) (o) (G) (L) (V) (T):
-     (∀G0,L0,T0. ⦃G,L,ⓝV.T⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
+fact cnv_cpm_conf_lpr_ee_ee_aux (a) (h) (G) (L) (V) (T):
+     (∀G0,L0,T0. ⦃G,L,ⓝV.T⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
      ⦃G,L⦄ ⊢ ⓝV.T ![a,h] →
      ∀n1,V1. ⦃G,L⦄ ⊢ V ➡[n1,h] V1 → ∀n2,V2. ⦃G,L⦄ ⊢ V ➡[n2,h] V2 →
      ∀L1. ⦃G,L⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G,L⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G,L1⦄ ⊢ V1 ➡*[n2-n1,h] T & ⦃G,L2⦄ ⊢ V2 ➡*[n1-n2,h] T.
-#a #h #o #G0 #L0 #V0 #T0 #IH #H0
+#a #h #G0 #L0 #V0 #T0 #IH #H0
 #n1 #V1 #HV01 #n2 #V2 #HV02
 #L1 #HL01 #L2 #HL02
 elim (cnv_inv_cast … H0) -H0 #X0 #HV0 #_ #_ #_ -X0
@@ -386,19 +386,19 @@ elim (cnv_cpm_conf_lpr_sub … IH … HV01 … HV02 … HL01 … HL02) [|*: /2 w
 /2 width=3 by ex2_intro/
 qed-.
 
-fact cnv_cpm_conf_lpr_aux (a) (h) (o):
+fact cnv_cpm_conf_lpr_aux (a) (h):
                           ∀G0,L0,T0.
-                          (∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h, o] ⦃G1, L1, T1⦄ → IH_cnv_cpm_trans_lpr a h G1 L1 T1) →
-                          (∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h, o] ⦃G1, L1, T1⦄ → IH_cnv_cpms_conf_lpr a h G1 L1 T1) →
+                          (∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h] ⦃G1, L1, T1⦄ → IH_cnv_cpm_trans_lpr a h G1 L1 T1) →
+                          (∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h] ⦃G1, L1, T1⦄ → IH_cnv_cpms_conf_lpr a h G1 L1 T1) →
                           ∀G1,L1,T1. G0 = G1 → L0 = L1 → T0 = T1 → IH_cnv_cpm_conf_lpr a h G1 L1 T1.
-#a #h #o #G0 #L0 #T0 #IH2 #IH1 #G #L * [| * [| * ]]
+#a #h #G0 #L0 #T0 #IH2 #IH1 #G #L * [| * [| * ]]
 [ #I #HG0 #HL0 #HT0 #HT #n1 #X1 #HX1 #n2 #X2 #HX2 #L1 #HL1 #L2 #HL2 destruct
   elim (cpm_inv_atom1_drops … HX1) -HX1 *
   elim (cpm_inv_atom1_drops … HX2) -HX2 *
-  [ #H21 #H22 #H11 #H12 destruct -a -o -L
+  [ #H21 #H22 #H11 #H12 destruct -a -L
     <minus_O_n
     /2 width=1 by cnv_cpm_conf_lpr_atom_atom_aux/
-  | #s2 #H21 #H22 #H23 #H11 #H12 destruct -a -o -L
+  | #s2 #H21 #H22 #H23 #H11 #H12 destruct -a -L
     <minus_O_n <minus_n_O
     /2 width=1 by cnv_cpm_conf_lpr_atom_ess_aux/
   | #K2 #V2 #XV2 #i #HLK2 #HVX2 #HXV2 #H21 #H11 #H12 destruct -IH2
@@ -407,10 +407,10 @@ fact cnv_cpm_conf_lpr_aux (a) (h) (o):
   | #m2 #K2 #W2 #XW2 #i #HLK2 #HWX2 #HXW2 #H21 #H22 #H11 #H12 destruct -IH2
     <minus_O_n <minus_n_O
     @(cnv_cpm_conf_lpr_atom_ell_aux … IH1) -IH1 /1 width=6 by/
-  | #H21 #H22 #s1 #H11 #H12 #H13 destruct -a -o -L
+  | #H21 #H22 #s1 #H11 #H12 #H13 destruct -a -L
     <minus_O_n <minus_n_O
     /3 width=1 by cnv_cpm_conf_lpr_atom_ess_aux, ex2_commute/
-  | #s2 #H21 #H22 #H23 #s1 #H11 #H12 #H13 destruct -a -o -L
+  | #s2 #H21 #H22 #H23 #s1 #H11 #H12 #H13 destruct -a -L
     <minus_n_n
     /2 width=1 by cnv_cpm_conf_lpr_atom_atom_aux/
   | #K2 #V2 #XV2 #i2 #_ #_ #_ #H21 #s1 #H11 #H12 #H13 destruct
@@ -421,13 +421,13 @@ fact cnv_cpm_conf_lpr_aux (a) (h) (o):
   | #s2 #H21 #H22 #H23 #K1 #V1 #XV1 #i1 #_ #_ #_ #H11 destruct
   | #K2 #V2 #XV2 #i2 #HLK2 #HVX2 #HXV2 #H21 #K1 #V1 #XV1 #i1 #HLK1 #HVX1 #HXV1 #H11 destruct -IH2
     @(cnv_cpm_conf_lpr_delta_delta_aux … IH1) -IH1 /1 width=13 by/
-  | #m2 #K2 #W2 #XW2 #i2 #HLK2 #_ #_ #H21 #H22 #K1 #V1 #XV1 #i1 #HLK1 #_ #_ #H11 destruct -a -o -XW2 -XV1 -HL2 -HL1
+  | #m2 #K2 #W2 #XW2 #i2 #HLK2 #_ #_ #H21 #H22 #K1 #V1 #XV1 #i1 #HLK1 #_ #_ #H11 destruct -a -XW2 -XV1 -HL2 -HL1
     elim cnv_cpm_conf_lpr_delta_ell_aux /1 width=8 by/
   | #H21 #H22 #m1 #K1 #W1 #XW1 #i1 #HLK1 #HWX1 #HXW1 #H11 #H12 destruct -IH2 
     <minus_O_n <minus_n_O
     @ex2_commute @(cnv_cpm_conf_lpr_atom_ell_aux … IH1) -IH1 /1 width=6 by/
   | #s2 #H21 #H22 #H23 #m1 #K1 #W1 #XW1 #i1 #_ #_ #_ #H11 #H12 destruct
-  | #K2 #V2 #XV2 #i2 #HLK2 #_ #_ #H21 #m1 #K1 #W1 #XW1 #i1 #HLK1 #_ #_ #H11 #H12 destruct -a -o -XV2 -XW1 -HL2 -HL1
+  | #K2 #V2 #XV2 #i2 #HLK2 #_ #_ #H21 #m1 #K1 #W1 #XW1 #i1 #HLK1 #_ #_ #H11 #H12 destruct -a -XV2 -XW1 -HL2 -HL1
     elim cnv_cpm_conf_lpr_delta_ell_aux /1 width=8 by/
   | #m2 #K2 #W2 #XW2 #i2 #HLK2 #HWX2 #HXW2 #H21 #H22 #m1 #K1 #W1 #XW1 #i1 #HLK1 #HWX1 #HXW1 #H11 #H12 destruct -IH2
     >minus_S_S >minus_S_S
index 4919e3eae1e717701e0dfbab19e8e70e80367fea..c02e3007773dc7c7d4ff36ff85d7ed54e149c3d2 100644 (file)
@@ -23,10 +23,10 @@ include "basic_2/dynamic/cnv_fsb.ma".
 
 (* Inversion lemmas with restricted rt-transition for terms *****************)
 
-lemma cnv_cpr_tdeq_fwd_refl (a) (h) (o) (G) (L):
-                            ∀T1,T2. ⦃G, L⦄ ⊢ T1 ➡[h] T2 → T1 ≛[h,o] T2 →
+lemma cnv_cpr_tdeq_fwd_refl (a) (h) (G) (L):
+                            ∀T1,T2. ⦃G, L⦄ ⊢ T1 ➡[h] T2 → T1 ≛ T2 →
                             ⦃G, L⦄ ⊢ T1 ![a,h] → T1 = T2.
-#a #h #o #G #L #T1 #T2 #H @(cpr_ind … H) -G -L -T1 -T2
+#a #h #G #L #T1 #T2 #H @(cpr_ind … H) -G -L -T1 -T2
 [ //
 | #G #K #V1 #V2 #X2 #_ #_ #_ #H1 #_ -a -G -K -V1 -V2
   lapply (tdeq_inv_lref1 … H1) -H1 #H destruct //
@@ -41,11 +41,11 @@ lemma cnv_cpr_tdeq_fwd_refl (a) (h) (o) (G) (L):
   elim (cnv_fwd_flat … H2) -H2 #HV1 #HT1
   /3 width=3 by eq_f2/
 | #G #K #V #T1 #X1 #X2 #HXT1 #HX12 #_ #H1 #H2
-  elim (cnv_fpbg_refl_false … o … H2) -a
+  elim (cnv_fpbg_refl_false … H2) -a
   @(fpbg_tdeq_div … H1) -H1
   /3 width=9 by cpm_tdneq_cpm_fpbg, cpm_zeta, tdeq_lifts_inv_pair_sn/
 | #G #L #U #T1 #T2 #HT12 #_ #H1 #H2
-  elim (cnv_fpbg_refl_false … o … H2) -a
+  elim (cnv_fpbg_refl_false … H2) -a
   @(fpbg_tdeq_div … H1) -H1
   /3 width=6 by cpm_tdneq_cpm_fpbg, cpm_eps, tdeq_inv_pair_xy_y/
 | #p #G #L #V1 #V2 #W1 #W2 #T1 #T2 #_ #_ #_ #_ #_ #_ #H1 #_
@@ -55,11 +55,11 @@ lemma cnv_cpr_tdeq_fwd_refl (a) (h) (o) (G) (L):
 ]
 qed-.
 
-lemma cpm_tdeq_inv_bind_sn (a) (h) (o) (n) (p) (I) (G) (L):
+lemma cpm_tdeq_inv_bind_sn (a) (h) (n) (p) (I) (G) (L):
                            ∀V,T1. ⦃G, L⦄ ⊢ ⓑ{p,I}V.T1 ![a,h] →
-                           ∀X. ⦃G, L⦄ ⊢ ⓑ{p,I}V.T1 ➡[n,h] X → ⓑ{p,I}V.T1 ≛[h,o] X →
-                           ∃∃T2. ⦃G,L⦄ ⊢ V ![a,h] & ⦃G, L.ⓑ{I}V⦄ ⊢ T1 ![a,h] & ⦃G, L.ⓑ{I}V⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛[h,o] T2 & X = ⓑ{p,I}V.T2.
-#a #h #o #n #p #I #G #L #V #T1 #H0 #X #H1 #H2
+                           ∀X. ⦃G, L⦄ ⊢ ⓑ{p,I}V.T1 ➡[n,h] X → ⓑ{p,I}V.T1 ≛ X →
+                           ∃∃T2. ⦃G,L⦄ ⊢ V ![a,h] & ⦃G, L.ⓑ{I}V⦄ ⊢ T1 ![a,h] & ⦃G, L.ⓑ{I}V⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓑ{p,I}V.T2.
+#a #h #n #p #I #G #L #V #T1 #H0 #X #H1 #H2
 elim (cpm_inv_bind1 … H1) -H1 *
 [ #XV #T2 #HXV #HT12 #H destruct
   elim (tdeq_inv_pair … H2) -H2 #_ #H2XV #H2T12
@@ -67,18 +67,18 @@ elim (cpm_inv_bind1 … H1) -H1 *
   lapply (cnv_cpr_tdeq_fwd_refl … HXV H2XV HV) #H destruct -HXV -H2XV
   /2 width=4 by ex5_intro/
 | #X1 #HXT1 #HX1 #H1 #H destruct
-  elim (cnv_fpbg_refl_false … o … H0) -a
+  elim (cnv_fpbg_refl_false … H0) -a
   @(fpbg_tdeq_div … H2) -H2
   /3 width=9 by cpm_tdneq_cpm_fpbg, cpm_zeta, tdeq_lifts_inv_pair_sn/
 ]
 qed-.
 
-lemma cpm_tdeq_inv_appl_sn (a) (h) (o) (n) (G) (L):
+lemma cpm_tdeq_inv_appl_sn (a) (h) (n) (G) (L):
                            ∀V,T1. ⦃G,L⦄ ⊢ ⓐV.T1 ![a,h] →
-                           ∀X. ⦃G,L⦄ ⊢ ⓐV.T1 ➡[n,h] X → ⓐV.T1 ≛[h,o] X →
+                           ∀X. ⦃G,L⦄ ⊢ ⓐV.T1 ➡[n,h] X → ⓐV.T1 ≛ X →
                            ∃∃m,q,W,U1,T2. a = Ⓣ → m ≤ 1 & ⦃G,L⦄ ⊢ V ![a,h] & ⦃G, L⦄ ⊢ V ➡*[1,h] W & ⦃G, L⦄ ⊢ T1 ➡*[m,h] ⓛ{q}W.U1
-                                        & ⦃G,L⦄⊢ T1 ![a,h] & ⦃G, L⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛[h,o] T2 & X = ⓐV.T2.
-#a #h #o #n #G #L #V #T1 #H0 #X #H1 #H2
+                                        & ⦃G,L⦄⊢ T1 ![a,h] & ⦃G, L⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓐV.T2.
+#a #h #n #G #L #V #T1 #H0 #X #H1 #H2
 elim (cpm_inv_appl1 … H1) -H1 *
 [ #XV #T2 #HXV #HT12 #H destruct
   elim (tdeq_inv_pair … H2) -H2 #_ #H2XV #H2T12
@@ -92,34 +92,34 @@ elim (cpm_inv_appl1 … H1) -H1 *
 ]
 qed-.
 
-lemma cpm_tdeq_inv_cast_sn (a) (h) (o) (n) (G) (L):
+lemma cpm_tdeq_inv_cast_sn (a) (h) (n) (G) (L):
                            ∀U1,T1. ⦃G, L⦄ ⊢ ⓝU1.T1 ![a,h] →
-                           ∀X. ⦃G, L⦄ ⊢ ⓝU1.T1 ➡[n,h] X → ⓝU1.T1 ≛[h,o] X →
+                           ∀X. ⦃G, L⦄ ⊢ ⓝU1.T1 ➡[n,h] X → ⓝU1.T1 ≛ X →
                            ∃∃U0,U2,T2. ⦃G,L⦄ ⊢ U1 ➡*[h] U0 & ⦃G,L⦄ ⊢ T1 ➡*[1,h] U0
-                                     & ⦃G, L⦄ ⊢ U1 ![a,h] & ⦃G, L⦄ ⊢ U1 ➡[n,h] U2 & U1 ≛[h,o] U2
-                                     & ⦃G, L⦄ ⊢ T1 ![a,h] & ⦃G, L⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛[h,o] T2 & X = ⓝU2.T2.
-#a #h #o #n #G #L #U1 #T1 #H0 #X #H1 #H2
+                                     & ⦃G, L⦄ ⊢ U1 ![a,h] & ⦃G, L⦄ ⊢ U1 ➡[n,h] U2 & U1 ≛ U2
+                                     & ⦃G, L⦄ ⊢ T1 ![a,h] & ⦃G, L⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓝU2.T2.
+#a #h #n #G #L #U1 #T1 #H0 #X #H1 #H2
 elim (cpm_inv_cast1 … H1) -H1 [ * || * ]
 [ #U2 #T2 #HU12 #HT12 #H destruct
   elim (tdeq_inv_pair … H2) -H2 #_ #H2U12 #H2T12
   elim (cnv_inv_cast … H0) -H0 #U0 #HU1 #HT1 #HU10 #HT1U0
   /2 width=7 by ex9_3_intro/
 | #HT1X
-  elim (cnv_fpbg_refl_false … o … H0) -a
+  elim (cnv_fpbg_refl_false … H0) -a
   @(fpbg_tdeq_div … H2) -H2
   /3 width=6 by cpm_tdneq_cpm_fpbg, cpm_eps, tdeq_inv_pair_xy_y/
 | #m #HU1X #H destruct
-  elim (cnv_fpbg_refl_false … o … H0) -a
+  elim (cnv_fpbg_refl_false … H0) -a
   @(fpbg_tdeq_div … H2) -H2
   /3 width=6 by cpm_tdneq_cpm_fpbg, cpm_ee, tdeq_inv_pair_xy_x/
 ]
 qed-.
 
-lemma cpm_tdeq_inv_bind_dx (a) (h) (o) (n) (p) (I) (G) (L):
+lemma cpm_tdeq_inv_bind_dx (a) (h) (n) (p) (I) (G) (L):
                            ∀X. ⦃G, L⦄ ⊢ X ![a,h] →
-                           ∀V,T2. ⦃G, L⦄ ⊢ X ➡[n,h] ⓑ{p,I}V.T2 → X ≛[h,o]  ⓑ{p,I}V.T2 →
-                           ∃∃T1. ⦃G,L⦄ ⊢ V ![a,h] & ⦃G, L.ⓑ{I}V⦄ ⊢ T1 ![a,h] & ⦃G, L.ⓑ{I}V⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛[h,o] T2 & X = ⓑ{p,I}V.T1.
-#a #h #o #n #p #I #G #L #X #H0 #V #T2 #H1 #H2
+                           ∀V,T2. ⦃G, L⦄ ⊢ X ➡[n,h] ⓑ{p,I}V.T2 → X ≛ ⓑ{p,I}V.T2 →
+                           ∃∃T1. ⦃G,L⦄ ⊢ V ![a,h] & ⦃G, L.ⓑ{I}V⦄ ⊢ T1 ![a,h] & ⦃G, L.ⓑ{I}V⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓑ{p,I}V.T1.
+#a #h #n #p #I #G #L #X #H0 #V #T2 #H1 #H2
 elim (tdeq_inv_pair2 … H2) #V0 #T1 #_ #_ #H destruct
 elim (cpm_tdeq_inv_bind_sn … H0 … H1 H2) -H0 -H1 -H2 #T0 #HV #HT1 #H1T12 #H2T12 #H destruct
 /2 width=5 by ex5_intro/
@@ -127,34 +127,34 @@ qed-.
 
 (* Eliminators with restricted rt-transition for terms **********************)
 
-lemma cpm_tdeq_ind (a) (h) (o) (n) (G) (Q:relation3 …):
+lemma cpm_tdeq_ind (a) (h) (n) (G) (Q:relation3 …):
                    (∀I,L. n = 0 → Q L (⓪{I}) (⓪{I})) →
-                   (∀L,s. n = 1 → deg h o s 0 → Q L (⋆s) (⋆(next h s))) →
+                   (∀L,s. n = 1 → Q L (⋆s) (⋆(next h s))) →
                    (∀p,I,L,V,T1. ⦃G,L⦄⊢ V![a,h] → ⦃G,L.ⓑ{I}V⦄⊢T1![a,h] →
-                    ∀T2. ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛[h,o] T2 →
+                    ∀T2. ⦃G,L.ⓑ{I}V⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
                     Q (L.ⓑ{I}V) T1 T2 → Q L (ⓑ{p,I}V.T1) (ⓑ{p,I}V.T2)
                    ) →
                    (∀m. (a = Ⓣ → m ≤ 1) →
                     ∀L,V. ⦃G,L⦄ ⊢ V ![a,h] → ∀W. ⦃G, L⦄ ⊢ V ➡*[1,h] W →
                     ∀p,T1,U1. ⦃G, L⦄ ⊢ T1 ➡*[m,h] ⓛ{p}W.U1 → ⦃G,L⦄⊢ T1 ![a,h] →
-                    ∀T2. ⦃G, L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛[h,o] T2 →
+                    ∀T2. ⦃G, L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
                     Q L T1 T2 → Q L (ⓐV.T1) (ⓐV.T2)
                    ) →
                    (∀L,U0,U1,T1. ⦃G,L⦄ ⊢ U1 ➡*[h] U0 → ⦃G,L⦄ ⊢ T1 ➡*[1,h] U0 →
-                    ∀U2. ⦃G, L⦄ ⊢ U1 ![a,h] → ⦃G, L⦄ ⊢ U1 ➡[n,h] U2 → U1 ≛[h,o] U2 →
-                    ∀T2. ⦃G, L⦄ ⊢ T1 ![a,h] → ⦃G, L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛[h,o] T2 →
+                    ∀U2. ⦃G, L⦄ ⊢ U1 ![a,h] → ⦃G, L⦄ ⊢ U1 ➡[n,h] U2 → U1 ≛ U2 →
+                    ∀T2. ⦃G, L⦄ ⊢ T1 ![a,h] → ⦃G, L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
                     Q L U1 U2 → Q L T1 T2 → Q L (ⓝU1.T1) (ⓝU2.T2)
                    ) →
                    ∀L,T1. ⦃G,L⦄ ⊢ T1 ![a,h] →
-                   ∀T2. ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛[h,o] T2 → Q L T1 T2.
-#a #h #o #n #G #Q #IH1 #IH2 #IH3 #IH4 #IH5 #L #T1
+                   ∀T2. ⦃G,L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 → Q L T1 T2.
+#a #h #n #G #Q #IH1 #IH2 #IH3 #IH4 #IH5 #L #T1
 @(insert_eq_0 … G) #F
 @(fqup_wf_ind_eq (Ⓣ) … F L T1) -L -T1 -F
 #G0 #L0 #T0 #IH #F #L * [| * [| * ]]
 [ #I #_ #_ #_ #_ #HF #X #H1X #H2X destruct -G0 -L0 -T0
   elim (cpm_tdeq_inv_atom_sn … H1X H2X) -H1X -H2X *
   [ #H1 #H2 destruct /2 width=1 by/
-  | #s #H1 #H2 #H3 #Hs destruct /2 width=1 by/
+  | #s #H1 #H2 #H3 destruct /2 width=1 by/
   ]
 | #p #I #V #T1 #HG #HL #HT #H0 #HF #X #H1X #H2X destruct
   elim (cpm_tdeq_inv_bind_sn … H0 … H1X H2X) -H0 -H1X -H2X #T2 #HV #HT1 #H1T12 #H2T12 #H destruct
@@ -170,14 +170,14 @@ qed-.
 
 (* Advanced properties with restricted rt-transition for terms **************)
 
-lemma cpm_tdeq_free (a) (h) (o) (n) (G) (L):
+lemma cpm_tdeq_free (a) (h) (n) (G) (L):
                     ∀T1. ⦃G, L⦄ ⊢ T1 ![a,h] →
-                    ∀T2. ⦃G, L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛[h,o] T2 →
+                    ∀T2. ⦃G, L⦄ ⊢ T1 ➡[n,h] T2 → T1 ≛ T2 →
                     ∀F,K. ⦃F, K⦄ ⊢ T1 ➡[n,h] T2.
-#a #h #o #n #G #L #T1 #H0 #T2 #H1 #H2
+#a #h #n #G #L #T1 #H0 #T2 #H1 #H2
 @(cpm_tdeq_ind … H0 … H1 H2) -L -T1 -T2
 [ #I #L #H #F #K destruct //
-| #L #s #H #_ #F #K destruct //
+| #L #s #H #F #K destruct //
 | #p #I #L #V #T1 #_ #_ #T2 #_ #_ #IH #F #K
   /2 width=1 by cpm_bind/
 | #m #_ #L #V #_ #W #_ #q #T1 #U1 #_ #_ #T2 #_ #_ #IH #F #K
@@ -189,11 +189,11 @@ qed-.
 
 (* Advanced inversion lemmas with restricted rt-transition for terms ********)
 
-lemma cpm_tdeq_inv_bind_sn_void (a) (h) (o) (n) (p) (I) (G) (L):
+lemma cpm_tdeq_inv_bind_sn_void (a) (h) (n) (p) (I) (G) (L):
                                 ∀V,T1. ⦃G, L⦄ ⊢ ⓑ{p,I}V.T1 ![a,h] →
-                                ∀X. ⦃G, L⦄ ⊢ ⓑ{p,I}V.T1 ➡[n,h] X → ⓑ{p,I}V.T1 ≛[h,o] X →
-                                ∃∃T2. ⦃G,L⦄ ⊢ V ![a,h] & ⦃G, L.ⓑ{I}V⦄ ⊢ T1 ![a,h] & ⦃G, L.ⓧ⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛[h,o] T2 & X = ⓑ{p,I}V.T2.
-#a #h #o #n #p #I #G #L #V #T1 #H0 #X #H1 #H2
+                                ∀X. ⦃G, L⦄ ⊢ ⓑ{p,I}V.T1 ➡[n,h] X → ⓑ{p,I}V.T1 ≛ X →
+                                ∃∃T2. ⦃G,L⦄ ⊢ V ![a,h] & ⦃G, L.ⓑ{I}V⦄ ⊢ T1 ![a,h] & ⦃G, L.ⓧ⦄ ⊢ T1 ➡[n,h] T2 & T1 ≛ T2 & X = ⓑ{p,I}V.T2.
+#a #h #n #p #I #G #L #V #T1 #H0 #X #H1 #H2
 elim (cpm_tdeq_inv_bind_sn … H0 … H1 H2) -H0 -H1 -H2 #T2 #HV #HT1 #H1T12 #H2T12 #H
 /3 width=5 by ex5_intro, cpm_tdeq_free/
 qed-.
index f45bf4d422d75b811ceebaeb73b11c367562760b..8ea98673bd0f65bb155968b45e6bb2ad48dc6381 100644 (file)
@@ -17,36 +17,35 @@ include "basic_2/dynamic/cnv_cpm_tdeq.ma".
 
 (* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************)
 
-definition IH_cnv_cpm_tdeq_conf_lpr (a) (h) (o): relation3 genv lenv term ≝
-                                    λG,L0,T0. ⦃G, L0⦄ ⊢ T0 ![a,h] →
-                                    ∀n1,T1. ⦃G, L0⦄ ⊢ T0 ➡[n1,h] T1 → T0 ≛[h,o] T1 →
-                                    ∀n2,T2. ⦃G, L0⦄ ⊢ T0 ➡[n2,h] T2 → T0 ≛[h,o] T2 →
-                                    ∀L1. ⦃G, L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G, L0⦄ ⊢ ➡[h] L2 →
-                                    ∃∃T. ⦃G, L1⦄ ⊢ T1 ➡[n2-n1,h] T & T1 ≛[h,o] T & ⦃G, L2⦄ ⊢ T2 ➡[n1-n2,h] T & T2 ≛[h,o] T.
+definition IH_cnv_cpm_tdeq_conf_lpr (a) (h): relation3 genv lenv term ≝
+           λG,L0,T0. ⦃G, L0⦄ ⊢ T0 ![a,h] →
+           ∀n1,T1. ⦃G, L0⦄ ⊢ T0 ➡[n1,h] T1 → T0 ≛ T1 →
+           ∀n2,T2. ⦃G, L0⦄ ⊢ T0 ➡[n2,h] T2 → T0 ≛ T2 →
+           ∀L1. ⦃G, L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G, L0⦄ ⊢ ➡[h] L2 →
+           ∃∃T. ⦃G, L1⦄ ⊢ T1 ➡[n2-n1,h] T & T1 ≛ T & ⦃G, L2⦄ ⊢ T2 ➡[n1-n2,h] T & T2 ≛ T.
 
 (* Diamond propery with restricted rt-transition for terms ******************)
 
-fact cnv_cpm_tdeq_conf_lpr_atom_atom_aux (h) (o) (G0) (L1) (L2) (I):
-     ∃∃T. ⦃G0,L1⦄ ⊢ ⓪{I} ➡[h] T & ⓪{I} ≛[h,o] T & ⦃G0, L2⦄ ⊢ ⓪{I} ➡[h] T & ⓪{I} ≛[h,o] T.
-#h #o #G0 #L1 #L2 #I
+fact cnv_cpm_tdeq_conf_lpr_atom_atom_aux (h) (G0) (L1) (L2) (I):
+     ∃∃T. ⦃G0,L1⦄ ⊢ ⓪{I} ➡[h] T & ⓪{I} ≛ T & ⦃G0, L2⦄ ⊢ ⓪{I} ➡[h] T & ⓪{I} ≛ T.
+#h #G0 #L1 #L2 #I
 /2 width=5 by ex4_intro/
 qed-.
 
-fact cnv_cpm_tdeq_conf_lpr_atom_ess_aux (h) (o) (G0) (L1) (L2) (s):
-     deg h o s 0 →
-     ∃∃T. ⦃G0,L1⦄ ⊢ ⋆s ➡[1,h] T & ⋆s ≛[h,o] T & ⦃G0,L2⦄ ⊢ ⋆(next h s) ➡[h] T & ⋆(next h s) ≛[h,o] T.
-#h #o #G0 #L1 #L2 #s #Hs
-/4 width=5 by tdeq_sort, deg_next, ex4_intro/
+fact cnv_cpm_tdeq_conf_lpr_atom_ess_aux (h) (G0) (L1) (L2) (s):
+     ∃∃T. ⦃G0,L1⦄ ⊢ ⋆s ➡[1,h] T & ⋆s ≛ T & ⦃G0,L2⦄ ⊢ ⋆(next h s) ➡[h] T & ⋆(next h s) ≛ T.
+#h #G0 #L1 #L2 #s
+/3 width=5 by tdeq_sort, ex4_intro/
 qed-.
 
-fact cnv_cpm_tdeq_conf_lpr_bind_bind_aux (a) (h) (o) (p) (I) (G0) (L0) (V0) (T0):
-     (∀G,L,T. ⦃G0,L0,ⓑ{p,I}V0.T0⦄ ⊐+ ⦃G,L,T⦄ → IH_cnv_cpm_tdeq_conf_lpr a h G L T) →
+fact cnv_cpm_tdeq_conf_lpr_bind_bind_aux (a) (h) (p) (I) (G0) (L0) (V0) (T0):
+     (∀G,L,T. ⦃G0,L0,ⓑ{p,I}V0.T0⦄ ⊐+ ⦃G,L,T⦄ → IH_cnv_cpm_tdeq_conf_lpr a h G L T) →
      ⦃G0,L0⦄ ⊢ ⓑ{p,I}V0.T0 ![a,h] →
-     ∀n1,T1. ⦃G0,L0.ⓑ{I}V0⦄ ⊢ T0 ➡[n1,h] T1 → T0 ≛[h,o] T1 →
-     ∀n2,T2. ⦃G0,L0.ⓑ{I}V0⦄ ⊢ T0 ➡[n2,h] T2 → T0 ≛[h,o] T2 →
+     ∀n1,T1. ⦃G0,L0.ⓑ{I}V0⦄ ⊢ T0 ➡[n1,h] T1 → T0 ≛ T1 →
+     ∀n2,T2. ⦃G0,L0.ⓑ{I}V0⦄ ⊢ T0 ➡[n2,h] T2 → T0 ≛ T2 →
      ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
-     ∃∃T. ⦃G0,L1⦄ ⊢ ⓑ{p,I}V0.T1 ➡[n2-n1,h] T & ⓑ{p,I}V0.T1 ≛[h,o] T & ⦃G0,L2⦄ ⊢ ⓑ{p,I}V0.T2 ➡[n1-n2,h] T & ⓑ{p,I}V0.T2 ≛[h,o] T.
-#a #h #o #p #I #G0 #L0 #V0 #T0 #IH #H0
+     ∃∃T. ⦃G0,L1⦄ ⊢ ⓑ{p,I}V0.T1 ➡[n2-n1,h] T & ⓑ{p,I}V0.T1 ≛ T & ⦃G0,L2⦄ ⊢ ⓑ{p,I}V0.T2 ➡[n1-n2,h] T & ⓑ{p,I}V0.T2 ≛ T.
+#a #h #p #I #G0 #L0 #V0 #T0 #IH #H0
 #n1 #T1 #H1T01 #H2T01 #n2 #T2 #H1T02 #H2T02
 #L1 #HL01 #L2 #HL02
 elim (cnv_inv_bind … H0) -H0 #_ #HT0
@@ -55,14 +54,14 @@ elim (IH … H1T01 H2T01 … H1T02 H2T02 (L1.ⓑ{I}V0) … (L2.ⓑ{I}V0)) [|*: /
 /3 width=7 by cpm_bind, tdeq_pair, ex4_intro/
 qed-.
 
-fact cnv_cpm_tdeq_conf_lpr_appl_appl_aux (a) (h) (o) (G0) (L0) (V0) (T0):
-     (∀G,L,T. ⦃G0,L0,ⓐV0.T0⦄ ⊐+ ⦃G,L,T⦄ → IH_cnv_cpm_tdeq_conf_lpr a h G L T) →
+fact cnv_cpm_tdeq_conf_lpr_appl_appl_aux (a) (h) (G0) (L0) (V0) (T0):
+     (∀G,L,T. ⦃G0,L0,ⓐV0.T0⦄ ⊐+ ⦃G,L,T⦄ → IH_cnv_cpm_tdeq_conf_lpr a h G L T) →
      ⦃G0,L0⦄ ⊢ ⓐV0.T0 ![a,h] →
-     ∀n1,T1. ⦃G0,L0⦄ ⊢ T0 ➡[n1,h] T1 → T0 ≛[h,o] T1 →
-     ∀n2,T2. ⦃G0,L0⦄ ⊢ T0 ➡[n2,h] T2 → T0 ≛[h,o] T2 →
+     ∀n1,T1. ⦃G0,L0⦄ ⊢ T0 ➡[n1,h] T1 → T0 ≛ T1 →
+     ∀n2,T2. ⦃G0,L0⦄ ⊢ T0 ➡[n2,h] T2 → T0 ≛ T2 →
      ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
-     ∃∃T. ⦃G0,L1⦄ ⊢ ⓐV0.T1 ➡[n2-n1,h] T & ⓐV0.T1 ≛[h,o] T & ⦃G0,L2⦄ ⊢ ⓐV0.T2 ➡[n1-n2,h] T & ⓐV0.T2 ≛[h,o] T.
-#a #h #o #G0 #L0 #V0 #T0 #IH #H0
+     ∃∃T. ⦃G0,L1⦄ ⊢ ⓐV0.T1 ➡[n2-n1,h] T & ⓐV0.T1 ≛ T & ⦃G0,L2⦄ ⊢ ⓐV0.T2 ➡[n1-n2,h] T & ⓐV0.T2 ≛ T.
+#a #h #G0 #L0 #V0 #T0 #IH #H0
 #n1 #T1 #H1T01 #H2T01 #n2 #T2 #H1T02 #H2T02
 #L1 #HL01 #L2 #HL02
 elim (cnv_inv_appl … H0) -H0 #n0 #p0 #X01 #X02 #_ #_ #HT0 #_ #_ -n0 -p0 -X01 -X02
@@ -71,16 +70,16 @@ elim (IH … H1T01 H2T01 … H1T02 H2T02 … HL01 … HL02) [|*: /2 width=1 by f
 /3 width=7 by cpm_appl, tdeq_pair, ex4_intro/
 qed-.
 
-fact cnv_cpm_tdeq_conf_lpr_cast_cast_aux (a) (h) (o) (G0) (L0) (V0) (T0):
-     (∀G,L,T. ⦃G0,L0,ⓝV0.T0⦄ ⊐+ ⦃G,L,T⦄ → IH_cnv_cpm_tdeq_conf_lpr a h G L T) →
+fact cnv_cpm_tdeq_conf_lpr_cast_cast_aux (a) (h) (G0) (L0) (V0) (T0):
+     (∀G,L,T. ⦃G0,L0,ⓝV0.T0⦄ ⊐+ ⦃G,L,T⦄ → IH_cnv_cpm_tdeq_conf_lpr a h G L T) →
      ⦃G0,L0⦄ ⊢ ⓝV0.T0 ![a,h] →
-     ∀n1,V1. ⦃G0,L0⦄ ⊢ V0 ➡[n1,h] V1 → V0 ≛[h,o] V1 →
-     ∀n2,V2. ⦃G0,L0⦄ ⊢ V0 ➡[n2,h] V2 → V0 ≛[h,o] V2 →
-     ∀T1. ⦃G0,L0⦄ ⊢ T0 ➡[n1,h] T1 → T0 ≛[h,o] T1 →
-     ∀T2. ⦃G0,L0⦄ ⊢ T0 ➡[n2,h] T2 → T0 ≛[h,o] T2 →
+     ∀n1,V1. ⦃G0,L0⦄ ⊢ V0 ➡[n1,h] V1 → V0 ≛ V1 →
+     ∀n2,V2. ⦃G0,L0⦄ ⊢ V0 ➡[n2,h] V2 → V0 ≛ V2 →
+     ∀T1. ⦃G0,L0⦄ ⊢ T0 ➡[n1,h] T1 → T0 ≛ T1 →
+     ∀T2. ⦃G0,L0⦄ ⊢ T0 ➡[n2,h] T2 → T0 ≛ T2 →
      ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
-     ∃∃T. ⦃G0,L1⦄ ⊢ ⓝV1.T1 ➡[n2-n1,h] T & ⓝV1.T1≛[h,o]T & ⦃G0,L2⦄ ⊢ ⓝV2.T2 ➡[n1-n2,h] T & ⓝV2.T2≛[h,o]T.
-#a #h #o #G0 #L0 #V0 #T0 #IH #H0
+     ∃∃T. ⦃G0,L1⦄ ⊢ ⓝV1.T1 ➡[n2-n1,h] T & ⓝV1.T1 ≛ T & ⦃G0,L2⦄ ⊢ ⓝV2.T2 ➡[n1-n2,h] T & ⓝV2.T2 ≛ T.
+#a #h #G0 #L0 #V0 #T0 #IH #H0
 #n1 #V1 #H1V01 #H2V01 #n2 #V2 #H1V02 #H2V02 #T1 #H1T01 #H2T01 #T2 #H1T02 #H2T02
 #L1 #HL01 #L2 #HL02
 elim (cnv_inv_cast … H0) -H0 #X0 #HV0 #HT0 #_ #_ -X0
@@ -90,23 +89,23 @@ elim (IH … H1T01 H2T01 … H1T02 H2T02 … HL01 … HL02) [|*: /2 width=1 by f
 /3 width=7 by cpm_cast, tdeq_pair, ex4_intro/
 qed-.
 
-fact cnv_cpm_tdeq_conf_lpr_aux (a) (h) (o) (G0) (L0) (T0):
-     (∀G,L,T. ⦃G0,L0,T0⦄ ⊐+ ⦃G,L,T⦄ → IH_cnv_cpm_tdeq_conf_lpr a h G L T) →
-     ∀G,L,T. G0 = G → L0 = L → T0 = T → IH_cnv_cpm_tdeq_conf_lpr a h G L T.
-#a #h #o #G0 #L0 #T0 #IH1 #G #L * [| * [| * ]]
+fact cnv_cpm_tdeq_conf_lpr_aux (a) (h) (G0) (L0) (T0):
+     (∀G,L,T. ⦃G0,L0,T0⦄ ⊐+ ⦃G,L,T⦄ → IH_cnv_cpm_tdeq_conf_lpr a h G L T) →
+     ∀G,L,T. G0 = G → L0 = L → T0 = T → IH_cnv_cpm_tdeq_conf_lpr a h G L T.
+#a #h #G0 #L0 #T0 #IH1 #G #L * [| * [| * ]]
 [ #I #HG0 #HL0 #HT0 #HT #n1 #X1 #H1X1 #H2X1 #n2 #X2 #H1X2 #H2X2 #L1 #HL1 #L2 #HL2 destruct
   elim (cpm_tdeq_inv_atom_sn … H1X1 H2X1) -H1X1 -H2X1 *
   elim (cpm_tdeq_inv_atom_sn … H1X2 H2X2) -H1X2 -H2X2 *
   [ #H21 #H22 #H11 #H12 destruct -a -L
     <minus_O_n
     /2 width=1 by cnv_cpm_tdeq_conf_lpr_atom_atom_aux/
-  | #s2 #H21 #H22 #H23 #Hs2 #H11 #H12 destruct -a -L
+  | #s2 #H21 #H22 #H23 #H11 #H12 destruct -a -L
     <minus_O_n <minus_n_O
     /2 width=1 by cnv_cpm_tdeq_conf_lpr_atom_ess_aux/
-  | #H21 #H22 #s1 #H11 #H12 #H13 #Hs1 destruct -a -L
+  | #H21 #H22 #s1 #H11 #H12 #H13 destruct -a -L
     <minus_O_n <minus_n_O
     @ex4_commute /2 width=1 by cnv_cpm_tdeq_conf_lpr_atom_ess_aux/
-  | #s2 #H21 #H22 #H23 #_ #s1 #H11 #H12 #H13 #_ destruct -a -L
+  | #s2 #H21 #H22 #H23 #s1 #H11 #H12 #H13 destruct -a -L
     <minus_n_n
     /2 width=1 by cnv_cpm_tdeq_conf_lpr_atom_atom_aux/
   ]
@@ -128,9 +127,9 @@ fact cnv_cpm_tdeq_conf_lpr_aux (a) (h) (o) (G0) (L0) (T0):
 ]
 qed-.
 
-lemma cnv_cpm_tdeq_conf_lpr (a) (h) (o) (G0) (L0) (T0):
-      IH_cnv_cpm_tdeq_conf_lpr a h G0 L0 T0.
-#a #h #o #G0 #L0 #T0
+lemma cnv_cpm_tdeq_conf_lpr (a) (h) (G0) (L0) (T0):
+      IH_cnv_cpm_tdeq_conf_lpr a h G0 L0 T0.
+#a #h #G0 #L0 #T0
 @(fqup_wf_ind (Ⓣ) … G0 L0 T0) -G0 -L0 -T0 #G0 #L0 #T0 #IH
 /3 width=17 by cnv_cpm_tdeq_conf_lpr_aux/
 qed-.
index 7b19372587bad0a094c758e0ffe8a67577bd0868..3a3919fc4bddc06454c5c8b44ce1197ffb04b94d 100644 (file)
@@ -17,25 +17,25 @@ include "basic_2/dynamic/cnv_cpm_tdeq.ma".
 
 (* CONTEXT-SENSITIVE NATIVE VALIDITY FOR TERMS ******************************)
 
-definition IH_cnv_cpm_tdeq_cpm_trans (a) (h) (o): relation3 genv lenv term ≝
+definition IH_cnv_cpm_tdeq_cpm_trans (a) (h): relation3 genv lenv term ≝
            λG,L,T1. ⦃G, L⦄ ⊢ T1 ![a,h] →
-           ∀n1,T.  ⦃G,L⦄ ⊢ T1 ➡[n1,h] T → T1 ≛[h,o] T →
+           ∀n1,T.  ⦃G,L⦄ ⊢ T1 ➡[n1,h] T → T1 ≛ T →
            ∀n2,T2. ⦃G,L⦄ ⊢ T ➡[n2,h] T2 →
-           ∃∃T0. ⦃G,L⦄ ⊢ T1 ➡[n2,h] T0 & ⦃G,L⦄ ⊢ T0 ➡[n1,h] T2 & T0 ≛[h,o] T2.
+           ∃∃T0. ⦃G,L⦄ ⊢ T1 ➡[n2,h] T0 & ⦃G,L⦄ ⊢ T0 ➡[n1,h] T2 & T0 ≛ T2.
 
 (* Transitive properties restricted rt-transition for terms *****************)
 
-fact cnv_cpm_tdeq_cpm_trans_sub (a) (h) (o) (G0) (L0) (T0):
-     (∀G,L,T. ⦃G0, L0, T0⦄ >[h,o] ⦃G, L, T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
-     (∀G,L,T. ⦃G0,L0,T0⦄ ⊐+ ⦃G,L,T⦄ → IH_cnv_cpm_tdeq_cpm_trans a h G L T) →
-     ∀G,L,T1. G0 = G → L0 = L → T0 = T1 → IH_cnv_cpm_tdeq_cpm_trans a h G L T1.
-#a #h #o #G0 #L0 #T0 #IH2 #IH1 #G #L * [| * [| * ]]
+fact cnv_cpm_tdeq_cpm_trans_sub (a) (h) (G0) (L0) (T0):
+     (∀G,L,T. ⦃G0, L0, T0⦄ >[h] ⦃G, L, T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
+     (∀G,L,T. ⦃G0,L0,T0⦄ ⊐+ ⦃G,L,T⦄ → IH_cnv_cpm_tdeq_cpm_trans a h G L T) →
+     ∀G,L,T1. G0 = G → L0 = L → T0 = T1 → IH_cnv_cpm_tdeq_cpm_trans a h G L T1.
+#a #h #G0 #L0 #T0 #IH2 #IH1 #G #L * [| * [| * ]]
 [ #I #_ #_ #_ #_ #n1 #X1 #H1X #H2X #n2 #X2 #HX2 destruct -G0 -L0 -T0
   elim (cpm_tdeq_inv_atom_sn … H1X H2X) -H1X -H2X *
   [ #H1 #H2 destruct /2 width=4 by ex3_intro/
-  | #s #H1 #H2 #H3 #Hs destruct
+  | #s #H1 #H2 #H3 destruct
     elim (cpm_inv_sort1 … HX2) -HX2 #H #Hn2 destruct >iter_n_Sm
-    /5 width=6 by cpm_sort, tdeq_sort, deg_iter, deg_next, ex3_intro/
+    /3 width=4 by cpm_sort, tdeq_sort, ex3_intro/
   ]
 | #p #I #V1 #T1 #HG #HL #HT #H0 #n1 #X1 #H1X #H2X #n2 #X2 #HX2 destruct
   elim (cpm_tdeq_inv_bind_sn … H0 … H1X H2X) -H0 -H1X -H2X #T #_ #H0T1 #H1T1 #H2T1 #H destruct
@@ -88,10 +88,10 @@ fact cnv_cpm_tdeq_cpm_trans_sub (a) (h) (o) (G0) (L0) (T0):
 ]
 qed-.
 
-fact cnv_cpm_tdeq_cpm_trans_aux (a) (h) (o) (G0) (L0) (T0):
-     (∀G,L,T. ⦃G0, L0, T0⦄ >[h, o] ⦃G, L, T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
-     IH_cnv_cpm_tdeq_cpm_trans a h G0 L0 T0.
-#a #h #o #G0 #L0 #T0
+fact cnv_cpm_tdeq_cpm_trans_aux (a) (h) (G0) (L0) (T0):
+     (∀G,L,T. ⦃G0, L0, T0⦄ >[h] ⦃G, L, T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
+     IH_cnv_cpm_tdeq_cpm_trans a h G0 L0 T0.
+#a #h #G0 #L0 #T0
 @(fqup_wf_ind (Ⓣ) … G0 L0 T0) -G0 -L0 -T0 #G0 #L0 #T0 #IH #IH0
 /5 width=10 by cnv_cpm_tdeq_cpm_trans_sub, fqup_fpbg_trans/
 qed-.
index 6d58815d0b091370a8902a190d8ad203c78c387a..8e2781a6b1b4e5f38f94b5d31fdeeb1a7e3bc8bf 100644 (file)
@@ -23,12 +23,12 @@ include "basic_2/dynamic/lsubv_cnv.ma".
 
 (* Sub preservation propery with t-bound rt-transition for terms ************)
 
-fact cnv_cpm_trans_lpr_aux (a) (h) (o):
+fact cnv_cpm_trans_lpr_aux (a) (h):
                            ∀G0,L0,T0.
-                           (∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h, o] ⦃G1, L1, T1⦄ → IH_cnv_cpms_conf_lpr a h G1 L1 T1) →
-                           (∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h, o] ⦃G1, L1, T1⦄ → IH_cnv_cpm_trans_lpr a h G1 L1 T1) →
+                           (∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h] ⦃G1, L1, T1⦄ → IH_cnv_cpms_conf_lpr a h G1 L1 T1) →
+                           (∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h] ⦃G1, L1, T1⦄ → IH_cnv_cpm_trans_lpr a h G1 L1 T1) →
                            ∀G1,L1,T1. G0 = G1 → L0 = L1 → T0 = T1 → IH_cnv_cpm_trans_lpr a h G1 L1 T1.
-#a #h #o #G0 #L0 #T0 #IH2 #IH1 #G1 #L1 * * [|||| * ]
+#a #h #G0 #L0 #T0 #IH2 #IH1 #G1 #L1 * * [|||| * ]
 [ #s #HG0 #HL0 #HT0 #H1 #x #X #H2 #L2 #_ destruct -IH2 -IH1 -H1
   elim (cpm_inv_sort1 … H2) -H2 #H #_ destruct //
 | #i #HG0 #HL0 #HT0 #H1 #x #X #H2 #L2 #HL12 destruct -IH2
index fcb2cb3194ae793470c939da473af41fa560a321..d1d60870d403d93023f119deba88212c70a8a853 100644 (file)
@@ -19,29 +19,29 @@ include "basic_2/dynamic/cnv_cpms_tdeq_conf.ma".
 
 (* Sub confluence propery with t-bound rt-computation for terms *************)
 
-fact cnv_cpms_conf_lpr_tdeq_tdeq_aux (a) (h) (o) (G0) (L0) (T0):
-     (∀G,L,T. ⦃G0,L0,T0⦄ >[h,o] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
-     (∀G,L,T. ⦃G0,L0,T0⦄ >[h,o] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
+fact cnv_cpms_conf_lpr_tdeq_tdeq_aux (a) (h) (G0) (L0) (T0):
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
      ⦃G0,L0⦄ ⊢ T0 ![a,h] →
-     ∀n1,T1. ⦃G0,L0⦄ ⊢ T0 ➡*[n1,h] T1 → T0 ≛[h,o] T1 →
-     ∀n2,T2. ⦃G0,L0⦄ ⊢ T0 ➡*[n2,h] T2 → T0 ≛[h,o] T2 →
+     ∀n1,T1. ⦃G0,L0⦄ ⊢ T0 ➡*[n1,h] T1 → T0 ≛ T1 →
+     ∀n2,T2. ⦃G0,L0⦄ ⊢ T0 ➡*[n2,h] T2 → T0 ≛ T2 →
      ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G0,L1⦄ ⊢ T1 ➡*[n2-n1,h] T & ⦃G0,L2⦄ ⊢ T2 ➡*[n1-n2,h] T.
-#a #h #o #G #L0 #T0 #IH2 #IH1 #HT0
+#a #h #G #L0 #T0 #IH2 #IH1 #HT0
 #n1 #T1 #H1T01 #H2T01 #n2 #T2 #H1T02 #H2T02
 #L1 #HL01 #L2 #HL02
 elim (cnv_cpms_tdeq_conf_lpr_aux … IH2 IH1 … H1T01 … H1T02 … HL01 … HL02) -IH2 -IH1 -H1T01 -H1T02 -HL01 -HL02
 /2 width=3 by ex2_intro/
 qed-.
 
-fact cnv_cpms_conf_lpr_refl_tdneq_sub (a) (h) (o) (G0) (L0) (T0) (m21) (m22):
-     (∀G,L,T. ⦃G0,L0,T0⦄ >[h,o] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
-     (∀G,L,T. ⦃G0,L0,T0⦄ >[h,o] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
+fact cnv_cpms_conf_lpr_refl_tdneq_sub (a) (h) (G0) (L0) (T0) (m21) (m22):
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
      ⦃G0,L0⦄ ⊢ T0 ![a,h] →
-     ∀X2. ⦃G0,L0⦄ ⊢ T0 ➡[m21,h] X2 → (T0 ≛[h,o] X2 → ⊥) → ∀T2. ⦃G0,L0⦄ ⊢ X2 ➡*[m22,h] T2 →
+     ∀X2. ⦃G0,L0⦄ ⊢ T0 ➡[m21,h] X2 → (T0 ≛ X2 → ⊥) → ∀T2. ⦃G0,L0⦄ ⊢ X2 ➡*[m22,h] T2 →
      ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G0,L1⦄ ⊢ T0 ➡*[m21+m22,h] T& ⦃G0,L2⦄ ⊢ T2 ➡*[h] T.
-#a #h #o #G0 #L0 #T0 #m21 #m22 #IH2 #IH1 #H0
+#a #h #G0 #L0 #T0 #m21 #m22 #IH2 #IH1 #H0
 #X2 #HX02 #HnX02 #T2 #HXT2
 #L1 #HL01 #L2 #HL02
 lapply (cnv_cpm_trans_lpr_aux … IH1 IH2 … HX02 … L0 ?) // #HX2
@@ -50,39 +50,39 @@ elim (cnv_cpm_conf_lpr_aux … IH2 IH1 … HX02 … 0 T0 … L0 … HL01) //
 elim (cnv_cpms_strip_lpr_sub … IH1 … HXT2 0 X2 … HL02 L0) [|*: /4 width=2 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/ ]
--a -o -L0 -X2 <minus_n_O <minus_O_n #Y #HY1 #HY2
+-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
 /2 width=3 by ex2_intro/
 qed-.
 
-fact cnv_cpms_conf_lpr_step_tdneq_sub (a) (h) (o) (G0) (L0) (T0) (m11) (m12) (m21) (m22):
-     (∀G,L,T. ⦃G0,L0,T0⦄ >[h,o] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
-     (∀G,L,T. ⦃G0,L0,T0⦄ >[h,o] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
+fact cnv_cpms_conf_lpr_step_tdneq_sub (a) (h) (G0) (L0) (T0) (m11) (m12) (m21) (m22):
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
      ⦃G0,L0⦄ ⊢ T0 ![a,h] →
-     ∀X1. ⦃G0,L0⦄ ⊢ T0 ➡[m11,h] X1 → T0 ≛[h,o] X1 → ∀T1. ⦃G0,L0⦄ ⊢ X1 ➡*[m12,h] T1 → X1 ≛[h,o] T1 →
-     ∀X2. ⦃G0,L0⦄ ⊢ T0 ➡[m21,h] X2 → (T0 ≛[h,o] X2 → ⊥) → ∀T2. ⦃G0,L0⦄ ⊢ X2 ➡*[m22,h] T2 →
+     ∀X1. ⦃G0,L0⦄ ⊢ T0 ➡[m11,h] X1 → T0 ≛ X1 → ∀T1. ⦃G0,L0⦄ ⊢ X1 ➡*[m12,h] T1 → X1 ≛ T1 →
+     ∀X2. ⦃G0,L0⦄ ⊢ T0 ➡[m21,h] X2 → (T0 ≛ X2 → ⊥) → ∀T2. ⦃G0,L0⦄ ⊢ X2 ➡*[m22,h] T2 →
      ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
-     ((∀G,L,T. ⦃G0,L0,X1⦄ >[h,o] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
-      (∀G,L,T. ⦃G0,L0,X1⦄ >[h,o] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
+     ((∀G,L,T. ⦃G0,L0,X1⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
+      (∀G,L,T. ⦃G0,L0,X1⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
       ∀m21,m22.
-      ∀X2. ⦃G0,L0⦄ ⊢ X1 ➡[m21,h] X2 → (X1 ≛[h,o] X2 → ⊥) →
+      ∀X2. ⦃G0,L0⦄ ⊢ X1 ➡[m21,h] X2 → (X1 ≛ X2 → ⊥) →
       ∀T2. ⦃G0,L0⦄ ⊢ X2 ➡*[m22,h] T2 →
       ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
       ∃∃T. ⦃G0,L1⦄ ⊢ T1 ➡*[m21+m22-m12,h] T & ⦃G0,L2⦄ ⊢ T2 ➡*[m12-(m21+m22),h]T
      ) →
      ∃∃T. ⦃G0,L1⦄ ⊢ T1 ➡*[m21+m22-(m11+m12),h] T & ⦃G0,L2⦄ ⊢ T2 ➡*[m11+m12-(m21+m22),h] T.
-#a #h #o #G0 #L0 #T0 #m11 #m12 #m21 #m22 #IH2 #IH1 #HT0
+#a #h #G0 #L0 #T0 #m11 #m12 #m21 #m22 #IH2 #IH1 #HT0
 #X1 #H1X01 #H2X01 #T1 #H1XT1 #H2XT1 #X2 #H1X02 #H2X02 #T2 #HXT2
 #L1 #HL01 #L2 #HL02 #IH
 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,o] ⦃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⦄ >[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
 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 (tdeq_dec h o X1 Z0) #H2XZ
+elim (tdeq_dec X1 Z0) #H2XZ
 [ -IH
   elim (cnv_cpms_conf_lpr_tdeq_tdeq_aux … HX1 … H1XT1 H2XT1 … HXZ10 H2XZ … L1 … L0) [2,3: // |4,5: /4 width=5 by cpm_fpbq, fpbq_fpbg_trans/ ]
 | -H1XT1 -H2XT1
@@ -98,15 +98,15 @@ lapply (cpms_trans … HTZ2 … HZ02) -Z2 <arith_l4 #HT2Z
 /2 width=3 by ex2_intro/
 qed-.
 
-fact cnv_cpms_conf_lpr_tdeq_tdneq_aux (a) (h) (o) (G0) (L0) (T0) (n1) (m21) (m22):
-     (∀G,L,T. ⦃G0,L0,T0⦄ >[h,o] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
-     (∀G,L,T. ⦃G0,L0,T0⦄ >[h,o] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
+fact cnv_cpms_conf_lpr_tdeq_tdneq_aux (a) (h) (G0) (L0) (T0) (n1) (m21) (m22):
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
      ⦃G0,L0⦄ ⊢ T0 ![a,h] →
-     ∀T1. ⦃G0,L0⦄ ⊢ T0 ➡*[n1,h] T1 → T0 ≛[h,o] T1 →
-     ∀X2. ⦃G0,L0⦄ ⊢ T0 ➡[m21,h] X2 → (T0 ≛[h,o] X2 → ⊥) → ∀T2. ⦃G0,L0⦄ ⊢ X2 ➡*[m22,h] T2 →
+     ∀T1. ⦃G0,L0⦄ ⊢ T0 ➡*[n1,h] T1 → T0 ≛ T1 →
+     ∀X2. ⦃G0,L0⦄ ⊢ T0 ➡[m21,h] X2 → (T0 ≛ X2 → ⊥) → ∀T2. ⦃G0,L0⦄ ⊢ X2 ➡*[m22,h] T2 →
      ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G0,L1⦄ ⊢ T1 ➡*[m21+m22-n1,h] T & ⦃G0,L2⦄ ⊢ T2 ➡*[n1-(m21+m22),h] T.
-#a #h #o #G0 #L0 #T0 #n1 #m21 #m22 #IH2 #IH1 #HT0
+#a #h #G0 #L0 #T0 #n1 #m21 #m22 #IH2 #IH1 #HT0
 #T1 #H1T01 #H2T01
 generalize in match m22; generalize in match m21; -m21 -m22
 generalize in match IH1; generalize in match IH2;
@@ -121,22 +121,22 @@ generalize in match IH1; generalize in match IH2;
 ]
 qed-.
 
-fact cnv_cpms_conf_lpr_tdneq_tdneq_aux (a) (h) (o) (G0) (L0) (T0) (m11) (m12) (m21) (m22):
-     (∀G,L,T. ⦃G0,L0,T0⦄ >[h,o] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
-     (∀G,L,T. ⦃G0,L0,T0⦄ >[h,o] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
+fact cnv_cpms_conf_lpr_tdneq_tdneq_aux (a) (h) (G0) (L0) (T0) (m11) (m12) (m21) (m22):
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
      ⦃G0,L0⦄ ⊢ T0 ![a,h] →
-     ∀X1. ⦃G0,L0⦄ ⊢ T0 ➡[m11,h] X1 → (T0 ≛[h,o] X1 → ⊥) → ∀T1. ⦃G0,L0⦄ ⊢ X1 ➡*[m12,h] T1 →
-     ∀X2. ⦃G0,L0⦄ ⊢ T0 ➡[m21,h] X2 → (T0 ≛[h,o] X2 → ⊥) → ∀T2. ⦃G0,L0⦄ ⊢ X2 ➡*[m22,h] T2 →
+     ∀X1. ⦃G0,L0⦄ ⊢ T0 ➡[m11,h] X1 → (T0 ≛ X1 → ⊥) → ∀T1. ⦃G0,L0⦄ ⊢ X1 ➡*[m12,h] T1 →
+     ∀X2. ⦃G0,L0⦄ ⊢ T0 ➡[m21,h] X2 → (T0 ≛ X2 → ⊥) → ∀T2. ⦃G0,L0⦄ ⊢ X2 ➡*[m22,h] T2 →
      ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
      ∃∃T. ⦃G0,L1⦄ ⊢ T1 ➡*[m21+m22-(m11+m12),h] T & ⦃G0,L2⦄ ⊢ T2 ➡*[m11+m12-(m21+m22),h] T.
-#a #h #o #G0 #L0 #T0 #m11 #m12 #m21 #m22 #IH2 #IH1 #H0
+#a #h #G0 #L0 #T0 #m11 #m12 #m21 #m22 #IH2 #IH1 #H0
 #X1 #HX01 #HnX01 #T1 #HXT1 #X2 #HX02 #HnX02 #T2 #HXT2
 #L1 #HL01 #L2 #HL02
 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,o] ⦃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⦄ >[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
 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
@@ -146,14 +146,14 @@ lapply (cpms_trans … HTZ2 … HZ02) -Z2 <arith_l4 #HT2Z
 /2 width=3 by ex2_intro/
 qed-.
 
-fact cnv_cpms_conf_lpr_aux (a) (h) (o) (G0) (L0) (T0):
-                           (∀G,L,T. ⦃G0,L0,T0⦄ >[h,o] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
-                           (∀G,L,T. ⦃G0,L0,T0⦄ >[h,o] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
+fact cnv_cpms_conf_lpr_aux (a) (h) (G0) (L0) (T0):
+                           (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
+                           (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
                            ∀G,L,T. G0 = G → L0 = L → T0 = T → IH_cnv_cpms_conf_lpr a h G L T.
-#a #h #o #G #L #T #IH2 #IH1 #G0 #L0 #T0 #HG #HL #HT
+#a #h #G #L #T #IH2 #IH1 #G0 #L0 #T0 #HG #HL #HT
 #HT0 #n1 #T1 #HT01 #n2 #T2 #HT02 #L1 #HL01 #L2 #HL02 destruct
-elim (tdeq_dec h o T0 T1) #H2T01
-elim (tdeq_dec h o T0 T2) #H2T02
+elim (tdeq_dec T0 T1) #H2T01
+elim (tdeq_dec T0 T2) #H2T02
 [ @(cnv_cpms_conf_lpr_tdeq_tdeq_aux … IH2 IH1) -IH2 -IH1 /2 width=1 by/
 | elim (cpms_tdneq_fwd_step_sn_aux … HT02 HT0 H2T02 IH1 IH2) -HT02 -H2T02
   #m21 #m22 #X2 #HX02 #HnX02 #HXT2 #H2 destruct
index 1c5287e63b02adce8b93171e4d3326fc9174bda9..44790ef382c31941c1634b52c648de544f6dbd4b 100644 (file)
@@ -18,17 +18,17 @@ include "basic_2/dynamic/cnv_cpm_tdeq_trans.ma".
 
 (* Properties with restricted rt-computation for terms **********************)
 
-fact cpms_tdneq_fwd_step_sn_aux (a) (h) (n) (o) (G) (L) (T1):
-     ∀T2. ⦃G, L⦄ ⊢ T1 ➡*[n,h] T2 → ⦃G, L⦄ ⊢ T1 ![a,h] → (T1 ≛[h,o] T2 → ⊥) →
-     (∀G0,L0,T0. ⦃G,L,T1⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
-     (∀G0,L0,T0. ⦃G,L,T1⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpm_trans_lpr a h G0 L0 T0) →
-     ∃∃n1,n2,T0. ⦃G, L⦄ ⊢ T1 ➡[n1,h] T0 & T1 ≛[h,o] T0 → ⊥ & ⦃G, L⦄ ⊢ T0 ➡*[n2,h] T2 & n1+n2 = n.
-#a #h #n #o #G #L #T1 #T2 #H
+fact cpms_tdneq_fwd_step_sn_aux (a) (h) (n) (G) (L) (T1):
+     ∀T2. ⦃G, L⦄ ⊢ T1 ➡*[n,h] T2 → ⦃G, L⦄ ⊢ T1 ![a,h] → (T1 ≛ T2 → ⊥) →
+     (∀G0,L0,T0. ⦃G,L,T1⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
+     (∀G0,L0,T0. ⦃G,L,T1⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpm_trans_lpr a h G0 L0 T0) →
+     ∃∃n1,n2,T0. ⦃G, L⦄ ⊢ T1 ➡[n1,h] T0 & T1 ≛ T0 → ⊥ & ⦃G, L⦄ ⊢ T0 ➡*[n2,h] T2 & n1+n2 = n.
+#a #h #n #G #L #T1 #T2 #H
 @(cpms_ind_sn … H) -n -T1
 [ #_ #H2T2 elim H2T2 -H2T2 //
 | #n1 #n2 #T1 #T #H1T1 #H1T2 #IH #H0T1 #H2T12 #IH2 #IH1
-  elim (tdeq_dec h o T1 T) #H2T1
-  [ elim (tdeq_dec h o T T2) #H2T2
+  elim (tdeq_dec T1 T) #H2T1
+  [ elim (tdeq_dec T T2) #H2T2
     [ -IH -IH2 -IH1 -H0T1 /4 width=7 by tdeq_trans, ex4_3_intro/
     | lapply (cnv_cpm_trans_lpr_aux … IH2 IH1 … H1T1 L ?) [6:|*: // ] -H1T2 -H2T12 #H0T
       elim (IH H0T H2T2) [|*: /4 width=5 by cpm_fpbq, fpbq_fpbg_trans/ ] -IH -IH2 -H0T -H2T2 (**)
@@ -42,23 +42,23 @@ fact cpms_tdneq_fwd_step_sn_aux (a) (h) (n) (o) (G) (L) (T1):
 ]
 qed-.
 
-fact cpms_tdeq_ind_sn (a) (h) (o) (G) (L) (T2) (Q:relation2 …):
+fact cpms_tdeq_ind_sn (a) (h) (G) (L) (T2) (Q:relation2 …):
      (⦃G, L⦄ ⊢ T2 ![a,h] → Q 0 T2) →
-     (∀n1,n2,T1,T. ⦃G,L⦄ ⊢ T1 ➡[n1,h] T → ⦃G, L⦄ ⊢ T1 ![a,h] → T1 ≛[h,o] T → ⦃G, L⦄ ⊢ T ➡*[n2,h] T2 → ⦃G, L⦄ ⊢ T ![a,h] → T ≛[h,o] T2 → Q n2 T → Q (n1+n2) T1) →
-     ∀n,T1. ⦃G, L⦄ ⊢ T1 ➡*[n,h] T2 → ⦃G, L⦄ ⊢ T1 ![a,h] → T1 ≛[h,o] T2 →
-     (∀G0,L0,T0. ⦃G,L,T1⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
-     (∀G0,L0,T0. ⦃G,L,T1⦄ >[h,o] ⦃G0,L0,T0⦄ → IH_cnv_cpm_trans_lpr a h G0 L0 T0) → 
+     (∀n1,n2,T1,T. ⦃G,L⦄ ⊢ T1 ➡[n1,h] T → ⦃G, L⦄ ⊢ T1 ![a,h] → T1 ≛ T → ⦃G, L⦄ ⊢ T ➡*[n2,h] T2 → ⦃G, L⦄ ⊢ T ![a,h] → T ≛ T2 → Q n2 T → Q (n1+n2) T1) →
+     ∀n,T1. ⦃G, L⦄ ⊢ T1 ➡*[n,h] T2 → ⦃G, L⦄ ⊢ T1 ![a,h] → T1 ≛ T2 →
+     (∀G0,L0,T0. ⦃G,L,T1⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpms_conf_lpr a h G0 L0 T0) →
+     (∀G0,L0,T0. ⦃G,L,T1⦄ >[h] ⦃G0,L0,T0⦄ → IH_cnv_cpm_trans_lpr a h G0 L0 T0) → 
      Q n T1.
-#a #h #o #G #L #T2 #Q #IB1 #IB2 #n #T1 #H
+#a #h #G #L #T2 #Q #IB1 #IB2 #n #T1 #H
 @(cpms_ind_sn … H) -n -T1
 [ -IB2 #H0T2 #_ #_ #_ /2 width=1 by/
 | #n1 #n2 #T1 #T #H1T1 #H1T2 #IH #H0T1 #H2T12 #IH2 #IH1 -IB1
-  elim (tdeq_dec h o T1 T) #H2T1
+  elim (tdeq_dec T1 T) #H2T1
   [ lapply (cnv_cpm_trans_lpr_aux … IH2 IH1 … H1T1 L ?) [6:|*: // ] #H0T
     lapply (tdeq_canc_sn … H2T1 … H2T12) -H2T12 #H2T2
     /6 width=7 by cpm_fpbq, fpbq_fpbg_trans/ (**)
   | -IB2 -IH -IH2 -IH1
-    elim (cnv_fpbg_refl_false … o … H0T1) -a -Q
+    elim (cnv_fpbg_refl_false … H0T1) -a -Q
     /3 width=8 by cpm_tdneq_cpm_cpms_tdeq_sym_fwd_fpbg/
   ]
 ]
index 56b7c440d9f20db260cd50deef86757d99cbb6b1..44d549d53a7b2f917a4f4d52d96926f7fc1b0296 100644 (file)
@@ -19,14 +19,14 @@ include "basic_2/dynamic/cnv_cpms_tdeq.ma".
 
 (* Sub confluence propery with restricted rt-transition for terms ***********)
 
-fact cnv_cpms_tdeq_strip_lpr_aux (a) (h) (o) (G0) (L0) (T0):
-     (∀G,L,T. ⦃G0,L0,T0⦄ >[h,o] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
-     (∀G,L,T. ⦃G0,L0,T0⦄ >[h,o] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
-     ∀n1,T1. ⦃G0,L0⦄ ⊢ T0 ➡*[n1,h] T1 → ⦃G0,L0⦄ ⊢ T0 ![a,h] → T0 ≛[h,o] T1 →
-     ∀n2,T2. ⦃G0,L0⦄ ⊢ T0 ➡[n2,h] T2 → T0 ≛[h,o] T2 →
+fact cnv_cpms_tdeq_strip_lpr_aux (a) (h) (G0) (L0) (T0):
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
+     ∀n1,T1. ⦃G0,L0⦄ ⊢ T0 ➡*[n1,h] T1 → ⦃G0,L0⦄ ⊢ T0 ![a,h] → T0 ≛ T1 →
+     ∀n2,T2. ⦃G0,L0⦄ ⊢ T0 ➡[n2,h] T2 → T0 ≛ T2 →
      ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
-     ∃∃T. ⦃G0,L1⦄ ⊢ T1 ➡[n2-n1,h] T & T1 ≛[h,o] T & ⦃G0,L2⦄ ⊢ T2 ➡*[n1-n2,h] T & T2 ≛[h,o] T.
-#a #h #o #G #L0 #T0 #IH2 #IH1 #n1 #T1 #H1T01 #H0T0 #H2T01
+     ∃∃T. ⦃G0,L1⦄ ⊢ T1 ➡[n2-n1,h] T & T1 ≛ T & ⦃G0,L2⦄ ⊢ T2 ➡*[n1-n2,h] T & T2 ≛ T.
+#a #h #G #L0 #T0 #IH2 #IH1 #n1 #T1 #H1T01 #H0T0 #H2T01
 @(cpms_tdeq_ind_sn … H1T01 H0T0 H2T01 IH1 IH2) -n1 -T0
 [ #H0T1 #n2 #T2 #H1T12 #H2T12 #L1 #HL01 #L2 #HL02
   <minus_O_n <minus_n_O
@@ -44,14 +44,14 @@ fact cnv_cpms_tdeq_strip_lpr_aux (a) (h) (o) (G0) (L0) (T0):
 ]
 qed-.
 
-fact cnv_cpms_tdeq_conf_lpr_aux (a) (h) (o) (G0) (L0) (T0):
-     (∀G,L,T. ⦃G0,L0,T0⦄ >[h,o] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
-     (∀G,L,T. ⦃G0,L0,T0⦄ >[h,o] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
-     ∀n1,T1. ⦃G0,L0⦄ ⊢ T0 ➡*[n1,h] T1 → ⦃G0,L0⦄ ⊢ T0 ![a,h] → T0 ≛[h,o] T1 →
-     ∀n2,T2. ⦃G0,L0⦄ ⊢ T0 ➡*[n2,h] T2 → T0 ≛[h,o] T2 →
+fact cnv_cpms_tdeq_conf_lpr_aux (a) (h) (G0) (L0) (T0):
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpm_trans_lpr a h G L T) →
+     (∀G,L,T. ⦃G0,L0,T0⦄ >[h] ⦃G,L,T⦄ → IH_cnv_cpms_conf_lpr a h G L T) →
+     ∀n1,T1. ⦃G0,L0⦄ ⊢ T0 ➡*[n1,h] T1 → ⦃G0,L0⦄ ⊢ T0 ![a,h] → T0 ≛ T1 →
+     ∀n2,T2. ⦃G0,L0⦄ ⊢ T0 ➡*[n2,h] T2 → T0 ≛ T2 →
      ∀L1. ⦃G0,L0⦄ ⊢ ➡[h] L1 → ∀L2. ⦃G0,L0⦄ ⊢ ➡[h] L2 →
-     ∃∃T. ⦃G0,L1⦄ ⊢ T1 ➡*[n2-n1,h] T & T1 ≛[h,o] T & ⦃G0,L2⦄ ⊢ T2 ➡*[n1-n2,h] T & T2 ≛[h,o] T.
-#a #h #o #G #L0 #T0 #IH2 #IH1 #n1 #T1 #H1T01 #H0T0 #H2T01
+     ∃∃T. ⦃G0,L1⦄ ⊢ T1 ➡*[n2-n1,h] T & T1 ≛ T & ⦃G0,L2⦄ ⊢ T2 ➡*[n1-n2,h] T & T2 ≛ T.
+#a #h #G #L0 #T0 #IH2 #IH1 #n1 #T1 #H1T01 #H0T0 #H2T01
 generalize in match IH1; generalize in match IH2;
 @(cpms_tdeq_ind_sn … H1T01 H0T0 H2T01 IH1 IH2) -n1 -T0
 [ #H0T1 #IH2 #IH1 #n2 #T2 #H1T12 #H2T12 #L1 #HL01 #L2 #HL02
index 4ce63d92a59b8e932c9faed5f4795d83c102637c..46c1255d6e0b6cd1445749de2b545e342a9560ae 100644 (file)
@@ -20,12 +20,12 @@ include "basic_2/dynamic/cnv_aaa.ma".
 (* Forward lemmas with strongly rst-normalizing closures ********************)
 
 (* Basic_2A1: uses: snv_fwd_fsb *)
-lemma cnv_fwd_fsb (a) (h) (o): ∀G,L,T. ⦃G, L⦄ ⊢ T ![a, h] → ≥[h, o] 𝐒⦃G, L, T⦄.
-#a #h #o #G #L #T #H elim (cnv_fwd_aaa … H) -H /2 width=2 by aaa_fsb/
+lemma cnv_fwd_fsb (a) (h): ∀G,L,T. ⦃G, L⦄ ⊢ T ![a, h] → ≥[h] 𝐒⦃G, L, T⦄.
+#a #h #G #L #T #H elim (cnv_fwd_aaa … H) -H /2 width=2 by aaa_fsb/
 qed-.
 
 (* Inversion lemmas with proper parallel rst-computation for closures *******)
 
-lemma cnv_fpbg_refl_false (a) (h) (o) (G) (L) (T):
-                          ⦃G, L⦄ ⊢ T ![a,h] → ⦃G, L, T⦄ >[h,o] ⦃G, L, T⦄ → ⊥.
+lemma cnv_fpbg_refl_false (a) (h) (G) (L) (T):
+                          ⦃G, L⦄ ⊢ T ![a,h] → ⦃G, L, T⦄ >[h] ⦃G, L, T⦄ → ⊥.
 /3 width=7 by cnv_fwd_fsb, fsb_fpbg_refl_false/ qed-.
index c4edc5508768d9f2f4e7b8ce5525700077c19e02..483ea690e474445d45732dfc15511d7b84143d40 100644 (file)
@@ -23,11 +23,10 @@ lemma cnv_preserve (a) (h): ∀G,L,T. ⦃G,L⦄ ⊢ T ![a,h] →
                             ∧∧ IH_cnv_cpms_conf_lpr a h G L T
                              & IH_cnv_cpm_trans_lpr a h G L T.
 #a #h #G #L #T #HT
-letin o ≝ (sd_O h)
-lapply (cnv_fwd_fsb … o … HT) -HT #H
+lapply (cnv_fwd_fsb … HT) -HT #H
 @(fsb_ind_fpbg … H) -G -L -T #G #L #T #_ #IH
 @conj [ letin aux ≝ cnv_cpms_conf_lpr_aux | letin aux ≝ cnv_cpm_trans_lpr_aux ]
-@(aux … o … G L T) // #G0 #L0 #T0 #H
+@(aux … G L T) // #G0 #L0 #T0 #H
 elim (IH … H) -IH -H //
 qed-.
 
index c99d6a5c08a7387f6416eee775775f3b520f73fd..ce9c46f7e43ca3b721c76de74dff48d559e5b60d 100644 (file)
@@ -49,23 +49,23 @@ definition IH_cnv_cpms_conf_lpr (a) (h): relation3 genv lenv term ≝
 
 (* Auxiliary properties for preservation ************************************)
 
-fact cnv_cpms_trans_lpr_sub (a) (h) (o):
+fact cnv_cpms_trans_lpr_sub (a) (h):
                             ∀G0,L0,T0.
-                            (∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h, o] ⦃G1, L1, T1⦄ → IH_cnv_cpm_trans_lpr a h G1 L1 T1) →
-                            ∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h, o] ⦃G1, L1, T1⦄ → IH_cnv_cpms_trans_lpr a h G1 L1 T1.
-#a #h #o #G0 #L0 #T0 #IH #G1 #L1 #T1 #H01 #HT1 #n #T2 #H
+                            (∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h] ⦃G1, L1, T1⦄ → IH_cnv_cpm_trans_lpr a h G1 L1 T1) →
+                            ∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h] ⦃G1, L1, T1⦄ → IH_cnv_cpms_trans_lpr a h G1 L1 T1.
+#a #h #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/
 qed-.
 
-fact cnv_cpm_conf_lpr_sub (a) (h) (o):
+fact cnv_cpm_conf_lpr_sub (a) (h):
                           ∀G0,L0,T0.
-                          (∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h, o] ⦃G1, L1, T1⦄ → IH_cnv_cpms_conf_lpr a h G1 L1 T1) →
-                          ∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h, o] ⦃G1, L1, T1⦄ → IH_cnv_cpm_conf_lpr a h G1 L1 T1.
+                          (∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h] ⦃G1, L1, T1⦄ → IH_cnv_cpms_conf_lpr a h G1 L1 T1) →
+                          ∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h] ⦃G1, L1, T1⦄ → IH_cnv_cpm_conf_lpr a h G1 L1 T1.
 /3 width=8 by cpm_cpms/ qed-.
 
-fact cnv_cpms_strip_lpr_sub (a) (h) (o):
+fact cnv_cpms_strip_lpr_sub (a) (h):
                             ∀G0,L0,T0.
-                            (∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h, o] ⦃G1, L1, T1⦄ → IH_cnv_cpms_conf_lpr a h G1 L1 T1) →
-                            ∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h, o] ⦃G1, L1, T1⦄ → IH_cnv_cpms_strip_lpr a h G1 L1 T1.
+                            (∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h] ⦃G1, L1, T1⦄ → IH_cnv_cpms_conf_lpr a h G1 L1 T1) →
+                            ∀G1,L1,T1. ⦃G0, L0, T0⦄ >[h] ⦃G1, L1, T1⦄ → IH_cnv_cpms_strip_lpr a h G1 L1 T1.
 /3 width=8 by cpm_cpms/ qed-.
index b96b1cfd54e068d210facc341d944c45bb2d7931..a987f760f490409a7f91d6b34ee0654c84dc0a86 100644 (file)
@@ -23,10 +23,10 @@ include "basic_2/dynamic/nta.ma".
 (* Note: this might use fsb_inv_cast (still to be proved) *)
 (* Basic_1: uses: ty3_sn3 *)
 (* Basic_2A1: uses: nta_fwd_csn *)
-theorem nta_fwd_fsb (a) (h) (o) (G) (L):
+theorem nta_fwd_fsb (a) (h) (G) (L):
         ∀T,U. ⦃G,L⦄ ⊢ T :[a,h] U →
-        ∧∧ ≥[h,o] 𝐒⦃G,L,T⦄ & ≥[h,o] 𝐒⦃G,L,U⦄.
-#a #h #o #G #L #T #U #H
+        ∧∧ ≥[h] 𝐒⦃G,L,T⦄ & ≥[h] 𝐒⦃G,L,U⦄.
+#a #h #G #L #T #U #H
 elim (cnv_inv_cast … H) #X #HU #HT #_ #_ -X
 /3 width=2 by cnv_fwd_fsb, conj/
 qed-. 
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/lsubeqx_5.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/lsubeqx_5.ma
new file mode 100644 (file)
index 0000000..958ca60
--- /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 h, break term 46 f ] break term 46 L2 )"
+   non associative with precedence 45
+   for @{ 'LSubEqX $h $f $G $L1 $L2 }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/lsubeqx_6.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/lsubeqx_6.ma
deleted file mode 100644 (file)
index 7f9afe8..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 o, break term 46 f ] break term 46 L2 )"
-   non associative with precedence 45
-   for @{ 'LSubEqX $h $o $f $G $L1 $L2 }.
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
new file mode 100644 (file)
index 0000000..295c066
--- /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 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/predsubty_8.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubty_8.ma
deleted file mode 100644 (file)
index d7a706d..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 o ] ⦃ break term 46 G2, break term 46 L2, break term 46 T2 ⦄ )"
-   non associative with precedence 45
-   for @{ 'PRedSubTy $h $o $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
new file mode 100644 (file)
index 0000000..8568de9
--- /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 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/predsubtyproper_8.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtyproper_8.ma
deleted file mode 100644 (file)
index 6dc58b0..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 o ] ⦃ break term 46 G2, break term 46 L2, break term 46 T2 ⦄ )"
-   non associative with precedence 45
-   for @{ 'PRedSubTyProper $h $o $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
new file mode 100644 (file)
index 0000000..1e33dd2
--- /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 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/predsubtystar_8.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystar_8.ma
deleted file mode 100644 (file)
index 75f409c..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 o ] ⦃ break term 46 G2, break term 46 L2, break term 46 T2 ⦄ )"
-   non associative with precedence 45
-   for @{ 'PRedSubTyStar $h $o $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
new file mode 100644 (file)
index 0000000..161820f
--- /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 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/predsubtystarproper_8.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystarproper_8.ma
deleted file mode 100644 (file)
index 15b61d6..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 o ] ⦃ break term 46 G2, break term 46 L2, break term 46 T2 ⦄ )"
-   non associative with precedence 45
-   for @{ 'PRedSubTyStarProper $h $o $G1 $L1 $T1 $G2 $L2 $T2 }.
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
new file mode 100644 (file)
index 0000000..d36f44f
--- /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 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/predsubtystrong_5.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predsubtystrong_5.ma
deleted file mode 100644 (file)
index adc3137..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 o ] 𝐒 ⦃ break term 46 G, break term 46 L, break term 46 T ⦄ )"
-   non associative with precedence 45
-   for @{ 'PRedSubTyStrong $h $o $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
new file mode 100644 (file)
index 0000000..21c22ee
--- /dev/null
@@ -0,0 +1,19 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************)
+
+notation "hvbox( ⦃ term 46 G, break term 46 L ⦄ ⊢ ⬈ [ break term 46 h ] 𝐍 ⦃ break term 46 T ⦄ )"
+   non associative with precedence 45
+   for @{ 'PRedTyNormal $h $G $L $T }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtynormal_5.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtynormal_5.ma
deleted file mode 100644 (file)
index dca225a..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 o ] 𝐍 ⦃ break term 46 T ⦄ )"
-   non associative with precedence 45
-   for @{ 'PRedTyNormal $h $o $G $L $T }.
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
new file mode 100644 (file)
index 0000000..6602630
--- /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 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/predtysnstrong_5.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtysnstrong_5.ma
deleted file mode 100644 (file)
index c86dc86..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 o, break term 46 T ] 𝐒 ⦃ break term 46 L ⦄ )"
-   non associative with precedence 45
-   for @{ 'PRedTySNStrong $h $o $T $G $L }.
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
new file mode 100644 (file)
index 0000000..34fb898
--- /dev/null
@@ -0,0 +1,19 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||M||                                                             *)
+(*      ||A||       A project by Andrea Asperti                           *)
+(*      ||T||                                                             *)
+(*      ||I||       Developers:                                           *)
+(*      ||T||         The HELM team.                                      *)
+(*      ||A||         http://helm.cs.unibo.it                             *)
+(*      \   /                                                             *)
+(*       \ /        This file is distributed under the terms of the       *)
+(*        v         GNU General Public License Version 2                  *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* NOTATION FOR THE FORMAL SYSTEM λδ ****************************************)
+
+notation "hvbox( ⦃ term 46 G, break term 46 L ⦄ ⊢ ⬈ * [ break term 46 h] 𝐒 ⦃ break term 46 T ⦄ )"
+   non associative with precedence 45
+   for @{ 'PRedTyStrong $h $G $L $T }.
diff --git a/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtystrong_5.ma b/matita/matita/contribs/lambdadelta/basic_2/notation/relations/predtystrong_5.ma
deleted file mode 100644 (file)
index 141a8e8..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 o ] 𝐒 ⦃ break term 46 T ⦄ )"
-   non associative with precedence 45
-   for @{ 'PRedTyStrong $h $o $G $L $T }.
index 223efe3e03e5a14e5de3316baa2b41b4267f629f..bfb52bc352fa98b41312c6b69ab0f35918bbcace 100644 (file)
@@ -24,11 +24,10 @@ include "basic_2/rt_computation/cpms_fpbg.ma".
 (* Properties with whd normality for unbound rt-transition ******************)
 
 lemma aaa_cpms_cwhx (h) (G) (L):
-                    ∀T1,A. ⦃G,L⦄ ⊢ T1 ⁝ A →
-                    ∃∃n,T2. ⦃G,L⦄ ⊢ T1 ➡*[n,h] T2 & ⦃G,L⦄ ⊢ ⬈[h] 𝐖𝐇⦃T2⦄.
+      ∀T1,A. ⦃G,L⦄ ⊢ T1 ⁝ A →
+      ∃∃n,T2. ⦃G,L⦄ ⊢ T1 ➡*[n,h] T2 & ⦃G,L⦄ ⊢ ⬈[h] 𝐖𝐇⦃T2⦄.
 #h #G #L #T1 #A #H
-letin o ≝ (sd_O h)
-@(aaa_ind_fpbg … o … H) -G -L -T1 -A
+@(aaa_ind_fpbg h … H) -G -L -T1 -A
 #G #L #T1 #A * -G -L -T1 -A
 [ #G #L #s #_ /2 width=4 by cwhx_sort, ex2_2_intro/
 | * #G #K #V1 #A #_ #IH -A
@@ -40,7 +39,7 @@ letin o ≝ (sd_O h)
   elim (lifts_total … V2 (𝐔❴1❵)) #T2 #HVT2
   /5 width=10 by cpms_lref, cwhx_lifts, drops_refl, drops_drop, ex2_2_intro/
 | * #G #L #V #T1 #B #A #_ #_ #IH -B -A
-  [ elim (cpr_abbr_pos h G L V T1) #T0 #HT10 #HnT10
+  [ elim (cpr_abbr_pos h G L V T1) #T0 #HT10 #HnT10
     elim (IH G L T0) -IH [| /4 width=2 by fpb_fpbg, cpm_fpb/ ] -HnT10 #n #T2 #HT02 #HT2
     /3 width=5 by cpms_step_sn, ex2_2_intro/
   | elim (IH … G (L.ⓓV) T1) -IH [| /3 width=1 by fpb_fpbg, fpb_fqu, fqu_bind_dx/ ] #n #T2 #HT12 #HT2
@@ -50,7 +49,7 @@ letin o ≝ (sd_O h)
   /2 width=5 by cwhx_abst, ex2_2_intro/
 | #G #L #V #T1 #B #A #_ #HT1 #IH
   elim (IH … G L T1) [| /3 width=1 by fpb_fpbg, fpb_fqu, fqu_flat_dx/ ] #n1 #T2 #HT12 #HT2
-  elim (tdeq_dec h o T1 T2) [ -n1 #HT12 | -HT2 #HnT12 ]
+  elim (tdeq_dec T1 T2) [ -n1 #HT12 | -HT2 #HnT12 ]
   [ lapply (tdeq_cwhx_trans … HT2 … HT12) -T2
     @(insert_eq_0 … L) #Y @(insert_eq_0 … T1) #X * -Y -X
     [ #L0 #s0 #H1 #H2 destruct -IH
index 8c0c3204e23750ebf07f03f606674b5b0bb7018f..0452e19a8678df0148fc83ea83b7265ffe8a8d42 100644 (file)
@@ -20,25 +20,29 @@ include "basic_2/rt_computation/cpms_fpbs.ma".
 
 (* Forward lemmas with proper parallel rst-computation for closures *********)
 
-lemma cpms_tdneq_fwd_fpbg (h) (o) (n): ∀G,L,T1,T2. ⦃G,L⦄ ⊢ T1 ➡*[n,h] T2 →
-                                       (T1 ≛[h,o] T2 → ⊥) → ⦃G,L,T1⦄ >[h,o] ⦃G,L,T2⦄.
+lemma cpms_tdneq_fwd_fpbg (h) (n):
+      ∀G,L,T1,T2. ⦃G,L⦄ ⊢ T1 ➡*[n,h] T2 →
+      (T1 ≛ T2 → ⊥) → ⦃G,L,T1⦄ >[h] ⦃G,L,T2⦄.
 /3 width=2 by cpms_fwd_cpxs, cpxs_tdneq_fpbg/ qed-.
 
-lemma fpbg_cpms_trans (h) (o) (n): ∀G1,G2,L1,L2,T1,T. ⦃G1, L1, T1⦄ >[h,o] ⦃G2, L2, T⦄ →
-                                   ∀T2. ⦃G2, L2⦄ ⊢ T ➡*[n,h] T2 → ⦃G1, L1, T1⦄ >[h,o] ⦃G2, L2, T2⦄.
+lemma fpbg_cpms_trans (h) (n):
+      ∀G1,G2,L1,L2,T1,T. ⦃G1, L1, T1⦄ >[h] ⦃G2, L2, T⦄ →
+      ∀T2. ⦃G2, L2⦄ ⊢ T ➡*[n,h] T2 → ⦃G1, L1, T1⦄ >[h] ⦃G2, L2, T2⦄.
 /3 width=5 by fpbg_fpbs_trans, cpms_fwd_fpbs/ qed-.
 
-lemma cpms_fpbg_trans (h) (o) (n): ∀G1,L1,T1,T. ⦃G1, L1⦄ ⊢ T1 ➡*[n,h] T →
-                                   ∀G2,L2,T2. ⦃G1, L1, T⦄ >[h,o] ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ >[h,o] ⦃G2, L2, T2⦄.
+lemma cpms_fpbg_trans (h) (n):
+      ∀G1,L1,T1,T. ⦃G1, L1⦄ ⊢ T1 ➡*[n,h] T →
+      ∀G2,L2,T2. ⦃G1, L1, T⦄ >[h] ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ >[h] ⦃G2, L2, T2⦄.
 /3 width=5 by fpbs_fpbg_trans, cpms_fwd_fpbs/ qed-.
 
-lemma fqup_cpms_fwd_fpbg (h) (o): ∀G1,G2,L1,L2,T1,T. ⦃G1, L1, T1⦄ ⊐+ ⦃G2, L2, T⦄ →
-                                  ∀n,T2. ⦃G2, L2⦄ ⊢ T ➡*[n,h] T2 → ⦃G1, L1, T1⦄ >[h,o] ⦃G2, L2, T2⦄.
+lemma fqup_cpms_fwd_fpbg (h):
+      ∀G1,G2,L1,L2,T1,T. ⦃G1, L1, T1⦄ ⊐+ ⦃G2, L2, T⦄ →
+      ∀n,T2. ⦃G2, L2⦄ ⊢ T ➡*[n,h] T2 → ⦃G1, L1, T1⦄ >[h] ⦃G2, L2, T2⦄.
 /3 width=5 by cpms_fwd_fpbs, fqup_fpbg,fpbg_fpbs_trans/ qed-.
 
-lemma cpm_tdneq_cpm_cpms_tdeq_sym_fwd_fpbg (h) (o) (G) (L) (T1):
-      ∀n1,T. ⦃G,L⦄ ⊢ T1 ➡[n1,h] T → (T1 ≛[h,o] T → ⊥) →
-      ∀n2,T2. ⦃G,L⦄⊢ T ➡*[n2,h] T2 → T1 ≛[h,o] T2 → ⦃G,L,T1⦄ >[h,o] ⦃G,L,T1⦄.
-#h #o #G #L #T1 #n1 #T #H1T1 #H2T1 #n2 #T2 #H1T2 #H2T12
+lemma cpm_tdneq_cpm_cpms_tdeq_sym_fwd_fpbg (h) (G) (L) (T1):
+      ∀n1,T. ⦃G,L⦄ ⊢ T1 ➡[n1,h] T → (T1 ≛ T → ⊥) →
+      ∀n2,T2. ⦃G,L⦄⊢ T ➡*[n2,h] T2 → T1 ≛ T2 → ⦃G,L,T1⦄ >[h] ⦃G,L,T1⦄.
+#h #G #L #T1 #n1 #T #H1T1 #H2T1 #n2 #T2 #H1T2 #H2T12
 /4 width=7 by cpms_fwd_fpbs, cpm_fpb, fpbs_tdeq_trans, tdeq_sym, ex2_3_intro/
 qed-.
index 4a65edb8b4f471f5003d007f003cda55b3f00ac4..47aca54198286cc69d0a54a5334a497b2e1e10f0 100644 (file)
@@ -20,5 +20,6 @@ include "basic_2/rt_computation/cpms_cpxs.ma".
 (* Forward lemmas with parallel rst-computation for closures ****************)
 
 (* Basic_2A1: uses: cprs_fpbs *)
-lemma cpms_fwd_fpbs (n) (h) (o): ∀G,L,T1,T2. ⦃G, L⦄ ⊢ T1 ➡*[n,h] T2 → ⦃G, L, T1⦄ ≥[h,o] ⦃G, L, T2⦄.
+lemma cpms_fwd_fpbs (n) (h):
+      ∀G,L,T1,T2. ⦃G, L⦄ ⊢ T1 ➡*[n,h] T2 → ⦃G, L, T1⦄ ≥[h] ⦃G, L, T2⦄.
 /3 width=2 by cpms_fwd_cpxs, cpxs_fpbs/ qed-.
index b335ae60365067ec70a85166a3893bb7a5164ac5..f2470dbe3d070ca3b297415df6f95edb379ed507 100644 (file)
@@ -17,14 +17,14 @@ include "basic_2/rt_computation/cpms_cpxs.ma".
 
 (* T-BOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
 
-(* Properties with degree-based equivalence for local environments **********)
+(* Properties with sort-irrelevant equivalence for local environments *******)
 
-lemma cpms_rdeq_conf_sn (h) (n) (o) (G) (L1) (L2):
+lemma cpms_rdeq_conf_sn (h) (n) (G) (L1) (L2):
                         ∀T1,T2. ⦃G, L1⦄ ⊢ T1 ➡*[n,h] T2 →
-                        L1 ≛[h,o,T1] L2 → L1 ≛[h,o,T2] L2.
-/3 width=4 by cpms_fwd_cpxs, cpxs_rdeq_conf_sn/ qed-.
+                        L1 ≛[T1] L2 → L1 ≛[T2] L2.
+/3 width=5 by cpms_fwd_cpxs, cpxs_rdeq_conf_sn/ qed-.
 
-lemma cpms_rdeq_conf_dx (h) (n) (o) (G) (L1) (L2):
+lemma cpms_rdeq_conf_dx (h) (n) (G) (L1) (L2):
                         ∀T1,T2. ⦃G, L2⦄ ⊢ T1 ➡*[n,h] T2 →
-                        L1 ≛[h,o,T1] L2 → L1 ≛[h,o,T2] L2.
-/3 width=4 by cpms_fwd_cpxs, cpxs_rdeq_conf_dx/ qed-.
+                        L1 ≛[T1] L2 → L1 ≛[T2] L2.
+/3 width=5 by cpms_fwd_cpxs, cpxs_rdeq_conf_dx/ qed-.
index 49f74a202ab8afb2f1162dd6fbd34952d0797575..2135a0cee8b5b81cfb38b1f16067279deac891cb 100644 (file)
@@ -19,8 +19,8 @@ include "basic_2/rt_computation/cpxs.ma".
 
 (* Inversion lemmas with normal terms ***************************************)
 
-lemma cpxs_inv_cnx1: ∀h,o,G,L,T1,T2. ⦃G, L⦄ ⊢ T1 ⬈*[h] T2 → ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃T1⦄ →
-                     T1 ≛[h, o] T2.
-#h #o #G #L #T1 #T2 #H @(cpxs_ind_dx … H) -T1
-/5 width=8 by cnx_tdeq_trans, tdeq_trans/
+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
+/5 width=9 by cnx_tdeq_trans, tdeq_trans/
 qed-.
index 1db09aeb5cbec699ed86f55c172f489c6861bcd7..ed477d71cf6d6622547dd6815487ebec97995c80 100644 (file)
@@ -17,12 +17,12 @@ include "basic_2/rt_computation/cpxs_rdeq.ma".
 
 (* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
 
-(* Properties with degree-based equivalence for closures ********************)
+(* Properties with sort-irrelevant equivalence for closures *****************)
 
-lemma fdeq_cpxs_trans: ∀h,o,G1,G2,L1,L2,T1,T. ⦃G1, L1, T1⦄ ≛[h, o] ⦃G2, L2, T⦄ →
+lemma fdeq_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⦄ ≛[h, o] ⦃G2, L2, T2⦄.
-#h #o #G1 #G2 #L1 #L2 #T1 #T #H #T2 #HT2
+                       ∃∃T0. ⦃G1, L1⦄ ⊢ T1 ⬈*[h] T0 & ⦃G1, L1, T0⦄ ≛ ⦃G2, L2, T2⦄.
+#h #G1 #G2 #L1 #L2 #T1 #T #H #T2 #HT2
 elim (fdeq_inv_gen_dx … H) -H #H #HL12 #HT1 destruct
 elim (rdeq_cpxs_trans … HT2 … HL12) #T0 #HT0 #HT02
 lapply (cpxs_rdeq_conf_dx … HT2 … HL12) -HL12 #HL12
index c6206f82ffc043b7ff427bdb9d57457b654235da..bb0ce14ab4136b56425ed31cec2e4668118c3b58 100644 (file)
@@ -55,10 +55,10 @@ qed-.
 
 (* Note: a proof based on fqu_cpx_trans_tdneq might exist *)
 (* Basic_2A1: uses: fqu_cpxs_trans_neq *)
-lemma fqu_cpxs_trans_tdneq: ∀h,o,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐[b] ⦃G2, L2, T2⦄ →
-                            ∀U2. ⦃G2, L2⦄ ⊢ T2 ⬈*[h] U2 → (T2 ≛[h, o] U2 → ⊥) →
-                            ∃∃U1. ⦃G1, L1⦄ ⊢ T1 ⬈*[h] U1 & T1 ≛[h, o] U1 → ⊥ & ⦃G1, L1, U1⦄ ⊐[b] ⦃G2, L2, U2⦄.
-#h #o #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
+lemma fqu_cpxs_trans_tdneq: ∀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
 [ #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 +88,10 @@ lemma fqu_cpxs_trans_tdneq: ∀h,o,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐[b]
 qed-.
 
 (* Basic_2A1: uses: fquq_cpxs_trans_neq *)
-lemma fquq_cpxs_trans_tdneq: ∀h,o,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐⸮[b] ⦃G2, L2, T2⦄ →
-                             ∀U2. ⦃G2, L2⦄ ⊢ T2 ⬈*[h] U2 → (T2 ≛[h, o] U2 → ⊥) →
-                             ∃∃U1. ⦃G1, L1⦄ ⊢ T1 ⬈*[h] U1 & T1 ≛[h, o] U1 → ⊥ & ⦃G1, L1, U1⦄ ⊐⸮[b] ⦃G2, L2, U2⦄.
-#h #o #b #G1 #G2 #L1 #L2 #T1 #T2 #H12 elim H12 -H12
+lemma fquq_cpxs_trans_tdneq: ∀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
 [ #H12 #U2 #HTU2 #H elim (fqu_cpxs_trans_tdneq … H12 … HTU2 H) -T2
   /3 width=4 by fqu_fquq, ex3_intro/
 | * #HG #HL #HT destruct /3 width=4 by ex3_intro/
@@ -99,10 +99,10 @@ lemma fquq_cpxs_trans_tdneq: ∀h,o,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐⸮
 qed-.
 
 (* Basic_2A1: uses: fqup_cpxs_trans_neq *)
-lemma fqup_cpxs_trans_tdneq: ∀h,o,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐+[b] ⦃G2, L2, T2⦄ →
-                             ∀U2. ⦃G2, L2⦄ ⊢ T2 ⬈*[h] U2 → (T2 ≛[h, o] U2 → ⊥) →
-                             ∃∃U1. ⦃G1, L1⦄ ⊢ T1 ⬈*[h] U1 & T1 ≛[h, o] U1 → ⊥ & ⦃G1, L1, U1⦄ ⊐+[b] ⦃G2, L2, U2⦄.
-#h #o #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind_dx … H) -G1 -L1 -T1
+lemma fqup_cpxs_trans_tdneq: ∀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
 [ #G1 #L1 #T1 #H12 #U2 #HTU2 #H elim (fqu_cpxs_trans_tdneq … 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 +112,10 @@ lemma fqup_cpxs_trans_tdneq: ∀h,o,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐+[b
 qed-.
 
 (* Basic_2A1: uses: fqus_cpxs_trans_neq *)
-lemma fqus_cpxs_trans_tdneq: ∀h,o,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐*[b] ⦃G2, L2, T2⦄ →
-                             ∀U2. ⦃G2, L2⦄ ⊢ T2 ⬈*[h] U2 → (T2 ≛[h, o] U2 → ⊥) →
-                             ∃∃U1. ⦃G1, L1⦄ ⊢ T1 ⬈*[h] U1 & T1 ≛[h, o] U1 → ⊥ & ⦃G1, L1, U1⦄ ⊐*[b] ⦃G2, L2, U2⦄.
-#h #o #b #G1 #G2 #L1 #L2 #T1 #T2 #H12 #U2 #HTU2 #H elim (fqus_inv_fqup … H12) -H12
+lemma fqus_cpxs_trans_tdneq: ∀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
 [ #H12 elim (fqup_cpxs_trans_tdneq … H12 … HTU2 H) -T2
   /3 width=4 by fqup_fqus, ex3_intro/
 | * #HG #HL #HT destruct /3 width=4 by ex3_intro/
index 292dc54e1609be9441ec59872869e10e29865fba..58c6d29ff80fa85669ee32b746c279b8669bb09e 100644 (file)
@@ -17,33 +17,33 @@ include "basic_2/rt_computation/cpxs_tdeq.ma".
 
 (* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
 
-(* Properties with degree-based equivalence for local environments **********)
+(* Properties with sort-irrelevant equivalence for local environments *******)
 
 (* Basic_2A1: was just: lleq_cpxs_trans *) 
-lemma rdeq_cpxs_trans: ∀h,o,G,L0,T0,T1. ⦃G, L0⦄ ⊢ T0 ⬈*[h] T1 →
-                       ∀L2. L2 ≛[h, o, T0] L0 →
-                       ∃∃T. ⦃G, L2⦄ ⊢ T0 ⬈*[h] T & T ≛[h, o] T1.
-#h #o #G #L0 #T0 #T1 #H @(cpxs_ind_dx … H) -T0 /2 width=3 by ex2_intro/
+lemma rdeq_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/
 #T0 #T #HT0 #_ #IH #L2 #HL2
 elim (rdeq_cpx_trans … HL2 … HT0) #U1 #H1 #H2
-elim (IH L2) -IH /2 width=4 by cpx_rdeq_conf_dx/ -L0 #U2 #H3 #H4
+elim (IH L2) -IH /2 width=5 by cpx_rdeq_conf_dx/ -L0 #U2 #H3 #H4
 elim (tdeq_cpxs_trans … H2 … H3) -T #U0 #H2 #H3
 /3 width=5 by cpxs_strap2, tdeq_trans, ex2_intro/
 qed-.
 
 (* Basic_2A1: was just: cpxs_lleq_conf *) 
-lemma cpxs_rdeq_conf: ∀h,o,G,L0,T0,T1. ⦃G, L0⦄ ⊢ T0 ⬈*[h] T1 →
-                      ∀L2. L0 ≛[h, o, T0] L2 →
-                      ∃∃T. ⦃G, L2⦄ ⊢ T0 ⬈*[h] T & T ≛[h, o] T1.
+lemma cpxs_rdeq_conf: ∀h,G,L0,T0,T1. ⦃G, L0⦄ ⊢ T0 ⬈*[h] T1 →
+                      ∀L2. L0 ≛[T0] L2 →
+                      ∃∃T. ⦃G, L2⦄ ⊢ T0 ⬈*[h] T & T ≛ T1.
 /3 width=3 by rdeq_cpxs_trans, rdeq_sym/ qed-.
 
 (* Basic_2A1: was just: cpxs_lleq_conf_dx *) 
-lemma cpxs_rdeq_conf_dx: ∀h,o,G,L2,T1,T2. ⦃G, L2⦄ ⊢ T1 ⬈*[h] T2 →
-                         ∀L1. L1 ≛[h, o, T1] L2 → L1 ≛[h, o, T2] L2.
-#h #o #G #L2 #T1 #T2 #H @(cpxs_ind … H) -T2 /3 width=6 by cpx_rdeq_conf_dx/
+lemma cpxs_rdeq_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_rdeq_conf_dx/
 qed-.
 
 (* Basic_2A1: was just: lleq_conf_sn *) 
-lemma cpxs_rdeq_conf_sn: ∀h,o,G,L1,T1,T2. ⦃G, L1⦄ ⊢ T1 ⬈*[h] T2 →
-                         ∀L2. L1 ≛[h, o, T1] L2 → L1 ≛[h, o, T2] L2.
+lemma cpxs_rdeq_conf_sn: ∀h,G,L1,T1,T2. ⦃G, L1⦄ ⊢ T1 ⬈*[h] T2 →
+                         ∀L2. L1 ≛[T1] L2 → L1 ≛[T2] L2.
 /4 width=6 by cpxs_rdeq_conf_dx, rdeq_sym/ qed-.
index 279ee212eb6529b2ea9abd5c092f47d1ea9f3c8a..c313dc7ab16fe63aace1e44776e8bbf4c1400481 100644 (file)
@@ -17,23 +17,23 @@ include "basic_2/rt_computation/cpxs.ma".
 
 (* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
 
-(* Properties with degree-based equivalence for terms ***********************)
+(* Properties with sort-irrelevant equivalence for terms ********************)
 
-lemma tdeq_cpxs_trans: ∀h,o,U1,T1. U1 ≛[h, o] T1 → ∀G,L,T2. ⦃G, L⦄ ⊢ T1 ⬈*[h] T2 → 
-                       ∃∃U2. ⦃G, L⦄ ⊢ U1 ⬈*[h] U2 & U2 ≛[h, o] T2.
-#h #o #U1 #T1 #HUT1 #G #L #T2 #HT12 @(cpxs_ind … HT12) -T2 /2 width=3 by ex2_intro/
+lemma tdeq_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/
 #T #T2 #_ #HT2 * #U #HU1 #HUT elim (tdeq_cpx_trans … HUT … HT2) -T -T1
 /3 width=3 by ex2_intro, cpxs_strap1/
 qed-.
 
 (* Note: this requires tdeq to be symmetric *)
 (* Nasic_2A1: uses: cpxs_neq_inv_step_sn *)
-lemma cpxs_tdneq_fwd_step_sn: ∀h,o,G,L,T1,T2. ⦃G, L⦄ ⊢ T1 ⬈*[h] T2 → (T1 ≛[h, o] T2 → ⊥) →
-                              ∃∃T,T0. ⦃G, L⦄ ⊢ T1 ⬈[h] T & T1 ≛[h, o] T → ⊥ & ⦃G, L⦄ ⊢ T ⬈*[h] T0 & T0 ≛[h, o] T2.
-#h #o #G #L #T1 #T2 #H @(cpxs_ind_dx … H) -T1
+lemma cpxs_tdneq_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
 [ #H elim H -H //
 | #T1 #T0 #HT10 #HT02 #IH #Hn12
-  elim (tdeq_dec h o T1 T0) [ -HT10 -HT02 #H10 | -IH #Hn10 ]
+  elim (tdeq_dec T1 T0) [ -HT10 -HT02 #H10 | -IH #Hn10 ]
   [ elim IH -IH /3 width=3 by tdeq_trans/ -Hn12
     #T3 #T4 #HT03 #Hn03 #HT34 #H42
     elim (tdeq_cpx_trans … H10 … HT03) -HT03 #T5 #HT15 #H53
index 4bd1dd0c14cff76f95efd2cc681cf361f6ed3266..58ee196139ccbdc68c1d9fb25f3fdc344ab856a6 100644 (file)
@@ -21,22 +21,18 @@ include "basic_2/rt_computation/lpxs_cpxs.ma".
 
 (* Forward lemmas with head equivalence for terms ***************************)
 
-lemma cpxs_fwd_sort: ∀h,o,G,L,U,s. ⦃G, L⦄ ⊢ ⋆s ⬈*[h] U →
-                     ⋆s ⩳[h, o] U ∨ ⦃G, L⦄ ⊢ ⋆(next h s) ⬈*[h] U.
-#h #o #G #L #U #s #H elim (cpxs_inv_sort1 … H) -H *
-[ #H destruct /2 width=1 by or_introl/
-| #n #H destruct
-  @or_intror >iter_S <(iter_n_Sm … (next h)) // (**)
-]
+lemma cpxs_fwd_sort: ∀h,G,L,X2,s1. ⦃G, L⦄ ⊢ ⋆s1 ⬈*[h] X2 → ⋆s1 ⩳ X2.
+#h #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,o,I,G,L,K,V1,i. ⬇*[i] L ≘ K.ⓑ{I}V1 →
+lemma cpxs_fwd_delta_drops: ∀h,I,G,L,K,V1,i. ⬇*[i] L ≘ K.ⓑ{I}V1 →
                             ∀V2. ⬆*[↑i] V1 ≘ V2 →
-                            ∀U. ⦃G, L⦄ ⊢ #i ⬈*[h] U →
-                            #i ⩳[h, o] U ∨ ⦃G, L⦄ ⊢ V2 ⬈*[h] U.
-#h #o #I #G #L #K #V1 #i #HLK #V2 #HV12 #U #H
+                            ∀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
 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
@@ -44,9 +40,9 @@ lapply (drops_mono … HLK0 … HLK) -HLK0 #H destruct
 qed-.
 
 (* Basic_1: was just: pr3_iso_beta *)
-lemma cpxs_fwd_beta: ∀h,o,p,G,L,V,W,T,U. ⦃G, L⦄ ⊢ ⓐV.ⓛ{p}W.T ⬈*[h] U →
-                     â\93\90V.â\93\9b{p}W.T â©³[h, o] U â\88¨ â¦\83G, Lâ¦\84 â\8a¢ â\93\93{p}â\93\9dW.V.T â¬\88*[h] U.
-#h #o #p #G #L #V #W #T #U #H elim (cpxs_inv_appl1 … H) -H *
+lemma cpxs_fwd_beta: ∀h,p,G,L,V,W,T,X2. ⦃G, L⦄ ⊢ ⓐV.ⓛ{p}W.T ⬈*[h] X2 →
+                     â\88¨â\88¨ â\93\90V.â\93\9b{p}W.T â©³ X2 | â¦\83G, Lâ¦\84 â\8a¢ â\93\93{p}â\93\9dW.V.T â¬\88*[h] X2.
+#h #p #G #L #V #W #T #X2 #H elim (cpxs_inv_appl1 … H) -H *
 [ #V0 #T0 #_ #_ #H destruct /2 width=1 by theq_pair, or_introl/
 | #b #W0 #T0 #HT0 #HU
   elim (cpxs_inv_abst1 … HT0) -HT0 #W1 #T1 #HW1 #HT1 #H destruct
@@ -57,10 +53,10 @@ lemma cpxs_fwd_beta: ∀h,o,p,G,L,V,W,T,U. ⦃G, L⦄ ⊢ ⓐV.ⓛ{p}W.T ⬈*[h]
 ]
 qed-.
 
-lemma cpxs_fwd_theta: ∀h,o,p,G,L,V1,V,T,U. ⦃G, L⦄ ⊢ ⓐV1.ⓓ{p}V.T ⬈*[h] U →
-                      ∀V2. ⬆*[1] V1 ≘ V2 → ⓐV1.ⓓ{p}V.T ⩳[h, o] U ∨
-                      â¦\83G, Lâ¦\84 â\8a¢ â\93\93{p}V.â\93\90V2.T â¬\88*[h] U.
-#h #o #p #G #L #V1 #V #T #U #H #V2 #HV12
+lemma cpxs_fwd_theta: ∀h,p,G,L,V1,V,T,X2. ⦃G, L⦄ ⊢ ⓐV1.ⓓ{p}V.T ⬈*[h] X2 →
+                      ∀V2. ⬆*[1] V1 ≘ V2 →
+                      â\88¨â\88¨ â\93\90V1.â\93\93{p}V.T â©³ X2 | â¦\83G, Lâ¦\84 â\8a¢ â\93\93{p}V.â\93\90V2.T â¬\88*[h] X2.
+#h #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 theq_pair, or_introl/
 | #q #W #T0 #HT0 #HU
@@ -68,13 +64,13 @@ elim (cpxs_inv_appl1 … H) -H *
   [ #V3 #T3 #_ #_ #H destruct
   | #X #HT2 #H #H0 destruct
     elim (lifts_inv_bind1 … H) -H #W2 #T2 #HW2 #HT02 #H destruct
-    @or_intror @(cpxs_trans … HU) -U (**) (* explicit constructor *)
+    @or_intror @(cpxs_trans … HU) -X2 (**) (* explicit constructor *)
     @(cpxs_trans … (+ⓓV.ⓐV2.ⓛ{q}W2.T2)) [ /3 width=1 by cpxs_flat_dx, cpxs_bind_dx/ ] -T
     @(cpxs_strap2 … (ⓐV1.ⓛ{q}W.T0)) [2: /2 width=1 by cpxs_beta_dx/ ]
     /4 width=7 by cpx_zeta, lifts_bind, lifts_flat/
   ]
 | #q #V3 #V4 #V0 #T0 #HV13 #HV34 #HT0 #HU
-  @or_intror @(cpxs_trans … HU) -U (**) (* explicit constructor *)
+  @or_intror @(cpxs_trans … HU) -X2 (**) (* explicit constructor *)
   elim (cpxs_inv_abbr1_dx … HT0) -HT0 *
   [ #V5 #T5 #HV5 #HT5 #H destruct
     /6 width=9 by cpxs_lifts_bi, drops_refl, drops_drop, cpxs_flat, cpxs_bind/
@@ -88,13 +84,13 @@ elim (cpxs_inv_appl1 … H) -H *
 ]
 qed-.
 
-lemma cpxs_fwd_cast: ∀h,o,G,L,W,T,U. ⦃G, L⦄ ⊢ ⓝW.T ⬈*[h] U →
-                     ∨∨ ⓝW. T ⩳[h, o] U | ⦃G, L⦄ ⊢ T ⬈*[h] U | ⦃G, L⦄ ⊢ W ⬈*[h] U.
-#h #o #G #L #W #T #U #H
+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
 elim (cpxs_inv_cast1 … H) -H /2 width=1 by or3_intro1, or3_intro2/ *
 #W0 #T0 #_ #_ #H destruct /2 width=1 by theq_pair, or3_intro0/
 qed-.
 
-lemma cpxs_fwd_cnx: ∀h,o,G,L,T. ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃T⦄ →
-                    ∀U. ⦃G, L⦄ ⊢ T ⬈*[h] U → T ⩳[h, o] U.
-/3 width=4 by cpxs_inv_cnx1, tdeq_theq/ qed-.
+lemma cpxs_fwd_cnx: ∀h,G,L,T1. ⦃G, L⦄ ⊢ ⬈[h] 𝐍⦃T1⦄ →
+                    ∀X2. ⦃G, L⦄ ⊢ T1 ⬈*[h] X2 → T1 ⩳ X2.
+/3 width=5 by cpxs_inv_cnx1, tdeq_theq/ qed-.
index 8c03262064abb5b3cda28727b778ae581fe9a981..ec7f35fee7390a466df88ae540033279ed8359e1 100644 (file)
@@ -20,90 +20,82 @@ include "basic_2/rt_computation/cpxs_theq.ma".
 
 (* Vector form of forward lemmas with head equivalence for terms ************)
 
-lemma cpxs_fwd_sort_vector: ∀h,o,G,L,s,Vs,U. ⦃G, L⦄ ⊢ ⒶVs.⋆s ⬈*[h] U →
-                            ⒶVs.⋆s ⩳[h, o] U ∨ ⦃G, L⦄ ⊢ ⒶVs.⋆(next h s) ⬈*[h] U.
-#h #o #G #L #s #Vs elim Vs -Vs /2 width=1 by cpxs_fwd_sort/
-#V #Vs #IHVs #U #H
+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/
+#V #Vs #IHVs #X2 #H
 elim (cpxs_inv_appl1 … H) -H *
-[ -IHVs #V1 #T1 #_ #_ #H destruct /2 width=1 by theq_pair, or_introl/
+[ -IHVs #V1 #T1 #_ #_ #H destruct /2 width=1 by theq_pair/
 | #p #W1 #T1 #HT1 #HU
-  elim (IHVs … HT1) -IHVs -HT1 #HT1
-  [ elim (theq_inv_applv_bind_simple … HT1) //
-  | @or_intror (**) (* explicit constructor *)
-    @(cpxs_trans … HU) -U
-    @(cpxs_strap1 … (ⓐV.ⓛ{p}W1.T1)) /3 width=1 by cpxs_flat_dx, cpx_beta/
-  ]
+  lapply (IHVs … HT1) -IHVs -HT1 #HT1
+  elim (theq_inv_applv_bind_simple … HT1) //
 | #p #V1 #V2 #V3 #T1 #HV01 #HV12 #HT1 #HU
-  elim (IHVs … HT1) -IHVs -HT1 #HT1
-  [ elim (theq_inv_applv_bind_simple … HT1) //
-  | @or_intror (**) (* explicit constructor *)
-    @(cpxs_trans … HU) -U
-    @(cpxs_strap1 … (ⓐV1.ⓓ{p}V3.T1)) /3 width=3 by cpxs_flat, cpx_theta/
-  ]
+  lapply (IHVs … HT1) -IHVs -HT1 #HT1
+  elim (theq_inv_applv_bind_simple … HT1) //
 ]
 qed-.
 
 (* Basic_2A1: was: cpxs_fwd_delta_vector *)
-lemma cpxs_fwd_delta_drops_vector: ∀h,o,I,G,L,K,V1,i. ⬇*[i] L ≘ K.ⓑ{I}V1 →
+lemma cpxs_fwd_delta_drops_vector: ∀h,I,G,L,K,V1,i. ⬇*[i] L ≘ K.ⓑ{I}V1 →
                                    ∀V2. ⬆*[↑i] V1 ≘ V2 →
-                                   ∀Vs,U. ⦃G, L⦄ ⊢ ⒶVs.#i ⬈*[h] U →
-                                   ⒶVs.#i ⩳[h, o] U ∨ ⦃G, L⦄ ⊢ ⒶVs.V2 ⬈*[h] U.
-#h #o #I #G #L #K #V1 #i #HLK #V2 #HV12 #Vs elim Vs -Vs /2 width=5 by cpxs_fwd_delta_drops/
-#V #Vs #IHVs #U #H -K -V1
+                                   ∀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
+elim Vs -Vs /2 width=5 by cpxs_fwd_delta_drops/
+#V #Vs #IHVs #X2 #H -K -V1
 elim (cpxs_inv_appl1 … H) -H *
 [ -IHVs #V0 #T0 #_ #_ #H destruct /2 width=1 by theq_pair, or_introl/
 | #q #W0 #T0 #HT0 #HU
   elim (IHVs … HT0) -IHVs -HT0 #HT0
   [ elim (theq_inv_applv_bind_simple … HT0) //
   | @or_intror -i (**) (* explicit constructor *)
-    @(cpxs_trans … HU) -U
+    @(cpxs_trans … HU) -X2
     @(cpxs_strap1 … (ⓐV.ⓛ{q}W0.T0)) /3 width=1 by cpxs_flat_dx, cpx_beta/
   ]
 | #q #V0 #V1 #V3 #T0 #HV0 #HV01 #HT0 #HU
   elim (IHVs … HT0) -IHVs -HT0 #HT0
   [ elim (theq_inv_applv_bind_simple … HT0) //
   | @or_intror -i (**) (* explicit constructor *)
-    @(cpxs_trans … HU) -U
+    @(cpxs_trans … HU) -X2
     @(cpxs_strap1 … (ⓐV0.ⓓ{q}V3.T0)) /3 width=3 by cpxs_flat, cpx_theta/
   ]
 ]
 qed-.
 
 (* Basic_1: was just: pr3_iso_appls_beta *)
-lemma cpxs_fwd_beta_vector: ∀h,o,p,G,L,Vs,V,W,T,U. ⦃G, L⦄ ⊢ ⒶVs.ⓐV.ⓛ{p}W.T ⬈*[h] U →
-                            â\92¶Vs.â\93\90V.â\93\9b{p}W. T â©³[h, o] U â\88¨ â¦\83G, Lâ¦\84 â\8a¢ â\92¶Vs.â\93\93{p}â\93\9dW.V.T â¬\88*[h] U.
-#h #o #p #G #L #Vs elim Vs -Vs /2 width=1 by cpxs_fwd_beta/
-#V0 #Vs #IHVs #V #W #T #U #H
+lemma cpxs_fwd_beta_vector: ∀h,p,G,L,Vs,V,W,T,X2. ⦃G, L⦄ ⊢ ⒶVs.ⓐV.ⓛ{p}W.T ⬈*[h] X2 →
+                            â\88¨â\88¨ â\92¶Vs.â\93\90V.â\93\9b{p}W. T â©³ X2 | â¦\83G, Lâ¦\84 â\8a¢ â\92¶Vs.â\93\93{p}â\93\9dW.V.T â¬\88*[h] X2.
+#h #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 theq_pair, or_introl/
 | #q #W1 #T1 #HT1 #HU
   elim (IHVs … HT1) -IHVs -HT1 #HT1
   [ elim (theq_inv_applv_bind_simple … HT1) //
   | @or_intror (**) (* explicit constructor *)
-    @(cpxs_trans … HU) -U
+    @(cpxs_trans … HU) -X2
     @(cpxs_strap1 … (ⓐV0.ⓛ{q}W1.T1)) /3 width=1 by cpxs_flat_dx, cpx_beta/
   ]
 | #q #V1 #V2 #V3 #T1 #HV01 #HV12 #HT1 #HU
   elim (IHVs … HT1) -IHVs -HT1 #HT1
   [ elim (theq_inv_applv_bind_simple … HT1) //
   | @or_intror (**) (* explicit constructor *)
-    @(cpxs_trans … HU) -U
+    @(cpxs_trans … HU) -X2
     @(cpxs_strap1 … (ⓐV1.ⓓ{q}V3.T1)) /3 width=3 by cpxs_flat, cpx_theta/
   ]
 ]
 qed-.
 
 (* Basic_1: was just: pr3_iso_appls_abbr *)
-lemma cpxs_fwd_theta_vector: ∀h,o,G,L,V1b,V2b. ⬆*[1] V1b ≘ V2b →
-                             ∀p,V,T,U. ⦃G, L⦄ ⊢ ⒶV1b.ⓓ{p}V.T ⬈*[h] U →
-                             â\92¶V1b.â\93\93{p}V.T â©³[h, o] U â\88¨ â¦\83G, Lâ¦\84 â\8a¢ â\93\93{p}V.â\92¶V2b.T â¬\88*[h] U.
-#h #o #G #L #V1b #V2b * -V1b -V2b /3 width=1 by or_intror/
+lemma cpxs_fwd_theta_vector: ∀h,G,L,V1b,V2b. ⬆*[1] V1b ≘ V2b →
+                             ∀p,V,T,X2. ⦃G, L⦄ ⊢ ⒶV1b.ⓓ{p}V.T ⬈*[h] X2 →
+                             â\88¨â\88¨ â\92¶V1b.â\93\93{p}V.T â©³ X2 | â¦\83G, Lâ¦\84 â\8a¢ â\93\93{p}V.â\92¶V2b.T â¬\88*[h] X2.
+#h #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
 generalize in match V1a; -V1a
 elim HV12b -V1b -V2b /2 width=1 by cpxs_fwd_theta/
-#V1b #V2b #V1b #V2b #HV12b #_ #IHV12b #V1a #V2a #HV12a #V #T #U #H
+#V1b #V2b #V1b #V2b #HV12b #_ #IHV12b #V1a #V2a #HV12a #V #T #X2 #H
 elim (cpxs_inv_appl1 … H) -H *
 [ -IHV12b -HV12a -HV12b #V0 #T0 #_ #_ #H destruct /2 width=1 by theq_pair, or_introl/
 | #q #W0 #T0 #HT0 #HU
@@ -111,7 +103,7 @@ elim (cpxs_inv_appl1 … H) -H *
   [ -HV12a -HV12b -HU
     elim (theq_inv_pair1 … HT0) #V1 #T1 #H destruct
   | @or_intror -V1b (**) (* explicit constructor *)
-    @(cpxs_trans … HU) -U
+    @(cpxs_trans … HU) -X2
     elim (cpxs_inv_abbr1_dx … HT0) -HT0 *
     [ -HV12a #V1 #T1 #_ #_ #H destruct
     | -V1b #X #HT1 #H #H0 destruct
@@ -126,7 +118,7 @@ elim (cpxs_inv_appl1 … H) -H *
   [ -HV12a -HV10a -HV0a -HU
     elim (theq_inv_pair1 … HT0) #V1 #T1 #H destruct
   | @or_intror -V1b -V1b (**) (* explicit constructor *)
-    @(cpxs_trans … HU) -U
+    @(cpxs_trans … HU) -X2
     elim (cpxs_inv_abbr1_dx … HT0) -HT0 *
     [ #V1 #T1 #HV1 #HT1 #H destruct
       lapply (cpxs_lifts_bi … HV10a (Ⓣ) … (L.ⓓV) … HV12a … HV0a) -V1a -V0a /3 width=1 by drops_refl, drops_drop/ #HV2a
@@ -143,41 +135,41 @@ elim (cpxs_inv_appl1 … H) -H *
 qed-.
 
 (* Basic_1: was just: pr3_iso_appls_cast *)
-lemma cpxs_fwd_cast_vector: ∀h,o,G,L,Vs,W,T,U. ⦃G, L⦄ ⊢ ⒶVs.ⓝW.T ⬈*[h] U →
-                            ∨∨ ⒶVs. ⓝW. T ⩳[h, o] U
-                             | ⦃G, L⦄ ⊢ ⒶVs.T ⬈*[h] U
-                             | ⦃G, L⦄ ⊢ ⒶVs.W ⬈*[h] U.
-#h #o #G #L #Vs elim Vs -Vs /2 width=1 by cpxs_fwd_cast/
-#V #Vs #IHVs #W #T #U #H
+lemma cpxs_fwd_cast_vector: ∀h,G,L,Vs,W,T,X2. ⦃G, L⦄ ⊢ ⒶVs.ⓝW.T ⬈*[h] 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/
+#V #Vs #IHVs #W #T #X2 #H
 elim (cpxs_inv_appl1 … H) -H *
 [ -IHVs #V0 #T0 #_ #_ #H destruct /2 width=1 by theq_pair, or3_intro0/
 | #q #W0 #T0 #HT0 #HU elim (IHVs … HT0) -IHVs -HT0 #HT0
   [ elim (theq_inv_applv_bind_simple … HT0) //
   | @or3_intro1 -W (**) (* explicit constructor *)
-    @(cpxs_trans … HU) -U
+    @(cpxs_trans … HU) -X2
     @(cpxs_strap1 … (ⓐV.ⓛ{q}W0.T0)) /2 width=1 by cpxs_flat_dx, cpx_beta/
   | @or3_intro2 -T (**) (* explicit constructor *)
-    @(cpxs_trans … HU) -U
+    @(cpxs_trans … HU) -X2
     @(cpxs_strap1 … (ⓐV.ⓛ{q}W0.T0)) /2 width=1 by cpxs_flat_dx, cpx_beta/
   ]
 | #q #V0 #V1 #V2 #T0 #HV0 #HV01 #HT0 #HU
   elim (IHVs … HT0) -IHVs -HT0 #HT0
   [ elim (theq_inv_applv_bind_simple … HT0) //
   | @or3_intro1 -W (**) (* explicit constructor *)
-    @(cpxs_trans … HU) -U
+    @(cpxs_trans … HU) -X2
     @(cpxs_strap1 … (ⓐV0.ⓓ{q}V2.T0)) /2 width=3 by cpxs_flat, cpx_theta/
   | @or3_intro2 -T (**) (* explicit constructor *)
-    @(cpxs_trans … HU) -U
+    @(cpxs_trans … HU) -X2
     @(cpxs_strap1 … (ⓐV0.ⓓ{q}V2.T0)) /2 width=3 by cpxs_flat, cpx_theta/
   ]
 ]
 qed-.
 
 (* Basic_1: was just: nf2_iso_appls_lref *)
-lemma cpxs_fwd_cnx_vector: ∀h,o,G,L,T. 𝐒⦃T⦄ → ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃T⦄ →
-                           ∀Vs,U. ⦃G, L⦄ ⊢ ⒶVs.T ⬈*[h] U → ⒶVs.T ⩳[h, o] U.
-#h #o #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 #U #H
+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 *)
+#V #Vs #IHVs #X2 #H
 elim (cpxs_inv_appl1 … H) -H *
 [ -IHVs #V0 #T0 #_ #_ #H destruct /2 width=1 by theq_pair/
 | #p #W0 #T0 #HT0 #HU
index 4c8371a0b74f9b8c748e9e9a35140b56ed215879..384d014cbd62fb89841f924c98de9b83b4f05acd 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/predtystrong_5.ma".
+include "basic_2/notation/relations/predtystrong_4.ma".
 include "static_2/syntax/tdeq.ma".
 include "basic_2/rt_transition/cpx.ma".
 
 (* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
 
-definition csx: ∀h. sd h → relation3 genv lenv term ≝
-                λh,o,G,L. SN … (cpx h G L) (tdeq h o …).
+definition csx: ∀h. relation3 genv lenv term ≝
+                λh,G,L. SN … (cpx h G L) tdeq.
 
 interpretation
    "strong normalization for unbound context-sensitive parallel rt-transition (term)"
-   'PRedTyStrong h o G L T = (csx h o G L T).
+   'PRedTyStrong h G L T = (csx h G L T).
 
 (* Basic eliminators ********************************************************)
 
-lemma csx_ind: ∀h,o,G,L. ∀Q:predicate term.
-               (∀T1. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ →
-                     (∀T2. ⦃G, L⦄ ⊢ T1 ⬈[h] T2 → (T1 ≛[h, o] T2 → ⊥) → Q T2) →
+lemma csx_ind: ∀h,G,L. ∀Q:predicate term.
+               (∀T1. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃T1⦄ →
+                     (∀T2. ⦃G, L⦄ ⊢ T1 ⬈[h] T2 → (T1 ≛ T2 → ⊥) → Q T2) →
                      Q T1
                ) →
-               ∀T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄ →  Q T.
-#h #o #G #L #Q #H0 #T1 #H elim H -T1
+               ∀T. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃T⦄ →  Q T.
+#h #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,o,G,L,T1.
-                 (∀T2. ⦃G, L⦄ ⊢ T1 ⬈[h] T2 → (T1 ≛[h, o] T2 → ⊥) → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T2⦄) →
-                 ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄.
+lemma csx_intro: ∀h,G,L,T1.
+                 (∀T2. ⦃G, L⦄ ⊢ T1 ⬈[h] T2 → (T1 ≛ T2 → ⊥) → ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃T2⦄) →
+                 ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃T1⦄.
 /4 width=1 by SN_intro/ qed.
 
 (* Basic forward lemmas *****************************************************)
 
-fact csx_fwd_pair_sn_aux: ∀h,o,G,L,U. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃U⦄ →
-                          ∀I,V,T. U = ②{I}V.T → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃V⦄.
-#h #o #G #L #U #H elim H -H #U0 #_ #IH #I #V #T #H destruct
+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
 @csx_intro #V2 #HLV2 #HV2
 @(IH (②{I}V2.T)) -IH /2 width=3 by cpx_pair_sn/ -HLV2
 #H elim (tdeq_inv_pair … H) -H /2 width=1 by/
 qed-.
 
 (* Basic_1: was just: sn3_gen_head *)
-lemma csx_fwd_pair_sn: ∀h,o,I,G,L,V,T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃②{I}V.T⦄ → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃V⦄.
+lemma csx_fwd_pair_sn: ∀h,I,G,L,V,T. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃②{I}V.T⦄ → ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃V⦄.
 /2 width=5 by csx_fwd_pair_sn_aux/ qed-.
 
-fact csx_fwd_bind_dx_aux: ∀h,o,G,L,U. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃U⦄ →
-                          ∀p,I,V,T. U = ⓑ{p,I}V.T → ⦃G, L.ⓑ{I}V⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄.
-#h #o #G #L #U #H elim H -H #U0 #_ #IH #p #I #V #T #H destruct
+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
 @csx_intro #T2 #HLT2 #HT2
 @(IH (ⓑ{p,I}V.T2)) -IH /2 width=3 by cpx_bind/ -HLT2
 #H elim (tdeq_inv_pair … H) -H /2 width=1 by/
 qed-.
 
 (* Basic_1: was just: sn3_gen_bind *)
-lemma csx_fwd_bind_dx: ∀h,o,p,I,G,L,V,T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓑ{p,I}V.T⦄ → ⦃G, L.ⓑ{I}V⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄.
+lemma csx_fwd_bind_dx: ∀h,p,I,G,L,V,T. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃ⓑ{p,I}V.T⦄ → ⦃G, L.ⓑ{I}V⦄ ⊢ ⬈*[h] 𝐒⦃T⦄.
 /2 width=4 by csx_fwd_bind_dx_aux/ qed-.
 
-fact csx_fwd_flat_dx_aux: ∀h,o,G,L,U. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃U⦄ →
-                          ∀I,V,T. U = ⓕ{I}V.T → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄.
-#h #o #G #L #U #H elim H -H #U0 #_ #IH #I #V #T #H destruct
+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
 @csx_intro #T2 #HLT2 #HT2
 @(IH (ⓕ{I}V.T2)) -IH /2 width=3 by cpx_flat/ -HLT2
 #H elim (tdeq_inv_pair … H) -H /2 width=1 by/
 qed-.
 
 (* Basic_1: was just: sn3_gen_flat *)
-lemma csx_fwd_flat_dx: ∀h,o,I,G,L,V,T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓕ{I}V.T⦄ → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄.
+lemma csx_fwd_flat_dx: ∀h,I,G,L,V,T. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃ⓕ{I}V.T⦄ → ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃T⦄.
 /2 width=5 by csx_fwd_flat_dx_aux/ qed-.
 
-lemma csx_fwd_bind: ∀h,o,p,I,G,L,V,T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓑ{p,I}V.T⦄ →
-                    ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃V⦄ ∧ ⦃G, L.ⓑ{I}V⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄.
+lemma csx_fwd_bind: ∀h,p,I,G,L,V,T. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃ⓑ{p,I}V.T⦄ →
+                    ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃V⦄ ∧ ⦃G, L.ⓑ{I}V⦄ ⊢ ⬈*[h] 𝐒⦃T⦄.
 /3 width=3 by csx_fwd_pair_sn, csx_fwd_bind_dx, conj/ qed-.
 
-lemma csx_fwd_flat: ∀h,o,I,G,L,V,T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓕ{I}V.T⦄ →
-                    ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃V⦄ ∧ ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄.
+lemma csx_fwd_flat: ∀h,I,G,L,V,T. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃ⓕ{I}V.T⦄ →
+                    ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃V⦄ ∧ ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃T⦄.
 /3 width=3 by csx_fwd_pair_sn, csx_fwd_flat_dx, conj/ qed-.
 
 (* Basic_1: removed theorems 14:
index 6cc0664aae5a3b5f3339f306e56a6cf0d228a3e4..c44bf1d53abb9acb2b78861ec62b5a939a247e5b 100644 (file)
@@ -21,40 +21,40 @@ include "basic_2/rt_computation/csx_gcr.ma".
 
 (* Main properties with atomic arity assignment *****************************)
 
-theorem aaa_csx: ∀h,o,G,L,T,A. ⦃G, L⦄ ⊢ T ⁝ A → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄.
-#h #o #G #L #T #A #H
-@(gcr_aaa … (csx_gcp h o) (csx_gcr h o) … H)
+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)
 qed.
 
 (* Advanced eliminators *****************************************************)
 
-fact aaa_ind_csx_aux: ∀h,o,G,L,A. ∀Q:predicate term.
+fact aaa_ind_csx_aux: ∀h,G,L,A. ∀Q:predicate term.
                       (∀T1. ⦃G, L⦄ ⊢ T1 ⁝ A →
-                            (∀T2. ⦃G, L⦄ ⊢ T1 ⬈[h] T2 → (T1 ≛[h, o] T2 → ⊥) → Q T2) → Q T1
+                            (∀T2. ⦃G, L⦄ ⊢ T1 ⬈[h] T2 → (T1 ≛ T2 → ⊥) → Q T2) → Q T1
                       ) →
-                      ∀T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄ → ⦃G, L⦄ ⊢ T ⁝ A →  Q T.
-#h #o #G #L #A #Q #IH #T #H @(csx_ind … H) -T /4 width=5 by cpx_aaa_conf/
+                      ∀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/
 qed-.
 
-lemma aaa_ind_csx: ∀h,o,G,L,A. ∀Q:predicate term.
+lemma aaa_ind_csx: ∀h,G,L,A. ∀Q:predicate term.
                    (∀T1. ⦃G, L⦄ ⊢ T1 ⁝ A →
-                         (∀T2. ⦃G, L⦄ ⊢ T1 ⬈[h] T2 → (T1 ≛[h, o] T2 → ⊥) → Q T2) → Q T1
+                         (∀T2. ⦃G, L⦄ ⊢ T1 ⬈[h] 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,o,G,L,A. ∀Q:predicate term.
+fact aaa_ind_csx_cpxs_aux: ∀h,G,L,A. ∀Q:predicate term.
                            (∀T1. ⦃G, L⦄ ⊢ T1 ⁝ A →
-                                 (∀T2. ⦃G, L⦄ ⊢ T1 ⬈*[h] T2 → (T1 ≛[h, o] T2 → ⊥) → Q T2) → Q T1
+                                 (∀T2. ⦃G, L⦄ ⊢ T1 ⬈*[h] T2 → (T1 ≛ T2 → ⊥) → Q T2) → Q T1
                            ) →
-                           ∀T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄ → ⦃G, L⦄ ⊢ T ⁝ A →  Q T.
-#h #o #G #L #A #Q #IH #T #H @(csx_ind_cpxs … H) -T /4 width=5 by cpxs_aaa_conf/
+                           ∀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/
 qed-.
 
 (* Basic_2A1: was: aaa_ind_csx_alt *)
-lemma aaa_ind_csx_cpxs: ∀h,o,G,L,A. ∀Q:predicate term.
+lemma aaa_ind_csx_cpxs: ∀h,G,L,A. ∀Q:predicate term.
                         (∀T1. ⦃G, L⦄ ⊢ T1 ⁝ A →
-                              (∀T2. ⦃G, L⦄ ⊢ T1 ⬈*[h] T2 → (T1 ≛[h, o] T2 → ⊥) → Q T2) → Q T1
+                              (∀T2. ⦃G, L⦄ ⊢ T1 ⬈*[h] T2 → (T1 ≛ T2 → ⊥) → Q T2) → Q T1
                         ) →
                         ∀T. ⦃G, L⦄ ⊢ T ⁝ A → Q T.
 /5 width=9 by aaa_ind_csx_cpxs_aux, aaa_csx/ qed-.
index 24320b69feb4ff24d47962c69f4324ce1fdd2ed2..eaaaa9aa2927497355f20b8a0bf893da05de7489 100644 (file)
@@ -20,18 +20,10 @@ include "basic_2/rt_computation/csx.ma".
 (* Properties with normal terms for unbound parallel rt-transition **********)
 
 (* Basic_1: was just: sn3_nf2 *)
-lemma cnx_csx: ∀h,o,G,L,T. ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃T⦄ → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄.
+lemma cnx_csx: ∀h,G,L,T. ⦃G, L⦄ ⊢ ⬈[h] 𝐍⦃T⦄ → ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃T⦄.
 /2 width=1 by NF_to_SN/ qed.
 
 (* Advanced properties ******************************************************)
 
-lemma csx_sort: ∀h,o,G,L,s. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃⋆s⦄.
-#h #o #G #L #s elim (deg_total h o s)
-#d generalize in match s; -s elim d -d
-[ /3 width=3 by cnx_csx, cnx_sort/
-| #d #IH #s #Hsd lapply (deg_next_SO … Hsd) -Hsd
-  #Hsd @csx_intro #X #H #HX
-  elim (cpx_inv_sort1 … H) -H #H destruct /2 width=1 by/
-  elim HX -HX //
-]
-qed.
+lemma csx_sort: ∀h,G,L,s. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃⋆s⦄.
+/3 width=4 by cnx_csx, cnx_sort/ qed.
index 4a93b473e1c6a0f0e9ac330f3fdcc0149632f12d..d0072aa83cb4e80693abec740f366ed6d29213be 100644 (file)
@@ -23,34 +23,20 @@ include "basic_2/rt_computation/csx_vector.ma".
 (* Properties with normal terms for unbound parallel rt-transition **********)
 
 (* Basic_1: was just: sn3_appls_lref *)
-lemma csx_applv_cnx: ∀h,o,G,L,T. 𝐒⦃T⦄ → ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃T⦄ →
-                     ∀Vs. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃Vs⦄ → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⒶVs.T⦄.
-#h #o #G #L #T #H1T #H2T #Vs elim Vs -Vs
-[ #_ normalize in ⊢ (?????%); /2 width=1/
+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/
 | #V #Vs #IHV #H
   elim (csxv_inv_cons … H) -H #HV #HVs
   @csx_appl_simple_theq /2 width=1 by applv_simple/ -IHV -HV -HVs
   #X #H #H0
-  lapply (cpxs_fwd_cnx_vector … o … H) -H // -H1T -H2T #H
+  lapply (cpxs_fwd_cnx_vector … H) -H // -H1T -H2T #H
   elim (H0) -H0 //
 ]
 qed.
 
 (* Advanced properties ******************************************************)
 
-lemma csx_applv_sort: ∀h,o,G,L,s,Vs. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃Vs⦄ → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⒶVs.⋆s⦄.
-#h #o #G #L #s elim (deg_total h o s)
-#d generalize in match s; -s elim d -d
-[ /3 width=6 by csx_applv_cnx, cnx_sort, simple_atom/
-| #d #IHd #s #Hd #Vs elim Vs -Vs /2 width=1 by/
-  #V #Vs #IHVs #HVVs
-  elim (csxv_inv_cons … HVVs) #HV #HVs
-  @csx_appl_simple_theq /2 width=1 by applv_simple, simple_atom/
-  #X #H #H0
-  elim (cpxs_fwd_sort_vector … o … H) -H #H
-  [ elim H0 -H0 //
-  | -H0 @(csx_cpxs_trans … (Ⓐ(V⨮Vs).⋆(next h s)))
-    /3 width=1 by cpxs_flat_dx, deg_next_SO/
-  ]
-]
-qed.
+lemma csx_applv_sort: ∀h,G,L,s,Vs. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃Vs⦄ → ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃ⒶVs.⋆s⦄.
+/3 width=6 by csx_applv_cnx, cnx_sort, simple_atom/ qed.
index 3a8a70ef9499a537b30916d88f9dae74f9454bec..586c2847f7a6c83b66641bd714504ffd42f0db16 100644 (file)
@@ -21,33 +21,33 @@ include "basic_2/rt_computation/csx_csx.ma".
 (* Properties with unbound context-sensitive rt-computation for terms *******)
 
 (* Basic_1: was just: sn3_intro *)
-lemma csx_intro_cpxs: ∀h,o,G,L,T1.
-                      (∀T2. ⦃G, L⦄ ⊢ T1 ⬈*[h] T2 → (T1 ≛[h, o] T2 → ⊥) → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T2⦄) →
-                      ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄.
+lemma csx_intro_cpxs: ∀h,G,L,T1.
+                      (∀T2. ⦃G, L⦄ ⊢ T1 ⬈*[h] T2 → (T1 ≛ T2 → ⊥) → ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃T2⦄) →
+                      ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃T1⦄.
 /4 width=1 by cpx_cpxs, csx_intro/ qed-.
 
 (* Basic_1: was just: sn3_pr3_trans *)
-lemma csx_cpxs_trans: ∀h,o,G,L,T1. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ →
-                      ∀T2. ⦃G, L⦄ ⊢ T1 ⬈*[h] T2 → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T2⦄.
-#h #o #G #L #T1 #HT1 #T2 #H @(cpxs_ind … H) -T2
+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
 /2 width=3 by csx_cpx_trans/
 qed-.
 
 (* Eliminators with unbound context-sensitive rt-computation for terms ******)
 
-lemma csx_ind_cpxs_tdeq: ∀h,o,G,L. ∀Q:predicate term.
-                         (∀T1. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ →
-                               (∀T2. ⦃G, L⦄ ⊢ T1 ⬈*[h] T2 → (T1 ≛[h, o] T2 → ⊥) → Q T2) → Q T1
+lemma csx_ind_cpxs_tdeq: ∀h,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⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ →
-                         ∀T0. ⦃G, L⦄ ⊢ T1 ⬈*[h] T0 → ∀T2. T0 ≛[h, o] T2 → Q T2.
-#h #o #G #L #Q #IH #T1 #H @(csx_ind … H) -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 #HT1 #IH1 #T0 #HT10 #T2 #HT02
 @IH -IH /3 width=3 by csx_cpxs_trans, csx_tdeq_trans/ -HT1 #V2 #HTV2 #HnTV2
 lapply (tdeq_tdneq_trans … HT02 … HnTV2) -HnTV2 #H
 elim (tdeq_cpxs_trans … HT02 … HTV2) -T2 #V0 #HTV0 #HV02
 lapply (tdneq_tdeq_canc_dx … H … HV02) -H #HnTV0
-elim (tdeq_dec h o T1 T0) #H
+elim (tdeq_dec T1 T0) #H
 [ lapply (tdeq_tdneq_trans … H … HnTV0) -H -HnTV0 #Hn10
   lapply (cpxs_trans … HT10 … HTV0) -T0 #H10
   elim (cpxs_tdneq_fwd_step_sn … H10 …  Hn10) -H10 -Hn10
@@ -59,11 +59,11 @@ elim (tdeq_dec h o T1 T0) #H
 qed-.
 
 (* Basic_2A1: was: csx_ind_alt *)
-lemma csx_ind_cpxs: ∀h,o,G,L. ∀Q:predicate term.
-                    (∀T1. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ →
-                          (∀T2. ⦃G, L⦄ ⊢ T1 ⬈*[h] T2 → (T1 ≛[h, o] T2 → ⊥) → Q T2) → Q T1
+lemma csx_ind_cpxs: ∀h,G,L. ∀Q:predicate term.
+                    (∀T1. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃T1⦄ →
+                          (∀T2. ⦃G, L⦄ ⊢ T1 ⬈*[h] T2 → (T1 ≛ T2 → ⊥) → Q T2) → Q T1
                     ) →
-                    ∀T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄ →  Q T.
-#h #o #G #L #Q #IH #T #HT
+                    ∀T. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃T⦄ →  Q T.
+#h #G #L #Q #IH #T #HT
 @(csx_ind_cpxs_tdeq … IH … HT) -IH -HT // (**) (* full auto fails *)
 qed-.
index 5efee8db4b43d00cfc4cefb70a1958296c44d734..3702ba2458fda8782377de2e10c8ea358f5fce27 100644 (file)
@@ -19,23 +19,23 @@ include "basic_2/rt_computation/csx_drops.ma".
 
 (* Advanced properties ******************************************************)
 
-lemma csx_tdeq_trans: ∀h,o,G,L,T1. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ →
-                      ∀T2. T1 ≛[h, o] T2 → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T2⦄.
-#h #o #G #L #T1 #H @(csx_ind … H) -T1 #T #_ #IH #T2 #HT2
+lemma csx_tdeq_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
 @csx_intro #T1 #HT21 #HnT21 elim (tdeq_cpx_trans … HT2 … HT21) -HT21
 /4 width=5 by tdeq_repl/
 qed-.
 
-lemma csx_cpx_trans: ∀h,o,G,L,T1. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ →
-                     ∀T2. ⦃G, L⦄ ⊢ T1 ⬈[h] T2 → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T2⦄.
-#h #o #G #L #T1 #H @(csx_ind … H) -T1 #T1 #HT1 #IHT1 #T2 #HLT12
-elim (tdeq_dec h o T1 T2) /3 width=4 by csx_tdeq_trans/
+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
+elim (tdeq_dec T1 T2) /3 width=4 by csx_tdeq_trans/
 qed-.
 
 (* Basic_1: was just: sn3_cast *)
-lemma csx_cast: ∀h,o,G,L,W. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃W⦄ →
-                ∀T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄ → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓝW.T⦄.
-#h #o #G #L #W #HW @(csx_ind … HW) -W
+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
 #W #HW #IHW #T #HT @(csx_ind … HT) -T
 #T #HT #IHT @csx_intro
 #X #H1 #H2 elim (cpx_inv_cast1 … H1) -H1
@@ -51,9 +51,9 @@ qed.
 
 (* Basic_1: was just: sn3_abbr *)
 (* Basic_2A1: was: csx_lref_bind *)
-lemma csx_lref_pair: ∀h,o,I,G,L,K,V,i. ⬇*[i] L ≘ K.ⓑ{I}V →
-                     ⦃G, K⦄ ⊢ ⬈*[h, o] 𝐒⦃V⦄ → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃#i⦄.
-#h #o #I #G #L #K #V #i #HLK #HV
+lemma csx_lref_pair: ∀h,I,G,L,K,V,i. ⬇*[i] L ≘ K.ⓑ{I}V →
+                     ⦃G, K⦄ ⊢ ⬈*[h] 𝐒⦃V⦄ → ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃#i⦄.
+#h #I #G #L #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
@@ -66,17 +66,17 @@ qed.
 
 (* Basic_1: was: sn3_gen_def *)
 (* Basic_2A1: was: csx_inv_lref_bind *)
-lemma csx_inv_lref_pair: ∀h,o,I,G,L,K,V,i. ⬇*[i] L ≘ K.ⓑ{I}V →
-                         ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃#i⦄ → ⦃G, K⦄ ⊢ ⬈*[h, o] 𝐒⦃V⦄.
-#h #o #I #G #L #K #V #i #HLK #Hi
+lemma csx_inv_lref_pair: ∀h,I,G,L,K,V,i. ⬇*[i] L ≘ K.ⓑ{I}V →
+                         ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃#i⦄ → ⦃G, K⦄ ⊢ ⬈*[h] 𝐒⦃V⦄.
+#h #I #G #L #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: ∀h,o,G,L,i. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃#i⦄ →
+lemma csx_inv_lref: ∀h,G,L,i. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃#i⦄ →
                     ∨∨ ⬇*[Ⓕ, 𝐔❴i❵] L ≘ ⋆
                      | ∃∃I,K. ⬇*[i] L ≘ K.ⓤ{I}
-                     | ∃∃I,K,V. ⬇*[i] L ≘ K.ⓑ{I}V & ⦃G, K⦄ ⊢ ⬈*[h, o] 𝐒⦃V⦄.
-#h #o #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⦄ ⊢ ⬈*[h] 𝐒⦃V⦄.
+#h #G #L #i #H elim (drops_F_uni L i) /2 width=1 by or3_intro0/
 * * /4 width=9 by csx_inv_lref_pair, ex2_3_intro, ex1_2_intro, or3_intro2, or3_intro1/
 qed-.
index 30f35f70fef5a1de10d690f9e4fbaf2d6b9cc9dd..4899dc66d4d2731a749d76a47dc0b3b37fd69ac4 100644 (file)
@@ -23,31 +23,31 @@ include "basic_2/rt_computation/csx_vector.ma".
 (* Advanced properties ************************************* ****************)
 
 (* Basic_1: was just: sn3_appls_beta *)
-lemma csx_applv_beta: ∀h,o,p,G,L,Vs,V,W,T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⒶVs.ⓓ{p}ⓝW.V.T⦄ →
-                      ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⒶVs.ⓐV.ⓛ{p}W.T⦄.
-#h #o #p #G #L #Vs elim Vs -Vs /2 width=1 by csx_appl_beta/
+lemma csx_applv_beta: ∀h,p,G,L,Vs,V,W,T. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃ⒶVs.ⓓ{p}ⓝW.V.T⦄ →
+                      ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃ⒶVs.ⓐV.ⓛ{p}W.T⦄.
+#h #p #G #L #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
 @csx_appl_simple_theq /2 width=1 by applv_simple, simple_flat/ -IHV -HV0 -H2T
 #X #H #H0
-elim (cpxs_fwd_beta_vector … o … H) -H #H
+elim (cpxs_fwd_beta_vector … H) -H #H
 [ -H1T elim H0 -H0 //
 | -H0 /3 width=5 by csx_cpxs_trans, cpxs_flat_dx/
 ]
 qed.
 
-lemma csx_applv_delta: ∀h,o,I,G,L,K,V1,i. ⬇*[i] L ≘ K.ⓑ{I}V1 →
+lemma csx_applv_delta: ∀h,I,G,L,K,V1,i. ⬇*[i] L ≘ K.ⓑ{I}V1 →
                        ∀V2. ⬆*[↑i] V1 ≘ V2 →
-                       ∀Vs. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⒶVs.V2⦄ → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⒶVs.#i⦄.
-#h #o #I #G #L #K #V1 #i #HLK #V2 #HV12 #Vs elim Vs -Vs
+                       ∀Vs. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃ⒶVs.V2⦄ → ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃ⒶVs.#i⦄.
+#h #I #G #L #K #V1 #i #HLK #V2 #HV12 #Vs elim Vs -Vs
 [ /4 width=11 by csx_inv_lifts, csx_lref_pair, drops_isuni_fwd_drop2/
 | #V #Vs #IHV #H1T
   lapply (csx_fwd_pair_sn … H1T) #HV
   lapply (csx_fwd_flat_dx … H1T) #H2T
   @csx_appl_simple_theq /2 width=1 by applv_simple, simple_atom/ -IHV -HV  -H2T
   #X #H #H0
-  elim (cpxs_fwd_delta_drops_vector … o … HLK … HV12 … H) -HLK -HV12 -H #H
+  elim (cpxs_fwd_delta_drops_vector … HLK … HV12 … H) -HLK -HV12 -H #H
   [ -H1T elim H0 -H0 //
   | -H0 /3 width=5 by csx_cpxs_trans, cpxs_flat_dx/
   ]
@@ -55,10 +55,10 @@ lemma csx_applv_delta: ∀h,o,I,G,L,K,V1,i. ⬇*[i] L ≘ K.ⓑ{I}V1 →
 qed.
 
 (* Basic_1: was just: sn3_appls_abbr *)
-lemma csx_applv_theta: ∀h,o,p,G,L,V1b,V2b. ⬆*[1] V1b ≘ V2b →
-                       ∀V,T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓓ{p}V.ⒶV2b.T⦄ →
-                       ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⒶV1b.ⓓ{p}V.T⦄.
-#h #o #p #G #L #V1b #V2b * -V1b -V2b /2 width=1 by/
+lemma csx_applv_theta: ∀h,p,G,L,V1b,V2b. ⬆*[1] V1b ≘ V2b →
+                       ∀V,T. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃ⓓ{p}V.ⒶV2b.T⦄ →
+                       ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃ⒶV1b.ⓓ{p}V.T⦄.
+#h #p #G #L #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/
@@ -67,23 +67,23 @@ lapply (csx_appl_theta … H … HW12) -H -HW12 #H
 lapply (csx_fwd_pair_sn … H) #HW1
 lapply (csx_fwd_flat_dx … H) #H1
 @csx_appl_simple_theq /2 width=3 by simple_flat/ -IHV12b -HW1 -H1 #X #H1 #H2
-elim (cpxs_fwd_theta_vector … o … (V2⨮V2b) … H1) -H1 /2 width=1 by liftsv_cons/ -HV12b -HV12
+elim (cpxs_fwd_theta_vector … (V2⨮V2b) … H1) -H1 /2 width=1 by liftsv_cons/ -HV12b -HV12
 [ -H #H elim H2 -H2 //
 | -H2 /3 width=5 by csx_cpxs_trans, cpxs_flat_dx/
 ]
 qed.
 
 (* Basic_1: was just: sn3_appls_cast *)
-lemma csx_applv_cast: ∀h,o,G,L,Vs,U. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⒶVs.U⦄ →
-                      ∀T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⒶVs.T⦄ → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⒶVs.ⓝU.T⦄.
-#h #o #G #L #Vs elim Vs -Vs /2 width=1 by csx_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/
 #V #Vs #IHV #U #H1U #T #H1T
 lapply (csx_fwd_pair_sn … H1U) #HV
 lapply (csx_fwd_flat_dx … H1U) #H2U
 lapply (csx_fwd_flat_dx … H1T) #H2T
 @csx_appl_simple_theq /2 width=1 by applv_simple, simple_flat/ -IHV -HV -H2U -H2T
 #X #H #H0
-elim (cpxs_fwd_cast_vector … o … H) -H #H
+elim (cpxs_fwd_cast_vector … H) -H #H
 [ -H1U -H1T elim H0 -H0 //
 | -H1U -H0 /3 width=5 by csx_cpxs_trans, cpxs_flat_dx/
 | -H1T -H0 /3 width=5 by csx_cpxs_trans, cpxs_flat_dx/
index c0ecbf084361cdac1e3612e2aab29ee2fbf080dd..ad0c072fb097cb60e0c0b52991ebd1f609474381 100644 (file)
@@ -22,8 +22,8 @@ include "basic_2/rt_computation/csx.ma".
 
 (* Basic_1: was just: sn3_lift *)
 (* Basic_2A1: was just: csx_lift *)
-lemma csx_lifts: ∀h,o,G. d_liftable1 … (csx h o G).
-#h #o #G #K #T #H @(csx_ind … H) -T
+lemma csx_lifts: ∀h,G. d_liftable1 … (csx h G).
+#h #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
@@ -34,8 +34,8 @@ qed-.
 
 (* Basic_1: was just: sn3_gen_lift *)
 (* Basic_2A1: was just: csx_inv_lift *)
-lemma csx_inv_lifts: ∀h,o,G. d_deliftable1 … (csx h o G).
-#h #o #G #L #U #H @(csx_ind … H) -U
+lemma csx_inv_lifts: ∀h,G. d_deliftable1 … (csx h G).
+#h #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 7c58163b38b2d3e837e5568089cdc3e7c061a82f..2ffd57655680a9b11218018784123d9dc61487cc 100644 (file)
@@ -17,10 +17,10 @@ include "basic_2/rt_computation/csx_rdeq.ma".
 
 (* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
 
-(* Properties with degree-based equivalence for closures ********************)
+(* Properties with sort-irrelevant equivalence for closures *****************)
 
-lemma csx_fdeq_conf: ∀h,o,G1,L1,T1. ⦃G1, L1⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ →
-                     ∀G2,L2,T2. ⦃G1, L1, T1⦄ ≛[h, o] ⦃G2, L2, T2⦄ → ⦃G2, L2⦄ ⊢ ⬈*[h, o] 𝐒⦃T2⦄.
-#h #o #G1 #L1 #T1 #HT1 #G2 #L2 #T2 * -G2 -L2 -T2
+lemma csx_fdeq_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
 /3 width=3 by csx_rdeq_conf, csx_tdeq_trans/
 qed-.
index fbc312d03157e225330b56e0df6594b9f810b7a1..a08e70926fb1da08ec41c72bb4ea4cb1fc2c1c33 100644 (file)
@@ -22,8 +22,8 @@ include "basic_2/rt_computation/csx_lpx.ma".
 (* Properties with parallel rst-transition for closures *********************)
 
 (* Basic_2A1: was: csx_fpb_conf *)
-lemma csx_fpbq_conf: ∀h,o,G1,L1,T1. ⦃G1, L1⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ →
-                     ∀G2,L2,T2. ⦃G1, L1, T1⦄ ≽[h, o] ⦃G2, L2, T2⦄ → ⦃G2, L2⦄ ⊢ ⬈*[h, o] 𝐒⦃T2⦄.
-#h #o #G1 #L1 #T1 #HT1 #G2 #L2 #T2 *
+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 *
 /2 width=6 by csx_cpx_trans, csx_fquq_conf, csx_lpx_conf, csx_fdeq_conf/
 qed-.
index 0943a9adda981eb1d83517aa7c3b04180c40ab9a..ee76d6762e3e589a189be8e8c8bbb22d099c7ee2 100644 (file)
@@ -19,9 +19,9 @@ include "basic_2/rt_computation/csx_lsubr.ma".
 
 (* Properties with extended supclosure **************************************)
 
-lemma csx_fqu_conf: ∀h,o,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐[b] ⦃G2, L2, T2⦄ →
-                    ⦃G1, L1⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ → ⦃G2, L2⦄ ⊢ ⬈*[h, o] 𝐒⦃T2⦄.
-#h #o #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
+lemma csx_fqu_conf: ∀h,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
 [ /3 width=5 by csx_inv_lref_pair, drops_refl/
 | /2 width=3 by csx_fwd_pair_sn/
 | /2 width=2 by csx_fwd_bind_dx/
@@ -31,20 +31,20 @@ lemma csx_fqu_conf: ∀h,o,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐[b] ⦃G2, L
 ]
 qed-.
 
-lemma csx_fquq_conf: ∀h,o,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐⸮[b] ⦃G2, L2, T2⦄ →
-                     ⦃G1, L1⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ → ⦃G2, L2⦄ ⊢ ⬈*[h, o] 𝐒⦃T2⦄.
-#h #o #b #G1 #G2 #L1 #L2 #T1 #T2 * /2 width=6 by csx_fqu_conf/
+lemma csx_fquq_conf: ∀h,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/
 * #HG #HL #HT destruct //
 qed-.
 
-lemma csx_fqup_conf: ∀h,o,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐+[b] ⦃G2, L2, T2⦄ →
-                     ⦃G1, L1⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ → ⦃G2, L2⦄ ⊢ ⬈*[h, o] 𝐒⦃T2⦄.
-#h #o #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind … H) -G2 -L2 -T2
+lemma csx_fqup_conf: ∀h,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
 /3 width=6 by csx_fqu_conf/
 qed-.
 
-lemma csx_fqus_conf: ∀h,o,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐*[b] ⦃G2, L2, T2⦄ →
-                     ⦃G1, L1⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ → ⦃G2, L2⦄ ⊢ ⬈*[h, o] 𝐒⦃T2⦄.
-#h #o #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqus_ind … H) -H
+lemma csx_fqus_conf: ∀h,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
 /3 width=6 by csx_fquq_conf/
 qed-.
index f5b17093014998fd5c0911584bd04b0268f6efca..ead714a3229ea919f5ffa4527b284bd9e2d95e30 100644 (file)
@@ -20,10 +20,10 @@ include "basic_2/rt_computation/csx_drops.ma".
 
 (* Main properties with generic computation properties **********************)
 
-theorem csx_gcp: ∀h,o. gcp (cpx h) (tdeq h o) (csx h o).
-#h #o @mk_gcp
+theorem csx_gcp: ∀h. gcp (cpx h) tdeq (csx h).
+#h @mk_gcp
 [ normalize /3 width=13 by cnx_lifts/
-| #G #L elim (deg_total h o 0) /3 width=8 by cnx_sort_iter, ex_intro/
+| /3 width=5 by O, cnx_sort, ex_intro/
 | /2 width=8 by csx_lifts/
 | /2 width=3 by csx_fwd_flat_dx/
 ]
index 03970d35b9b85bd3fe03c077015806f1de354605..b95725eeccb31d720c48df88883a478e29d66b7d 100644 (file)
@@ -20,8 +20,8 @@ include "basic_2/rt_computation/csx_csx_vector.ma".
 
 (* Main properties with generic candidates of reducibility ******************)
 
-theorem csx_gcr: ∀h,o. gcr (cpx h) (tdeq h o) (csx h o) (csx h o).
-#h #o @mk_gcr //
+theorem csx_gcr: ∀h. gcr (cpx h) tdeq (csx h) (csx h).
+#h @mk_gcr //
 [ /3 width=1 by csx_applv_cnx/
 |2,3,6: /2 width=1 by csx_applv_beta, csx_applv_sort, csx_applv_cast/
 | /2 width=7 by csx_applv_delta/
index 980c1f12d376f88cf450c7efa47228dd76cf651f..77cf480fab098688224d2e2544ffb2176052cc4c 100644 (file)
@@ -19,32 +19,32 @@ include "basic_2/rt_computation/csx_cpxs.ma".
 
 (* Properties with unbound parallel rt-transition on all entries ************)
 
-lemma csx_lpx_conf: ∀h,o,G,L1,T. ⦃G, L1⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄ →
-                    ∀L2. ⦃G, L1⦄ ⊢ ⬈[h] L2 → ⦃G, L2⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄.
-#h #o #G #L1 #T #H @(csx_ind_cpxs … H) -T
+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
 /4 width=3 by csx_intro, lpx_cpx_trans/
 qed-.
 
 (* Advanced properties ******************************************************)
 
-lemma csx_abst: ∀h,o,p,G,L,W. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃W⦄ →
-                ∀T. ⦃G, L.ⓛW⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄ → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓛ{p}W.T⦄.
-#h #o #p #G #L #W #HW
+lemma csx_abst: ∀h,p,G,L,W. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃W⦄ →
+                ∀T. ⦃G, L.ⓛW⦄ ⊢ ⬈*[h] 𝐒⦃T⦄ → ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃ⓛ{p}W.T⦄.
+#h #p #G #L #W #HW
 @(csx_ind … HW) -W #W #_ #IHW #T #HT
 @(csx_ind … HT) -T #T #HT #IHT
 @csx_intro #X #H1 #H2
 elim (cpx_inv_abst1 … H1) -H1 #W0 #T0 #HLW0 #HLT0 #H destruct
 elim (tdneq_inv_pair  … H2) -H2
 [ #H elim H -H //
-| -IHT #H lapply (csx_cpx_trans … o … HLT0) // -HT #HT0
+| -IHT #H lapply (csx_cpx_trans … HLT0) // -HT #HT0
   /4 width=5 by csx_lpx_conf, lpx_pair/
 | -IHW -HT /4 width=3 by csx_cpx_trans, cpx_pair_sn/
 ]
 qed.
 
-lemma csx_abbr: ∀h,o,p,G,L,V. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃V⦄ →
-                ∀T. ⦃G, L.ⓓV⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄ → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓓ{p}V.T⦄.
-#h #o #p #G #L #V #HV
+lemma csx_abbr: ∀h,p,G,L,V. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃V⦄ →
+                ∀T. ⦃G, L.ⓓV⦄ ⊢ ⬈*[h] 𝐒⦃T⦄ → ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃ⓓ{p}V.T⦄.
+#h #p #G #L #V #HV
 @(csx_ind … HV) -V #V #_ #IHV #T #HT
 @(csx_ind_cpxs … HT) -T #T #HT #IHT
 @csx_intro #X #H1 #H2
@@ -60,9 +60,9 @@ elim (cpx_inv_abbr1 … H1) -H1 *
 ]
 qed.
 
-fact csx_appl_theta_aux: ∀h,o,p,G,L,U. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃U⦄ → ∀V1,V2. ⬆*[1] V1 ≘ V2 →
-                         ∀V,T. U = ⓓ{p}V.ⓐV2.T → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓐV1.ⓓ{p}V.T⦄.
-#h #o #p #G #L #X #H
+fact csx_appl_theta_aux: ∀h,p,G,L,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 #p #G #L #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
@@ -72,13 +72,13 @@ elim (cpx_inv_appl1 … HL) -HL *
   elim (cpx_inv_abbr1 … HL) -HL *
   [ #V3 #T3 #HV3 #HLT3 #H0 destruct
     elim (cpx_lifts_sn … HLV10 (Ⓣ) … (L.ⓓV) … HV12) -HLV10 /3 width=1 by drops_refl, drops_drop/ #V4 #HV04 #HV24
-    elim (tdeq_dec h o (ⓓ{p}V.ⓐV2.T) (ⓓ{p}V3.ⓐV4.T3)) #H0
+    elim (tdeq_dec (ⓓ{p}V.ⓐV2.T) (ⓓ{p}V3.ⓐV4.T3)) #H0
     [ -IHVT -HV3 -HV24 -HLT3
       elim (tdeq_inv_pair … H0) -H0 #_ #HV3 #H0
       elim (tdeq_inv_pair … H0) -H0 #_ #HV24 #HT3
       elim (tdneq_inv_pair … H) -H #H elim H -H -G -L
       /3 width=6 by tdeq_inv_lifts_bi, tdeq_pair/
-    | -V1 @(IHVT … H0 … HV04) -o -V0 /4 width=1 by cpx_cpxs, cpx_flat, cpx_bind/
+    | -V1 @(IHVT … H0 … HV04) -V0 /4 width=1 by cpx_cpxs, cpx_flat, cpx_bind/
     ]
   | #T0 #HT0 #HLT0 #H0 destruct -H -IHVT
     lapply (csx_inv_lifts … HVT (Ⓣ) … L ???) -HVT
@@ -94,6 +94,6 @@ elim (cpx_inv_appl1 … HL) -HL *
 ]
 qed-.
 
-lemma csx_appl_theta: ∀h,o,p,G,L,V,V2,T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓓ{p}V.ⓐV2.T⦄ →
-                      ∀V1. ⬆*[1] V1 ≘ V2 → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓐV1.ⓓ{p}V.T⦄.
+lemma csx_appl_theta: ∀h,p,G,L,V,V2,T. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃ⓓ{p}V.ⓐV2.T⦄ →
+                      ∀V1. ⬆*[1] V1 ≘ V2 → ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃ⓐV1.ⓓ{p}V.T⦄.
 /2 width=5 by csx_appl_theta_aux/ qed.
index cc9ae833de3accff99b7adb5906833114a6d4da8..14f7a9d3a3fdf92513221d0780f20c9c2e1f1f80 100644 (file)
@@ -19,8 +19,8 @@ include "basic_2/rt_computation/lpxs_lpx.ma".
 
 (* Properties with unbound parallel rt-computation on all entries ***********)
 
-lemma csx_lpxs_conf: ∀h,o,G,L1,L2,T. ⦃G, L1⦄ ⊢ ⬈*[h] L2 →
-                     ⦃G, L1⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄ → ⦃G, L2⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄.
-#h #o #G #L1 #L2 #T #H @(lpxs_ind_dx … H) -L2
+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
 /3 by lpxs_step_dx, csx_lpx_conf/
 qed-.
index 169970ed12ca49d1f68b9353850544fdcd89a787..b969425727c0842eb4c1d6f8fa4fb63e5e0134bb 100644 (file)
@@ -19,9 +19,9 @@ include "basic_2/rt_computation/csx_csx.ma".
 
 (* Advanced properties ******************************************************)
 
-fact csx_appl_beta_aux: ∀h,o,p,G,L,U1. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃U1⦄ →
-                        ∀V,W,T1. U1 = ⓓ{p}ⓝW.V.T1 → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓐV.ⓛ{p}W.T1⦄.
-#h #o #p #G #L #X #H @(csx_ind … H) -X
+fact csx_appl_beta_aux: ∀h,p,G,L,U1. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃U1⦄ →
+                        ∀V,W,T1. U1 = ⓓ{p}ⓝW.V.T1 → ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃ⓐV.ⓛ{p}W.T1⦄.
+#h #p #G #L #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 *
@@ -42,23 +42,23 @@ elim (cpx_inv_appl1 … H1) -H1 *
 qed-.
 
 (* Basic_1: was just: sn3_beta *)
-lemma csx_appl_beta: ∀h,o,p,G,L,V,W,T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓓ{p}ⓝW.V.T⦄ → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓐV.ⓛ{p}W.T⦄.
+lemma csx_appl_beta: ∀h,p,G,L,V,W,T. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃ⓓ{p}ⓝW.V.T⦄ → ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃ⓐV.ⓛ{p}W.T⦄.
 /2 width=3 by csx_appl_beta_aux/ qed.
 
 (* Advanced forward lemmas **************************************************)
 
-fact csx_fwd_bind_dx_unit_aux: ∀h,o,G,L,U. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃U⦄ →
-                               ∀p,I,J,V,T. U = ⓑ{p,I}V.T → ⦃G, L.ⓤ{J}⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄.
-#h #o #G #L #U #H elim H -H #U0 #_ #IH #p #I #J #V #T #H destruct
+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
 @csx_intro #T2 #HLT2 #HT2
 @(IH (ⓑ{p,I}V.T2)) -IH /2 width=4 by cpx_bind_unit/ -HLT2
 #H elim (tdeq_inv_pair … H) -H /2 width=1 by/
 qed-.
 
-lemma csx_fwd_bind_dx_unit: ∀h,o,p,I,G,L,V,T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓑ{p,I}V.T⦄ →
-                            ∀J. ⦃G, L.ⓤ{J}⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄.
+lemma csx_fwd_bind_dx_unit: ∀h,p,I,G,L,V,T. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃ⓑ{p,I}V.T⦄ →
+                            ∀J. ⦃G, L.ⓤ{J}⦄ ⊢ ⬈*[h] 𝐒⦃T⦄.
 /2 width=6 by csx_fwd_bind_dx_unit_aux/ qed-.
 
-lemma csx_fwd_bind_unit: ∀h,o,p,I,G,L,V,T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓑ{p,I}V.T⦄ →
-                         ∀J. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃V⦄ ∧ ⦃G, L.ⓤ{J}⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄.
+lemma csx_fwd_bind_unit: ∀h,p,I,G,L,V,T. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃ⓑ{p,I}V.T⦄ →
+                         ∀J. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃V⦄ ∧ ⦃G, L.ⓤ{J}⦄ ⊢ ⬈*[h] 𝐒⦃T⦄.
 /3 width=4 by csx_fwd_pair_sn, csx_fwd_bind_dx_unit, conj/ qed-.
index de6114d2f75b64577c3ec71d8a402c96bcafdc92..a254d9751d0852495d289b5f9af3aa412b333bce 100644 (file)
@@ -17,19 +17,19 @@ include "basic_2/rt_computation/csx_csx.ma".
 
 (* STRONGLY NORMALIZING TERMS FOR UNBOUND PARALLEL RT-TRANSITION ************)
 
-(* Properties with degree-based equivalence for local environments **********)
+(* Properties with sort-irrelevant equivalence for local environments *******)
 
 (* Basic_2A1: uses: csx_lleq_conf *)
-lemma csx_rdeq_conf: ∀h,o,G,L1,T. ⦃G, L1⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄ →
-                     ∀L2. L1 ≛[h, o, T] L2 → ⦃G, L2⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄.
-#h #o #G #L1 #T #H
+lemma csx_rdeq_conf: ∀h,G,L1,T. ⦃G, L1⦄ ⊢ ⬈*[h] 𝐒⦃T⦄ →
+                     ∀L2. L1 ≛[T] L2 → ⦃G, L2⦄ ⊢ ⬈*[h] 𝐒⦃T⦄.
+#h #G #L1 #T #H
 @(csx_ind … H) -T #T1 #_ #IH #L2 #HL12
 @csx_intro #T2 #HT12 #HnT12
 elim (rdeq_cpx_trans … HL12 … HT12) -HT12
-/5 width=4 by cpx_rdeq_conf_sn, csx_tdeq_trans, tdeq_trans/
+/5 width=5 by cpx_rdeq_conf_sn, csx_tdeq_trans, tdeq_trans/
 qed-.
 
 (* Basic_2A1: uses: csx_lleq_conf *)
-lemma csx_rdeq_trans: ∀h,o,L1,L2,T. L1 ≛[h, o, T] L2 →
-                      ∀G. ⦃G, L2⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄ → ⦃G, L1⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄.
+lemma csx_rdeq_trans: ∀h,L1,L2,T. L1 ≛[T] L2 →
+                      ∀G. ⦃G, L2⦄ ⊢ ⬈*[h] 𝐒⦃T⦄ → ⦃G, L1⦄ ⊢ ⬈*[h] 𝐒⦃T⦄.
 /3 width=3 by csx_rdeq_conf, rdeq_sym/ qed-.
index efa69cff7a0af3861ea6579fd6166c15da866fcd..95cb186f5f096b0ee9d804e72a07370d177c69c0 100644 (file)
@@ -19,10 +19,10 @@ include "basic_2/rt_computation/csx_csx.ma".
 
 (* Properties with simple terms *********************************************)
 
-lemma csx_appl_simple: ∀h,o,G,L,V. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃V⦄ → ∀T1.
-                       (∀T2. ⦃G, L⦄ ⊢ T1 ⬈[h] T2 → (T1 ≛[h, o] T2 → ⊥) → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓐV.T2⦄) →
-                       𝐒⦃T1⦄ → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓐV.T1⦄.
-#h #o #G #L #V #H @(csx_ind … H) -V
+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
 #V #_ #IHV #T1 #IHT1 #HT1
 @csx_intro #X #H1 #H2
 elim (cpx_inv_appl1_simple … H1) // -H1
index cc286ae6a60a933c211e06a90b7021a7feec74a6..478f6fa0584c54a370b2493e6252707b0707a8d1 100644 (file)
@@ -24,10 +24,10 @@ include "basic_2/rt_computation/csx_csx.ma".
 
 (* Basic_1: was just: sn3_appl_appl *)
 (* Basic_2A1: was: csx_appl_simple_tsts *)
-lemma csx_appl_simple_theq: ∀h,o,G,L,V. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃V⦄ → ∀T1. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ →
-                            (∀T2. ⦃G, L⦄ ⊢ T1 ⬈*[h] T2 → (T1 ⩳[h, o] T2 → ⊥) → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓐV.T2⦄) →
-                            𝐒⦃T1⦄ → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⓐV.T1⦄.
-#h #o #G #L #V #H @(csx_ind … H) -V
+lemma csx_appl_simple_theq: ∀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
 #V #_ #IHV #T1 #H @(csx_ind … H) -T1
 #T1 #H1T1 #IHT1 #H2T1 #H3T1
 @csx_intro #X #HL #H
@@ -40,7 +40,7 @@ elim (tdneq_inv_pair … H) -H
   @IHV -IHV /4 width=3 by csx_cpx_trans, cpx_pair_sn/
 | -IHV -H1T1 #H1T10
   @(csx_cpx_trans … (ⓐV.T0)) /2 width=1 by cpx_flat/ -HLV0
-  elim (theq_dec h o T1 T0) #H2T10
+  elim (theq_dec T1 T0) #H2T10
   [ @IHT1 -IHT1 /4 width=5 by cpxs_strap2, cpxs_strap1, theq_canc_sn, simple_theq_repl_dx/
   | -IHT1 -H3T1 -H1T10 /3 width=1 by cpx_cpxs/
   ]
index 32afe79a4a87cf73d6d69943f70b3261fd8d655e..0e11278b98b4feb159696746e9faf44bf61c6416 100644 (file)
@@ -17,24 +17,24 @@ include "basic_2/rt_computation/csx.ma".
 
 (* STRONGLY NORMALIZING TERMS VECTORS FOR UNBOUND PARALLEL RT-TRANSITION ****)
 
-definition csxv: ∀h. sd h → relation3 genv lenv (list term) ≝
-                 λh,o,G,L. all … (csx h o G L).
+definition csxv: ∀h. relation3 genv lenv (list term) ≝
+                 λh,G,L. all … (csx h G L).
 
 interpretation
    "strong normalization for unbound context-sensitive parallel rt-transition (term vector)"
-   'PRedTyStrong h o G L Ts = (csxv h o G L Ts).
+   'PRedTyStrong h G L Ts = (csxv h G L Ts).
 
 (* Basic inversion lemmas ***************************************************)
 
-lemma csxv_inv_cons: ∀h,o,G,L,T,Ts. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T⨮Ts⦄ →
-                     ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄ ∧ ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃Ts⦄.
+lemma csxv_inv_cons: ∀h,G,L,T,Ts. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃T⨮Ts⦄ →
+                     ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃T⦄ ∧ ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃Ts⦄.
 normalize // qed-.
 
 (* Basic forward lemmas *****************************************************)
 
-lemma csx_fwd_applv: ∀h,o,G,L,T,Vs. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃ⒶVs.T⦄ →
-                     ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃Vs⦄ ∧ ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄.
-#h #o #G #L #T #Vs elim Vs -Vs /2 width=1 by conj/
+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/
 #V #Vs #IHVs #HVs
 lapply (csx_fwd_pair_sn … HVs) #HV
 lapply (csx_fwd_flat_dx … HVs) -HVs #HVs
index bda560f425b152f8674c39ce778c325599d94cf6..1ce29c009e4859aae2dbc6fc90045f0975c0782f 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/predsubtystarproper_8.ma".
+include "basic_2/notation/relations/predsubtystarproper_7.ma".
 include "basic_2/rt_transition/fpb.ma".
 include "basic_2/rt_computation/fpbs.ma".
 
 (* PROPER PARALLEL RST-COMPUTATION FOR CLOSURES *****************************)
 
-definition fpbg: ∀h. sd h → tri_relation genv lenv term ≝
-                 λh,o,G1,L1,T1,G2,L2,T2.
-                 ∃∃G,L,T. ⦃G1, L1, T1⦄ ≻[h, o] ⦃G, L, T⦄ & ⦃G, L, T⦄ ≥[h, o] ⦃G2, L2, T2⦄.
+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⦄.
 
 interpretation "proper parallel rst-computation (closure)"
-   'PRedSubTyStarProper h o G1 L1 T1 G2 L2 T2 = (fpbg h o G1 L1 T1 G2 L2 T2).
+   'PRedSubTyStarProper h G1 L1 T1 G2 L2 T2 = (fpbg h G1 L1 T1 G2 L2 T2).
 
 (* Basic properties *********************************************************)
 
-lemma fpb_fpbg: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≻[h, o] ⦃G2, L2, T2⦄ →
-                ⦃G1, L1, T1⦄ >[h, o] ⦃G2, L2, T2⦄.
+lemma fpb_fpbg: ∀h,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≻[h] ⦃G2, L2, T2⦄ →
+                ⦃G1, L1, T1⦄ >[h] ⦃G2, L2, T2⦄.
 /2 width=5 by ex2_3_intro/ qed.
 
-lemma fpbg_fpbq_trans: ∀h,o,G1,G,G2,L1,L,L2,T1,T,T2.
-                       ⦃G1, L1, T1⦄ >[h, o] ⦃G, L, T⦄ → ⦃G, L, T⦄ ≽[h, o] ⦃G2, L2, T2⦄ →
-                       ⦃G1, L1, T1⦄ >[h, o] ⦃G2, L2, T2⦄.
-#h #o #G1 #G #G2 #L1 #L #L2 #T1 #T #T2 *
+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 *
 /3 width=9 by fpbs_strap1, ex2_3_intro/
 qed-.
 
 (* Note: this is used in the closure proof *)
-lemma fpbg_fpbs_trans: ∀h,o,G,G2,L,L2,T,T2. ⦃G, L, T⦄ ≥[h, o] ⦃G2, L2, T2⦄ →
-                       ∀G1,L1,T1. ⦃G1, L1, T1⦄ >[h, o] ⦃G, L, T⦄ → ⦃G1, L1, T1⦄ >[h, o] ⦃G2, L2, T2⦄.
-#h #o #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: ∀h,G,G2,L,L2,T,T2. ⦃G, L, T⦄ ≥[h] ⦃G2, L2, T2⦄ →
+                       ∀G1,L1,T1. ⦃G1, L1, T1⦄ >[h] ⦃G, L, T⦄ → ⦃G1, L1, T1⦄ >[h] ⦃G2, L2, T2⦄.
+#h #G #G2 #L #L2 #T #T2 #H @(fpbs_ind_dx … H) -G -L -T /3 width=5 by fpbg_fpbq_trans/
 qed-.
 
 (* Basic_2A1: uses: fpbg_fleq_trans *)
-lemma fpbg_fdeq_trans: ∀h,o,G1,G,L1,L,T1,T. ⦃G1, L1, T1⦄ >[h, o] ⦃G, L, T⦄ →
-                       ∀G2,L2,T2. ⦃G, L, T⦄ ≛[h, o] ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ >[h, o] ⦃G2, L2, T2⦄.
+lemma fpbg_fdeq_trans: ∀h,G1,G,L1,L,T1,T. ⦃G1, L1, T1⦄ >[h] ⦃G, L, T⦄ →
+                       ∀G2,L2,T2. ⦃G, L, T⦄ ≛ ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ >[h] ⦃G2, L2, T2⦄.
 /3 width=5 by fpbg_fpbq_trans, fpbq_fdeq/ qed-.
 
 (* Properties with t-bound rt-transition for terms **************************)
 
-lemma cpm_tdneq_cpm_fpbg (h) (o) (G) (L):
-                         ∀n1,T1,T. ⦃G, L⦄ ⊢ T1 ➡[n1,h] T → (T1 ≛[h,o] T → ⊥) →
-                         ∀n2,T2. ⦃G, L⦄ ⊢ T ➡[n2,h] T2 →
-                         ⦃G, L, T1⦄ >[h,o] ⦃G, L, T2⦄.
+lemma cpm_tdneq_cpm_fpbg (h) (G) (L):
+                         ∀n1,T1,T. ⦃G, L⦄ ⊢ T1 ➡[n1,h] T → (T1 ≛ T → ⊥) →
+                         ∀n2,T2. ⦃G, L⦄ ⊢ T ➡[n2,h] T2 → ⦃G, L, T1⦄ >[h] ⦃G, L, T2⦄.
 /4 width=5 by fpbq_fpbs, cpm_fpbq, cpm_fpb, ex2_3_intro/ qed. 
index e70619a8d9742df72fc7cec6c60a23711bfbc3dc..d5d24893fef0558b1dd4d8e9f15c43a68a4cc2fd 100644 (file)
@@ -21,13 +21,13 @@ include "basic_2/rt_computation/fpbg_fpbs.ma".
 (* Properties with unbound context-sensitive parallel rt-computation ********)
 
 (* Basic_2A1: was: cpxs_fpbg *)
-lemma cpxs_tdneq_fpbg (h) (o): ∀G,L,T1,T2. ⦃G, L⦄ ⊢ T1 ⬈*[h] T2 →
-                               (T1 ≛[h, o] T2 → ⊥) → ⦃G, L, T1⦄ >[h, o] ⦃G, L, T2⦄.
-#h #o #G #L #T1 #T2 #H #H0
+lemma cpxs_tdneq_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
 elim (cpxs_tdneq_fwd_step_sn … H … H0) -H -H0
 /4 width=5 by cpxs_tdeq_fpbs, fpb_cpx, ex2_3_intro/
 qed.
 
-lemma cpxs_fpbg_trans (h) (o): ∀G1,L1,T1,T. ⦃G1, L1⦄ ⊢ T1 ⬈*[h] T →
-                               ∀G2,L2,T2. ⦃G1, L1, T⦄ >[h, o] ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ >[h, o] ⦃G2, L2, T2⦄.
+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⦄.
 /3 width=5 by fpbs_fpbg_trans, cpxs_fpbs/ qed-.
index 636f2095505846d15fe22617e62391e1519f4b33..6d511b7f4bc09bbf2238f73051d10de4db7ed35b 100644 (file)
@@ -18,5 +18,5 @@ include "basic_2/rt_computation/fpbg_fpbs.ma".
 
 (* Main properties **********************************************************)
 
-theorem fpbg_trans: ∀h,o. tri_transitive … (fpbg h o).
+theorem fpbg_trans: ∀h. tri_transitive … (fpbg h).
 /3 width=5 by fpbg_fpbs_trans, fpbg_fwd_fpbs/ qed-.
index d7a1ccae06e091ef9a0396aa2af7c639a53cdae3..57f4a81afb9a52a32487bdf0a17c9861f86ba960 100644 (file)
@@ -21,60 +21,60 @@ include "basic_2/rt_computation/fpbg.ma".
 
 (* Advanced forward lemmas **************************************************)
 
-lemma fpbg_fwd_fpbs: ∀h,o,G1,G2,L1,L2,T1,T2.
-                     ⦃G1, L1, T1⦄ >[h,o] ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
-#h #o #G1 #G2 #L1 #L2 #T1 #T2 *
+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 *
 /3 width=5 by fpbs_strap2, fpb_fpbq/
 qed-.
 
-(* Advanced properties with degree-based equivalence on closures ************)
+(* Advanced properties with sort-irrelevant equivalence on closures *********)
 
 (* Basic_2A1: uses: fleq_fpbg_trans *)
-lemma fdeq_fpbg_trans: ∀h,o,G,G2,L,L2,T,T2. ⦃G, L, T⦄ >[h, o] ⦃G2, L2, T2⦄ →
-                       ∀G1,L1,T1. ⦃G1, L1, T1⦄ ≛[h, o] ⦃G, L, T⦄ → ⦃G1, L1, T1⦄ >[h, o] ⦃G2, L2, T2⦄.
-#h #o #G #G2 #L #L2 #T #T2 * #G0 #L0 #T0 #H0 #H02 #G1 #L1 #T1 #H1
+lemma fdeq_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
 elim (fdeq_fpb_trans …  H1 … H0) -G -L -T
 /4 width=9 by fpbs_strap2, fpbq_fdeq, ex2_3_intro/
 qed-.
 
 (* Properties with parallel proper rst-reduction on closures ****************)
 
-lemma fpb_fpbg_trans: ∀h,o,G1,G,G2,L1,L,L2,T1,T,T2.
-                      ⦃G1, L1, T1⦄ ≻[h, o] ⦃G, L, T⦄ → ⦃G, L, T⦄ >[h, o] ⦃G2, L2, T2⦄ →
-                      ⦃G1, L1, T1⦄ >[h, o] ⦃G2, L2, T2⦄.
+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⦄.
 /3 width=5 by fpbg_fwd_fpbs, ex2_3_intro/ qed-.
 
 (* Properties with parallel rst-reduction on closures ***********************)
 
-lemma fpbq_fpbg_trans: ∀h,o,G1,G,G2,L1,L,L2,T1,T,T2.
-                       ⦃G1, L1, T1⦄ ≽[h, o] ⦃G, L, T⦄ → ⦃G, L, T⦄ >[h, o] ⦃G2, L2, T2⦄ →
-                       ⦃G1, L1, T1⦄ >[h, o] ⦃G2, L2, T2⦄.
-#h #o #G1 #G #G2 #L1 #L #L2 #T1 #T #T2 #H1 #H2
+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
 elim (fpbq_inv_fpb … H1) -H1
 /2 width=5 by fdeq_fpbg_trans, fpb_fpbg_trans/
 qed-.
 
 (* Properties with parallel rst-compuutation on closures ********************)
 
-lemma fpbs_fpbg_trans: ∀h,o,G1,G,L1,L,T1,T. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G, L, T⦄ →
-                       ∀G2,L2,T2. ⦃G, L, T⦄ >[h, o] ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ >[h, o] ⦃G2, L2, T2⦄.
-#h #o #G1 #G #L1 #L #T1 #T #H @(fpbs_ind … H) -G -L -T /3 width=5 by fpbq_fpbg_trans/
+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/
 qed-.
 
 (* Advanced properties with plus-iterated structural successor for closures *)
 
-lemma fqup_fpbg_trans (h) (o):
+lemma fqup_fpbg_trans (h):
       ∀G1,G,L1,L,T1,T. ⦃G1,L1,T1⦄ ⊐+ ⦃G,L,T⦄ →
-      ∀G2,L2,T2. ⦃G,L,T⦄ >[h,o] ⦃G2,L2,T2⦄ → ⦃G1,L1,T1⦄ >[h,o] ⦃G2,L2,T2⦄.
+      ∀G2,L2,T2. ⦃G,L,T⦄ >[h] ⦃G2,L2,T2⦄ → ⦃G1,L1,T1⦄ >[h] ⦃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,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄ →
-                     ∨∨ ⦃G1, L1, T1⦄ ≛[h, o] ⦃G2, L2, T2⦄
-                      | ⦃G1, L1, T1⦄ >[h, o] ⦃G2, L2, T2⦄.
-#h #o #G1 #G2 #L1 #L2 #T1 #T2 #H @(fpbs_ind … H) -G2 -L2 -T2
+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
 [ /2 width=1 by or_introl/
 | #G #G2 #L #L2 #T #T2 #_ #H2 * #H1
   elim (fpbq_inv_fpb … H2) -H2 #H2
@@ -89,10 +89,10 @@ qed-.
 
 (* Advanced properties of parallel rst-computation on closures **************)
 
-lemma fpbs_fpb_trans: ∀h,o,F1,F2,K1,K2,T1,T2. ⦃F1, K1, T1⦄ ≥[h, o] ⦃F2, K2, T2⦄ →
-                      ∀G2,L2,U2. ⦃F2, K2, T2⦄ ≻[h, o] ⦃G2, L2, U2⦄ →
-                      ∃∃G1,L1,U1. ⦃F1, K1, T1⦄ ≻[h, o] ⦃G1, L1, U1⦄ & ⦃G1, L1, U1⦄ ≥[h, o] ⦃G2, L2, U2⦄.
-#h #o #F1 #F2 #K1 #K2 #T1 #T2 #H elim (fpbs_inv_fpbg … H) -H
+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
 [ #H12 #G2 #L2 #U2 #H2 elim (fdeq_fpb_trans … H12 … H2) -F2 -K2 -T2
   /3 width=5 by fdeq_fpbs, ex2_3_intro/
 | * #H1 #H2 #H3 #H4 #H5 #H6 #H7 #H8 #H9
index ce02c890aa3a096ad3b30a74ce42bb50d3ad4ff8..c72dcc82175911cc821c0ed1f279e3562c3b0b30 100644 (file)
@@ -17,16 +17,16 @@ include "basic_2/rt_computation/fpbg.ma".
 
 (* PROPER PARALLEL RST-COMPUTATION FOR CLOSURES *****************************)
 
-(* Advanced properties with degree-based equivalence for terms **************)
+(* Advanced properties with sort-irrelevant equivalence for terms ***********)
 
-lemma fpbg_tdeq_div: ∀h,o,G1,G2,L1,L2,T1,T. ⦃G1, L1, T1⦄ >[h, o] ⦃G2, L2, T⦄ →
-                     ∀T2. T2 ≛[h, o] T → ⦃G1, L1, T1⦄ >[h, o] ⦃G2, L2, T2⦄.
+lemma fpbg_tdeq_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⦄.
 /4 width=5 by fpbg_fdeq_trans, tdeq_fdeq, tdeq_sym/ qed-.
 
 (* Properties with plus-iterated structural successor for closures **********)
 
 (* Note: this is used in the closure proof *)
-lemma fqup_fpbg: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐+ ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ >[h, o] ⦃G2, L2, T2⦄.
-#h #o #G1 #G2 #L1 #L2 #T1 #T2 #H elim (fqup_inv_step_sn … H) -H
+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
 /3 width=5 by fqus_fpbs, fpb_fqu, ex2_3_intro/
 qed.
index 71dcdc50aa5701cb2ef7ed0b01327e1ac687df53..4abcd30de8a80c9397a4ce8bef1288b319ce320a 100644 (file)
@@ -20,9 +20,9 @@ include "basic_2/rt_computation/fpbg.ma".
 (* Properties with unbound rt-computation on full local environments ********)
 
 (* Basic_2A1: uses: lpxs_fpbg *)
-lemma lpxs_rdneq_fpbg: ∀h,o,G,L1,L2,T. ⦃G, L1⦄ ⊢ ⬈*[h] L2 →
-                       (L1 ≛[h, o, T] L2 → ⊥) → ⦃G, L1, T⦄ >[h, o] ⦃G, L2, T⦄.
-#h #o #G #L1 #L2 #T #H #H0
+lemma lpxs_rdneq_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
 elim (lpxs_rdneq_inv_step_sn … H … H0) -H -H0
 /4 width=7 by fpb_lpx, lpxs_fdeq_fpbs, fdeq_intro_sn, ex2_3_intro/
 qed.
index f5c9176b0ba3acbf9b12455e4c3fb152aa393021..ab299482339967424a61655e70da74a9917089c5 100644 (file)
 (**************************************************************************)
 
 include "ground_2/lib/star.ma".
-include "basic_2/notation/relations/predsubtystar_8.ma".
+include "basic_2/notation/relations/predsubtystar_7.ma".
 include "basic_2/rt_transition/fpbq.ma".
 
 (* PARALLEL RST-COMPUTATION FOR CLOSURES ************************************)
 
-definition fpbs: ∀h. sd h → tri_relation genv lenv term ≝
-                 λh,o. tri_TC … (fpbq h o).
+definition fpbs: ∀h. tri_relation genv lenv term ≝
+                 λh. tri_TC … (fpbq h).
 
 interpretation "parallel rst-computation (closure)"
-   'PRedSubTyStar  h o G1 L1 T1 G2 L2 T2 = (fpbs h o G1 L1 T1 G2 L2 T2).
+   'PRedSubTyStar  h G1 L1 T1 G2 L2 T2 = (fpbs h G1 L1 T1 G2 L2 T2).
 
 (* Basic eliminators ********************************************************)
 
-lemma fpbs_ind: ∀h,o,G1,L1,T1. ∀Q:relation3 genv lenv term. Q G1 L1 T1 →
-                (∀G,G2,L,L2,T,T2. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G, L, T⦄ → ⦃G, L, T⦄ ≽[h, o] ⦃G2, L2, T2⦄ → Q G L T → Q G2 L2 T2) →
-                ∀G2,L2,T2. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄ → Q G2 L2 T2.
+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.
 /3 width=8 by tri_TC_star_ind/ qed-.
 
-lemma fpbs_ind_dx: ∀h,o,G2,L2,T2. ∀Q:relation3 genv lenv term. Q G2 L2 T2 →
-                   (∀G1,G,L1,L,T1,T. ⦃G1, L1, T1⦄ ≽[h, o] ⦃G, L, T⦄ → ⦃G, L, T⦄ ≥[h, o] ⦃G2, L2, T2⦄ → Q G L T → Q G1 L1 T1) →
-                   ∀G1,L1,T1. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄ → Q G1 L1 T1.
+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.
 /3 width=8 by tri_TC_star_ind_dx/ qed-.
 
 (* Basic properties *********************************************************)
 
-lemma fpbs_refl: ∀h,o. tri_reflexive … (fpbs h o).
+lemma fpbs_refl: ∀h. tri_reflexive … (fpbs h).
 /2 width=1 by tri_inj/ qed.
 
-lemma fpbq_fpbs: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≽[h, o] ⦃G2, L2, T2⦄ →
-                 ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
+lemma fpbq_fpbs: ∀h,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≽[h] ⦃G2, L2, T2⦄ →
+                 ⦃G1, L1, T1⦄ ≥[h] ⦃G2, L2, T2⦄.
 /2 width=1 by tri_inj/ qed.
 
-lemma fpbs_strap1: ∀h,o,G1,G,G2,L1,L,L2,T1,T,T2. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G, L, T⦄ →
-                   ⦃G, L, T⦄ ≽[h, o] ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
+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⦄.
 /2 width=5 by tri_step/ qed-.
 
-lemma fpbs_strap2: ∀h,o,G1,G,G2,L1,L,L2,T1,T,T2. ⦃G1, L1, T1⦄ ≽[h, o] ⦃G, L, T⦄ →
-                   ⦃G, L, T⦄ ≥[h, o] ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
+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⦄.
 /2 width=5 by tri_TC_strap/ qed-.
 
 (* Basic_2A1: uses: lleq_fpbs fleq_fpbs *)
-lemma fdeq_fpbs: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≛[h, o] ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
+lemma fdeq_fpbs: ∀h,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≛ ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ ≥[h] ⦃G2, L2, T2⦄.
 /3 width=1 by fpbq_fpbs, fpbq_fdeq/ qed.
 
 (* Basic_2A1: uses: fpbs_lleq_trans *)
-lemma fpbs_fdeq_trans: ∀h,o,G1,G,L1,L,T1,T. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G, L, T⦄ →
-                       ∀G2,L2,T2. ⦃G, L, T⦄ ≛[h, o] ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
+lemma fpbs_fdeq_trans: ∀h,G1,G,L1,L,T1,T. ⦃G1, L1, T1⦄ ≥[h] ⦃G, L, T⦄ →
+                       ∀G2,L2,T2. ⦃G, L, T⦄ ≛ ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ ≥[h] ⦃G2, L2, T2⦄.
 /3 width=9 by fpbs_strap1, fpbq_fdeq/ qed-.
 
 (* Basic_2A1: uses: lleq_fpbs_trans *)
-lemma fdeq_fpbs_trans: ∀h,o,G,G2,L,L2,T,T2. ⦃G, L, T⦄ ≥[h, o] ⦃G2, L2, T2⦄ →
-                       ∀G1,L1,T1. ⦃G1, L1, T1⦄ ≛[h, o] ⦃G, L, T⦄ → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
+lemma fdeq_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⦄.
 /3 width=5 by fpbs_strap2, fpbq_fdeq/ qed-.
 
-lemma tdeq_rdeq_lpx_fpbs: ∀h,o,T1,T2. T1 ≛[h, o] T2 → ∀L1,L0. L1 ≛[h, o, T2] L0 →
-                          ∀G,L2. ⦃G, L0⦄ ⊢ ⬈[h] L2 → ⦃G, L1, T1⦄ ≥[h, o] ⦃G, L2, T2⦄.
+lemma tdeq_rdeq_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⦄.
 /4 width=5 by fdeq_fpbs, fpbs_strap1, fpbq_lpx, fdeq_intro_dx/ qed.
 
 (* Basic_2A1: removed theorems 3:
index 601758e03de828ac2ceabfbadcff225ff9d5bca2..0ecacf3e47c6247c840ede0d83e4749c9fb28499 100644 (file)
@@ -19,9 +19,9 @@ include "basic_2/rt_computation/fpbs.ma".
 
 (* Properties with atomic arity assignment for terms ************************)
 
-lemma fpbs_aaa_conf: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄ →
+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 #o #G1 #G2 #L1 #L2 #T1 #T2 #H @(fpbs_ind … H) -G2 -L2 -T2 /2 width=2 by ex_intro/
+#h #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 c3cdaf038300adf182435d7c6f27a4c9ad6ba15e..b716e5d43995a75afc005896bc5623397f4e1dd9 100644 (file)
@@ -21,18 +21,18 @@ include "basic_2/rt_computation/fpbs_lpxs.ma".
 (* Properties with unbound context-sensitive parallel rt-transition *********)
 
 (* Basic_2A1: uses: fpbs_cpx_trans_neq *)
-lemma fpbs_cpx_tdneq_trans: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄ →
-                            ∀U2. ⦃G2, L2⦄ ⊢ T2 ⬈[h] U2 → (T2 ≛[h, o] U2 → ⊥) →
-                            ∃∃U1. ⦃G1, L1⦄ ⊢ T1 ⬈[h] U1 & T1 ≛[h, o] U1 → ⊥ & ⦃G1, L1, U1⦄ ≥[h, o] ⦃G2, L2, U2⦄.
-#h #o #G1 #G2 #L1 #L2 #T1 #T2 #H #U2 #HTU2 #HnTU2
+lemma fpbs_cpx_tdneq_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
 elim (fpbs_inv_star … H) -H #G0 #L0 #L3 #T0 #T3 #HT10 #H10 #HL03 #H32
 elim (fdeq_cpx_trans … H32 … HTU2) -HTU2 #T4 #HT34 #H42
 lapply (fdeq_tdneq_repl_dx … H32 … H42 … HnTU2) -T2 #HnT34
 lapply (lpxs_cpx_trans … HT34 … HL03) -HT34 #HT34
 elim (fqus_cpxs_trans_tdneq … H10 … HT34 HnT34) -T3 #T2 #HT02 #HnT02 #H24
-elim (tdeq_dec h o T1 T0) [ #H10 | -HnT02 #HnT10 ]
+elim (tdeq_dec T1 T0) [ #H10 | -HnT02 #HnT10 ]
 [ lapply (cpxs_trans … HT10 … HT02) -HT10 -HT02 #HT12
-  elim (cpxs_tdneq_fwd_step_sn … o … HT12) [2: /3 width=3 by tdeq_canc_sn/ ] -T0 -HT12
+  elim (cpxs_tdneq_fwd_step_sn … HT12) [2: /3 width=3 by tdeq_canc_sn/ ] -T0 -HT12
 | elim (cpxs_tdneq_fwd_step_sn … HT10 … HnT10) -HT10 -HnT10
 ]
 /4 width=16 by fpbs_intro_star, cpxs_tdeq_fpbs_trans, ex3_intro/
index 4f23c0d0095759e30b7fe22eebf212f8bc76d6d8..09a7919b1901bdd33371e42070f1549a9af3c960 100644 (file)
@@ -19,40 +19,40 @@ include "basic_2/rt_computation/fpbs_fqup.ma".
 
 (* Properties with unbound context-sensitive parallel rt-computation ********)
 
-lemma cpxs_fpbs: ∀h,o,G,L,T1,T2. ⦃G, L⦄ ⊢ T1 ⬈*[h] T2 → ⦃G, L, T1⦄ ≥[h, o] ⦃G, L, T2⦄.
-#h #o #G #L #T1 #T2 #H @(cpxs_ind … H) -T2
+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
 /3 width=5 by fpbq_cpx, fpbs_strap1/
 qed.
 
-lemma fpbs_cpxs_trans: ∀h,o,G1,G,L1,L,T1,T. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G, L, T⦄ →
-                       ∀T2. ⦃G, L⦄ ⊢ T ⬈*[h] T2 → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G, L, T2⦄.
-#h #o #G1 #G #L1 #L #T1 #T #H1 #T2 #H @(cpxs_ind … H) -T2
+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
 /3 width=5 by fpbs_strap1, fpbq_cpx/
 qed-.
 
-lemma cpxs_fpbs_trans: ∀h,o,G1,G2,L1,L2,T,T2. ⦃G1, L1, T⦄ ≥[h, o] ⦃G2, L2, T2⦄ →
-                       ∀T1. ⦃G1, L1⦄ ⊢ T1 ⬈*[h] T → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
-#h #o #G1 #G2 #L1 #L2 #T #T2 #H1 #T1 #H @(cpxs_ind_dx … H) -T1
+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
 /3 width=5 by fpbs_strap2, fpbq_cpx/
 qed-.
 
-lemma cpxs_tdeq_fpbs_trans: ∀h,o,G1,L1,T1,T. ⦃G1, L1⦄ ⊢ T1 ⬈*[h] T →
-                            ∀T0. T ≛[h, o] T0 →
-                            ∀G2,L2,T2. ⦃G1, L1, T0⦄ ≥[h, o] ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
+lemma cpxs_tdeq_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⦄.
 /3 width=3 by cpxs_fpbs_trans, tdeq_fpbs_trans/ qed-.
 
-lemma cpxs_tdeq_fpbs: ∀h,o,G,L,T1,T. ⦃G, L⦄ ⊢ T1 ⬈*[h] T →
-                      ∀T2. T ≛[h, o] T2 → ⦃G, L, T1⦄ ≥[h, o] ⦃G, L, T2⦄.
+lemma cpxs_tdeq_fpbs: ∀h,G,L,T1,T. ⦃G, L⦄ ⊢ T1 ⬈*[h] T →
+                      ∀T2. T ≛ T2 → ⦃G, L, T1⦄ ≥[h] ⦃G, L, T2⦄.
 /4 width=3 by cpxs_fpbs_trans, fdeq_fpbs, tdeq_fdeq/ qed.
 
 (* Properties with star-iterated structural successor for closures **********)
 
-lemma cpxs_fqus_fpbs: ∀h,o,G1,L1,T1,T. ⦃G1, L1⦄ ⊢ T1 ⬈*[h] T →
-                      ∀G2,L2,T2. ⦃G1, L1, T⦄ ⊐* ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
+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⦄.
 /3 width=5 by fpbs_fqus_trans, cpxs_fpbs/ qed.
 
 (* Properties with plus-iterated structural successor for closures **********)
 
-lemma cpxs_fqup_fpbs: ∀h,o,G1,L1,T1,T. ⦃G1, L1⦄ ⊢ T1 ⬈*[h] T →
-                      ∀G2,L2,T2. ⦃G1, L1, T⦄ ⊐+ ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
+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⦄.
 /3 width=5 by fpbs_fqup_trans, cpxs_fpbs/ qed.
index ce44e7e7bb20687d5374f380db3852294db97f6a..71f12aeffd67a27409ec32b5619a38a5113f2b90 100644 (file)
@@ -20,8 +20,8 @@ include "basic_2/rt_computation/fpbs.ma".
 (* Properties with sn for unbound parallel rt-transition for terms **********)
 
 (* Basic_2A1: was: csx_fpbs_conf *)
-lemma fpbs_csx_conf: ∀h,o,G1,L1,T1. ⦃G1, L1⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ →
-                     ∀G2,L2,T2. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄ → ⦃G2, L2⦄ ⊢ ⬈*[h, o] 𝐒⦃T2⦄.
-#h #o #G1 #L1 #T1 #HT1 #G2 #L2 #T2 #H @(fpbs_ind … H) -G2 -L2 -T2
+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
 /2 width=5 by csx_fpbq_conf/
 qed-.
index 632fe7dc6d656672c7727201a3ecd5f5cec83325..2c6cb6a8bbfcf4b9641206cde77935de04f56a2b 100644 (file)
@@ -19,6 +19,6 @@ include "basic_2/rt_computation/fpbs.ma".
 
 (* Properties with proper parallel rst-reduction on closures ****************)
 
-lemma fpb_fpbs: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≻[h, o] ⦃G2, L2, T2⦄ →
-                ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
+lemma fpb_fpbs: ∀h,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≻[h] ⦃G2, L2, T2⦄ →
+                ⦃G1, L1, T1⦄ ≥[h] ⦃G2, L2, T2⦄.
 /3 width=1 by fpbq_fpbs, fpb_fpbq/ qed.
index 12d5d8de6b779b86b1ef38c03f297d50b9855c1f..6e75949fc07b855c5532624a4518f72e0d2d3190 100644 (file)
@@ -18,5 +18,5 @@ include "basic_2/rt_computation/fpbs.ma".
 
 (* Main properties **********************************************************)
 
-theorem fpbs_trans: ∀h,o. tri_transitive … (fpbs h o).
+theorem fpbs_trans: ∀h. tri_transitive … (fpbs h).
 /2 width=5 by tri_TC_transitive/ qed-.
index b625f889bb16a308b9888043d337b21e13656b04..8c588f3b3affd7071ad3bcca204c597ab8e90e80 100644 (file)
@@ -20,26 +20,26 @@ include "basic_2/rt_computation/fpbs_fqus.ma".
 
 (* Advanced properties ******************************************************)
 
-lemma tdeq_fpbs_trans: ∀h,o,T1,T. T1 ≛[h, o] T →
-                       ∀G1,G2,L1,L2,T2. ⦃G1, L1, T⦄ ≥[h, o] ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
+lemma tdeq_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⦄.
 /3 width=5 by fdeq_fpbs_trans, tdeq_fdeq/ qed-.
 
-lemma fpbs_tdeq_trans: ∀h,o,G1,G2,L1,L2,T1,T. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T⦄ →
-                       ∀T2. T ≛[h, o] T2 →  ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
+lemma fpbs_tdeq_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⦄.
 /3 width=5 by fpbs_fdeq_trans, tdeq_fdeq/ qed-.
 
 (* Properties with plus-iterated structural successor for closures **********)
 
-lemma fqup_fpbs: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐+ ⦃G2, L2, T2⦄ →
-                 ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
-#h #o #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind … H) -G2 -L2 -T2 
+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 
 /4 width=5 by fqu_fquq, fpbq_fquq, tri_step/
 qed.
 
-lemma fpbs_fqup_trans: ∀h,o,G1,G,L1,L,T1,T. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G, L, T⦄ →
-                       ∀G2,L2,T2. ⦃G, L, T⦄ ⊐+ ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
+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⦄.
 /3 width=5 by fpbs_fqus_trans, fqup_fqus/ qed-.
 
-lemma fqup_fpbs_trans: ∀h,o,G,G2,L,L2,T,T2. ⦃G, L, T⦄ ≥[h, o] ⦃G2, L2, T2⦄ →
-                       ∀G1,L1,T1. ⦃G1, L1, T1⦄ ⊐+ ⦃G, L, T⦄ → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
+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⦄.
 /3 width=5 by fqus_fpbs_trans, fqup_fqus/ qed-.
index db3925f7125d1103c1bcd409982ea8b70286d266..57de426338a74137f6087a7b0d67f73c56a28f80 100644 (file)
@@ -19,20 +19,20 @@ include "basic_2/rt_computation/fpbs.ma".
 
 (* Properties with star-iterated structural successor for closures **********)
 
-lemma fqus_fpbs: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐* ⦃G2, L2, T2⦄ →
-                 ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
-#h #o #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqus_ind … H) -G2 -L2 -T2
+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
 /3 width=5 by fpbq_fquq, tri_step/
 qed.
 
-lemma fpbs_fqus_trans: ∀h,o,G1,G,L1,L,T1,T. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G, L, T⦄ →
-                       ∀G2,L2,T2. ⦃G, L, T⦄ ⊐* ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
-#h #o #G1 #G #L1 #L #T1 #T #H1 #G2 #L2 #T2 #H @(fqus_ind … H) -G2 -L2 -T2
+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
 /3 width=5 by fpbs_strap1, fpbq_fquq/
 qed-.
 
-lemma fqus_fpbs_trans: ∀h,o,G,G2,L,L2,T,T2. ⦃G, L, T⦄ ≥[h, o] ⦃G2, L2, T2⦄ →
-                       ∀G1,L1,T1. ⦃G1, L1, T1⦄ ⊐* ⦃G, L, T⦄ → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
-#h #o #G #G2 #L #L2 #T #T2 #H1 #G1 #L1 #T1 #H @(fqus_ind_dx … H) -G1 -L1 -T1
+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
 /3 width=5 by fpbs_strap2, fpbq_fquq/
 qed-.
index 2760e2a338e72cd8d351f50e03a5780d9ea5dff4..c5ad6426a47db9cc6a83c27c86b65e5d764fd38a 100644 (file)
@@ -23,50 +23,50 @@ include "basic_2/rt_computation/fpbs_cpxs.ma".
 
 (* Properties with unbound rt-computation on full local environments  *******)
 
-lemma lpxs_fpbs: ∀h,o,G,L1,L2,T. ⦃G, L1⦄ ⊢ ⬈*[h] L2 → ⦃G, L1, T⦄ ≥[h, o] ⦃G, L2, T⦄.
-#h #o #G #L1 #L2 #T #H @(lpxs_ind_dx … H) -L2
+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
 /3 width=5 by fpbq_lpx, fpbs_strap1/
 qed.
 
-lemma fpbs_lpxs_trans: ∀h,o,G1,G2,L1,L,T1,T2. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L, T2⦄ →
-                       ∀L2. ⦃G2, L⦄ ⊢ ⬈*[h] L2 → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
-#h #o #G1 #G2 #L1 #L #T1 #T2 #H1 #L2 #H @(lpxs_ind_dx … H) -L2
+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
 /3 width=5 by fpbs_strap1, fpbq_lpx/
 qed-.
 
-lemma lpxs_fpbs_trans: ∀h,o,G1,G2,L,L2,T1,T2. ⦃G1, L, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄ →
-                       ∀L1. ⦃G1, L1⦄ ⊢ ⬈*[h] L → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
-#h #o #G1 #G2 #L #L2 #T1 #T2 #H1 #L1 #H @(lpxs_ind_sn … H) -L1
+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
 /3 width=5 by fpbs_strap2, fpbq_lpx/
 qed-.
 
 (* Basic_2A1: uses: lpxs_lleq_fpbs *)
-lemma lpxs_fdeq_fpbs: ∀h,o,G1,L1,L,T1. ⦃G1, L1⦄ ⊢ ⬈*[h] L →
-                      ∀G2,L2,T2. ⦃G1, L, T1⦄ ≛[h, o] ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
+lemma lpxs_fdeq_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⦄.
 /3 width=3 by lpxs_fpbs_trans, fdeq_fpbs/ qed.
 
-lemma fpbs_lpx_trans: ∀h,o,G1,G2,L1,L,T1,T2. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L, T2⦄ →
-                      ∀L2. ⦃G2, L⦄ ⊢ ⬈[h] L2 → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
+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⦄.
 /3 width=3 by fpbs_lpxs_trans, lpx_lpxs/ qed-.
 
 (* Properties with star-iterated structural successor for closures **********)
 
-lemma fqus_lpxs_fpbs: ∀h,o,G1,G2,L1,L,T1,T2. ⦃G1, L1, T1⦄ ⊐* ⦃G2, L, T2⦄ →
-                      ∀L2. ⦃G2, L⦄ ⊢ ⬈*[h] L2 → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄.
+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⦄.
 /3 width=3 by fpbs_lpxs_trans, fqus_fpbs/ qed.
 
 (* Properties with unbound context-sensitive parallel rt-computation ********)
 
-lemma cpxs_fqus_lpxs_fpbs: ∀h,o,G1,L1,T1,T. ⦃G1, L1⦄ ⊢ T1 ⬈*[h] T →
+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, o] ⦃G2, L2, T2⦄.
+                           ∀L2.⦃G2, L⦄ ⊢ ⬈*[h] L2 → ⦃G1, L1, T1⦄ ≥[h] ⦃G2, L2, T2⦄.
 /3 width=5 by cpxs_fqus_fpbs, fpbs_lpxs_trans/ qed.
 
-lemma fpbs_cpxs_tdeq_fqup_lpx_trans: ∀h,o,G1,G3,L1,L3,T1,T3. ⦃G1, L1, T1⦄ ≥ [h, o] ⦃G3, L3, T3⦄ →
-                                     ∀T4. ⦃G3, L3⦄ ⊢ T3 ⬈*[h] T4 → ∀T5. T4 ≛[h, o] T5 →
+lemma fpbs_cpxs_tdeq_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, o] ⦃G2, L2, T2⦄.
-#h #o #G1 #G3 #L1 #L3 #T1 #T3 #H13 #T4 #HT34 #T5 #HT45 #G2 #L4 #T2 #H34 #L2 #HL42  
+                                     ∀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  
 @(fpbs_lpx_trans … HL42) -L2 (**) (* full auto too slow *)
 @(fpbs_fqup_trans … H34) -G2 -L4 -T2
 /3 width=3 by fpbs_cpxs_trans, fpbs_tdeq_trans/
@@ -75,19 +75,19 @@ qed-.
 (* Advanced properties ******************************************************)
 
 (* Basic_2A1: uses: fpbs_intro_alt *)
-lemma fpbs_intro_star: ∀h,o,G1,L1,T1,T. ⦃G1, L1⦄ ⊢ T1 ⬈*[h] T →
+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⦄ ≛[h, o] ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄ .
+                       ∀G2,L2,T2. ⦃G, L0, T0⦄ ≛ ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ ≥[h] ⦃G2, L2, T2⦄ .
 /3 width=5 by cpxs_fqus_lpxs_fpbs, fpbs_strap1, fpbq_fdeq/ qed.
 
 (* Advanced inversion lemmas *************************************************)
 
 (* Basic_2A1: uses: fpbs_inv_alt *)
-lemma fpbs_inv_star: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄ →
+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⦄ ≛[h, o] ⦃G2, L2, T2⦄.
-#h #o #G1 #G2 #L1 #L2 #T1 #T2 #H @(fpbs_ind_dx … H) -G1 -L1 -T1
+                                  & ⦃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
 [ /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 8ae6b26e8b8e44ca793715dd43375c2b295d316b..936fabecadf84c56f9c305a216e7b062f8283f46 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/predsubtystrong_5.ma".
+include "basic_2/notation/relations/predsubtystrong_4.ma".
 include "basic_2/rt_transition/fpb.ma".
 
 (* STRONGLY NORMALIZING CLOSURES FOR PARALLEL RST-TRANSITION ****************)
 
-inductive fsb (h) (o): relation3 genv lenv term ≝
+inductive fsb (h): relation3 genv lenv term ≝
 | fsb_intro: ∀G1,L1,T1. (
-                ∀G2,L2,T2. ⦃G1, L1, T1⦄ ≻[h, o] ⦃G2, L2, T2⦄ → fsb h o G2 L2 T2
-             ) → fsb h G1 L1 T1
+                ∀G2,L2,T2. ⦃G1, L1, T1⦄ ≻[h] ⦃G2, L2, T2⦄ → fsb h G2 L2 T2
+             ) → fsb h G1 L1 T1
 .
 
 interpretation
    "strong normalization for parallel rst-transition (closure)"
-   'PRedSubTyStrong h o G L T = (fsb h o G L T).
+   'PRedSubTyStrong h G L T = (fsb h G L T).
 
 (* Basic eliminators ********************************************************)
 
 (* Note: eliminator with shorter ground hypothesis *)
 (* Note: to be named fsb_ind when fsb becomes a definition like csx, lfsx ***)
-lemma fsb_ind_alt: ∀h,o. ∀Q: relation3 …. (
-                      ∀G1,L1,T1. ≥[h,o] 𝐒⦃G1, L1, T1⦄ → (
-                         ∀G2,L2,T2. ⦃G1, L1, T1⦄ ≻[h, o] ⦃G2, L2, T2⦄ → Q G2 L2 T2
+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
                       ) → Q G1 L1 T1
                    ) →
-                   ∀G,L,T. ≥[h, o] 𝐒⦃G, L, T⦄ →  Q G L T.
-#h #o #Q #IH #G #L #T #H elim H -G -L -T
+                   ∀G,L,T. ≥[h] 𝐒⦃G, L, T⦄ →  Q G L T.
+#h #Q #IH #G #L #T #H elim H -G -L -T
 /4 width=1 by fsb_intro/
 qed-.
 
index 43eb814dc017629381af95a5c8a8bc960e238239..93e9c0ec4e38dba091da5355faa2c47d242ae96f 100644 (file)
@@ -22,46 +22,46 @@ include "basic_2/rt_computation/fsb_csx.ma".
 (* Main properties with atomic arity assignment for terms *******************)
 
 (* Note: this is the "big tree" theorem *)
-theorem aaa_fsb: ∀h,o,G,L,T,A. ⦃G, L⦄ ⊢ T ⁝ A → ≥[h, o] 𝐒⦃G, L, T⦄.
+theorem aaa_fsb: ∀h,G,L,T,A. ⦃G, L⦄ ⊢ T ⁝ A → ≥[h] 𝐒⦃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,o. ∀Q:relation3 ….
+fact aaa_ind_fpb_aux: ∀h. ∀Q:relation3 ….
                       (∀G1,L1,T1,A. ⦃G1, L1⦄ ⊢ T1 ⁝ A →
-                                    (∀G2,L2,T2. ⦃G1, L1, T1⦄ ≻[h, o] ⦃G2, L2, T2⦄ → Q G2 L2 T2) →
+                                    (∀G2,L2,T2. ⦃G1, L1, T1⦄ ≻[h] ⦃G2, L2, T2⦄ → Q G2 L2 T2) →
                                     Q G1 L1 T1
                       ) →
-                      ∀G,L,T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄ → ∀A. ⦃G, L⦄ ⊢ T ⁝ A →  Q G L T.
-#h #o #R #IH #G #L #T #H @(csx_ind_fpb … H) -G -L -T
+                      ∀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
 #G1 #L1 #T1 #H1 #IH1 #A1 #HTA1 @IH -IH //
-#G2 #L2 #T2 #H12 elim (fpbs_aaa_conf h o … G2 … L2 … T2 … HTA1) -A1
+#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,o. ∀Q:relation3 ….
+lemma aaa_ind_fpb: ∀h. ∀Q:relation3 ….
                    (∀G1,L1,T1,A. ⦃G1, L1⦄ ⊢ T1 ⁝ A →
-                                 (∀G2,L2,T2. ⦃G1, L1, T1⦄ ≻[h, o] ⦃G2, L2, T2⦄ → Q G2 L2 T2) →
+                                 (∀G2,L2,T2. ⦃G1, L1, T1⦄ ≻[h] ⦃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,o. ∀Q:relation3 ….
+fact aaa_ind_fpbg_aux: ∀h. ∀Q:relation3 ….
                        (∀G1,L1,T1,A. ⦃G1, L1⦄ ⊢ T1 ⁝ A →
-                                     (∀G2,L2,T2. ⦃G1, L1, T1⦄ >[h, o] ⦃G2, L2, T2⦄ → Q G2 L2 T2) →
+                                     (∀G2,L2,T2. ⦃G1, L1, T1⦄ >[h] ⦃G2, L2, T2⦄ → Q G2 L2 T2) →
                                      Q G1 L1 T1
                        ) →
-                       ∀G,L,T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄ → ∀A. ⦃G, L⦄ ⊢ T ⁝ A →  Q G L T.
-#h #o #Q #IH #G #L #T #H @(csx_ind_fpbg … H) -G -L -T
+                       ∀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
 #G1 #L1 #T1 #H1 #IH1 #A1 #HTA1 @IH -IH //
-#G2 #L2 #T2 #H12 elim (fpbs_aaa_conf h o … G2 … L2 … T2 … HTA1) -A1
+#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,o. ∀Q:relation3 ….
+lemma aaa_ind_fpbg: ∀h. ∀Q:relation3 ….
                     (∀G1,L1,T1,A. ⦃G1, L1⦄ ⊢ T1 ⁝ A →
-                                  (∀G2,L2,T2. ⦃G1, L1, T1⦄ >[h, o] ⦃G2, L2, T2⦄ → Q G2 L2 T2) →
+                                  (∀G2,L2,T2. ⦃G1, L1, T1⦄ >[h] ⦃G2, L2, T2⦄ → Q G2 L2 T2) →
                                   Q G1 L1 T1
                     ) →
                     ∀G,L,T,A. ⦃G, L⦄ ⊢ T ⁝ A → Q G L T.
index 2746e54576ed0331401ef3290a2dcd4a84d3777c..2d33b783e834e333b2b3e0547d4b0343a659c0c0 100644 (file)
@@ -21,15 +21,15 @@ include "basic_2/rt_computation/fsb_fpbg.ma".
 
 (* Inversion lemmas with context-sensitive stringly rt-normalizing terms ****)
 
-lemma fsb_inv_csx: ∀h,o,G,L,T. ≥[h, o] 𝐒⦃G, L, T⦄ → ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄.
-#h #o #G #L #T #H @(fsb_ind_alt … H) -G -L -T /5 width=1 by csx_intro, fpb_cpx/
+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/
 qed-.
 
 (* Propreties with context-sensitive stringly rt-normalizing terms **********)
 
-lemma csx_fsb_fpbs: ∀h,o,G1,L1,T1. ⦃G1, L1⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ →
-                    ∀G2,L2,T2. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄ → ≥[h, o] 𝐒⦃G2, L2, T2⦄.
-#h #o #G1 #L1 #T1 #H @(csx_ind … H) -T1
+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
 #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
@@ -45,7 +45,7 @@ generalize in match IHu; -IHu generalize in match H10; -H10
   [ /3 width=3 by fpbs_lpxs_trans, lpx_lpxs/
   | #G3 #L3 #T3 #H03 #_
     elim (lpx_fqup_trans … H03 … HL02) -L2 #L4 #T4 #HT04 #H43 #HL43
-    elim (tdeq_dec h o T0 T4) [ -IHc -HT04 #HT04 | -IHu #HnT04 ]
+    elim (tdeq_dec T0 T4) [ -IHc -HT04 #HT04 | -IHu #HnT04 ]
     [ elim (tdeq_fqup_trans … H43 … HT04) -T4 #L2 #T4 #H04 #HT43 #HL24
       /4 width=7 by fsb_fpbs_trans, tdeq_rdeq_lpx_fpbs, fpbs_fqup_trans/
     | elim (cpxs_tdneq_fwd_step_sn … HT04 HnT04) -HT04 -HnT04 #T2 #T5 #HT02 #HnT02 #HT25 #HT54
@@ -56,23 +56,23 @@ generalize in match IHu; -IHu generalize in match H10; -H10
 ]
 qed.
 
-lemma csx_fsb: ∀h,o,G,L,T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄ → ≥[h, o] 𝐒⦃G, L, T⦄.
+lemma csx_fsb: ∀h,G,L,T. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃T⦄ → ≥[h] 𝐒⦃G, L, T⦄.
 /2 width=5 by csx_fsb_fpbs/ qed.
 
 (* Advanced eliminators *****************************************************)
 
-lemma csx_ind_fpb: ∀h,o. ∀Q:relation3 genv lenv term.
-                   (∀G1,L1,T1. ⦃G1, L1⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ →
-                               (∀G2,L2,T2. ⦃G1, L1, T1⦄ ≻[h, o] ⦃G2, L2, T2⦄ → Q G2 L2 T2) →
+lemma csx_ind_fpb: ∀h. ∀Q:relation3 genv lenv term.
+                   (∀G1,L1,T1. ⦃G1, L1⦄ ⊢ ⬈*[h] 𝐒⦃T1⦄ →
+                               (∀G2,L2,T2. ⦃G1, L1, T1⦄ ≻[h] ⦃G2, L2, T2⦄ → Q G2 L2 T2) →
                                Q G1 L1 T1
                    ) →
-                   ∀G,L,T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄ →  Q G L T.
+                   ∀G,L,T. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃T⦄ →  Q G L T.
 /4 width=4 by fsb_inv_csx, csx_fsb, fsb_ind_alt/ qed-.
 
-lemma csx_ind_fpbg: ∀h,o. ∀Q:relation3 genv lenv term.
-                    (∀G1,L1,T1. ⦃G1, L1⦄ ⊢ ⬈*[h, o] 𝐒⦃T1⦄ →
-                                (∀G2,L2,T2. ⦃G1, L1, T1⦄ >[h, o] ⦃G2, L2, T2⦄ → Q G2 L2 T2) →
+lemma csx_ind_fpbg: ∀h. ∀Q:relation3 genv lenv term.
+                    (∀G1,L1,T1. ⦃G1, L1⦄ ⊢ ⬈*[h] 𝐒⦃T1⦄ →
+                                (∀G2,L2,T2. ⦃G1, L1, T1⦄ >[h] ⦃G2, L2, T2⦄ → Q G2 L2 T2) →
                                 Q G1 L1 T1
                     ) →
-                    ∀G,L,T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄ →  Q G L T.
+                    ∀G,L,T. ⦃G, L⦄ ⊢ ⬈*[h] 𝐒⦃T⦄ →  Q G L T.
 /4 width=4 by fsb_inv_csx, csx_fsb, fsb_ind_fpbg/ qed-.
index 271a0e47610caccbec5a3d3fdece97e2ae52604b..84703ccb6e6efad98b58179704524b54d43a4fc1 100644 (file)
@@ -17,11 +17,11 @@ include "basic_2/rt_computation/fsb.ma".
 
 (* STRONGLY NORMALIZING CLOSURES FOR PARALLEL RST-TRANSITION ****************)
 
-(* Properties with degree-based equivalence for closures ********************)
+(* Properties with sort-irrelevant equivalence for closures *****************)
 
-lemma fsb_fdeq_trans: ∀h,o,G1,L1,T1. ≥[h, o] 𝐒⦃G1, L1, T1⦄ →
-                      ∀G2,L2,T2. ⦃G1, L1, T1⦄ ≛[h, o] ⦃G2, L2, T2⦄ → ≥[h, o] 𝐒⦃G2, L2, T2⦄.
-#h #o #G1 #L1 #T1 #H @(fsb_ind_alt … H) -G1 -L1 -T1 
+lemma fsb_fdeq_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 
 #G1 #L1 #T1 #_ #IH #G2 #L2 #T2 #H12
 @fsb_intro #G #L #T #H2
 elim (fdeq_fpb_trans … H12 … H2) -G2 -L2 -T2
index cd2c4124815b517af7783d98d82d5843562fd9e7..806180ead0f58ca5a7ea3a381f9d83c00287a098 100644 (file)
@@ -19,9 +19,9 @@ include "basic_2/rt_computation/fsb_fdeq.ma".
 
 (* Properties with parallel rst-computation for closures ********************)
 
-lemma fsb_fpbs_trans: ∀h,o,G1,L1,T1. ≥[h, o] 𝐒⦃G1, L1, T1⦄ →
-                      ∀G2,L2,T2. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄ → ≥[h, o] 𝐒⦃G2, L2, T2⦄.
-#h #o #G1 #L1 #T1 #H @(fsb_ind_alt … H) -G1 -L1 -T1
+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
 #G1 #L1 #T1 #H1 #IH #G2 #L2 #T2 #H12
 elim (fpbs_inv_fpbg … H12) -H12
 [ -IH /2 width=5 by fsb_fdeq_trans/
@@ -31,21 +31,21 @@ qed-.
 
 (* Properties with proper parallel rst-computation for closures *************)
 
-lemma fsb_intro_fpbg: ∀h,o,G1,L1,T1. (
-                         ∀G2,L2,T2. ⦃G1, L1, T1⦄ >[h, o] ⦃G2, L2, T2⦄ → ≥[h, o] 𝐒⦃G2, L2, T2⦄
-                      ) → ≥[h, o] 𝐒⦃G1, L1, T1⦄.
+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⦄.
 /4 width=1 by fsb_intro, fpb_fpbg/ qed.
 
 (* Eliminators with proper parallel rst-computation for closures ************)
 
-lemma fsb_ind_fpbg_fpbs: ∀h,o. ∀Q:relation3 genv lenv term.
-                         (∀G1,L1,T1. ≥[h, o] 𝐒⦃G1, L1, T1⦄ →
-                                     (∀G2,L2,T2. ⦃G1, L1, T1⦄ >[h, o] ⦃G2, L2, T2⦄ → Q G2 L2 T2) →
+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, o] 𝐒⦃G1, L1, T1⦄ → 
-                         ∀G2,L2,T2. ⦃G1, L1, T1⦄ ≥[h, o] ⦃G2, L2, T2⦄ → Q G2 L2 T2.
-#h #o #Q #IH1 #G1 #L1 #T1 #H @(fsb_ind_alt … H) -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
 #G1 #L1 #T1 #H1 #IH #G2 #L2 #T2 #H12
 @IH1 -IH1
 [ -IH /2 width=5 by fsb_fpbs_trans/
@@ -55,21 +55,21 @@ lemma fsb_ind_fpbg_fpbs: ∀h,o. ∀Q:relation3 genv lenv term.
 ]
 qed-.
 
-lemma fsb_ind_fpbg: ∀h,o. ∀Q:relation3 genv lenv term.
-                    (∀G1,L1,T1. ≥[h, o] 𝐒⦃G1, L1, T1⦄ →
-                                (∀G2,L2,T2. ⦃G1, L1, T1⦄ >[h, o] ⦃G2, L2, T2⦄ → Q G2 L2 T2) →
+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, o] 𝐒⦃G1, L1, T1⦄ →  Q G1 L1 T1.
-#h #o #Q #IH #G1 #L1 #T1 #H @(fsb_ind_fpbg_fpbs … H) -H
+                    ∀G1,L1,T1. ≥[h] 𝐒⦃G1, L1, T1⦄ →  Q G1 L1 T1.
+#h #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) (o) (G) (L) (T):
-                          ≥[h,o] 𝐒⦃G, L, T⦄ → ⦃G, L, T⦄ >[h,o] ⦃G, L, T⦄ → ⊥.
-#h #o #G #L #T #H
+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
 @(fsb_ind_fpbg … H) -G -L -T #G1 #L1 #T1 #_ #IH #H
 /2 width=5 by/
 qed-.
index 8a5676cc062c6b26f9757f3d7bc2899a7329d626..30bbb3e75be8e17dccec8b64c444bedabb646b61 100644 (file)
@@ -17,12 +17,12 @@ include "basic_2/rt_computation/lpxs_rdeq.ma".
 
 (* UNBOUND PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS **************)
 
-(* Properties with degree-based equivalence on closures *********************)
+(* Properties with sort-irrelevant equivalence on closures ******************)
 
-lemma fdeq_lpxs_trans (h) (o): ∀G1,G2,L1,L0,T1,T2. ⦃G1, L1, T1⦄ ≛[h, o] ⦃G2, L0, T2⦄ →
-                               ∀L2. ⦃G2, L0⦄ ⊢⬈*[h] L2 →
-                               ∃∃L. ⦃G1, L1⦄ ⊢⬈*[h] L & ⦃G1, L, T1⦄ ≛[h, o] ⦃G2, L2, T2⦄.
-#h #o #G1 #G2 #L1 #L0 #T1 #T2 #H1 #L2 #HL02
+lemma fdeq_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
 elim (fdeq_inv_gen_dx … H1) -H1 #HG #HL10 #HT12 destruct
 elim (rdeq_lpxs_trans … HL02 … HL10) -L0 #L0 #HL10 #HL02
 /3 width=3 by fdeq_intro_dx, ex2_intro/
index 3526c22c2c3c748d9f300cf972535e6ae75e4534..2bc873339eb4826b50af090c2cc512498b5c996e 100644 (file)
@@ -17,13 +17,14 @@ include "basic_2/rt_computation/lpxs_lpx.ma".
 
 (* UNBOUND PARALLEL RT-COMPUTATION FOR FULL LOCAL ENVIRONMENTS **************)
 
-(* Properties with degree-based equivalence on referred entries *************)
+(* Properties with sort-irrelevant equivalence on referred entries **********)
 
 (* Basic_2A1: uses: lleq_lpxs_trans *)
-lemma rdeq_lpxs_trans (h) (o) (G) (T:term): ∀L2,K2. ⦃G, L2⦄ ⊢ ⬈*[h] K2 →
-                                            ∀L1. L1 ≛[h, o, T] L2 →
-                                            ∃∃K1. ⦃G, L1⦄ ⊢ ⬈*[h] K1 & K1 ≛[h, o, T] K2.
-#h #o #G #T #L2 #K2 #H @(lpxs_ind_sn … H) -L2 /2 width=3 by ex2_intro/
+lemma rdeq_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/
 #L #L2 #HL2 #_ #IH #L1 #HT
 elim (rdeq_lpx_trans … HL2 … HT) -L #L #HL1 #HT
 elim (IH … HT) -L2 #K #HLK #HT
@@ -31,13 +32,13 @@ elim (IH … HT) -L2 #K #HLK #HT
 qed-.
 
 (* Basic_2A1: uses: lpxs_nlleq_inv_step_sn *)
-lemma lpxs_rdneq_inv_step_sn (h) (o) (G) (T:term):
-                             ∀L1,L2. ⦃G, L1⦄ ⊢ ⬈*[h] L2 → (L1 ≛[h, o, T] L2 → ⊥) →
-                             ∃∃L,L0. ⦃G, L1⦄ ⊢ ⬈[h] L & L1 ≛[h, o, T] L → ⊥ &
-                                     ⦃G, L⦄ ⊢ ⬈*[h] L0 & L0 ≛[h, o, T] L2.
-#h #o #G #T #L1 #L2 #H @(lpxs_ind_sn … H) -L1
+lemma lpxs_rdneq_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
 [ #H elim H -H //
-| #L1 #L #H1 #H2 #IH2 #H12 elim (rdeq_dec h o L1 L T) #H
+| #L1 #L #H1 #H2 #IH2 #H12 elim (rdeq_dec L1 L T) #H
   [ -H1 -H2 elim IH2 -IH2 /3 width=3 by rdeq_trans/ -H12
     #L0 #L3 #H1 #H2 #H3 #H4 lapply (rdeq_rdneq_trans … H … H2) -H2
     #H2 elim (rdeq_lpx_trans … H1 … H) -L
index 0f46012343a86093eb52c43438100bff443becb6..d976e52d1c62b410405edae0f54083f41c8c00dc 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/lsubeqx_6.ma".
+include "basic_2/notation/relations/lsubeqx_5.ma".
 include "basic_2/rt_computation/rdsx.ma".
 
 (* CLEAR OF STRONGLY NORMALIZING ENTRIES FOR UNBOUND RT-TRANSITION **********)
 
 (* Note: this should be an instance of a more general sex *)
 (* Basic_2A1: uses: lcosx *)
-inductive lsubsx (h) (o) (G): rtmap → relation lenv ≝
-| lsubsx_atom: ∀f. lsubsx h G f (⋆) (⋆)
-| lsubsx_push: ∀f,I,K1,K2. lsubsx h G f K1 K2 →
-               lsubsx h G (⫯f) (K1.ⓘ{I}) (K2.ⓘ{I})
-| lsubsx_unit: ∀f,I,K1,K2. lsubsx h G f K1 K2 →
-               lsubsx h G (↑f) (K1.ⓤ{I}) (K2.ⓧ)
-| lsubsx_pair: ∀f,I,K1,K2,V. G ⊢ ⬈*[h, o, V] 𝐒⦃K2⦄ →
-               lsubsx h o G f K1 K2 → lsubsx h o G (↑f) (K1.ⓑ{I}V) (K2.ⓧ)
+inductive lsubsx (h) (G): rtmap → relation lenv ≝
+| lsubsx_atom: ∀f. lsubsx h G f (⋆) (⋆)
+| lsubsx_push: ∀f,I,K1,K2. lsubsx h G f K1 K2 →
+               lsubsx h G (⫯f) (K1.ⓘ{I}) (K2.ⓘ{I})
+| lsubsx_unit: ∀f,I,K1,K2. lsubsx h G f K1 K2 →
+               lsubsx h G (↑f) (K1.ⓤ{I}) (K2.ⓧ)
+| lsubsx_pair: ∀f,I,K1,K2,V. G ⊢ ⬈*[h, V] 𝐒⦃K2⦄ →
+               lsubsx h G f K1 K2 → lsubsx h G (↑f) (K1.ⓑ{I}V) (K2.ⓧ)
 .
 
 interpretation
   "local environment refinement (clear)"
-  'LSubEqX h o f G L1 L2 = (lsubsx h o G f L1 L2).
+  'LSubEqX h f G L1 L2 = (lsubsx h G f L1 L2).
 
 (* Basic inversion lemmas ***************************************************)
 
-fact lsubsx_inv_atom_sn_aux: ∀h,o,g,G,L1,L2. G ⊢ L1 ⊆ⓧ[h, o, g] L2 →
+fact lsubsx_inv_atom_sn_aux: ∀h,g,G,L1,L2. G ⊢ L1 ⊆ⓧ[h, g] L2 →
                              L1 = ⋆ → L2 = ⋆.
-#h #o #g #G #L1 #L2 * -g -L1 -L2 //
+#h #g #G #L1 #L2 * -g -L1 -L2 //
 [ #f #I #K1 #K2 #_ #H destruct
 | #f #I #K1 #K2 #_ #H destruct
 | #f #I #K1 #K2 #V #_ #_ #H destruct
 ]
 qed-.
 
-lemma lsubsx_inv_atom_sn: ∀h,o,g,G,L2. G ⊢ ⋆ ⊆ⓧ[h, o, g] L2 → L2 = ⋆.
+lemma lsubsx_inv_atom_sn: ∀h,g,G,L2. G ⊢ ⋆ ⊆ⓧ[h, g] L2 → L2 = ⋆.
 /2 width=7 by lsubsx_inv_atom_sn_aux/ qed-.
 
-fact lsubsx_inv_push_sn_aux: ∀h,o,g,G,L1,L2. G ⊢ L1 ⊆ⓧ[h, o, g] L2 →
+fact lsubsx_inv_push_sn_aux: ∀h,g,G,L1,L2. G ⊢ L1 ⊆ⓧ[h, g] L2 →
                              ∀f,I,K1. g = ⫯f → L1 = K1.ⓘ{I} →
-                             ∃∃K2. G ⊢ K1 ⊆ⓧ[h, o, f] K2 & L2 = K2.ⓘ{I}.
-#h #o #g #G #L1 #L2 * -g -L1 -L2
+                             ∃∃K2. G ⊢ K1 ⊆ⓧ[h, f] K2 & L2 = K2.ⓘ{I}.
+#h #g #G #L1 #L2 * -g -L1 -L2
 [ #f #g #J #L1 #_ #H destruct
 | #f #I #K1 #K2 #HK12 #g #J #L1 #H1 #H2 destruct
   <(injective_push … H1) -g /2 width=3 by ex2_intro/
@@ -61,14 +61,14 @@ fact lsubsx_inv_push_sn_aux: ∀h,o,g,G,L1,L2. G ⊢ L1 ⊆ⓧ[h, o, g] L2 →
 ]
 qed-.
 
-lemma lsubsx_inv_push_sn: ∀h,o,f,I,G,K1,L2. G ⊢ K1.ⓘ{I} ⊆ⓧ[h, o, ⫯f] L2 →
-                          ∃∃K2. G ⊢ K1 ⊆ⓧ[h, o, f] K2 & L2 = K2.ⓘ{I}.
+lemma lsubsx_inv_push_sn: ∀h,f,I,G,K1,L2. G ⊢ K1.ⓘ{I} ⊆ⓧ[h, ⫯f] L2 →
+                          ∃∃K2. G ⊢ K1 ⊆ⓧ[h, f] K2 & L2 = K2.ⓘ{I}.
 /2 width=5 by lsubsx_inv_push_sn_aux/ qed-.
 
-fact lsubsx_inv_unit_sn_aux: ∀h,o,g,G,L1,L2. G ⊢ L1 ⊆ⓧ[h, o, g] L2 →
+fact lsubsx_inv_unit_sn_aux: ∀h,g,G,L1,L2. G ⊢ L1 ⊆ⓧ[h, g] L2 →
                              ∀f,I,K1. g = ↑f → L1 = K1.ⓤ{I} →
-                             ∃∃K2. G ⊢ K1 ⊆ⓧ[h, o, f] K2 & L2 = K2.ⓧ.
-#h #o #g #G #L1 #L2 * -g -L1 -L2
+                             ∃∃K2. G ⊢ K1 ⊆ⓧ[h, f] K2 & L2 = K2.ⓧ.
+#h #g #G #L1 #L2 * -g -L1 -L2
 [ #f #g #J #L1 #_ #H destruct
 | #f #I #K1 #K2 #_ #g #J #L1 #H
   elim (discr_push_next … H)
@@ -78,15 +78,15 @@ fact lsubsx_inv_unit_sn_aux: ∀h,o,g,G,L1,L2. G ⊢ L1 ⊆ⓧ[h, o, g] L2 →
 ]
 qed-.
 
-lemma lsubsx_inv_unit_sn: ∀h,o,f,I,G,K1,L2. G ⊢ K1.ⓤ{I} ⊆ⓧ[h, o, ↑f] L2 →
-                          ∃∃K2. G ⊢ K1 ⊆ⓧ[h, o, f] K2 & L2 = K2.ⓧ.
+lemma lsubsx_inv_unit_sn: ∀h,f,I,G,K1,L2. G ⊢ K1.ⓤ{I} ⊆ⓧ[h, ↑f] L2 →
+                          ∃∃K2. G ⊢ K1 ⊆ⓧ[h, f] K2 & L2 = K2.ⓧ.
 /2 width=6 by lsubsx_inv_unit_sn_aux/ qed-.
 
-fact lsubsx_inv_pair_sn_aux: ∀h,o,g,G,L1,L2. G ⊢ L1 ⊆ⓧ[h, o, g] L2 →
+fact lsubsx_inv_pair_sn_aux: ∀h,g,G,L1,L2. G ⊢ L1 ⊆ⓧ[h, g] L2 →
                              ∀f,I,K1,V. g = ↑f → L1 = K1.ⓑ{I}V →
-                             ∃∃K2. G ⊢ ⬈*[h, o, V] 𝐒⦃K2⦄ &
-                                   G ⊢ K1 ⊆ⓧ[h, o, f] K2 & L2 = K2.ⓧ.
-#h #o #g #G #L1 #L2 * -g -L1 -L2
+                             ∃∃K2. G ⊢ ⬈*[h, V] 𝐒⦃K2⦄ &
+                                   G ⊢ K1 ⊆ⓧ[h, f] K2 & L2 = K2.ⓧ.
+#h #g #G #L1 #L2 * -g -L1 -L2
 [ #f #g #J #L1 #W #_ #H destruct
 | #f #I #K1 #K2 #_ #g #J #L1 #W #H
   elim (discr_push_next … H)
@@ -97,18 +97,18 @@ fact lsubsx_inv_pair_sn_aux: ∀h,o,g,G,L1,L2. G ⊢ L1 ⊆ⓧ[h, o, g] L2 →
 qed-.
 
 (* Basic_2A1: uses: lcosx_inv_pair *)
-lemma lsubsx_inv_pair_sn: ∀h,o,f,I,G,K1,L2,V. G ⊢ K1.ⓑ{I}V ⊆ⓧ[h, o, ↑f] L2 →
-                          ∃∃K2. G ⊢ ⬈*[h, o, V] 𝐒⦃K2⦄ &
-                                G ⊢ K1 ⊆ⓧ[h, o, f] K2 & L2 = K2.ⓧ.
+lemma lsubsx_inv_pair_sn: ∀h,f,I,G,K1,L2,V. G ⊢ K1.ⓑ{I}V ⊆ⓧ[h, ↑f] L2 →
+                          ∃∃K2. G ⊢ ⬈*[h, V] 𝐒⦃K2⦄ &
+                                G ⊢ K1 ⊆ⓧ[h, f] K2 & L2 = K2.ⓧ.
 /2 width=6 by lsubsx_inv_pair_sn_aux/ qed-.
 
 (* Advanced inversion lemmas ************************************************)
 
-lemma lsubsx_inv_pair_sn_gen: ∀h,o,g,I,G,K1,L2,V. G ⊢ K1.ⓑ{I}V ⊆ⓧ[h, o, g] L2 →
-                              ∨∨ ∃∃f,K2. G ⊢ K1 ⊆ⓧ[h, o, f] K2 & g = ⫯f & L2 = K2.ⓑ{I}V
-                               | ∃∃f,K2. G ⊢ ⬈*[h, o, V] 𝐒⦃K2⦄ &
-                                         G ⊢ K1 ⊆ⓧ[h, o, f] K2 & g = ↑f & L2 = K2.ⓧ.
-#h #o #g #I #G #K1 #L2 #V #H
+lemma lsubsx_inv_pair_sn_gen: ∀h,g,I,G,K1,L2,V. G ⊢ K1.ⓑ{I}V ⊆ⓧ[h, g] L2 →
+                              ∨∨ ∃∃f,K2. G ⊢ K1 ⊆ⓧ[h, f] K2 & g = ⫯f & L2 = K2.ⓑ{I}V
+                               | ∃∃f,K2. G ⊢ ⬈*[h, V] 𝐒⦃K2⦄ &
+                                         G ⊢ K1 ⊆ⓧ[h, f] K2 & g = ↑f & L2 = K2.ⓧ.
+#h #g #I #G #K1 #L2 #V #H
 elim (pn_split g) * #f #Hf destruct
 [ elim (lsubsx_inv_push_sn … H) -H /3 width=5 by ex3_2_intro, or_introl/
 | elim (lsubsx_inv_pair_sn … H) -H /3 width=6 by ex4_2_intro, or_intror/
@@ -117,9 +117,9 @@ qed-.
 
 (* Advanced forward lemmas **************************************************)
 
-lemma lsubsx_fwd_bind_sn: ∀h,o,g,I1,G,K1,L2. G ⊢ K1.ⓘ{I1} ⊆ⓧ[h, o, g] L2 →
-                          ∃∃I2,K2. G ⊢ K1 ⊆ⓧ[h, o, ⫱g] K2 & L2 = K2.ⓘ{I2}.
-#h #o #g #I1 #G #K1 #L2
+lemma lsubsx_fwd_bind_sn: ∀h,g,I1,G,K1,L2. G ⊢ K1.ⓘ{I1} ⊆ⓧ[h, g] L2 →
+                          ∃∃I2,K2. G ⊢ K1 ⊆ⓧ[h, ⫱g] K2 & L2 = K2.ⓘ{I2}.
+#h #g #I1 #G #K1 #L2
 elim (pn_split g) * #f #Hf destruct
 [ #H elim (lsubsx_inv_push_sn … H) -H
 | cases I1 -I1 #I1
@@ -132,8 +132,8 @@ qed-.
 
 (* Basic properties *********************************************************)
 
-lemma lsubsx_eq_repl_back: ∀h,o,G,L1,L2. eq_repl_back … (λf. G ⊢ L1 ⊆ⓧ[h, o, f] L2).
-#h #o #G #L1 #L2 #f1 #H elim H -L1 -L2 -f1 //
+lemma lsubsx_eq_repl_back: ∀h,G,L1,L2. eq_repl_back … (λf. G ⊢ L1 ⊆ⓧ[h, f] L2).
+#h #G #L1 #L2 #f1 #H elim H -L1 -L2 -f1 //
 [ #f #I #L1 #L2 #_ #IH #x #H
   elim (eq_inv_px … H) -H /3 width=3 by lsubsx_push/
 | #f #I #L1 #L2 #_ #IH #x #H
@@ -143,15 +143,15 @@ lemma lsubsx_eq_repl_back: ∀h,o,G,L1,L2. eq_repl_back … (λf. G ⊢ L1 ⊆
 ]
 qed-.
 
-lemma lsubsx_eq_repl_fwd: ∀h,o,G,L1,L2. eq_repl_fwd … (λf. G ⊢ L1 ⊆ⓧ[h, o, f] L2).
-#h #o #G #L1 #L2 @eq_repl_sym /2 width=3 by lsubsx_eq_repl_back/
+lemma lsubsx_eq_repl_fwd: ∀h,G,L1,L2. eq_repl_fwd … (λf. G ⊢ L1 ⊆ⓧ[h, f] L2).
+#h #G #L1 #L2 @eq_repl_sym /2 width=3 by lsubsx_eq_repl_back/
 qed-.
 
 (* Advanced properties ******************************************************)
 
 (* Basic_2A1: uses: lcosx_O *)
-lemma lsubsx_refl: ∀h,o,f,G. 𝐈⦃f⦄ → reflexive … (lsubsx h o G f).
-#h #o #f #G #Hf #L elim L -L
+lemma lsubsx_refl: ∀h,f,G. 𝐈⦃f⦄ → reflexive … (lsubsx h G f).
+#h #f #G #Hf #L elim L -L
 /3 width=3 by lsubsx_eq_repl_back, lsubsx_push, eq_push_inv_isid/
 qed.
 
index 018e5c2627b8e796bf7b2e2b90f8d7df145d6b97..0a06062e63f8f5cd3b2909a818cbd9ae11c2fe8c 100644 (file)
@@ -18,9 +18,9 @@ include "basic_2/rt_computation/lsubsx.ma".
 
 (* Main properties **********************************************************)
 
-theorem lsubsx_fix: ∀h,o,f,G,L1,L. G ⊢ L1 ⊆ⓧ[h, o, f] L →
-                    ∀L2. G ⊢ L ⊆ⓧ[h, o, f] L2 → L = L2.
-#h #o #f #G #L1 #L #H elim H -f -L1 -L
+theorem lsubsx_fix: ∀h,f,G,L1,L. G ⊢ L1 ⊆ⓧ[h, f] L →
+                    ∀L2. G ⊢ L ⊆ⓧ[h, f] L2 → L = L2.
+#h #f #G #L1 #L #H elim H -f -L1 -L
 [ #f #L2 #H
   >(lsubsx_inv_atom_sn … H) -L2 //
 | #f #I #K1 #K2 #_ #IH #L2 #H
@@ -32,7 +32,7 @@ theorem lsubsx_fix: ∀h,o,f,G,L1,L. G ⊢ L1 ⊆ⓧ[h, o, f] L →
 ]
 qed-.
 
-theorem lsubsx_trans: ∀h,o,f,G. Transitive … (lsubsx h o G f).
-#h #o #f #G #L1 #L #H1 #L2 #H2
+theorem lsubsx_trans: ∀h,f,G. Transitive … (lsubsx h G f).
+#h #f #G #L1 #L #H1 #L2 #H2
 <(lsubsx_fix … H1 … H2) -L2 //
 qed-.
index 52454a2accf4baddc35b3e0f9523b3da7c804e56..70ba811a931419615ac2ec7e1de8553255473449 100644 (file)
@@ -21,10 +21,11 @@ include "basic_2/rt_computation/lsubsx.ma".
 (* Properties with strongly normalizing referred local environments *********)
 
 (* Basic_2A1: uses: lsx_cpx_trans_lcosx *)
-lemma rdsx_cpx_trans_lsubsx (h) (o): ∀G,L0,T1,T2. ⦃G, L0⦄ ⊢ T1 ⬈[h] T2 →
-                                     ∀f,L. G ⊢ L0 ⊆ⓧ[h, o, f] L →
-                                     G ⊢ ⬈*[h, o, T1] 𝐒⦃L⦄ → G ⊢ ⬈*[h, o, T2] 𝐒⦃L⦄.
-#h #o #G #L0 #T1 #T2 #H @(cpx_ind … H) -G -L0 -T1 -T2 //
+lemma rdsx_cpx_trans_lsubsx (h):
+      ∀G,L0,T1,T2. ⦃G, L0⦄ ⊢ T1 ⬈[h] T2 →
+      ∀f,L. G ⊢ L0 ⊆ⓧ[h, f] L →
+      G ⊢ ⬈*[h, T1] 𝐒⦃L⦄ → G ⊢ ⬈*[h, T2] 𝐒⦃L⦄.
+#h #G #L0 #T1 #T2 #H @(cpx_ind … H) -G -L0 -T1 -T2 //
 [ #I0 #G #K0 #V1 #V2 #W2 #_ #IH #HVW2 #g #L #HK0 #HL
   elim (lsubsx_inv_pair_sn_gen … HK0) -HK0 *
   [ #f #K #HK0 #H1 #H2 destruct
@@ -61,13 +62,15 @@ qed-.
 (* Advanced properties of strongly normalizing referred local environments **)
 
 (* Basic_2A1: uses: lsx_cpx_trans_O *)
-lemma rdsx_cpx_trans (h) (o): ∀G,L,T1,T2. ⦃G, L⦄ ⊢ T1 ⬈[h] T2 →
-                              G ⊢ ⬈*[h, o, T1] 𝐒⦃L⦄ → G ⊢ ⬈*[h, o, T2] 𝐒⦃L⦄.
+lemma rdsx_cpx_trans (h):
+      ∀G,L,T1,T2. ⦃G, L⦄ ⊢ T1 ⬈[h] T2 →
+      G ⊢ ⬈*[h, T1] 𝐒⦃L⦄ → G ⊢ ⬈*[h, T2] 𝐒⦃L⦄.
 /3 width=6 by rdsx_cpx_trans_lsubsx, lsubsx_refl/ qed-.
 
-lemma rdsx_cpxs_trans (h) (o): ∀G,L,T1,T2. ⦃G, L⦄ ⊢ T1 ⬈*[h] T2 →
-                               G ⊢ ⬈*[h, o, T1] 𝐒⦃L⦄ → G ⊢ ⬈*[h, o, T2] 𝐒⦃L⦄.
-#h #o #G #L #T1 #T2 #H
+lemma rdsx_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 //
 /3 width=3 by rdsx_cpx_trans/
 qed-.
index 5b62dbae165abf621a7d683fc912990e32292c76..45dd9f908f53790885b1875855e417c3df7cc253 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/predtysnstrong_5.ma".
+include "basic_2/notation/relations/predtysnstrong_4.ma".
 include "static_2/static/rdeq.ma".
 include "basic_2/rt_transition/lpx.ma".
 
 (* STRONGLY NORMALIZING REFERRED LOCAL ENV.S FOR UNBOUND RT-TRANSITION ******)
 
-definition rdsx (h) (o) (G) (T): predicate lenv ≝
-                                 SN … (lpx h G) (rdeq h o T).
+definition rdsx (h) (G) (T): predicate lenv ≝
+                             SN … (lpx h G) (rdeq T).
 
 interpretation
    "strong normalization for unbound context-sensitive parallel rt-transition on referred entries (local environment)"
-   'PRedTySNStrong h o T G L = (rdsx h o G T L).
+   'PRedTySNStrong h T G L = (rdsx h G T L).
 
 (* Basic eliminators ********************************************************)
 
 (* Basic_2A1: uses: lsx_ind *)
-lemma rdsx_ind (h) (o) (G) (T):
+lemma rdsx_ind (h) (G) (T):
                ∀Q:predicate lenv.
-               (∀L1. G ⊢ ⬈*[h, o, T] 𝐒⦃L1⦄ →
-                     (∀L2. ⦃G, L1⦄ ⊢ ⬈[h] L2 → (L1 ≛[h, o, T] L2 → ⊥) → Q L2) →
+               (∀L1. G ⊢ ⬈*[h, T] 𝐒⦃L1⦄ →
+                     (∀L2. ⦃G, L1⦄ ⊢ ⬈[h] L2 → (L1 ≛[T] L2 → ⊥) → Q L2) →
                      Q L1
                ) →
-               ∀L. G ⊢ ⬈*[h, o, T] 𝐒⦃L⦄ →  Q L.
-#h #o #G #T #Q #H0 #L1 #H elim H -L1
+               ∀L. G ⊢ ⬈*[h, T] 𝐒⦃L⦄ →  Q L.
+#h #G #T #Q #H0 #L1 #H elim H -L1
 /5 width=1 by SN_intro/
 qed-.
 
 (* Basic properties *********************************************************)
 
 (* Basic_2A1: uses: lsx_intro *)
-lemma rdsx_intro (h) (o) (G) (T):
+lemma rdsx_intro (h) (G) (T):
                  ∀L1.
-                 (∀L2. ⦃G, L1⦄ ⊢ ⬈[h] L2 → (L1 ≛[h, o, T] L2 → ⊥) → G ⊢ ⬈*[h, o, T] 𝐒⦃L2⦄) →
-                 G ⊢ ⬈*[h, o, T] 𝐒⦃L1⦄.
+                 (∀L2. ⦃G, L1⦄ ⊢ ⬈[h] L2 → (L1 ≛[T] L2 → ⊥) → G ⊢ ⬈*[h, T] 𝐒⦃L2⦄) →
+                 G ⊢ ⬈*[h, 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 rdsx_fwd_pair_sn (h) (o) (G):
-                       ∀I,L,V,T. G ⊢ ⬈*[h, o, ②{I}V.T] 𝐒⦃L⦄ →
-                       G ⊢ ⬈*[h, o, V] 𝐒⦃L⦄.
-#h #o #G #I #L #V #T #H
+lemma rdsx_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
 @(rdsx_ind … H) -L #L1 #_ #IHL1
 @rdsx_intro #L2 #HL12 #HnL12
 /4 width=3 by rdeq_fwd_pair_sn/
 qed-.
 
 (* Basic_2A1: uses: lsx_fwd_flat_dx *)
-lemma rdsx_fwd_flat_dx (h) (o) (G):
-                       ∀I,L,V,T. G ⊢ ⬈*[h, o, ⓕ{I}V.T] 𝐒⦃L⦄ →
-                       G ⊢ ⬈*[h, o, T] 𝐒⦃L⦄.
-#h #o #G #I #L #V #T #H 
+lemma rdsx_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 
 @(rdsx_ind … H) -L #L1 #_ #IHL1
 @rdsx_intro #L2 #HL12 #HnL12
 /4 width=3 by rdeq_fwd_flat_dx/
 qed-.
 
-fact rdsx_fwd_pair_aux (h) (o) (G): ∀L. G ⊢ ⬈*[h, o, #0] 𝐒⦃L⦄ →
-                                    ∀I,K,V. L = K.ⓑ{I}V → G ⊢ ⬈*[h, o, V] 𝐒⦃K⦄.
-#h #o #G #L #H
+fact rdsx_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
 @(rdsx_ind … H) -L #L1 #_ #IH #I #K1 #V #H destruct
 /5 width=5 by lpx_pair, rdsx_intro, rdeq_fwd_zero_pair/
 qed-.
 
-lemma rdsx_fwd_pair (h) (o) (G):
-                    ∀I,K,V. G ⊢ ⬈*[h, o, #0] 𝐒⦃K.ⓑ{I}V⦄ → G ⊢ ⬈*[h, o, V] 𝐒⦃K⦄.
+lemma rdsx_fwd_pair (h) (G):
+                    ∀I,K,V. G ⊢ ⬈*[h, #0] 𝐒⦃K.ⓑ{I}V⦄ → G ⊢ ⬈*[h, V] 𝐒⦃K⦄.
 /2 width=4 by rdsx_fwd_pair_aux/ qed-.
 
 (* Basic inversion lemmas ***************************************************)
 
 (* Basic_2A1: uses: lsx_inv_flat *)
-lemma rdsx_inv_flat (h) (o) (G): ∀I,L,V,T. G ⊢ ⬈*[h, o, ⓕ{I}V.T] 𝐒⦃L⦄ →
-                                 ∧∧ G ⊢ ⬈*[h, o, V] 𝐒⦃L⦄ & G ⊢ ⬈*[h, o, T] 𝐒⦃L⦄.
+lemma rdsx_inv_flat (h) (G):
+      ∀I,L,V,T. G ⊢ ⬈*[h, ⓕ{I}V.T] 𝐒⦃L⦄ →
+      ∧∧ G ⊢ ⬈*[h, V] 𝐒⦃L⦄ & G ⊢ ⬈*[h, T] 𝐒⦃L⦄.
 /3 width=3 by rdsx_fwd_pair_sn, rdsx_fwd_flat_dx, conj/ qed-.
 
 (* Basic_2A1: removed theorems 9:
index 355ecb0047ee0ed834785d5d966e77b368d68bec..436c2b224e773585506878dce2200e3c5f85eb68 100644 (file)
@@ -21,16 +21,16 @@ include "basic_2/rt_computation/lsubsx_rdsx.ma".
 (* Advanced properties ******************************************************)
 
 (* Basic_2A1: uses: lsx_lref_be_lpxs *)
-lemma rdsx_pair_lpxs (h) (o) (G):
-                     ∀K1,V. ⦃G, K1⦄ ⊢ ⬈*[h, o] 𝐒⦃V⦄ →
-                     ∀K2. G ⊢ ⬈*[h, o, V] 𝐒⦃K2⦄ → ⦃G, K1⦄ ⊢ ⬈*[h] K2 →
-                     ∀I. G ⊢ ⬈*[h, o, #0] 𝐒⦃K2.ⓑ{I}V⦄.
-#h #o #G #K1 #V #H
+lemma rdsx_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
 @(csx_ind_cpxs … H) -V #V0 #_ #IHV0 #K2 #H
 @(rdsx_ind … H) -K2 #K0 #HK0 #IHK0 #HK10 #I
 @rdsx_intro #Y #HY #HnY
 elim (lpx_inv_pair_sn … HY) -HY #K2 #V2 #HK02 #HV02 #H destruct
-elim (tdeq_dec h o V0 V2) #HnV02 destruct [ -IHV0 -HV02 -HK0 | -IHK0 -HnY ]
+elim (tdeq_dec V0 V2) #HnV02 destruct [ -IHV0 -HV02 -HK0 | -IHK0 -HnY ]
 [ /5 width=5 by rdsx_rdeq_trans, lpxs_step_dx, rdeq_pair/
 | @(IHV0 … HnV02) -IHV0 -HnV02
   [ /2 width=3 by lpxs_cpx_trans/
@@ -41,10 +41,10 @@ elim (tdeq_dec h o V0 V2) #HnV02 destruct [ -IHV0 -HV02 -HK0 | -IHK0 -HnY ]
 qed.
 
 (* Basic_2A1: uses: lsx_lref_be *)
-lemma rdsx_lref_pair_drops (h) (o) (G):
-                           ∀K,V. ⦃G, K⦄ ⊢ ⬈*[h, o] 𝐒⦃V⦄ → G ⊢ ⬈*[h, o, V] 𝐒⦃K⦄ →
-                           ∀I,i,L. ⬇*[i] L ≘ K.ⓑ{I}V → G ⊢ ⬈*[h, o, #i] 𝐒⦃L⦄.
-#h #o #G #K #V #HV #HK #I #i elim i -i
+lemma rdsx_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
 [ #L #H >(drops_fwd_isid … H) -H /2 width=3 by rdsx_pair_lpxs/
 | #i #IH #L #H
   elim (drops_inv_bind2_isuni_next … H) -H // #J #Y #HY #H destruct
@@ -55,8 +55,8 @@ qed.
 (* Main properties **********************************************************)
 
 (* Basic_2A1: uses: csx_lsx *)
-theorem csx_rdsx (h) (o): ∀G,L,T. ⦃G, L⦄ ⊢ ⬈*[h, o] 𝐒⦃T⦄ → G ⊢ ⬈*[h, o, T] 𝐒⦃L⦄.
-#h #o #G #L #T @(fqup_wf_ind_eq (Ⓕ) … G L T) -G -L -T
+theorem csx_rdsx (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
 #Z #Y #X #IH #G #L * * //
 [ #i #HG #HL #HT #H destruct
   elim (csx_inv_lref … H) -H [ |*: * ]
index ed5e990539c90b5739bb7660372dd4cc30d9438b..a27c2a71d0822d20d325d01465f8baa07dc1bedc 100644 (file)
@@ -23,8 +23,8 @@ include "basic_2/rt_computation/rdsx_fqup.ma".
 
 (* Note: this uses length *)
 (* Basic_2A1: uses: lsx_lift_le lsx_lift_ge *)
-lemma rdsx_lifts (h) (o) (G): d_liftable1_isuni … (λL,T. G ⊢ ⬈*[h, o, T] 𝐒⦃L⦄).
-#h #o #G #K #T #H @(rdsx_ind … H) -K
+lemma rdsx_lifts (h) (G): d_liftable1_isuni … (λL,T. G ⊢ ⬈*[h, T] 𝐒⦃L⦄).
+#h #G #K #T #H @(rdsx_ind … H) -K
 #K1 #_ #IH #b #f #L1 #HLK1 #Hf #U #HTU @rdsx_intro
 #L2 #HL12 #HnL12 elim (lpx_drops_conf … HLK1 … HL12) 
 /5 width=9 by rdeq_lifts_bi, lpx_fwd_length/
@@ -33,8 +33,8 @@ qed-.
 (* Inversion lemmas on relocation *******************************************)
 
 (* Basic_2A1: uses: lsx_inv_lift_le lsx_inv_lift_be lsx_inv_lift_ge *)
-lemma rdsx_inv_lifts (h) (o) (G): d_deliftable1_isuni … (λL,T. G ⊢ ⬈*[h, o, T] 𝐒⦃L⦄).
-#h #o #G #L #U #H @(rdsx_ind … H) -L
+lemma rdsx_inv_lifts (h) (G): d_deliftable1_isuni … (λL,T. G ⊢ ⬈*[h, T] 𝐒⦃L⦄).
+#h #G #L #U #H @(rdsx_ind … H) -L
 #L1 #_ #IH #b #f #K1 #HLK1 #Hf #T #HTU @rdsx_intro
 #K2 #HK12 #HnK12 elim (drops_lpx_trans … HLK1 … HK12) -HK12
 /4 width=10 by rdeq_inv_lifts_bi/
@@ -43,24 +43,24 @@ qed-.
 (* Advanced properties ******************************************************)
 
 (* Basic_2A1: uses: lsx_lref_free *)
-lemma rdsx_lref_atom (h) (o) (G): ∀L,i. ⬇*[Ⓕ, 𝐔❴i❵] L ≘ ⋆ → G ⊢ ⬈*[h, o, #i] 𝐒⦃L⦄.
-#h #o #G #L1 #i #HL1
+lemma rdsx_lref_atom (h) (G): ∀L,i. ⬇*[Ⓕ, 𝐔❴i❵] L ≘ ⋆ → G ⊢ ⬈*[h, #i] 𝐒⦃L⦄.
+#h #G #L1 #i #HL1
 @(rdsx_lifts … (#0) … HL1) -HL1 //
 qed.
 
 (* Basic_2A1: uses: lsx_lref_skip *)
-lemma rdsx_lref_unit (h) (o) (G): ∀I,L,K,i. ⬇*[i] L ≘ K.ⓤ{I} → G ⊢ ⬈*[h, o, #i] 𝐒⦃L⦄.
-#h #o #G #I #L1 #K1 #i #HL1
+lemma rdsx_lref_unit (h) (G): ∀I,L,K,i. ⬇*[i] L ≘ K.ⓤ{I} → G ⊢ ⬈*[h, #i] 𝐒⦃L⦄.
+#h #G #I #L1 #K1 #i #HL1
 @(rdsx_lifts … (#0) … HL1) -HL1 //
 qed.
 
 (* Advanced forward lemmas **************************************************)
 
 (* Basic_2A1: uses: lsx_fwd_lref_be *)
-lemma rdsx_fwd_lref_pair (h) (o) (G):
-                         ∀L,i. G ⊢ ⬈*[h, o, #i] 𝐒⦃L⦄ →
-                         ∀I,K,V. ⬇*[i] L ≘ K.ⓑ{I}V → G ⊢ ⬈*[h, o, V] 𝐒⦃K⦄.
-#h #o #G #L #i #HL #I #K #V #HLK
+lemma rdsx_fwd_lref_pair (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
 lapply (rdsx_inv_lifts … HL … HLK … (#0) ?) -L
 /2 width=2 by rdsx_fwd_pair/
 qed-.
index 2913cb998f792b9dc0b0b10fcaf6ddafdf9d8468..7906406ebe0be82fefbb7d1e5bd0c2f14c02b2c9 100644 (file)
@@ -20,8 +20,8 @@ include "basic_2/rt_computation/rdsx.ma".
 (* Advanced properties ******************************************************)
 
 (* Basic_2A1: uses: lsx_atom *)
-lemma lfsx_atom (h) (o) (G) (T): G ⊢ ⬈*[h, o, T] 𝐒⦃⋆⦄.
-#h #o #G #T
+lemma lfsx_atom (h) (G) (T): G ⊢ ⬈*[h, T] 𝐒⦃⋆⦄.
+#h #G #T
 @rdsx_intro #Y #H #HnT
 lapply (lpx_inv_atom_sn … H) -H #H destruct
 elim HnT -HnT //
@@ -32,10 +32,10 @@ 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 rdsx_fwd_bind_dx (h) (o) (G):
-                       ∀p,I,L,V,T. G ⊢ ⬈*[h, o, ⓑ{p,I}V.T] 𝐒⦃L⦄ →
-                       G ⊢ ⬈*[h, o, T] 𝐒⦃L.ⓧ⦄.
-#h #o #G #p #I #L #V #T #H
+lemma rdsx_fwd_bind_dx (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
 @(rdsx_ind … H) -L #L1 #_ #IH
 @rdsx_intro #Y #H #HT
 elim (lpx_inv_unit_sn … H) -H #L2 #HL12 #H destruct
@@ -45,6 +45,7 @@ qed-.
 (* Advanced inversion lemmas ************************************************)
 
 (* Basic_2A1: uses: lsx_inv_bind *)
-lemma rdsx_inv_bind (h) (o) (G): ∀p,I,L,V,T. G ⊢ ⬈*[h, o, ⓑ{p,I}V.T] 𝐒⦃L⦄ →
-                                 ∧∧ G ⊢ ⬈*[h, o, V] 𝐒⦃L⦄ & G ⊢ ⬈*[h, o, T] 𝐒⦃L.ⓧ⦄.
+lemma rdsx_inv_bind (h) (G):
+      ∀p,I,L,V,T. G ⊢ ⬈*[h, ⓑ{p,I}V.T] 𝐒⦃L⦄ →
+      ∧∧ G ⊢ ⬈*[h, V] 𝐒⦃L⦄ & G ⊢ ⬈*[h, T] 𝐒⦃L.ⓧ⦄.
 /3 width=4 by rdsx_fwd_pair_sn, rdsx_fwd_bind_dx, conj/ qed-.
index 22451994bd725814da4b0e69bf07ff9e532fe3ca..7c3c5703b9cd60c5c14ae30cfc8ee970722c3966 100644 (file)
@@ -21,19 +21,19 @@ include "basic_2/rt_computation/rdsx.ma".
 (* Advanced properties ******************************************************)
 
 (* Basic_2A1: uses: lsx_sort *)
-lemma rdsx_sort (h) (o) (G): ∀L,s. G ⊢ ⬈*[h, o, ⋆s] 𝐒⦃L⦄.
-#h #o #G #L1 #s @rdsx_intro #L2 #H #Hs
+lemma rdsx_sort (h) (G): ∀L,s. G ⊢ ⬈*[h, ⋆s] 𝐒⦃L⦄.
+#h #G #L1 #s @rdsx_intro #L2 #H #Hs
 elim Hs -Hs /3 width=3 by lpx_fwd_length, rdeq_sort_length/
 qed.
 
 (* Basic_2A1: uses: lsx_gref *)
-lemma rdsx_gref (h) (o) (G): ∀L,l. G ⊢ ⬈*[h, o, §l] 𝐒⦃L⦄.
-#h #o #G #L1 #s @rdsx_intro #L2 #H #Hs
+lemma rdsx_gref (h) (G): ∀L,l. G ⊢ ⬈*[h, §l] 𝐒⦃L⦄.
+#h #G #L1 #s @rdsx_intro #L2 #H #Hs
 elim Hs -Hs /3 width=3 by lpx_fwd_length, rdeq_gref_length/
 qed.
 
-lemma rdsx_unit (h) (o) (G): ∀I,L. G ⊢ ⬈*[h, o, #0] 𝐒⦃L.ⓤ{I}⦄.
-#h #o #G #I #L1 @rdsx_intro
+lemma rdsx_unit (h) (G): ∀I,L. G ⊢ ⬈*[h, #0] 𝐒⦃L.ⓤ{I}⦄.
+#h #G #I #L1 @rdsx_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, rdeq_unit_length/
index 06649215c638c3237c828a5e906decd5a2ac7490..0368929ea76d87cdddb62f4a0832e98733353ccc 100644 (file)
@@ -21,35 +21,36 @@ include "basic_2/rt_computation/rdsx_rdsx.ma".
 (* Properties with unbound rt-computation for full local environments *******)
 
 (* Basic_2A1: uses: lsx_intro_alt *)
-lemma rdsx_intro_lpxs (h) (o) (G):
-                      ∀L1,T. (∀L2. ⦃G, L1⦄ ⊢ ⬈*[h] L2 → (L1 ≛[h, o, T] L2 → ⊥) → G ⊢ ⬈*[h, o, T] 𝐒⦃L2⦄) →
-                      G ⊢ ⬈*[h, o, T] 𝐒⦃L1⦄.
+lemma rdsx_intro_lpxs (h) (G):
+                      ∀L1,T. (∀L2. ⦃G, L1⦄ ⊢ ⬈*[h] L2 → (L1 ≛[T] L2 → ⊥) → G ⊢ ⬈*[h, T] 𝐒⦃L2⦄) →
+                      G ⊢ ⬈*[h, T] 𝐒⦃L1⦄.
 /4 width=1 by lpx_lpxs, rdsx_intro/ qed-.
 
 (* Basic_2A1: uses: lsx_lpxs_trans *)
-lemma rdsx_lpxs_trans (h) (o) (G): ∀L1,T. G ⊢ ⬈*[h, o, T] 𝐒⦃L1⦄ →
-                                   ∀L2. ⦃G, L1⦄ ⊢ ⬈*[h] L2 → G ⊢ ⬈*[h, o, T] 𝐒⦃L2⦄.
-#h #o #G #L1 #T #HL1 #L2 #H @(lpxs_ind_dx … H) -L2
+lemma rdsx_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
 /2 width=3 by rdsx_lpx_trans/
 qed-.
 
 (* Eliminators with unbound rt-computation for full local environments ******)
 
-lemma rdsx_ind_lpxs_rdeq (h) (o) (G):
+lemma rdsx_ind_lpxs_rdeq (h) (G):
                          ∀T. ∀Q:predicate lenv.
-                         (∀L1. G ⊢ ⬈*[h, o, T] 𝐒⦃L1⦄ →
-                               (∀L2. ⦃G, L1⦄ ⊢ ⬈*[h] L2 → (L1 ≛[h, o, T] L2 → ⊥) → Q L2) →
+                         (∀L1. G ⊢ ⬈*[h, T] 𝐒⦃L1⦄ →
+                               (∀L2. ⦃G, L1⦄ ⊢ ⬈*[h] L2 → (L1 ≛[T] L2 → ⊥) → Q L2) →
                                Q L1
                          ) →
-                         ∀L1. G ⊢ ⬈*[h, o, T] 𝐒⦃L1⦄  →
-                         ∀L0. ⦃G, L1⦄ ⊢ ⬈*[h] L0 → ∀L2. L0 ≛[h, o, T] L2 → Q L2.
-#h #o #G #T #Q #IH #L1 #H @(rdsx_ind … H) -L1
+                         ∀L1. G ⊢ ⬈*[h, T] 𝐒⦃L1⦄  →
+                         ∀L0. ⦃G, L1⦄ ⊢ ⬈*[h] L0 → ∀L2. L0 ≛[T] L2 → Q L2.
+#h #G #T #Q #IH #L1 #H @(rdsx_ind … H) -L1
 #L1 #HL1 #IH1 #L0 #HL10 #L2 #HL02
 @IH -IH /3 width=3 by rdsx_lpxs_trans, rdsx_rdeq_trans/ -HL1 #K2 #HLK2 #HnLK2
 lapply (rdeq_rdneq_trans … HL02 … HnLK2) -HnLK2 #H
 elim (rdeq_lpxs_trans … HLK2 … HL02) -L2 #K0 #HLK0 #HK02
 lapply (rdneq_rdeq_canc_dx … H … HK02) -H #HnLK0
-elim (rdeq_dec h o L1 L0 T) #H
+elim (rdeq_dec L1 L0 T) #H
 [ lapply (rdeq_rdneq_trans … H … HnLK0) -H -HnLK0 #Hn10
   lapply (lpxs_trans … HL10 … HLK0) -L0 #H10
   elim (lpxs_rdneq_inv_step_sn … H10 …  Hn10) -H10 -Hn10
@@ -61,31 +62,31 @@ elim (rdeq_dec h o L1 L0 T) #H
 qed-.
 
 (* Basic_2A1: uses: lsx_ind_alt *)
-lemma rdsx_ind_lpxs (h) (o) (G):
+lemma rdsx_ind_lpxs (h) (G):
                     ∀T. ∀Q:predicate lenv.
-                    (∀L1. G ⊢ ⬈*[h, o, T] 𝐒⦃L1⦄ →
-                          (∀L2. ⦃G, L1⦄ ⊢ ⬈*[h] L2 → (L1 ≛[h, o, T] L2 → ⊥) → Q L2) →
+                    (∀L1. G ⊢ ⬈*[h, T] 𝐒⦃L1⦄ →
+                          (∀L2. ⦃G, L1⦄ ⊢ ⬈*[h] L2 → (L1 ≛[T] L2 → ⊥) → Q L2) →
                           Q L1
                     ) →
-                    ∀L. G ⊢ ⬈*[h, o, T] 𝐒⦃L⦄  → Q L.
-#h #o #G #T #Q #IH #L #HL
+                    ∀L. G ⊢ ⬈*[h, T] 𝐒⦃L⦄  → Q L.
+#h #G #T #Q #IH #L #HL
 @(rdsx_ind_lpxs_rdeq … IH … HL) -IH -HL // (**) (* full auto fails *)
 qed-.
 
 (* Advanced properties ******************************************************)
 
-fact rdsx_bind_lpxs_aux (h) (o) (G):
-                        ∀p,I,L1,V. G ⊢ ⬈*[h, o, V] 𝐒⦃L1⦄ →
-                        ∀Y,T. G ⊢ ⬈*[h, o, T] 𝐒⦃Y⦄ →
+fact rdsx_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, o, ⓑ{p,I}V.T] 𝐒⦃L2⦄.
-#h #o #G #p #I #L1 #V #H @(rdsx_ind_lpxs … H) -L1
+                        G ⊢ ⬈*[h, ⓑ{p,I}V.T] 𝐒⦃L2⦄.
+#h #G #p #I #L1 #V #H @(rdsx_ind_lpxs … H) -L1
 #L1 #_ #IHL1 #Y #T #H @(rdsx_ind_lpxs … H) -Y
 #Y #HY #IHY #L2 #H #HL12 destruct
 @rdsx_intro_lpxs #L0 #HL20
 lapply (lpxs_trans … HL12 … HL20) #HL10 #H
 elim (rdneq_inv_bind … H) -H [ -IHY | -HY -IHL1 -HL12 ]
-[ #HnV elim (rdeq_dec h o L1 L2 V)
+[ #HnV elim (rdeq_dec L1 L2 V)
   [ #HV @(IHL1 … HL10) -IHL1 -HL12 -HL10
     /3 width=4 by rdsx_lpxs_trans, lpxs_bind_refl_dx, rdeq_canc_sn/ (**) (* full auto too slow *)
   | -HnV -HL10 /4 width=4 by rdsx_lpxs_trans, lpxs_bind_refl_dx/
@@ -95,23 +96,23 @@ elim (rdneq_inv_bind … H) -H [ -IHY | -HY -IHL1 -HL12 ]
 qed-.
 
 (* Basic_2A1: uses: lsx_bind *)
-lemma rdsx_bind (h) (o) (G):
-                ∀p,I,L,V. G ⊢ ⬈*[h, o, V] 𝐒⦃L⦄ →
-                ∀T. G ⊢ ⬈*[h, o, T] 𝐒⦃L.ⓑ{I}V⦄ →
-                G ⊢ ⬈*[h, o, ⓑ{p,I}V.T] 𝐒⦃L⦄.
+lemma rdsx_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⦄.
 /2 width=3 by rdsx_bind_lpxs_aux/ qed.
 
 (* Basic_2A1: uses: lsx_flat_lpxs *)
-lemma rdsx_flat_lpxs (h) (o) (G):
-                     ∀I,L1,V. G ⊢ ⬈*[h, o, V] 𝐒⦃L1⦄ →
-                     ∀L2,T. G ⊢ ⬈*[h, o, T] 𝐒⦃L2⦄ → ⦃G, L1⦄ ⊢ ⬈*[h] L2 →
-                     G ⊢ ⬈*[h, o, ⓕ{I}V.T] 𝐒⦃L2⦄.
-#h #o #G #I #L1 #V #H @(rdsx_ind_lpxs … H) -L1
+lemma rdsx_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 @(rdsx_ind_lpxs … H) -L1
 #L1 #HL1 #IHL1 #L2 #T #H @(rdsx_ind_lpxs … H) -L2
 #L2 #HL2 #IHL2 #HL12 @rdsx_intro_lpxs
 #L0 #HL20 lapply (lpxs_trans … HL12 … HL20)
 #HL10 #H elim (rdneq_inv_flat … H) -H [ -HL1 -IHL2 | -HL2 -IHL1 ]
-[ #HnV elim (rdeq_dec h o L1 L2 V)
+[ #HnV elim (rdeq_dec L1 L2 V)
   [ #HV @(IHL1 … HL10) -IHL1 -HL12 -HL10
     /3 width=5 by rdsx_lpxs_trans, rdeq_canc_sn/ (**) (* full auto too slow: 47s *)
   | -HnV -HL10 /3 width=4 by rdsx_lpxs_trans/
@@ -121,23 +122,23 @@ lemma rdsx_flat_lpxs (h) (o) (G):
 qed-.
 
 (* Basic_2A1: uses: lsx_flat *)
-lemma rdsx_flat (h) (o) (G):
-                ∀I,L,V. G ⊢ ⬈*[h, o, V] 𝐒⦃L⦄ →
-                ∀T. G ⊢ ⬈*[h, o, T] 𝐒⦃L⦄ → G ⊢ ⬈*[h, o, ⓕ{I}V.T] 𝐒⦃L⦄.
+lemma rdsx_flat (h) (G):
+                ∀I,L,V. G ⊢ ⬈*[h, V] 𝐒⦃L⦄ →
+                ∀T. G ⊢ ⬈*[h, T] 𝐒⦃L⦄ → G ⊢ ⬈*[h, ⓕ{I}V.T] 𝐒⦃L⦄.
 /2 width=3 by rdsx_flat_lpxs/ qed.
 
-fact rdsx_bind_lpxs_void_aux (h) (o) (G):
-                             ∀p,I,L1,V. G ⊢ ⬈*[h, o, V] 𝐒⦃L1⦄ →
-                             ∀Y,T. G ⊢ ⬈*[h, o, T] 𝐒⦃Y⦄ →
+fact rdsx_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, o, ⓑ{p,I}V.T] 𝐒⦃L2⦄.
-#h #o #G #p #I #L1 #V #H @(rdsx_ind_lpxs … H) -L1
+                             G ⊢ ⬈*[h, ⓑ{p,I}V.T] 𝐒⦃L2⦄.
+#h #G #p #I #L1 #V #H @(rdsx_ind_lpxs … H) -L1
 #L1 #_ #IHL1 #Y #T #H @(rdsx_ind_lpxs … H) -Y
 #Y #HY #IHY #L2 #H #HL12 destruct
 @rdsx_intro_lpxs #L0 #HL20
 lapply (lpxs_trans … HL12 … HL20) #HL10 #H
 elim (rdneq_inv_bind_void … H) -H [ -IHY | -HY -IHL1 -HL12 ]
-[ #HnV elim (rdeq_dec h o L1 L2 V)
+[ #HnV elim (rdeq_dec L1 L2 V)
   [ #HV @(IHL1 … HL10) -IHL1 -HL12 -HL10
     /3 width=6 by rdsx_lpxs_trans, lpxs_bind_refl_dx, rdeq_canc_sn/ (**) (* full auto too slow *)
   | -HnV -HL10 /4 width=4 by rdsx_lpxs_trans, lpxs_bind_refl_dx/
@@ -146,8 +147,8 @@ elim (rdneq_inv_bind_void … H) -H [ -IHY | -HY -IHL1 -HL12 ]
 ]
 qed-.
 
-lemma rdsx_bind_void (h) (o) (G):
-                     ∀p,I,L,V. G ⊢ ⬈*[h, o, V] 𝐒⦃L⦄ →
-                     ∀T. G ⊢ ⬈*[h, o, T] 𝐒⦃L.ⓧ⦄ →
-                     G ⊢ ⬈*[h, o, ⓑ{p,I}V.T] 𝐒⦃L⦄.
+lemma rdsx_bind_void (h) (G):
+                     ∀p,I,L,V. G ⊢ ⬈*[h, V] 𝐒⦃L⦄ →
+                     ∀T. G ⊢ ⬈*[h, T] 𝐒⦃L.ⓧ⦄ →
+                     G ⊢ ⬈*[h, ⓑ{p,I}V.T] 𝐒⦃L⦄.
 /2 width=3 by rdsx_bind_lpxs_void_aux/ qed.
index 2305aac191a7af8638f89bdda335ce7daa8c41ec..8066dad4bf432337bc6a6d3d10b9c740436ab1ba 100644 (file)
@@ -20,19 +20,19 @@ include "basic_2/rt_computation/rdsx.ma".
 (* Advanced properties ******************************************************)
 
 (* Basic_2A1: uses: lsx_lleq_trans *)
-lemma rdsx_rdeq_trans (h) (o) (G):
-                      ∀L1,T. G ⊢ ⬈*[h, o, T] 𝐒⦃L1⦄ →
-                      ∀L2. L1 ≛[h, o, T] L2 → G ⊢ ⬈*[h, o, T] 𝐒⦃L2⦄.
-#h #o #G #L1 #T #H @(rdsx_ind … H) -L1
+lemma rdsx_rdeq_trans (h) (G):
+                      ∀L1,T. G ⊢ ⬈*[h, T] 𝐒⦃L1⦄ →
+                      ∀L2. L1 ≛[T] L2 → G ⊢ ⬈*[h, T] 𝐒⦃L2⦄.
+#h #G #L1 #T #H @(rdsx_ind … H) -L1
 #L1 #_ #IHL1 #L2 #HL12 @rdsx_intro
 #L #HL2 #HnL2 elim (rdeq_lpx_trans … HL2 … HL12) -HL2
 /4 width=5 by rdeq_repl/
 qed-.
 
 (* Basic_2A1: uses: lsx_lpx_trans *)
-lemma rdsx_lpx_trans (h) (o) (G):
-                     ∀L1,T. G ⊢ ⬈*[h, o, T] 𝐒⦃L1⦄ →
-                     ∀L2. ⦃G, L1⦄ ⊢ ⬈[h] L2 → G ⊢ ⬈*[h, o, T] 𝐒⦃L2⦄.
-#h #o #G #L1 #T #H @(rdsx_ind … H) -L1 #L1 #HL1 #IHL1 #L2 #HL12
-elim (rdeq_dec h o L1 L2 T) /3 width=4 by rdsx_rdeq_trans/
+lemma rdsx_lpx_trans (h) (G):
+                     ∀L1,T. G ⊢ ⬈*[h, T] 𝐒⦃L1⦄ →
+                     ∀L2. ⦃G, L1⦄ ⊢ ⬈[h] L2 → G ⊢ ⬈*[h, T] 𝐒⦃L2⦄.
+#h #G #L1 #T #H @(rdsx_ind … H) -L1 #L1 #HL1 #IHL1 #L2 #HL12
+elim (rdeq_dec L1 L2 T) /3 width=4 by rdsx_rdeq_trans/
 qed-.
index cc2397d0f8dbf569165da561cac9bd99fc340cb1..6607013df43ccf24e2f81298b5e7a1ff3237c128 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/predtynormal_5.ma".
+include "basic_2/notation/relations/predtynormal_4.ma".
 include "static_2/syntax/tdeq.ma".
 include "basic_2/rt_transition/cpx.ma".
 
 (* NORMAL TERMS FOR UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION ********)
 
-definition cnx: ∀h. sd h → relation3 genv lenv term ≝
-                λh,o,G,L. NF … (cpx h G L) (tdeq h o …).
+definition cnx: ∀h. relation3 genv lenv term ≝
+                λh,G,L. NF … (cpx h G L) tdeq.
 
 interpretation
    "normality for unbound context-sensitive parallel rt-transition (term)"
-   'PRedTyNormal h o G L T = (cnx h o G L T).
+   'PRedTyNormal h G L T = (cnx h G L T).
 
 (* Basic inversion lemmas ***************************************************)
 
-lemma cnx_inv_sort: ∀h,o,G,L,s. ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃⋆s⦄ → deg h o s 0.
-#h #o #G #L #s #H
-lapply (H (⋆(next h s)) ?) -H /2 width=2 by cpx_ess/ -G -L #H
-elim (tdeq_inv_sort1 … H) -H #s0 #d #H1 #H2 #H destruct
-lapply (deg_next … H1) #H0
-lapply (deg_mono … H0 … H2) -H0 -H2 #H
->(pred_inv_fix_sn … H) -H //
-qed-.
-
-lemma cnx_inv_abst: ∀h,o,p,G,L,V,T. ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃ⓛ{p}V.T⦄ →
-                    ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃V⦄ ∧ ⦃G, L.ⓛV⦄ ⊢ ⬈[h, o] 𝐍⦃T⦄.
-#h #o #p #G #L #V1 #T1 #HVT1 @conj
+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
 [ #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
 ]
@@ -46,9 +37,9 @@ lemma cnx_inv_abst: ∀h,o,p,G,L,V,T. ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃ⓛ{p}V.T
 qed-.
 
 (* Basic_2A1: was: cnx_inv_abbr *)
-lemma cnx_inv_abbr_neg: ∀h,o,G,L,V,T. ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃-ⓓV.T⦄ →
-                        ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃V⦄ ∧ ⦃G, L.ⓓV⦄ ⊢ ⬈[h, o] 𝐍⦃T⦄.
-#h #o #G #L #V1 #T1 #HVT1 @conj
+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
 [ #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
 ]
@@ -56,26 +47,21 @@ lemma cnx_inv_abbr_neg: ∀h,o,G,L,V,T. ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃-ⓓV.T
 qed-.
 
 (* Basic_2A1: was: cnx_inv_eps *)
-lemma cnx_inv_cast: ∀h,o,G,L,V,T. ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃ⓝV.T⦄ → ⊥.
-#h #o #G #L #V #T #H lapply (H T ?) -H
+lemma cnx_inv_cast: ∀h,G,L,V,T. ⦃G, L⦄ ⊢ ⬈[h] 𝐍⦃ⓝV.T⦄ → ⊥.
+#h #G #L #V #T #H lapply (H T ?) -H
 /2 width=6 by cpx_eps, tdeq_inv_pair_xy_y/
 qed-.
 
 (* Basic properties *********************************************************)
 
-lemma cnx_sort: ∀h,o,G,L,s. deg h o s 0 → ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃⋆s⦄.
-#h #o #G #L #s #Hs #X #H elim (cpx_inv_sort1 … H) -H
-/3 width=3 by tdeq_sort, deg_next/
-qed.
-
-lemma cnx_sort_iter: ∀h,o,G,L,s,d. deg h o s d → ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃⋆((next h)^d s)⦄.
-#h #o #G #L #s #d #Hs lapply (deg_iter … d Hs) -Hs
-<minus_n_n /2 width=6 by cnx_sort/
+lemma cnx_sort: ∀h,G,L,s. ⦃G, L⦄ ⊢ ⬈[h] 𝐍⦃⋆s⦄.
+#h #G #L #s #X #H elim (cpx_inv_sort1 … H) -H
+/2 width=1 by tdeq_sort/
 qed.
 
-lemma cnx_abst: ∀h,o,p,G,L,W,T. ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃W⦄ → ⦃G, L.ⓛW⦄ ⊢ ⬈[h, o] 𝐍⦃T⦄ →
-                ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃ⓛ{p}W.T⦄.
-#h #o #p #G #L #W #T #HW #HT #X #H
+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
 elim (cpx_inv_abst1 … H) -H #W0 #T0 #HW0 #HT0 #H destruct
 @tdeq_pair [ @HW | @HT ] // (**) (* auto fails because δ-expansion gets in the way *)
 qed.
index 326de686ebe5aa7e9ad960aebf71f453e2028bb6..6f7976b64e2ec96fc4f0397d147f3c49d6c7bb80 100644 (file)
@@ -20,10 +20,10 @@ include "basic_2/rt_transition/cnx.ma".
 
 (* Advanced inversion lemmas ************************************************)
 
-lemma cnx_inv_abbr_pos (h) (o) (G) (L): ∀V,T.  ⦃G,L⦄ ⊢ ⬈[h,o] 𝐍⦃+ⓓV.T⦄ → ⊥.
-#h #o #G #L #V #U1 #H
+lemma cnx_inv_abbr_pos (h) (G) (L): ∀V,T.  ⦃G,L⦄ ⊢ ⬈[h] 𝐍⦃+ⓓV.T⦄ → ⊥.
+#h #G #L #V #U1 #H
 elim (cpx_subst h G (L.ⓓV) U1 … 0) [|*: /2 width=4 by drops_refl/ ] #U2 #T2 #HU12 #HTU2
-elim (tdeq_dec h o U1 U2) #HnU12 [ -HU12 | -HTU2 ]
+elim (tdeq_dec U1 U2) #HnU12 [ -HU12 | -HTU2 ]
 [ elim (tdeq_inv_lifts_dx … HnU12 … HTU2) -U2 #T1 #HTU1 #_ -T2
   lapply (H T1 ?) -H [ /2 width=3 by cpx_zeta/ ] #H
   /2 width=9 by tdeq_lifts_inv_pair_sn/
index 1cd716e8eed08dc94c7a6d9eff907959b805e776..08cf65476fde90f8fc5293552066d38a26fec2ea 100644 (file)
@@ -19,9 +19,9 @@ include "basic_2/rt_transition/cnx.ma".
 
 (* Advanced properties ******************************************************)
 
-lemma cnx_tdeq_trans: ∀h,o,G,L,T1. ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃T1⦄ →
-                      ∀T2. T1 ≛[h, o] T2 → ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃T2⦄.
-#h #o #G #L #T1 #HT1 #T2 #HT12 #T #HT2
+lemma cnx_tdeq_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
 elim (tdeq_cpx_trans … HT12 … HT2) -HT2 #T0 #HT10 #HT0
 lapply (HT1 … HT10) -HT1 -HT10 /2 width=5 by tdeq_repl/ (**) (* full auto fails *)
 qed-.
index 2e593f991b8040673256f39b789216ecec5174ee..3b396d94e73285af53cc0e19f2dc1accac389d4d 100644 (file)
@@ -20,19 +20,19 @@ include "basic_2/rt_transition/cnx.ma".
 
 (* Properties with generic slicing ******************************************)
 
-lemma cnx_lref_atom: ∀h,o,G,L,i. ⬇*[i] L ≘ ⋆ → ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃#i⦄.
-#h #o #G #L #i #Hi #X #H elim (cpx_inv_lref1_drops … H) -H // *
+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 // *
 #I #K #V1 #V2 #HLK lapply (drops_mono … Hi … HLK) -L #H destruct
 qed.
 
-lemma cnx_lref_unit: ∀h,o,I,G,L,K,i. ⬇*[i] L ≘ K.ⓤ{I} → ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃#i⦄.
-#h #o #I #G #L #K #i #HLK #X #H elim (cpx_inv_lref1_drops … H) -H // *
+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 // *
 #Z #Y #V1 #V2 #HLY lapply (drops_mono … HLK … HLY) -L #H destruct
 qed.
 
 (* Basic_2A1: includes: cnx_lift *)
-lemma cnx_lifts: ∀h,o,G. d_liftable1 … (cnx h o G).
-#h #o #G #K #T #HT #b #f #L #HLK #U #HTU #U0 #H
+lemma cnx_lifts: ∀h,G. d_liftable1 … (cnx h G).
+#h #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 tdeq_lifts_bi/
 qed-.
@@ -40,8 +40,8 @@ qed-.
 (* Inversion lemmas with generic slicing ************************************)
 
 (* Basic_2A1: was: cnx_inv_delta *)
-lemma cnx_inv_lref_pair: ∀h,o,I,G,L,K,V,i. ⬇*[i] L ≘ K.ⓑ{I}V → ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃#i⦄ → ⊥.
-#h #o #I #G #L #K #V #i #HLK #H
+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
 elim (lifts_total V (𝐔❴↑i❵)) #W #HVW
 lapply (H W ?) -H /2 width=7 by cpx_delta_drops/ -HLK
 #H lapply (tdeq_inv_lref1 … H) -H #H destruct
@@ -49,8 +49,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,o,G. d_deliftable1 … (cnx h o G).
-#h #o #G #L #U #HU #b #f #K #HLK #T #HTU #T0 #H
+lemma cnx_inv_lifts: ∀h,G. d_deliftable1 … (cnx h G).
+#h #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 tdeq_inv_lifts_bi/
 qed-.
index 640e24d372274b829e76517cde123c6e7f8a3f32..e08892002eb748102c0b0e001b743d6c1b0fe88c 100644 (file)
@@ -19,9 +19,9 @@ include "basic_2/rt_transition/cnx.ma".
 
 (* Inversion lemmas with simple terms ***************************************)
 
-lemma cnx_inv_appl: ∀h,o,G,L,V,T. ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃ⓐV.T⦄ →
-                    ∧∧ ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃V⦄ & ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃T⦄ & 𝐒⦃T⦄.
-#h #o #G #L #V1 #T1 #HVT1 @and3_intro
+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
 [ #V2 #HV2 lapply (HVT1 (ⓐV2.T1) ?) -HVT1 /2 width=1 by cpx_pair_sn/ -HV2
   #H elim (tdeq_inv_pair … H) -H //
 | #T2 #HT2 lapply (HVT1 (ⓐV1.T2) ?) -HVT1 /2 width=1 by cpx_flat/ -HT2
@@ -39,9 +39,9 @@ qed-.
 
 (* Properties with simple terms *********************************************)
 
-lemma cnx_appl_simple: ∀h,o,G,L,V,T. ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃V⦄ → ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃T⦄ → 𝐒⦃T⦄ →
-                       ⦃G, L⦄ ⊢ ⬈[h, o] 𝐍⦃ⓐV.T⦄.
-#h #o #G #L #V #T #HV #HT #HS #X #H elim (cpx_inv_appl1_simple … H) -H //
+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 //
 #V0 #T0 #HV0 #HT0 #H destruct
 @tdeq_pair [ @HV | @HT ] // (**) (* auto fails because δ-expansion gets in the way *)
 qed.
index ed7d341d434d72b9b49e48688ee7c2af8cef1aba..b99c4309c47dcfb56448a9df3e727f69110c1112 100644 (file)
@@ -17,32 +17,28 @@ include "basic_2/rt_transition/cpm_drops.ma".
 
 (* T-BOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
 
-(* Inversion lemmas with degree-based equivalence for terms *****************)
+(* Inversion lemmas with sort-irrelevant equivalence for terms **************)
 
-lemma cpm_tdeq_inv_lref_sn (n) (h) (o) (G) (L) (i):
-                           ∀X.  ⦃G,L⦄ ⊢ #i ➡[n,h] X → #i ≛[h,o] X →
+lemma cpm_tdeq_inv_lref_sn (n) (h) (G) (L) (i):
+                           ∀X.  ⦃G,L⦄ ⊢ #i ➡[n,h] X → #i ≛ X →
                            ∧∧ X = #i & n = 0.
-#n #h #o #G #L #i #X #H1 #H2
+#n #h #G #L #i #X #H1 #H2
 lapply (tdeq_inv_lref1 … H2) -H2 #H destruct
 elim (cpm_inv_lref1_drops … H1) -H1 // * [| #m ]
 #K #V1 #V2 #_ #_ #H -V1
 elim (lifts_inv_lref2_uni_lt … H) -H //
 qed-.
 
-lemma cpm_tdeq_inv_atom_sn (n) (h) (o) (I) (G) (L):
-                           ∀X. ⦃G,L⦄ ⊢ ⓪{I} ➡[n,h] X → ⓪{I} ≛[h,o] X →
+lemma cpm_tdeq_inv_atom_sn (n) (h) (I) (G) (L):
+                           ∀X. ⦃G,L⦄ ⊢ ⓪{I} ➡[n,h] X → ⓪{I} ≛ X →
                            ∨∨ ∧∧ X = ⓪{I} & n = 0
-                            | ∃∃s. X = ⋆(next h s) & I = Sort s & n = 1 & deg h o s 0.
-#n #h #o * #s #G #L #X #H1 #H2
+                            | ∃∃s. X = ⋆(next h s) & I = Sort s & n = 1.
+#n #h * #s #G #L #X #H1 #H2
 [ elim (cpm_inv_sort1 … H1) -H1
-  cases n -n [| #n ] #H #Hn destruct
+  cases n -n [| #n ] #H #Hn destruct -H2
   [ /3 width=1 by or_introl, conj/
-  | elim (tdeq_inv_sort1 … H2) -H2 #x #d #Hs
-    <(le_n_O_to_eq n) [| /2 width=3 by le_S_S_to_le/ ] -n #Hx #H destruct
-    lapply (deg_next … Hs) #H
-    lapply (deg_mono … H Hx) -H -Hx #Hd
-    lapply (pred_inv_fix_sn … Hd) -Hd #H destruct
-    /3 width=4 by refl, ex4_intro, or_intror/
+  | <(le_n_O_to_eq n) [| /2 width=3 by le_S_S_to_le/ ] -n
+    /3 width=3 by ex3_intro, or_intror/
   ]
 | elim (cpm_tdeq_inv_lref_sn … H1 H2) -H1 -H2 /3 width=1 by or_introl, conj/
 | elim (cpm_inv_gref1 … H1) -H1 -H2 /3 width=1 by or_introl, conj/
index f4a899d0d661ac62e7fc8e92c9603b784e126b2f..cca5dac392d1d1225e54b7240bde93b06e6971b5 100644 (file)
@@ -17,13 +17,13 @@ include "basic_2/rt_transition/cpr_drops_basic.ma".
 
 (* CONTEXT-SENSITIVE PARALLEL R-TRANSITION FOR TERMS ************************)
 
-(* Properties with context-free degree-based equivalence ********************)
+(* Properties with context-free sort-irrelevant equivalence *****************)
 
-lemma cpr_abbr_pos (h) (o) (G) (L) (V) (T1):
-                   ∃∃T2. ⦃G,L⦄ ⊢ +ⓓV.T1 ➡[h] T2 & (+ⓓV.T1 ≛[h, o] T2 → ⊥).
-#h #o #G #L #V #U1
+lemma cpr_abbr_pos (h) (G) (L) (V) (T1):
+                   ∃∃T2. ⦃G,L⦄ ⊢ +ⓓV.T1 ➡[h] T2 & (+ⓓV.T1 ≛ T2 → ⊥).
+#h #G #L #V #U1
 elim (cpr_subst h G (L.ⓓV) U1 … 0) [|*: /2 width=4 by drops_refl/ ] #U2 #T2 #HU12 #HTU2
-elim (tdeq_dec h o U1 U2) [ -HU12 #HU12 | -HTU2 #HnU12 ]
+elim (tdeq_dec U1 U2) [ -HU12 #HU12 | -HTU2 #HnU12 ]
 [ elim (tdeq_inv_lifts_dx … HU12 … HTU2) -U2 #T1 #HTU1 #_ -T2
   /3 width=9 by cpm_zeta, tdeq_lifts_inv_pair_sn, ex2_intro/
 | @(ex2_intro … (+ⓓV.U2)) [ /2 width=1 by cpm_bind/ ] -HU12 #H
index 5124d8684d1fd04bb60b3be4072b6671a351c60c..5a00dc6786c0ab997573e6f4c7a997f800d5bf50 100644 (file)
@@ -18,12 +18,12 @@ include "basic_2/rt_transition/rpx_rdeq.ma".
 
 (* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
 
-(* Properties with degree-based equivalence for closures ********************)
+(* Properties with sort-irrelevant equivalence for closures *****************)
 
-lemma fdeq_cpx_trans: ∀h,o,G1,G2,L1,L2,T1,T. ⦃G1, L1, T1⦄ ≛[h, o] ⦃G2, L2, T⦄ →
+lemma fdeq_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⦄ ≛[h, o] ⦃G2, L2, T2⦄.
-#h #o #G1 #G2 #L1 #L2 #T1 #T #H #T2 #HT2
+                      ∃∃T0. ⦃G1, L1⦄ ⊢ T1 ⬈[h] T0 & ⦃G1, L1, T0⦄ ≛ ⦃G2, L2, T2⦄.
+#h #G1 #G2 #L1 #L2 #T1 #T #H #T2 #HT2
 elim (fdeq_inv_gen_dx … H) -H #H #HL12 #HT1 destruct
 elim (rdeq_cpx_trans … HL12 … HT2) #T0 #HT0 #HT02
 lapply (cpx_rdeq_conf_dx … HT2 … HL12) -HL12 #HL12
index c500be141fa322b2d6d0a1b12e6c1eb89a2d6af0..0afb76e7f290e09f1162e3f59e030c15f5e6b74f 100644 (file)
@@ -66,10 +66,10 @@ lemma fqus_cpx_trans: ∀h,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐*[b] ⦃G2,
 ]
 qed-.
 
-lemma fqu_cpx_trans_tdneq: ∀h,o,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐[b] ⦃G2, L2, T2⦄ →
-                           ∀U2. ⦃G2, L2⦄ ⊢ T2 ⬈[h] U2 → (T2 ≛[h, o] U2 → ⊥) →
-                           ∃∃U1. ⦃G1, L1⦄ ⊢ T1 ⬈[h] U1 & T1 ≛[h, o] U1 → ⊥ & ⦃G1, L1, U1⦄ ⊐[b] ⦃G2, L2, U2⦄.
-#h #o #b #G1 #G2 #L1 #L2 #T1 #T2 #H elim H -G1 -G2 -L1 -L2 -T1 -T2
+lemma fqu_cpx_trans_tdneq: ∀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
 [ #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 +98,20 @@ lemma fqu_cpx_trans_tdneq: ∀h,o,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐[b] 
 ]
 qed-.
 
-lemma fquq_cpx_trans_tdneq: ∀h,o,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐⸮[b] ⦃G2, L2, T2⦄ →
-                            ∀U2. ⦃G2, L2⦄ ⊢ T2 ⬈[h] U2 → (T2 ≛[h, o] U2 → ⊥) →
-                            ∃∃U1. ⦃G1, L1⦄ ⊢ T1 ⬈[h] U1 & T1 ≛[h, o] U1 → ⊥ & ⦃G1, L1, U1⦄ ⊐⸮[b] ⦃G2, L2, U2⦄.
-#h #o #b #G1 #G2 #L1 #L2 #T1 #T2 #H12 elim H12 -H12 
+lemma fquq_cpx_trans_tdneq: ∀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 
 [ #H12 #U2 #HTU2 #H elim (fqu_cpx_trans_tdneq … 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_tdneq: ∀h,o,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐+[b] ⦃G2, L2, T2⦄ →
-                            ∀U2. ⦃G2, L2⦄ ⊢ T2 ⬈[h] U2 → (T2 ≛[h, o] U2 → ⊥) →
-                            ∃∃U1. ⦃G1, L1⦄ ⊢ T1 ⬈[h] U1 & T1 ≛[h, o] U1 → ⊥ & ⦃G1, L1, U1⦄ ⊐+[b] ⦃G2, L2, U2⦄.
-#h #o #b #G1 #G2 #L1 #L2 #T1 #T2 #H @(fqup_ind_dx … H) -G1 -L1 -T1
+lemma fqup_cpx_trans_tdneq: ∀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
 [ #G1 #L1 #T1 #H12 #U2 #HTU2 #H elim (fqu_cpx_trans_tdneq … 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 +120,10 @@ lemma fqup_cpx_trans_tdneq: ∀h,o,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐+[b]
 ]
 qed-.
 
-lemma fqus_cpx_trans_tdneq: ∀h,o,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐*[b] ⦃G2, L2, T2⦄ →
-                            ∀U2. ⦃G2, L2⦄ ⊢ T2 ⬈[h] U2 → (T2 ≛[h, o] U2 → ⊥) →
-                            ∃∃U1. ⦃G1, L1⦄ ⊢ T1 ⬈[h] U1 & T1 ≛[h, o] U1 → ⊥ & ⦃G1, L1, U1⦄ ⊐*[b] ⦃G2, L2, U2⦄.
-#h #o #b #G1 #G2 #L1 #L2 #T1 #T2 #H12 #U2 #HTU2 #H elim (fqus_inv_fqup … H12) -H12
+lemma fqus_cpx_trans_tdneq: ∀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
 [ #H12 elim (fqup_cpx_trans_tdneq … H12 … HTU2 H) -T2
   /3 width=4 by fqup_fqus, ex3_intro/
 | * #HG #HL #HT destruct /3 width=4 by ex3_intro/
index 33f937a227f4a7dbf6b6d551cd17b63a971ef9bc..b90635d723a90d1efd433c3613350708e8fddd6d 100644 (file)
@@ -17,13 +17,13 @@ include "basic_2/rt_transition/rpx_fsle.ma".
 
 (* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION FOR TERMS ***************)
 
-(* Properties with degree-based equivalence for local environments **********)
+(* Properties with sort-irrelevant equivalence for local environments *******)
 
 (* Basic_2A1: was just: cpx_lleq_conf_sn *)
-lemma cpx_rdeq_conf_sn: ∀h,o,G. s_r_confluent1 … (cpx h G) (rdeq h o).
+lemma cpx_rdeq_conf_sn: ∀h,G. s_r_confluent1 … (cpx h G) rdeq.
 /3 width=6 by cpx_rex_conf/ qed-.
 
 (* Basic_2A1: was just: cpx_lleq_conf_dx *)
-lemma cpx_rdeq_conf_dx: ∀h,o,G,L2,T1,T2. ⦃G, L2⦄ ⊢ T1 ⬈[h] T2 →
-                        ∀L1. L1 ≛[h, o, T1] L2 → L1 ≛[h, o, T2] L2.
-/4 width=4 by cpx_rdeq_conf_sn, rdeq_sym/ qed-.
+lemma cpx_rdeq_conf_dx: ∀h,G,L2,T1,T2. ⦃G, L2⦄ ⊢ T1 ⬈[h] T2 →
+                        ∀L1. L1 ≛[T1] L2 → L1 ≛[T2] L2.
+/4 width=5 by cpx_rdeq_conf_sn, rdeq_sym/ qed-.
index 884093ad2574ed6f2e0b1a73e7bc1cefb6b470be..df1a77e38477b1f4bd36afeda7eab7391d5b37e5 100644 (file)
@@ -17,15 +17,15 @@ include "basic_2/rt_transition/cwhx.ma".
 
 (* WHD NORMAL TERMS FOR UNBOUND CONTEXT-SENSITIVE PARALLEL RT-TRANSITION ****)
 
-(* Properties with degree-based equivalence *********************************)
+(* Properties with sort-irrelevant equivalence ******************************)
 
-lemma rdeq_tdeq_cwhx_trans (h) (o) (G):
+lemma rdeq_tdeq_cwhx_trans (h) (G):
                            ∀L2,T2. ⦃G,L2⦄ ⊢ ⬈[h] 𝐖𝐇⦃T2⦄ →
-                           ∀T1. T1 ≛[h,o] T2 →
-                           ∀L1. L1 ≛[h,o,T1] L2 → ⦃G,L1⦄ ⊢ ⬈[h] 𝐖𝐇⦃T1⦄.
-#h #o #G #L2 #T2 #H elim H -L2 -T2
+                           ∀T1. T1 ≛ T2 →
+                           ∀L1. L1 ≛[T1] L2 → ⦃G,L1⦄ ⊢ ⬈[h] 𝐖𝐇⦃T1⦄.
+#h #G #L2 #T2 #H elim H -L2 -T2
 [ #L2 #s2 #X1 #HX #L1 #HL
-  elim (tdeq_inv_sort2 … HX) -HX #s1 #d #_ #_ #H destruct -s2 -d //
+  elim (tdeq_inv_sort2 … HX) -HX #s1 #H destruct -s2 //
 | #p #L2 #W2 #T2 #X1 #HX #L1 #HL
   elim (tdeq_inv_pair2 … HX) -HX #W1 #T1 #_ #_ #H destruct -W2 -T2 //
 | #L2 #V2 #T2 #_ #IH #X1 #HX #L1 #HL
@@ -35,7 +35,7 @@ lemma rdeq_tdeq_cwhx_trans (h) (o) (G):
 ]
 qed-.
 
-lemma tdeq_cwhx_trans (h) (o) (G) (L):
+lemma tdeq_cwhx_trans (h) (G) (L):
                       ∀T2. ⦃G,L⦄ ⊢ ⬈[h] 𝐖𝐇⦃T2⦄ →
-                      ∀T1. T1 ≛[h,o] T2 → ⦃G,L⦄ ⊢ ⬈[h] 𝐖𝐇⦃T1⦄.
-/3 width=6 by rdeq_tdeq_cwhx_trans/ qed-.
+                      ∀T1. T1 ≛ T2 → ⦃G,L⦄ ⊢ ⬈[h] 𝐖𝐇⦃T1⦄.
+/3 width=5 by rdeq_tdeq_cwhx_trans/ qed-.
index 51c4141120850b6e50fad61dee448b386d504efb..4c262718f61894d4f6d82bc91a233c1aadc7534b 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/predsubtyproper_8.ma".
+include "basic_2/notation/relations/predsubtyproper_7.ma".
 include "static_2/s_transition/fqu.ma".
 include "static_2/static/rdeq.ma".
 include "basic_2/rt_transition/lpr_lpx.ma".
 
 (* PROPER PARALLEL RST-TRANSITION FOR CLOSURES ******************************)
 
-inductive fpb (h) (o) (G1) (L1) (T1): relation3 genv lenv term ≝
-| fpb_fqu: ∀G2,L2,T2. ⦃G1, L1, T1⦄ ⊐ ⦃G2, L2, T2⦄ → fpb h G1 L1 T1 G2 L2 T2
-| fpb_cpx: ∀T2. ⦃G1, L1⦄ ⊢ T1 ⬈[h] T2 → (T1 ≛[h, o] T2 → ⊥) → fpb h o G1 L1 T1 G1 L1 T2
-| fpb_lpx: ∀L2. ⦃G1, L1⦄ ⊢ ⬈[h] L2 → (L1 ≛[h, o, T1] L2 → ⊥) → fpb h o G1 L1 T1 G1 L2 T1
+inductive fpb (h) (G1) (L1) (T1): relation3 genv lenv term ≝
+| fpb_fqu: ∀G2,L2,T2. ⦃G1, L1, T1⦄ ⊐ ⦃G2, L2, T2⦄ → fpb h 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
 .
 
 interpretation
    "proper parallel rst-transition (closure)"
-   'PRedSubTyProper h o G1 L1 T1 G2 L2 T2 = (fpb h o G1 L1 T1 G2 L2 T2).
+   'PRedSubTyProper h G1 L1 T1 G2 L2 T2 = (fpb h G1 L1 T1 G2 L2 T2).
 
 (* Basic properties *********************************************************)
 
 (* Basic_2A1: includes: cpr_fpb *)
-lemma cpm_fpb (n) (h) (o) (G) (L): ∀T1,T2. ⦃G, L⦄ ⊢ T1 ➡[n, h] T2 → (T1 ≛[h, o] T2 → ⊥) →
-                                   ⦃G, L, T1⦄ ≻[h, o] ⦃G, L, T2⦄.
+lemma cpm_fpb (n) (h) (G) (L): ∀T1,T2. ⦃G, L⦄ ⊢ T1 ➡[n, h] T2 → (T1 ≛ T2 → ⊥) →
+                                   ⦃G, L, T1⦄ ≻[h] ⦃G, L, T2⦄.
 /3 width=2 by fpb_cpx, cpm_fwd_cpx/ qed.
 
-lemma lpr_fpb (h) (o) (G) (T): ∀L1,L2. ⦃G, L1⦄ ⊢ ➡[h] L2 → (L1 ≛[h, o, T] L2 → ⊥) →
-                           ⦃G, L1, T⦄ ≻[h, o] ⦃G, L2, T⦄.
+lemma lpr_fpb (h) (G) (T): ∀L1,L2. ⦃G, L1⦄ ⊢ ➡[h] L2 → (L1 ≛[T] L2 → ⊥) →
+                           ⦃G, L1, T⦄ ≻[h] ⦃G, L2, T⦄.
 /3 width=1 by fpb_lpx, lpr_fwd_lpx/ qed.
index a0d0419803cb9a2cf6a61055e7805b63a5b3e2ff..afa9995d00274748ef58eb8cf823e52c019b5759 100644 (file)
@@ -21,10 +21,10 @@ include "basic_2/rt_transition/fpb_rdeq.ma".
 (* Properties with degree-based equivalence for closures ********************)
 
 (* Basic_2A1: uses: fleq_fpb_trans *)
-lemma fdeq_fpb_trans: ∀h,o,F1,F2,K1,K2,T1,T2. ⦃F1, K1, T1⦄ ≛[h, o] ⦃F2, K2, T2⦄ →
-                      ∀G2,L2,U2. ⦃F2, K2, T2⦄ ≻[h, o] ⦃G2, L2, U2⦄ →
-                      ∃∃G1,L1,U1. ⦃F1, K1, T1⦄ ≻[h, o] ⦃G1, L1, U1⦄ & ⦃G1, L1, U1⦄ ≛[h, o] ⦃G2, L2, U2⦄.
-#h #o #F1 #F2 #K1 #K2 #T1 #T2 * -F2 -K2 -T2
+lemma fdeq_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
 #K2 #T2 #HK12 #HT12 #G2 #L2 #U2 #H12
 elim (tdeq_fpb_trans … HT12 … H12) -T2 #K0 #T0 #H #HT0 #HK0
 elim (rdeq_fpb_trans … HK12 … H) -K2 #L0 #U0 #H #HUT0 #HLK0
@@ -35,9 +35,9 @@ qed-.
 (* Inversion lemmas with degree-based equivalence for closures **************)
 
 (* Basic_2A1: uses: fpb_inv_fleq *)
-lemma fpb_inv_fdeq: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≻[h, o] ⦃G2, L2, T2⦄ →
-                    ⦃G1, L1, T1⦄ ≛[h, o] ⦃G2, L2, T2⦄ → ⊥.
-#h #o #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
+lemma fpb_inv_fdeq: ∀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
 [ #G2 #L2 #T2 #H12 #H elim (fdeq_inv_gen_sn … H) -H
   /3 width=11 by rdeq_fwd_length, fqu_inv_tdeq/
 | #T2 #_ #HnT #H elim (fdeq_inv_gen_sn … H) -H /2 width=1 by/
index eab2408fe4291c8d46cb0482f3fd34d046c0b629..2546dd37e11a3e468ef332886b77458a8d0b43f9 100644 (file)
@@ -19,12 +19,12 @@ include "basic_2/rt_transition/fpb.ma".
 
 (* PROPER PARALLEL RST-TRANSITION FOR CLOSURES ******************************)
 
-(* Properties with degree-based equivalence for local environments **********)
+(* Properties with sort-irrelevant equivalence for local environments *******)
 
-lemma tdeq_fpb_trans: ∀h,o,U2,U1. U2 ≛[h, o] U1 →
-                      ∀G1,G2,L1,L2,T1. ⦃G1, L1, U1⦄ ≻[h, o] ⦃G2, L2, T1⦄ → 
-                      ∃∃L,T2. ⦃G1, L1, U2⦄ ≻[h, o] ⦃G2, L, T2⦄ & T2 ≛[h, o] T1 & L ≛[h, o, T1] L2.
-#h #o #U2 #U1 #HU21 #G1 #G2 #L1 #L2 #T1 * -G2 -L2 -T1
+lemma tdeq_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
 [ #G2 #L2 #T1 #H
   elim (tdeq_fqu_trans … H … HU21) -H
   /3 width=5 by fpb_fqu, ex3_2_intro/
@@ -36,14 +36,14 @@ lemma tdeq_fpb_trans: ∀h,o,U2,U1. U2 ≛[h, o] U1 →
 qed-.
 
 (* Basic_2A1: was just: lleq_fpb_trans *)
-lemma rdeq_fpb_trans: ∀h,o,F,K1,K2,T. K1 ≛[h, o, T] K2 →
-                      ∀G,L2,U. ⦃F, K2, T⦄ ≻[h, o] ⦃G, L2, U⦄ →
-                      ∃∃L1,U0. ⦃F, K1, T⦄ ≻[h, o] ⦃G, L1, U0⦄ & U0 ≛[h, o] U & L1 ≛[h, o, U] L2.
-#h #o #F #K1 #K2 #T #HT #G #L2 #U * -G -L2 -U
+lemma rdeq_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
 [ #G #L2 #U #H2 elim (rdeq_fqu_trans … H2 … HT) -K2
   /3 width=5 by fpb_fqu, ex3_2_intro/
 | #U #HTU #HnTU elim (rdeq_cpx_trans … HT … HTU) -HTU
-  /5 width=10 by fpb_cpx, cpx_rdeq_conf_sn, tdeq_trans, tdeq_rdeq_conf, ex3_2_intro/
+  /5 width=11 by fpb_cpx, cpx_rdeq_conf_sn, tdeq_trans, tdeq_rdeq_conf, ex3_2_intro/ (**) (* time: 36s on dev *)
 | #L2 #HKL2 #HnKL2 elim (rdeq_lpx_trans … HKL2 … HT) -HKL2
   /6 width=5 by fpb_lpx, (* 2x *) rdeq_canc_sn, ex3_2_intro/
 ]
index a652d5c185118fa52022eda7994f85f054e7976c..9c29aca6821f4ad64088932da3391a3466be40ed 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                        *)
 (**************************************************************************)
 
-include "basic_2/notation/relations/predsubty_8.ma".
+include "basic_2/notation/relations/predsubty_7.ma".
 include "static_2/static/fdeq.ma".
 include "static_2/s_transition/fquq.ma".
 include "basic_2/rt_transition/lpr_lpx.ma".
@@ -20,27 +20,27 @@ include "basic_2/rt_transition/lpr_lpx.ma".
 (* PARALLEL RST-TRANSITION FOR CLOSURES *************************************)
 
 (* Basic_2A1: includes: fleq_fpbq fpbq_lleq *)
-inductive fpbq (h) (o) (G1) (L1) (T1): relation3 genv lenv term ≝
-| fpbq_fquq: ∀G2,L2,T2. ⦃G1, L1, T1⦄ ⊐⸮ ⦃G2, L2, T2⦄ → fpbq h 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_fdeq: ∀G2,L2,T2. ⦃G1, L1, T1⦄ ≛[h, o] ⦃G2, L2, T2⦄ → fpbq h o G1 L1 T1 G2 L2 T2
+inductive fpbq (h) (G1) (L1) (T1): relation3 genv lenv term ≝
+| fpbq_fquq: ∀G2,L2,T2. ⦃G1, L1, T1⦄ ⊐⸮ ⦃G2, L2, T2⦄ → fpbq h 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_fdeq: ∀G2,L2,T2. ⦃G1, L1, T1⦄ ≛ ⦃G2, L2, T2⦄ → fpbq h G1 L1 T1 G2 L2 T2
 .
 
 interpretation
    "parallel rst-transition (closure)"
-   'PRedSubTy h o G1 L1 T1 G2 L2 T2 = (fpbq h o G1 L1 T1 G2 L2 T2).
+   'PRedSubTy h G1 L1 T1 G2 L2 T2 = (fpbq h G1 L1 T1 G2 L2 T2).
 
 (* Basic properties *********************************************************)
 
-lemma fpbq_refl (h) (o): tri_reflexive … (fpbq h o).
+lemma fpbq_refl (h): tri_reflexive … (fpbq h).
 /2 width=1 by fpbq_cpx/ qed.
 
 (* Basic_2A1: includes: cpr_fpbq *)
-lemma cpm_fpbq (n) (h) (o) (G) (L): ∀T1,T2. ⦃G, L⦄ ⊢ T1 ➡[n, h] T2 → ⦃G, L, T1⦄ ≽[h, o] ⦃G, L, T2⦄. 
+lemma cpm_fpbq (n) (h) (G) (L): ∀T1,T2. ⦃G, L⦄ ⊢ T1 ➡[n, h] T2 → ⦃G, L, T1⦄ ≽[h] ⦃G, L, T2⦄. 
 /3 width=2 by fpbq_cpx, cpm_fwd_cpx/ qed.
 
-lemma lpr_fpbq (h) (o) (G) (T): ∀L1,L2. ⦃G, L1⦄ ⊢ ➡[h] L2 → ⦃G, L1, T⦄ ≽[h, o] ⦃G, L2, T⦄.
+lemma lpr_fpbq (h) (G) (T): ∀L1,L2. ⦃G, L1⦄ ⊢ ➡[h] L2 → ⦃G, L1, T⦄ ≽[h] ⦃G, L2, T⦄.
 /3 width=1 by fpbq_lpx, lpr_fwd_lpx/ qed.
 
 (* Basic_2A1: removed theorems 2:
index 7f539a77c5762930d8f1057db4ac4987ed82932f..b12379dcadb177d24060dbdfed99cb48d8e63e0e 100644 (file)
@@ -21,8 +21,8 @@ include "basic_2/rt_transition/fpbq.ma".
 
 (* Properties with atomic arity assignment for terms ************************)
 
-lemma fpbq_aaa_conf: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≽[h, o] ⦃G2, L2, T2⦄ →
+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 #o #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
+#h #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
 /3 width=8 by lpx_aaa_conf, cpx_aaa_conf, aaa_fdeq_conf, aaa_fquq_conf, ex_intro/
 qed-.
index 1fa7b7209b12254bdd1a0b9b6c91f426e9a023e1..0f83111ac6b904230094235b7d5604854400a4b6 100644 (file)
@@ -19,37 +19,37 @@ include "basic_2/rt_transition/fpbq.ma".
 
 (* Properties with proper parallel rst-transition for closures **************)
 
-lemma fpb_fpbq: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≻[h, o] ⦃G2, L2, T2⦄ →
-                ⦃G1, L1, T1⦄ ≽[h, o] ⦃G2, L2, T2⦄.
-#h #o #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
+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
 /3 width=1 by fpbq_fquq, fpbq_cpx, fpbq_lpx, fqu_fquq/
 qed.
 
 (* Basic_2A1: fpb_fpbq_alt *)
-lemma fpb_fpbq_ffdneq: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≻[h, o] ⦃G2, L2, T2⦄ →
-                       ∧∧ ⦃G1, L1, T1⦄ ≽[h, o] ⦃G2, L2, T2⦄ & (⦃G1, L1, T1⦄ ≛[h, o] ⦃G2, L2, T2⦄ → ⊥).
+lemma fpb_fpbq_ffdneq: ∀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⦄ → ⊥).
 /3 width=10 by fpb_fpbq, fpb_inv_fdeq, conj/ qed-.
 
 (* Inversrion lemmas with proper parallel rst-transition for closures *******)
 
 (* Basic_2A1: uses: fpbq_ind_alt *)
-lemma fpbq_inv_fpb: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≽[h, o] ⦃G2, L2, T2⦄ →
-                    ∨∨ ⦃G1, L1, T1⦄ ≛[h, o] ⦃G2, L2, T2⦄
-                     | ⦃G1, L1, T1⦄ ≻[h, o] ⦃G2, L2, T2⦄.
-#h #o #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
+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
 [ #G2 #L2 #T2 * [2: * #H1 #H2 #H3 destruct ]
   /3 width=1 by fpb_fqu, fdeq_intro_sn, or_intror, or_introl/
-| #T2 #H elim (tdeq_dec h o T1 T2)
+| #T2 #H elim (tdeq_dec T1 T2)
   /4 width=1 by fpb_cpx, fdeq_intro_sn, or_intror, or_introl/
-| #L2 elim (rdeq_dec h o L1 L2 T1)
+| #L2 elim (rdeq_dec L1 L2 T1)
   /4 width=1 by fpb_lpx, fdeq_intro_sn, or_intror, or_introl/
 | /2 width=1 by or_introl/
 ]
 qed-.
 
 (* Basic_2A1: fpbq_inv_fpb_alt *)
-lemma fpbq_ffdneq_inv_fpb: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≽[h, o] ⦃G2, L2, T2⦄ →
-                           (⦃G1, L1, T1⦄ ≛[h, o] ⦃G2, L2, T2⦄ → ⊥) → ⦃G1, L1, T1⦄ ≻[h, o] ⦃G2, L2, T2⦄.
-#h #o #G1 #G2 #L1 #L2 #T1 #T2 #H #H0
+lemma fpbq_ffdneq_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
 elim (fpbq_inv_fpb … H) -H // #H elim H0 -H0 //
 qed-.
index 583214a04bcfde350ceccfb0c27c7813b22ad00d..26fd8c1292ca522bc971b5c4db27b4ecb28766b2 100644 (file)
@@ -18,13 +18,13 @@ include "basic_2/rt_transition/rpx_lpx.ma".
 
 (* UNBOUND PARALLEL RT-TRANSITION FOR FULL LOCAL ENVIRONMENTS ***************)
 
-(* Properties with degree-based equivalence for local environments **********)
+(* Properties with sort-irrelevant equivalence for local environments *******)
 
 (* Basic_2A1: uses: lleq_lpx_trans *)
-lemma rdeq_lpx_trans (h) (o) (G): ∀L2,K2. ⦃G, L2⦄ ⊢ ⬈[h] K2 →
-                                  ∀L1. ∀T:term. L1 ≛[h, o, T] L2 →
-                                  ∃∃K1. ⦃G, L1⦄ ⊢ ⬈[h] K1 & K1 ≛[h, o, T] K2.
-#h #o #G #L2 #K2 #HLK2 #L1 #T #HL12
+lemma rdeq_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
 lapply (lpx_rpx … T HLK2) -HLK2 #HLK2
 elim (rdeq_rpx_trans … HLK2 … HL12) -L2 #K #H #HK2
 elim (rpx_inv_lpx_req … H) -H #K1 #HLK1 #HK1
index b43cbfd042d6faf1d62eb633d926f0be883c21e9..cb3c4b7a534e6a4e3df9b27a8cfbe942c0f38814 100644 (file)
@@ -19,36 +19,36 @@ include "basic_2/rt_transition/rpx_fsle.ma".
 
 (* UNBOUND PARALLEL RT-TRANSITION FOR REFERRED LOCAL ENVIRONMENTS ***********)
 
-(* Properties with degree-based equivalence for 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 → ∀o,I,T.
-                         ∃∃L. ⦃G, L1⦄ ⊢ ⬈[h, ②{I}V.T] L & L ≛[h, o, V] L2.
+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.
 /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 → ∀o,I,V.
-                         ∃∃L. ⦃G, L1⦄ ⊢ ⬈[h, ⓕ{I}V.T] L & L ≛[h, o, T] L2.
+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.
 /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 → ∀o,p.
-                         ∃∃L,V. ⦃G, L1⦄ ⊢ ⬈[h, ⓑ{p,I}V1.T] L & L.ⓑ{I}V ≛[h, o, T] L2 & ⦃G, L1⦄ ⊢ V1 ⬈[h] V.
+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.
 /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 → ∀o,p,I,V.
-                              ∃∃K2. ⦃G, K1⦄ ⊢ ⬈[h, ⓑ{p,I}V.T] K2 & K2.ⓧ ≛[h, o, T] L2.
+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.
 /3 width=5 by rpx_fsge_comp, rex_bind_dx_split_void/ qed-.
 
-lemma rpx_tdeq_conf: ∀h,o,G. s_r_confluent1 … (cdeq h o) (rpx h G).
+lemma rpx_tdeq_conf: ∀h,G. s_r_confluent1 … cdeq (rpx h G).
 /2 width=5 by tdeq_rex_conf/ qed-.
 
-lemma rpx_tdeq_div: ∀h,o,T1,T2. T1 ≛[h, o] T2 →
+lemma rpx_tdeq_div: ∀h,T1,T2. T1 ≛ T2 →
                     ∀G,L1,L2. ⦃G, L1⦄ ⊢ ⬈[h, T2] L2 → ⦃G, L1⦄ ⊢ ⬈[h, T1] L2.
 /2 width=5 by tdeq_rex_div/ qed-.
 
-lemma cpx_tdeq_conf_sex: ∀h,o,G. R_confluent2_rex … (cpx h G) (cdeq h o) (cpx h G) (cdeq h o).
-#h #o #G #L0 #T0 #T1 #H @(cpx_ind … H) -G -L0 -T0 -T1 /2 width=3 by ex2_intro/
+lemma cpx_tdeq_conf_sex: ∀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 (tdeq_inv_sort1 … H0) -H0 #s1 #d1 #Hs0 #Hs1 #H destruct
-  /4 width=3 by tdeq_sort, deg_next, ex2_intro/
+  elim (tdeq_inv_sort1 … H0) -H0 #s1 #H destruct
+  /3 width=3 by tdeq_sort, ex2_intro/
 | #I #G #K0 #V0 #V1 #W1 #_ #IH #HVW1 #T2 #H0 #L1 #H1 #L2 #H2
   >(tdeq_inv_lref1 … H0) -H0
   elim (rpx_inv_zero_pair_sn … H1) -H1 #K1 #X1 #HK01 #HX1 #H destruct
@@ -125,46 +125,46 @@ lemma cpx_tdeq_conf_sex: ∀h,o,G. R_confluent2_rex … (cpx h G) (cdeq h o) (cp
 ]
 qed-.
 
-lemma cpx_tdeq_conf: ∀h,o,G,L. ∀T0:term. ∀T1. ⦃G, L⦄ ⊢ T0 ⬈[h] T1 →
-                     ∀T2. T0 ≛[h, o] T2 →
-                     ∃∃T. T1 ≛[h, o] T & ⦃G, L⦄ ⊢ T2 ⬈[h] T.
-#h #o #G #L #T0 #T1 #HT01 #T2 #HT02
+lemma cpx_tdeq_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
 elim (cpx_tdeq_conf_sex … HT01 … HT02 L … L) -HT01 -HT02
 /2 width=3 by rex_refl, ex2_intro/
 qed-.
 
-lemma tdeq_cpx_trans: ∀h,o,G,L,T2. ∀T0:term. T2 ≛[h, o] T0 →
+lemma tdeq_cpx_trans: ∀h,G,L,T2. ∀T0:term. T2 ≛ T0 →
                       ∀T1. ⦃G, L⦄ ⊢ T0 ⬈[h] T1 → 
-                      ∃∃T. ⦃G, L⦄ ⊢ T2 ⬈[h] T & T ≛[h, o] T1.
-#h #o #G #L #T2 #T0 #HT20 #T1 #HT01
+                      ∃∃T. ⦃G, L⦄ ⊢ T2 ⬈[h] T & T ≛ T1.
+#h #G #L #T2 #T0 #HT20 #T1 #HT01
 elim (cpx_tdeq_conf … HT01 T2) -HT01 /3 width=3 by tdeq_sym, ex2_intro/
 qed-.
 
 (* Basic_2A1: uses: cpx_lleq_conf *)
-lemma cpx_rdeq_conf: ∀h,o,G,L0,T0,T1. ⦃G, L0⦄ ⊢ T0 ⬈[h] T1 →
-                     ∀L2. L0 ≛[h, o, T0] L2 →
-                     ∃∃T. ⦃G, L2⦄ ⊢ T0 ⬈[h] T & T1 ≛[h, o] T.
-#h #o #G #L0 #T0 #T1 #HT01 #L2 #HL02
+lemma cpx_rdeq_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
 elim (cpx_tdeq_conf_sex … HT01 T0 … L0 … HL02) -HT01 -HL02
 /2 width=3 by rex_refl, ex2_intro/
 qed-.
 
 (* Basic_2A1: uses: lleq_cpx_trans *)
-lemma rdeq_cpx_trans: ∀h,o,G,L2,L0,T0. L2 ≛[h, o, T0] L0 →
+lemma rdeq_cpx_trans: ∀h,G,L2,L0,T0. L2 ≛[T0] L0 →
                       ∀T1. ⦃G, L0⦄ ⊢ T0 ⬈[h] T1 →
-                      ∃∃T. ⦃G, L2⦄ ⊢ T0 ⬈[h] T & T ≛[h, o] T1.
-#h #o #G #L2 #L0 #T0 #HL20 #T1 #HT01
-elim (cpx_rdeq_conf … o … HT01 L2) -HT01
+                      ∃∃T. ⦃G, L2⦄ ⊢ T0 ⬈[h] T & T ≛ T1.
+#h #G #L2 #L0 #T0 #HL20 #T1 #HT01
+elim (cpx_rdeq_conf … HT01 L2) -HT01
 /3 width=3 by rdeq_sym, tdeq_sym, ex2_intro/
 qed-.
 
-lemma rpx_rdeq_conf: ∀h,o,G,T. confluent2 … (rpx h G T) (rdeq h o T).
+lemma rpx_rdeq_conf: ∀h,G,T. confluent2 … (rpx h G T) (rdeq T).
 /3 width=6 by rpx_fsge_comp, rdeq_fsge_comp, cpx_tdeq_conf_sex, rex_conf/ qed-.
 
-lemma rdeq_rpx_trans: ∀h,o,G,T,L2,K2. ⦃G, L2⦄ ⊢ ⬈[h, T] K2 →
-                      ∀L1. L1 ≛[h, o, T] L2 →
-                      ∃∃K1. ⦃G, L1⦄ ⊢ ⬈[h, T] K1 & K1 ≛[h, o, T] K2.
-#h #o #G #T #L2 #K2 #HLK2 #L1 #HL12
-elim (rpx_rdeq_conf … o … HLK2 L1)
+lemma rdeq_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
+elim (rpx_rdeq_conf … HLK2 L1)
 /3 width=3 by rdeq_sym, ex2_intro/
 qed-.
index 66fb5e30c9db52626deb2aaafa8994454cb793c5..e1457f0b75bd1855207461c629369c0c446da0b0 100644 (file)
    <table name="basic_2_sum"/>
 
    <subsection name="B">Stage "B"</subsection>
+   <news class="beta" date="2019 March 25.">
+         Preservation of validity for rt-computation
+         does not need the sort degree parameter
+         (i.e. no induction on the degree).
+   </news>
    <news class="beta" date="2018 November 1.">
          Extended (λδ-2) and restricted (λδ-1) type rules justified.
    </news>
index bac5d2dd20999acb9120dba15049576a72c112aa..0d63a09a53fcbe0a40e1e3097fabf8a91d345840 100644 (file)
@@ -65,16 +65,16 @@ table {
           }
         ]
         [ { "unbound context-sensitive parallel rst-computation" * } {
-             [ [ "strongly normalizing for closures" ] "fsb" + "( ≥[?,?] 𝐒⦃?,?,?⦄ )" "fsb_fdeq" + "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" * ]
+             [ [ "strongly normalizing for closures" ] "fsb" + "( ≥[?] 𝐒⦃?,?,?⦄ )" "fsb_fdeq" + "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" * } {
-             [ [ "refinement for lenvs on selected entries" ] "lsubsx" + "( ? ⊢ ? ⊆ⓧ[?,?,?] ? )" "lsubsx_lfsx" + "lsubsx_lsubsx" * ]
-             [ [ "strongly normalizing for lenvs on referred entries" ] "rdsx" + "( ? ⊢ ⬈*[?,?,?] 𝐒⦃?⦄ )" "rdsx_length" + "rdsx_drops" + "rdsx_fqup" + "rdsx_cpxs" + "rdsx_csx" + "rdsx_rdsx" * ]
-             [ [ "strongly normalizing for term vectors" ] "csx_vector" + "( ⦃?,?⦄ ⊢ ⬈*[?,?] 𝐒⦃?⦄ )" "csx_cnx_vector" + "csx_csx_vector" * ]
-             [ [ "strongly normalizing for terms" ] "csx" + "( ⦃?,?⦄ ⊢ ⬈*[?,?] 𝐒⦃?⦄ )" "csx_simple" + "csx_simple_theq" + "csx_drops" + "csx_fqus" + "csx_lsubr" + "csx_rdeq" + "csx_fdeq" + "csx_aaa" + "csx_gcp" + "csx_gcr" + "csx_lpx" + "csx_cnx" + "csx_fpbq" + "csx_cpxs" + "csx_lpxs" + "csx_csx" * ]
+             [ [ "refinement for lenvs on selected entries" ] "lsubsx" + "( ? ⊢ ? ⊆ⓧ[?,?] ? )" "lsubsx_lfsx" + "lsubsx_lsubsx" * ]
+             [ [ "strongly normalizing for lenvs on referred entries" ] "rdsx" + "( ? ⊢ ⬈*[?,?] 𝐒⦃?⦄ )" "rdsx_length" + "rdsx_drops" + "rdsx_fqup" + "rdsx_cpxs" + "rdsx_csx" + "rdsx_rdsx" * ]
+             [ [ "strongly normalizing for term vectors" ] "csx_vector" + "( ⦃?,?⦄ ⊢ ⬈*[?] 𝐒⦃?⦄ )" "csx_cnx_vector" + "csx_csx_vector" * ]
+             [ [ "strongly normalizing for terms" ] "csx" + "( ⦃?,?⦄ ⊢ ⬈*[?] 𝐒⦃?⦄ )" "csx_simple" + "csx_simple_theq" + "csx_drops" + "csx_fqus" + "csx_lsubr" + "csx_rdeq" + "csx_fdeq" + "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_rdeq" + "lpxs_fdeq" + "lpxs_aaa" + "lpxs_lpx" + "lpxs_cpxs" + "lpxs_lpxs" * ]
              [ [ "for binders" ] "cpxs_ext" + "( ⦃?,?⦄ ⊢ ? ⬈*[?] ? )" * ]
              [ [ "for terms" ] "cpxs" + "( ⦃?,?⦄ ⊢ ? ⬈*[?] ? )" "cpxs_tdeq" + "cpxs_theq" + "cpxs_theq_vector" + "cpxs_drops" + "cpxs_fqus" + "cpxs_lsubr" + "cpxs_rdeq" + "cpxs_fdeq" + "cpxs_aaa" + "cpxs_lpx" + "cpxs_cnx" + "cpxs_cpxs" * ] 
@@ -85,8 +85,8 @@ table {
    class "cyan"
    [ { "rt-transition" * } {
         [ { "unbound parallel rst-transition" * } {
-             [ [ "for closures" ] "fpbq" + "( ⦃?,?,?⦄ ≽[?,?] ⦃?,?,?⦄ )" "fpbq_aaa" + "fpbq_fpb" * ]
-             [ [ "proper for closures" ] "fpb" + "( ⦃?,?,?⦄ ≻[?,?] ⦃?,?,?⦄ )" "fpb_rdeq" + "fpb_fdeq" * ]
+             [ [ "for closures" ] "fpbq" + "( ⦃?,?,?⦄ ≽[?] ⦃?,?,?⦄ )" "fpbq_aaa" + "fpbq_fpb" * ]
+             [ [ "proper for closures" ] "fpb" + "( ⦃?,?,?⦄ ≻[?] ⦃?,?,?⦄ )" "fpb_rdeq" + "fpb_fdeq" * ]
           }
         ]
         [ { "context-sensitive parallel r-transition" * } {
@@ -101,7 +101,7 @@ table {
         ]
         [ { "unbound context-sensitive parallel rt-transition" * } {
              [ [ "whd normal form for terms" ] "cwhx" + "( ⦃?,?⦄ ⊢ ⬈[?] 𝐖𝐇⦃?⦄ )" "cwhx_drops" + "cwhx_rdeq" * ]
-             [ [ "normal form for terms" ] "cnx" + "( ⦃?,?⦄ ⊢ ⬈[?,?] 𝐍⦃?⦄ )" "cnx_simple" + "cnx_drops" + "cnx_basic" + "cnx_cnx" * ]
+             [ [ "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_rdeq" + "rpx_lpx" + "rpx_rpx" * ]
              [ [ "for lenvs on all entries" ] "lpx" + "( ⦃?,?⦄ ⊢ ⬈[?] ? )" "lpx_length" + "lpx_drops" + "lpx_fquq" + "lpx_fsle" + "lpx_rdeq" + "lpx_aaa" * ]
              [ [ "for binders" ] "cpx_ext" + "( ⦃?,?⦄ ⊢ ? ⬈[?] ? )" * ]
diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/relations/stareq_2.ma b/matita/matita/contribs/lambdadelta/static_2/notation/relations/stareq_2.ma
new file mode 100644 (file)
index 0000000..04a438a
--- /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( T1 ≛ break term 46 T2 )"
+   non associative with precedence 45
+   for @{ 'StarEq $T1 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/relations/stareq_3.ma b/matita/matita/contribs/lambdadelta/static_2/notation/relations/stareq_3.ma
new file mode 100644 (file)
index 0000000..fbb650a
--- /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( L ⊢ break term 46 T1 ≛ break term 46 T2 )"
+   non associative with precedence 45
+   for @{ 'StarEq $L $T1 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/relations/stareq_4.ma b/matita/matita/contribs/lambdadelta/static_2/notation/relations/stareq_4.ma
deleted file mode 100644 (file)
index 0f67a83..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( T1 ≛ [ break term 46 h, break term 46 o ] break term 46 T2 )"
-   non associative with precedence 45
-   for @{ 'StarEq $h $o $T1 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/relations/stareq_5.ma b/matita/matita/contribs/lambdadelta/static_2/notation/relations/stareq_5.ma
deleted file mode 100644 (file)
index 5532059..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( L ⊢ break term 46 T1 ≛ [ break term 46 h, break term 46 o ] break term 46 T2 )"
-   non associative with precedence 45
-   for @{ 'StarEq $h $o $L $T1 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/relations/stareqsn_3.ma b/matita/matita/contribs/lambdadelta/static_2/notation/relations/stareqsn_3.ma
new file mode 100644 (file)
index 0000000..5d7cb99
--- /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( L1 ≛ [ break term 46 T ] break term 46 L2 )"
+   non associative with precedence 45
+   for @{ 'StarEqSn $T $L1 $L2 }.
diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/relations/stareqsn_5.ma b/matita/matita/contribs/lambdadelta/static_2/notation/relations/stareqsn_5.ma
deleted file mode 100644 (file)
index af611f7..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( L1 ≛ [ break term 46 h, break term 46 o, break term 46 T ] break term 46 L2 )"
-   non associative with precedence 45
-   for @{ 'StarEqSn $h $o $T $L1 $L2 }.
diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/relations/stareqsn_6.ma b/matita/matita/contribs/lambdadelta/static_2/notation/relations/stareqsn_6.ma
new file mode 100644 (file)
index 0000000..7117482
--- /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 @{ 'StarEqSn $G1 $L1 $T1 $G2 $L2 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/relations/stareqsn_8.ma b/matita/matita/contribs/lambdadelta/static_2/notation/relations/stareqsn_8.ma
deleted file mode 100644 (file)
index 6e4ed5d..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 o ] ⦃ break term 46 G2, break term 46 L2, break term 46 T2 ⦄ )"
-   non associative with precedence 45
-   for @{ 'StarEqSn $h $o $G1 $L1 $T1 $G2 $L2 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/relations/topiso_2.ma b/matita/matita/contribs/lambdadelta/static_2/notation/relations/topiso_2.ma
new file mode 100644 (file)
index 0000000..35dd475
--- /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( T1 ⩳ break term 46 T2 )"
+   non associative with precedence 45
+   for @{ 'TopIso $T1 $T2 }.
diff --git a/matita/matita/contribs/lambdadelta/static_2/notation/relations/topiso_4.ma b/matita/matita/contribs/lambdadelta/static_2/notation/relations/topiso_4.ma
deleted file mode 100644 (file)
index e8c080f..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( T1 ⩳ [ break term 46 h, break term 46 o ] break term 46 T2 )"
-   non associative with precedence 45
-   for @{ 'TopIso $h $o $T1 $T2 }.
index 12affa3a16a3af71a20070431cb5b934cf22cabc..5aee3ad12030883c8754776cf334c0efbc2629ed 100644 (file)
@@ -17,12 +17,12 @@ include "static_2/relocation/lifts_lifts.ma".
 
 (* GENERIC RELOCATION FOR TERMS *********************************************)
 
-(* Properties with degree-based equivalence for terms ***********************)
+(* Properties with sort-irrelevant equivalence for terms ********************)
 
-lemma tdeq_lifts_sn: ∀h,o. liftable2_sn (tdeq h o).
-#h #o #T1 #T2 #H elim H -T1 -T2 [||| * ]
-[ #s1 #s2 #d #Hs1 #Hs2 #f #X #H >(lifts_inv_sort1 … H) -H
-  /3 width=5 by lifts_sort, tdeq_sort, ex2_intro/
+lemma tdeq_lifts_sn: liftable2_sn tdeq.
+#T1 #T2 #H elim H -T1 -T2 [||| * ]
+[ #s1 #s2 #f #X #H >(lifts_inv_sort1 … H) -H
+  /3 width=3 by lifts_sort, tdeq_sort, ex2_intro/
 | #i #f #X #H elim (lifts_inv_lref1 … H) -H
   /3 width=3 by lifts_lref, tdeq_lref, ex2_intro/
 | #l #f #X #H >(lifts_inv_gref1 … H) -H
@@ -38,15 +38,15 @@ lemma tdeq_lifts_sn: ∀h,o. liftable2_sn (tdeq h o).
 ]
 qed-.
 
-lemma tdeq_lifts_bi: ∀h,o. liftable2_bi (tdeq h o).
+lemma tdeq_lifts_bi: liftable2_bi tdeq.
 /3 width=6 by tdeq_lifts_sn, liftable2_sn_bi/ qed-.
 
-(* Inversion lemmas with degree-based equivalence for terms *****************)
+(* Inversion lemmas with sort-irrelevant equivalence for terms **************)
 
-lemma tdeq_inv_lifts_sn: ∀h,o. deliftable2_sn (tdeq h o).
-#h #o #U1 #U2 #H elim H -U1 -U2 [||| * ]
-[ #s1 #s2 #d #Hs1 #Hs2 #f #X #H >(lifts_inv_sort2 … H) -H
-  /3 width=5 by lifts_sort, tdeq_sort, ex2_intro/
+lemma tdeq_inv_lifts_sn: deliftable2_sn tdeq.
+#U1 #U2 #H elim H -U1 -U2 [||| * ]
+[ #s1 #s2 #f #X #H >(lifts_inv_sort2 … H) -H
+  /3 width=3 by lifts_sort, tdeq_sort, ex2_intro/
 | #i #f #X #H elim (lifts_inv_lref2 … H) -H
   /3 width=3 by lifts_lref, tdeq_lref, ex2_intro/
 | #l #f #X #H >(lifts_inv_gref2 … H) -H
@@ -62,15 +62,15 @@ lemma tdeq_inv_lifts_sn: ∀h,o. deliftable2_sn (tdeq h o).
 ]
 qed-.
 
-lemma tdeq_inv_lifts_dx (h) (o): deliftable2_dx (tdeq h o).
+lemma tdeq_inv_lifts_dx: deliftable2_dx tdeq.
 /3 width=3 by tdeq_inv_lifts_sn, deliftable2_sn_dx, tdeq_sym/ qed-.
 
-lemma tdeq_inv_lifts_bi: ∀h,o. deliftable2_bi (tdeq h o).
+lemma tdeq_inv_lifts_bi: deliftable2_bi tdeq.
 /3 width=6 by tdeq_inv_lifts_sn, deliftable2_sn_bi/ qed-.
 
-lemma tdeq_lifts_inv_pair_sn (h) (o) (I) (f:rtmap):
-                             ∀X,T. ⬆*[f]X ≘ T → ∀V. ②{I}V.T ≛[h,o] X → ⊥.
-#h #o #I #f #X #T #H elim H -f -X -T
+lemma tdeq_lifts_inv_pair_sn (I) (f:rtmap):
+                             ∀X,T. ⬆*[f]X ≘ T → ∀V. ②{I}V.T ≛ X → ⊥.
+#I #f #X #T #H elim H -f -X -T
 [ #f #s #V #H
   elim (tdeq_inv_pair1 … H) -H #X1 #X2 #_ #_ #H destruct
 | #f #i #j #_ #V #H
index 7deebbc611f41623f750873b0c30876408cdd0fc..d08dc97d2f135e83d62935d7090eeebf84719d79 100644 (file)
@@ -17,11 +17,11 @@ include "static_2/s_transition/fqu_length.ma".
 
 (* SUPCLOSURE ***************************************************************)
 
-(* Inversion lemmas with context-free degree-based equivalence for terms ****)
+(* Inversion lemmas with context-free sort-irrelevant equivalence for terms *)
 
-fact fqu_inv_tdeq_aux: ∀h,o,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐[b] ⦃G2, L2, T2⦄ →
-                       G1 = G2 → |L1| = |L2| → T1 ≛[h, o] T2 → ⊥.
-#h #o #b #G1 #G2 #L1 #L2 #T1 #T2 * -G1 -G2 -L1 -L2 -T1 -T2
+fact fqu_inv_tdeq_aux: ∀b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐[b] ⦃G2, L2, T2⦄ →
+                       G1 = G2 → |L1| = |L2| → T1 ≛ T2 → ⊥.
+#b #G1 #G2 #L1 #L2 #T1 #T2 * -G1 -G2 -L1 -L2 -T1 -T2
 [1: #I #G #L #V #_ #H elim (succ_inv_refl_sn … H)
 |6: #I #G #L #T #U #_ #_ #H elim (succ_inv_refl_sn … H)
 ]
@@ -29,8 +29,8 @@ fact fqu_inv_tdeq_aux: ∀h,o,b,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ⊐[b] ⦃G2
 qed-.
 
 (* Basic_2A1: uses: fqu_inv_eq *)
-lemma fqu_inv_tdeq: ∀h,o,b,G,L1,L2,T1,T2. ⦃G, L1, T1⦄ ⊐[b] ⦃G, L2, T2⦄ →
-                    |L1| = |L2| → T1 ≛[h, o] T2 → ⊥.
-#h #o #b #G #L1 #L2 #T1 #T2 #H
+lemma fqu_inv_tdeq: ∀b,G,L1,L2,T1,T2. ⦃G, L1, T1⦄ ⊐[b] ⦃G, L2, T2⦄ →
+                    |L1| = |L2| → T1 ≛ T2 → ⊥.
+#b #G #L1 #L2 #T1 #T2 #H
 @(fqu_inv_tdeq_aux … H) // (**) (* full auto fails *)
 qed-. 
index 4572fda32512d3c5b9e766200b9ced045d3fef00..777183562df59344ca062bdb18647b75c52bcff5 100644 (file)
@@ -17,9 +17,9 @@ include "static_2/static/aaa_rdeq.ma".
 
 (* ATONIC ARITY ASSIGNMENT ON TERMS *****************************************)
 
-(* Properties with degree-based equivalence on referred entries *************)
+(* Properties with sort-irrelevant equivalence on referred entries **********)
 
-lemma aaa_fdeq_conf: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≛[h, o] ⦃G2, L2, T2⦄ → 
+lemma aaa_fdeq_conf: ∀G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≛ ⦃G2, L2, T2⦄ → 
                      ∀A. ⦃G1, L1⦄ ⊢ T1 ⁝ A → ⦃G2, L2⦄ ⊢ T2 ⁝ A.
-#h #o #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
-/2 width=7 by aaa_tdeq_conf_rdeq/ qed-.
+#G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
+/2 width=5 by aaa_tdeq_conf_rdeq/ qed-.
index 23760c8bd3d829e0565a748dfdfc88dbcc175456..265ed7f5c38895bd31a8b40bd6419dd29f8f6cef 100644 (file)
@@ -17,11 +17,11 @@ include "static_2/static/aaa.ma".
 
 (* ATONIC ARITY ASSIGNMENT ON TERMS *****************************************)
 
-(* Properties with degree-based equivalence on referred entries *************)
+(* Properties with sort-irrelevant equivalence on referred entries **********)
 
-lemma aaa_tdeq_conf_rdeq: ∀h,o,G,L1,T1,A. ⦃G, L1⦄ ⊢ T1 ⁝ A → ∀T2. T1 ≛[h, o] T2 →
-                          ∀L2. L1 ≛[h, o, T1] L2 → ⦃G, L2⦄ ⊢ T2 ⁝ A.
-#h #o #G #L1 #T1 #A #H elim H -G -L1 -T1 -A
+lemma aaa_tdeq_conf_rdeq: ∀G,L1,T1,A. ⦃G, L1⦄ ⊢ T1 ⁝ A → ∀T2. T1 ≛ T2 →
+                          ∀L2. L1 ≛[T1] L2 → ⦃G, L2⦄ ⊢ T2 ⁝ A.
+#G #L1 #T1 #A #H elim H -G -L1 -T1 -A
 [ #G #L1 #s1 #X #H1 elim (tdeq_inv_sort1 … H1) -H1 //
 | #I #G #L1 #V1 #B #_ #IH #X #H1 >(tdeq_inv_lref1 … H1) -H1
   #Y #H2 elim (rdeq_inv_zero_pair_sn … H2) -H2
index 25427895c36e96517fba7bb5cbe95fc02a290e5d..be82b9302cbccaab1eb966e455b0b0fc9158ff76 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "static_2/notation/relations/stareqsn_8.ma".
+include "static_2/notation/relations/stareqsn_6.ma".
 include "static_2/syntax/genv.ma".
 include "static_2/static/rdeq.ma".
 
-(* DEGREE-BASED EQUIVALENCE FOR CLOSURES ON REFERRED ENTRIES ****************)
+(* SORT-IRRELEVANT EQUIVALENCE FOR CLOSURES ON REFERRED ENTRIES *************)
 
-inductive fdeq (h) (o) (G) (L1) (T1): relation3 genv lenv term ≝
-| fdeq_intro_sn: ∀L2,T2. L1 ≛[h, o, T1] L2 → T1 ≛[h, o] T2 →
-                 fdeq h o G L1 T1 G L2 T2
+inductive fdeq (G) (L1) (T1): relation3 genv lenv term ≝
+| fdeq_intro_sn: ∀L2,T2. L1 ≛[T1] L2 → T1 ≛ T2 →
+                 fdeq G L1 T1 G L2 T2
 .
 
 interpretation
-   "degree-based equivalence on referred entries (closure)"
-   'StarEqSn h o G1 L1 T1 G2 L2 T2 = (fdeq h o G1 L1 T1 G2 L2 T2).
+   "sort-irrelevant equivalence on referred entries (closure)"
+   'StarEqSn G1 L1 T1 G2 L2 T2 = (fdeq G1 L1 T1 G2 L2 T2).
 
 (* Basic_properties *********************************************************)
 
-lemma fdeq_intro_dx (h) (o) (G): ∀L1,L2,T2. L1 ≛[h, o, T2] L2 →
-                                 ∀T1. T1 ≛[h, o] T2 → ⦃G, L1, T1⦄ ≛[h, o] ⦃G, L2, T2⦄.
+lemma fdeq_intro_dx (G): ∀L1,L2,T2. L1 ≛[T2] L2 →
+                         ∀T1. T1 ≛ T2 → ⦃G, L1, T1⦄ ≛ ⦃G, L2, T2⦄.
 /3 width=3 by fdeq_intro_sn, tdeq_rdeq_div/ qed.
 
 (* Basic inversion lemmas ***************************************************)
 
-lemma fdeq_inv_gen_sn: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≛[h, o] ⦃G2, L2, T2⦄ →
-                       ∧∧ G1 = G2 & L1 ≛[h, o, T1] L2 & T1 ≛[h, o] T2.
-#h #o #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2 /2 width=1 by and3_intro/
+lemma fdeq_inv_gen_sn: ∀G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≛ ⦃G2, L2, T2⦄ →
+                       ∧∧ G1 = G2 & L1 ≛[T1] L2 & T1 ≛ T2.
+#G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2 /2 width=1 by and3_intro/
 qed-.
 
-lemma fdeq_inv_gen_dx: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≛[h, o] ⦃G2, L2, T2⦄ →
-                       ∧∧ G1 = G2 & L1 ≛[h, o, T2] L2 & T1 ≛[h, o] T2.
-#h #o #G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
+lemma fdeq_inv_gen_dx: ∀G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≛ ⦃G2, L2, T2⦄ →
+                       ∧∧ G1 = G2 & L1 ≛[T2] L2 & T1 ≛ T2.
+#G1 #G2 #L1 #L2 #T1 #T2 * -G2 -L2 -T2
 /3 width=3 by tdeq_rdeq_conf, and3_intro/
 qed-.
 
index 729185985421384618ad585387df1fdae958183d..d337f7054867d39fc3523c11f6b945e6024021ec 100644 (file)
 include "static_2/static/rdeq_rdeq.ma".
 include "static_2/static/fdeq.ma".
 
-(* DEGREE-BASED EQUIVALENCE FOR CLOSURES ON REFERRED ENTRIES ****************)
+(* SORT-IRRELEVANT EQUIVALENCE FOR CLOSURES ON REFERRED ENTRIES *************)
 
 (* Advanced properties ******************************************************)
 
-lemma fdeq_sym: ∀h,o. tri_symmetric … (fdeq h o).
-#h #o #G1 #G2 #L1 #L2 #T1 #T2 * -G1 -L1 -T1
+lemma fdeq_sym: tri_symmetric … fdeq.
+#G1 #G2 #L1 #L2 #T1 #T2 * -G1 -L1 -T1
 /3 width=1 by fdeq_intro_dx, rdeq_sym, tdeq_sym/
 qed-.
 
 (* Main properties **********************************************************)
 
-theorem fdeq_trans: ∀h,o. tri_transitive … (fdeq h o).
-#h #o #G1 #G #L1 #L #T1 #T * -G -L -T
+theorem fdeq_trans: tri_transitive … fdeq.
+#G1 #G #L1 #L #T1 #T * -G -L -T
 #L #T #HL1 #HT1 #G2 #L2 #T2 * -G2 -L2 -T2
 /4 width=5 by fdeq_intro_sn, rdeq_trans, tdeq_rdeq_div, tdeq_trans/
 qed-.
 
-theorem fdeq_canc_sn: ∀h,o,G,G1,G2,L,L1,L2,T,T1,T2.
-                      â¦\83G, L, Tâ¦\84 â\89\9b[h, o] â¦\83G1, L1, T1â¦\84â\86\92 â¦\83G, L, Tâ¦\84 â\89\9b[h, o] â¦\83G2, L2, T2â¦\84 â\86\92 â¦\83G1, L1, T1â¦\84 â\89\9b[h, o] ⦃G2, L2, T2⦄.
+theorem fdeq_canc_sn: ∀G,G1,L,L1,T,T1. ⦃G, L, T⦄ ≛ ⦃G1, L1, T1⦄→
+                      â\88\80G2,L2,T2. â¦\83G, L, Tâ¦\84 â\89\9b â¦\83G2, L2, T2â¦\84 â\86\92 â¦\83G1, L1, T1â¦\84 â\89\9b ⦃G2, L2, T2⦄.
 /3 width=5 by fdeq_trans, fdeq_sym/ qed-.
 
-theorem fdeq_canc_dx: ∀h,o,G1,G2,G,L1,L2,L,T1,T2,T.
-                      â¦\83G1, L1, T1â¦\84 â\89\9b[h, o] â¦\83G, L, Tâ¦\84 â\86\92 â¦\83G2, L2, T2â¦\84 â\89\9b[h, o] â¦\83G, L, Tâ¦\84 â\86\92 â¦\83G1, L1, T1â¦\84 â\89\9b[h, o] ⦃G2, L2, T2⦄.
+theorem fdeq_canc_dx: ∀G1,G,L1,L,T1,T. ⦃G1, L1, T1⦄ ≛ ⦃G, L, T⦄ →
+                      â\88\80G2,L2,T2. â¦\83G2, L2, T2â¦\84 â\89\9b â¦\83G, L, Tâ¦\84 â\86\92 â¦\83G1, L1, T1â¦\84 â\89\9b ⦃G2, L2, T2⦄.
 /3 width=5 by fdeq_trans, fdeq_sym/ qed-.
 
 (* Main inversion lemmas with degree-based equivalence on terms *************)
 
-theorem fdeq_tdneq_repl_dx: ∀h,o,G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≛[h, o] ⦃G2, L2, T2⦄ →
-                            ∀U1,U2. ⦃G1, L1, U1⦄ ≛[h, o] ⦃G2, L2, U2⦄ →
-                            (T2 ≛[h, o] U2 → ⊥) → (T1 ≛[h, o] U1 → ⊥).
-#h #o #G1 #G2 #L1 #L2 #T1 #T2 #HT #U1 #U2 #HU #HnTU2 #HTU1
+theorem fdeq_tdneq_repl_dx: ∀G1,G2,L1,L2,T1,T2. ⦃G1, L1, T1⦄ ≛ ⦃G2, L2, T2⦄ →
+                            ∀U1,U2. ⦃G1, L1, U1⦄ ≛ ⦃G2, L2, U2⦄ →
+                            (T2 ≛ U2 → ⊥) → (T1 ≛ U1 → ⊥).
+#G1 #G2 #L1 #L2 #T1 #T2 #HT #U1 #U2 #HU #HnTU2 #HTU1
 elim (fdeq_inv_gen_sn … HT) -HT #_ #_ #HT
 elim (fdeq_inv_gen_sn … HU) -HU #_ #_ #HU
 /3 width=5 by tdeq_repl/
index 6a4f49e575d07607213e03a52a470af36a5b0e45..19fe848f786f7da67dfec49029ba6e8a1da4dbd0 100644 (file)
 include "static_2/static/rdeq_fqup.ma".
 include "static_2/static/fdeq.ma".
 
-(* DEGREE-BASED EQUIVALENCE FOR CLOSURES ON REFERRED ENTRIES ****************)
+(* SORT-IRRELEVANT EQUIVALENCE FOR CLOSURES ON REFERRED ENTRIES *************)
 
-(* Properties with degree-based equivalence for terms ***********************)
+(* Properties with sort-irrelevant equivalence for terms ********************)
 
-lemma tdeq_fdeq: ∀h,o,T1,T2. T1 ≛[h, o] T2 →
-                 ∀G,L. ⦃G, L, T1⦄ ≛[h, o] ⦃G, L, T2⦄.
+lemma tdeq_fdeq: ∀T1,T2. T1 ≛ T2 →
+                 ∀G,L. ⦃G, L, T1⦄ ≛ ⦃G, L, T2⦄.
 /2 width=1 by fdeq_intro_sn/ qed.
 
 (* Advanced properties ******************************************************)
 
-lemma fdeq_refl: ∀h,o. tri_reflexive … (fdeq h o).
+lemma fdeq_refl: tri_reflexive … fdeq.
 /2 width=1 by fdeq_intro_sn/ qed.
index 4274cd40fc1ebc6d5d7f2d1e3479380f9fb534bf..9662b6b325895b7037e81553336ae370a441322d 100644 (file)
 include "static_2/static/rdeq_fqus.ma".
 include "static_2/static/fdeq.ma".
 
-(* DEGREE-BASED EQUIVALENCE FOR CLOSURES ON REFERRED ENTRIES ****************)
+(* SORT-IRRELEVANT EQUIVALENCE FOR CLOSURES ON REFERRED ENTRIES *************)
 
 (* Properties with star-iterated structural successor for closures **********)
 
-lemma fdeq_fqus_trans: ∀h,o,b,G1,G,L1,L,T1,T. ⦃G1, L1, T1⦄ ≛[h, o] ⦃G, L, T⦄ →
+lemma fdeq_fqus_trans: ∀b,G1,G,L1,L,T1,T. ⦃G1, L1, T1⦄ ≛ ⦃G, L, T⦄ →
                        ∀G2,L2,T2. ⦃G, L, T⦄ ⊐*[b] ⦃G2, L2, T2⦄ →
-                       ∃∃G,L0,T0. ⦃G1, L1, T1⦄ ⊐*[b] ⦃G, L0, T0⦄ & ⦃G, L0, T0⦄ ≛[h, o] ⦃G2, L2, T2⦄.
-#h #o #b #G1 #G #L1 #L #T1 #T #H1 #G2 #L2 #T2 #H2
+                       ∃∃G,L0,T0. ⦃G1, L1, T1⦄ ⊐*[b] ⦃G, L0, T0⦄ & ⦃G, L0, T0⦄ ≛ ⦃G2, L2, T2⦄.
+#b #G1 #G #L1 #L #T1 #T #H1 #G2 #L2 #T2 #H2
 elim(fdeq_inv_gen_dx … H1) -H1 #HG #HL1 #HT1 destruct
 elim (rdeq_fqus_trans … H2 … HL1) -L #L #T0 #H2 #HT02 #HL2
 elim (tdeq_fqus_trans … H2 … HT1) -T #L0 #T #H2 #HT0 #HL0
index 0c0d9c3bcc065255c8ab57982cd3d6186ffa67f9..c430e7aae884d0ccdfdffd498b14a10f87826c1d 100644 (file)
 include "static_2/static/rdeq_req.ma".
 include "static_2/static/fdeq.ma".
 
-(* DEGREE-BASED EQUIVALENCE FOR CLOSURES ON REFERRED ENTRIES ****************)
+(* SORT-IRRELEVANT EQUIVALENCE FOR CLOSURES ON REFERRED ENTRIES *************)
 
 (* Properties with syntactic equivalence on referred entries ****************)
 
-lemma req_rdeq_trans: ∀h,o,L1,L,T1. L1 ≡[T1] L →
-                      ∀G1,G2,L2,T2. ⦃G1, L, T1⦄ ≛[h, o] ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ ≛[h, o] ⦃G2, L2, T2⦄.
-#h #o #L1 #L #T1 #HL1 #G1 #G2 #L2 #T2 #H
+lemma req_rdeq_trans: ∀L1,L,T1. L1 ≡[T1] L →
+                      ∀G1,G2,L2,T2. ⦃G1, L, T1⦄ ≛ ⦃G2, L2, T2⦄ → ⦃G1, L1, T1⦄ ≛ ⦃G2, L2, T2⦄.
+#L1 #L #T1 #HL1 #G1 #G2 #L2 #T2 #H
 elim (fdeq_inv_gen_sn … H) -H #H #HL2 #T12 destruct
 /3 width=3 by fdeq_intro_sn, req_rdeq_trans/
 qed-.
index f2de0dfe67933071afcafeacf99ab266cb4cb126..6cb56dcaf43200dc2c6eebb6751107f973902db0 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "static_2/notation/relations/stareqsn_5.ma".
+include "static_2/notation/relations/stareqsn_3.ma".
 include "static_2/syntax/tdeq_ext.ma".
 include "static_2/static/rex.ma".
 
-(* DEGREE-BASED EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ******)
+(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
 
-definition rdeq (h) (o): relation3 term lenv lenv ≝
-                         rex (cdeq h o).
+definition rdeq: relation3 term lenv lenv ≝
+                 rex cdeq.
 
 interpretation
-   "degree-based equivalence on referred entries (local environment)"
-   'StarEqSn h o T L1 L2 = (rdeq h o T L1 L2).
+   "sort-irrelevant equivalence on referred entries (local environment)"
+   'StarEqSn T L1 L2 = (rdeq T L1 L2).
 
 interpretation
-   "degree-based ranged equivalence (local environment)"
-   'StarEqSn h o f L1 L2 = (sex (cdeq_ext h o) cfull f L1 L2).
+   "sort-irrelevant ranged equivalence (local environment)"
+   'StarEqSn f L1 L2 = (sex cdeq_ext cfull f L1 L2).
 
 (* Basic properties ***********************************************************)
 
-lemma frees_tdeq_conf_rdeq (h) (o): ∀f,L1,T1. L1 ⊢ 𝐅*⦃T1⦄ ≘ f → ∀T2. T1 ≛[h, o] T2 →
-                                    ∀L2. L1 ≛[h, o, f] L2 → L2 ⊢ 𝐅*⦃T2⦄ ≘ f.
-#h #o #f #L1 #T1 #H elim H -f -L1 -T1
+lemma frees_tdeq_conf_rdeq: ∀f,L1,T1. L1 ⊢ 𝐅*⦃T1⦄ ≘ f → ∀T2. T1 ≛ T2 →
+                            ∀L2. L1 ≛[f] L2 → L2 ⊢ 𝐅*⦃T2⦄ ≘ f.
+#f #L1 #T1 #H elim H -f -L1 -T1
 [ #f #L1 #s1 #Hf #X #H1 #L2 #_
-  elim (tdeq_inv_sort1 … H1) -H1 #s2 #d #_ #_ #H destruct
+  elim (tdeq_inv_sort1 … H1) -H1 #s2 #H destruct
   /2 width=3 by frees_sort/
 | #f #i #Hf #X #H1
   >(tdeq_inv_lref1 … H1) -X #Y #H2
@@ -65,130 +65,130 @@ lemma frees_tdeq_conf_rdeq (h) (o): ∀f,L1,T1. L1 ⊢ 𝐅*⦃T1⦄ ≘ f → 
 ]
 qed-.
 
-lemma frees_tdeq_conf (h) (o): ∀f,L,T1. L ⊢ 𝐅*⦃T1⦄ ≘ f →
-                               ∀T2. T1 ≛[h, o] T2 → L ⊢ 𝐅*⦃T2⦄ ≘ f.
+lemma frees_tdeq_conf: ∀f,L,T1. L ⊢ 𝐅*⦃T1⦄ ≘ f →
+                       ∀T2. T1 ≛ T2 → L ⊢ 𝐅*⦃T2⦄ ≘ f.
 /4 width=7 by frees_tdeq_conf_rdeq, sex_refl, ext2_refl/ qed-.
 
-lemma frees_rdeq_conf (h) (o): ∀f,L1,T. L1 ⊢ 𝐅*⦃T⦄ ≘ f →
-                               ∀L2. L1 ≛[h, o, f] L2 → L2 ⊢ 𝐅*⦃T⦄ ≘ f.
+lemma frees_rdeq_conf: ∀f,L1,T. L1 ⊢ 𝐅*⦃T⦄ ≘ f →
+                       ∀L2. L1 ≛[f] L2 → L2 ⊢ 𝐅*⦃T⦄ ≘ f.
 /2 width=7 by frees_tdeq_conf_rdeq, tdeq_refl/ qed-.
 
-lemma tdeq_rex_conf (R) (h) (o): s_r_confluent1 … (cdeq h o) (rex R).
-#R #h #o #L1 #T1 #T2 #HT12 #L2 *
+lemma tdeq_rex_conf (R): s_r_confluent1 … cdeq (rex R).
+#R #L1 #T1 #T2 #HT12 #L2 *
 /3 width=5 by frees_tdeq_conf, ex2_intro/
 qed-.
 
-lemma tdeq_rex_div (R) (h) (o): ∀T1,T2. T1 ≛[h, o] T2 →
-                                ∀L1,L2. L1 ⪤[R, T2] L2 → L1 ⪤[R, T1] L2.
+lemma tdeq_rex_div (R): ∀T1,T2. T1 ≛ T2 →
+                        ∀L1,L2. L1 ⪤[R, T2] L2 → L1 ⪤[R, T1] L2.
 /3 width=5 by tdeq_rex_conf, tdeq_sym/ qed-.
 
-lemma tdeq_rdeq_conf (h) (o): s_r_confluent1 … (cdeq h o) (rdeq h o).
+lemma tdeq_rdeq_conf: s_r_confluent1 … cdeq rdeq.
 /2 width=5 by tdeq_rex_conf/ qed-.
 
-lemma tdeq_rdeq_div (h) (o): ∀T1,T2. T1 ≛[h, o] T2 →
-                             ∀L1,L2. L1 ≛[h, o, T2] L2 → L1 ≛[h, o, T1] L2.
+lemma tdeq_rdeq_div: ∀T1,T2. T1 ≛ T2 →
+                     ∀L1,L2. L1 ≛[T2] L2 → L1 ≛[T1] L2.
 /2 width=5 by tdeq_rex_div/ qed-.
 
-lemma rdeq_atom (h) (o): ∀I. ⋆ ≛[h, o, ⓪{I}] ⋆.
+lemma rdeq_atom: ∀I. ⋆ ≛[⓪{I}] ⋆.
 /2 width=1 by rex_atom/ qed.
 
-lemma rdeq_sort (h) (o): ∀I1,I2,L1,L2,s.
-                         L1 ≛[h, o, ⋆s] L2 → L1.ⓘ{I1} ≛[h, o, ⋆s] L2.ⓘ{I2}.
+lemma rdeq_sort: ∀I1,I2,L1,L2,s.
+                 L1 ≛[⋆s] L2 → L1.ⓘ{I1} ≛[⋆s] L2.ⓘ{I2}.
 /2 width=1 by rex_sort/ qed.
 
-lemma rdeq_pair (h) (o): ∀I,L1,L2,V1,V2. L1 ≛[h, o, V1] L2 → V1 ≛[h, o] V2 →
-                         L1.ⓑ{I}V1 ≛[h, o, #0] L2.ⓑ{I}V2.
+lemma rdeq_pair: ∀I,L1,L2,V1,V2.
+                 L1 ≛[V1] L2 → V1 ≛ V2 → L1.ⓑ{I}V1 ≛[#0] L2.ⓑ{I}V2.
 /2 width=1 by rex_pair/ qed.
 (*
-lemma rdeq_unit (h) (o): ∀f,I,L1,L2. 𝐈⦃f⦄ → L1 ⪤[cdeq_ext h o, cfull, f] L2 →
-                         L1.ⓤ{I} ≛[h, o, #0] L2.ⓤ{I}.
+lemma rdeq_unit: ∀f,I,L1,L2. 𝐈⦃f⦄ → L1 ⪤[cdeq_ext, cfull, f] L2 →
+                 L1.ⓤ{I} ≛[#0] L2.ⓤ{I}.
 /2 width=3 by rex_unit/ qed.
 *)
-lemma rdeq_lref (h) (o): ∀I1,I2,L1,L2,i.
-                         L1 ≛[h, o, #i] L2 → L1.ⓘ{I1} ≛[h, o, #↑i] L2.ⓘ{I2}.
+lemma rdeq_lref: ∀I1,I2,L1,L2,i.
+                 L1 ≛[#i] L2 → L1.ⓘ{I1} ≛[#↑i] L2.ⓘ{I2}.
 /2 width=1 by rex_lref/ qed.
 
-lemma rdeq_gref (h) (o): ∀I1,I2,L1,L2,l.
-                         L1 ≛[h, o, §l] L2 → L1.ⓘ{I1} ≛[h, o, §l] L2.ⓘ{I2}.
+lemma rdeq_gref: ∀I1,I2,L1,L2,l.
+                 L1 ≛[§l] L2 → L1.ⓘ{I1} ≛[§l] L2.ⓘ{I2}.
 /2 width=1 by rex_gref/ qed.
 
-lemma rdeq_bind_repl_dx (h) (o): ∀I,I1,L1,L2.∀T:term.
-                                 L1.ⓘ{I} ≛[h, o, T] L2.ⓘ{I1} →
-                                 ∀I2. I ≛[h, o] I2 →
-                                 L1.ⓘ{I} ≛[h, o, T] L2.ⓘ{I2}.
+lemma rdeq_bind_repl_dx: ∀I,I1,L1,L2.∀T:term.
+                         L1.ⓘ{I} ≛[T] L2.ⓘ{I1} →
+                         ∀I2. I ≛ I2 →
+                         L1.ⓘ{I} ≛[T] L2.ⓘ{I2}.
 /2 width=2 by rex_bind_repl_dx/ qed-.
 
 (* Basic inversion lemmas ***************************************************)
 
-lemma rdeq_inv_atom_sn (h) (o): ∀Y2. ∀T:term. ⋆ ≛[h, o, T] Y2 → Y2 = ⋆.
+lemma rdeq_inv_atom_sn: ∀Y2. ∀T:term. ⋆ ≛[T] Y2 → Y2 = ⋆.
 /2 width=3 by rex_inv_atom_sn/ qed-.
 
-lemma rdeq_inv_atom_dx (h) (o): ∀Y1. ∀T:term. Y1 ≛[h, o, T] ⋆ → Y1 = ⋆.
+lemma rdeq_inv_atom_dx: ∀Y1. ∀T:term. Y1 ≛[T] ⋆ → Y1 = ⋆.
 /2 width=3 by rex_inv_atom_dx/ qed-.
 (*
-lemma rdeq_inv_zero (h) (o): ∀Y1,Y2. Y1 ≛[h, o, #0] Y2 →
-                             ∨∨ ∧∧ Y1 = ⋆ & Y2 = ⋆
-                              | ∃∃I,L1,L2,V1,V2. L1 ≛[h, o, V1] L2 & V1 ≛[h, o] V2 &
-                                                 Y1 = L1.ⓑ{I}V1 & Y2 = L2.ⓑ{I}V2
-                              | ∃∃f,I,L1,L2. 𝐈⦃f⦄ & L1 ⪤[cdeq_ext h o, cfull, f] L2 &
-                                             Y1 = L1.ⓤ{I} & Y2 = L2.ⓤ{I}.
-#h #o #Y1 #Y2 #H elim (rex_inv_zero … H) -H *
+lemma rdeq_inv_zero: ∀Y1,Y2. Y1 ≛[#0] Y2 →
+                     ∨∨ ∧∧ Y1 = ⋆ & Y2 = ⋆
+                      | ∃∃I,L1,L2,V1,V2. L1 ≛[V1] L2 & V1 ≛ V2 &
+                                         Y1 = L1.ⓑ{I}V1 & Y2 = L2.ⓑ{I}V2
+                      | ∃∃f,I,L1,L2. 𝐈⦃f⦄ & L1 ⪤[cdeq_ext h o, cfull, f] L2 &
+                                         Y1 = L1.ⓤ{I} & Y2 = L2.ⓤ{I}.
+#Y1 #Y2 #H elim (rex_inv_zero … H) -H *
 /3 width=9 by or3_intro0, or3_intro1, or3_intro2, ex4_5_intro, ex4_4_intro, conj/
 qed-.
 *)
-lemma rdeq_inv_lref (h) (o): ∀Y1,Y2,i. Y1 ≛[h, o, #↑i] Y2 →
-                             ∨∨ ∧∧ Y1 = ⋆ & Y2 = ⋆
-                              | ∃∃I1,I2,L1,L2. L1 ≛[h, o, #i] L2 &
-                                               Y1 = L1.ⓘ{I1} & Y2 = L2.ⓘ{I2}.
+lemma rdeq_inv_lref: ∀Y1,Y2,i. Y1 ≛[#↑i] Y2 →
+                     ∨∨ ∧∧ Y1 = ⋆ & Y2 = ⋆
+                      | ∃∃I1,I2,L1,L2. L1 ≛[#i] L2 &
+                                       Y1 = L1.ⓘ{I1} & Y2 = L2.ⓘ{I2}.
 /2 width=1 by rex_inv_lref/ qed-.
 
 (* Basic_2A1: uses: lleq_inv_bind lleq_inv_bind_O *)
-lemma rdeq_inv_bind (h) (o): ∀p,I,L1,L2,V,T. L1 ≛[h, o, ⓑ{p,I}V.T] L2 →
-                             ∧∧ L1 ≛[h, o, V] L2 & L1.ⓑ{I}V ≛[h, o, T] L2.ⓑ{I}V.
+lemma rdeq_inv_bind: ∀p,I,L1,L2,V,T. L1 ≛[ⓑ{p,I}V.T] L2 →
+                     ∧∧ L1 ≛[V] L2 & L1.ⓑ{I}V ≛[T] L2.ⓑ{I}V.
 /2 width=2 by rex_inv_bind/ qed-.
 
 (* Basic_2A1: uses: lleq_inv_flat *)
-lemma rdeq_inv_flat (h) (o): ∀I,L1,L2,V,T. L1 ≛[h, o, ⓕ{I}V.T] L2 →
-                             ∧∧ L1 ≛[h, o, V] L2 & L1 ≛[h, o, T] L2.
+lemma rdeq_inv_flat: ∀I,L1,L2,V,T. L1 ≛[ⓕ{I}V.T] L2 →
+                     ∧∧ L1 ≛[V] L2 & L1 ≛[T] L2.
 /2 width=2 by rex_inv_flat/ qed-.
 
 (* Advanced inversion lemmas ************************************************)
 
-lemma rdeq_inv_zero_pair_sn (h) (o): ∀I,Y2,L1,V1. L1.ⓑ{I}V1 ≛[h, o, #0] Y2 →
-                                     ∃∃L2,V2. L1 ≛[h, o, V1] L2 & V1 ≛[h, o] V2 & Y2 = L2.ⓑ{I}V2.
+lemma rdeq_inv_zero_pair_sn: ∀I,Y2,L1,V1. L1.ⓑ{I}V1 ≛[#0] Y2 →
+                             ∃∃L2,V2. L1 ≛[V1] L2 & V1 ≛ V2 & Y2 = L2.ⓑ{I}V2.
 /2 width=1 by rex_inv_zero_pair_sn/ qed-.
 
-lemma rdeq_inv_zero_pair_dx (h) (o): ∀I,Y1,L2,V2. Y1 ≛[h, o, #0] L2.ⓑ{I}V2 →
-                                      ∃∃L1,V1. L1 ≛[h, o, V1] L2 & V1 ≛[h, o] V2 & Y1 = L1.ⓑ{I}V1.
+lemma rdeq_inv_zero_pair_dx: ∀I,Y1,L2,V2. Y1 ≛[#0] L2.ⓑ{I}V2 →
+                             ∃∃L1,V1. L1 ≛[V1] L2 & V1 ≛ V2 & Y1 = L1.ⓑ{I}V1.
 /2 width=1 by rex_inv_zero_pair_dx/ qed-.
 
-lemma rdeq_inv_lref_bind_sn (h) (o): ∀I1,Y2,L1,i. L1.ⓘ{I1} ≛[h, o, #↑i] Y2 →
-                                     ∃∃I2,L2. L1 ≛[h, o, #i] L2 & Y2 = L2.ⓘ{I2}.
+lemma rdeq_inv_lref_bind_sn: ∀I1,Y2,L1,i. L1.ⓘ{I1} ≛[#↑i] Y2 →
+                             ∃∃I2,L2. L1 ≛[#i] L2 & Y2 = L2.ⓘ{I2}.
 /2 width=2 by rex_inv_lref_bind_sn/ qed-.
 
-lemma rdeq_inv_lref_bind_dx (h) (o): ∀I2,Y1,L2,i. Y1 ≛[h, o, #↑i] L2.ⓘ{I2} →
-                                     ∃∃I1,L1. L1 ≛[h, o, #i] L2 & Y1 = L1.ⓘ{I1}.
+lemma rdeq_inv_lref_bind_dx: ∀I2,Y1,L2,i. Y1 ≛[#↑i] L2.ⓘ{I2} →
+                             ∃∃I1,L1. L1 ≛[#i] L2 & Y1 = L1.ⓘ{I1}.
 /2 width=2 by rex_inv_lref_bind_dx/ qed-.
 
 (* Basic forward lemmas *****************************************************)
 
-lemma rdeq_fwd_zero_pair (h) (o): ∀I,K1,K2,V1,V2.
-                                  K1.ⓑ{I}V1 ≛[h, o, #0] K2.ⓑ{I}V2 → K1 ≛[h, o, V1] K2.
+lemma rdeq_fwd_zero_pair: ∀I,K1,K2,V1,V2.
+                          K1.ⓑ{I}V1 ≛[#0] K2.ⓑ{I}V2 → K1 ≛[V1] K2.
 /2 width=3 by rex_fwd_zero_pair/ qed-.
 
 (* Basic_2A1: uses: lleq_fwd_bind_sn lleq_fwd_flat_sn *)
-lemma rdeq_fwd_pair_sn (h) (o): ∀I,L1,L2,V,T. L1 ≛[h, o, ②{I}V.T] L2 → L1 ≛[h, o, V] L2.
+lemma rdeq_fwd_pair_sn: ∀I,L1,L2,V,T. L1 ≛[②{I}V.T] L2 → L1 ≛[V] L2.
 /2 width=3 by rex_fwd_pair_sn/ qed-.
 
 (* Basic_2A1: uses: lleq_fwd_bind_dx lleq_fwd_bind_O_dx *)
-lemma rdeq_fwd_bind_dx (h) (o): ∀p,I,L1,L2,V,T.
-                                L1 ≛[h, o, ⓑ{p,I}V.T] L2 → L1.ⓑ{I}V ≛[h, o, T] L2.ⓑ{I}V.
+lemma rdeq_fwd_bind_dx: ∀p,I,L1,L2,V,T.
+                        L1 ≛[ⓑ{p,I}V.T] L2 → L1.ⓑ{I}V ≛[T] L2.ⓑ{I}V.
 /2 width=2 by rex_fwd_bind_dx/ qed-.
 
 (* Basic_2A1: uses: lleq_fwd_flat_dx *)
-lemma rdeq_fwd_flat_dx (h) (o): ∀I,L1,L2,V,T. L1 ≛[h, o, ⓕ{I}V.T] L2 → L1 ≛[h, o, T] L2.
+lemma rdeq_fwd_flat_dx: ∀I,L1,L2,V,T. L1 ≛[ⓕ{I}V.T] L2 → L1 ≛[T] L2.
 /2 width=3 by rex_fwd_flat_dx/ qed-.
 
-lemma rdeq_fwd_dx (h) (o): ∀I2,L1,K2. ∀T:term. L1 ≛[h, o, T] K2.ⓘ{I2} →
-                           ∃∃I1,K1. L1 = K1.ⓘ{I1}.
+lemma rdeq_fwd_dx: ∀I2,L1,K2. ∀T:term. L1 ≛[T] K2.ⓘ{I2} →
+                   ∃∃I1,K1. L1 = K1.ⓘ{I1}.
 /2 width=5 by rex_fwd_dx/ qed-.
index 825ed84d94b644a26ba529e6551beae43943a821..f2ea3b8945a7f2564d979e7101da42295daa72b6 100644 (file)
@@ -16,37 +16,37 @@ include "static_2/relocation/lifts_tdeq.ma".
 include "static_2/static/rex_drops.ma".
 include "static_2/static/rdeq.ma".
 
-(* DEGREE-BASED EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ******)
+(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
 
 (* Properties with generic slicing for local environments *******************)
 
-lemma rdeq_lifts_sn: ∀h,o. f_dedropable_sn (cdeq h o).
+lemma rdeq_lifts_sn: f_dedropable_sn cdeq.
 /3 width=5 by rex_liftable_dedropable_sn, tdeq_lifts_sn/ qed-.
 
 (* Inversion lemmas with generic slicing for local environments *************)
 
-lemma rdeq_inv_lifts_sn: ∀h,o. f_dropable_sn (cdeq h o).
+lemma rdeq_inv_lifts_sn: f_dropable_sn cdeq.
 /2 width=5 by rex_dropable_sn/ qed-.
 
-lemma rdeq_inv_lifts_dx: ∀h,o. f_dropable_dx (cdeq h o).
+lemma rdeq_inv_lifts_dx: f_dropable_dx cdeq.
 /2 width=5 by rex_dropable_dx/ qed-.
 
-lemma rdeq_inv_lifts_bi: ∀h,o,L1,L2,U. L1 ≛[h, o, U] L2 → ∀b,f. 𝐔⦃f⦄ →
+lemma rdeq_inv_lifts_bi: ∀L1,L2,U. L1 ≛[U] L2 → ∀b,f. 𝐔⦃f⦄ →
                          ∀K1,K2. ⬇*[b, f] L1 ≘ K1 → ⬇*[b, f] L2 ≘ K2 →
-                         ∀T. ⬆*[f] T ≘ U → K1 ≛[h, o, T] K2.
+                         ∀T. ⬆*[f] T ≘ U → K1 ≛[T] K2.
 /2 width=10 by rex_inv_lifts_bi/ qed-.
 
-lemma rdeq_inv_lref_pair_sn: ∀h,o,L1,L2,i. L1 ≛[h, o, #i] L2 → ∀I,K1,V1. ⬇*[i] L1 ≘ K1.ⓑ{I}V1 →
-                             ∃∃K2,V2. ⬇*[i] L2 ≘ K2.ⓑ{I}V2 & K1 ≛[h, o, V1] K2 & V1 ≛[h, o] V2.
+lemma rdeq_inv_lref_pair_sn: ∀L1,L2,i. L1 ≛[#i] L2 → ∀I,K1,V1. ⬇*[i] L1 ≘ K1.ⓑ{I}V1 →
+                             ∃∃K2,V2. ⬇*[i] L2 ≘ K2.ⓑ{I}V2 & K1 ≛[V1] K2 & V1 ≛ V2.
 /2 width=3 by rex_inv_lref_pair_sn/ qed-.
 
-lemma rdeq_inv_lref_pair_dx: ∀h,o,L1,L2,i. L1 ≛[h, o, #i] L2 → ∀I,K2,V2. ⬇*[i] L2 ≘ K2.ⓑ{I}V2 →
-                             ∃∃K1,V1. ⬇*[i] L1 ≘ K1.ⓑ{I}V1 & K1 ≛[h, o, V1] K2 & V1 ≛[h, o] V2.
+lemma rdeq_inv_lref_pair_dx: ∀L1,L2,i. L1 ≛[#i] L2 → ∀I,K2,V2. ⬇*[i] L2 ≘ K2.ⓑ{I}V2 →
+                             ∃∃K1,V1. ⬇*[i] L1 ≘ K1.ⓑ{I}V1 & K1 ≛[V1] K2 & V1 ≛ V2.
 /2 width=3 by rex_inv_lref_pair_dx/ qed-.
 
-lemma rdeq_inv_lref_pair_bi (h) (o) (L1) (L2) (i):
-                            L1 ≛[h,o,#i] L2 →
+lemma rdeq_inv_lref_pair_bi (L1) (L2) (i):
+                            L1 ≛[#i] L2 →
                             ∀I1,K1,V1. ⬇*[i] L1 ≘ K1.ⓑ{I1}V1 →
                             ∀I2,K2,V2. ⬇*[i] L2 ≘ K2.ⓑ{I2}V2 →
-                            ∧∧ K1 ≛[h,o,V1] K2 & V1 ≛[h,o] V2 & I1 = I2.
+                            ∧∧ K1 ≛[V1] K2 & V1 ≛ V2 & I1 = I2.
 /2 width=6 by rex_inv_lref_pair_bi/ qed-.
index e1a7afb3ae864aec6efded95620f090e19c03249..904bb601bdaa075656965fa91731d540d7588378 100644 (file)
 include "static_2/static/rex_fqup.ma".
 include "static_2/static/rdeq.ma".
 
-(* DEGREE-BASED EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ******)
+(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
 
 (* Advanced properties ******************************************************)
 
-lemma rdeq_refl: ∀h,o,T. reflexive … (rdeq h o T).
+lemma rdeq_refl: ∀T. reflexive … (rdeq T).
 /2 width=1 by rex_refl/ qed.
 
-lemma rdeq_pair_refl: ∀h,o,V1,V2. V1 ≛[h, o] V2 →
-                      ∀I,L. ∀T:term. L.ⓑ{I}V1 ≛[h, o, T] L.ⓑ{I}V2.
+lemma rdeq_pair_refl: ∀V1,V2. V1 ≛ V2 →
+                      ∀I,L. ∀T:term. L.ⓑ{I}V1 ≛[T] L.ⓑ{I}V2.
 /2 width=1 by rex_pair_refl/ qed.
 
 (* Advanced inversion lemmas ************************************************)
 
-lemma rdeq_inv_bind_void: ∀h,o,p,I,L1,L2,V,T. L1 ≛[h, o, ⓑ{p,I}V.T] L2 →
-                          L1 ≛[h, o, V] L2 ∧ L1.ⓧ ≛[h, o, T] L2.ⓧ.
+lemma rdeq_inv_bind_void: ∀p,I,L1,L2,V,T. L1 ≛[ⓑ{p,I}V.T] L2 →
+                          L1 ≛[V] L2 ∧ L1.ⓧ ≛[T] L2.ⓧ.
 /2 width=3 by rex_inv_bind_void/ qed-.
 
 (* Advanced forward lemmas **************************************************)
 
-lemma rdeq_fwd_bind_dx_void: ∀h,o,p,I,L1,L2,V,T.
-                             L1 ≛[h, o, ⓑ{p,I}V.T] L2 → L1.ⓧ ≛[h, o, T] L2.ⓧ.
+lemma rdeq_fwd_bind_dx_void: ∀p,I,L1,L2,V,T.
+                             L1 ≛[ⓑ{p,I}V.T] L2 → L1.ⓧ ≛[T] L2.ⓧ.
 /2 width=4 by rex_fwd_bind_dx_void/ qed-.
index 3ebf19118d8c89efb3d5be4aae88ff438fd89001..66fd1b7536a2aeb51a76d839e196394522a2eeb3 100644 (file)
@@ -17,14 +17,14 @@ include "static_2/static/rdeq_drops.ma".
 include "static_2/static/rdeq_fqup.ma".
 include "static_2/static/rdeq_rdeq.ma".
 
-(* DEGREE-BASED EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ******)
+(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
 
 (* Properties with extended structural successor for closures ***************)
 
-lemma fqu_tdeq_conf: ∀h,o,b,G1,G2,L1,L2,U1,T1. ⦃G1, L1, U1⦄ ⊐[b] ⦃G2, L2, T1⦄ →
-                     ∀U2. U1 ≛[h, o] U2 →
-                     ∃∃L,T2. ⦃G1, L1, U2⦄ ⊐[b] ⦃G2, L, T2⦄ & L2 ≛[h, o, T1] L & T1 ≛[h, o] T2.
-#h #o #b #G1 #G2 #L1 #L2 #U1 #T1 #H elim H -G1 -G2 -L1 -L2 -U1 -T1
+lemma fqu_tdeq_conf: ∀b,G1,G2,L1,L2,U1,T1. ⦃G1, L1, U1⦄ ⊐[b] ⦃G2, L2, T1⦄ →
+                     ∀U2. U1 ≛ U2 →
+                     ∃∃L,T2. ⦃G1, L1, U2⦄ ⊐[b] ⦃G2, L, T2⦄ & L2 ≛[T1] L & T1 ≛ T2.
+#b #G1 #G2 #L1 #L2 #U1 #T1 #H elim H -G1 -G2 -L1 -L2 -U1 -T1
 [ #I #G #L #W #X #H >(tdeq_inv_lref1 … H) -X
   /2 width=5 by fqu_lref_O, ex3_2_intro/
 | #I #G #L #W1 #U1 #X #H
@@ -45,19 +45,19 @@ lemma fqu_tdeq_conf: ∀h,o,b,G1,G2,L1,L2,U1,T1. ⦃G1, L1, U1⦄ ⊐[b] ⦃G2,
 ]
 qed-.
 
-lemma tdeq_fqu_trans: ∀h,o,b,G1,G2,L1,L2,U1,T1. ⦃G1, L1, U1⦄ ⊐[b] ⦃G2, L2, T1⦄ →
-                      ∀U2. U2 ≛[h, o] U1 →
-                      ∃∃L,T2. ⦃G1, L1, U2⦄ ⊐[b] ⦃G2, L, T2⦄ & T2 ≛[h, o] T1 & L ≛[h, o, T1] L2.
-#h #o #b #G1 #G2 #L1 #L2 #U1 #T1 #H12 #U2 #HU21
-elim (fqu_tdeq_conf … o … H12 U2) -H12
+lemma tdeq_fqu_trans: ∀b,G1,G2,L1,L2,U1,T1. ⦃G1, L1, U1⦄ ⊐[b] ⦃G2, L2, T1⦄ →
+                      ∀U2. U2 ≛ U1 →
+                      ∃∃L,T2. ⦃G1, L1, U2⦄ ⊐[b] ⦃G2, L, T2⦄ & T2 ≛ T1 & L ≛[T1] L2.
+#b #G1 #G2 #L1 #L2 #U1 #T1 #H12 #U2 #HU21
+elim (fqu_tdeq_conf … H12 U2) -H12
 /3 width=5 by rdeq_sym, tdeq_sym, ex3_2_intro/
 qed-.
 
 (* Basic_2A1: uses: lleq_fqu_trans *)
-lemma rdeq_fqu_trans: ∀h,o,b,G1,G2,L2,K2,T,U. ⦃G1, L2, T⦄ ⊐[b] ⦃G2, K2, U⦄ →
-                      ∀L1. L1 ≛[h, o, T] L2 →
-                      ∃∃K1,U0. ⦃G1, L1, T⦄ ⊐[b] ⦃G2, K1, U0⦄ & U0 ≛[h, o] U & K1 ≛[h, o, U] K2.
-#h #o #b #G1 #G2 #L2 #K2 #T #U #H elim H -G1 -G2 -L2 -K2 -T -U
+lemma rdeq_fqu_trans: ∀b,G1,G2,L2,K2,T,U. ⦃G1, L2, T⦄ ⊐[b] ⦃G2, K2, U⦄ →
+                      ∀L1. L1 ≛[T] L2 →
+                      ∃∃K1,U0. ⦃G1, L1, T⦄ ⊐[b] ⦃G2, K1, U0⦄ & U0 ≛ U & K1 ≛[U] K2.
+#b #G1 #G2 #L2 #K2 #T #U #H elim H -G1 -G2 -L2 -K2 -T -U
 [ #I #G #L2 #V2 #L1 #H elim (rdeq_inv_zero_pair_dx … H) -H
   #K1 #V1 #HV1 #HV12 #H destruct
   /3 width=7 by tdeq_rdeq_conf, fqu_lref_O, ex3_2_intro/
@@ -80,10 +80,10 @@ qed-.
 
 (* Properties with optional structural successor for closures ***************)
 
-lemma tdeq_fquq_trans: ∀h,o,b,G1,G2,L1,L2,U1,T1. ⦃G1, L1, U1⦄ ⊐⸮[b] ⦃G2, L2, T1⦄ →
-                       ∀U2. U2 ≛[h, o] U1 →
-                       ∃∃L,T2. ⦃G1, L1, U2⦄ ⊐⸮[b] ⦃G2, L, T2⦄ & T2 ≛[h, o] T1 & L ≛[h, o, T1] L2.
-#h #o #b #G1 #G2 #L1 #L2 #U1 #T1 #H elim H -H
+lemma tdeq_fquq_trans: ∀b,G1,G2,L1,L2,U1,T1. ⦃G1, L1, U1⦄ ⊐⸮[b] ⦃G2, L2, T1⦄ →
+                       ∀U2. U2 ≛ U1 →
+                       ∃∃L,T2. ⦃G1, L1, U2⦄ ⊐⸮[b] ⦃G2, L, T2⦄ & T2 ≛ T1 & L ≛[T1] L2.
+#b #G1 #G2 #L1 #L2 #U1 #T1 #H elim H -H
 [ #H #U2 #HU21 elim (tdeq_fqu_trans … H … HU21) -U1
   /3 width=5 by fqu_fquq, ex3_2_intro/
 | * #HG #HL #HT destruct /2 width=5 by ex3_2_intro/
@@ -91,10 +91,10 @@ lemma tdeq_fquq_trans: ∀h,o,b,G1,G2,L1,L2,U1,T1. ⦃G1, L1, U1⦄ ⊐⸮[b] 
 qed-.
 
 (* Basic_2A1: was just: lleq_fquq_trans *)
-lemma rdeq_fquq_trans: ∀h,o,b,G1,G2,L2,K2,T,U. ⦃G1, L2, T⦄ ⊐⸮[b] ⦃G2, K2, U⦄ →
-                       ∀L1. L1 ≛[h, o, T] L2 →
-                       ∃∃K1,U0. ⦃G1, L1, T⦄ ⊐⸮[b] ⦃G2, K1, U0⦄ & U0 ≛[h, o] U & K1 ≛[h, o, U] K2.
-#h #o #b #G1 #G2 #L2 #K2 #T #U #H elim H -H
+lemma rdeq_fquq_trans: ∀b,G1,G2,L2,K2,T,U. ⦃G1, L2, T⦄ ⊐⸮[b] ⦃G2, K2, U⦄ →
+                       ∀L1. L1 ≛[T] L2 →
+                       ∃∃K1,U0. ⦃G1, L1, T⦄ ⊐⸮[b] ⦃G2, K1, U0⦄ & U0 ≛ U & K1 ≛[U] K2.
+#b #G1 #G2 #L2 #K2 #T #U #H elim H -H
 [ #H #L1 #HL12 elim (rdeq_fqu_trans … H … HL12) -L2 /3 width=5 by fqu_fquq, ex3_2_intro/
 | * #HG #HL #HT destruct /2 width=5 by ex3_2_intro/
 ]
@@ -103,10 +103,10 @@ qed-.
 (* Properties with plus-iterated structural successor for closures **********)
 
 (* Basic_2A1: was just: lleq_fqup_trans *)
-lemma rdeq_fqup_trans: ∀h,o,b,G1,G2,L2,K2,T,U. ⦃G1, L2, T⦄ ⊐+[b] ⦃G2, K2, U⦄ →
-                       ∀L1. L1 ≛[h, o, T] L2 →
-                       ∃∃K1,U0. ⦃G1, L1, T⦄ ⊐+[b] ⦃G2, K1, U0⦄ & U0 ≛[h, o] U & K1 ≛[h, o, U] K2.
-#h #o #b #G1 #G2 #L2 #K2 #T #U #H @(fqup_ind … H) -G2 -K2 -U
+lemma rdeq_fqup_trans: ∀b,G1,G2,L2,K2,T,U. ⦃G1, L2, T⦄ ⊐+[b] ⦃G2, K2, U⦄ →
+                       ∀L1. L1 ≛[T] L2 →
+                       ∃∃K1,U0. ⦃G1, L1, T⦄ ⊐+[b] ⦃G2, K1, U0⦄ & U0 ≛ U & K1 ≛[U] K2.
+#b #G1 #G2 #L2 #K2 #T #U #H @(fqup_ind … H) -G2 -K2 -U
 [ #G2 #K2 #U #HTU #L1 #HL12 elim (rdeq_fqu_trans … HTU … HL12) -L2
   /3 width=5 by fqu_fqup, ex3_2_intro/
 | #G #G2 #K #K2 #U #U2 #_ #HU2 #IHTU #L1 #HL12
@@ -118,10 +118,10 @@ lemma rdeq_fqup_trans: ∀h,o,b,G1,G2,L2,K2,T,U. ⦃G1, L2, T⦄ ⊐+[b] ⦃G2,
 ]
 qed-.
 
-lemma tdeq_fqup_trans: ∀h,o,b,G1,G2,L1,L2,U1,T1. ⦃G1, L1, U1⦄ ⊐+[b] ⦃G2, L2, T1⦄ →
-                       ∀U2. U2 ≛[h, o] U1 →
-                       ∃∃L,T2. ⦃G1, L1, U2⦄ ⊐+[b] ⦃G2, L, T2⦄ & T2 ≛[h, o] T1 & L ≛[h, o, T1] L2.
-#h #o #b #G1 #G2 #L1 #L2 #U1 #T1 #H @(fqup_ind_dx … H) -G1 -L1 -U1
+lemma tdeq_fqup_trans: ∀b,G1,G2,L1,L2,U1,T1. ⦃G1, L1, U1⦄ ⊐+[b] ⦃G2, L2, T1⦄ →
+                       ∀U2. U2 ≛ U1 →
+                       ∃∃L,T2. ⦃G1, L1, U2⦄ ⊐+[b] ⦃G2, L, T2⦄ & T2 ≛ T1 & L ≛[T1] L2.
+#b #G1 #G2 #L1 #L2 #U1 #T1 #H @(fqup_ind_dx … H) -G1 -L1 -U1
 [ #G1 #L1 #U1 #H #U2 #HU21 elim (tdeq_fqu_trans … H … HU21) -U1
   /3 width=5 by fqu_fqup, ex3_2_intro/
 | #G1 #G #L1 #L #U1 #U #H #_ #IH #U2 #HU21
@@ -136,20 +136,20 @@ qed-.
 
 (* Properties with star-iterated structural successor for closures **********)
 
-lemma tdeq_fqus_trans: ∀h,o,b,G1,G2,L1,L2,U1,T1. ⦃G1, L1, U1⦄ ⊐*[b] ⦃G2, L2, T1⦄ →
-                       ∀U2. U2 ≛[h, o] U1 →
-                       ∃∃L,T2. ⦃G1, L1, U2⦄ ⊐*[b] ⦃G2, L, T2⦄ & T2 ≛[h, o] T1 & L ≛[h, o, T1] L2.
-#h #o #b #G1 #G2 #L1 #L2 #U1 #T1 #H #U2 #HU21 elim(fqus_inv_fqup … H) -H
+lemma tdeq_fqus_trans: ∀b,G1,G2,L1,L2,U1,T1. ⦃G1, L1, U1⦄ ⊐*[b] ⦃G2, L2, T1⦄ →
+                       ∀U2. U2 ≛ U1 →
+                       ∃∃L,T2. ⦃G1, L1, U2⦄ ⊐*[b] ⦃G2, L, T2⦄ & T2 ≛ T1 & L ≛[T1] L2.
+#b #G1 #G2 #L1 #L2 #U1 #T1 #H #U2 #HU21 elim(fqus_inv_fqup … H) -H
 [ #H elim (tdeq_fqup_trans … H … HU21) -U1 /3 width=5 by fqup_fqus, ex3_2_intro/
 | * #HG #HL #HT destruct /2 width=5 by ex3_2_intro/
 ]
 qed-.
 
 (* Basic_2A1: was just: lleq_fqus_trans *)
-lemma rdeq_fqus_trans: ∀h,o,b,G1,G2,L2,K2,T,U. ⦃G1, L2, T⦄ ⊐*[b] ⦃G2, K2, U⦄ →
-                       ∀L1. L1 ≛[h, o, T] L2 →
-                       ∃∃K1,U0. ⦃G1, L1, T⦄ ⊐*[b] ⦃G2, K1, U0⦄ & U0 ≛[h, o] U & K1 ≛[h, o, U] K2.
-#h #o #b #G1 #G2 #L2 #K2 #T #U #H #L1 #HL12 elim(fqus_inv_fqup … H) -H
+lemma rdeq_fqus_trans: ∀b,G1,G2,L2,K2,T,U. ⦃G1, L2, T⦄ ⊐*[b] ⦃G2, K2, U⦄ →
+                       ∀L1. L1 ≛[T] L2 →
+                       ∃∃K1,U0. ⦃G1, L1, T⦄ ⊐*[b] ⦃G2, K1, U0⦄ & U0 ≛ U & K1 ≛[U] K2.
+#b #G1 #G2 #L2 #K2 #T #U #H #L1 #HL12 elim(fqus_inv_fqup … H) -H
 [ #H elim (rdeq_fqup_trans … H … HL12) -L2 /3 width=5 by fqup_fqus, ex3_2_intro/
 | * #HG #HL #HT destruct /2 width=5 by ex3_2_intro/
 ]
index e0f3bb23611d72e8f78f25c438ce2100700a1f5c..c5b0e5f311fab2b781bf46a41f99b69d66ceb7d9 100644 (file)
@@ -17,13 +17,13 @@ include "static_2/static/rex_length.ma".
 include "static_2/static/rex_fsle.ma".
 include "static_2/static/rdeq.ma".
 
-(* DEGREE-BASED EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ******)
+(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
 
 (* Advanved properties with free variables inclusion ************************)
 
-lemma rdeq_fsge_comp (h) (o): rex_fsge_compatible (cdeq h o).
-#h #o #L1 #L2 #T * #f1 #Hf1 #HL12
-lapply (frees_rdeq_conf h o … Hf1 … HL12)
+lemma rdeq_fsge_comp: rex_fsge_compatible cdeq.
+#L1 #L2 #T * #f1 #Hf1 #HL12
+lapply (frees_rdeq_conf … Hf1 … HL12)
 lapply (sex_fwd_length … HL12)
 /3 width=8 by lveq_length_eq, ex4_4_intro/ (**) (* full auto fails *)
 qed-.
@@ -31,25 +31,25 @@ qed-.
 (* Properties with length for local environments ****************************)
 
 (* Basic_2A1: uses: lleq_sort *)
-lemma rdeq_sort_length (h) (o): ∀L1,L2. |L1| = |L2| → ∀s. L1 ≛[h, o, ⋆s] L2.
+lemma rdeq_sort_length: ∀L1,L2. |L1| = |L2| → ∀s. L1 ≛[⋆s] L2.
 /2 width=1 by rex_sort_length/ qed.
 
 (* Basic_2A1: uses: lleq_gref *)
-lemma rdeq_gref_length (h) (o): ∀L1,L2. |L1| = |L2| → ∀l. L1 ≛[h, o, §l] L2.
+lemma rdeq_gref_length: ∀L1,L2. |L1| = |L2| → ∀l. L1 ≛[§l] L2.
 /2 width=1 by rex_gref_length/ qed.
 
-lemma rdeq_unit_length (h) (o): ∀L1,L2. |L1| = |L2| →
-                                ∀I. L1.ⓤ{I} ≛[h, o, #0] L2.ⓤ{I}.
+lemma rdeq_unit_length: ∀L1,L2. |L1| = |L2| →
+                        ∀I. L1.ⓤ{I} ≛[#0] L2.ⓤ{I}.
 /2 width=1 by rex_unit_length/ qed.
 
 (* Basic_2A1: uses: lleq_lift_le lleq_lift_ge *)
-lemma rdeq_lifts_bi (h) (o): ∀L1,L2. |L1| = |L2| → ∀K1,K2,T. K1 ≛[h, o, T] K2 →
-                             ∀b,f. ⬇*[b, f] L1 ≘ K1 → ⬇*[b, f] L2 ≘ K2 →
-                             ∀U. ⬆*[f] T ≘ U → L1 ≛[h, o, U] L2.
+lemma rdeq_lifts_bi: ∀L1,L2. |L1| = |L2| → ∀K1,K2,T. K1 ≛[T] K2 →
+                     ∀b,f. ⬇*[b, f] L1 ≘ K1 → ⬇*[b, f] L2 ≘ K2 →
+                     ∀U. ⬆*[f] T ≘ U → L1 ≛[U] L2.
 /3 width=9 by rex_lifts_bi, tdeq_lifts_sn/ qed-.
 
 (* Forward lemmas with length for local environments ************************)
 
 (* Basic_2A1: lleq_fwd_length *)
-lemma rdeq_fwd_length (h) (o): ∀L1,L2. ∀T:term. L1 ≛[h, o, T] L2 → |L1| = |L2|.
+lemma rdeq_fwd_length: ∀L1,L2. ∀T:term. L1 ≛[T] L2 → |L1| = |L2|.
 /2 width=3 by rex_fwd_length/ qed-.
index 316438d662241b1c5a9325fa866db8ff9ff78d34..30069162df6bb1575ab1056b90558ec858b7eb37 100644 (file)
@@ -16,85 +16,84 @@ include "static_2/syntax/ext2_ext2.ma".
 include "static_2/syntax/tdeq_tdeq.ma".
 include "static_2/static/rdeq_length.ma".
 
-(* DEGREE-BASED EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ******)
+(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
 
 (* Advanced properties ******************************************************)
 
 (* Basic_2A1: uses: lleq_sym *)
-lemma rdeq_sym: ∀h,o,T. symmetric … (rdeq h o T).
+lemma rdeq_sym: ∀T. symmetric … (rdeq T).
 /3 width=3 by rdeq_fsge_comp, rex_sym, tdeq_sym/ qed-.
 
 (* Basic_2A1: uses: lleq_dec *)
-lemma rdeq_dec: ∀h,o,L1,L2. ∀T:term. Decidable (L1 ≛[h, o, T] L2).
+lemma rdeq_dec: ∀L1,L2. ∀T:term. Decidable (L1 ≛[T] L2).
 /3 width=1 by rex_dec, tdeq_dec/ qed-.
 
 (* Main properties **********************************************************)
 
 (* Basic_2A1: uses: lleq_bind lleq_bind_O *) 
-theorem rdeq_bind: ∀h,o,p,I,L1,L2,V1,V2,T.
-                   L1 ≛[h, o, V1] L2 → L1.ⓑ{I}V1 ≛[h, o, T] L2.ⓑ{I}V2 →
-                   L1 ≛[h, o, ⓑ{p,I}V1.T] L2.
+theorem rdeq_bind: ∀p,I,L1,L2,V1,V2,T.
+                   L1 ≛[V1] L2 → L1.ⓑ{I}V1 ≛[T] L2.ⓑ{I}V2 →
+                   L1 ≛[ⓑ{p,I}V1.T] L2.
 /2 width=2 by rex_bind/ qed.
 
 (* Basic_2A1: uses: lleq_flat *)
-theorem rdeq_flat: ∀h,o,I,L1,L2,V,T. L1 ≛[h, o, V] L2 → L1 ≛[h, o, T] L2 →
-                   L1 ≛[h, o, ⓕ{I}V.T] L2.
+theorem rdeq_flat: ∀I,L1,L2,V,T.
+                   L1 ≛[V] L2 → L1 ≛[T] L2 → L1 ≛[ⓕ{I}V.T] L2.
 /2 width=1 by rex_flat/ qed.
 
-theorem rdeq_bind_void: ∀h,o,p,I,L1,L2,V,T.
-                        L1 ≛[h, o, V] L2 → L1.ⓧ ≛[h, o, T] L2.ⓧ →
-                        L1 ≛[h, o, ⓑ{p,I}V.T] L2.
+theorem rdeq_bind_void: ∀p,I,L1,L2,V,T.
+                        L1 ≛[V] L2 → L1.ⓧ ≛[T] L2.ⓧ → L1 ≛[ⓑ{p,I}V.T] L2.
 /2 width=1 by rex_bind_void/ qed.
 
 (* Basic_2A1: uses: lleq_trans *)
-theorem rdeq_trans: ∀h,o,T. Transitive … (rdeq h o T).
-#h #o #T #L1 #L * #f1 #Hf1 #HL1 #L2 * #f2 #Hf2 #HL2
+theorem rdeq_trans: ∀T. Transitive … (rdeq T).
+#T #L1 #L * #f1 #Hf1 #HL1 #L2 * #f2 #Hf2 #HL2
 lapply (frees_tdeq_conf_rdeq … Hf1 T … HL1) // #H0
 lapply (frees_mono … Hf2 … H0) -Hf2 -H0
 /5 width=7 by sex_trans, sex_eq_repl_back, tdeq_trans, ext2_trans, ex2_intro/
 qed-.
 
 (* Basic_2A1: uses: lleq_canc_sn *)
-theorem rdeq_canc_sn: ∀h,o,T. left_cancellable … (rdeq h o T).
+theorem rdeq_canc_sn: ∀T. left_cancellable … (rdeq T).
 /3 width=3 by rdeq_trans, rdeq_sym/ qed-.
 
 (* Basic_2A1: uses: lleq_canc_dx *)
-theorem rdeq_canc_dx: ∀h,o,T. right_cancellable … (rdeq h o T).
+theorem rdeq_canc_dx: ∀T. right_cancellable … (rdeq T).
 /3 width=3 by rdeq_trans, rdeq_sym/ qed-.
 
-theorem rdeq_repl: ∀h,o,L1,L2. ∀T:term. L1 ≛[h, o, T] L2 →
-                   ∀K1. L1 ≛[h, o, T] K1 → ∀K2. L2 ≛[h, o, T] K2 → K1 ≛[h, o, T] K2.
+theorem rdeq_repl: ∀L1,L2. ∀T:term. L1 ≛[T] L2 →
+                   ∀K1. L1 ≛[T] K1 → ∀K2. L2 ≛[T] K2 → K1 ≛[T] K2.
 /3 width=3 by rdeq_canc_sn, rdeq_trans/ qed-.
 
 (* Negated properties *******************************************************)
 
 (* Note: auto works with /4 width=8/ so rdeq_canc_sn is preferred **********) 
 (* Basic_2A1: uses: lleq_nlleq_trans *)
-lemma rdeq_rdneq_trans: ∀h,o.∀T:term.∀L1,L. L1 ≛[h, o, T] L →
-                        ∀L2. (L ≛[h, o, T] L2 → ⊥) → (L1 ≛[h, o, T] L2 → ⊥).
+lemma rdeq_rdneq_trans: ∀T:term.∀L1,L. L1 ≛[T] L →
+                        ∀L2. (L ≛[T] L2 → ⊥) → (L1 ≛[T] L2 → ⊥).
 /3 width=3 by rdeq_canc_sn/ qed-.
 
 (* Basic_2A1: uses: nlleq_lleq_div *)
-lemma rdneq_rdeq_div: ∀h,o.∀T:term.∀L2,L. L2 ≛[h, o, T] L →
-                      ∀L1. (L1 ≛[h, o, T] L → ⊥) → (L1 ≛[h, o, T] L2 → ⊥).
+lemma rdneq_rdeq_div: ∀T:term.∀L2,L. L2 ≛[T] L →
+                      ∀L1. (L1 ≛[T] L → ⊥) → (L1 ≛[T] L2 → ⊥).
 /3 width=3 by rdeq_trans/ qed-.
 
-theorem rdneq_rdeq_canc_dx: ∀h,o,L1,L. ∀T:term. (L1 ≛[h, o, T] L → ⊥) →
-                            ∀L2. L2 ≛[h, o, T] L → L1 ≛[h, o, T] L2 → ⊥.
+theorem rdneq_rdeq_canc_dx: ∀L1,L. ∀T:term. (L1 ≛[T] L → ⊥) →
+                            ∀L2. L2 ≛[T] L → L1 ≛[T] L2 → ⊥.
 /3 width=3 by rdeq_trans/ qed-.
 
 (* Negated inversion lemmas *************************************************)
 
 (* Basic_2A1: uses: nlleq_inv_bind nlleq_inv_bind_O *)
-lemma rdneq_inv_bind: ∀h,o,p,I,L1,L2,V,T. (L1 ≛[h, o, ⓑ{p,I}V.T] L2 → ⊥) →
-                      (L1 ≛[h, o, V] L2 → ⊥) ∨ (L1.ⓑ{I}V ≛[h, o, T] L2.ⓑ{I}V → ⊥).
+lemma rdneq_inv_bind: ∀p,I,L1,L2,V,T. (L1 ≛[ⓑ{p,I}V.T] L2 → ⊥) →
+                      (L1 ≛[V] L2 → ⊥) ∨ (L1.ⓑ{I}V ≛[T] L2.ⓑ{I}V → ⊥).
 /3 width=2 by rnex_inv_bind, tdeq_dec/ qed-.
 
 (* Basic_2A1: uses: nlleq_inv_flat *)
-lemma rdneq_inv_flat: ∀h,o,I,L1,L2,V,T. (L1 ≛[h, o, ⓕ{I}V.T] L2 → ⊥) →
-                      (L1 ≛[h, o, V] L2 → ⊥) ∨ (L1 ≛[h, o, T] L2 → ⊥).
+lemma rdneq_inv_flat: ∀I,L1,L2,V,T. (L1 ≛[ⓕ{I}V.T] L2 → ⊥) →
+                      (L1 ≛[V] L2 → ⊥) ∨ (L1 ≛[T] L2 → ⊥).
 /3 width=2 by rnex_inv_flat, tdeq_dec/ qed-.
 
-lemma rdneq_inv_bind_void: ∀h,o,p,I,L1,L2,V,T. (L1 ≛[h, o, ⓑ{p,I}V.T] L2 → ⊥) →
-                           (L1 ≛[h, o, V] L2 → ⊥) ∨ (L1.ⓧ ≛[h, o, T] L2.ⓧ → ⊥).
+lemma rdneq_inv_bind_void: ∀p,I,L1,L2,V,T. (L1 ≛[ⓑ{p,I}V.T] L2 → ⊥) →
+                           (L1 ≛[V] L2 → ⊥) ∨ (L1.ⓧ ≛[T] L2.ⓧ → ⊥).
 /3 width=3 by rnex_inv_bind_void, tdeq_dec/ qed-.
index ab3ebca9886a9233688001da30f8f48f11750404..5ef8bef9b99598b1fbf6535804815eaeb393225a 100644 (file)
 include "static_2/static/req_fsle.ma".
 include "static_2/static/rdeq.ma".
 
-(* DEGREE-BASED EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ******)
+(* SORT-IRRELEVANT EQUIVALENCE FOR LOCAL ENVIRONMENTS ON REFERRED ENTRIES ***)
 
 (* Properties with syntactic equivalence on referred entries ****************)
 
-lemma req_rdeq: ∀h,o,L1,L2. ∀T:term. L1 ≡[T] L2 → L1 ≛[h, o, T] L2.
+lemma req_rdeq: ∀L1,L2. ∀T:term. L1 ≡[T] L2 → L1 ≛[T] L2.
 /2 width=3 by rex_co/ qed.
 
-lemma req_rdeq_trans: ∀h,o,L1,L. ∀T:term. L1 ≡[T] L →
-                      ∀L2. L ≛[h, o, T] L2 → L1 ≛[h, o, T] L2.
+lemma req_rdeq_trans: ∀L1,L. ∀T:term. L1 ≡[T] L →
+                      ∀L2. L ≛[T] L2 → L1 ≛[T] L2.
 /2 width=3 by req_rex_trans/ qed-.
index 358533f04015ed2016350694c14d6e480475e8d7..60c1e4d13750ced7ac2d026d2b350cf89e4b762f 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "static_2/notation/relations/stareq_4.ma".
-include "static_2/syntax/item_sd.ma".
+include "static_2/notation/relations/stareq_2.ma".
 include "static_2/syntax/term.ma".
 
-(* DEGREE-BASED EQUIVALENCE ON TERMS ****************************************)
+(* SORT-IRRELEVANT EQUIVALENCE ON TERMS *************************************)
 
-inductive tdeq (h) (o): relation term ≝
-| tdeq_sort: ∀s1,s2,d. deg h o s1 d → deg h o s2 d → tdeq h o (⋆s1) (⋆s2)
-| tdeq_lref: ∀i. tdeq h o (#i) (#i)
-| tdeq_gref: ∀l. tdeq h o (§l) (§l)
-| tdeq_pair: ∀I,V1,V2,T1,T2. tdeq h o V1 V2 → tdeq h o T1 T2 → tdeq h o (②{I}V1.T1) (②{I}V2.T2)
+inductive tdeq: relation term ≝
+| tdeq_sort: ∀s1,s2. tdeq (⋆s1) (⋆s2)
+| tdeq_lref: ∀i. tdeq (#i) (#i)
+| tdeq_gref: ∀l. tdeq (§l) (§l)
+| tdeq_pair: ∀I,V1,V2,T1,T2. tdeq V1 V2 → tdeq T1 T2 → tdeq (②{I}V1.T1) (②{I}V2.T2)
 .
 
 interpretation
-   "context-free degree-based equivalence (term)"
-   'StarEq h o T1 T2 = (tdeq h o T1 T2).
+   "context-free sort-irrelevant equivalence (term)"
+   'StarEq T1 T2 = (tdeq T1 T2).
 
 (* Basic properties *********************************************************)
 
-lemma tdeq_refl: ∀h,o. reflexive … (tdeq h o).
-#h #o #T elim T -T /2 width=1 by tdeq_pair/
+lemma tdeq_refl: reflexive … tdeq.
+#T elim T -T /2 width=1 by tdeq_pair/
 * /2 width=1 by tdeq_lref, tdeq_gref/
-#s elim (deg_total h o s) /2 width=3 by tdeq_sort/
 qed.
 
-lemma tdeq_sym: ∀h,o. symmetric … (tdeq h o).
-#h #o #T1 #T2 #H elim H -T1 -T2
+lemma tdeq_sym: symmetric … tdeq.
+#T1 #T2 #H elim H -T1 -T2
 /2 width=3 by tdeq_sort, tdeq_lref, tdeq_gref, tdeq_pair/
 qed-.
 
 (* Basic inversion lemmas ***************************************************)
 
-fact tdeq_inv_sort1_aux: ∀h,o,X,Y. X ≛[h, o] Y → ∀s1. X = ⋆s1 →
-                         ∃∃s2,d. deg h o s1 d & deg h o s2 d & Y = ⋆s2.
-#h #o #X #Y * -X -Y
-[ #s1 #s2 #d #Hs1 #Hs2 #s #H destruct /2 width=5 by ex3_2_intro/
+fact tdeq_inv_sort1_aux: ∀X,Y. X ≛ Y → ∀s1. X = ⋆s1 →
+                         ∃s2. Y = ⋆s2.
+#X #Y * -X -Y
+[ #s1 #s2 #s #H destruct /2 width=2 by ex_intro/
 | #i #s #H destruct
 | #l #s #H destruct
 | #I #V1 #V2 #T1 #T2 #_ #_ #s #H destruct
 ]
 qed-.
 
-lemma tdeq_inv_sort1: ∀h,o,Y,s1. ⋆s1 ≛[h, o] Y →
-                      ∃∃s2,d. deg h o s1 d & deg h o s2 d & Y = ⋆s2.
-/2 width=3 by tdeq_inv_sort1_aux/ qed-.
+lemma tdeq_inv_sort1: ∀Y,s1. ⋆s1 ≛ Y →
+                      ∃s2. Y = ⋆s2.
+/2 width=4 by tdeq_inv_sort1_aux/ qed-.
 
-fact tdeq_inv_lref1_aux: ∀h,o,X,Y. X ≛[h, o] Y → ∀i. X = #i → Y = #i.
-#h #o #X #Y * -X -Y //
-[ #s1 #s2 #d #_ #_ #j #H destruct
+fact tdeq_inv_lref1_aux: ∀X,Y. X ≛ Y → ∀i. X = #i → Y = #i.
+#X #Y * -X -Y //
+[ #s1 #s2 #j #H destruct
 | #I #V1 #V2 #T1 #T2 #_ #_ #j #H destruct
 ]
 qed-.
 
-lemma tdeq_inv_lref1: ∀h,o,Y,i. #i ≛[h, o] Y → Y = #i.
+lemma tdeq_inv_lref1: ∀Y,i. #i ≛ Y → Y = #i.
 /2 width=5 by tdeq_inv_lref1_aux/ qed-.
 
-fact tdeq_inv_gref1_aux: ∀h,o,X,Y. X ≛[h, o] Y → ∀l. X = §l → Y = §l.
-#h #o #X #Y * -X -Y //
-[ #s1 #s2 #d #_ #_ #k #H destruct
+fact tdeq_inv_gref1_aux: ∀X,Y. X ≛ Y → ∀l. X = §l → Y = §l.
+#X #Y * -X -Y //
+[ #s1 #s2 #k #H destruct
 | #I #V1 #V2 #T1 #T2 #_ #_ #k #H destruct
 ]
 qed-.
 
-lemma tdeq_inv_gref1: ∀h,o,Y,l. §l ≛[h, o] Y → Y = §l.
+lemma tdeq_inv_gref1: ∀Y,l. §l ≛ Y → Y = §l.
 /2 width=5 by tdeq_inv_gref1_aux/ qed-.
 
-fact tdeq_inv_pair1_aux: ∀h,o,X,Y. X ≛[h, o] Y → ∀I,V1,T1. X = ②{I}V1.T1 →
-                         ∃∃V2,T2. V1 ≛[h, o] V2 & T1 ≛[h, o] T2 & Y = ②{I}V2.T2.
-#h #o #X #Y * -X -Y
-[ #s1 #s2 #d #_ #_ #J #W1 #U1 #H destruct
+fact tdeq_inv_pair1_aux: ∀X,Y. X ≛ Y → ∀I,V1,T1. X = ②{I}V1.T1 →
+                         ∃∃V2,T2. V1 ≛ V2 & T1 ≛ T2 & Y = ②{I}V2.T2.
+#X #Y * -X -Y
+[ #s1 #s2 #J #W1 #U1 #H destruct
 | #i #J #W1 #U1 #H destruct
 | #l #J #W1 #U1 #H destruct
 | #I #V1 #V2 #T1 #T2 #HV #HT #J #W1 #U1 #H destruct /2 width=5 by ex3_2_intro/
 ]
 qed-.
 
-lemma tdeq_inv_pair1: ∀h,o,I,V1,T1,Y. ②{I}V1.T1 ≛[h, o] Y →
-                      ∃∃V2,T2. V1 ≛[h, o] V2 & T1 ≛[h, o] T2 & Y = ②{I}V2.T2.
+lemma tdeq_inv_pair1: ∀I,V1,T1,Y. ②{I}V1.T1 ≛ Y →
+                      ∃∃V2,T2. V1 ≛ V2 & T1 ≛ T2 & Y = ②{I}V2.T2.
 /2 width=3 by tdeq_inv_pair1_aux/ qed-.
 
-lemma tdeq_inv_sort2: ∀h,o,X1,s2. X1 ≛[h, o] ⋆s2 →
-                      ∃∃s1,d. deg h o s1 d & deg h o s2 d & X1 = ⋆s1.
-#h #o #X1 #s2 #H
-elim (tdeq_inv_sort1 h o X1 s2)
-/2 width=5 by tdeq_sym, ex3_2_intro/
+lemma tdeq_inv_sort2: ∀X1,s2. X1 ≛ ⋆s2 →
+                      ∃s1. X1 = ⋆s1.
+#X1 #s2 #H
+elim (tdeq_inv_sort1 X1 s2)
+/2 width=2 by tdeq_sym, ex_intro/
 qed-.
 
-lemma tdeq_inv_pair2: ∀h,o,I,X1,V2,T2. X1 ≛[h, o] ②{I}V2.T2 →
-                      ∃∃V1,T1. V1 ≛[h, o] V2 & T1 ≛[h, o] T2 & X1 = ②{I}V1.T1.
-#h #o #I #X1 #V2 #T2 #H
-elim (tdeq_inv_pair1 h o I V2 T2 X1)
+lemma tdeq_inv_pair2: ∀I,X1,V2,T2. X1 ≛ ②{I}V2.T2 →
+                      ∃∃V1,T1. V1 ≛ V2 & T1 ≛ T2 & X1 = ②{I}V1.T1.
+#I #X1 #V2 #T2 #H
+elim (tdeq_inv_pair1 I V2 T2 X1)
 [ #V1 #T1 #HV #HT #H destruct ]
 /3 width=5 by tdeq_sym, ex3_2_intro/
 qed-.
 
 (* Advanced inversion lemmas ************************************************)
 
-lemma tdeq_inv_sort1_deg: ∀h,o,Y,s1. ⋆s1 ≛[h, o] Y → ∀d. deg h o s1 d →
-                          ∃∃s2. deg h o s2 d & Y = ⋆s2.
-#h #o #Y #s1 #H #d #Hs1 elim (tdeq_inv_sort1 … H) -H
-#s2 #x #Hx <(deg_mono h o … Hx … Hs1) -s1 -d /2 width=3 by ex2_intro/
-qed-.
-
-lemma tdeq_inv_sort_deg: ∀h,o,s1,s2. ⋆s1 ≛[h, o] ⋆s2 →
-                         ∀d1,d2. deg h o s1 d1 → deg h o s2 d2 →
-                         d1 = d2.
-#h #o #s1 #y #H #d1 #d2 #Hs1 #Hy
-elim (tdeq_inv_sort1_deg … H … Hs1) -s1 #s2 #Hs2 #H destruct
-<(deg_mono h o … Hy … Hs2) -s2 -d1 //
-qed-.
-
-lemma tdeq_inv_pair: ∀h,o,I1,I2,V1,V2,T1,T2. ②{I1}V1.T1 ≛[h, o] ②{I2}V2.T2 →
-                     ∧∧ I1 = I2 & V1 ≛[h, o] V2 & T1 ≛[h, o] T2.
-#h #o #I1 #I2 #V1 #V2 #T1 #T2 #H elim (tdeq_inv_pair1 … H) -H
+lemma tdeq_inv_pair: ∀I1,I2,V1,V2,T1,T2. ②{I1}V1.T1 ≛ ②{I2}V2.T2 →
+                     ∧∧ I1 = I2 & V1 ≛ V2 & T1 ≛ T2.
+#I1 #I2 #V1 #V2 #T1 #T2 #H elim (tdeq_inv_pair1 … H) -H
 #V0 #T0 #HV #HT #H destruct /2 width=1 by and3_intro/
 qed-.
 
-lemma tdeq_inv_pair_xy_x: ∀h,o,I,V,T. ②{I}V.T ≛[h, o] V → ⊥.
-#h #o #I #V elim V -V
+lemma tdeq_inv_pair_xy_x: ∀I,V,T. ②{I}V.T ≛ V → ⊥.
+#I #V elim V -V
 [ #J #T #H elim (tdeq_inv_pair1 … H) -H #X #Y #_ #_ #H destruct
 | #J #X #Y #IHX #_ #T #H elim (tdeq_inv_pair … H) -H #H #HY #_ destruct /2 width=2 by/
 ]
 qed-.
 
-lemma tdeq_inv_pair_xy_y: ∀h,o,I,T,V. ②{I}V.T ≛[h, o] T → ⊥.
-#h #o #I #T elim T -T
+lemma tdeq_inv_pair_xy_y: ∀I,T,V. ②{I}V.T ≛ T → ⊥.
+#I #T elim T -T
 [ #J #V #H elim (tdeq_inv_pair1 … H) -H #X #Y #_ #_ #H destruct
 | #J #X #Y #_ #IHY #V #H elim (tdeq_inv_pair … H) -H #H #_ #HY destruct /2 width=2 by/
 ]
@@ -145,23 +129,19 @@ qed-.
 
 (* Basic forward lemmas *****************************************************)
 
-lemma tdeq_fwd_atom1: ∀h,o,I,Y. ⓪{I} ≛[h, o] Y → ∃J. Y = ⓪{J}.
-#h #o * #x #Y #H [ elim (tdeq_inv_sort1 … H) -H ]
+lemma tdeq_fwd_atom1: ∀I,Y. ⓪{I} ≛ Y → ∃J. Y = ⓪{J}.
+* #x #Y #H [ elim (tdeq_inv_sort1 … H) -H ]
 /3 width=4 by tdeq_inv_gref1, tdeq_inv_lref1, ex_intro/
 qed-.
 
 (* Advanced properties ******************************************************)
 
-lemma tdeq_dec: ∀h,o,T1,T2. Decidable (T1 ≛[h, o] T2).
-#h #o #T1 elim T1 -T1 [ * #s1 | #I1 #V1 #T1 #IHV #IHT ] * [1,3,5,7: * #s2 |*: #I2 #V2 #T2 ]
-[ elim (deg_total h o s1) #d1 #H1
-  elim (deg_total h o s2) #d2 #H2
-  elim (eq_nat_dec d1 d2) #Hd12 destruct /3 width=3 by tdeq_sort, or_introl/
-  @or_intror #H
-  lapply (tdeq_inv_sort_deg … H … H1 H2) -H -H1 -H2 /2 width=1 by/
+lemma tdeq_dec: ∀T1,T2. Decidable (T1 ≛ T2).
+#T1 elim T1 -T1 [ * #s1 | #I1 #V1 #T1 #IHV #IHT ] * [1,3,5,7: * #s2 |*: #I2 #V2 #T2 ]
+[ /3 width=1 by tdeq_sort, or_introl/
 |2,3,13:
   @or_intror #H
-  elim (tdeq_inv_sort1 … H) -H #x1 #x2 #_ #_ #H destruct
+  elim (tdeq_inv_sort1 … H) -H #x #H destruct
 |4,6,14:
   @or_intror #H
   lapply (tdeq_inv_lref1 … H) -H #H destruct
@@ -192,13 +172,13 @@ qed-.
 
 (* Negated inversion lemmas *************************************************)
 
-lemma tdneq_inv_pair: ∀h,o,I1,I2,V1,V2,T1,T2.
-                      (②{I1}V1.T1 ≛[h, o] ②{I2}V2.T2 → ⊥) → 
+lemma tdneq_inv_pair: ∀I1,I2,V1,V2,T1,T2.
+                      (②{I1}V1.T1 ≛ ②{I2}V2.T2 → ⊥) → 
                       ∨∨ I1 = I2 → ⊥
-                      |  (V1 ≛[h, o] V2 → ⊥)
-                      |  (T1 ≛[h, o] T2 → ⊥).
-#h #o #I1 #I2 #V1 #V2 #T1 #T2 #H12
+                      |  (V1 ≛ V2 → ⊥)
+                      |  (T1 ≛ T2 → ⊥).
+#I1 #I2 #V1 #V2 #T1 #T2 #H12
 elim (eq_item2_dec I1 I2) /3 width=1 by or3_intro0/ #H destruct
-elim (tdeq_dec h o V1 V2) /3 width=1 by or3_intro1/
-elim (tdeq_dec h o T1 T2) /4 width=1 by tdeq_pair, or3_intro2/
+elim (tdeq_dec V1 V2) /3 width=1 by or3_intro1/
+elim (tdeq_dec T1 T2) /4 width=1 by tdeq_pair, or3_intro2/
 qed-.
index f13292089072cddf525a5372cac1d7b2abdd4764..09f7c5a7617f5a2988e5a798e6c4cd89509b34ef 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "static_2/notation/relations/stareq_5.ma".
+include "static_2/notation/relations/stareq_3.ma".
 include "static_2/syntax/cext2.ma".
 include "static_2/syntax/tdeq.ma".
 
-(* EXTENDED DEGREE-BASED EQUIVALENCE ****************************************)
+(* EXTENDED SORT-IRRELEVANT EQUIVALENCE *************************************)
 
-definition tdeq_ext: ∀h. sd h → relation bind ≝
-                     λh,o. ext2 (tdeq h o).
+definition tdeq_ext: relation bind ≝
+                     ext2 tdeq.
 
-definition cdeq: ∀h. sd h → relation3 lenv term term ≝
-                 λh,o,L. tdeq h o.
+definition cdeq: relation3 lenv term term ≝
+                 λL. tdeq.
 
-definition cdeq_ext: ∀h. sd h → relation3 lenv bind bind ≝
-                     λh,o. cext2 (cdeq h o).
+definition cdeq_ext: relation3 lenv bind bind ≝
+                     cext2 cdeq.
 
 interpretation
-   "context-free degree-based equivalence (binder)"
-   'StarEq h o I1 I2 = (tdeq_ext h o I1 I2).
+   "context-free sort-irrelevant equivalence (binder)"
+   'StarEq I1 I2 = (tdeq_ext I1 I2).
 
 interpretation
-   "context-dependent degree-based equivalence (term)"
-   'StarEq h o L T1 T2 = (cdeq h o L T1 T2).
+   "context-dependent sort-irrelevant equivalence (term)"
+   'StarEq L T1 T2 = (cdeq L T1 T2).
 
 interpretation
-   "context-dependent degree-based equivalence (binder)"
-   'StarEq h o L I1 I2 = (cdeq_ext h o L I1 I2).
+   "context-dependent sort-irrelevant equivalence (binder)"
+   'StarEq L I1 I2 = (cdeq_ext L I1 I2).
index a8bbec3fd14e17d42c3d15258b65b971f6abf252..3ed01ec19c7ab9321d8648edb8a997ef50101ca4 100644 (file)
 
 include "static_2/syntax/tdeq.ma".
 
-(* DEGREE-BASED EQUIVALENCE ON TERMS ****************************************)
+(* SORT-IRRELEVANT EQUIVALENCE ON TERMS *************************************)
 
 (* Main properties **********************************************************)
 
-theorem tdeq_trans: ∀h,o. Transitive … (tdeq h o).
-#h #o #T1 #T #H elim H -T1 -T
-[ #s1 #s #d #Hs1 #Hs #X #H
-  elim (tdeq_inv_sort1_deg … H … Hs) -s /2 width=3 by tdeq_sort/
+theorem tdeq_trans: Transitive … tdeq.
+#T1 #T #H elim H -T1 -T
+[ #s1 #s #X #H
+  elim (tdeq_inv_sort1 … H) -s /2 width=1 by tdeq_sort/
 | #i1 #i #H <(tdeq_inv_lref1 … H) -H //
 | #l1 #l #H <(tdeq_inv_gref1 … H) -H //
 | #I #V1 #V #T1 #T #_ #_ #IHV #IHT #X #H
@@ -29,22 +29,20 @@ theorem tdeq_trans: ∀h,o. Transitive … (tdeq h o).
 ]
 qed-.
 
-theorem tdeq_canc_sn: ∀h,o. left_cancellable … (tdeq h o).
+theorem tdeq_canc_sn: left_cancellable … tdeq.
 /3 width=3 by tdeq_trans, tdeq_sym/ qed-.
 
-theorem tdeq_canc_dx: ∀h,o. right_cancellable … (tdeq h o).
+theorem tdeq_canc_dx: right_cancellable … tdeq.
 /3 width=3 by tdeq_trans, tdeq_sym/ qed-.
 
-theorem tdeq_repl: ∀h,o,T1,T2. T1 ≛[h, o] T2 →
-                   ∀U1. T1 ≛[h, o] U1 → ∀U2. T2 ≛[h, o] U2 → U1 ≛[h, o] U2.
+theorem tdeq_repl: ∀T1,T2. T1 ≛ T2 →
+                   ∀U1. T1 ≛ U1 → ∀U2. T2 ≛ U2 → U1 ≛ U2.
 /3 width=3 by tdeq_canc_sn, tdeq_trans/ qed-.
 
 (* Negated main properies ***************************************************)
 
-theorem tdeq_tdneq_trans: ∀h,o,T1,T. T1 ≛[h, o] T → ∀T2. (T ≛[h, o] T2 → ⊥) →
-                          T1 ≛[h, o] T2 → ⊥.
+theorem tdeq_tdneq_trans: ∀T1,T. T1 ≛ T → ∀T2. (T ≛ T2 → ⊥) → T1 ≛ T2 → ⊥.
 /3 width=3 by tdeq_canc_sn/ qed-.
 
-theorem tdneq_tdeq_canc_dx: ∀h,o,T1,T. (T1 ≛[h, o] T → ⊥) → ∀T2. T2 ≛[h, o] T →
-                            T1 ≛[h, o] T2 → ⊥.
+theorem tdneq_tdeq_canc_dx: ∀T1,T. (T1 ≛ T → ⊥) → ∀T2. T2 ≛ T → T1 ≛ T2 → ⊥.
 /3 width=3 by tdeq_trans/ qed-.
index 37c4af70ac3d9a46c56371229c9e001e21e6f800..052f9f775b900e254251d21c98d4e96e0c7208a6 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "static_2/notation/relations/topiso_4.ma".
-include "static_2/syntax/item_sd.ma".
+include "static_2/notation/relations/topiso_2.ma".
 include "static_2/syntax/term.ma".
 
 (* HEAD EQUIVALENCE FOR TERMS ***********************************************)
 
 (* Basic_2A1: includes: tsts_atom tsts_pair *)
-inductive theq (h) (o): relation term ≝
-| theq_sort: ∀s1,s2,d. deg h o s1 d → deg h o s2 d → theq h o (⋆s1) (⋆s2)
-| theq_lref: ∀i. theq h o (#i) (#i)
-| theq_gref: ∀l. theq h o (§l) (§l)
-| theq_pair: ∀I,V1,V2,T1,T2. theq h o (②{I}V1.T1) (②{I}V2.T2)
+inductive theq: relation term ≝
+| theq_sort: ∀s1,s2. theq (⋆s1) (⋆s2)
+| theq_lref: ∀i. theq (#i) (#i)
+| theq_gref: ∀l. theq (§l) (§l)
+| theq_pair: ∀I,V1,V2,T1,T2. theq (②{I}V1.T1) (②{I}V2.T2)
 .
 
-interpretation "head equivalence (term)" 'TopIso h o T1 T2 = (theq h o T1 T2).
+interpretation "head equivalence (term)" 'TopIso T1 T2 = (theq T1 T2).
 
 (* Basic inversion lemmas ***************************************************)
 
-fact theq_inv_sort1_aux: ∀h,o,X,Y. X ⩳[h, o] Y → ∀s1. X = ⋆s1 →
-                         ∃∃s2,d. deg h o s1 d & deg h o s2 d & Y = ⋆s2.
-#h #o #X #Y * -X -Y
-[ #s1 #s2 #d #Hs1 #Hs2 #s #H destruct /2 width=5 by ex3_2_intro/
+fact theq_inv_sort1_aux: ∀X,Y. X ⩳ Y → ∀s1. X = ⋆s1 →
+                         ∃s2. Y = ⋆s2.
+#X #Y * -X -Y
+[ #s1 #s2 #s #H destruct /2 width=2 by ex_intro/
 | #i #s #H destruct
 | #l #s #H destruct
 | #I #V1 #V2 #T1 #T2 #s #H destruct
@@ -41,36 +40,36 @@ fact theq_inv_sort1_aux: ∀h,o,X,Y. X ⩳[h, o] Y → ∀s1. X = ⋆s1 →
 qed-.
 
 (* Basic_1: was just: iso_gen_sort *)
-lemma theq_inv_sort1: ∀h,o,Y,s1. ⋆s1 ⩳[h, o] Y →
-                      ∃∃s2,d. deg h o s1 d & deg h o s2 d & Y = ⋆s2.
-/2 width=3 by theq_inv_sort1_aux/ qed-.
+lemma theq_inv_sort1: ∀Y,s1. ⋆s1 ⩳ Y →
+                      ∃s2. Y = ⋆s2.
+/2 width=4 by theq_inv_sort1_aux/ qed-.
 
-fact theq_inv_lref1_aux: ∀h,o,X,Y. X ⩳[h, o] Y → ∀i. X = #i → Y = #i.
-#h #o #X #Y * -X -Y //
-[ #s1 #s2 #d #_ #_ #j #H destruct
+fact theq_inv_lref1_aux: ∀X,Y. X ⩳ Y → ∀i. X = #i → Y = #i.
+#X #Y * -X -Y //
+[ #s1 #s2 #j #H destruct
 | #I #V1 #V2 #T1 #T2 #j #H destruct
 ]
 qed-.
 
 (* Basic_1: was: iso_gen_lref *)
-lemma theq_inv_lref1: ∀h,o,Y,i. #i ⩳[h, o] Y → Y = #i.
+lemma theq_inv_lref1: ∀Y,i. #i ⩳ Y → Y = #i.
 /2 width=5 by theq_inv_lref1_aux/ qed-.
 
-fact theq_inv_gref1_aux: ∀h,o,X,Y. X ⩳[h, o] Y → ∀l. X = §l → Y = §l.
-#h #o #X #Y * -X -Y //
-[ #s1 #s2 #d #_ #_ #k #H destruct
+fact theq_inv_gref1_aux: ∀X,Y. X ⩳ Y → ∀l. X = §l → Y = §l.
+#X #Y * -X -Y //
+[ #s1 #s2 #k #H destruct
 | #I #V1 #V2 #T1 #T2 #k #H destruct
 ]
 qed-.
 
-lemma theq_inv_gref1: ∀h,o,Y,l. §l ⩳[h, o] Y → Y = §l.
+lemma theq_inv_gref1: ∀Y,l. §l ⩳ Y → Y = §l.
 /2 width=5 by theq_inv_gref1_aux/ qed-.
 
-fact theq_inv_pair1_aux: ∀h,o,T1,T2. T1 ⩳[h, o] T2 →
+fact theq_inv_pair1_aux: ∀T1,T2. T1 ⩳ T2 →
                          ∀J,W1,U1. T1 = ②{J}W1.U1 →
                          ∃∃W2,U2. T2 = ②{J}W2.U2.
-#h #o #T1 #T2 * -T1 -T2
-[ #s1 #s2 #d #_ #_ #J #W1 #U1 #H destruct
+#T1 #T2 * -T1 -T2
+[ #s1 #s2 #J #W1 #U1 #H destruct
 | #i #J #W1 #U1 #H destruct
 | #l #J #W1 #U1 #H destruct
 | #I #V1 #V2 #T1 #T2 #J #W1 #U1 #H destruct /2 width=3 by ex1_2_intro/
@@ -79,15 +78,15 @@ qed-.
 
 (* Basic_1: was: iso_gen_head *)
 (* Basic_2A1: was: tsts_inv_pair1 *)
-lemma theq_inv_pair1: ∀h,o,J,W1,U1,T2. ②{J}W1.U1 ⩳[h, o] T2 →
+lemma theq_inv_pair1: ∀J,W1,U1,T2. ②{J}W1.U1 ⩳ T2 →
                       ∃∃W2,U2. T2 = ②{J}W2. U2.
 /2 width=7 by theq_inv_pair1_aux/ qed-.
 
-fact theq_inv_pair2_aux: ∀h,o,T1,T2. T1 ⩳[h, o] T2 →
+fact theq_inv_pair2_aux: ∀T1,T2. T1 ⩳ T2 →
                          ∀J,W2,U2. T2 = ②{J}W2.U2 →
                          ∃∃W1,U1. T1 = ②{J}W1.U1.
-#h #o #T1 #T2 * -T1 -T2
-[ #s1 #s2 #d #_ #_ #J #W2 #U2 #H destruct
+#T1 #T2 * -T1 -T2
+[ #s1 #s2 #J #W2 #U2 #H destruct
 | #i #J #W2 #U2 #H destruct
 | #l #J #W2 #U2 #H destruct
 | #I #V1 #V2 #T1 #T2 #J #W2 #U2 #H destruct /2 width=3 by ex1_2_intro/
@@ -95,29 +94,15 @@ fact theq_inv_pair2_aux: ∀h,o,T1,T2. T1 ⩳[h, o] T2 →
 qed-.
 
 (* Basic_2A1: was: tsts_inv_pair2 *)
-lemma theq_inv_pair2: ∀h,o,J,T1,W2,U2. T1 ⩳[h, o] ②{J}W2.U2 →
+lemma theq_inv_pair2: ∀J,T1,W2,U2. T1 ⩳ ②{J}W2.U2 →
                       ∃∃W1,U1. T1 = ②{J}W1.U1.
 /2 width=7 by theq_inv_pair2_aux/ qed-.
 
 (* Advanced inversion lemmas ************************************************)
 
-lemma theq_inv_sort1_deg: ∀h,o,Y,s1. ⋆s1 ⩳[h, o] Y → ∀d. deg h o s1 d →
-                          ∃∃s2. deg h o s2 d & Y = ⋆s2.
-#h #o #Y #s1 #H #d #Hs1 elim (theq_inv_sort1 … H) -H
-#s2 #x #Hx <(deg_mono h o … Hx … Hs1) -s1 -d /2 width=3 by ex2_intro/
-qed-.
-
-lemma theq_inv_sort_deg: ∀h,o,s1,s2. ⋆s1 ⩳[h, o] ⋆s2 →
-                         ∀d1,d2. deg h o s1 d1 → deg h o s2 d2 →
-                         d1 = d2.
-#h #o #s1 #y #H #d1 #d2 #Hs1 #Hy
-elim (theq_inv_sort1_deg … H … Hs1) -s1 #s2 #Hs2 #H destruct
-<(deg_mono h o … Hy … Hs2) -s2 -d1 //
-qed-.
-
-lemma theq_inv_pair: ∀h,o,I1,I2,V1,V2,T1,T2. ②{I1}V1.T1 ⩳[h, o] ②{I2}V2.T2 →
+lemma theq_inv_pair: ∀I1,I2,V1,V2,T1,T2. ②{I1}V1.T1 ⩳ ②{I2}V2.T2 →
                      I1 = I2.
-#h #o #I1 #I2 #V1 #V2 #T1 #T2 #H elim (theq_inv_pair1 … H) -H
+#I1 #I2 #V1 #V2 #T1 #T2 #H elim (theq_inv_pair1 … H) -H
 #V0 #T0 #H destruct //
 qed-.
 
@@ -125,28 +110,23 @@ qed-.
 
 (* Basic_1: was: iso_refl *)
 (* Basic_2A1: was: tsts_refl *)
-lemma theq_refl: ∀h,o. reflexive … (theq h o).
-#h #o * //
+lemma theq_refl: reflexive … theq.
+* //
 * /2 width=1 by theq_lref, theq_gref/
-#s elim (deg_total h o s) /2 width=3 by theq_sort/
 qed.
 
 (* Basic_2A1: was: tsts_sym *)
-lemma theq_sym: ∀h,o. symmetric … (theq h o).
-#h #o #T1 #T2 * -T1 -T2 /2 width=3 by theq_sort/
+lemma theq_sym: symmetric … theq.
+#T1 #T2 * -T1 -T2 /2 width=3 by theq_sort/
 qed-.
 
 (* Basic_2A1: was: tsts_dec *)
-lemma theq_dec: ∀h,o,T1,T2. Decidable (T1 ⩳[h, o] T2).
-#h #o * [ * #s1 | #I1 #V1 #T1 ] * [1,3,5,7: * #s2 |*: #I2 #V2 #T2 ]
-[ elim (deg_total h o s1) #d1 #H1
-  elim (deg_total h o s2) #d2 #H2
-  elim (eq_nat_dec d1 d2) #Hd12 destruct /3 width=3 by theq_sort, or_introl/
-  @or_intror #H
-  lapply (theq_inv_sort_deg … H … H1 H2) -H -H1 -H2 /2 width=1 by/
+lemma theq_dec: ∀T1,T2. Decidable (T1 ⩳ T2).
+* [ * #s1 | #I1 #V1 #T1 ] * [1,3,5,7: * #s2 |*: #I2 #V2 #T2 ]
+[ /3 width=1 by theq_sort, or_introl/
 |2,3,13:
   @or_intror #H
-  elim (theq_inv_sort1 … H) -H #x1 #x2 #_ #_ #H destruct
+  elim (theq_inv_sort1 … H) -H #x #H destruct
 |4,6,14:
   @or_intror #H
   lapply (theq_inv_lref1 … H) -H #H destruct
index 9ad5ed55081e8f3ed030a6d2af2a124ae85c7b19..d9f59e4a51ccc87b2ab5173bdc70ba39698259e0 100644 (file)
@@ -20,12 +20,12 @@ include "static_2/syntax/theq.ma".
 (* Properies with simple (neutral) terms ************************************)
 
 (* Basic_2A1: was: simple_tsts_repl_dx *)
-lemma simple_theq_repl_dx: ∀h,o,T1,T2. T1 ⩳[h, o] T2 → 𝐒⦃T1⦄ → 𝐒⦃T2⦄.
-#h #o #T1 #T2 * -T1 -T2 //
+lemma simple_theq_repl_dx: ∀T1,T2. T1 ⩳ T2 → 𝐒⦃T1⦄ → 𝐒⦃T2⦄.
+#T1 #T2 * -T1 -T2 //
 #I #V1 #V2 #T1 #T2 #H
 elim (simple_inv_pair … H) -H #J #H destruct //
 qed-.
 
 (* Basic_2A1: was: simple_tsts_repl_sn *)
-lemma simple_theq_repl_sn: ∀h,o,T1,T2. T1 ⩳[h, o] T2 → 𝐒⦃T2⦄ → 𝐒⦃T1⦄.
-/3 width=5 by simple_theq_repl_dx, theq_sym/ qed-.
+lemma simple_theq_repl_sn: ∀T1,T2. T1 ⩳ T2 → 𝐒⦃T2⦄ → 𝐒⦃T1⦄.
+/3 width=3 by simple_theq_repl_dx, theq_sym/ qed-.
index f7212ee11a67e321be45714e02ba5d3034e5523e..47138912579062039d7a0779f1e05334c384c339 100644 (file)
@@ -21,9 +21,9 @@ include "static_2/syntax/theq_simple.ma".
 
 (* Basic_1: was only: iso_flats_lref_bind_false iso_flats_flat_bind_false *)
 (* Basic_2A1: was: tsts_inv_bind_applv_simple *)
-lemma theq_inv_applv_bind_simple: ∀h,o,p,I,Vs,V2,T1,T2. ⒶVs.T1 ⩳[h, o] ⓑ{p,I}V2.T2 →
-                                  𝐒⦃T1⦄ → ⊥.
-#h #o #p #I #Vs #V2 #T1 #T2 #H elim (theq_inv_pair2 … H) -H
+lemma theq_inv_applv_bind_simple (p) (I):
+      ∀Vs,V2,T1,T2. ⒶVs.T1 ⩳ ⓑ{p,I}V2.T2 → 𝐒⦃T1⦄ → ⊥.
+#p #I #Vs #V2 #T1 #T2 #H elim (theq_inv_pair2 … H) -H
 #V0 #T0 elim Vs -Vs normalize
 [ #H destruct #H /2 width=5 by simple_inv_bind/
 | #V #Vs #_ #H destruct
index 99447dba76fb81f08daace0c7ed5c7158f38ee23..b70559d87e370f87503509a04e888c27d982395f 100644 (file)
@@ -17,8 +17,8 @@ include "static_2/syntax/theq.ma".
 
 (* HEAD EQUIVALENCE FOR TERMS ***********************************************)
 
-(* Properties with degree-based equivalence for terms ***********************)
+(* Properties with sort-irrelevant equivalence for terms ********************)
 
-lemma tdeq_theq: ∀h,o,T1,T2. T1 ≛[h, o] T2 → T1 ⩳[h, o] T2.
-#h #o #T1 #T2 * -T1 -T2 /2 width=3 by theq_sort, theq_pair/
+lemma tdeq_theq: ∀T1,T2. T1 ≛ T2 → T1 ⩳ T2.
+#T1 #T2 * -T1 -T2 /2 width=1 by theq_sort, theq_pair/
 qed.
index e9e586d009805d723c13c0b135057dcc3d251cb9..6b33049eeac80de1668688940ff042e0ca5fcaf3 100644 (file)
@@ -20,10 +20,10 @@ include "static_2/syntax/theq.ma".
 
 (* Basic_1: was: iso_trans *)
 (* Basic_2A1: was: tsts_trans *)
-theorem theq_trans: ∀h,o. Transitive … (theq h o).
-#h #o #T1 #T * -T1 -T
-[ #s1 #s #d #Hs1 #Hs #X #H
-  elim (theq_inv_sort1_deg … H … Hs) -s /2 width=3 by theq_sort/
+theorem theq_trans: Transitive … theq.
+#T1 #T * -T1 -T
+[ #s1 #s #X #H
+  elim (theq_inv_sort1 … H) -s /2 width=1 by theq_sort/
 | #i1 #i #H <(theq_inv_lref1 … H) -H //
 | #l1 #l #H <(theq_inv_gref1 … H) -H //
 | #I #V1 #V #T1 #T #X #H
@@ -32,9 +32,9 @@ theorem theq_trans: ∀h,o. Transitive … (theq h o).
 qed-.
 
 (* Basic_2A1: was: tsts_canc_sn *)
-theorem theq_canc_sn: ∀h,o. left_cancellable … (theq h o).
+theorem theq_canc_sn: left_cancellable … theq.
 /3 width=3 by theq_trans, theq_sym/ qed-.
 
 (* Basic_2A1: was: tsts_canc_dx *)
-theorem theq_canc_dx: ∀h,o. right_cancellable … (theq h o).
+theorem theq_canc_dx: right_cancellable … theq.
 /3 width=3 by theq_trans, theq_sym/ qed-.
index 990057cc1e78d6464e1337ec808cc6146470e8e2..8b9fec7bb3f1cd016284f9ca3828448aaa6a15ab 100644 (file)
@@ -31,8 +31,8 @@ table {
           }
         ]
         [ { "degree-based equivalence" * } {
-             [ [ "for closures on referred entries" ] "fdeq" + "( ⦃?,?,?⦄ ≛[?,?] ⦃?,?,?⦄ )" "fdeq_fqup" + "fdeq_fqus" + "fdeq_req" + "fdeq_fdeq" * ]
-             [ [ "for lenvs on referred entries" ] "rdeq" + "( ? ≛[?,?,?] ? )" "rdeq_length" + "rdeq_drops" + "rdeq_fqup" + "rdeq_fqus" + "rdeq_req" + "rdeq_rdeq" * ]
+             [ [ "for closures on referred entries" ] "fdeq" + "( ⦃?,?,?⦄ ≛ ⦃?,?,?⦄ )" "fdeq_fqup" + "fdeq_fqus" + "fdeq_req" + "fdeq_fdeq" * ]
+             [ [ "for lenvs on referred entries" ] "rdeq" + "( ? ≛[?] ? )" "rdeq_length" + "rdeq_drops" + "rdeq_fqup" + "rdeq_fqus" + "rdeq_req" + "rdeq_rdeq" * ]
           }
         ]
         [ { "syntactic equivalence" * } {
@@ -112,12 +112,12 @@ table {
           }
         ]
         [ { "head equivalence" * } {
-             [ [ "for terms" ] "theq" + "( ? ⩳[?,?] ? )" "theq_simple" + "theq_tdeq" + "theq_theq" + "theq_simple_vector" * ]
+             [ [ "for terms" ] "theq" + "( ? ⩳ ? )" "theq_simple" + "theq_tdeq" + "theq_theq" + "theq_simple_vector" * ]
           }
         ]
         [ { "degree-based equivalence" * } {
-             [ [ "" ] "tdeq_ext" + "( ? ≛[?,?] ? )" + "( ? ⊢ ? ≛[?,?] ? )" * ]
-             [ [ "" ] "tdeq" + "( ? ≛[?,?] ? )" "tdeq_tdeq" * ]
+             [ [ "" ] "tdeq_ext" + "( ? ≛ ? )" + "( ? ⊢ ? ≛ ? )" * ]
+             [ [ "" ] "tdeq" + "( ? ≛ ? )" "tdeq_tdeq" * ]
           }
         ]
         [ { "closures" * } {
@@ -152,7 +152,6 @@ table {
           }
         ]
         [ { "items" * } {
-             [ [ "" ] "item_sd" * ]
              [ [ "" ] "item_sh" * ]
              [ [ "" ] "item" * ]
           }