sig
  type t = {
    mutable simplified : bool;
    mutable time : float;
    mutable hyps : Conditions.t;
    mutable goal : Lang.F.pred;
    mutable obligation : Lang.F.pred;
  }
  val dummy : Wpo.GOAL.t
  val trivial : Wpo.GOAL.t
  val make : Conditions.t -> Lang.F.pred -> Wpo.GOAL.t
  val is_trivial : Wpo.GOAL.t -> bool
  val apply :
    (Conditions.t -> Lang.F.pred -> Conditions.t * Lang.F.pred) ->
    Wpo.GOAL.t -> unit
  val preprocess : Wpo.GOAL.t -> unit
  val dkey : Wp_parameters.category
  val compute : Wpo.GOAL.t -> unit
  val compute_proof : Wpo.GOAL.t -> Lang.F.pred
  val compute_descr : Wpo.GOAL.t -> Conditions.t * Lang.F.pred
  val get_descr : Wpo.GOAL.t -> Conditions.t * Lang.F.pred
  val qed_time : Wpo.GOAL.t -> float
end