fbpx
维基百科

霍尔逻辑

霍爾邏輯(英語:Hoare Logic),又稱弗洛伊德-霍爾邏輯Floyd–Hoare logic),是英国计算机科学家東尼·霍爾开发的形式系统,这个系统的用途是为了使用严格的数理逻辑推理來替计算机程序正确性提供一组逻辑规则。

這個想法起源於罗伯特·弗洛伊德於較早的研究,他为流程图提供了类似的系统。東尼·霍爾於1969年首次發表[1],随后为其他研究者所精制。

霍爾三元組 编辑

霍爾邏輯的中心特征是霍爾三元組(Hoare triple)。这种三元组描述一段代码的执行如何改变计算的状态。Hoare三元组有如下形式

 

这里的 PQ断言C命令P 叫做 前条件Q 叫做 后条件 。断言是谓词逻辑的公式。这个三元组在直觉上读做:只要 PC 执行前的状态下成立,则在执行之后 Q 也成立。注意如果 C 不终止,也就没有"之后"了,所以 Q 在根本上可以是任何语句。实际上,你可以选择 Q 为假来表达 C 不终止。事實上,这種情形叫做 "部分正确(partial correctness)"。如果 C 终止并且在终止时 Q 是真,则表达式被稱作 "全部正确性(total correctness)"。终止必须被单独证明。

霍爾邏輯为简单的指令式编程语言的所有构造提供了公理推理规则。除了给Hoare论文中的简单语言的规则,其他语言构造的规则也已经被Hoare和很多其他研究者开发完成。包括并发过程分支語句,和指针

部分正确性 编辑

空语句公理 编辑

 

如果P在一个空语句之前成立,那么在执行这个空语句之后也是成立的。 "skip"在这里表示空语句(Empty statement)。

赋值公理模式 编辑

赋值公理声称,关于对赋值右手端的变量的以前为真的任何命题在赋值之后仍然成立:

 

这里的 指示表达式P中所有的自由变量x都被替代为表达式E

有效的三元组的兩個例子:

 
 

顺序规则 编辑

 

例如,考虑赋值公理的下列两个实例:

 

 

通过顺序规则,将得到:

 

条件规则 编辑

 

While规则 编辑

 

这里的P循环不变条件

推论规则 编辑

 

全部正确性 编辑

上述规则只证明部分正确性。可以通过扩展版本的While规则证明全部正确性。

  • 全部正确性的While规则:
 

在本文中,除了维持循环不变条件,还能通过其值在每次重复期间递减的项就是这里的t的方式来证明终止。注意t必须从良定集合中取值,所以循环的每一步都通过递减有限的成员来计数。

参见 编辑

参考文献 编辑

引用 编辑

  1. ^ Hoare, C.A.R. (PDF). Communications of the ACM. October 1969, 12 (10): 576–585. doi:10.1145/363235.363259. (原始内容 (PDF)存档于2016-03-04). 

来源 编辑

刊物文章
  • C. A. R. Hoare. "An axiomatic basis for computer programming". Communications of the ACM, 12(10):576–585, October 1969. doi:10.1145/363235.363259
书籍

霍尔逻辑, 霍爾邏輯, 英語, hoare, logic, 又稱弗洛伊德, 霍爾邏輯, floyd, hoare, logic, 是英国计算机科学家東尼, 霍爾开发的形式系统, 这个系统的用途是为了使用严格的数理逻辑推理來替计算机程序的正确性提供一组逻辑规则, 這個想法起源於罗伯特, 弗洛伊德於較早的研究, 他为流程图提供了类似的系统, 東尼, 霍爾於1969年首次發表, 随后为其他研究者所精制, 目录, 霍爾三元組, 部分正确性, 空语句公理, 赋值公理模式, 顺序规则, 条件规则, while规则, 推论规则,. 霍爾邏輯 英語 Hoare Logic 又稱弗洛伊德 霍爾邏輯 Floyd Hoare logic 是英国计算机科学家東尼 霍爾开发的形式系统 这个系统的用途是为了使用严格的数理逻辑推理來替计算机程序的正确性提供一组逻辑规则 這個想法起源於罗伯特 弗洛伊德於較早的研究 他为流程图提供了类似的系统 東尼 霍爾於1969年首次發表 1 随后为其他研究者所精制 目录 1 霍爾三元組 2 部分正确性 2 1 空语句公理 2 2 赋值公理模式 2 3 顺序规则 2 4 条件规则 2 5 While规则 2 6 推论规则 3 全部正确性 4 参见 5 参考文献 5 1 引用 5 2 来源霍爾三元組 编辑霍爾邏輯的中心特征是霍爾三元組 Hoare triple 这种三元组描述一段代码的执行如何改变计算的状态 Hoare三元组有如下形式 P C Q displaystyle P C Q nbsp 这里的 P 和 Q 是 断言 而 C 是命令 P 叫做 前条件 而 Q 叫做 后条件 断言是谓词逻辑的公式 这个三元组在直觉上读做 只要 P 在 C 执行前的状态下成立 则在执行之后 Q 也成立 注意如果 C 不终止 也就没有 之后 了 所以 Q 在根本上可以是任何语句 实际上 你可以选择 Q 为假来表达 C 不终止 事實上 这種情形叫做 部分正确 partial correctness 如果 C 终止并且在终止时 Q 是真 则表达式被稱作 全部正确性 total correctness 终止必须被单独证明 霍爾邏輯为简单的指令式编程语言的所有构造提供了公理和推理规则 除了给Hoare论文中的简单语言的规则 其他语言构造的规则也已经被Hoare和很多其他研究者开发完成 包括并发 过程 分支語句 和指针 部分正确性 编辑空语句公理 编辑 P skip P displaystyle frac P textbf skip P nbsp 如果P在一个空语句之前成立 那么在执行这个空语句之后也是成立的 skip 在这里表示空语句 Empty statement 赋值公理模式 编辑 赋值公理声称 关于对赋值右手端的变量的以前为真的任何命题在赋值之后仍然成立 P E x x E P displaystyle frac P E x x E P nbsp 这里的P E x displaystyle P E x nbsp 指示表达式P中所有的自由变量x都被替代为表达式E 有效的三元组的兩個例子 x 1 43 x 42 y x 1 y 43 x 42 displaystyle x 1 43 land x 42 y x 1 y 43 land x 42 nbsp x 1 N x x 1 x N displaystyle x 1 N x x 1 x N nbsp 顺序规则 编辑 P S Q Q T R P S T R displaystyle frac P S Q Q T R P S T R nbsp 例如 考虑赋值公理的下列两个实例 x 1 43 y x 1 y 43 displaystyle x 1 43 y x 1 y 43 nbsp 和 y 43 z y z 43 displaystyle y 43 z y z 43 nbsp 通过顺序规则 将得到 x 1 43 y x 1 z y z 43 displaystyle x 1 43 y x 1 z y z 43 nbsp 条件规则 编辑 B P S Q B P T Q P if B then S else T endif Q displaystyle frac B wedge P S Q neg B wedge P T Q P textbf if B textbf then S textbf else T textbf endif Q nbsp While规则 编辑 P B S P P while B do S done B P displaystyle frac P wedge B S P P textbf while B textbf do S textbf done neg B wedge P nbsp 这里的P是循环不变条件 推论规则 编辑 P P P S Q Q Q P S Q displaystyle frac P prime rightarrow P lbrace P rbrace S lbrace Q rbrace Q rightarrow Q prime lbrace P prime rbrace S lbrace Q prime rbrace nbsp 全部正确性 编辑上述规则只证明部分正确性 可以通过扩展版本的While规则证明全部正确性 全部正确性的While规则 P B t z S P t lt z P t 0 P while B do S done B P displaystyle frac P wedge B wedge t z S P wedge t lt z P rightarrow t geq 0 P textbf while B textbf do S textbf done neg B wedge P nbsp dd 在本文中 除了维持循环不变条件 还能通过其值在每次重复期间递减的项就是这里的t的方式来证明终止 注意t必须从良定集合中取值 所以循环的每一步都通过递减有限链的成员来计数 参见 编辑契约式设计 动态逻辑 艾兹赫尔 戴克斯特拉 谓词变换者语义 程序验证参考文献 编辑引用 编辑 Hoare C A R An axiomatic basis for computer programming PDF Communications of the ACM October 1969 12 10 576 585 doi 10 1145 363235 363259 原始内容 PDF 存档于2016 03 04 来源 编辑 刊物文章C A R Hoare An axiomatic basis for computer programming Communications of the ACM 12 10 576 585 October 1969 doi 10 1145 363235 363259书籍Robert D Tennent Specifying Software a recent textbook that includes an introduction to Hoare logic ISBN 0 521 00401 2 1 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title 霍尔逻辑 amp oldid 77521447, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。