mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 09:05:31 +00:00
improve equality solving in qe-lite
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
552b386a29
commit
a594597906
4 changed files with 97 additions and 58 deletions
|
@ -594,6 +594,8 @@ namespace smt {
|
|||
m_simplex.set_upper(v, zero);
|
||||
}
|
||||
ctx.push_trail(undo_bound(*this, v, is_true));
|
||||
lbool is_sat = m_simplex.make_feasible();
|
||||
std::cout << is_sat << "\n";
|
||||
}
|
||||
|
||||
for (unsigned i = 0; i < ineqs->size(); ++i) {
|
||||
|
@ -628,8 +630,15 @@ namespace smt {
|
|||
}
|
||||
ctx.push_trail(reset_bound(*this, slack, is_true));
|
||||
|
||||
// m_simplex.feasible();
|
||||
//
|
||||
lbool is_sat = m_simplex.make_feasible();
|
||||
if (l_false == is_sat) {
|
||||
row r = m_simplex.get_infeasible_row();
|
||||
row_iterator it = m_simplex.row_begin(r), end = m_simplex.row_end(r);
|
||||
for (; it != end; ++it) {
|
||||
it->m_var;
|
||||
it->m_coeff;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (c->is_ge()) {
|
||||
assign_ineq(*c, is_true);
|
||||
|
|
|
@ -43,6 +43,7 @@ namespace smt {
|
|||
typedef vector<std::pair<literal, numeral> > arg_t;
|
||||
typedef simplex::simplex<simplex::mpz_ext> simplex;
|
||||
typedef simplex::row row;
|
||||
typedef simplex::row_iterator row_iterator;
|
||||
|
||||
struct stats {
|
||||
unsigned m_num_conflicts;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue