付録E:参考文献とWebリソース(一次情報への導線)

本付録は、本文で扱った形式的手法・ツールについて、一次情報(公式サイト/公式リポジトリ/公式ドキュメント/公式リリース)へ到達するための索引である。
2026-01 時点で、名称変更・主流ツールの更新(例:Coq→Rocq、CVC4→cvc5、Alloy 6 系、TLA+の Apalache 等)を反映している。

数値の出典ポリシー(本書共通)

  • 報告値(実測/事例):一次・準一次情報(論文/公式ブログ/公式レポート等)への出典URLを必須とする。
  • 例示:例示であることを明記し、読者が「一般に成立する値」と誤認しない表現にする。
  • 不確実な推定:推定値は避け、必要なら「不確実である」旨と前提条件(スコープ、計測条件)を併記する。

1) 仕様記述(Alloy / TLA+ / Z / CSP)

Alloy(Alloy 6.x)

TLA+(TLC)

Z(Z記法)

  • 用途:状態ベース仕様(集合/関係/写像)を厳密に記述し、レビューや検証の基盤にする
  • 推奨読者:第5章(Z記法)
  • 一次情報(実装・ツール):

CSP

  • 用途:並行プロセスの通信・同期・デッドロック等の性質を扱う
  • 推奨読者:第6章(CSP)
  • 一次情報(ツール例):

2) 模型検査(TLC / Apalache / SPIN / NuSMV)

Apalache(TLA+の追加検査:SMTベース)

  • 用途:TLA+仕様に対して、SMTベースの探索/制約解決で性質検査を行う(TLCと棲み分け)
  • 推奨読者:第7章(TLA+)、第8章(模型検査)、第12章(ツールと自動化)
  • 一次情報:

SPIN(Promela)

  • 用途:並行システムの模型検査(Promela)と反例トレース
  • 推奨読者:第6章(並行性の落とし穴)、第8章(模型検査)
  • 一次情報:

NuSMV

  • 用途:状態遷移モデルに対する模型検査(CTL/LTL等)
  • 推奨読者:第8章(模型検査の俯瞰)
  • 一次情報:

3) 定理証明(Rocq / Lean / Isabelle / Agda)

Rocq(旧称:Coq)

Lean(Lean 4)

Isabelle

Agda

  • 用途:依存型に基づく定理証明・プログラム記述
  • 推奨読者:第9章(型理論の補助線として)
  • 一次情報:

4) プログラム検証(Dafny / Frama-C / CBMC / VeriFast / SPARK)

Dafny

  • 用途:仕様(契約)と検証を統合し、SMTと組み合わせて自動検証を行う
  • 推奨読者:第10章(プログラム検証)、第12章(自動化)
  • 一次情報:

Frama-C

  • 用途:C言語向けの静的解析/検証(アノテーション、プラグイン)
  • 推奨読者:第10章(プログラム検証)
  • 一次情報:

CBMC

  • 用途:C/C++の境界付き模型検査(バグ/安全性/アサーション)
  • 推奨読者:第8章(模型検査の考え方)、第10章(プログラム検証)
  • 一次情報:

VeriFast

SPARK(Ada)

  • 用途:高信頼Ada開発向けの契約/静的解析/証明(安全クリティカル)
  • 推奨読者:第11章(導入戦略)、第12章(ツール統合)
  • 一次情報:

5) SMTソルバー(Z3 / cvc5)

Z3

  • 用途:制約充足/定理証明の基盤(多くの検証器のバックエンド)
  • 推奨読者:第10章(プログラム検証)、第12章(ツールと自動化)
  • 一次情報:

cvc5(CVC系列の後継。旧:CVC4)

6) 産業事例(一次・準一次情報)

パリ地下鉄14号線(B-method)

Amazon s2n(暗号実装の検証)

産業界におけるTLA+活用

7) AI×形式手法(LLM支援:位置づけと注意点)

LLMは、仕様/証明/反例解釈の「草案生成」や「探索支援」に有用である一方、最終保証の根拠にはならない
本書では、LLM出力を「未信頼入力」として扱い、必ず機械検証(模型検査/型チェック/SMT等)で閉じる運用を推奨する。