summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/smt/process_assertions.cpp24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/smt/process_assertions.cpp b/src/smt/process_assertions.cpp
index 971288b67..719165048 100644
--- a/src/smt/process_assertions.cpp
+++ b/src/smt/process_assertions.cpp
@@ -201,16 +201,6 @@ bool ProcessAssertions::apply(Assertions& as)
d_passes["bv-intro-pow2"]->apply(&assertions);
}
- // Since this pass is not robust for the information tracking necessary for
- // unsat cores, it's only applied if we are not doing unsat core computation
- if (!options::unsatCores())
- {
- d_passes["apply-substs"]->apply(&assertions);
- }
-
- // Assertions MUST BE guaranteed to be rewritten by this point
- d_passes["rewrite"]->apply(&assertions);
-
// Lift bit-vectors of size 1 to bool
if (options::bitvectorToBool())
{
@@ -219,8 +209,22 @@ bool ProcessAssertions::apply(Assertions& as)
if (options::solveBVAsInt() != options::SolveBVAsIntMode::OFF)
{
d_passes["bv-to-int"]->apply(&assertions);
+ // after running bv-to-int, we need to immediately run
+ // theory-preprocess and ite-removal so that newlly created
+ // terms and assertions are normalized (e.g., div is expanded).
+ d_passes["theory-preprocess"]->apply(&assertions);
}
+ // Since this pass is not robust for the information tracking necessary for
+ // unsat cores, it's only applied if we are not doing unsat core computation
+ if (!options::unsatCores())
+ {
+ d_passes["apply-substs"]->apply(&assertions);
+ }
+
+ // Assertions MUST BE guaranteed to be rewritten by this point
+ d_passes["rewrite"]->apply(&assertions);
+
// Convert non-top-level Booleans to bit-vectors of size 1
if (options::boolToBitvector() != options::BoolToBVMode::OFF)
{
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback