让我们假设我们有一个元素数组 [e_1, e_2, ..., e_n] 并且一个方法只访问(读取和写入)数组的前 m 个元素,例如该方法将数组的前 m 个元素递增 1。如何在 Dafny 中实现该方法,以便该方法提供形式的后置条件
ensures forall i: int :: m < i <= a.Length ==> old(a[i]) == a[i]
我目前的方法没有用,所以我不在这里展示它们。
这里是实现:
method IncreaseByOne(a: array<int>, idx: int)
requires 0 <= idx <= a.Length
modifies a
ensures forall i :: 0 <= i < idx ==> a[i] == old(a[i]) + 1
ensures forall i :: idx <= i < a.Length ==> a[i] == old(a[i])
{
var t := 0;
while t < idx
invariant 0 <= t <= idx
invariant forall i :: 0 <= i < t ==> a[i] == old(a[i]) + 1
invariant forall i :: t <= i < a.Length ==> a[i] == old(a[i])
{
a[t] := a[t] + 1;
t := t + 1;
}
}
• 网站所有者如何适应谷歌算法更新的不断变化以保持和提高他们的SEO排名?
• 如何将 2d numpy 数组保存到 csv 文件,每个值在不同的单元格中
• 如何将 2d numpy 数组保存到 csv 文件,每个值都在不同的单元格中
• CSS - 在 2023 年引用 dom 结构中完全不同的元素,而不是子元素或兄弟姐妹 [重复]
• 如何固定 iframe 的位置,使其在滚动时也更改其 TOP 级别?
• 在 MERN 的 POS 应用程序结帐过程后,购物车项目未删除或为空。比如 await cartItems.findAndUpdate({ $set: { cartItems: [] } });