(*Require Import VST.progs.list_dt. Import LsegSpecial.*)
Instance CompSpecs : compspecs. make_compspecs prog. Defined.
Definition Vprog : varspecs. mk_varspecs prog. Defined.
Definition acquire_spec := DECLARE _acquire acquire_spec.
Definition release_spec := DECLARE _release release_spec.
Definition makelock_spec := DECLARE _makelock (makelock_spec _).
Definition freelock_spec := DECLARE _freelock (freelock_spec _).
Definition surely_malloc_spec :=
DECLARE _surely_malloc
WITH n:Z
PRE [ _n OF tuint ]
PROP (0 <= n <= Int.max_unsigned)
LOCAL (temp _n (Vint (Int.repr n)))
SEP ()
POST [ tptr tvoid ] EX p:_,
PROP ()
LOCAL (temp ret_temp p)
SEP (malloc_token Tsh n p * memory_block Tsh n p).
Definition tnode := Tstruct _node noattr.
Module ZOrder <: Orders.TotalLeBool.
Definition t := Z.
Definition leb x y := Z.leb x y.

(* Specifications: *)
Theorem leb_total : forall x y, leb x y = true \/ leb y x = true.
Notation sorted := (StronglySorted Z.le).
Lemma sort_sorted : forall l, sorted (sort l).
Inductive set_op := Add (e : Z) | Remove (e : Z).