Hoare逻辑证明

时间:2014-10-01 08:52:32

标签: proof language-concepts hoare-logic

证明以下内容是正确的。

{n != 0}    
if n<0 then 
n= -n 
{n>0} 

以下推理规则应该有帮助

{B and P} S {Q}, (not B) and P=>Q 
---------------------------------
{P}if B then S{Q} 

我一直在网上寻找一个明确的解释或者至少是一个跟随的例子,但我不太明白,我发现一些网站可能在下面有一些帮助,但没有任何例子。

第148-160页

任何帮助都非常感谢,我希望看到这个问题已经完成,所以我可以做其他人,而且我很困难,本书没有显示任何示例。

这些链接也可能有所帮助。谢谢,10分!

http://en.wikipedia.org/wiki/Hoare_logic#Conditional_rule

1 个答案:

答案 0 :(得分:0)

如果您仔细阅读本书,您会看到选择语句的fule规则如下:

{B and P} S1 {Q}, {(not B) and P} S2 {Q}
--------------------------------------
{P} if B then S1 else S2 {Q}

你可以在书中找到相当明显的事实

  

该行上方的第一个逻辑语句表示 then 子句;   第二个代表 else 子句。

因此,如果您只有然后部分,则规则会更改为

{B and P} S {Q}, {not B and P} {Q}
--------------------------------------
{P} if B then S {Q}

这是非常逻辑的规则。当且仅当 B 为真时,您才会到达序列 S 。所以你可以把它添加到前提条件语句中。

在您的情况下,推理规则如下:

{n < 0 and n != 0} n = -n {n > 0}, {n >= 0 and n != 0} {n > 0}
--------------------------------------------------------------
{n != 0} if n < 0 then n = -n {n > 0}

如果我们在线上方证明逻辑陈述,我们将在线下面证明陈述。

声明

{n < 0 and n != 0} n = -n {n > 0}

可以通过赋值公理来证明,它可以在书中的第150页找到。

n = -n {n > 0}

我们必须在后置条件中用 n = -n 替换 n 。所以我们有

{-n > 0}

等于

{n < 0}

反过来满足前提条件。

声明

{n >= 0 and n != 0} {n > 0}

显然也是正确的。 好吧,我们确保线上的两个陈述都是正确的,所以在线下方的陈述也是正确的。

相关问题