章一覧

付録D 意味論・仕様索引

綴りは構文早見表、規則の理由と例は以下の各章を参照してください。この索引は、本で説明している範囲の規則を探す入口です。言語の全構文や、まだ検証していない機能を網羅した仕様ではありません。

D.1 値・宣言・型

調べたいこと規則と注意点詳しい説明
束縛と代入let と var を区別し、変更可能なセルへの代入に := を使う値と型
数値型固定幅の整数・浮動小数点・証明で使う Nat を同じものとして扱わない基本型、実行時の対応
関数と分岐引数と結果の型、分岐ごとの結果、残る効果を確認する関数と制御フロー
データ構造struct のフィールド、enum の構成子、match の各場合を区別するstruct・enum・match
型パラメータ本の関数例は <A>、型の適用は List(A)。任意の項ジェネリクスまで使えるとは読み替えないジェネリクス
型クラスwhere Ord(A) の要求と、比較の実装と、証明で使う法則の境界を区別する型クラス、ソートの証明
名前と import相対パスでの取り込みと標準ライブラリの取り込み、pub の公開範囲を確認するプロジェクト

D.2 所有権・借用・効果

調べたいこと規則と注意点詳しい説明
copy / shared / affine / linear複製と破棄に関する使用規則。変数が変更可能かとは別の軸四つの種
& と &mut読み取りと変更の借用を区別する。値を移動する呼び出しと混同しない借用
view の束縛let &x := ... の使用範囲を確認する借用と参照
perform / handle効果の要求と、その処理を分ける。未処理の効果は外側に残る代数的効果
! {…}関数の結果と別に、外に現れる効果を読む関数、効果
resume継続を使える回数と、その環境に含まれる値の使用規則を合わせて考える継続と所有権
実行の予算言語の予算と、ホストの時間・メモリ制限を混同しない実行の上限、信頼の境界

D.3 命題・証明・宇宙

調べたいこと規則と注意点詳しい説明
Prop と証明項命題を型として、証明をその型を持つ項として読む証明の第一歩
Refl等式の両辺が定義に従う計算で一致するときに使う。任意の数学的等式を自動で証明する道具ではない等式
帰納法各構成子の場合と帰納法の仮定を区別する帰納法と再帰
タクティク証明を構築する支援と、完成した証明の検査を区別するタクティク
?name未完成の穴。候補を表示できても、埋めた後の検査成功が必要証明支援
Type(u) / Level宇宙の高さを読む。自由な記号レベルの推論を前提にしない依存型と宇宙
公理・外部関数仮定として採用した命題と外部実装は保証の境界に含まれる信頼の境界

D.4 よく混同する概念

  • 型の一致と等式の証明:型検査中の定義的な一致と、命題としての等式に証明項を与えることは同じ操作ではありません。計算で一致しない等式には、書き換えや別の証明が必要になる場合があります。
  • 定理と実行テスト:一般の入力に関する定理と、選んだ入力で実行したテストは別の証拠です。どちらかの成功を他方の成功と読み替えません。
  • 依存型とすべての型レベル関数:値を含む命題が書けることから、あらゆる実行用関数やクラスメソッドを型の位置で利用できるとは限りません。使いたい経路ごとに小さな例で検査してください。
  • 検査済みと実行可能:検査が成功したファイルでも、使うバックエンド・ホスト能力・外部関数との組合せは別に確認します。

D.5 ここにない仕様を調べる

標準 API の正確な引数や公開範囲は、使っているバージョンの tauto library FILE と tauto doc PATH で確認します。CLI の選択肢は tauto --help と対象コマンドの --help を参照します。マクロ、FFI、各バックエンドの全制約について、この索引だけを完全な仕様として使わないでください。

不明な構文を新しい推測で埋めるより、まず検証の手引きに従って小さな再現を作ります。設計提案と、配布されたバージョンで動く機能を区別して記録してください。