2012-10-16 4 views
1

매개 변수화 된 정렬 값에 어떻게 액세스합니까? 예를 들어매개 변수화 된 정렬

, 나는 다음과 같은 선언이있는 경우 : 나는 x가 나타내는 쌍의 첫 번째 요소에 액세스하려면 어떻게

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

를?

+1

시도한 코드를 게시해야합니다. – ForceMagic

답변

1

해당 필드에 액세스하기 위해 firstsecond이라는 두 개의 선택자를 사용하여 매개 변수 레코드를 만들 수 있습니다. 여기

an example입니다 : Z3 SMT 가이드 algebraic datatypes에 대한 포괄적 인 소개도 있습니다

(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) 

.

+0

감사합니다! 들판에 제한이 있습니까? 필드 중 하나를 Array로 만들고 싶습니다. 도움이되었지만 Z3 가이드에서 이에 대한 자세한 정보를 찾을 수 없었습니다. – user1751402

+0

제한이 있다고 생각하지 않습니다. 당신은 그것을 밖으로 시도하고 당신이 얻는 것을보아야합니다. – pad

관련 문제