Hint Resolve fv_exp_subst_exp_upper : lngen.
(* *********************************************************************** *)
(** * Theorems about [subst] *)
Ltac default_auto ::= auto with lngen brute_force; tauto.
Ltac default_autorewrite ::= autorewrite with lngen.
(* begin hide *)

(* Specifications: *)
Lemma subst_exp_close_exp_wrt_exp_rec_mutual :
(forall e2 e1 x1 x2 n1,
degree_exp_wrt_exp n1 e1 ->
x1 <> x2 ->
x2 `notin` fv_exp e1 ->
subst_exp e1 x1 (close_exp_wrt_exp_rec n1 x2 e2) = close_exp_wrt_exp_rec n1 x2 (subst_exp e1 x1 e2)).
Lemma subst_exp_close_exp_wrt_exp_rec_mutual :
(forall e2 e1 x1 x2 n1,
degree_exp_wrt_exp n1 e1 ->
x1 <> x2 ->
x2 `notin` fv_exp e1 ->
subst_exp e1 x1 (close_exp_wrt_exp_rec n1 x2 e2) = close_exp_wrt_exp_rec n1 x2 (subst_exp e1 x1 e2)).