如果你仔細閱讀這本書,你會看到福樂規則選擇語句如下:
{B and P} S1 {Q}, {(not B) and P} S2 {Q}
--------------------------------------
{P} if B then S1 else S2 {Q}
您可以在書中找到很明顯的事實是
該行上面的第一個邏輯語句表示,然後是子句; 第二個代表其他子句。
所以,如果你只有然後部分規則更改爲
{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 > 0}
相等於
{n < 0}
這反過來又滿足的先決條件。
聲明
{n >= 0 and n != 0} {n > 0}
顯然是正確的了。 那麼,我們已經確保這條線上面的兩條語句都是正確的,所以下面的語句也是正確的。