summaryrefslogtreecommitdiff
path: root/src/theory/arith/nl/poly_conversion.cpp
diff options
context:
space:
mode:
authorGereon Kremer <gereon.kremer@cs.rwth-aachen.de>2020-10-30 09:07:53 +0100
committerGitHub <noreply@github.com>2020-10-30 09:07:53 +0100
commit42fe4ae0e866d78dd7743214eb1b1ccb92900c5a (patch)
treed755a372928ac084d82b84ab4078a3e749c25f89 /src/theory/arith/nl/poly_conversion.cpp
parent21fd193bdaad1a952845326aa1c84654cfce1503 (diff)
Use BoundInference in nonlinear extension (#5359)
Currently the NonlinearExtensions uses a custom logic to eliminate redundant bounds and perform tightening on bound integer terms. As these replacements are not recorded, incorrect conflicts are being sent to the InferenceManager. This PR replaces this logic by the BoundInference class and fixes the issues with conflicts by - allowing BoundInference to collect bounds on arbitrary left hand sides (instead of only variables), - improving origin tracking in BoundInference by explicitly constructing the new bound constraints, - adding tightening of integer bounds, - emitting lemmas instead of conflicts, and finally - replacing the current logic by using the BoundInference class.
Diffstat (limited to 'src/theory/arith/nl/poly_conversion.cpp')
-rw-r--r--src/theory/arith/nl/poly_conversion.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/theory/arith/nl/poly_conversion.cpp b/src/theory/arith/nl/poly_conversion.cpp
index a76a781c4..0e4e21b76 100644
--- a/src/theory/arith/nl/poly_conversion.cpp
+++ b/src/theory/arith/nl/poly_conversion.cpp
@@ -785,12 +785,12 @@ poly::IntervalAssignment getBounds(VariableMapper& vm, const BoundInference& bi)
for (const auto& vb : bi.get())
{
poly::Variable v = vm(vb.first);
- poly::Value l = vb.second.lower.isNull()
+ poly::Value l = vb.second.lower_value.isNull()
? poly::Value::minus_infty()
- : node_to_value(vb.second.lower, vb.first);
- poly::Value u = vb.second.upper.isNull()
+ : node_to_value(vb.second.lower_value, vb.first);
+ poly::Value u = vb.second.upper_value.isNull()
? poly::Value::plus_infty()
- : node_to_value(vb.second.upper, vb.first);
+ : node_to_value(vb.second.upper_value, vb.first);
poly::Interval i(l, vb.second.lower_strict, u, vb.second.upper_strict);
res.set(v, i);
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback