Definition upto_block (b: block) (w: rmap) : rmap :=  only_blocks (fun b' => plt b' b) w.Definition beyond_block (b: block) (w: rmap) : rmap := only_blocks (not_dec (fun b' => plt b' b)) w.

(* Specifications: *)
Lemma join_upto_beyond_block: forall b phi, identity (ghost_of phi) -> join (upto_block b phi) (beyond_block b phi) phi.