如何访问参数化排序的值?参数化排序
举例来说,如果我有以下声明:
(declare-sort Pair 2)
(declare-const x (Pair Int Int))
如何访问的第一个元素的一对x
代表?
如何访问参数化排序的值?参数化排序
举例来说,如果我有以下声明:
(declare-sort Pair 2)
(declare-const x (Pair Int Int))
如何访问的第一个元素的一对x
代表?
您可以使用两个选择器first
和second
创建参数记录以访问其字段。
这里是an example:
(declare-datatypes (T1 T2) ((Pair (mk-pair (first T1) (second T2)))))
(declare-const p1 (Pair Bool Int))
(declare-const p2 (Pair Int Int))
(assert (first p1))
(assert (> (first p2) 2))
(assert (= (second p1) (second p2)))
(check-sat)
(get-model)
也有在Z3 SMT指南algebraic datatypes了全面的介绍。
谢谢!这些字段是否有任何限制?我想让其中一个字段为Array。在Z3指南中,我无法找到有关此信息的详细信息,但它很有帮助。 – user1751402
我不认为有任何限制。你应该尝试一下,看看你得到了什么。 – pad
你应该发布一些你已经尝试过的代码。 – ForceMagic