Proof with simpl in *; auto.
unfold var_eq. intro A. destruct e'... if_tac... rewrite <- H...
Qed.

(* Specifications: *)
Lemma join_var_eq : forall (s0 s1 s : state) x y,
join s0 s1 s -> (x === y) s0 -> (x === y) s.
Lemma join_var_eq' : forall (s0 s1 s : state) x y,
join s0 s1 s -> (x === y) s -> (x === y) s0.
Lemma subst_space_atom_sound:
forall (v : datatypes.var) (e : expr) (s : state) (Heq : (Var v === e) s) sa,
space_atom_denote sa s = space_atom_denote (subst_space v e sa) s.