Section BlockAllocation.
Variables (A : Type) (v : A) (n : nat).
Definition allocb_s : spec ptr :=
(fun i => def i : Prop,
fun y i m => exists r, y = Val r /\ m = i :+ updi r (nseq n v)).
Definition allocb_sp (p : ideald allocb_s.1) y m :=
exists i, i \In id_val p /\ y = Val (fresh i) /\
m = i :+ updi (fresh i) (nseq n v).

Lemma allocb_has_spec : allocb_sp \In has_spec allocb_s.