(** ** Properties related to [alloc]. *)
Section ALLOC.
Variable m1: mem.
Variables lo hi: Z.
Variable m2: mem.
Variable b: block.
Hypothesis ALLOC: alloc m1 lo hi = (m2, b).

(* Specifications: *)
Theorem nextblock_alloc:
nextblock m2 = Pos.succ (nextblock m1).
Theorem alloc_result:
b = nextblock m1.
Theorem valid_block_alloc:
forall b', valid_block m1 b' -> valid_block m2 b'.
Theorem fresh_block_alloc:
~(valid_block m1 b).
Theorem valid_new_block:
valid_block m2 b.
Theorem nextblock_alloc:
nextblock m2 = Pos.succ (nextblock m1).
Theorem alloc_result:
b = nextblock m1.
Theorem valid_block_alloc:
forall b', valid_block m1 b' -> valid_block m2 b'.
Theorem fresh_block_alloc:
~(valid_block m1 b).
Theorem valid_new_block:
valid_block m2 b.