付録C 記法対照表

C.1 記法統合ガイド

形式的手法では、複数の記法体系が使用されます。この付録では、本書で扱った主要な記法の対照表を提供し、記法間の対応関係と使い分けのガイドラインを示します。

C.2 基本論理記号

C.2.1 命題論理

意味 数学記法 Z記法 Alloy TLA+ 説明
論理積 && /\ AND演算
論理和 || \/ OR演算
否定 ¬ ¬ ! ~ NOT演算
含意 => => ならば
同値 <=> <=> 必要十分条件

C.2.2 述語論理

意味 数学記法 Z記法 Alloy TLA+ 説明
全称量化 all \A すべての
存在量化 some \E 存在する
一意存在 ∃! ∃₁ one - 唯一存在する

C.3 集合演算

C.3.1 基本集合演算

意味 数学記法 Z記法 Alloy TLA+ 説明
包含 in \subseteq 部分集合
真部分集合 - \subset 真の部分集合
和集合 + \cup 合集合
積集合 & \cap 共通部分
差集合 \ \ - \ 差集合
補集合 ¬ ~ - 補集合

C.3.2 集合構成

意味 数学記法 Z記法 Alloy TLA+ 説明
内包表記 {x | P(x)} {x : S | P • x} {x : S | P} {x ∈ S : P} 条件を満たす要素の集合
空集合 none {} 空の集合
全体集合 U U univ - 全要素の集合

C.4 関係と関数

C.4.1 関係演算

意味 数学記法 Z記法 Alloy TLA+ 説明
関係合成 R ; S R ∘ S R.S - 関係の合成
逆関係 R⁻¹ R~ ~R - 関係の逆
反射閉包 R* R* *R - 反射的推移閉包
推移閉包 R⁺ R⁺ ^R - 推移閉包

C.4.2 関数記法

意味 数学記法 Z記法 Alloy TLA+ 説明
全関数 f: A → B f: A → B f: A -> B f ∈ [A → B] 全域関数
部分関数 f: A ⇀ B f: A ⇸ B f: A ⇸ B f ∈ [A ⇸ B] 部分関数
単射 f: A ↣ B f: A ↣ B - - 一対一関数
全射 f: A ↠ B f: A ↠ B - - 上への関数
全単射 f: A ↔ B f: A ⤖ B - - 一対一対応

C.5 状態と操作

C.5.1 状態記法

概念 Z記法 Alloy TLA+ 説明
状態スキーマ State sig State State == … 状態の定義
不変条件 Invariant fact TypeOK 常に成立する性質
初期状態 InitState pred init Init 初期状態の定義

C.5.2 操作記法

概念 Z記法 Alloy TLA+ 説明
操作スキーマ Op pred op Next 状態変化の記述
事前条件 pre Op - ENABLED Op 操作の前提条件
事後条件 post Op - - 操作の結果条件
フレーム条件 ΞState - UNCHANGED vars 変化しない変数

C.6 時間と時相論理

C.6.1 時相演算子

意味 CTL LTL TLA+ 説明
常に AG p G p □ p すべての時点で成立
いつか AF p F p ◇ p いつかは成立
次に AX p X p p’ 次の状態で成立
まで A[p U q] p U q p ∪ q pがqまで成立

C.6.2 TLA+特有記法

記法 意味 説明
[A]_v A ∨ (v’ = v) Aが成立するか変数vが不変
⟨A⟩_v A ∧ (v’ ≠ v) Aが成立し変数vが変化
WF_v(A) □◇⟨A⟩_v ∨ □◇¬ENABLED⟨A⟩_v 弱公平性
SF_v(A) □◇⟨A⟩_v ∨ ◇□¬ENABLED⟨A⟩_v 強公平性

C.7 記法選択のガイドライン

C.7.1 用途別推奨記法

用途 推奨記法 理由
データ構造の仕様 Z記法 豊富な数学記法、詳細な仕様記述
システム設計の検証 Alloy 軽量、高速な検証、視覚的なモデル
並行システム CSP/TLA+ プロセス記述、時相性質の表現
プロトコル検証 TLA+ 分散システム、時間的性質
要求仕様 自然言語+Z 可読性と厳密性のバランス

C.7.2 記法習得の順序

  1. 基礎段階: 基本論理記号、集合演算
  2. 応用段階: 関係、関数、状態記述
  3. 発展段階: 時相論理、並行性
  4. 統合段階: 複数記法の使い分け

C.7.3 記法変換の指針

  • Z記法 → Alloy: 状態スキーマをシグネチャに変換
  • Alloy → TLA+: 静的構造を動的仕様に拡張
  • 自然言語 → 形式記法: 段階的形式化

C.8 実践的記法選択

C.8.1 プロジェクト特性による選択

プロジェクト特性 推奨記法 選択理由
高い安全性要求 Z記法 + 定理証明 数学的厳密性
迅速な検証が必要 Alloy 高速な自動解析
分散システム TLA+ 並行性とタイミング
レガシー統合 CSP プロセス間通信
教育目的 Alloy 学習コストの低さ

C.8.2 チーム能力による選択

チーム特性 推奨アプローチ 配慮事項
数学的背景が強い Z記法中心 表現力を活用
プログラマー中心 Alloy中心 シンタックスの親しみやすさ
混合チーム 段階的導入 学習曲線の考慮
初心者チーム 軽量形式手法 成功体験の積み重ね

この記法対照表は、形式的手法の実践において、適切な記法選択と記法間の変換を支援するためのリファレンスです。プロジェクトの特性とチームの能力に応じて、最適な記法組み合わせを選択してください。