Z3 답변 배열을 통해 한정사를 사용하여이 코드를 부여 할 때 "알 수없는"한정 기호 및 배열에
(declare-const ia Int)
(declare-const ib Int)
(declare-const la Int)
(declare-const lb Int)
(declare-const A (Array Int Int))
(declare-const a (Array Int Int))
(declare-const b (Array Int Int))
(assert
(exists
((ia_1 Int) (ia_2 Int) (ib_1 Int) (la_0 Int) (lb_0 Int) (A_0 (Array Int Int)) (a_0 (Array Int Int)) (b_0 (Array Int Int)))
(and (= ia ia_2) (= ib ib_1) (= la la_0) (= lb lb_0) (= A A_0) (= a a_0) (= b b_0) (= ia_1 0) (= ib_1 0) (< ia_1 la_0) (< ib_1 lb_0) (< (select a_0 ia_1) (select b_0 ib_1)) (= ia_2 (+ ia_1 1)))))
(assert
(not
(exists
((ia_1 Int) (ib_1 Int) (la_0 Int) (lb_0 Int) (A_0 (Array Int Int)) (a_0 (Array Int Int)) (b_0 (Array Int Int)))
(and (= ia ia_1) (= ib ib_1) (= la la_0) (= lb lb_0) (= A A_0) (= a a_0) (= b b_0) (= ib_1 0)))))
(check-sat)
같은 경우 ("unsat") 정답을 얻을 수있는 방법이 있나요?
편집 : 예를 들어 제약 조건 (= ia_1 0)
을 두 번째 연결에 추가하면 Z3이 "sat"로 올바르게 응답합니다.
비록 내가 여기에 몇 가지 부정을 전파하지 않음으로써 그것을 강화했을지 모르지만! –
답장을 보내 주셔서 감사합니다.하지만 귀하의 재 작성이 OP의 두 번째 주장에 대한 부정에 해당하지 않는다고 말씀 하셨듯이 말입니다. 또한, 나는 여전히 귀하의 제안에 대해 "알려지지 않은"대답을 얻었습니다. – roo
또한 OP의 두 어설 션을 함께 사용하면 Z3이 제대로 작동하지 않는다는 것을 증명할 수 있기 때문에 "정답"을 의미했습니다. – roo