The bv2nat function is non-standard function to convert bitvectors to natural numbers.
However, those functions appear often in generated benchmarks (esp. the why3 pipeline). Since SMT-LIB will likely support these operators in the future, it would be useful to know if an SMT-LIB benchmark is standard-complied otherwise.
I think a nice way to expose this to the user would be a switch that adds bv2nat as a function if the theory is BitVector + Natural Numbers. If you imagine supporting other extensions to SMT-LIB this could be something like --accept-extension=T where T is a list (only bv2nat for now).
The
bv2nat
function is non-standard function to convert bitvectors to natural numbers.However, those functions appear often in generated benchmarks (esp. the why3 pipeline). Since SMT-LIB will likely support these operators in the future, it would be useful to know if an SMT-LIB benchmark is standard-complied otherwise.
I think a nice way to expose this to the user would be a switch that adds
bv2nat
as a function if the theory is BitVector + Natural Numbers. If you imagine supporting other extensions to SMT-LIB this could be something like--accept-extension=T
whereT
is a list (onlybv2nat
for now).