bv2int: caching introduced terms (#5283)
authoryoni206 <yoni206@users.noreply.github.com>
Fri, 16 Oct 2020 15:04:22 +0000 (08:04 -0700)
committerGitHub <noreply@github.com>
Fri, 16 Oct 2020 15:04:22 +0000 (10:04 -0500)
commiteae5bf6a701037238b91476de9f8d26e34976779
tree913fcf50efb33e68d46c48c99b62367b645aa69a
parent56f0e3c3455cc522bd18f41664591cae2c564be3
bv2int: caching introduced terms (#5283)

The bv-to-int preprocessing pass has a cache that maps each BV node to its translated integer node.
In case the BV node is a function symbol, it's translated integer node is a fresh function symbol.
On current master, if we later process this fresh function symbol in the preprocessing pass, we again create a fresh function symbol as its translation. This is unsound, and was discovered in #5281, whose benchmark is added to regressions.
Closes #5281 if merged.
src/preprocessing/passes/bv_to_int.cpp
test/regress/CMakeLists.txt
test/regress/regress0/bv/bv_to_int_5281.smt2 [new file with mode: 0644]