この質問はこれとほとんど同じですが、解決策がうまくいきません。申し訳ありませんが、新しい質問をするのではなく、その回答にコメントしたいのですが、十分な評判がありません...
エレベータの単純なステート マシンをモデル化しています。2 つのフロアと 2 つのボタンUpとDownがあります。遷移を述語Action x Elevator x Elevator (Elevator = State)としてモデル化したので、アクションaがsからs'への遷移を引き起こす可能性がある場合に T(a,s,s')が成立します。ここで、アクションは上ボタンまたは下ボタンのいずれかを押します。問題の充足可能性はボタンを押す人に依存するものではありませんが、関数subject : Action -> Personに何らかの解釈を Z3 に割り当ててもらいたいと思います。
目標は、エレベータの動作を理解するのに役立つステート マシンのkトレースを見つけることです。
auto-config=false
とを含むオプションのさまざまな組み合わせを試しましたがmodel-completion=true
、成功しませんでした。また、 (subject Action0)の値を求めるモデル補完を強制しようとしましたが、Z3 はまだsubjectに解釈を割り当てません。
私の Z3 バージョンは Linux amd64 で動作する 4.3.1 です。