Hint Rewrite @subst_lift3 (*@subst_lift3'*) @subst_lift3C : subst.

(* Specifications: *)
Lemma subst_lift4:
forall {A1 A2 A3 A4 B} id v (f: A1 -> A2 -> A3 -> A4 -> B) a1 a2 a3 a4,
subst id v (lift4 f a1 a2 a3 a4) = lift4 f (subst id v a1) (subst id v a2) (subst id v a3) (subst id v a4).
Lemma subst_lift4':
forall {A1 A2 A3 A4 B} id v (f: A1 -> A2 -> A3 -> A4 -> B) a1 a2 a3 a4,
subst id v (fun rho => f (a1 rho) (a2 rho) (a3 rho) (a4 rho)) =
fun rho => f (subst id v a1 rho) (subst id v a2 rho) (subst id v a3 rho) (subst id v a4 rho).
Lemma subst_lift4C:
forall {A1 A2 A3 A4 B} id (v: environ -> val) (f: A1 -> A2 -> A3 -> A4 -> B)
(a1: environ -> A1) (a2: environ -> A2) (a3: environ -> A3) (a4: environ -> A4),
subst id v (`f a1 a2 a3 a4) = `f (subst id v a1) (subst id v a2) (subst id v a3) (subst id v a4).