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

契約の検査の限界

命題 8.2(「契約による設計」§8) ・ ✓公理まで証明済み

  1. (実行時検査)仕様 (D,S)(D, S) と実装 ff(定義 2.1)に対し、違反入力の集合を V={x∈D∣f(x) が定まらないか、(x,f(x))∉S}V = \{x \in D \mid f(x) \text{ が定まらないか、} (x, f(x)) \notin S\} とする。ff が仕様を満たすことは V=∅V = \emptyset と同値である。有限集合 T⊆DT \subseteq D の各入力で ff を実行し、止まった結果について (x,f(x))∈S(x, f(x)) \in S を検査する実行時検査は、T∩V=∅T \cap V = \emptyset のとき違反を 1 つも報告しない。V≠∅V \ne \emptyset であっても同じである。
  2. (静的な判定)L\mathcal{L} をチューリング完全なプログラミング言語とする。L\mathcal{L} のプログラム cc について、三つ組 {true} c {false}\{\mathrm{true}\}\ c\ \{\mathrm{false}\} が部分正当であるかどうか(すなわち、cc がどの入力でも停止しないかどうか)は決定可能でない。したがって、プログラムと契約 (P,Q)(P, Q) から {P} c {Q}\{P\}\ c\ \{Q\} の部分正当性を判定するアルゴリズムは存在せず、「受理したものは必ず部分正当」である決定可能な検証器は、部分正当なのに受理しない三つ組を必ずもつ。

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

閉包の状態

✓ 公理まで証明済み

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

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

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

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

これを使っている定理

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