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_domaincreate 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 -> problemval get_flattened : finite_domain -> problemval get_sorts : finite_domain -> sortsval get_axioms : print:bool ->
print_tptp:bool ->
use_functionality_axioms:bool ->
finite_domain -> int -> clause listif 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.termval get_domain_elements : int -> Term.term listval relation_to_equations : finite_domain -> term -> term list