This changes our policy for --nl-cov-var-elim. It is now enabled by default (it is only used when the coverings solver is used, though), but then disabled when proofs are enabled. Before, it was forced to be enabled when coverings were enabled in set_defaults.
Fixes cvc5/cvc5-projects#489
category = "regular"
long = "nl-cov-var-elim"
type = "bool"
- default = "false"
- help = "whether to eliminate variables using equalities before going into the cylindrical algebraic coverings solver"
+ default = "true"
+ help = "whether to eliminate variables using equalities before going into the cylindrical algebraic coverings solver. It can not be used when producing proofs right now."
[[option]]
name = "nlCovPrune"
if (!opts.arith.nlCov && !opts.arith.nlCovWasSetByUser)
{
opts.arith.nlCov = true;
- opts.arith.nlCovVarElim = true;
if (!opts.arith.nlExtWasSetByUser)
{
opts.arith.nlExt = options::NlExtMode::LIGHT;
if (!opts.arith.nlCov && !opts.arith.nlCovWasSetByUser)
{
opts.arith.nlCov = true;
- opts.arith.nlCovVarElim = true;
if (!opts.arith.nlExtWasSetByUser)
{
opts.arith.nlExt = options::NlExtMode::LIGHT;
<< std::endl;
opts.bv.bvSolver = options::BVSolver::BITBLAST_INTERNAL;
}
+ if (opts.arith.nlCovVarElim && !opts.arith.nlCovVarElimWasSetByUser)
+ {
+ verbose(1)
+ << "Disabling nl-cov-var-elim since it is incompatible with proofs."
+ << std::endl;
+ opts.arith.nlCovVarElim = false;
+ }
return false;
}