if (!opts.quantifiers.fmfBoundWasSetByUser)
{
opts.quantifiers.fmfBound = true;
- Trace("smt") << "turning on fmf-bound-int, for strings-exp" << std::endl;
+ Trace("smt") << "turning on fmf-bound, for strings-exp" << std::endl;
}
// Note we allow E-matching by default to support combinations of sequences
// and quantifiers.
options::DecisionMode decMode =
// anything that uses sygus uses internal
usesSygus ? options::DecisionMode::INTERNAL :
- // ALL or its supersets
+ // ALL or its supersets
logic.hasEverything()
? options::DecisionMode::JUSTIFICATION
: ( // QF_BV
|| (opts.quantifiers.fmfBoundIntWasSetByUser && options::fmfBoundInt()))
{
opts.quantifiers.fmfBound = true;
+ Trace("smt")
+ << "turning on fmf-bound, for fmf-bound-int or fmf-bound-lazy\n";
}
- // now have determined whether fmfBoundInt is on/off
- // apply fmfBoundInt options
+ // now have determined whether fmfBound is on/off
+ // apply fmfBound options
if (options::fmfBound())
{
if (!opts.quantifiers.mbqiModeWasSetByUser
{
opts.quantifiers.macrosQuant = false;
}
+ // HOL is incompatible with fmfBound
+ if (options::fmfBound())
+ {
+ if (opts.quantifiers.fmfBoundWasSetByUser
+ || opts.quantifiers.fmfBoundLazyWasSetByUser
+ || opts.quantifiers.fmfBoundIntWasSetByUser)
+ {
+ Notice() << "Disabling bound finite-model finding since it is "
+ "incompatible with HOL.\n";
+ }
+
+ opts.quantifiers.fmfBound = false;
+ Trace("smt") << "turning off fmf-bound, since HOL\n";
+ }
}
if (options::fmfFunWellDefinedRelevant())
{
regress0/ho/issue5233-part1-usort-owner.smt2
regress0/ho/issue5371.smt2
regress0/ho/issue6526.smt2
+ regress0/ho/issue6536.smt2
regress0/ho/ite-apply-eq.smt2
regress0/ho/lambda-equality-non-canon.smt2
regress0/ho/match-middle.smt2