(** Variables, environments *)
Parameter env : Type.
Parameter env_get : env -> var -> val.
Parameter env_set : var -> val -> env -> env.

(* For now, we assume vars are defined locations (i.e., we don't yet model data fields or deal with undefined vars; that is future work). In general, our soundness proof doesn't require the user to exhibit an empty environment anyway. *)
(*Parameter empty_env : env.*)
(*Axiom env_gempty : forall x, env_get empty_env x = empty_val.*)
Axiom env_reset : forall s x, env_set x (env_get s x) s = s.