summaryrefslogtreecommitdiff
path: root/src/theory/uf/theory_uf.cpp
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2020-09-11 16:01:11 -0500
committerGitHub <noreply@github.com>2020-09-11 16:01:11 -0500
commitb7bbe9a3bc30f41d1775a187ccc732aaeb41eaa1 (patch)
tree8f4d23e04f93aef397c2adafe2e671e2907671ce /src/theory/uf/theory_uf.cpp
parent2b7a0168bddfd2b840171aa8b9681f16d606c0b8 (diff)
Move finite model minimization to UF last call effort (#5050)
This moves model minimization happen in TheoryUF's last call effort check instead of being a custom call in quantifiers finite model finding. This is both a better design and avoids bugs when quantifiers are not enabled (for QF_UF+cardinality constraints). Fixes #4850.
Diffstat (limited to 'src/theory/uf/theory_uf.cpp')
-rw-r--r--src/theory/uf/theory_uf.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/theory/uf/theory_uf.cpp b/src/theory/uf/theory_uf.cpp
index 0a48d4c71..18ab70d46 100644
--- a/src/theory/uf/theory_uf.cpp
+++ b/src/theory/uf/theory_uf.cpp
@@ -125,6 +125,12 @@ static Node mkAnd(const std::vector<TNode>& conjunctions) {
//--------------------------------- standard check
+bool TheoryUF::needsCheckLastEffort()
+{
+ // last call effort needed if using finite model finding
+ return d_thss != nullptr;
+}
+
void TheoryUF::postCheck(Effort level)
{
if (d_state.isInConflict())
@@ -136,7 +142,7 @@ void TheoryUF::postCheck(Effort level)
{
d_thss->check(level);
}
- // check with the higher-order extension
+ // check with the higher-order extension at full effort
if (!d_state.isInConflict() && fullEffort(level))
{
if (options::ufHo())
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback