Proof fun (M : term) (k : nat) => permute_lift_rec M 1 k 1 0 (le_O_n k).

Lemma commut_lift_subst_rec :
forall (M N : term) (n p k : nat),
k <= p ->
lift_rec n (subst_rec N M p) k = subst_rec N (lift_rec n M k) (n + p).