sig
  type probe
  val apply : Z3.Probe.probe -> Z3.Goal.goal -> float
  val get_num_probes : Z3.context -> int
  val get_probe_names : Z3.context -> string list
  val get_probe_description : Z3.context -> string -> string
  val mk_probe : Z3.context -> string -> Z3.Probe.probe
  val const : Z3.context -> float -> Z3.Probe.probe
  val lt : Z3.context -> Z3.Probe.probe -> Z3.Probe.probe -> Z3.Probe.probe
  val gt : Z3.context -> Z3.Probe.probe -> Z3.Probe.probe -> Z3.Probe.probe
  val le : Z3.context -> Z3.Probe.probe -> Z3.Probe.probe -> Z3.Probe.probe
  val ge : Z3.context -> Z3.Probe.probe -> Z3.Probe.probe -> Z3.Probe.probe
  val eq : Z3.context -> Z3.Probe.probe -> Z3.Probe.probe -> Z3.Probe.probe
  val and_ : Z3.context -> Z3.Probe.probe -> Z3.Probe.probe -> Z3.Probe.probe
  val or_ : Z3.context -> Z3.Probe.probe -> Z3.Probe.probe -> Z3.Probe.probe
  val not_ : Z3.context -> Z3.Probe.probe -> Z3.Probe.probe
end