3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-15 13:28:47 +00:00

Expose Z3_mk_bv2int's is_signed parameter in Python API.

This commit is contained in:
Manuel Jacob 2016-05-13 23:11:15 +02:00
parent b0bd848a27
commit 7e3dfb4617

View file

@ -3468,7 +3468,7 @@ def is_bv_value(a):
""" """
return is_bv(a) and _is_numeral(a.ctx, a.as_ast()) return is_bv(a) and _is_numeral(a.ctx, a.as_ast())
def BV2Int(a): def BV2Int(a, is_signed=False):
"""Return the Z3 expression BV2Int(a). """Return the Z3 expression BV2Int(a).
>>> b = BitVec('b', 3) >>> b = BitVec('b', 3)
@ -3477,6 +3477,10 @@ def BV2Int(a):
>>> x = Int('x') >>> x = Int('x')
>>> x > BV2Int(b) >>> x > BV2Int(b)
x > BV2Int(b) x > BV2Int(b)
>>> x > BV2Int(b, is_signed=False)
x > BV2Int(b)
>>> x > BV2Int(b, is_signed=True)
x > If(b < 0, BV2Int(b) - 8, BV2Int(b))
>>> solve(x > BV2Int(b), b == 1, x < 3) >>> solve(x > BV2Int(b), b == 1, x < 3)
[b = 1, x = 2] [b = 1, x = 2]
""" """
@ -3484,7 +3488,7 @@ def BV2Int(a):
_z3_assert(is_bv(a), "Z3 bit-vector expression expected") _z3_assert(is_bv(a), "Z3 bit-vector expression expected")
ctx = a.ctx ctx = a.ctx
## investigate problem with bv2int ## investigate problem with bv2int
return ArithRef(Z3_mk_bv2int(ctx.ref(), a.as_ast(), 0), ctx) return ArithRef(Z3_mk_bv2int(ctx.ref(), a.as_ast(), is_signed), ctx)
def BitVecSort(sz, ctx=None): def BitVecSort(sz, ctx=None):
"""Return a Z3 bit-vector sort of the given size. If `ctx=None`, then the global context is used. """Return a Z3 bit-vector sort of the given size. If `ctx=None`, then the global context is used.