sig
  exception DontKnow
  type priority
  val immediate : Facile.Cstr.priority
  val normal : Facile.Cstr.priority
  val later : Facile.Cstr.priority
  type t
  val id : Facile.Cstr.t -> int
  val name : Facile.Cstr.t -> string
  val priority : Facile.Cstr.t -> Facile.Cstr.priority
  val fprint : Pervasives.out_channel -> Facile.Cstr.t -> unit
  val is_solved : Facile.Cstr.t -> bool
  val create :
    ?name:string ->
    ?nb_wakings:int ->
    ?fprint:(Pervasives.out_channel -> unit) ->
    ?priority:Facile.Cstr.priority ->
    ?init:(unit -> unit) ->
    ?check:(unit -> bool) ->
    ?not:(unit -> Facile.Cstr.t) ->
    (int -> bool) -> (Facile.Cstr.t -> unit) -> Facile.Cstr.t
  val post : Facile.Cstr.t -> unit
  val init : Facile.Cstr.t -> unit
  val one : Facile.Cstr.t
  val zero : Facile.Cstr.t
  val active_store : unit -> Facile.Cstr.t list
end