Z3 bitvecs до Int и обратно - PullRequest
       15

Z3 bitvecs до Int и обратно

0 голосов
/ 01 марта 2019

У меня есть следующий код:

from z3 import *

a0 = Int('a0')
a1 = Int('a1')
a2 = Int('a2')
v1 = BitVec('v1',32)

s.add(v1 ==  ((a0 + a1) >> 31) >> 30)
s.add(((v1 + a2) & 3) - v1 == 1)

Теперь я получаю следующую ошибку:

TypeError: unsupported operand type(s) for >>: 'ArithRef' and 'int'

Я понимаю проблему, z3 не может обработать подразумеваемое преобразование как нативноеПитон может (то есть 45 >> 3 напрямую преобразуется в 5).Однако мне нужно, чтобы мои переменные a_i были Ints.Есть ли способ добиться этого?

1 Ответ

0 голосов
/ 01 марта 2019
...