2014-12-19 2 views
1

비트 벡터 이론을 Z3의 int 이론으로 변환하고 싶습니다. "bvnot"연산이 발생하면 "not"로 relpace합니다. 여기에 간단한 예제가 있습니다. :Z3 : 정수 정렬을 부울 정렬로 변환하는 방법

(써트 (= (bvnot (ITE (T0 # 1 X0A bvsle) # B1 # 1 B0)) #의 B1)) 및 변환 후 : 은 ((= (안 (ITE (< T0 10) 1 0 주장)) 1)) 그러나

는, Z3는이 주장에 오류보고 :하지 않는 유효하지 않은 기능 응용 프로그램을 정렬 불일치 위치 1에서 인수에 BOOL을 기대하지만 지능

제공

int 정렬을 부울 정렬로 변환하는 방법은 무엇입니까? Tanhks!

답변

0

당신은 이미 모든 것을 가지고 있지만, 상수 1과 0은 부울 값 아니다; 해당 값은 truefalse, 즉,이 작업을해야됩니다

(assert (= (not (ite (< t0 10) true false)) true)) 
+0

네, 그 작품! int 정렬을 int 형 bv2int 또는 int 형 정렬 및 bitvector를 서로 변환하는 bv2int와 같은 부울 정렬로 변환하는 변환 함수가 있는지 여부를 알고 싶습니다. 감사! –

+0

'3'이 'true'또는 'false'와 같은지 여부와 같이이 변환을 수행하는 방법에 대해 일반적으로 합의 된 방법이 없기 때문에 그런 기능이 없습니다. 귀하의 경우, 전환을 구현하는 가장 좋은 방법은 귀하가 그랬던 것과 똑같습니다. (함수로 추가 할 경우 내부적으로 수행 할 작업입니다.) –

관련 문제