sig
type term = FOTerm.t
type subst = Substs.t
module type LEAF = Index_intf.LEAF
module MakeLeaf :
functor (X : Set.OrderedType) ->
sig
type t
type elt = X.t
val empty : t
val add : t -> Index_intf.term -> elt -> t
val remove : t -> Index_intf.term -> elt -> t
val is_empty : t -> bool
val iter : t -> (Index_intf.term -> elt -> unit) -> unit
val fold : t -> 'a -> ('a -> Index_intf.term -> elt -> 'a) -> 'a
val size : t -> int
val fold_unify :
?subst:Index_intf.subst ->
t Scoped.t ->
Index_intf.term Scoped.t ->
(Index_intf.term * elt * Index_intf.subst) Sequence.t
val fold_match :
?subst:Index_intf.subst ->
t Scoped.t ->
Index_intf.term Scoped.t ->
(Index_intf.term * elt * Index_intf.subst) Sequence.t
val fold_matched :
?subst:Index_intf.subst ->
t Scoped.t ->
Index_intf.term Scoped.t ->
(Index_intf.term * elt * Index_intf.subst) Sequence.t
end
module type TERM_IDX = Index_intf.TERM_IDX
module type CLAUSE = Index_intf.CLAUSE
module type SUBSUMPTION_IDX = Index_intf.SUBSUMPTION_IDX
module type EQUATION = Index_intf.EQUATION
module BasicEquation :
sig
type t = FOTerm.t * FOTerm.t
type rhs = FOTerm.t
val compare : t -> t -> int
val extract : t -> Index_intf.term * rhs * bool
val priority : t -> int
end
module type UNIT_IDX = Index_intf.UNIT_IDX
end