Proof fun (M N : term) (n : nat) => distr_lift_subst_rec M N n 0.

(* Specifications: *)
Lemma distr_subst_rec :
forall (M N P : term) (n p : nat),
subst_rec P (subst_rec N M p) (p + n) =
subst_rec (subst_rec P N n) (subst_rec P M (S (p + n))) p.
Lemma distr_subst :
forall (P N M : term) (k : nat),
subst_rec P (subst N M) k = subst (subst_rec P N k) (subst_rec P M (S k)).