(* ----------------- interpreter soundness ------------------- *)
(* Finally, we get to the actual soundness function for the interpreter. *)

(* Specifications: *)
Lemma nom_soundness : forall n rho e v,
val _ v = nom_interp n e rho  ->
closed_env rho ->
fv_exp (nom_to_exp e) [<=] dom_rho rho ->
bigstep (nom_envsubst rho (nom_to_exp e)) (nom_val_to_exp v).
Lemma completeness : forall e v rho,
bigstep (nom_envsubst rho (nom_to_exp e)) (nom_val_to_exp v) ->
exists n, nom_interp n e rho = val _ v.