(* Advanced forward lemmas **************************************************)
-lemma xprs_fwd_abst1: â\88\80h,g,a,L,V1,T1,U2. â¦\83h, Lâ¦\84 â\8a¢ â\93\9b{a}V1. T1 â\9e¸*[g] U2 →
+lemma xprs_fwd_abst1: â\88\80h,g,a,L,V1,T1,U2. â¦\83h, Lâ¦\84 â\8a¢ â\93\9b{a}V1. T1 â\80¢â\9e¡*[g] U2 →
∃∃V2,T2. L ⊢ V1 ➡* V2 & U2 = ⓛ{a}V2. T2.
#h #g #a #L #V1 #T1 #U2 #H @(xprs_ind … H) -U2 /2 width=4/
#U #U2 #_ #HU2 * #V #T #HV1 #H destruct
(* Relocation properties ****************************************************)
lemma xprs_lift: ∀L,K,d,e. ⇩[d, e] L ≡ K → ∀T1,U1. ⇧[d, e] T1 ≡ U1 →
- â\88\80h,g,T2. â¦\83h, Kâ¦\84 â\8a¢ T1 â\9e¸*[g] T2 → ∀U2. ⇧[d, e] T2 ≡ U2 →
- â¦\83h, Lâ¦\84 â\8a¢ U1 â\9e¸*[g] U2.
+ â\88\80h,g,T2. â¦\83h, Kâ¦\84 â\8a¢ T1 â\80¢â\9e¡*[g] T2 → ∀U2. ⇧[d, e] T2 ≡ U2 →
+ â¦\83h, Lâ¦\84 â\8a¢ U1 â\80¢â\9e¡*[g] U2.
#L #K #d #e #HLK #T1 #U1 #HTU1 #h #g #T2 #HT12 @(xprs_ind … HT12) -T2
[ -HLK #T2 #HT12
<(lift_mono … HTU1 … HT12) -T1 //
| -HTU1 #T #T2 #_ #HT2 #IHT2 #U2 #HTU2
elim (lift_total T d e) #U #HTU
- lapply (xpr_lift … HLK … HTU … HTU2 … HT2) -T2 -HLK (* /3 width=3/ *)
- #H @(step …H) /2 width=1/ (**) (* NTypeChecker failure *)
+ lapply (xpr_lift … HLK … HTU … HTU2 … HT2) -T2 -HLK /3 width=3/
]
qed.
lemma xprs_inv_lift1: ∀L,K,d,e. ⇩[d, e] L ≡ K →
- â\88\80T1,U1. â\87§[d, e] T1 â\89¡ U1 â\86\92 â\88\80h,g,U2. â¦\83h, Lâ¦\84 â\8a¢ U1 â\9e¸*[g] U2 →
- â\88\83â\88\83T2. â\87§[d, e] T2 â\89¡ U2 & â¦\83h, Kâ¦\84 â\8a¢ T1 â\9e¸*[g] T2.
+ â\88\80T1,U1. â\87§[d, e] T1 â\89¡ U1 â\86\92 â\88\80h,g,U2. â¦\83h, Lâ¦\84 â\8a¢ U1 â\80¢â\9e¡*[g] U2 →
+ â\88\83â\88\83T2. â\87§[d, e] T2 â\89¡ U2 & â¦\83h, Kâ¦\84 â\8a¢ T1 â\80¢â\9e¡*[g] T2.
#L #K #d #e #HLK #T1 #U1 #HTU1 #h #g #U2 #HU12 @(xprs_ind … HU12) -U2 /2 width=3/
-HTU1 #U #U2 #_ #HU2 * #T #HTU #HT1
-elim (xpr_inv_lift1 … HLK … HTU … HU2) -U -HLK (* /3 width=5/ *)
-#U #HU2 #HTU @(ex2_1_intro … HU2) @(step … HT1 HTU) (**) (* NTypeChecker failure *)
+elim (xpr_inv_lift1 … HLK … HTU … HU2) -U -HLK /3 width=5/
qed.