2012-10-16 18 views
1

如何訪問參數化排序的值?參數化排序

舉例來說,如果我有以下聲明:

(declare-sort Pair 2) 
(declare-const x (Pair Int Int)) 

如何訪問的第一個元素的一對x代表?

+1

你應該發佈一些你已經嘗試過的代碼。 – ForceMagic

回答

1

您可以使用兩個選擇器firstsecond創建參數記錄以訪問其字段。

這裏是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了全面的介紹。

+0

謝謝!這些字段是否有任何限制?我想讓其中一個字段爲Array。在Z3指南中,我無法找到有關此信息的詳細信息,但它很有幫助。 – user1751402

+0

我不認爲有任何限制。你應該嘗試一下,看看你得到了什麼。 – pad