매개 변수화 된 정렬 값에 어떻게 액세스합니까? 예를 들어매개 변수화 된 정렬
, 나는 다음과 같은 선언이있는 경우 : 나는 x
가 나타내는 쌍의 첫 번째 요소에 액세스하려면 어떻게
(declare-sort Pair 2)
(declare-const x (Pair Int Int))
를?
매개 변수화 된 정렬 값에 어떻게 액세스합니까? 예를 들어매개 변수화 된 정렬
, 나는 다음과 같은 선언이있는 경우 : 나는 x
가 나타내는 쌍의 첫 번째 요소에 액세스하려면 어떻게
(declare-sort Pair 2)
(declare-const x (Pair Int Int))
를?
해당 필드에 액세스하기 위해 first
및 second
이라는 두 개의 선택자를 사용하여 매개 변수 레코드를 만들 수 있습니다. 여기
는 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)
.
감사합니다! 들판에 제한이 있습니까? 필드 중 하나를 Array로 만들고 싶습니다. 도움이되었지만 Z3 가이드에서 이에 대한 자세한 정보를 찾을 수 없었습니다. – user1751402
제한이 있다고 생각하지 않습니다. 당신은 그것을 밖으로 시도하고 당신이 얻는 것을보아야합니다. – pad
시도한 코드를 게시해야합니다. – ForceMagic