sig
type sort =
Predicate
| Function
| Skolem
| Connection
| FD_Relation
| FD_Size_Marker
| FD_Element
| FD_Symbol
type symbol
module SymbolTable :
sig
type key = symbol
type 'a t
val create : int -> 'a t
val clear : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
end
val equality : Symbol.symbol
val diff : Symbol.symbol
val lemma_root : Symbol.symbol
val create_predicate : string -> int -> Symbol.symbol
val create_function : string -> int -> Symbol.symbol
val create_skolem :
?arity:int -> ?name:string option -> unit -> Symbol.symbol
val create_connection : int -> Symbol.symbol
val get_fd_relation : int -> Symbol.symbol
val get_fd_size_marker : int -> Symbol.symbol
val get_fd_element : int -> Symbol.symbol
val create_fd_symbol : Symbol.symbol -> Symbol.symbol
val get_symbol_from_fd_symbol : Symbol.symbol -> Symbol.symbol
val name : Symbol.symbol -> string
val arity : Symbol.symbol -> int
val id : Symbol.symbol -> int
val sort : Symbol.symbol -> Symbol.sort
val equal : Symbol.symbol -> Symbol.symbol -> bool
val compare : Symbol.symbol -> Symbol.symbol -> int
val compare_name : Symbol.symbol -> Symbol.symbol -> int
val is_predicate : Symbol.symbol -> bool
val is_function : Symbol.symbol -> bool
val is_input : Symbol.symbol -> bool
val is_skolem : Symbol.symbol -> bool
val is_connection : Symbol.symbol -> bool
val is_fd_relation : Symbol.symbol -> bool
val is_fd_size_marker : Symbol.symbol -> bool
val is_fd_element : Symbol.symbol -> bool
val is_fd_symbol : Symbol.symbol -> bool
val to_string : ?pretty:bool -> Symbol.symbol -> string
val sort_to_string : Symbol.sort -> string
end