From fc5e5a20980b45b0c766edff1e1408396836420d Mon Sep 17 00:00:00 2001 From: Lev Nachmanson Date: Tue, 10 Nov 2020 11:11:42 -0800 Subject: [PATCH] add a comment in nla_order Signed-off-by: Lev Nachmanson --- src/math/lp/nla_order_lemmas.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/math/lp/nla_order_lemmas.cpp b/src/math/lp/nla_order_lemmas.cpp index 8f00d8449..fd33f5f38 100644 --- a/src/math/lp/nla_order_lemmas.cpp +++ b/src/math/lp/nla_order_lemmas.cpp @@ -287,8 +287,13 @@ void order::generate_ol(const monic& ac, // c > 0 and ac <= bc => a <= b // c < 0 and ac >= bc => a <= b // c < 0 and ac <= bc => a >= b + + lemma |= ineq(c.var(), val(c.var()).is_neg() ? llc::GE : llc::LE, 0); lemma |= ineq(term(rational(1), ac.var(), -rational(1), bc.var()), var_val(ac) < var_val(bc) ? llc::GT : llc::LT, 0); + // The value of factor k is val(k) = k.rat_sign()*val(k.var()). + // That is why we need to use the factor signs of a and b in the term, + // but the constraint of the term is defined by val(a) and val(b). lemma |= ineq(term(a.rat_sign(), a.var(), -b.rat_sign(), b.var()), val(a) < val(b) ? llc::GE : llc::LE, 0); lemma &= ac;