(* Lemma make_simple_rmap: forall n (f: AV.address -> resource) , AV.valid (fun l => res_option (f l)) -> (forall l, match f l with YES _ _ (SomeP _ _) => False | _ => True end) -> exists phi:rmap, level phi = n /\ resource_at phi = f. *)

Lemma deallocate:
forall (phi: rmap) (f g : AV.address -> resource),
AV.valid (res_option oo f) -> AV.valid (res_option oo g) ->
(forall l, join  (f l) (g l) (phi@l)) ->
exists phi1, exists phi2,
join phi1 phi2 phi /\ resource_at phi1 = f.