sig
  type t = { ext : string; why : string array; wdp : string array; }
  val yices : Prover.SMT.t
  val cvc3 : Prover.SMT.t
  val z3 : Prover.SMT.t
  val simplify : Prover.SMT.t
  val vampire : Prover.SMT.t
  val altergo : Prover.SMT.t
  val zenon : Prover.SMT.t
  val of_name : string -> Prover.SMT.t
  val translate : Prover.Logs.t -> Prover.SMT.t -> Wpo.t -> string Task.task
  val whydp :
    Prover.Logs.t -> Prover.SMT.t -> string -> Prover.verdict Task.task
  val prove : string -> Prover.Logs.t -> Wpo.t -> Prover.verdict Task.task
  val check : Prover.Logs.t -> Wpo.t -> Prover.verdict Task.task
end