이전 질문에 대한 답변을 주신 Josh and Leonardo에게 많은 감사를드립니다.수량 한정 제거 - 기타 문의
나는 몇 가지 질문이 더 있습니다.
<> 다른 예를 생각해보십시오.
(exists k) i * k > = 4 and k > 1.
이 난> 0 (모두 지능과 실제 사건에 대한) 나는 다음과 같은 노력
그러나,
(declare-const i Int)
(assert (exists ((k Int)) (and (>= (* i k) 4) (> k 1))))
(apply (using-params qe :qe-nonlinear true))
Z3 여기에 한정 기호를 제거 할 수 없습니다 간단한 솔루션을 제공합니다.
그러나 실제 사례는 없앨 수 있습니다. (i와 k가 모두 실수 일 때) 정수의 경우 수량 자 제거가 더 어렵습니까?
<> 내 시스템에 Z3 C API를 사용하고 있습니다. 필자는 시스템에 한정사가있는 Integer에 비선형 제약 조건을 추가하고 있습니다. Z3은 현재 만족 스러운지 확인하고 시스템이 만족스러운 경우 올바른 모델을 제공합니다.
수량 한정자 제거 후에 이러한 제약 조건이 선형 제약 조건으로 축소된다는 것을 알고 있습니다.
나는 z3가 자동으로 만족 여부를 확인하기 전에 한정사 제거를 수행한다고 생각했습니다. 그러나, 위의 경우 1에서, 이제는 수량 한정자 제거 기능이없는 모델을 일반적으로 발견 할 수 있다고 생각합니다. 나 맞아?
현재 z3은 내 시스템의 제약 조건을 해결할 수 있습니다. 그러나 복잡한 시스템에서는 실패 할 수 있습니다. 그런 경우, z3없이 몇 가지 다른 방법으로 한정 기호 제거를 수행하고 나중에 z3에 제약 조건을 추가하는 것이 좋은 생각입니까?
< 3> 시스템에서 정수 비선형 제약 대신 실제 비선형 제약을 추가 할 수 있습니다. 이 경우 C-API를 사용하여 수량 한정자 제거를 수행하기 위해 z3을 어떻게 적용 할 수 있습니까?
< 4> 마지막으로 z3을 사용하여 한정자 제거를 수행하는 것이 좋습니다. 또는 일반적으로 Quantifier Elimination을 수행하지 않고도 지능적으로 모델을 찾습니다.
감사합니다.
제 1 행에서 "비선형 정수 연산 **은 한정어 제거를 인정하지 않습니다"라고 생각합니다. – pad
네, 맞습니다. 그것을 잡아 주셔서 감사합니다. 나는 고칠 것이다. –
감사합니다. 많은 레오나르도. 단 한 가지 질문 - 왜 비선형 정수 산술의 이론이 수량 한정자 제거 (qe)를 허용하지 않는지 설명 할 수 있습니까? –