3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-15 21:38:44 +00:00

fix logic for adding cores

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2013-08-11 09:43:17 -07:00
parent 0f83e7a251
commit 6a820adfed

View file

@ -182,12 +182,14 @@ namespace pdr {
void core_convex_hull_generalizer::method1(model_node& n, expr_ref_vector const& core, bool uses_level, cores& new_cores) {
manager& pm = n.pt().get_pdr_manager();
expr_ref_vector conv1(m), conv2(m), core1(m), core2(m), eqs(m);
unsigned orig_size = new_cores.size();
if (core.empty()) {
new_cores.push_back(std::make_pair(core, uses_level));
return;
}
new_cores.push_back(std::make_pair(core, uses_level));
add_variables(n, eqs);
if (!mk_convex(core, 0, conv1)) {
new_cores.push_back(std::make_pair(core, uses_level));
IF_VERBOSE(0, verbose_stream() << "Non-convex: " << mk_pp(pm.mk_and(core), m) << "\n";);
return;
}
@ -233,6 +235,10 @@ namespace pdr {
verbose_stream() << "Generalized to:\n" << mk_pp(state1, m) << "\n";);
}
}
if (!m_is_closure || new_cores.empty()) {
new_cores.push_back(std::make_pair(core, uses_level));
}
}
// take as starting point two points from different regions.