내장 및 사용자 정의 Z3 정렬을 여러 개 사용한다고 가정합니다. Int, Bool, S1, S2, ..., 일반 정렬 래핑 및 -unwrapping 함수를 작성하는 방법이 있습니다. 그런 종류의 정렬을 A에서 B로 정렬하고 다시 정렬 할 수 있습니까? 예 : (declare-const a S1)
(declare-const b S2)
(declare-c
Windows7에서 병렬 Z3 3.2 (bin_mt 또는 x64_mt 디렉토리에서)와 함께 프로세서의 코어를 모두 PAR_NUM_THREADS=2과 함께 사용할 수 없습니다. 단일 스레드 버전과 동일한 50 % 및 시간 차이가 없습니다. 이 논리에 대해 병렬 버전이 지원 되나요? 아니면 QF_IDL에서만 작동합니까?
Z3 C API를 사용하여 한정 기호를 포함하는 제약 조건을 해결하려고합니다. 온라인 또는 tar 파일의 예제에서 어떤 예제도 찾을 수 없기 때문에 "Z3_mk_exists()"와 같은 함수를 사용하는 데 어려움을 겪고 있습니다. 필자는 이러한 함수에서 요구하는 모든 인수와 그 정확한 의미를 정확하게 이해하지 못합니다. 아무도 도와 줄 수 있습니까? 감사합
모델에 초기 '소프트'값을 지정하는 방법은 무엇입니까? 이 초기 모델은 유사한 쿼리를 해결 한 결과이며이 모델이 올바른 조각을 가지고 있거나 현재 쿼리에 대해 사실 일 수 있습니다. 은 현재 내가 증분 해결 및 hard/soft constraints으로이 시뮬레이션 오전 : (define-fun trans_assumed ((a Int)) Int
; an
Z3_benchmark_to_smtlib_string() 함수를 사용하려고합니다. 다음은 내가 사용하는 주장입니다 : Z3_benchmark_to_smtlib_string(
ctx, /* this one is valid */
"test", /* this one is random, I don't understand it *
다음 예제에서는 각 가정에 대해 단일 부울 상수가 아닌 "(declare-const p (Int) Bool)"와 같은 해석되지 않은 부울 함수를 사용하려고했습니다. 하지만 작동하지 않습니다 (컴파일 오류가 발생합니다). (set-option :produce-unsat-cores true)
(set-option :produce-models true)
(
내 프로그램은 Z3_open_log()와의 모든 z3 상호 작용의 로그를 만듭니다. 그런 다음 다른 프로그램에서 Z3_parse_z3_file()으로 다시 읽습니다. 그것은 입력에 대한 모든 주장의 결합을 제공합니다. 두 가지 주장이 있다고 가정 해 봅시다 : a1과 a2. 그런 다음 z3 파일을 구문 분석하면 얻을 수 있습니다 (그리고 a1 a2). 테스
: x = Real ('x')
solve(x * x == 2, show=True)
내가 잘 얻을 : Problem:
[x·x = 2]
Solution:
[x = -1.4142135623?]
내가 생각 같은 솔루션을 것이다 다음 SMT-LIB2 스크립트 : (set-option :produce-models true)
(declare-fun s