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 gso_env (x y : var) (v: val) (s: env) : x<>y -> env_get (env_set x v s) y = env_get s y.