Opaque Mem.alloc.
Transparent Mem.free.

(* Specifications: *)
Lemma access_free:
forall m1 b lo hi,
(forall ofs, lo <= ofs < hi -> access_at m1 (b,ofs) Cur = Some Freeable) ->
{ m2: mem | Mem.free m1 b lo hi = Some m2 }.
Lemma free_access:
forall m1 b lo hi m2, Mem.free m1 b lo hi = Some m2 ->
(forall ofs, lo <= ofs < hi ->
access_at m1 (b,ofs) Cur = Some Freeable /\ access_at m2 (b,ofs) Max = None).
Lemma free_access_other:
forall m1 bf lo hi m2, Mem.free m1 bf lo hi = Some m2 ->
forall b ofs k,
b <> bf \/ ofs < lo \/ hi <= ofs ->
access_at m1 (b,ofs) k = access_at m2 (b,ofs) k.