Z3의 C/C++ API를 사용하여 SMTLib2 형식의 고정 소수점 제약 조건 (특히 SeaHorn에서 생성 된 파일)을 구문 분석하려고합니다. 그러나 문자열을 구문 분석 할 때 응용 프로그램이 중단됩니다 (Z3_fixedpoint_from_string
메서드 사용). 함께 작업하는 Z3 버전은 4.5.1 64 비트 버전입니다.Z3 API : 고정 소수점 SMTLib 문자열을 파싱 할 때 충돌이 발생합니다.
소스에서 컴파일 한 Z3 바이너리로 작품을 구문 분석하려고하는 SMTLib 파일은 Z3_fixedpoint_from_string
을 호출 할 때 세그먼트 화 오류로 실행됩니다. 문제가 고정 소수점 컨텍스트에 관계를 추가하는 것과 관련되어 있다고 생각하는 시점까지 문제를 좁혔습니다. 내 컴퓨터에 독방 감금 오류를 생성하는 간단한 예는 다음과 같다 : 유효하지 않은 읽기 및 쓰기의
#include "z3.h"
int main()
{
Z3_context c = Z3_mk_context(Z3_mk_config());
Z3_fixedpoint f = Z3_mk_fixedpoint(c);
Z3_fixedpoint_from_string (c, f, "(declare-rel R())");
Z3_del_context(c);
}
Valgrind의이 코드를 실행 많이보고합니다. 그래서, 이것은 API가 사용되는 방식이 아니거나 어딘가에 문제가있는 것입니다. 불행히도 고정 소수점 엔진을 프로그래밍 방식으로 사용하는 방법에 대한 예제를 찾을 수 없었습니다. 그러나 예를 들어 Z3_fixedpoint_from_string (c, f, "(declare-var x Int)");
을 호출하면 정상적으로 작동합니다.
BTW, 여기는 Z3_del_fixedpoint()
입니까?
C/C++ 언어와 같은 것은 없습니다. 어떤 언어를 사용하고 있습니까? – 2501
이 예제에서는 C API를 사용하지만 C 및 C++ API 호출을 혼합 할 계획입니다. 나는 g ++ 4.9로 예제를 컴파일했다. – Dan
귀하와 다른 사람들이 사용할 수 있기 때문에 지금 추가했습니다. https://github.com/Z3Prover/z3/commit/509f7409badc0e7834968511ca3c6b6f97fdaed6 –