(* *)
(**************************************************************************)
-include "basic_2/grammar/cl_shift.ma".
include "basic_2/unfold/tpss.ma".
include "basic_2/reducibility/tpr.ma".
qed.
lemma cpr_cast: ∀L,V,T1,T2.
- L â\8a¢ T1 â\9e¡ T2 â\86\92 L â\8a¢ â\93£V. T1 ➡ T2.
+ L â\8a¢ T1 â\9e¡ T2 â\86\92 L â\8a¢ â\93\9dV. T1 ➡ T2.
#L #V #T1 #T2 * /3 width=3/
qed.
(* Note: it does not hold replacing |L1| with |L2| *)
(* Basic_1: was only: pr2_change *)
-lemma cpr_lsubs_conf: ∀L1,T1,T2. L1 ⊢ T1 ➡ T2 →
- ∀L2. L1 ≼ [0, |L1|] L2 → L2 ⊢ T1 ➡ T2.
+lemma cpr_lsubs_trans: ∀L1,T1,T2. L1 ⊢ T1 ➡ T2 →
+ ∀L2. L2 ≼ [0, |L1|] L1 → L2 ⊢ T1 ➡ T2.
#L1 #T1 #T2 * #T #HT1 #HT2 #L2 #HL12
-lapply (tpss_lsubs_conf … HT2 … HL12) -HT2 -HL12 /3 width=4/
+lapply (tpss_lsubs_trans … HT2 … HL12) -HT2 -HL12 /3 width=4/
qed.
(* Basic inversion lemmas ***************************************************)
>(tpss_inv_sort1 … H) -H //
qed-.
-(* Basic_1: was pr2_gen_abbr *)
-lemma cpr_inv_abbr1: ∀L,V1,T1,U2. L ⊢ ⓓV1. T1 ➡ U2 →
- (∃∃V,V2,T2. V1 ➡ V & L ⊢ V ▶* [O, |L|] V2 &
- L. ⓓV ⊢ T1 ➡ T2 &
- U2 = ⓓV2. T2
- ) ∨
- ∃∃T. ⇧[0,1] T ≡ T1 & L ⊢ T ➡ U2.
-#L #V1 #T1 #Y * #X #H1 #H2
-elim (tpr_inv_abbr1 … H1) -H1 *
-[ #V #T0 #T #HV1 #HT10 #HT0 #H destruct
- elim (tpss_inv_bind1 … H2) -H2 #V2 #T2 #HV2 #HT2 #H destruct
- lapply (tps_lsubs_conf … HT0 (L. ⓓV) ?) -HT0 /2 width=1/ #HT0
- lapply (tps_weak_all … HT0) -HT0 #HT0
- lapply (tpss_lsubs_conf … HT2 (L. ⓓV) ?) -HT2 /2 width=1/ #HT2
- lapply (tpss_weak_all … HT2) -HT2 #HT2
- lapply (tpss_strap … HT0 HT2) -T /4 width=7/
-| /4 width=5/
-]
-qed-.
-
(* Basic_1: was: pr2_gen_cast *)
-lemma cpr_inv_cast1: â\88\80L,V1,T1,U2. L â\8a¢ â\93£V1. T1 ➡ U2 → (
+lemma cpr_inv_cast1: â\88\80L,V1,T1,U2. L â\8a¢ â\93\9dV1. T1 ➡ U2 → (
∃∃V2,T2. L ⊢ V1 ➡ V2 & L ⊢ T1 ➡ T2 &
- U2 = â\93£V2. T2
+ U2 = â\93\9dV2. T2
) ∨ L ⊢ T1 ➡ U2.
#L #V1 #T1 #U2 * #X #H #HU2
elim (tpr_inv_cast1 … H) -H /3 width=3/