λR. ∀K,T. R K T → ∀b,f,L. ⬇*[b, f] L ≡ K →
∀U. ⬆*[f] T ≡ U → R L U.
+definition d_liftable1_isuni: predicate (relation2 lenv term) ≝
+ λR. ∀K,T. R K T → ∀b,f,L. ⬇*[b, f] L ≡ K → 𝐔⦃f⦄ →
+ ∀U. ⬆*[f] T ≡ U → R L U.
+
definition d_deliftable1: predicate (relation2 lenv term) ≝
λR. ∀L,U. R L U → ∀b,f,K. ⬇*[b, f] L ≡ K →
∀T. ⬆*[f] T ≡ U → R K T.
+definition d_deliftable1_isuni: predicate (relation2 lenv term) ≝
+ λR. ∀L,U. R L U → ∀b,f,K. ⬇*[b, f] L ≡ K → 𝐔⦃f⦄ →
+ ∀T. ⬆*[f] T ≡ U → R K T.
+
definition d_liftable2_sn: ∀C:Type[0]. ∀S:rtmap → relation C.
predicate (lenv → relation C) ≝
λC,S,R. ∀K,T1,T2. R K T1 T2 → ∀b,f,L. ⬇*[b, f] L ≡ K →
definition co_dedropable_sn: predicate (rtmap → relation lenv) ≝
λR. ∀b,f,L1,K1. ⬇*[b, f] L1 ≡ K1 → ∀f1,K2. R f1 K1 K2 →
∀f2. f ~⊚ f1 ≡ f2 →
- â\88\83â\88\83L2. R f2 L1 L2 & â¬\87*[b, f] L2 â\89¡ K2 & L1 â\89¡[f] L2.
+ â\88\83â\88\83L2. R f2 L1 L2 & â¬\87*[b, f] L2 â\89¡ K2 & L1 â\89\90[f] L2.
(* Basic properties *********************************************************)
]
qed-.
-
lemma drops_after_fwd_drop2: ∀b,f2,I,X,K. ⬇*[b, f2] X ≡ K.ⓘ{I} →
∀f1,f. 𝐈⦃f1⦄ → f2 ⊚ ⫯f1 ≡ f → ⬇*[b, f] X ≡ K.
#b #f2 #I #X #K #H #f1 #f #Hf1 #Hf elim (drops_fwd_drop2 … H) -H
(* Properties with context-sensitive equivalence for terms ******************)
-lemma ceq_lift_sn: d_liftable2_sn … liftsb ceq.
+lemma ceq_lift_sn: d_liftable2_sn … liftsb ceq_ext.
+#K #I1 #I2 #H <(ceq_ext_inv_eq … H) -I2
/2 width=3 by ex2_intro/ qed-.
-lemma ceq_inv_lift_sn: d_deliftable2_sn … liftsb ceq.
+lemma ceq_inv_lift_sn: d_deliftable2_sn … liftsb ceq_ext.
+#L #J1 #J2 #H <(ceq_ext_inv_eq … H) -J2
/2 width=3 by ex2_intro/ qed-.
(* Note: d_deliftable2_sn cfull does not hold *)