summaryrefslogtreecommitdiff
path: root/src/theory/theory_engine.cpp
diff options
context:
space:
mode:
authorajreynol <andrew.j.reynolds@gmail.com>2016-06-17 15:55:56 -0500
committerajreynol <andrew.j.reynolds@gmail.com>2016-06-17 15:57:28 -0500
commit1a2547995acc5a98c8969e628ac5e1c45b0efe94 (patch)
tree0d9abd19ba7b3b742da3e745da00c0457237f84b /src/theory/theory_engine.cpp
parent0348b525a951a8709f9dc4b5757ce0bcb48a9472 (diff)
Support for separation logic. Enable cbqi by default for pure BV.
Diffstat (limited to 'src/theory/theory_engine.cpp')
-rw-r--r--src/theory/theory_engine.cpp33
1 files changed, 22 insertions, 11 deletions
diff --git a/src/theory/theory_engine.cpp b/src/theory/theory_engine.cpp
index 618fda4c0..78dca299f 100644
--- a/src/theory/theory_engine.cpp
+++ b/src/theory/theory_engine.cpp
@@ -516,18 +516,29 @@ void TheoryEngine::check(Theory::Effort effort) {
// Must consult quantifiers theory for last call to ensure sat, or otherwise add a lemma
if( effort == Theory::EFFORT_FULL && ! d_inConflict && ! needCheck() ) {
- //d_theoryTable[THEORY_STRINGS]->check(Theory::EFFORT_LAST_CALL);
- if(d_logicInfo.isQuantified()) {
- // quantifiers engine must pass effort last call check
- d_quantEngine->check(Theory::EFFORT_LAST_CALL);
- // if returning incomplete or SAT, we have ensured that the model in the quantifiers engine has been built
- } else if(options::produceModels()) {
- // must build model at this point
- d_curr_model_builder->buildModel(d_curr_model, true);
+ //calls to theories requiring the model go here
+ //FIXME: this should not be theory-specific
+ if(d_logicInfo.isTheoryEnabled(THEORY_SEP)) {
+ Assert( d_theoryTable[THEORY_SEP]!=NULL );
+ if( d_theoryTable[THEORY_SEP]->hasFacts() ){
+ // must build model at this point
+ d_curr_model_builder->buildModel(getModel(), false);
+ d_theoryTable[THEORY_SEP]->check(Theory::EFFORT_LAST_CALL);
+ }
}
- Trace("theory::assertions-model") << endl;
- if (Trace.isOn("theory::assertions-model")) {
- printAssertions("theory::assertions-model");
+ if( ! d_inConflict && ! needCheck() ){
+ if(d_logicInfo.isQuantified()) {
+ // quantifiers engine must pass effort last call check
+ d_quantEngine->check(Theory::EFFORT_LAST_CALL);
+ // if returning incomplete or SAT, we have ensured that the model in the quantifiers engine has been built
+ } else if(options::produceModels()) {
+ // must build model at this point
+ d_curr_model_builder->buildModel(getModel(), true);
+ }
+ Trace("theory::assertions-model") << endl;
+ if (Trace.isOn("theory::assertions-model")) {
+ printAssertions("theory::assertions-model");
+ }
}
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback