Is there any tool for bit vectors (QF_BV logic) which will symbolically execute the operations and return the outputs in terms of symbolic values of the bit vectors so that I can apply my own computations on them as needed? Or Is there any SMT solver where symbolic values of variables can be extracted after bit blasting? For example:
Let,
- X[3:0], Y[3:0], Z[4:0], W[4:0] are declared as bit vectors without initializing any value
- print X[3:0]
- X[3:0] <- X[3:0] >> 1 (logical shift)
- print X[3:0]
- Z[4:0] <- X[3:0] + Y[3:0]
- print Z[4:0]
- print Y[3:0]
- W[4:0] <- Y[3:0] + 0000
- print W[4:0]
- .......
Desired output (something symbolic like this):
2. [x3 x2 x1 x0]
4. [0 x3 x2 x1]
6. [s4 s3 s2 s1 s0]
7. [y3 y2 y1 y0]
9. [0 y3 y2 y1 y0]