寻找Hoare三元组的循环不变性和部分正确性证明

时间:2019-12-07 13:43:41

标签: logic proof proof-of-correctness hoare-logic

我想为找到这个Hoare三元组的解决方案提供一些帮助:

(| k > 0 |)最大(|∀ j (0≤ j < k m a [ j ] |)

其中 k 是整数数组 a 的长度。程序Max看起来像这样:

i = 0;
m = a[0];
while ( i!=k ) {
   if ( a[i]>=m ) {
      m = a[i];
   } else {
      m = m;
   }
   i = i+1;
 }

程序Max应该用来计算数组的最大(最大)元素。任务是通过执行以下操作来证明上述Hoare三元组是部分正确的:

  1. 定义适当的循环不变性。
  2. 将证明作为静态呈现。
  3. 确定所有举证责任,并论证其真实性(争辩为什么一个表达可以从另一表达衍生出来)。 应该使用隐式,分配,部分While等规则来完成此操作。

非常感谢您的帮助!

0 个答案:

没有答案