mirror of
https://github.com/Z3Prover/z3
synced 2025-04-28 11:25:51 +00:00
fix mixup between constraint indices and lpvar explanations fixes various newly reported unsoundness bugs
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
9c972521c4
commit
81b3c440ce
4 changed files with 40 additions and 24 deletions
|
@ -200,7 +200,7 @@ void basics::add_fixed_zero_lemma(const monic& m, lpvar j) {
|
|||
}
|
||||
|
||||
void basics::negate_strict_sign(new_lemma& lemma, lpvar j) {
|
||||
TRACE("nla_solver_details", tout << pp_var(c(), j) << "\n";);
|
||||
TRACE("nla_solver_details", tout << pp_var(c(), j) << " " << val(j).is_zero() << "\n";);
|
||||
if (!val(j).is_zero()) {
|
||||
int sign = nla::rat_sign(val(j));
|
||||
lemma |= ineq(j, (sign == 1? llc::LE : llc::GE), 0);
|
||||
|
@ -635,7 +635,7 @@ bool basics::basic_lemma_for_mon_neutral_monic_to_factor_model_based(const monic
|
|||
new_lemma lemma(c(), __FUNCTION__);
|
||||
lemma |= ineq(mon_var, llc::EQ, 0);
|
||||
lemma |= ineq(term(u, rational(val(u) == -val(mon_var) ? 1 : -1), mon_var), llc::NE, 0);
|
||||
lemma |= ineq(v, llc::EQ, 1);
|
||||
lemma |= ineq(v, llc::EQ, 1);
|
||||
lemma |= ineq(v, llc::EQ, -1);
|
||||
lemma &= rm; // NSB review: is this dependency required?
|
||||
lemma &= f;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue