Whyインストールメモ

Whyツールの習得について(
http://groups.google.co.jp/group/fm-forum/browse_thread/thread/6fbd1bc05aa8f999)
ということで、
私もやってみた。

Whyというのはプログラムの検証用ツールなのだが、
プログラムコードにアサーションのように挿入したWhyのコードを
もとに、プログラムを自動的に検証してくれるという、
なんだか素晴らしい仕組みを持っているのだ。

私の環境はUbuntu

1.インストール
Coq(apt-getでインストールできる)以外に必要なものは、

why-2.24.tar.gz(http://why.lri.fr/)

いくつか追加でパッケージが必要。
全部sudo apt-get installでインストールしておく。
libocamlgraph-ocaml-dev(これがないとconfigure時に怒られる)
liblablgtk2-ocaml
liblablgtk2-ocaml-dev(gwhyに必要)
alt-ergo(gwhyが使う検証器の一つ)

コンパイルからインストールまでは、why-2.24.tar.gzを展開したディレクトリで

./configure
make
sudo make install

でOK。あと一つ、gwhyを使うなら、以下をやっておく。

why-config

これをやらないとgwhyが使う検証器の設定ファイル(.gwhyrc)ができてないので、gwhy起動時に怒られる。

1.試してみる
Lesson1.javaなんてファイルを作ってみる。

ken@ubuntu:~/src/why$ cat Lesson1.java
public class Lesson1 {
	/*@ ensures \result >= x && \result >= y &&
	  @   \forall integer z; z >= x && z >= y ==> z >= \result;
	  @*/
	public static int max(int x, int y) {
		if (x>y) return x; else return x;
	}
}

以下で起動する。

> gwhy Lesson1.java

コードと対応付けてチェックしてくれるのは便利だなぁ。