1

让我用一个例子来解释我的问题:

假设我有一个可能的离散整数域,例如 -1、0、2、3、5 和 6 现在,我正在为变量 x 寻找满足以下约束的解决方案(或模型):

(x > 0) && (x < 6) && (x != 3) && (x > 2)

答案将是(来自解决方案域)= 5,对吗?

我如何在 Z3 中做到这一点?

也就是说,我想使用离散实体定义解决方案空间,然后断言一些约束并要求 Z3 检查可满足性。如果满意,那就要模型。

谁能帮我举个例子?

谢谢,--伊什蒂亚克

4

1 回答 1

2

事先断言x == -1 || x == 0 || x == 2 || x == 3 || x == 5 || x == 6作为公理应该这样做。我不知道 Z3 是否内置了更好的方法。

编辑:另一种解决方案可能是使用数组,尽管我以前没有使用过它们。从概念上讲,应该可以声明一个A包含数字的数组,然后说:

(exists (y Int) (=(select A y) x))`

不确定这是否是确切的语法,因为我以前没有使用过数组,但希望它应该可以工作。

于 2012-02-06T21:03:05.203 回答