Definition only_blocks {S: block -> Prop} (S_dec: forall b, {S b}+{~S b}) (w: rmap) : rmap.Definition not_dec: forall {S: block -> Prop} (f: forall b, {S b}+{~S b}),
                            forall b, {~S b}+{~ ~ S b}.

(* Specifications: *)
Lemma join_only_blocks: forall {S} S_dec phi, identity (ghost_of phi) -> join (@only_blocks S S_dec phi) (only_blocks (not_dec S_dec) phi) phi.
Lemma Exists_dec: forall {T} (f: T -> Prop)(f_dec: forall x, {f x}+{~f x}) (l: list T), {Exists f l}+{~Exists f l}.
Lemma level_only_blocks: forall {S} S_dec phi, level (@only_blocks S S_dec phi) = level phi.