Z3 버전 3.2에서 버전 4.0으로 마이그레이션 중입니다. 그러나 이전에 작동했던 코드는 더 이상 직접 작동하지 않으며 동일한 이유를 찾으려고합니다. 나는 전체 코드를 매우 단순한 선언과 주장으로 줄 였지만 여전히 효과가 없을 것이다.Z3 버전 3.2에서 버전 4.0으로 마이그레이션
- 어떻게 - 코드는 -
long intSort = Z3_mk_int_sort (context); long periodDeclStr = Z3_mk_string_symbol(context, "period"); long periodVar = Z3_mk_const(context, periodDeclStr, intSort); long solver = z3_mk_solver(); long zero = Z3_mk_int (context, 0, intSort); long eqSt = Z3_mk_eq(context, periodVar, zero); Z3_solver_assert (context, solver, eqSt);
문제는
Z3_mk_eq()
내가 같은 오류가 발생 번째 마지막 문이다 - 다음과 같이
내 질문
있습니다 이 오류를 디버깅 하시겠습니까? 이 버전은 여전히 버전 3.2에서 작동하지만 해결사는 없습니다.WARNING: invalid function application, sort mismatch on argument at position 2 WARNING: (define = arith arith Bool) applied to: period of sort arith 0::Int of sort Int
- 컨텍스트에 변수를 추가 한 후에 만 솔버를 만들어야합니다. 솔버를 만든 후 컨텍스트에 변수를 추가 할 수 있습니까? 아니면 솔버를 다시 만들어야합니까?
문제를 일으켜 죄송합니다. 솔버와 컨텍스트를 혼합하여 솔버에 전달했습니다. 그러나 문제는 아직 해결되지 않은 채로 남아 있습니다. Z3_ast_to_String()
API에 크래시가 발생했습니다. 문제점을 해결하고 업데이트를 게시하려고 노력할 것입니다.
오 죄송합니다 ... 여기에는 오타가 있습니다. 코드를 올바르게 작성했습니다. – Raj
업데이트하려면 위의 오류가 발생하면 모든 실행마다 변경됩니다. 때로는 정렬 Int 기간을 제공하기도하고 때로는 정렬이 표시되지 않습니다. 아마도 JNI 라이브러리를 사용하여 Java에서 Z3에 액세스하고 있기 때문일 수 있습니다. – Raj