summaryrefslogtreecommitdiff
path: root/src/theory/sets
diff options
context:
space:
mode:
authorajreynol <andrew.j.reynolds@gmail.com>2017-02-07 13:26:57 -0600
committerajreynol <andrew.j.reynolds@gmail.com>2017-02-07 13:26:57 -0600
commit3837f84ab251d1563726f3d13b95f541eaa331a4 (patch)
tree7afb6eb470b837b7e7600437356a8080fc329eb5 /src/theory/sets
parent0dd2aa21f35b221ea96d277e9ea7cbc816ffe83c (diff)
Generalize finite bound inference to unifiable variables in set membership literals.
Diffstat (limited to 'src/theory/sets')
-rw-r--r--src/theory/sets/theory_sets_private.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/theory/sets/theory_sets_private.cpp b/src/theory/sets/theory_sets_private.cpp
index 40da5d7d0..d3c596664 100644
--- a/src/theory/sets/theory_sets_private.cpp
+++ b/src/theory/sets/theory_sets_private.cpp
@@ -90,7 +90,9 @@ void TheorySetsPrivate::eqNotifyNewClass(TNode t) {
EqcInfo * e = getOrMakeEqcInfo( t, true );
e->d_singleton = t;
}
- d_rels->eqNotifyNewClass( t );
+ if( options::setsRelEager() ){
+ d_rels->eqNotifyNewClass( t );
+ }
}
void TheorySetsPrivate::eqNotifyPreMerge(TNode t1, TNode t2){
@@ -183,7 +185,9 @@ void TheorySetsPrivate::eqNotifyPostMerge(TNode t1, TNode t2){
}
d_members[t1] = n_members;
}
- d_rels->eqNotifyPostMerge( t1, t2 );
+ if( options::setsRelEager() ){
+ d_rels->eqNotifyPostMerge( t1, t2 );
+ }
}
}
@@ -1532,7 +1536,7 @@ void TheorySetsPrivate::check(Theory::Effort level) {
fullEffortCheck();
}
// invoke the relational solver
- if( !d_conflict && !d_sentLemma ){
+ if( !d_conflict && !d_sentLemma && ( level == Theory::EFFORT_FULL || options::setsRelEager() ) ){
d_rels->check(level);
//incomplete if we have both cardinality constraints and relational operators?
// TODO: should internally check model, return unknown if fail
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback