sig
  class printer :
    Format.formatter ->
    string ->
    object
      method hline : unit
      method lines : unit
      method paragraph : unit
      method printf : ('a, Format.formatter, unit) Pervasives.format -> 'a
      method section : string -> unit
    end
  val pp_file : message:string -> file:string -> unit
  class type pattern =
    object
      method get_after : ?offset:int -> int -> string
      method get_float : int -> float
      method get_int : int -> int
      method get_string : int -> string
    end
  val p_group : string -> string
  val p_int : string
  val p_float : string
  val p_string : string
  val p_until_space : string
  val location : string -> int -> Lexing.position
  val timeout : int option -> int
  val stepout : int option -> int
  val depth : int option -> int
  type logs = [ `BOTH | `ERR | `OUT ]
  class virtual command :
    string ->
    object
      method add : string list -> unit
      method add_float : name:string -> value:float -> unit
      method add_int : name:string -> value:int -> unit
      method add_list : name:string -> string list -> unit
      method add_parameter : name:string -> (unit -> bool) -> unit
      method add_positive : name:string -> value:int -> unit
      method command : string list
      method pretty : Format.formatter -> unit
      method run :
        ?echo:bool ->
        ?logout:string -> ?logerr:string -> unit -> int Task.task
      method set_command : string -> unit
      method timeout : int -> unit
      method validate_pattern :
        ?logs:ProverTask.logs ->
        ?repeat:bool -> Str.regexp -> (ProverTask.pattern -> unit) -> unit
      method validate_time : (float -> unit) -> unit
    end
  val server : ?procs:int -> unit -> Task.server
  val schedule : 'Task.task -> unit
  val spawn :
    ?monitor:('a option -> unit) ->
    ?pool:Task.pool -> ('a * bool Task.task) list -> unit
end