Hint Resolve subst_exp_close_exp_wrt_exp_rec_open_exp_wrt_exp_rec : lngen.
(* end hide *)

(* Specifications: *)
Lemma subst_exp_close_exp_wrt_exp_open_exp_wrt_exp :
forall e2 e1 x1 x2,
x2 `notin` fv_exp e2 ->
x2 `notin` fv_exp e1 ->
x2 <> x1 ->
lc_exp e1 ->
subst_exp e1 x1 e2 = close_exp_wrt_exp x2 (subst_exp e1 x1 (open_exp_wrt_exp e2 (var_f x2))).
Lemma subst_exp_close_exp_wrt_exp_open_exp_wrt_exp :
forall e2 e1 x1 x2,
x2 `notin` fv_exp e2 ->
x2 `notin` fv_exp e1 ->
x2 <> x1 ->
lc_exp e1 ->
subst_exp e1 x1 e2 = close_exp_wrt_exp x2 (subst_exp e1 x1 (open_exp_wrt_exp e2 (var_f x2))).