mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 09:05:31 +00:00
extract also units from search state
This commit is contained in:
parent
d4ea67a6e7
commit
3f3d058567
7 changed files with 36 additions and 1 deletions
|
@ -4613,6 +4613,22 @@ namespace smt {
|
|||
return result;
|
||||
}
|
||||
|
||||
void context::get_units(expr_ref_vector& result) {
|
||||
expr_mark visited;
|
||||
for (expr* fml : result)
|
||||
visited.mark(fml);
|
||||
for (literal lit : m_assigned_literals) {
|
||||
if (get_assign_level(lit) > m_base_lvl)
|
||||
break;
|
||||
expr_ref e(m);
|
||||
literal2expr(lit, e);
|
||||
if (visited.is_marked(e))
|
||||
continue;
|
||||
result.push_back(std::move(e));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
failure context::get_last_search_failure() const {
|
||||
return m_last_search_failure;
|
||||
}
|
||||
|
|
|
@ -1691,6 +1691,8 @@ namespace smt {
|
|||
|
||||
void get_assertions(ptr_vector<expr> & result) { m_asserted_formulas.get_assertions(result); }
|
||||
|
||||
void get_units(expr_ref_vector& result);
|
||||
|
||||
/*
|
||||
* user-propagator
|
||||
*/
|
||||
|
|
|
@ -177,6 +177,10 @@ namespace smt {
|
|||
void kernel::get_assignments(expr_ref_vector & result) {
|
||||
m_imp->m_kernel.get_assignments(result);
|
||||
}
|
||||
|
||||
void kernel::get_units(expr_ref_vector & result) {
|
||||
m_imp->m_kernel.get_units(result);
|
||||
}
|
||||
|
||||
void kernel::get_relevant_labels(expr * cnstr, buffer<symbol> & result) {
|
||||
m_imp->m_kernel.get_relevant_labels(cnstr, result);
|
||||
|
@ -280,4 +284,4 @@ namespace smt {
|
|||
m_imp->m_kernel.user_propagate_register_created(r);
|
||||
}
|
||||
|
||||
};
|
||||
};
|
||||
|
|
|
@ -202,6 +202,12 @@ namespace smt {
|
|||
\brief Return the set of formulas assigned by the kernel.
|
||||
*/
|
||||
void get_assignments(expr_ref_vector & result);
|
||||
|
||||
|
||||
/**
|
||||
\brief Return units assigned by the kernel.
|
||||
*/
|
||||
void get_units(expr_ref_vector& result);
|
||||
|
||||
/**
|
||||
\brief Return the set of relevant labels in the last check command.
|
||||
|
|
|
@ -318,6 +318,10 @@ namespace {
|
|||
return m_context.get_formula(idx);
|
||||
}
|
||||
|
||||
void get_units_core(expr_ref_vector& units) override {
|
||||
m_context.get_units(units);
|
||||
}
|
||||
|
||||
expr_ref_vector cube(expr_ref_vector& vars, unsigned cutoff) override {
|
||||
ast_manager& m = get_manager();
|
||||
if (!m_cuber) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue