2
跟進到先前的討論:Z3: Extracting existential model-valuesZ3 QBVF問題
有沒有之間的差異:
(declare-fun sx ((_ BitVec 16)) (_ BitVec 16))
(assert (forall ((y (_ BitVec 16))) (bvuge y (sx y))))
而且
(declare-fun sx ((_ BitVec 16)) (_ BitVec 16))
(declare-fun y() (_ BitVec 16))
(assert (bvuge y (sx y)))
至於Z3是什麼呢?也就是說,我仍然會自動爲後者獲取QBVF解算器嗎?
此外,在實驗我發現,如果我發出:
(eval (sx #x8000))
一個(check-sat)
電話後,它工作正常(這是偉大的)。什麼是更好的是,如果我還可以說:
(eval (sx (get-value (y))))
唉,該查詢Z3抱怨說,它是一個invalid function application
。有沒有辦法以這種方式使用eval
函數?
謝謝!