summaryrefslogtreecommitdiff
path: root/src/theory/arrays/theory_arrays.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/theory/arrays/theory_arrays.cpp')
-rw-r--r--src/theory/arrays/theory_arrays.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/theory/arrays/theory_arrays.cpp b/src/theory/arrays/theory_arrays.cpp
index 62de6092b..02575edd4 100644
--- a/src/theory/arrays/theory_arrays.cpp
+++ b/src/theory/arrays/theory_arrays.cpp
@@ -1141,6 +1141,19 @@ void TheoryArrays::checkModel(Effort e)
d_decisions.pop_back();
if (all.find(decision) != all.end()) {
if (getSatContext()->getLevel() < baseLevel) {
+ if (all.size() == 1) {
+ d_lemmas.push_back(decision.negate());
+ }
+ else {
+ NodeBuilder<> disjunction(kind::OR);
+ std::set<TNode>::const_iterator it = all.begin();
+ std::set<TNode>::const_iterator it_end = all.end();
+ while (it != it_end) {
+ disjunction << (*it).negate();
+ ++it;
+ }
+ d_lemmas.push_back(disjunction);
+ }
goto finish;
}
all.erase(decision);
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback