私はZ3の初心者です。最近、いくつかの問題を確認するためにz3を使用しています。ここに私が試した一つの問題である:(X & Y < 0)は含意X/Y> = 0、以下、私が書いたプログラムは、次のとおりZ3はこのプログラムを検証できるはずですか?
(declare-const x Int)
(declare-const y Int)
(define-fun assumption() Bool
(and (< x 0) (< y 0))
)
(define-fun predicate() Bool
(<= 0 (div x y))
)
(assert (not (=> assumption predicate)))
(check-sat)
私は確認する 'Z3 -smt2ファイル名' を使用このプログラムは、動作し、unsatを返します。 ( - 1 *のy)と何らかの形で私は追加する必要があり、私は(-1 * X)/に 'X/Y' に変更するときにタイムアウトするこの原因Z3
(declare-const x Int)
(declare-const y Int)
(define-fun assumption() Bool
(and (< x 0) (< y 0))
)
(define-fun predicate() Bool
(<= 0 (div (* -1 x) (* -1 y)))
)
(assert (not (=> assumption predicate)))
(check-sat)
:しかし、ときに私は後にプログラムを修正しますそこに-1。私はなぜこれが起こったのか、なぜ定数を乗じたのがこの問題をより複雑にするのか混乱しています。
誰かがこれがなぜ起こったのか理解するのに役立つことができますか?
ありがとうございました!