我是dafny的新手。我正在尝试一些示例以更好地理解。
这是我到目前为止编写的代码示例, 编辑: https://rise4fun.com/Dafny/6mOt 我不确定如何完全满足这些前提条件。我尝试了一些但没有帮助。任何帮助,将不胜感激。
谢谢!
答案 0 :(得分:0)
Dafny不会推断任何不变式,因此您需要添加它们。特别是如果您已经知道后置条件,并且循环位于方法的末尾,则更容易找到它。有时,只需使用循环计数器替换要迭代的数组的长度就足够了。然后,在循环的最后,当i >= n
时,您可以想到不变量变成后置条件。
就您而言,它使我走了很多,但需要一些调整。您需要添加的不变式之一是
invariant forall j : int :: 0 <= j < i && j < m ==> cells[j] == copy[j]
我把另一个留给你。