options::decisionMode.set(decMode);
options::decisionStopOnly.set(stoponly);
}
- //local theory extensions
+ //local theory extensions
if( options::localTheoryExt() ){
//no E-matching?
if( !options::instMaxLevel.wasSetByUser() ){
//if bounded integers are set, use no MBQI by default
options::mbqiMode.set( quantifiers::MBQI_NONE );
}
+ if( ! options::prenexQuant.wasSetByUser() ){
+ options::prenexQuant.set( quantifiers::PRENEX_NONE );
+ }
}
if( options::ufssSymBreak() ){
options::sortInference.set( true );
options::finiteModelFind.set( true );
}
}
-
+
//now, have determined whether finite model find is on/off
//apply finite model finding options
if( options::finiteModelFind() ){
}
}
}
-
+
//implied options...
if( options::recurseCbqi() ){
options::cbqi.set( true );
return RewriteResponse(REWRITE_DONE, in[0][selectorIndex]);
}else{
//typically should not be called
+ TypeNode tn = in.getType();
Node gt;
- if( in.getType().isSort() ){
- TypeEnumerator te(in.getType());
+ if( tn.isSort() ){
+ TypeEnumerator te(tn);
gt = *te;
- }else if( dt.isWellFounded() || in[0].isConst() ){
- gt = in.getType().mkGroundTerm();
+ }else{
+ //check whether well-founded
+ bool isWellFounded = true;
+ if( isTypeDatatype( tn ) ){
+ const Datatype& dta = ((DatatypeType)(tn).toType()).getDatatype();
+ isWellFounded = dta.isWellFounded();
+ }
+ if( isWellFounded || in[0].isConst() ){
+ gt = tn.mkGroundTerm();
+ }
}
if( !gt.isNull() ){
- TypeNode gtt = gt.getType();
//Assert( gtt.isDatatype() || gtt.isParametricDatatype() );
- if( gtt.isDatatype() && !gtt.isInstantiatedDatatype() ){
+ if( tn.isDatatype() && !tn.isInstantiatedDatatype() ){
gt = NodeManager::currentNM()->mkNode(kind::APPLY_TYPE_ASCRIPTION,
- NodeManager::currentNM()->mkConst(AscriptionType(in.getType().toType())), gt);
+ NodeManager::currentNM()->mkConst(AscriptionType(tn.toType())), gt);
}
Trace("datatypes-rewrite") << "DatatypesRewriter::postRewrite: "
<< "Rewrite trivial selector " << in
<< " to distinguished ground term "
- << in.getType().mkGroundTerm() << std::endl;
+ << gt << std::endl;
return RewriteResponse(REWRITE_DONE,gt );
}
}
disable miniscope quantifiers for ground subformulas
# Whether to prenex (nested universal) quantifiers
-option prenexQuant --prenex-quant=MODE CVC4::theory::quantifiers::PrenexQuantMode :default CVC4::theory::quantifiers::PRENEX_NO_USER_PAT :include "theory/quantifiers/modes.h" :handler CVC4::theory::quantifiers::stringToPrenexQuantMode :handler-include "theory/quantifiers/options_handlers.h"
+option prenexQuant --prenex-quant=MODE CVC4::theory::quantifiers::PrenexQuantMode :default CVC4::theory::quantifiers::PRENEX_NO_USER_PAT :include "theory/quantifiers/modes.h" :read-write :handler CVC4::theory::quantifiers::stringToPrenexQuantMode :handler-include "theory/quantifiers/options_handlers.h"
disable prenexing of quantified formulas
# Whether to variable-eliminate quantifiers.