证明以下内容是正确的。
{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分!
答案 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}
显然也是正确的。 好吧,我们确保线上的两个陈述都是正确的,所以在线下方的陈述也是正确的。