Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

言語の基礎

この章の制約(多重度、factassert 等)は、設計上こういう問いに答えるための表現です。「この関係の形は許されるか?」「想定する不変条件は常に成り立つか?」を、小さなスコープの宇宙で手触りを確かめながら進めてください。画面のボタン名run / check の対応は Alloy Analyzer の UI 用語 を参照。

リレーションと多重度

Alloy の中心は関係です。フィールド f: A -> B は、A の元と B の元の対応(任意の多対多)を表せます。set / lone / one / some 等多重度は、この対応の形に制約を与えます。

制約

fact { ... } には、常に成り立たせたい事実を置きます。predassert とは使い分けの違いがあれど、探索(run では pred をゴールにし、検査(check では不変条件を assert に残す、という分け方が扱いやすいです。check を走らす画面操作は、GUI では Execute(結果はビルド表記の SAT/UNSAT 等。版依存)に対応します。対照表は Alloy Analyzer の UI 用語 を参照。

量化子

all, some, no, lone など、一階述語の量化がそのまま使えます。まず小さい宇宙(for のスコープ)で、成り立つ / 成り立たないのスケッチを見比べると学習が速いです。

モジュール

open util/... など、標準ライブラリの利用を前提にしつつ、自分の module 分割はモデルが大きくなった段階で導入すれば十分です。

次の章

Alloy Analyzer の UI 用語 で用語の対照を押さえたうえで、Alloy Analyzer の操作 で、ソルブの読み方と Visualizer、CLI への入口を扱います。