変数をソートするプログラムがあり、その有効性をZ3で調べようとしていますが、変数がスワップされるコードセグメントが1つあり、SMT構文でモデル化する方法がわかりません。SMT(Z3)で変数スワップをモデル化する方法は?
if (x > y) {
temp = x;
x = y;
y = temp;
}
そして、私はアサーションを書かれているSMTについて、私はそれが正確に正しいものではありません推測:ここでは、元のコードセグメントがある
(declare-fun x() Int)
(declare-fun y() Int)
(declare-fun temp() Int)
(assert (=> (> s1 s2) (and (= tmp s1) (= s1 s2) (= s2 tmp))))
すべてのアイデアは、変数の割り当てを行う方法SMT?
はい、しかしどのように私は、私は '私は'(ITE(
typos
あなたはZ3で全く割り当てられないことを理解していますか?値と定数は不変です。 '= 'は割り当てません。 'と'は割り当てません。 'assert'は割り当てません。 – usr
はい、私は理解していますが、上記のコードセグメントをどのようにSMT構文に変換できるかはわかりません。あなたが提案したように、あなたが意味するものを見ることができるように、あなたは完全な例題を 'ITE'で与えることができますか?あなたが書いたものは意味をなさないので、SMTに翻訳する方法はわかりません。 – typos