sig
  exception DontKnow
  type priority
  val immediate : Cstr.priority
  val normal : Cstr.priority
  val later : Cstr.priority
  type t
  val create :
    ?name:string ->
    ?nb_wakings:int ->
    ?fprint:(Pervasives.out_channel -> unit) ->
    ?priority:Cstr.priority ->
    ?init:(unit -> unit) ->
    ?check:(unit -> bool) ->
    ?not:(unit -> Cstr.t) -> (int -> bool) -> (Cstr.t -> unit) -> Cstr.t
  val post : Cstr.t -> unit
  val one : Cstr.t
  val zero : Cstr.t
  val id : Cstr.t -> int
  val name : Cstr.t -> string
  val priority : Cstr.t -> Cstr.priority
  val fprint : Pervasives.out_channel -> Cstr.t -> unit
  val is_solved : Cstr.t -> bool
  val active_store : unit -> Cstr.t list
  val not : Cstr.t -> Cstr.t
  type event
  val new_event : unit -> Cstr.event
  val schedule : Cstr.event -> unit
  val register : Cstr.event -> ?waking_id:int -> Cstr.t -> unit
  val registered : Cstr.event -> (Cstr.t * int) list
  val delay : Cstr.event list -> ?waking_id:int -> Cstr.t -> unit
  val conjunction : Cstr.t list -> Cstr.t
  val reset_queue : unit -> unit
  val assert_empty_queue : unit -> unit
  val wake_all : unit -> unit
  val init : Cstr.t -> unit
  val self_delay : Cstr.t -> Cstr.t -> unit
  val check : Cstr.t -> bool
end