summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorajreynol <andrew.j.reynolds@gmail.com>2015-12-10 13:32:42 +0100
committerajreynol <andrew.j.reynolds@gmail.com>2015-12-10 13:32:42 +0100
commit157a2ed349418611302476dce79fced1d95a4ecc (patch)
tree7b4a8ce7e6d88509cc9a19b599869652d7ebee5c /src
parent079eb73aa49c1d5a4b9e7e6f3b500e4940408309 (diff)
Add option fmf-empty-sorts.
Diffstat (limited to 'src')
-rw-r--r--src/theory/quantifiers/model_engine.cpp11
-rw-r--r--src/theory/quantifiers/options2
2 files changed, 12 insertions, 1 deletions
diff --git a/src/theory/quantifiers/model_engine.cpp b/src/theory/quantifiers/model_engine.cpp
index a3a18cf30..f5a063eb8 100644
--- a/src/theory/quantifiers/model_engine.cpp
+++ b/src/theory/quantifiers/model_engine.cpp
@@ -227,7 +227,16 @@ bool ModelEngine::considerQuantifiedFormula( Node q ) {
if( !d_quantEngine->getModelBuilder()->isQuantifierActive( q ) ){ //!d_quantEngine->getModel()->isQuantifierActive( q );
return false;
}else{
- if( options::fmfFunWellDefinedRelevant() ){
+ if( options::fmfEmptySorts() ){
+ for( unsigned i=0; i<q[0].getNumChildren(); i++ ){
+ TypeNode tn = q[0][i].getType();
+ //we are allowed to assume the type is empty
+ if( d_quantEngine->getModel()->d_rep_set.getNumRelevantGroundReps( tn )==0 ){
+ Trace("model-engine-debug") << "Empty domain quantified formula : " << q << std::endl;
+ return false;
+ }
+ }
+ }else if( options::fmfFunWellDefinedRelevant() ){
if( q[0].getNumChildren()==1 ){
TypeNode tn = q[0][0].getType();
if( tn.getAttribute(AbsTypeFunDefAttribute()) ){
diff --git a/src/theory/quantifiers/options b/src/theory/quantifiers/options
index be6f71c39..065da0d5a 100644
--- a/src/theory/quantifiers/options
+++ b/src/theory/quantifiers/options
@@ -127,6 +127,8 @@ option fmfFunWellDefined --fmf-fun bool :default false :read-write
find models for recursively defined functions, assumes functions are admissible
option fmfFunWellDefinedRelevant --fmf-fun-rlv bool :default false
find models for recursively defined functions, assumes functions are admissible, allows empty type when function is irrelevant
+option fmfEmptySorts --fmf-empty-sorts bool :default false
+ allow finite model finding to assume sorts that do not occur in ground assertions are empty
option mbqiMode --mbqi=MODE CVC4::theory::quantifiers::MbqiMode :read-write :default CVC4::theory::quantifiers::MBQI_FMC :include "theory/quantifiers/modes.h" :handler CVC4::theory::quantifiers::stringToMbqiMode :handler-include "theory/quantifiers/options_handlers.h" :predicate CVC4::theory::quantifiers::checkMbqiMode :predicate-include "theory/quantifiers/options_handlers.h"
choose mode for model-based quantifier instantiation
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback