簡體   English   中英

關於dReal的一些問題:delta-satisfiability,參數為0.0,在Z3中做同樣的事情並獲得sat/unsat結果

[英]Some questions about dReal: delta-satisfiability, parameter with 0.0, doing the same in Z3 and obtaining sat/unsat result

我從 dReal 開始,我有一系列關於它的問題。

這些問題基於我們可以在https://github.com/dreal/dreal4中找到的教程,“Python 綁定”部分,代碼如下:

from dreal import *

x = Variable("x")
y = Variable("y")
z = Variable("z")

f_sat = And(0 <= x, x <= 10,
            0 <= y, y <= 10,
            0 <= z, z <= 10,
            sin(x) + cos(y) == z)

result = CheckSatisfiability(f_sat, 0.001)
print(result)
  1. 如果我們執行代碼,那么我們將獲得以下內容:
x : [1.2472345184845743, 1.2475802036740027]
y : [8.9290649281238181, 8.9297562985026744]
z : [0.068150554073343028, 0.068589052763514458]

我知道這些xyz在某種程度上是滿足公式的 model ,但我不明白它們的確切含義。 我的意思是,我知道它們與增量可滿足性有關,但是x:[1.2472345184845743, 1.2475802036740027]是什么意思? 我的(可能是錯誤的)解釋是這些范圍內的任何x都是 model。但是,在那種情況下,為什么該工具不簡單地返回范圍內的任何 model?

  1. CheckSatisfiability(f_sat, 0.001)的第二個參數是什么? 再一次,它與增量可滿足性有關,但我不知道它到底是什么。 這是否意味着我們想要找到 model 的“逗號精度”? 也就是說,可能存在 model 為1.23455的情況,因此這意味着設置“僅” 0.001的精度無法找到 model,因此將返回unsat

  2. 玩這個精度,我發現我不能將它設置為0.0 例如:

f_sat2 = And(0 <= x, x <= 10,
            0 <= y, y <= 10,
            0 <= z, z <= 10)

result2 = CheckSatisfiability(f_sat2, 0.0)
print(result2)

這輸出:

x : [5, 5]
y : [5, 5]
z : [5, 5]

這(與單個數字綁定)是否意味着5xyz的(唯一)model? 也就是說,將精度設置為0.0是否會產生經典的(不是 delta-sat)可滿足性問題? 這意味着 dReal 也可以用作經典的 SMT 求解器。

  1. 如果是這樣, 0.0的問題是否可以用 Z3 表示? 在這種情況下,當我在 dReal 中執行以下操作時:
f_sat3 = And(0 <= x, x <= 10,
            0 <= y, y <= 10,
            0 <= z, z <= 10,
            sin(x) + cos(y) == z)

result3 = CheckSatisfiability(f_sat3, 0.0)
print(result3)

並獲得(唯一的)model:

x : [1.2473857557646206, 1.2473857557646206]
y : [8.9296050612226239, 8.9296050612226239]
z : [0.068270483891846451, 0.068270483891846451]

這是否意味着 Z3 也可以給我這些模型? 但是,在那種情況下,我如何在 Z3 中實現這些“正確”的sin()cos()方法?

順便說一下,它給出具有巨大逗號精度的模型(已設置參數0.0 )的原因對我在第二個問題中所做的解釋沒有反應。 那么, CheckSatisfiability(f_sat, 0.001)的第二個參數又是什么意思呢?

  1. 我怎樣才能在 dReal 中得到結果 SAT/UNSAT,而不是 model?

PS:我在哪里可以找到更多信息,例如有關該工具的教程? 我們知道處理非線性函數的任何其他類似工具嗎? 我只聽說過 MetiTarski。

我是 dReal 的作者之一。

正如評論中所建議的,我建議閱讀 dReal 工具論文和“Delta-Complete Decision Procedures for Satisfiability over the Reals”論文。 您可以在https://scungao.github.io找到它們。

當包含非線性數學函數(例如三角函數)時,實數上的 SMT 問題是不可判定的。 這意味着我們不能為該理論提供通用的 SMT 求解器。 增量可滿足性是通過引入過度近似來解決此問題的一種方法。 因此,增量可滿足性求解器可能會返回兩種類型的答案; delta-SAT 和 UNSAT。 UNSAT的解釋是標准的,輸入公式是不可滿足的。 delta-sat的解釋是過度逼近的問題是可滿足的。 過度逼近的程度由用戶提供的輸入參數(—精度)決定。 准確地說,當求解器返回一個盒子時,在這個盒子中采樣的任何點都滿足過逼近公式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM