distinct
Z3的功能
(declare-const a S)
(declare-const b S)
(assert (distinct a b))
允许约束变量集(此处a
和b
),使得集中的所有变量必须取不同的值。
我的问题是:是否也可以强制变量取唯一值而不明确引用应该与之不同的变量集?就像是
(declare-unique-const a S)
(declare-unique-const b S)
(declare-unique-const c S)
这在您在迭代过程中声明新变量的情况下会很好,例如在程序验证期间。
如果不可能,我想必须跟踪所有不同的变量并使用该集合来发出适当的distinct (newvar, oldvar1, ..., oldvarn))
约束。