3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-28 11:25:51 +00:00

start porting grobner basis functionality

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
This commit is contained in:
Lev Nachmanson 2019-09-07 11:54:36 -07:00
parent d0d7813b9b
commit 490672a5ba
11 changed files with 93 additions and 47 deletions

View file

@ -72,7 +72,7 @@ bool horner::lemmas_on_expr(cross_nested& cn) {
bool horner::check_cross_nested_expr(const nex* n) {
TRACE("nla_horner", tout << "cross-nested n = " << *n << "\n";);
c().lp_settings().st().m_cross_nested_forms++;
c().lp_settings().stats().m_cross_nested_forms++;
auto i = interval_of_expr(n);
TRACE("nla_horner", tout << "callback n = " << *n << "\ni="; m_intervals.display(tout, i) << "\n";);
@ -105,7 +105,7 @@ void horner::horner_lemmas() {
TRACE("nla_solver", tout << "not generating horner lemmas\n";);
return;
}
c().lp_settings().st().m_horner_calls++;
c().lp_settings().stats().m_horner_calls++;
const auto& matrix = c().m_lar_solver.A_r();
// choose only rows that depend on m_to_refine variables
std::set<unsigned> rows_to_check; // we need it to be determenistic: cannot work with the unordered_set
@ -125,7 +125,7 @@ void horner::horner_lemmas() {
for (unsigned i = 0; i < sz; i++) {
unsigned row_index = rows[(i + r) % sz];
if (lemmas_on_row(matrix.m_rows[row_index])) {
c().lp_settings().st().m_horner_conflicts++;
c().lp_settings().stats().m_horner_conflicts++;
break;
}
}