Definition var := Ident.t.Definition env := var -> nat.Definition env_get (rho: env) : var -> val := fun x => Some (rho x).Definition env_set (x: var) (v: val) (rho: env) : env :=
  match v with
  | None (*empty_val*) => rho
  | Some v' => fun y => if Ident.eq_dec x y then v' else rho y
  end.

Lemma gss_env (x: var) (v: val) (s: env) : v<>empty_val -> env_get (env_set x v s) x = v.