#include "preprocessing/passes/bv_to_bool.h"
#include "preprocessing/passes/extended_rewriter_pass.h"
#include "preprocessing/passes/global_negate.h"
+#include "preprocessing/passes/ho_elim.h"
#include "preprocessing/passes/int_to_bv.h"
#include "preprocessing/passes/ite_removal.h"
#include "preprocessing/passes/ite_simp.h"
registerPassInfo("quantifier-macros", callCtor<QuantifierMacros>);
registerPassInfo("nl-ext-purify", callCtor<NlExtPurify>);
registerPassInfo("bool-to-bv", callCtor<BoolToBV>);
+ registerPassInfo("ho-elim", callCtor<HoElim>);
}
} // namespace preprocessing
if( options::mbqiMode()!=quantifiers::MBQI_NONE ){
options::mbqiMode.set( quantifiers::MBQI_NONE );
}
+ if (!options::hoElimStoreAx.wasSetByUser())
+ {
+ // by default, use store axioms only if --ho-elim is set
+ options::hoElimStoreAx.set(options::hoElim());
+ }
}
if( options::fmfFunWellDefinedRelevant() ){
if( !options::fmfFunWellDefined.wasSetByUser() ){
d_passes["apply-to-const"]->apply(&d_assertions);
}
+ if (options::ufHo())
+ {
+ d_passes["ho-elim"]->apply(&d_assertions);
+ }
+
// begin: INVARIANT to maintain: no reordering of assertions or
// introducing new ones
#ifdef CVC4_ASSERTIONS