1
在玩Z3時,我發現變量在變化類型時會出現問題。我已經能夠得到Int
與Real
發揮很好。我也得到Int
轉換爲BitVec
,然後回來。但是,似乎一旦我達到了在Int
和BitVec
之間轉換的閾值,z3解算器就會退出軌道並且不會返回。z3變量類型切換
我的求解器狀態的一個例子是這樣的:
[271733878 == a,
562383102 == b,
4023233417 == c,
1732584193 == d,
e ==
BV2Int(int2bv(d)^
int2bv(BV2Int(int2bv(b) &
int2bv(BV2Int(int2bv(c)^
int2bv(a)))))),
f == e,
305419896 == g]
,實際工作正常。但是,如果我再做一個int2bv轉換Z3永遠不會返回,我必須殺死python。同樣,這些變量的問題實際上是非常不穩定的,只要它們可能採取什麼類型。我曾經考慮過只使用BitVec,但如果我想一起添加BitVec和Real,會導致問題。
我是不是想用Z3來做一些不適合的東西?有沒有什麼方法可以使用Z3來解決這類問題?
感謝您的反饋意見。如你所述,我肯定會延遲轉換。不過,我也希望在某些時候能夠更多地投入到這些轉換中,因爲我認爲將來可能需要更有效的轉換方法(或者甚至是兩者之間的隱式轉換)。 –
出於興趣,您是否有一個實際需要兩種理論之間轉換的應用程序,或者您是否爲了方便而在它們之間進行轉換,並且所有這些都可以完全在其中一種理論中完成? –