停止性の証明?

http://d.hatena.ne.jp/a-san/20090729#p1
VDMのmeasure関数の定義の仕方が少しずつわかってきました。

  • measure関数の引数は、元の関数の引数と一致しなければならない。
  • measure関数の戻り値は、nat、または natのタプルでなければならない。
  • 再帰関数が以下の形のとき、
func(引数列) ==
	... 
	if (条件) func(次引数列) ...
        ...;

どのような引数列に対しても以下の式が成り立つようなmeasure関数を定義しなければならない。

条件 => id(引数列) > id(次引数列)