proposition: 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))).
proof: Proof. unfold close_exp_wrt_exp; unfold open_exp_wrt_exp; default_simp. Qed.
imports: Coq.Logic.FunctionalExtensionality Coq.Program.Equality Metalib.Metatheory Metalib.LibLNgen Stlc