(** As we prove new lemmas, we can also extend the hint database with new rewritings. *)
Hint Rewrite fv_nom_fv_exp_eq : lngen.
Hint Resolve fv_nom_fv_exp_eq : lngen.
(** The Metatheory library contains two powerful tactics for simplifying goals:  - [default_steps]: repeat a bunch of simplifying steps, such as simplifying the goal, inverting simple hypotheses, etc.  - [default_simp]: above plus case analysis for booleans and other sums  Below, we modify the behavior of these tactics by updating the following two definitions, so that the [lngen] hint databases will be available.  *)
Ltac default_auto        ::= auto with lngen.
Ltac default_autorewrite ::= autorewrite with lngen.
(** We also add a few more rewriting lemmas to the hint database to automate our proofs. *)
Hint Rewrite subst_exp_open_exp_wrt_exp : lngen.
Hint Rewrite swap_size_eq : lngen.
Hint Resolve le_S_n : lngen.
(***********************************************************************)
(** ** Decoded terms are locally closed *)
(***********************************************************************)
(** Next, we show that our decoding of nominal terms and configurations produces locally closed LN terms.  Again, these proofs are highly automatable. *)

(* Specifications: *)
Lemma nom_to_exp_lc : forall t, lc_exp (nom_to_exp t).
Hint Resolve nom_to_exp_lc : lngen.
Lemma apply_heap_lc : forall h e,
lc_exp e -> lc_exp (apply_heap h e).