summaryrefslogtreecommitdiff
path: root/src/theory/quantifiers/fmf/model_builder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/theory/quantifiers/fmf/model_builder.cpp')
-rw-r--r--src/theory/quantifiers/fmf/model_builder.cpp30
1 files changed, 11 insertions, 19 deletions
diff --git a/src/theory/quantifiers/fmf/model_builder.cpp b/src/theory/quantifiers/fmf/model_builder.cpp
index 5ae05f2a7..a3dc50dd1 100644
--- a/src/theory/quantifiers/fmf/model_builder.cpp
+++ b/src/theory/quantifiers/fmf/model_builder.cpp
@@ -47,7 +47,8 @@ bool QModelBuilder::preProcessBuildModel(TheoryModel* m) {
bool QModelBuilder::preProcessBuildModelStd(TheoryModel* m) {
d_addedLemmas = 0;
d_triedLemmas = 0;
- if( options::fmfEmptySorts() || options::fmfFunWellDefinedRelevant() ){
+ if (options::fmfFunWellDefinedRelevant())
+ {
FirstOrderModel * fm = (FirstOrderModel*)m;
//traverse equality engine
std::map< TypeNode, bool > eqc_usort;
@@ -63,28 +64,19 @@ bool QModelBuilder::preProcessBuildModelStd(TheoryModel* m) {
Node q = fm->getAssertedQuantifier( i, true );
if( fm->isQuantifierActive( q ) ){
//check if any of these quantified formulas can be set inactive
- if( options::fmfEmptySorts() ){
- for (const Node& var : q[0])
+ if (q[0].getNumChildren() == 1)
+ {
+ TypeNode tn = q[0][0].getType();
+ if (tn.getAttribute(AbsTypeFunDefAttribute()))
{
- TypeNode tn = var.getType();
- //we are allowed to assume the type is empty
- if( tn.isSort() && eqc_usort.find( tn )==eqc_usort.end() ){
- Trace("model-engine-debug") << "Empty domain quantified formula : " << q << std::endl;
+ // we are allowed to assume the introduced type is empty
+ if (eqc_usort.find(tn) == eqc_usort.end())
+ {
+ Trace("model-engine-debug")
+ << "Irrelevant function definition : " << q << std::endl;
fm->setQuantifierActive( q, false );
}
}
- }else if( options::fmfFunWellDefinedRelevant() ){
- if( q[0].getNumChildren()==1 ){
- TypeNode tn = q[0][0].getType();
- if( tn.getAttribute(AbsTypeFunDefAttribute()) ){
- //Trace("model-engine-debug2") << "...possible irrelevant function def : " << q << ", #rr = " << d_quantEngine->getModel()->d_rep_set.getNumRelevantGroundReps( tn ) << std::endl;
- //we are allowed to assume the introduced type is empty
- if( eqc_usort.find( tn )==eqc_usort.end() ){
- Trace("model-engine-debug") << "Irrelevant function definition : " << q << std::endl;
- fm->setQuantifierActive( q, false );
- }
- }
- }
}
}
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback