simple induction 2; simpl in |- *; intros; auto with arith pts.
rewrite distr_subst; auto with arith pts.
apply par_betad; auto with arith pts.
replace (Ax (subst_rec x T n)) with (subst_decl x (Ax T) n);
auto with arith pts.
elim (lt_eq_lt_dec n0 n); intros.
elim a.
generalize H1 H2 H3.
clear H1 H2 H3.
case n; intros.
inversion a0.
apply par_delta with d0 T; auto with arith pts.
simpl in |- *.
elim simpl_subst with x d0 (S n1) n0; auto with arith pts.
simpl in |- *.
apply nth_sub_sup with (1 := H4); auto with arith pts.
intro.
rewrite b.
elim simpl_subst with x x n n; auto with arith pts.
pattern x at 2 in |- *.
replace x with d0.
apply H2; auto with arith pts.
elim b; auto with arith pts.
rewrite b in H4.
generalize H4.
rewrite nth_sub_eq with (1 := H4) (2 := H3).
intro.
elim sub_decl_eq_def with (1 := H5).
trivial with arith pts.
apply par_delta with (subst_rec x d0 (n0 - S n)) (subst_rec x T (n0 - S n));
auto with arith pts.
unfold lift in |- *.
rewrite commut_lift_subst_rec; auto with arith pts.
replace (S n + (n0 - S n)) with n0; auto with arith pts.
change (item (subst_decl x (Def d0 T) (n0 - S n)) f n) in |- *.
apply nth_sub_inf with (1 := H4); auto with arith pts.
elim (lt_eq_lt_dec n0 n); intros; auto with arith pts.
elim a; auto with arith pts.
intros.
apply iter_R_lift with g; auto with arith pts.
elim H1; auto with arith pts.
apply abs_par_red; auto with arith pts.
apply (bd_par_red1_stable_env bd_par_red1 (subst_decl x (Ax T') n :: f));
auto with arith pts.
apply R_env_hd.
simpl in |- *.
apply rd_ax.
apply bd_par_red1_subst_l with g; auto with arith pts.
elim H5; auto with arith pts.
apply prod_par_red; auto with arith pts.
apply (bd_par_red1_stable_env bd_par_red1 (subst_decl x (Ax M') n :: f));
auto with arith pts.
apply R_env_hd.
simpl in |- *.
apply rd_ax.
apply bd_par_red1_subst_l with g; auto with arith pts.
elim H5; auto with arith pts.
Qed.

(* Specifications: *)
Lemma bd_par_red1_subst :
forall (e : env) (x y t u T : term),
bd_par_red1 (Ax T :: e) t u ->
bd_par_red1 e x y -> bd_par_red1 e (subst x t) (subst y u).