module Finite_domain:finite domain model findingsig
..end
see the paper
Computing Finite Models by Reduction to Function-Free Clause Logic
by
Peter Baumgartner, Alexander Fuchs, Hans de Neville, Cesare Tinelli.
typesymbol =
Symbol.symbol
typeterm =
Term.term
typeclause =
Term.clause
typeproblem =
Problem.problem
typearities =
Problem.arities
typesorts =
Sort_inference.sorts
type
finite_domain
val create : print_transformation:bool ->
print_sorts:bool -> problem -> finite_domain
create print problem domain_size
creates a finite domain representation based on problem
,
and infers the problem sorts.
prints the flattened clause set if print_transformation
is true.
prints the sorts if print_sorts
is true.
val get_problem : finite_domain -> problem
val get_flattened : finite_domain -> problem
val get_sorts : finite_domain -> sorts
val get_axioms : print:bool ->
print_tptp:bool ->
use_functionality_axioms:bool ->
finite_domain -> int -> clause list
if print is given the axioms are printed.
returns all axioms, not only the new ones for this domain size.
adds functionality axioms if use_functionality_axioms
is true.
val get_domain_element : int -> Term.term
val get_domain_elements : int -> Term.term list
val relation_to_equations : finite_domain -> term -> term list