sig
  type t = { head : Reasoner.term; body : Reasoner.term list; }
  val rule : Reasoner.term -> Reasoner.term list -> Reasoner.Clause.t
  val fact : Reasoner.term -> Reasoner.Clause.t
  val is_fact : Reasoner.Clause.t -> bool
  val pp : t CCFormat.printer
  val to_string : t -> string
  val equal : t -> t -> bool
  val hash_fun : t -> CCHash.state -> CCHash.state
  val hash : t -> int
  val compare : t -> t -> int
  module Seq :
    sig
      val terms : Reasoner.Clause.t -> Reasoner.term Sequence.t
      val vars :
        Reasoner.Clause.t -> Reasoner.ty Libzipperposition.Var.t Sequence.t
    end
end