mirror of
https://github.com/Z3Prover/z3
synced 2025-08-30 15:00:08 +00:00
bmc improvements, move fd_solver to self-contained directory
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
fd09b1a7d0
commit
e041ebbe80
21 changed files with 120 additions and 76 deletions
|
@ -92,6 +92,20 @@ namespace datalog {
|
|||
void reset() { m_exist = m_univ = false; }
|
||||
};
|
||||
|
||||
struct fd_finder_proc {
|
||||
ast_manager& m;
|
||||
bv_util m_bv;
|
||||
bool m_is_fd;
|
||||
fd_finder_proc(ast_manager& m): m(m), m_bv(m), m_is_fd(true) {}
|
||||
|
||||
bool is_fd() const { return m_is_fd; }
|
||||
bool is_fd(sort* s) { return m.is_bool(s) || m_bv.is_bv_sort(s); }
|
||||
void operator()(var* n) { m_is_fd &= is_fd(n->get_sort()); }
|
||||
void operator()(quantifier* ) { m_is_fd = false; }
|
||||
void operator()(app* n) { m_is_fd &= is_fd(n->get_decl()->get_range()); }
|
||||
void reset() { m_is_fd = true; }
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
\brief Manager for the \c rule class
|
||||
|
@ -117,6 +131,7 @@ namespace datalog {
|
|||
mutable uninterpreted_function_finder_proc m_ufproc;
|
||||
mutable quantifier_finder_proc m_qproc;
|
||||
mutable expr_sparse_mark m_visited;
|
||||
mutable fd_finder_proc m_fd_proc;
|
||||
|
||||
|
||||
// only the context can create a rule_manager
|
||||
|
@ -265,6 +280,7 @@ namespace datalog {
|
|||
bool has_uninterpreted_non_predicates(rule const& r, func_decl*& f) const;
|
||||
void has_quantifiers(rule const& r, bool& existential, bool& universal) const;
|
||||
bool has_quantifiers(rule const& r) const;
|
||||
bool is_finite_domain(rule const& r) const;
|
||||
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue