Z3에서 생성 된 모델 값에 대한 결과의 임의성에 영향을 미치려고합니다. 필자가 이해하는 한, 이것에 대한 옵션은 매우 제한적입니다. 선형 산술의 경우, 단선 해석기는 주어진 제약 조건을 여전히 만족시키는 무작위 결과를 허용하지 않습니다. 내가 작업을 진행하게 보이지 않는 그러나, 옵션 smt.arith.random_initial_value는 ("false)를 선형 연산 (기본의 단순 기반 절차에서 임의 초기 값을 사용")가생성 된 모델 값의 Z3 임의성
from z3 import *
set_option('smt.arith.random_initial_value',True)
x = Int('x')
y = Int('y')
s = Solver()
s.add(x+y > 0)
s.check()
s.model()
결과적으로 항상 [y = 0, x = 1]을 생성하는 것처럼 보입니다. 주어진 제약 조건에서 사용되지 않은 변수에 대한 모델 완성조차도 항상 결정 론적 결과를 산출합니다.
이 옵션의 작동 방식에 대한 아이디어 나 힌트가 있으십니까?
랜덤 모델의 종류를 얻는 반복적 인 방법에 관심이 있으십니까? 당신은 unsat가 될 때까지'x> = rand()'와 같은 임의의 제약 조건을 추가함으로써 주어진 모델을 정제 할 수 있습니다. – usr