我在Z3中观察到,如果我在求解器的约束中使用函数,则无法将其传递给常量。
例如:
在下面的函数中,gen()是一个需要2个输入的函数。第一个输入是一个表示长度为10的字符串的BitVec()。第二个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中是否有一种方法可以通过约束来调用一个函数,并同时传递一个固定值?