sig
type eqn = private Mk of Term.term * Term.term
val mk : Term.term * Term.term -> Equation.eqn
val compare : Equation.eqn -> Equation.eqn -> int
val eq : Equation.eqn -> Equation.eqn -> bool
val fprintf : Equation.eqn Useful.fprintf
module OrdEqn :
sig
type t = eqn
val compare : t -> t -> int
val fprintf : t Useful.fprintf
end
module EqnSet :
sig
type elt = eqn
type t
val empty : t
val is_empty : t -> bool
val mem : elt -> t -> bool
val add : elt -> t -> t
val singleton : elt -> t
val remove : elt -> t -> t
val union : t -> t -> t
val inter : t -> t -> t
val diff : t -> t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val subset : t -> t -> bool
val iter : (elt -> unit) -> t -> unit
val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (elt -> bool) -> t -> bool
val exists : (elt -> bool) -> t -> bool
val filter : (elt -> bool) -> t -> t
val partition : (elt -> bool) -> t -> t * t
val cardinal : t -> int
val elements : t -> elt list
val min_elt : t -> elt
val max_elt : t -> elt
val choose : t -> elt
val split : elt -> t -> t * bool * t
val map : (elt -> elt) -> t -> t
val map_filter : (elt -> elt option) -> t -> t
val find : (elt -> bool) -> t -> elt
val find_opt : (elt -> 'a option) -> t -> 'a option
val of_list : elt list -> t
val of_list_map : ('a -> elt) -> 'a list -> t
val fprintf : t Useful.fprintf
val union_map : ('a -> t) -> 'a list -> t
end
val add_non_trivial_pair :
(Term.term -> Term.term) ->
Term.term * Term.term -> Equation.EqnSet.t -> Equation.EqnSet.t
val add_non_trivial :
(Term.term -> Term.term) ->
Equation.eqn -> Equation.EqnSet.t -> Equation.EqnSet.t
val remove_trivial :
(Term.term -> Term.term) -> Equation.EqnSet.t -> Equation.EqnSet.t
val is_commutativity : Equation.eqn -> bool
val has_commutativity : Equation.EqnSet.t -> bool
val remove_commutativity : Equation.EqnSet.t -> Equation.EqnSet.t
val partition :
Term.term Order.cmp ->
Equation.EqnSet.t ->
Equation.EqnSet.t * Equation.EqnSet.t * Equation.EqnSet.t
end