sig
  module type S = LogtkPartialOrder_intf.S
  module type ELEMENT =
    sig
      type t
      val eq :
        LogtkPartialOrder.ELEMENT.t -> LogtkPartialOrder.ELEMENT.t -> bool
      val hash : LogtkPartialOrder.ELEMENT.t -> int
    end
  module Make :
    functor (E : ELEMENT->
      sig
        type elt = E.t
        type t
        val create : elt list -> t
        val copy : t -> t
        val size : t -> int
        val extend : t -> elt list -> t
        val is_total : t -> bool
        val is_total_details :
          t -> [ `eq of elt * elt | `total | `unordered of elt * elt ]
        val enrich : t -> (elt -> elt -> LogtkComparison.t) -> unit
        val complete : t -> (elt -> elt -> int) -> unit
        val compare : t -> elt -> elt -> LogtkComparison.t
        val pairs : t -> (elt * elt) list
        val elements : t -> elt list
      end
end