sig
type t
val neg : Proposition.t -> Indexes.t -> Literal.t
val pos : Proposition.t -> Indexes.t -> Literal.t
val atom_of : Literal.t -> Proposition.t * Indexes.t
val prop_of : Literal.t -> Proposition.t
val idx_of : Literal.t -> Indexes.t
val is_pos : Literal.t -> bool
val is_neg : Literal.t -> bool
val to_string : Literal.t -> string
val compare : Literal.t -> Literal.t -> int
val equal : Literal.t -> Literal.t -> bool
val compute_lit : Literal.t -> int -> Literal.t
type variable = Variable.t
type term = Indexes.t
type substituable = t
val substitute : substituable -> var:variable -> by:term -> substituable
module PropSubs :
sig
type variable = Proposition.t
type term = Proposition.t
type substituable = t
val substitute :
substituable -> var:variable -> by:term -> substituable
end
module LoopingMap :
sig
type loopable = t
type 'a t
val empty : 'a t
val add : 'a t -> key:loopable -> data:'a -> 'a t
val find : 'a t -> key:loopable -> 'a option
end
module ClosureSet :
sig
type t
val empty : cstr:Constraint.t -> Literal.ClosureSet.t
val add :
Literal.ClosureSet.t -> key:substituable -> Literal.ClosureSet.t
val closure_applies : Literal.ClosureSet.t -> key:substituable -> bool
val add_constraint :
Literal.ClosureSet.t -> cstr:Constraint.t -> Literal.ClosureSet.t
end
val opposite : Literal.t -> Literal.t
end