ソフトウェア基礎論配布資料

ソフトウェア基礎論 配布資料 (6)
五十嵐 淳
平成 16 年 1 月 20 日
7
Floyd-Hoare 規則の完全性
任意の妥当な部分正当性表明は,Floyd-Hoare 規則で導出できるか?
7.1
ゲーデルの不完全性定理と相対的完全性
• effective な証明システム: そもそも導出 (らしきもの) が与えられた時に,それが導出か,ひい
ては,各導出ステップが規則インスタンスであることを計算機上で有限時間で検査可能 (規則
インスタンスでない場合は必ずしも止まらなくてもよい) であることが望ましい.それが可能
な証明システムを effective と呼ぶ.
• H-Conseq 規則… 表明式の妥当性の検査が必要→表明式に対する完全かつ effective な証明シ
ステム?
• ゲーデルの不完全性定理: 「与えられた任意の妥当な表明式を導出できる effective な証明システ
ム (導出規則) は存在しない.
」→与えられた任意の妥当な部分正当性表明を導出できる effective
な証明システムは存在しない.
• Cook による相対完全性: 「妥当である部分正当性表明は,妥当である表明式を (証明なしに)
公理として認めれば,Floyd-Hoare 規則を用いて導出可能である。」…導出中に現れる表明式の
妥当性は,“oracle” によって与えられると思ってよい.不完全性は Floyd-Hoare 規則のせいで
はない.
7.2
最弱事前条件と表現可能性
{A}c0 ; c1 {B} を H-Seq 規則で導出するには,{A}c0 {C} と {C}c1 {B} が導出できるような何ら
かの表明式 C を発見する必要がある.そのためには,任意の表明式 A とコマンド c から,最弱の事
前条件が Assn で表現できればよい.
定義 7.1 c ∈ Com, B ∈ Assn, I を解釈とする.B の 解釈 I におけるコマンド c に関する最弱事
前条件(weakest precondition) は,以下のような状態の集合 wpI [[c, B]] として定義される.
wpI [[c, B]] = {σ ∈ Σ⊥ | C[[c]]σ |=I B}
def
1
最弱事前条件に対して,
|=I {A}c{B} ⇐⇒ AI ⊆ wpI [[c, B]]
が成立する.ある表明式 A0 が存在し,任意の解釈 I に対し,AI0 = wpI [[c, B]] が成立するとき,
|=I {A}c{B} ⇐⇒ |=I A ⇒ A0
であり,
|= {A}c{B} ⇐⇒ |= A ⇒ A0
である.しかし,一般に,任意の最弱事前条件に対し,それを「表現する」表明式があることは明ら
かではない.
定義 7.2 Assn に (充分な) 表現力がある(expressive),とは任意のコマンド c, 表明式 B に対して,
表明式 A0 が存在し,任意の解釈 I に対し,AI0 = wpI [[c, B]] が成立することとする.
定理 7.1 (表現可能性定理) Assn には充分な表現力がある.
以降では,最弱事前条件を表現する表明式 (任意の I に対し wpI [[c, B]] = AI0 なる表明式 A0 ) を
w[[c, B]] と書く.
補題 7.2 c ∈ Com, B ∈ Assn に対して,
` {w[[c, B]]}c{B}
が成立する.
定理 7.3 (Cook の相対完全性定理) |= {A}c{B} ならば ` {A}c{B} である.
2