simple induction 1; simpl in |- *; auto with pts; intros.
elim R_substs with (1 := H0) (2 := H1); intros; auto with pts.
apply rt_trans with y0; auto with pts.
elim H1 with n f; intros; auto with pts.
apply rt_trans with (Abs y (subst_rec s N (S n))); auto with pts.
elim H1 with (S n) (subst_decl s (Ax N) n :: f); intros; auto with pts.
apply rt_trans with (Abs (subst_rec s N n) y); auto with pts.
elim H1 with n f; auto with pts; intros.
apply rt_trans with (App y (subst_rec s M2 n)); auto with pts.
elim H1 with n f; auto with pts; intros.
apply rt_trans with (App (subst_rec s M1 n) y); auto with pts.
elim H1 with n f; intros; auto with pts.
apply rt_trans with (Prod y (subst_rec s M2 (S n))); auto with pts.
elim H1 with (S n) (subst_decl s (Ax M1) n :: f); auto with pts; intros.
apply rt_trans with (Prod (subst_rec s M1 n) y); auto with pts.
Qed.

(* Specifications: *)
Lemma R_rt_subst : R_subst (R_rt R).
unfold R_subst, R_rt at 2 in |- *.