3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-28 19:35:50 +00:00

consolidate methods that add lemma specific information to under "new_lemma"

This commit is contained in:
Nikolaj Bjorner 2020-05-10 18:31:57 -07:00
parent caee936af5
commit 179c9c2da2
12 changed files with 314 additions and 560 deletions

View file

@ -40,11 +40,10 @@ void monotone::monotonicity_lemma_gt(const monic& m, const rational& prod_val) {
tout << "m = "; c().print_monic_with_vars(m, tout););
new_lemma lemma(c(), __FUNCTION__);
for (lpvar j : m.vars()) {
c().add_abs_bound(j, llc::GT);
c().add_abs_bound(lemma, j, llc::GT);
}
lpvar m_j = m.var();
c().add_abs_bound(m_j, llc::LE, prod_val);
TRACE("nla_solver", print_lemma(tout););
c().add_abs_bound(lemma, m_j, llc::LE, prod_val);
}
/** \brief enforce the inequality |m| >= product |m[i]| .
@ -56,11 +55,10 @@ void monotone::monotonicity_lemma_gt(const monic& m, const rational& prod_val) {
void monotone::monotonicity_lemma_lt(const monic& m, const rational& prod_val) {
new_lemma lemma(c(), __FUNCTION__);
for (lpvar j : m.vars()) {
c().add_abs_bound(j, llc::LT);
c().add_abs_bound(lemma, j, llc::LT);
}
lpvar m_j = m.var();
c().add_abs_bound(m_j, llc::GE, prod_val);
TRACE("nla_solver", print_lemma(tout););
c().add_abs_bound(lemma, m_j, llc::GE, prod_val);
}