0
這個腳本z3py:存在量詞
from z3 import *
solver = z3.Solver()
x = Int('x')
def f(y):
return y+y
solver.add(x >= 0, x < 10, Exists(x, f(x) == 4))
print solver.check()
print solver.model()
的用法給我
sat
[x = 0]
作爲一個答案。這不是我想要或期望的。作爲一個答案,我想看看
sat
[x = 2]
我發現了另外兩個職位相似的方向((Z3Py) declaring function和Quantifier in Z3)去的事,但不奏效。
在這種情況下,你如何使用存在的量詞來獲得充分的答案?
太好了。那麼我的第一個問題就是'存在'的範圍。我將斷言修改爲'solver.add(Exists(x,And(f(x)== 4,x> = 0,x <10)))',SMT解算器現在返回一個'sat'或'取決於我的輸入正確。儘管如此,我還是無法讓求解者給我一個滿足斷言的'x'暗示。你怎麼能這樣做?你上面提到的解決方案是正確的,因爲它可以做你說的,但是我想在另一個上下文中使用量詞(模型檢查)並且需要結果。 –
實現這一目標的最好方法是自己動手配方,即插入替代存在的新功能符號,並取決於範圍內的普遍性。這樣,您就可以控制這些函數的名稱,並且它們將在模型中進行函數解釋。 –