sig
module T : sig type t = Term.t end
module S : sig type t = Symbols.t end
module ST : sig type elt = Use.T.t type t = Term.Set.t end
module SA :
sig
type elt = Literal.LT.t * Explanation.t
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 map : (elt -> elt) -> t -> t
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 min_elt_opt : t -> elt option
val max_elt : t -> elt
val max_elt_opt : t -> elt option
val choose : t -> elt
val choose_opt : t -> elt option
val split : elt -> t -> t * bool * t
val find : elt -> t -> elt
val find_opt : elt -> t -> elt option
val find_first : (elt -> bool) -> t -> elt
val find_first_opt : (elt -> bool) -> t -> elt option
val find_last : (elt -> bool) -> t -> elt
val find_last_opt : (elt -> bool) -> t -> elt option
val of_list : elt list -> t
end
type elt = Use.ST.t * Use.SA.t
module Make :
functor (X : Sig.X) ->
sig
type t
val empty : Use.Make.t
val find : X.r -> Use.Make.t -> Use.elt
val add : X.r -> Use.elt -> Use.Make.t -> Use.Make.t
val mem : X.r -> Use.Make.t -> bool
val print : Use.Make.t -> unit
val up_add :
Use.Make.t -> Use.ST.elt -> X.r -> X.r list -> Use.Make.t
val congr_add : Use.Make.t -> X.r list -> Use.ST.t
val up_close_up : Use.Make.t -> X.r -> X.r -> Use.Make.t
val congr_close_up : Use.Make.t -> X.r -> X.r list -> Use.elt
end
end