Hint Rewrite @subst_lift2 (*@subst_lift2'*) @subst_lift2C : subst.

(* Specifications: *)
Lemma subst_lift3:
forall {A1 A2 A3 B} id v (f: A1 -> A2 -> A3 -> B) a1 a2 a3,
subst id v (lift3 f a1 a2 a3) = lift3 f (subst id v a1) (subst id v a2) (subst id v a3).
Lemma subst_lift3':
forall {A1 A2 A3 B} id v (f: A1 -> A2 -> A3 -> B) a1 a2 a3,
subst id v (fun rho => f (a1 rho) (a2 rho) (a3 rho)) =
fun rho => f (subst id v a1 rho) (subst id v a2 rho) (subst id v a3 rho).
Lemma subst_lift3C:
forall {A1 A2 A3 B} id (v: environ -> val) (f: A1 -> A2 -> A3 -> B)
(a1: environ -> A1) (a2: environ -> A2) (a3: environ -> A3),
subst id v (`f a1 a2 a3) = `f (subst id v a1) (subst id v a2) (subst id v a3).