에 대한 일반 데이터 유형 모델링 SMT v2.6에서 일반 데이터 유형의 동작을 모델링하고 싶습니다. 저는 Z3를 구속 조건 해결사로 사용하고 있습니다. 나는 official example, 다음과 같은 방법으로 매개 변수화 데이터 형과 같은 일반적인 목록을 기반으로, 모델 : 나는 데이터 유형에 대한 일반적인 될 목록을 원하는Z3 및/또는 SMT (v2.6)
(declare-datatypes (T) ((MyList nelem (cons (hd T) (tl MyList)))))
. 지금은 그래서 (... 예를 들면, 길이 작업, 빈 운전) 일반 데이터 형식 MyList
에 함수를 정의하고 싶은, 그러나
(declare-const x (MyList Int))
(declare-const y (MyList Real))
: 나중에, 나는 상수에게 다음과 같은 방법을 선언하고 싶습니다 그들은 T
님께 재사용 가능합니다. 내가 어떻게이 일을 성취 할 수 있을지 생각해? 나는 다음과 같은 것을 시도했다 :
(declare-sort K)
(define-fun isEmpty ((in (MyList K))) Bool
(= in nelem)
)
그러나 이것은 나에게 오류 메시지를 준다; 이 예제가 작동하려면 Z3이 일부 형식 유추를 수행해야합니다.
나에게 힌트를 줄 수 있다면 좋을 것입니다.
철저한 답장을 보내 주셔서 감사합니다. – Julian
'MyList'선언이 올바르지 않습니다. Z3처럼 보였지만 실제로는 구문이 유효하지 않습니다. 거기에는 재귀가 없습니다. 특히, 'nelem'은 유효하지 않은 토큰입니다. –
예. 죄송합니다. 맞습니다. – Julian