Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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 python中对else进行编码?_Python_Z3 - Fatal编程技术网

Z3:如何在Z3 python中对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接受三个参数:条件、条件为真时应为真的表达式和条件为假时应为真的表达式。为了表达你的逻辑,你可以

我想在z3python中对else进行编码,但找不到任何关于如何进行编码的文档或示例

我有一个如下的示例代码

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)