diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2020-09-11 16:01:11 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-11 16:01:11 -0500 |
commit | b7bbe9a3bc30f41d1775a187ccc732aaeb41eaa1 (patch) | |
tree | 8f4d23e04f93aef397c2adafe2e671e2907671ce /src/theory/uf/theory_uf.cpp | |
parent | 2b7a0168bddfd2b840171aa8b9681f16d606c0b8 (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.cpp | 8 |
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()) |