python - z3py:符号表达式不能转换为具体的布尔值?
问题描述
from z3 import *
x = Real('x')
s = Solver()
s.add(x > 1 or x < -1)
print(s.check())
if s.check() == sat:
print(s.model())
我想解决一个或表达式,我该怎么做?当 z3 告诉我“符号表达式不能转换为具体的布尔值”时
解决方案
Pythonor
没有符号意识。相反,使用z3py
's Or
:
from z3 import *
x = Real('x')
s = Solver()
s.add(Or(x > 1, x < -1))
r = s.check()
print(r)
if r == sat:
print(s.model())
这打印:
sat
[x = -2]
请注意,我还可以check
通过首先将结果存储在变量中来避免对 的两次单独调用。(我在上面调用r
过。)一般来说,第二次调用check
会很便宜,因为你没有在第一次之后添加任何约束,但这使得意图更清晰。
推荐阅读
- python - 如何在集群上执行 Numpy 函数?
- python - 使用python中的正则表达式在(:或,或;)和(关键字)之间的文本文件中提取名称
- swift - 我的委托方法不应该变成 nil 吗?
- python - Python替换数据框中的非数字字符
- c# - 将音频转换为字节而不记录c#
- sql-server - MSSQL server 2013 内置方法,根据其纬度和经度返回地球的位置点
- angular - 如何使用 ForkJoin RXJS 处理错误?
- http - Angular 5 到 CherryPy POST
- android - 电话结束后Android MediaPlayer显示错误
- python - 石墨烯:如何共享模型以调用不同解析器的方法?