Ltac dsepcon :=
match goal with
[ H : sepcon _ _ _ |- _ ] =>
let s1 := fresh "s" in
let s2 := fresh "s" in
let JOIN := fresh "JOIN" in
let H1 := fresh "H" in
let H2 := fresh "H" in
destruct H as [s1 [s2 [JOIN [H1 H2]]]]
end.

(* Specifications: *)
Lemma nil_or_loc_full v : nil_or_loc v -> full v.
Hint Resolve nil_or_loc_full.
Lemma expr_denote_heap_ind : forall x s h h',
expr_denote x (State s h) = expr_denote x (State s h').
Lemma next_in_dom_rawnext sigma x s :
next_in_dom x sigma = true -> space_denote sigma s ->
exists s0, exists z, space_atom_denote (Next (Var x) z) s0 /\ join_sub s0 s.