如何訪問參數化排序的值?參數化排序
舉例來說,如果我有以下聲明:
(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