如何在Dafny中验证前后条件

时间:2019-12-14 23:14:52

标签: dafny

我是dafny的新手。我正在尝试一些示例以更好地理解。

这是我到目前为止编写的代码示例, 编辑: https://rise4fun.com/Dafny/6mOt 我不确定如何完全满足这些前提条件。我尝试了一些但没有帮助。任何帮助,将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

Dafny不会推断任何不变式,因此您需要添加它们。特别是如果您已经知道后置条件,并且循环位于方法的末尾,则更容易找到它。有时,只需使用循环计数器替换要迭代的数组的长度就足够了。然后,在循环的最后,当i >= n时,您可以想到不变量变成后置条件。

就您而言,它使我走了很多,但需要一些调整。您需要添加的不变式之一是

invariant forall j : int :: 0 <= j < i && j < m ==> cells[j] == copy[j]

我把另一个留给你。