sig
  type t
  val v_of : Partition.t -> V.t
  val d_of : Partition.t -> D.t
  val eq : Partition.t -> Partition.t -> bool
  val pp : Partition.t Pretty.printer
  val is_empty : Partition.t -> bool
  val find : Partition.t -> Jst.Eqtrans.t
  val diseqs : Partition.t -> Term.t -> D.Set.t
  val cnstrnt : Partition.t -> Term.t -> Var.Cnstrnt.t * Jst.t
  val is_canonical : Partition.t -> Term.t -> bool
  val is_int : Partition.t -> Jst.Pred.t
  val is_equal : Partition.t -> Jst.Pred2.t
  val is_diseq : Partition.t -> Jst.Pred2.t
  val is_equal_or_diseq : Partition.t -> Jst.Rel2.t
  val choose : Partition.t -> Jst.Eqtrans.t -> Jst.Eqtrans.t
  val iter_if : Partition.t -> (Term.t -> unit) -> Term.t -> unit
  val fold : Partition.t -> (Fact.Equal.t -> '-> 'a) -> Term.t -> '-> 'a
  val empty : Partition.t
  val merge : Partition.t -> Fact.Equal.t -> unit
  val dismerge : Partition.t -> Fact.Diseq.t -> unit
  val gc : (Term.t -> bool) -> Partition.t -> unit
  val fresh_equal : Partition.t -> Fact.Equal.t
  val fresh_diseq : Partition.t -> Fact.Diseq.t
  val copy : Partition.t -> Partition.t
  val diff : Partition.t -> Partition.t -> Partition.t
end