module Symbol:constant and function symbolssig
..end
A symbol consists of
type
sort =
| |
Predicate |
(* | a predicate symbol of the input signature | *) |
| |
Function |
(* | a function symbol of the input signature | *) |
| |
Skolem |
(* | a skolem constant | *) |
| |
Connection |
(* | a predicate that connects clauses split in preprocessing | *) |
| |
FD_Relation |
(* | finite model finding: relational representation of functions (predicate). for each arity exists a unique relation symbol. | *) |
| |
FD_Size_Marker |
(* | finite model finding: a marker for the domain size (predicate) | *) |
| |
FD_Element |
(* | finite model finding: domain element (constant) | *) |
| |
FD_Symbol |
(* | finite model finding: symbol of original signature transformed into a constant | *) |
type
symbol
module SymbolTable:Hashtbl.S
with type key = symbol
Hashtbl
with symbols as keys.
val equality : symbol
val diff : symbol
val lemma_root : symbol
val create_predicate : string -> int -> symbol
Symbol.create_predicate name arity
registers a predicate symbol and returns it.val create_function : string -> int -> symbol
Symbol.create_function name arity
registers a function symbol and returns it.val create_skolem : ?arity:int -> ?name:string option -> unit -> symbol
arity
is 0 by default, so a skolem constant will be created.val create_connection : int -> symbol
val get_fd_relation : int -> symbol
this symbol has the given arity,
that is it represents function symbols of arity - 2.
val get_fd_size_marker : int -> symbol
val get_fd_element : int -> symbol
val create_fd_symbol : symbol -> symbol
val get_symbol_from_fd_symbol : symbol -> symbol
Symbol.create_fd_symbol
.
fails with an exception if Symbol.create_fd_symbol
has not been called before.val name : symbol -> string
val arity : symbol -> int
val id : symbol -> int
val sort : symbol -> sort
val equal : symbol -> symbol -> bool
val compare : symbol -> symbol -> int
val compare_name : symbol -> symbol -> int
val is_predicate : symbol -> bool
val is_function : symbol -> bool
val is_input : symbol -> bool
val is_skolem : symbol -> bool
val is_connection : symbol -> bool
val is_fd_relation : symbol -> bool
val is_fd_size_marker : symbol -> bool
val is_fd_element : symbol -> bool
val is_fd_symbol : symbol -> bool
val to_string : ?pretty:bool -> symbol -> string
val sort_to_string : sort -> string