给定程序的循环不变量是多少?

时间:2018-03-20 04:31:49

标签: loops proof loop-invariant hoare-logic

我不知道如何找到循环不变量。我不知道从哪里开始。任何人都可以找到给定程序的循环不变量并解释你的方法。

{n ≥ 0 ∧ i = 0}
while i < n − 1 loop
b[i] := a[i + 1];
i:=i + 1
end loop
{∀j.(0 ≤ j < n − 1 → b[j] = a[j + 1])}

1 个答案:

答案 0 :(得分:0)

  1. while i < n − 1 loop
  2. b[i] := a[i + 1];
  3. i := i + 1
  4. end loop
  5. 不变量:在第2步之前,1 <= i + 1 < n和所有0 <= j <= i - 1b[j] = a[j + 1]

    i = 0(没有j满足0 <= j <= i - 1)时,不变量(通常)为真。此外,如果对于某些i是正确的,那么对于i + 1,它将保持为i + 1 < n(否则循环结束),因为在2之后我们也知道{{1} }。