include "static_2/relocation/lifts_vector.ma".
include "basic_2/rt_computation/cpxs_teqo.ma".
-(* UNBOUND CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS **************)
+(* EXTENDED CONTEXT-SENSITIVE PARALLEL RT-COMPUTATION FOR TERMS *************)
(* Vector form of forward lemmas with outer equivalence for terms ***********)
-lemma cpxs_fwd_sort_vector (h) (G) (L):
- â\88\80s,Vs,X2. â\9dªG,Lâ\9d« â\8a¢ â\92¶Vs.â\8b\86s â¬\88*[h] X2 â\86\92 â\92¶Vs.â\8b\86s ⩳ X2.
-#h #G #L #s #Vs elim Vs -Vs /2 width=4 by cpxs_fwd_sort/
+lemma cpxs_fwd_sort_vector (G) (L):
+ â\88\80s,Vs,X2. â\9d¨G,Lâ\9d© â\8a¢ â\92¶Vs.â\8b\86s â¬\88* X2 â\86\92 â\92¶Vs.â\8b\86s ~ X2.
+#G #L #s #Vs elim Vs -Vs /2 width=4 by cpxs_fwd_sort/
#V #Vs #IHVs #X2 #H
elim (cpxs_inv_appl1 … H) -H *
[ -IHVs #V1 #T1 #_ #_ #H destruct /2 width=1 by teqo_pair/
qed-.
(* Basic_2A1: was: cpxs_fwd_delta_vector *)
-lemma cpxs_fwd_delta_drops_vector (h) (I) (G) (L) (K):
+lemma cpxs_fwd_delta_drops_vector (I) (G) (L) (K):
∀V1,i. ⇩[i] L ≘ K.ⓑ[I]V1 →
∀V2. ⇧[↑i] V1 ≘ V2 →
- â\88\80Vs,X2. â\9dªG,Lâ\9d« â\8a¢ â\92¶Vs.#i â¬\88*[h] X2 →
- ∨∨ ⒶVs.#i ⩳ X2 | ❪G,L❫ ⊢ ⒶVs.V2 ⬈*[h] X2.
-#h #I #G #L #K #V1 #i #HLK #V2 #HV12 #Vs
+ â\88\80Vs,X2. â\9d¨G,Lâ\9d© â\8a¢ â\92¶Vs.#i â¬\88* X2 →
+ ∨∨ ⒶVs.#i ~ X2 | ❨G,L❩ ⊢ ⒶVs.V2 ⬈* X2.
+#I #G #L #K #V1 #i #HLK #V2 #HV12 #Vs
elim Vs -Vs /2 width=5 by cpxs_fwd_delta_drops/
#V #Vs #IHVs #X2 #H -K -V1
elim (cpxs_inv_appl1 … H) -H *
qed-.
(* Basic_1: was just: pr3_iso_appls_beta *)
-lemma cpxs_fwd_beta_vector (h) (p) (G) (L):
- â\88\80Vs,V,W,T,X2. â\9dªG,Lâ\9d« â\8a¢ â\92¶Vs.â\93\90V.â\93\9b[p]W.T â¬\88*[h] X2 →
- ∨∨ ⒶVs.ⓐV.ⓛ[p]W. T ⩳ X2 | ❪G,L❫ ⊢ ⒶVs.ⓓ[p]ⓝW.V.T ⬈*[h] X2.
-#h #p #G #L #Vs elim Vs -Vs /2 width=1 by cpxs_fwd_beta/
+lemma cpxs_fwd_beta_vector (p) (G) (L):
+ â\88\80Vs,V,W,T,X2. â\9d¨G,Lâ\9d© â\8a¢ â\92¶Vs.â\93\90V.â\93\9b[p]W.T â¬\88* X2 →
+ ∨∨ ⒶVs.ⓐV.ⓛ[p]W. T ~ X2 | ❨G,L❩ ⊢ ⒶVs.ⓓ[p]ⓝW.V.T ⬈* X2.
+#p #G #L #Vs elim Vs -Vs /2 width=1 by cpxs_fwd_beta/
#V0 #Vs #IHVs #V #W #T #X2 #H
elim (cpxs_inv_appl1 … H) -H *
[ -IHVs #V1 #T1 #_ #_ #H destruct /2 width=1 by teqo_pair, or_introl/
qed-.
(* Basic_1: was just: pr3_iso_appls_abbr *)
-lemma cpxs_fwd_theta_vector (h) (G) (L):
+lemma cpxs_fwd_theta_vector (G) (L):
∀V1b,V2b. ⇧[1] V1b ≘ V2b →
- â\88\80p,V,T,X2. â\9dªG,Lâ\9d« â\8a¢ â\92¶V1b.â\93\93[p]V.T â¬\88*[h] X2 →
- ∨∨ ⒶV1b.ⓓ[p]V.T ⩳ X2 | ❪G,L❫ ⊢ ⓓ[p]V.ⒶV2b.T ⬈*[h] X2.
-#h #G #L #V1b #V2b * -V1b -V2b /3 width=1 by or_intror/
+ â\88\80p,V,T,X2. â\9d¨G,Lâ\9d© â\8a¢ â\92¶V1b.â\93\93[p]V.T â¬\88* X2 →
+ ∨∨ ⒶV1b.ⓓ[p]V.T ~ X2 | ❨G,L❩ ⊢ ⓓ[p]V.ⒶV2b.T ⬈* X2.
+#G #L #V1b #V2b * -V1b -V2b /3 width=1 by or_intror/
#V1b #V2b #V1a #V2a #HV12a #HV12b #p
generalize in match HV12a; -HV12a
generalize in match V2a; -V2a
qed-.
(* Basic_1: was just: pr3_iso_appls_cast *)
-lemma cpxs_fwd_cast_vector (h) (G) (L):
- â\88\80Vs,W,T,X2. â\9dªG,Lâ\9d« â\8a¢ â\92¶Vs.â\93\9dW.T â¬\88*[h] X2 →
- ∨∨ ⒶVs. ⓝW. T ⩳ X2
- | â\9dªG,Lâ\9d« â\8a¢ â\92¶Vs.T â¬\88*[h] X2
- | â\9dªG,Lâ\9d« â\8a¢ â\92¶Vs.W â¬\88*[h] X2.
-#h #G #L #Vs elim Vs -Vs /2 width=1 by cpxs_fwd_cast/
+lemma cpxs_fwd_cast_vector (G) (L):
+ â\88\80Vs,W,T,X2. â\9d¨G,Lâ\9d© â\8a¢ â\92¶Vs.â\93\9dW.T â¬\88* X2 →
+ ∨∨ ⒶVs. ⓝW. T ~ X2
+ | â\9d¨G,Lâ\9d© â\8a¢ â\92¶Vs.T â¬\88* X2
+ | â\9d¨G,Lâ\9d© â\8a¢ â\92¶Vs.W â¬\88* X2.
+#G #L #Vs elim Vs -Vs /2 width=1 by cpxs_fwd_cast/
#V #Vs #IHVs #W #T #X2 #H
elim (cpxs_inv_appl1 … H) -H *
[ -IHVs #V0 #T0 #_ #_ #H destruct /2 width=1 by teqo_pair, or3_intro0/
qed-.
(* Basic_1: was just: nf2_iso_appls_lref *)
-lemma cpxs_fwd_cnx_vector (h) (G) (L):
- â\88\80T. ð\9d\90\92â\9dªTâ\9d« â\86\92 â\9dªG,Lâ\9d« â\8a¢ â¬\88ð\9d\90\8d[h] T →
- â\88\80Vs,X2. â\9dªG,Lâ\9d« â\8a¢ â\92¶Vs.T â¬\88*[h] X2 â\86\92 â\92¶Vs.T ⩳ X2.
-#h #G #L #T #H1T #H2T #Vs elim Vs -Vs [ @(cpxs_fwd_cnx … H2T) ] (**) (* /2 width=3 by cpxs_fwd_cnx/ does not work *)
+lemma cpxs_fwd_cnx_vector (G) (L):
+ â\88\80T. ð\9d\90\92â\9d¨Tâ\9d© â\86\92 â\9d¨G,Lâ\9d© â\8a¢ â¬\88ð\9d\90\8d T →
+ â\88\80Vs,X2. â\9d¨G,Lâ\9d© â\8a¢ â\92¶Vs.T â¬\88* X2 â\86\92 â\92¶Vs.T ~ X2.
+#G #L #T #H1T #H2T #Vs elim Vs -Vs [ @(cpxs_fwd_cnx … H2T) ] (**) (* /2 width=3 by cpxs_fwd_cnx/ does not work *)
#V #Vs #IHVs #X2 #H
elim (cpxs_inv_appl1 … H) -H *
[ -IHVs #V0 #T0 #_ #_ #H destruct /2 width=1 by teqo_pair/