我試圖用兩個整數表示一個實數,用它們作爲實數的分子和分母。我寫了下面的程序:爲什麼Z3中的運算符'/'和'div'會給出不同的結果?
(declare-const a Int)
(declare-const b Int)
(declare-const f Real)
(assert (= f (/ a b)))
(assert (= f 0.5))
(assert (> b 2))
(assert (> b a))
(check-sat)
(get-model)
程序返回SAT結果如下:
sat
(model
(define-fun f() Real
(/ 1.0 2.0))
(define-fun b() Int
4)
(define-fun a() Int
2)
)
不過,如果我寫 '(斷言(= F(DIV AB)))' 而不是「( assert(= f(/ ab)))',那麼結果是UNSAT。爲什麼div不會返回相同的結果?另外,對於我來說主要關心的是,我沒有找到在z3 .Net API中使用運算符'/'的方法。我只能看到函數MkDiv,它實際上是運算符'div'。有沒有辦法讓我可以在z3 .Net API的情況下應用運算符'/'?先謝謝你。