高完整性系统——霍尔逻辑

news/2024/11/15 4:46:17/

文章目录

  • 霍尔三元组
    • 案例1
    • 案例2
  • 逻辑
    • 推导规则
    • forward v.s. backward
      • forward
      • backward
    • rule of assignment
    • rules of consequence
    • 结合上述两个 rule
    • rule of sequencing
    • 更大的程序案例
    • skip rule
    • conditional rule
      • 案例

在这里插入图片描述
在这里插入图片描述

  • 要证明这个程序需要从上往下进行,先单独证明 f:=1, i:=1 再单独证明 while 中的内容,while
    中的内容需要一条条单独证明

霍尔三元组

在这里插入图片描述

  • 代表:当 P 满足,执行 S 后,Q 就会被满足(holds)

案例1

在这里插入图片描述

  • 如果 x=2 是满足的
  • 那么经过表达式 x:=x+1 之后,什么式子会 hold?
    在这里插入图片描述
  • 这里 x=3 被称为是 ”给定 x=2 作为 precondition 条件下的 strongest postcondition

案例2

在这里插入图片描述

  • 同样的方式:当 x=1 作为 postcondition holds 的时候,precondition 我们也很容易推出就是 x=0
    在这里插入图片描述

  • 但是这里的 precondition 被是 weakest precondition

  • 这是因为,我们反向推理(backwards) 的难度低于正向推理 (forward)

  • 还有一种理解方法就是:
    x > 5 = > x > 3 x>5 => x>3 x>5=>x>3 因此我们说 x > 5 x>5 x>5 是更加严格的条件;也就是更加 strong 的条件。同样的我们来看这个 post condition

  • 如果我们能够通过 precondition 得到 x=3 我们可以根据 x=3 这个条件推导出其他更加宽松的 postcondition,比如 x > 2 x>2 x>2,此时我们的式子可以写成这样:
    { x = 2 } x : = x + 1 { x > 2 } \{x=2\} x:=x+1 \{x>2\} {x=2}x:=x+1{x>2}

  • 这是完全没有问题的,而 x > 2 x>2 x>2 的条件是不如 x = 3 x=3 x=3 strong

  • 同样的道理我们看为什么是 weakest precondition:因为当我们用一个比现在 precondition 更严格一点的条件,这个推导式子也同样成立:
    x + 1 = 3 = > x = 2 x+1=3 => x=2 x+1=3=>x=2

  • 所以我们认为 x + 1 = 3 x+1=3 x+1=3 这个条件比 x = 2 x=2 x=2 严格,于是我们带到原式子中:
    { x + 1 = 3 } x : = x + 1 { x = 3 } \{x+1=3\} x:=x+1 \{x=3\} {x+1=3}x:=x+1{x=3}

  • 这个式子当然也是成立的

逻辑

在这里插入图片描述

推导规则

在这里插入图片描述

  • 如果 A A A holds(为true),同时 A = > B A=>B A=>B 也为 true,那么我们就能推导出 B B B 也为 true
  • “——” 代表 推导关系

在这里插入图片描述

  • 这个式子表明 true 天生就 holds
  • 也可以表示 我们假设这种情况是 true,因为不存在任何的前提条件,所以可以看成 assumption
    在这里插入图片描述
  • 如果 A A A holds, 同时 B B B holds, 那么 A ^ B 也 holds

forward v.s. backward

forward

在这里插入图片描述
在这里插入图片描述

  • 对于前面两个 forward 推理还不困难
    在这里插入图片描述

  • 但是对于下面这个
    在这里插入图片描述

backward

在这里插入图片描述
在这里插入图片描述

  • 我们可以从 post 的结果很容易推出 pre 的结果
    在这里插入图片描述

  • 尤其是第二个式子,我们只需要根据结果x=1 和条件 x:=x+1 甚至不需要计算出来 x=0 我们只需要把 x:=x+1 的过程反过来就可以退出 pre

  • 同样的:
    在这里插入图片描述

  • 对于这个式子,我们也可以轻易的写出
    在这里插入图片描述

  • 再看前面 forward 推理很难的那个问题
    在这里插入图片描述

  • 这里我们只需要
    在这里插入图片描述

  • 有上面的现象我们可以得到 rule of assignment

rule of assignment

在这里插入图片描述

  • P P P 是关于 x x x 的公式,经过将 x:=E 这个过程之后 P P P holds,

  • 那么我们把 post condition 中的 x 全部用 E 来代替即可
    在这里插入图片描述

  • 这个式子中 E = x + 1 E=x+1 E=x+1 所以把 post condition 中的 x = 1 x=1 x=1 中的所有 x x x 替换成 E E E 作为 precondition x + 1 = 1 x+1=1 x+1=1

  • 所以结果就是:
    { x + 1 = 1 } x : = x + 1 { x = 1 } \{x+1=1\} x:=x+1\{x=1\} {x+1=1}x:=x+1{x=1}
    { x = 0 } x : = x + 1 { x = 1 } \{x=0\}x:=x+1\{x=1\} {x=0}x:=x+1{x=1}

  • 再练一个:
    在这里插入图片描述
    在这里插入图片描述

rules of consequence

在这里插入图片描述

  • 根据我们前面讨论的 forwardbackward 我们可以通过这个公式推导出:
    在这里插入图片描述

  • 如果我们满足了下面的这种情况,我们同样能够得到
    在这里插入图片描述
    在这里插入图片描述

  • 因为 x = 0 x=0 x=0 的条件比 x > = 0 x>=0 x>=0 要严格,因此作为 precondition 也是可行的

  • 由此在这里插入图片描述

  • 解析一下: P ′ P' P P P P 的子集,同样的 Q Q Q Q ′ Q' Q 的子集,因此 P P P 的范围要收窄,而 Q Q Q 的范围要扩大。

