1
ここでは、整数lim
を取り、厳密にはlim
より小さいすべての整数のシーケンスを返します。Dfenyは以下のように集約しますN
第2の不変量の... <==> ...
の逆方向のみが検証されません。私はこれをしばらく試してみましたが、私はそれを理解することができませんでした。
ご協力いただきありがとうございます。
あなたはこの不変を追加する必要がmethod evens(lim : int) returns (ret : seq<int>)
requires 0 < lim
{
ret := [];
var i := 0;
while (i < lim)
invariant 0 <= i <= lim
invariant forall idx :: 0 <= idx < i ==> (idx % 2 == 0 <==> idx in ret)
{
if (i % 2 == 0) {
ret := [i] + ret;
}
i := i + 1;
}
}