在Z3中无法解决。为什么呢?

时间:2017-03-01 11:28:43

标签: z3

在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。

请看到它,任何人都请帮助我。

1 个答案:

答案 0 :(得分:0)

unknown表示模型被指称为""即,可能是也可能不正确。由于您的问题包含非线性项(取幂),因此可以预料到这一点。

实际上,该模型建议xn = 42,这与您的计划中的假设xn > 700相矛盾。给出的模型是假的。但你不能责备z3,因为它已经告诉你unknown。它超越了Z3解决查询的能力。