Skip to content

Commit

Permalink
guard against lemmas that are already true
Browse files Browse the repository at this point in the history
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
  • Loading branch information
NikolajBjorner committed Jul 15, 2022
1 parent 4ecb61a commit 6c5747a
Showing 1 changed file with 21 additions and 7 deletions.
28 changes: 21 additions & 7 deletions src/math/lp/nla_grobner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,12 @@ namespace nla {
unsigned v = p.var();
if (c().var_is_fixed(v))
return false;
ineq new_eq(v, llc::EQ, rational::zero());
if (c().ineq_holds(new_eq))
return false;
new_lemma lemma(c(), "pdd-eq");
add_dependencies(lemma, eq);
lemma |= ineq(v, llc::EQ, rational::zero());
lemma |= new_eq;
return true;
}
if (p.is_offset()) {
Expand All @@ -135,9 +138,12 @@ namespace nla {
rational d = lcm(denominator(a), denominator(b));
a *= d;
b *= d;
ineq new_eq(term(a, v), llc::EQ, b);
if (c().ineq_holds(new_eq))
return false;
new_lemma lemma(c(), "pdd-eq");
add_dependencies(lemma, eq);
lemma |= ineq(term(a, v), llc::EQ, b);
lemma |= new_eq;
return true;
}

Expand All @@ -156,16 +162,24 @@ namespace nla {
return false;

// IF_VERBOSE(0, verbose_stream() << "factored " << q << " : " << vars << "\n");
new_lemma lemma(c(), "pdd-factored");
add_dependencies(lemma, eq);

term t;
while (!q.is_val()) {
t.add_monomial(q.hi().val(), q.var());
q = q.lo();
}
for (auto v : vars)
lemma |= ineq(v, llc::EQ, rational::zero());
lemma |= ineq(t, llc::EQ, -q.val());
vector<ineq> ineqs;
for (auto v : vars)
ineqs.push_back(ineq(v, llc::EQ, rational::zero()));
ineqs.push_back(ineq(t, llc::EQ, -q.val()));
for (auto const& i : ineqs)
if (c().ineq_holds(i))
return false;

new_lemma lemma(c(), "pdd-factored");
add_dependencies(lemma, eq);
for (auto const& i : ineqs)
lemma |= i;
//lemma.display(verbose_stream());
return true;
}
Expand Down

0 comments on commit 6c5747a

Please sign in to comment.