これはばかげた質問のように感じますが、困惑しています。Frama-C Sodium と Why3 0.86.1 (両方とも OPAM 経由でインストール) を使用して、単純なプロパティを証明しようとしています。このプログラムを考えてみましょう ( toy.c):
int main(void) {
char *hello = "hello world!";
/*@ assert \valid_read(hello+(0..11)); */
return 0;
}
Frama-C GUI と Why3 を使用して、この主張を証明したいと思います。だから私は実行frama-c-gui toy.cし、証明者として「Why3(ide)」を選択し、メイン関数で「WPによる関数注釈の証明」を実行します。(または、「WP の目標」タブに移動し、そこから Why3 IDE を実行します。) Why3 が表示されたら、選択した証明者を呼び出してすべてを緑色に変更し、セッションを保存して Why3 を終了しますが、Frama では何も起こりません。 -C GUI: プロパティはまだオレンジ/「確認しようとしましたが、決定できませんでした」とマークされています。
Why3 によって生成された証明を実際に使用するように Frama-C に指示するにはどうすればよいですか? 証明自体は間違いなくそこにあります。Why3 をもう一度開いても、すべてが緑色のままなので、セッションは適切に保存されています。また、Frama-C は何かが起こったことを認識しています。Why3 IDE が開いている間、小さな歯車の記号が WP の目標タブに表示され、Why3 を閉じると消えます。
(この特定の特性は、Why3 を使用しなくても Alt-Ergo で証明できることはわかっていますが、より難しい問題には Why3 が必要です。)