Opaque Mem.free.

Lemma alloc_obs_eq:
forall f m m' lo hi m2 m2' b b'
(Hobs_eq: mem_obs_eq f m m')
(Halloc: Mem.alloc m lo hi = (m2, b))
(Halloc': Mem.alloc m' lo hi = (m2', b')),
exists f',
f' b = Some b' /\
mem_obs_eq f' m2 m2' /\
ren_incr f f' /\
ren_separated f f' m m' /\
(exists p : positive,
Mem.nextblock m2 = (Mem.nextblock m + p)%positive /\
Mem.nextblock m2' = (Mem.nextblock m' + p)%positive) /\
(forall b0 : block,
Mem.valid_block m2' b0 ->
~ Mem.valid_block m' b0 ->
f'
(Z.to_pos
match - Z.pos_sub (Mem.nextblock m') (Mem.nextblock m) with
| 0 => Z.pos b0
| Z.pos y' => Z.pos (b0 + y')
| Z.neg y' => Z.pos_sub b0 y'
end) = Some b0 /\
f
(Z.to_pos
match - Z.pos_sub (Mem.nextblock m') (Mem.nextblock m) with
| 0 => Z.pos b0
| Z.pos y' => Z.pos (b0 + y')
| Z.neg y' => Z.pos_sub b0 y'
end) = None) /\
(Mem.nextblock m = Mem.nextblock m' ->
(forall b1 b3 : block, f b1 = Some b3 -> b1 = b3) ->
forall b1 b0 : block, f' b1 = Some b0 -> b1 = b0).