Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Z3 在公式中使用上一个/链接的值_Z3_Z3py - Fatal编程技术网

Z3 在公式中使用上一个/链接的值

Z3 在公式中使用上一个/链接的值,z3,z3py,Z3,Z3py,可以解出这种方程: const = [0x50, 0xe8, 0bcb, 0x9f, 0xa1] data = IntVector('data', len(const)) for i in range(0, len(const)-1): s.add(data[i] >= 32, data[i] <= 126) s.add(data[i+1] >= 32, data[i+1] <= 126) s.add(data[i] + data[i+1] == const[

可以解出这种方程:

const = [0x50, 0xe8, 0bcb, 0x9f, 0xa1]
data = IntVector('data', len(const))
for i in range(0, len(const)-1):
  s.add(data[i] >= 32, data[i] <= 126)
  s.add(data[i+1] >= 32, data[i+1] <= 126)
  s.add(data[i] + data[i+1] == const[i]
const=[0x50、0xe8、0bcb、0x9f、0xa1]
data=IntVector('data',len(const))
对于范围(0,长度(常数)-1)内的i:

s、 add(data[i]>=32,data[i]=32,data[i+1]Yes。在修复明显的语法错误后,我的Z3将其报告为不可满足。

Yes。在修复明显的语法错误后,我的Z3将其报告为不可满足。

假设
0bcb
的意思类似于
0xcb
,则常量列表为
[80232 203159161]

然后你要求5个变量,让我们称它们为
d0,d1,d2,d3,d4
,每个变量都在32和126之间。其中
d0+d1==80
(因此
d1=106
)。这显然与Z3一致的情况相反。(注意,你的约束没有使用
const
的最后一个元素)

下面是代码的一个略为通俗的版本,其中包括5个常数中的每一个(第二个常数降低以获得可解的约束系统):


假设
0bcb
的意思类似于
0xcb
,那么常量列表就是
[80232 203 159161]

然后你要求5个变量,让我们称它们为
d0,d1,d2,d3,d4
,每个变量都在32和126之间。其中
d0+d1==80
(因此
d1=106
)。这显然与Z3一致的情况相反。(注意,你的约束没有使用
const
的最后一个元素)

下面是代码的一个略为通俗的版本,其中包括5个常数中的每一个(第二个常数降低以获得可解的约束系统):


请发布人们可以自己运行的完整代码。请参阅此处了解如何提问:请发布人们可以自己运行的完整代码。请参阅此处了解如何提问:
from Z3 import IntVector, Solver, sat

const = [0x50, 0xa9, 0xcb, 0x9f, 0xa1]
s = Solver()
data = IntVector('data', len(const)+1)
for d in data:
    s.add(d >= 32, d <= 126)
for d0, d1, c0 in zip(data, data[1:], const):
    s.add(d0 + d1 == c0)
result = s.check()
if result == sat:
    print("Here is a solution: ")
    m = s.model()
    values = [m[d].as_long() for d in data]
    print(values, " sums:", [hex(v0 + v1) for v0, v1 in zip(values, values[1:])])
elif result == unsat:
    print("There is no solution")
else:
    print("Z3 could not solve the constraints")
Here is a solution: 
[37, 43, 126, 77, 82, 79]  sums: ['0x50', '0xa9', '0xcb', '0x9f', '0xa1']