在Z3中无法解决。为什么呢?
我的计划:
;x = 2x + 2 (This on Underlaying DB is always increasing as X > Y in DB)
(declare-const x0 Real)
(declare-const xn Real)
(declare-const n Real)
(push)
(assert (= x0 42))
(assert (= xn (+ (* x0 (^ 2 n)) (* 2 (- (^ 2 n) 1)) ) )) ; recurrence relation
(assert (> xn 700))
(check-sat-using qfnra-nlsat)
(get-model); to find a satisfiable valuation
(pop); removes any assertion
-----------------------------
Z3 Answer:
-----------------------------
unknown
(model
(define-fun n () Real 0.0)
(define-fun xn () Real 42.0)
(define-fun x0 () Real 42.0)
)
我也试过整数: 根据数据库中的值' n'应该是4,但它会变为0。
请看到它,任何人都请帮助我。
答案 0 :(得分:0)
unknown
表示模型被指称为""即,可能是也可能不正确。由于您的问题包含非线性项(取幂),因此可以预料到这一点。
实际上,该模型建议xn = 42
,这与您的计划中的假设xn > 700
相矛盾。给出的模型是假的。但你不能责备z3,因为它已经告诉你unknown
。它超越了Z3解决查询的能力。