情報科学 › ソフトウェア設計とテスト › 契約による設計

最弱事前条件の性質

定理 4.2(「契約による設計」§4) ・ ✓公理まで証明済み

M\mathcal{M} を解釈、c,c1,c2c, c_1, c_2 を命令、P,Q,Q1,Q2P, Q, Q_1, Q_2 を表明とする。

  1. (特徴づけ)⊨M{P} c {Q}\models_{\mathcal{M}} \{P\}\ c\ \{Q\} は P⇒wlp(c,Q)P \Rightarrow \mathrm{wlp}(c, Q) と同値である。また P⇒wp(c,Q)P \Rightarrow \mathrm{wp}(c, Q) ならば ⊨M[P] c [Q]\models_{\mathcal{M}} [P]\ c\ [Q] である。
  2. (単調性)Q1⇒Q2Q_1 \Rightarrow Q_2 ならば wlp(c,Q1)⇒wlp(c,Q2)\mathrm{wlp}(c, Q_1) \Rightarrow \mathrm{wlp}(c, Q_2) かつ wp(c,Q1)⇒wp(c,Q2)\mathrm{wp}(c, Q_1) \Rightarrow \mathrm{wp}(c, Q_2)。
  3. (連言)wlp(c,Q1∧Q2)=wlp(c,Q1)∧wlp(c,Q2)\mathrm{wlp}(c, Q_1 \wedge Q_2) = \mathrm{wlp}(c, Q_1) \wedge \mathrm{wlp}(c, Q_2)、wp(c,Q1∧Q2)=wp(c,Q1)∧wp(c,Q2)\mathrm{wp}(c, Q_1 \wedge Q_2) = \mathrm{wp}(c, Q_1) \wedge \mathrm{wp}(c, Q_2)。
  4. (選言)M\mathcal{M} がすべての操作名について部分関数ならば、wp(c,Q1∨Q2)=wp(c,Q1)∨wp(c,Q2)\mathrm{wp}(c, Q_1 \vee Q_2) = \mathrm{wp}(c, Q_1) \vee \mathrm{wp}(c, Q_2)、wlp(c,Q1∨Q2)=wlp(c,Q1)∨wlp(c,Q2)\mathrm{wlp}(c, Q_1 \vee Q_2) = \mathrm{wlp}(c, Q_1) \vee \mathrm{wlp}(c, Q_2)。さらにこのとき、⊨M[P] c [Q]\models_{\mathcal{M}} [P]\ c\ [Q] は P⇒wp(c,Q)P \Rightarrow \mathrm{wp}(c, Q) と同値である。
  5. (計算規則)wlp(skip,Q)=Q\mathrm{wlp}(\mathtt{skip}, Q) = Q、wlp(x:=a,Q)=Q[a/x]\mathrm{wlp}(x := a, Q) = Q[a/x]、wlp(c1;c2,Q)=wlp(c1,wlp(c2,Q))\mathrm{wlp}(c_1; c_2, Q) = \mathrm{wlp}(c_1, \mathrm{wlp}(c_2, Q))、 wlp(if b then c1 else c2,Q)=(b∧wlp(c1,Q))∨(¬b∧wlp(c2,Q))\mathrm{wlp}(\mathtt{if}\ b\ \mathtt{then}\ c_1\ \mathtt{else}\ c_2, Q) = \bigl(b \wedge \mathrm{wlp}(c_1, Q)\bigr) \vee \bigl(\lnot b \wedge \mathrm{wlp}(c_2, Q)\bigr)。

本文で読む(証明と前後の説明)→

閉包の状態

✓ 公理まで証明済み

証明が使う定理を 前提 としてたどると、Rikai の中の証明だけで定義・公理(物理では基本仮定)までつながっています(前提の定理類 7 件、定義なども含めて 10 件)。

印の意味: ✓公理まで証明済み ・ △証明あり(閉包未完)・ ※主張のみ。テーマごとの集計は 閉包の状況。

前提をたどる 証明が使う定理・定義(直接 2 件)

▸ を開くと、その項目の証明が使う前提が出ます。深い先は各項目のページでたどれます。

これを使っている定理

証明で明示的に参照している定理は、まだありません。

関連するノック 1 問