Я заметил в Z3, что если я использую функцию в моих ограничениях для Солвера, то я не могу передать ей постоянное значение.
Например:
В функции ниже, gen() - это функция, которая принимает 2 входа.Первый вход - это BitVec (), который представляет строку длиной 10. Второй параметр функции gen () будет использоваться для некоторых вычислений в ней.Тем не менее, я заметил, что хотя я передаю постоянное значение в качестве второго параметра через ограничения, это значение отличается внутри функции, когда Z3 решает уравнение.
from z3 import *
def gen(input, v):
outer_counter = v
for i in range(len(input)):
return result
s = Solver()
input = [BitVec("input%s" % i, 8) for i in range(10)]
s.add(gen(input, 0) == 0xAABBCCDD)
s.add(gen(input, 1) == 0xABCDABCD)
Итак, есть ли способв Z3 вызывать функцию через ограничения, а также передавать ей фиксированное значение?