(* ----------------------------------------- *)
(* Lemma fv_closed : (forall v, closed_val v -> fv_exp (nom_val_to_exp v) [=] {}).  Lemma fv_closed : (forall v, closed_val v -> fv_exp (nom_val_to_exp v) [=] {}).  Lemma fv_closed_env : (forall rho, closed_env rho -> forall e, fv_exp e [<=] dom_rho rho -> fv_exp (nom_envsubst rho e) [=] {}). *)
(* Now we can use these results to show that the interpreter produces closed values from appropriate environments and terms. *)

(* Specifications: *)
Lemma nom_interp_closed : forall n rho e v,
val _ v = nom_interp n e rho ->
closed_env rho ->
fv_exp (nom_to_exp e) [<=] dom_rho rho ->
closed_val v.