0
例如,我有一個約束x + y > 100
。我不想讓z3將x
的值設爲1或2,並且我不希望z3將y
的值設爲1或2。我們可以限制z3中每個變量的一系列值嗎?
因此,x和y可以是任意數量的除了1或2
我們可以Z3執行這樣的限制?
謝謝!
例如,我有一個約束x + y > 100
。我不想讓z3將x
的值設爲1或2,並且我不希望z3將y
的值設爲1或2。我們可以限制z3中每個變量的一系列值嗎?
因此,x和y可以是任意數量的除了1或2
我們可以Z3執行這樣的限制?
謝謝!
當然..簡單地聲稱x > 2 AND y > 2
。這是z3py:
from z3 import *
x = Int('x')
y = Int('y')
s = Solver()
s.add (x > 2)
s.add (y > 2)
s.add (x+y > 100)
s.check()
print s.model()
Z3打印:
$ python a.py
[y = 3, x = 98]
將加起來計算的複雜性,如果我有多個(大量)套這樣的限制?例如,如果我希望'x'不是1,3,100等,對於'n'個詞和'n'是相當大的。它會大大減慢計算速度嗎? –
不經過嘗試就無法判斷:還取決於約束的複雜性。如果他們都是這樣的簡單比較,但是,我相信z3會做得很好。給它一個鏡頭,如果它表現不好,我們可以進一步研究它。 –
如果我把這些限制約束放在前面而不是在後面,它會有不同嗎(理論上)? –