我想知道Z3是否支持编码任意复杂对象的数组,例如列表或其他东西。 感谢。
答案 0 :(得分:2)
Z3支持递归数据类型。我们可以使用它们来定义列表,树等。请参阅Z3 tutorial中的数据类型部分。我们还可以使用任意索引和值类型定义数组。所以,我们可以有数组数组,列表数组等。 这是一个例子。也可在线获取here。
(declare-const l (List Int))
(declare-const a (Array Int (List Int)))
(assert (= (select a 0) l))
(assert (not (= l nil)))
(check-sat)