(** Exercise [subst_fresh] To show the ease of reasoning with these definitions, we will prove a standard result from lambda calculus: if a variable does not appear free in a term, then substituting for it has no effect.  HINTS: Prove this lemma by induction on [e].  - You will need to use [simpl] in many cases.  You can [simpl] everything everywhere (including hypotheses) with the pattern [simpl in *].  - Part of this proof includes a false assumption about free variables.  Destructing this hypothesis produces a goal about finite set membership that is solvable by [fsetdec]. *)

Lemma subst_fresh : forall (x : atom) e u,
x `notin` fv e -> [x ~> u] e = e.