3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 17:15:31 +00:00

add another baseline heuristic for string equalities, add cases for array axioms.

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2024-12-09 15:55:11 -08:00
parent e5f8327483
commit 8f5658b77d
6 changed files with 340 additions and 29 deletions

View file

@ -619,7 +619,7 @@ namespace lp {
bool lar_solver::solve_for(unsigned j, lar_term& t, mpq& coeff) {
t.clear();
IF_VERBOSE(10, verbose_stream() << column_is_fixed(j) << " " << is_base(j) << "\n");
IF_VERBOSE(10, verbose_stream() << "j " << j << " is fixed " << column_is_fixed(j) << " is-base " << is_base(j) << "\n");
if (column_is_fixed(j)) {
coeff = get_value(j);
return true;
@ -627,8 +627,8 @@ namespace lp {
if (!is_base(j)) {
for (const auto & c : A_r().m_columns[j]) {
lpvar basic_in_row = r_basis()[c.var()];
IF_VERBOSE(10, verbose_stream() << "c.var() = " << c.var() << " basic_in_row = " << basic_in_row << "\n");
pivot(j, basic_in_row);
IF_VERBOSE(10, verbose_stream() << "is base " << is_base(j) << " c.var() = " << c.var() << " basic_in_row = " << basic_in_row << "\n");
break;
}
}
@ -643,6 +643,8 @@ namespace lp {
else
t.add_monomial(-c.coeff(), c.var());
}
IF_VERBOSE(10, verbose_stream() << "j = " << j << " t = ";
print_term(t, verbose_stream()) << " coeff = " << coeff << "\n");
return true;
}