如何在 Dafny 中验证 pre/post 条件
How to verify pre/post conditions in Dafny
我是 dafny 的新手。我正在尝试一些示例以更好地理解。
这是我到目前为止编写的代码示例,
编辑: https://rise4fun.com/Dafny/6mOt
我不确定如何完全填写这些 pre/post 条件。我尝试了一些但没有帮助。任何帮助,将不胜感激。
谢谢!
Dafny 不会推断出任何不变量,因此您需要添加它们。特别是如果您已经知道 post 条件并且您的循环位于方法的末尾,则更容易找到它。有时只需用循环计数器替换要迭代的数组的长度就足够了。然后,在循环结束时,当i >= n
时,你可以认为不变量变成post-条件。
在你的情况下,它让我走了很远,但需要一些调整。您需要添加的不变量之一是
invariant forall j : int :: 0 <= j < i && j < m ==> cells[j] == copy[j]
另外一个留给你
我是 dafny 的新手。我正在尝试一些示例以更好地理解。
这是我到目前为止编写的代码示例, 编辑: https://rise4fun.com/Dafny/6mOt 我不确定如何完全填写这些 pre/post 条件。我尝试了一些但没有帮助。任何帮助,将不胜感激。
谢谢!
Dafny 不会推断出任何不变量,因此您需要添加它们。特别是如果您已经知道 post 条件并且您的循环位于方法的末尾,则更容易找到它。有时只需用循环计数器替换要迭代的数组的长度就足够了。然后,在循环结束时,当i >= n
时,你可以认为不变量变成post-条件。
在你的情况下,它让我走了很远,但需要一些调整。您需要添加的不变量之一是
invariant forall j : int :: 0 <= j < i && j < m ==> cells[j] == copy[j]
另外一个留给你