结合上述两个 rule

在这里插入图片描述

  • 假设我们要证明:
    在这里插入图片描述

  • 首先我们先把这个式子作为 consequence rule 的下半部分,那么也就是 P ′ = { x = 0 } P'=\{x=0\} P={x=0}, Q ′ = { x > 0 } Q'=\{x>0\} Q={x>0}
    在这里插入图片描述

  • 我们接下来不改变 post condition,当我们想使用 consequence rule 的时候我们需要找到 P ′ = > P P'=>P P=>P ,而我们现在有 P ′ = { x = 0 } P' = \{x=0\} P={x=0}

  • 所以公式变成了下述:
    在这里插入图片描述

  • 假设有一个中间变量 P P P 是被推导出来的

  • 接下来对下图中的红框中的部分使用 assignement axiom
    在这里插入图片描述

  • { ? P } x : = x + 1 { x > 0 } \{?P\} x:=x+1 \{x>0\} {?P}x:=x+1{x>0} 可以推导出 P = x + 1 > 0 P=x+1>0 P=x+1>0

  • 然后将这个带换到 x = 0 = > ? P x=0 => ?P x=0=>?P 的部分,就可以得到:
    在这里插入图片描述
    在这里插入图片描述

  • 证明完成

  • 总结以下上面的证明逻辑
    在这里插入图片描述

rule of sequencing

在这里插入图片描述

  • 证明这一类题目的时候我们通常还是从后面一个部分开始,backward 的方式进行证明
    在这里插入图片描述
    • 证明开始:
      在这里插入图片描述
  • 首先利用 rule of consequence S 1 ; S 2 S1; S2 S1;S2 看成一个整体,此时 P ′ = { x = 0 } , Q ′ = { X = 2 } P'= \{x=0\}, Q'=\{X=2\} P={x=0},Q={X=2}所以这个时候我们还是需要看 P ′ = > P P'=>P P=>P 所以我们还是假设有一个中间的变量 ? P ?P ?P
    在这里插入图片描述
  • 现在还不能对对下图中框选的部分进行 assign rule,因为 assignment rule 只能对 single 的步骤进行,因此我们现在要对下图中框选的部分进行 rule of sequencing

在这里插入图片描述

  • 并得到:
    在这里插入图片描述
  • 我们引入了一个中间变量 ? R ?R ?R,同时将中间推理拆分成两个 individual 的部分
  • 这个时候,请注意下图中框选的部分:
    在这里插入图片描述
  • 这里有两个未知的部分 ? P , ? R ?P, ?R ?P,?R 因此,我们要寻求别的突破口,其实也非常明显,我们可以从最后的那个式子的 ? R ?R ?R 开始使用 assignment rule
    在这里插入图片描述
  • 当这个证明出来之后,顺理成章对左上角包含 ? P ?P ?P 的式子再使用 assignment rule 就可以了
    在这里插入图片描述
  • 现在只剩下最左边的一部分了:
    在这里插入图片描述
  • 事实上他是恒成立的:
    在这里插入图片描述

更大的程序案例

  • 下列的程序表示的意思就是一个 swap 程序
    在这里插入图片描述
    在这里插入图片描述
  • 其实这个证明就相当于在每两个 s 之间增加了一个中间项,然后需要逐一通过 assignment rule 来证明

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

skip rule

在这里插入图片描述

conditional rule

在这里插入图片描述

案例


在这里插入图片描述

  • 还是首先使用 consequence rule
  • 这样我们就相当于在 precondition 和 后续的运算之间加了个 ? P ?P ?P
  • 在这里插入图片描述
  • 然后我们根据 conditional rule
    在这里插入图片描述
    在这里插入图片描述

http://www.ppmy.cn/news/352200.html

相关文章

CSS基础学习--8 盒子模型(Box Model)

一、介绍 所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。 CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实…

Rocketmq面试(四)RocketMQ 的推模式和拉模式有什么区别?

一、PUSH模式 public class Consumer {public static void main(String[] args) throws InterruptedException, MQClientException {// 初始化consumer,并设置consumer group nameDefaultMQPushConsumer consumer new DefaultMQPushConsumer("please_rename_…

Python各目录下的__init__.py文件对Python模块化的重要作用

在Python项目中,__init__.py文件是一个特殊的Python文件,它的存在是为了将一个目录视为Python包。 __init__.py文件的主要作用有以下几点: 标识包:在一个目录中添加__init__.py文件,可以将该目录标识为一个Python包。…

优秀的杀毒软件

卡巴斯基(kaspersky) 小红伞(avira) 火绒 。。。。 评测结果

Altium Designer二次开发

Altium Designer二次开发就在该软件原有的基础上,自己写代码给它添加新功能,如:一键生成Gerber,计算铺铜面积,PCB走线的寄生参数和延时等等。 Altium Designer二次开发有两种方式,一种是基于Altium Designe…

推荐杀毒软件

卡巴斯基 卡巴斯基,英文名Kaspersky,是一款来源于俄罗斯的为用户度身定制的反病毒软件,查杀病毒性能远高于同类产品。它具有超强的中心管理和杀毒能力,能真正实现带毒杀毒!卡巴斯基软件技术安全且易于使用,能够为用户提…

企业中常见的杀毒软件

提到杀毒软件,很多人可能首先想到的就是360、腾讯安全管家、金山毒霸之类的国产免费杀毒软件。但是在企业环境中,除了一些小型公司外,基本不会选择这些免费的国产杀毒软件的。原因在于: 1、这类免费杀毒软件基本都附带推广信息 2、…

Mybatis《学习笔记(22版尚硅谷)》

Mybatis简介 MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到GithubiBatis一词来源于“intern…