(* Advanced inversion lemmas ************************************************)
fact tps_inv_refl_SO2_aux: ∀L,T1,T2,d,e. L ⊢ T1 [d, e] ≫ T2 → e = 1 →
- â\88\80K,V. â\86\93[0, d] L â\89¡ K. ð\9d\95\93{Abst} V â\86\92 T1 = T2.
+ â\88\80K,V. â\87\93[0, d] L â\89¡ K. ð\9d\95\93{Abst} V â\86\92 T1 = T2.
#L #T1 #T2 #d #e #H elim H -L -T1 -T2 -d -e
[ //
| #L #K0 #V0 #W #i #d #e #Hdi #Hide #HLK0 #_ #H destruct
qed.
lemma tps_inv_refl_SO2: ∀L,T1,T2,d. L ⊢ T1 [d, 1] ≫ T2 →
- â\88\80K,V. â\86\93[0, d] L â\89¡ K. ð\9d\95\93{Abst} V â\86\92 T1 = T2.
+ â\88\80K,V. â\87\93[0, d] L â\89¡ K. ð\9d\95\93{Abst} V â\86\92 T1 = T2.
/2 width=8/ qed-.
(* Relocation properties ****************************************************)
(* Basic_1: was: subst1_lift_lt *)
lemma tps_lift_le: ∀K,T1,T2,dt,et. K ⊢ T1 [dt, et] ≫ T2 →
- â\88\80L,U1,U2,d,e. â\86\93[d, e] L â\89¡ K â\86\92
- â\86\91[d, e] T1 â\89¡ U1 â\86\92 â\86\91[d, e] T2 â\89¡ U2 â\86\92
+ â\88\80L,U1,U2,d,e. â\87\93[d, e] L â\89¡ K â\86\92
+ â\87\91[d, e] T1 â\89¡ U1 â\86\92 â\87\91[d, e] T2 â\89¡ U2 â\86\92
dt + et ≤ d →
L ⊢ U1 [dt, et] ≫ U2.
#K #T1 #T2 #dt #et #H elim H -K -T1 -T2 -dt -et
qed.
lemma tps_lift_be: ∀K,T1,T2,dt,et. K ⊢ T1 [dt, et] ≫ T2 →
- â\88\80L,U1,U2,d,e. â\86\93[d, e] L â\89¡ K â\86\92
- â\86\91[d, e] T1 â\89¡ U1 â\86\92 â\86\91[d, e] T2 â\89¡ U2 â\86\92
+ â\88\80L,U1,U2,d,e. â\87\93[d, e] L â\89¡ K â\86\92
+ â\87\91[d, e] T1 â\89¡ U1 â\86\92 â\87\91[d, e] T2 â\89¡ U2 â\86\92
dt ≤ d → d ≤ dt + et →
L ⊢ U1 [dt, et + e] ≫ U2.
#K #T1 #T2 #dt #et #H elim H -K -T1 -T2 -dt -et
(* Basic_1: was: subst1_lift_ge *)
lemma tps_lift_ge: ∀K,T1,T2,dt,et. K ⊢ T1 [dt, et] ≫ T2 →
- â\88\80L,U1,U2,d,e. â\86\93[d, e] L â\89¡ K â\86\92
- â\86\91[d, e] T1 â\89¡ U1 â\86\92 â\86\91[d, e] T2 â\89¡ U2 â\86\92
+ â\88\80L,U1,U2,d,e. â\87\93[d, e] L â\89¡ K â\86\92
+ â\87\91[d, e] T1 â\89¡ U1 â\86\92 â\87\91[d, e] T2 â\89¡ U2 â\86\92
d ≤ dt →
L ⊢ U1 [dt + e, et] ≫ U2.
#K #T1 #T2 #dt #et #H elim H -K -T1 -T2 -dt -et
(* Basic_1: was: subst1_gen_lift_lt *)
lemma tps_inv_lift1_le: ∀L,U1,U2,dt,et. L ⊢ U1 [dt, et] ≫ U2 →
- â\88\80K,d,e. â\86\93[d, e] L â\89¡ K â\86\92 â\88\80T1. â\86\91[d, e] T1 â\89¡ U1 â\86\92
+ â\88\80K,d,e. â\87\93[d, e] L â\89¡ K â\86\92 â\88\80T1. â\87\91[d, e] T1 â\89¡ U1 â\86\92
dt + et ≤ d →
- â\88\83â\88\83T2. K â\8a¢ T1 [dt, et] â\89« T2 & â\86\91[d, e] T2 â\89¡ U2.
+ â\88\83â\88\83T2. K â\8a¢ T1 [dt, et] â\89« T2 & â\87\91[d, e] T2 â\89¡ U2.
#L #U1 #U2 #dt #et #H elim H -L -U1 -U2 -dt -et
[ #L * #i #dt #et #K #d #e #_ #T1 #H #_
[ lapply (lift_inv_sort2 … H) -H #H destruct /2 width=3/
qed.
lemma tps_inv_lift1_be: ∀L,U1,U2,dt,et. L ⊢ U1 [dt, et] ≫ U2 →
- â\88\80K,d,e. â\86\93[d, e] L â\89¡ K â\86\92 â\88\80T1. â\86\91[d, e] T1 â\89¡ U1 â\86\92
+ â\88\80K,d,e. â\87\93[d, e] L â\89¡ K â\86\92 â\88\80T1. â\87\91[d, e] T1 â\89¡ U1 â\86\92
dt ≤ d → d + e ≤ dt + et →
- â\88\83â\88\83T2. K â\8a¢ T1 [dt, et - e] â\89« T2 & â\86\91[d, e] T2 â\89¡ U2.
+ â\88\83â\88\83T2. K â\8a¢ T1 [dt, et - e] â\89« T2 & â\87\91[d, e] T2 â\89¡ U2.
#L #U1 #U2 #dt #et #H elim H -L -U1 -U2 -dt -et
[ #L * #i #dt #et #K #d #e #_ #T1 #H #_
[ lapply (lift_inv_sort2 … H) -H #H destruct /2 width=3/
(* Basic_1: was: subst1_gen_lift_ge *)
lemma tps_inv_lift1_ge: ∀L,U1,U2,dt,et. L ⊢ U1 [dt, et] ≫ U2 →
- â\88\80K,d,e. â\86\93[d, e] L â\89¡ K â\86\92 â\88\80T1. â\86\91[d, e] T1 â\89¡ U1 â\86\92
+ â\88\80K,d,e. â\87\93[d, e] L â\89¡ K â\86\92 â\88\80T1. â\87\91[d, e] T1 â\89¡ U1 â\86\92
d + e ≤ dt →
- â\88\83â\88\83T2. K â\8a¢ T1 [dt - e, et] â\89« T2 & â\86\91[d, e] T2 â\89¡ U2.
+ â\88\83â\88\83T2. K â\8a¢ T1 [dt - e, et] â\89« T2 & â\87\91[d, e] T2 â\89¡ U2.
#L #U1 #U2 #dt #et #H elim H -L -U1 -U2 -dt -et
[ #L * #i #dt #et #K #d #e #_ #T1 #H #_
[ lapply (lift_inv_sort2 … H) -H #H destruct /2 width=3/
(* Basic_1: was: subst1_gen_lift_eq *)
lemma tps_inv_lift1_eq: ∀L,U1,U2,d,e.
- L â\8a¢ U1 [d, e] â\89« U2 â\86\92 â\88\80T1. â\86\91[d, e] T1 â\89¡ U1 â\86\92 U1 = U2.
+ L â\8a¢ U1 [d, e] â\89« U2 â\86\92 â\88\80T1. â\87\91[d, e] T1 â\89¡ U1 â\86\92 U1 = U2.
#L #U1 #U2 #d #e #H elim H -L -U1 -U2 -d -e
[ //
| #L #K #V #W #i #d #e #Hdi #Hide #_ #_ #T1 #H
(EX u1 | t1 = (lift (minus (plus d h) (S i)) (S i) u1)).
*)
lemma tps_inv_lift1_up: ∀L,U1,U2,dt,et. L ⊢ U1 [dt, et] ≫ U2 →
- â\88\80K,d,e. â\86\93[d, e] L â\89¡ K â\86\92 â\88\80T1. â\86\91[d, e] T1 â\89¡ U1 â\86\92
+ â\88\80K,d,e. â\87\93[d, e] L â\89¡ K â\86\92 â\88\80T1. â\87\91[d, e] T1 â\89¡ U1 â\86\92
d ≤ dt → dt ≤ d + e → d + e ≤ dt + et →
- â\88\83â\88\83T2. K â\8a¢ T1 [d, dt + et - (d + e)] â\89« T2 & â\86\91[d, e] T2 â\89¡ U2.
+ â\88\83â\88\83T2. K â\8a¢ T1 [d, dt + et - (d + e)] â\89« T2 & â\87\91[d, e] T2 â\89¡ U2.
#L #U1 #U2 #dt #et #HU12 #K #d #e #HLK #T1 #HTU1 #Hddt #Hdtde #Hdedet
elim (tps_split_up … HU12 (d + e) ? ?) -HU12 // -Hdedet #U #HU1 #HU2
lapply (tps_weak … HU1 d e ? ?) -HU1 // [ >commutative_plus /2 width=1/ ] -Hddt -Hdtde #HU1
qed.
lemma tps_inv_lift1_be_up: ∀L,U1,U2,dt,et. L ⊢ U1 [dt, et] ≫ U2 →
- â\88\80K,d,e. â\86\93[d, e] L â\89¡ K â\86\92 â\88\80T1. â\86\91[d, e] T1 â\89¡ U1 â\86\92
+ â\88\80K,d,e. â\87\93[d, e] L â\89¡ K â\86\92 â\88\80T1. â\87\91[d, e] T1 â\89¡ U1 â\86\92
dt ≤ d → dt + et ≤ d + e →
- â\88\83â\88\83T2. K â\8a¢ T1 [dt, d - dt] â\89« T2 & â\86\91[d, e] T2 â\89¡ U2.
+ â\88\83â\88\83T2. K â\8a¢ T1 [dt, d - dt] â\89« T2 & â\87\91[d, e] T2 â\89¡ U2.
#L #U1 #U2 #dt #et #HU12 #K #d #e #HLK #T1 #HTU1 #Hdtd #Hdetde
lapply (tps_weak … HU12 dt (d + e - dt) ? ?) -HU12 // /2 width=3/ -Hdetde #HU12
elim (tps_inv_lift1_be … HU12 … HLK … HTU1 ? ?) -U1 -L // /2 width=3/