diff options
author | yoni206 <yoni206@users.noreply.github.com> | 2021-06-30 05:11:56 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-30 07:11:56 -0500 |
commit | 14944f1115fa2ad20afa3873626c2804731aff71 (patch) | |
tree | d1daf6cdf25988ae0c5f6b514e32764dbd1fa8eb /src/preprocessing/passes/int_to_bv.h | |
parent | 373b6e1e8e91874afab16416f7acc3839f0027af (diff) |
int-to-bv: correct model values (#6811)
the int-to-bv preprocessing pass produced wrong models.
This PR fixes this in a similar fashion to other preprocessing passes, by adding a substitution to the preprocessing pass context. This requires moving the main translation function to be a class method, rather than a helper method in an empty namespace.
Thanks to @alex-ozdemir for raising this issue and producing a triggering benchmark (added to regressions in this PR).
Diffstat (limited to 'src/preprocessing/passes/int_to_bv.h')
-rw-r--r-- | src/preprocessing/passes/int_to_bv.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/preprocessing/passes/int_to_bv.h b/src/preprocessing/passes/int_to_bv.h index 5d6ac15e4..43830f03b 100644 --- a/src/preprocessing/passes/int_to_bv.h +++ b/src/preprocessing/passes/int_to_bv.h @@ -22,16 +22,20 @@ #ifndef CVC5__PREPROCESSING__PASSES__INT_TO_BV_H #define CVC5__PREPROCESSING__PASSES__INT_TO_BV_H +#include "expr/node.h" #include "preprocessing/preprocessing_pass.h" namespace cvc5 { namespace preprocessing { namespace passes { +using NodeMap = std::unordered_map<Node, Node>; + class IntToBV : public PreprocessingPass { public: IntToBV(PreprocessingPassContext* preprocContext); + Node intToBV(TNode n, NodeMap& cache); protected: PreprocessingPassResult applyInternal( |