【发布时间】:2018-06-23 14:48:05
【问题描述】:
假设我有一个z3py 整数变量x = Int('x') 和一个整数数组a = [1, 2, 3]。然后我通过 s.add(x in a) 添加一个约束。
我认为这是可以满足的,因为x 可以是1 or 2 or 3。但实际上是不可取的。谁能告诉我如何添加约束以确保x in a?
谢谢!
这是我使用的 python 代码。我认为输出答案是 s 是可满足的,因为 x 可以等于 1 或 2 或 3,那么约束 x in a 就满足了。但答案实际上是不满意的。也许这不是指定此约束的正确方法。所以我的问题是如何指定这样一个约束来确保一个变量只能用特定数组中的值来实例化。
from z3 import *
x = Int('x')
a = [1, 2, 3]
s = Solver()
s.add(x in a)
print(s.check())
【问题讨论】:
-
我不明白这个问题。
-
这看起来不像您的代码功能的完整示例:您认为需要使用数字列表而不是使用
solve和充分定义的 @987654331 @ 和>约束? -
@timgeb “z3”和“z3py”标签在这里相当重要。 ericpony.github.io/z3py-tutorial/guide-examples.htm
-
@Mike'Pomax'Kamermans 啊,感谢您指出这一点!
-
什么是
s?在s.add(x in a)