Z3:如何在Z3 python中对else进行编码?
我想在z3python中对else进行编码,但找不到任何关于如何进行编码的文档或示例 我有一个如下的示例代码Z3:如何在Z3 python中对else进行编码?,python,z3,Python,Z3,我想在z3python中对else进行编码,但找不到任何关于如何进行编码的文档或示例 我有一个如下的示例代码 F = True tmp = BitVec('tmp', 1) tmp1 = BitVec('tmp1', 8) 现在,我如何将该条件编码为F: if tmp == 1, then tmp1 == 100. otherwise, tmp1 == 0 非常感谢。您可以使用If进行此操作If接受三个参数:条件、条件为真时应为真的表达式和条件为假时应为真的表达式。为了表达你的逻辑,你可以
F = True
tmp = BitVec('tmp', 1)
tmp1 = BitVec('tmp1', 8)
现在,我如何将该条件编码为F:
if tmp == 1, then tmp1 == 100. otherwise, tmp1 == 0
非常感谢。您可以使用
If
进行此操作If
接受三个参数:条件、条件为真时应为真的表达式和条件为假时应为真的表达式。为了表达你的逻辑,你可以写:
If(tmp==1, tmp1==100, tmp1==0)
如果功能: 创建Z3 if-then-else表达式
>>> x = Int('x')
>>> y = Int('y')
>>> max = If(x > y, x, y)
>>> max
If(x > y, x, y)
>>> simplify(max)
If(x <= y, y, x)
>x=Int('x')
>>>y=Int('y')
>>>max=If(x>y,x,y)
>>>马克斯
如果(x>y,x,y)
>>>简化(最大值)
如果(X)你确信它可以这样使用吗?基于我在网上看到的例子,它总是被用作C++中的(?):(实际上,Y =条件?x1:x2)。@Mohammed我看不出OP的之间有什么区别,如果tmp==1,那么tmp1==100。否则,tmp1==0
和tmp==1?tmp1==100:tmp1==0
。在我看来,这只是两个不同的符号来表达相同的东西。好的@sepp2k,谢谢。我的意思是tmp1=(tmp==1)?100:0
我不是100%确定,但是如果我们分配相同的变量,与tmp==1?tmp1==100:tmp2==0
相比,可能是相同的。无论如何,我刚刚意识到这是一篇7年前的文章。谢谢你的回复。@Mohammed我不完全确定你的意思。Z3没有赋值的概念。如果你在分析一些程序在Z3中,假设变量从未重新分配,则该语言中类似于tmp1=(tmp==1)?100:0
的构造实际上可以建模为If(tmp==1,tmp1==100,tmp1==0)
。
>>> x = Int('x')
>>> y = Int('y')
>>> max = If(x > y, x, y)
>>> max
If(x > y, x, y)
>>> simplify(max)
If(x <= y, y, x)