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

news2025/2/13 9:49:36

文章目录

  • 霍尔三元组
    • 案例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.coloradmin.cn/o/639596.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

你“被”全链路了么?全链路压测实践之理论

要说当下研发领域最热门的几个词,全链路压测 肯定跑不了。最近的几次大会上,也有不少关于全链路的议题。之前有朋友在面试过程中也有被问到了什么是全链路压测,如何有效的开展全链路压测。今天我们就来聊聊全链路压测,但本文不会涉…

Redis.conf 详解

我们启动 Redis,一般都是通过 Redis.conf 启动。 因此,我们必须了解 Redis.conf 的配置,才能更好理解和使用 Redis。 单位 单位注意事项:当需要内存大小时,可以指定为1k 5GB 4M等 通常形式: 1k > 1000字…

搜索在计算机中的地位十分重要

无论是在内部系统还是在外部的互联网站上,都少不了检索系统。数据是为了用户而服务。计算机在采集数据,处理数据,存储数据之后,各种客户端的操作pc机或者是移动嵌入式设备都可以很好的获取数据,得到 想要的数据服务。 …

k8s学习-CKS考试必过宝典

目录 CKS考纲集群安装:10%集群强化:15%系统强化:15%微服务漏洞最小化:20%供应链安全:20%监控、日志记录和运行时安全:20% 报名模拟考试考试注意事项考前考中考后 参考 CKS考纲 集群安装:10% 使…

数据库技术及应用小科普(附部分例题)

数据库的基础 介绍 (手机撰写,多有不便,求铁铁们多多包涵)图书目录部分期末习题 介绍 (手机撰写,多有不便,求铁铁们多多包涵) 内容简介 《数据库技术及应用教程》系统地介绍了数据库…

【每日挠头算法题(5)】重新格式化字符串|压缩字符串

欢迎~ 一、重新格式化字符串思路1:构造模拟具体代码如下: 思路2:双指针法具体代码如下: 二、字符串压缩思路1:简单替换 总结 一、重新格式化字符串 点我直达~ 思路1:构造模拟 1.遍历字符串,…

iOS横竖屏切换

基础概念UIDeviceOrientationUIInterfaceOrientationUIInterfaceOrientationMaskUIViewController相关AppDelegate相关工程配置相关 横竖屏切换实例竖屏界面如何present横屏界面竖屏界面如何push横屏界面横屏竖切换机制分析系统如何知道App对界面朝向的支持不同界面的朝向控制自…

Qt学习06:QPainter绘画

文章首发于我的个人博客:欢迎大佬们来逛逛 Qt学习06:QPainter绘画 Qt绘图 Paint System Qt的绘制系统支持在屏幕和打印设备上使用相同的API进行绘制,主要基于QPainter、QPaintDevice和QPaintEngine类。 QPainter用于执行绘图操作&#xff…

JAVA基础 - SPI机制使用详解(三)

简述 SPI(Service Provider Interface的缩写) 意思是:“服务提供者的接口”,专门提供给服务提供者或者扩展框架功能的开发者去使用的接口。SPI 将服务接口和服务实现分离开来,将服务调用方和服务实现方进行解耦&#…

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

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

基于STM32的重力感应售货机系统设计

一、项目介绍 随着智能物联网技术的不断发展,人们的生活方式和消费习惯也正在发生改变。如今越来越多的人习惯于在线购物、自助购物等新型消费模式,因此智能零售自助柜应运而生。 本项目设计开发一款基于STM32主控芯片的智能零售自助柜,通过…

哪吒汽车,莫做“普信男”

作者 | 魏启扬 来源 | 洞见新研社 今年初,哪吒汽车创始人方运舟和张勇联合发表新年致辞,文末总结说 “2023-2025年,必将是一场艰难的挑战,也是哪吒汽车的生死存亡之战。” 哪吒汽车或许过于敏感了,就今年以来的市场表…

Tensorflow两步安装(超简单)

一、查看python版本,下载对应tensorflow文件 1.Anaconda已安装,找到Anaconda3文件夹,双击打开anaconda prompt,输入python,查看python版本 可以看到我的版本是3.9的 2.进入下面的网站,选择你需要的cpu或g…

【appium】appium自动化入门之API(下)——两万字API长文,建议收藏

目录 Appium API 前言 1.contexts (返回当前会话中的上下文,使用后可以识别 H5 页面的控件) 2.current_context (返回当前会话的当前上下文 ) 3. context (返回当前会话的当前上下文) 4.find_e…

Django-搭建sysinfo获取系统信息

文章目录 前言一、项目搭建二、主机信息监控三、Celery定时任务和异步任务 前言 本篇基于:https://github.com/hypersport/sysinfo#readme 使用Django,搭建sysinfo,Linux中,sysinfo是用来获取系统相关信息的结构体 一、项目搭建 &#xff0…

CV方向如何找到适合自己的研究创新点?

做CV的论文创新的一些思路与方向。分别是无事生非,后浪推前浪,推陈出新,出奇制胜。 无事生非 在原始的数据集上加一些噪声,例如随机遮挡,或者调整饱和度亮度什么的,主要是根据具体的任务来增加噪声或扰动&a…

大模型LLM-微调经验分享总结

模型越大对显卡的要求越高,目前主流对大模型进行微调方法有三种:Freeze方法、P-Tuning方法和Lora方法。笔者也通过这三种方法,在信息抽取任务上,对ChatGLM-6B大模型进行模型微调。liucongg/ChatGLM-Finetuning: 基于ChatGLM-6B模型…

I/O设备详解

目录 一. 什么是IO设备 二. IO设备分类 2.1按照使用特性分类 2.2按照传输速率分配 2.3按照信息交换的单位分类 三. IO设备的构成 3.1 IO的机械部件 3.2 IO的电子部件 3.2.1设备控制器(IO控制器功能简介) 3.2.2设备控制器(IO控制器&…

【C++】红黑树的模拟实现

文章目录 一、红黑树的概念二、红黑树的性质三、红黑树节点的定义四、红黑树结构五、红黑树的插入操作六、红黑树的调整1.叔叔存在且为红2.叔叔不存在或者存在且为黑3.插入完整代码4.总结 七、红黑树的验证八、红黑树的删除九、红黑树与AVL树的比较十、红黑树的应用十一、红黑树…

d2l_第四章学习_Softmax Regression

x.1 Classification 分类问题 x.1.1 Classification和Regression的区别 注意,广义上来讲,Classification/Softmax Regression 和 Linear Regression 都属于线性模型。但人们口语上更习惯用Classification表示Softmax Regression,而用Regres…