1
不変量と1つまたは複数の操作の効果が与えられた場合、操作の実行後に不変条件がまだ成立しているかどうかを確認します。Z3不変チェック
これを達成するためのアイデアはありますか? UNSAT返します(チェック・土)の場合、私は
(declare-const a Int)
(declare-const b Int)
(declare-const c Int)
(declare-const d Int)
(define-fun invariant() Bool
(= a b c d 2)
)
(assert invariant)
(assert (= a 1)) ;operation1
(assert (= b 2)) ;operation2
(assert (not invariant))
(check-sat)
に似た何かを考えていたZ3を使用して
はその後、私は、システムの状態は、操作後に有効であると結論付けています。
私は明らかにいつも定理はUNSAT作る
(assert invariant)
(assert (not invariant))
ので、上記を行うことはできません。
しかし、私が実行すると(assert(不変でない))、操作によって変更されないシステムの部分が有効になるように、初期状態が有効であることを主張する必要があります。
* Cesare Tinelli *によるこの[プレゼンテーション](http://homepage.cs.uiowa.edu/~tinelli/talks/FT-11.pdf)が関連しているかもしれません。 –
私は実現しています(assert(= a 1))は割り当てではありません。私は単なる例としてシステムの状態をモデル化しようとしていました。私は自分自身を十分に明確にしたかどうかわかりません。プレゼンテーションは関連性があると思われますが、それはいつかその内容を解釈するために私を取っています。提案していただきありがとうございます。 – user2009400