Defining substitution for a language with binders like the simply typed $λ$-calculus requires repetition, defining substitution and renaming separately. To verify the categorical properties of this calculus, we must repeat the same argument many times. We present a lightweight method that avoids repetition and that gives rise to a simply typed category with families (CwF) isomorphic to the initial simply typed CwF. Our paper is a literate Agda script.
論文ID : 2510.12304タイトル : Substitution Without Copy and Paste著者 : Thorsten Altenkirch (ノッティンガム大学)、Nathaniel Burke (インペリアル・カレッジ・ロンドン)、Philip Wadler (エディンバラ大学およびInput Output)分類 : cs.LO (計算機科学における論理)発表会議 : LFMTP 2025 (論理フレームワークとメタ言語に関する国際ワークショップ:理論と実践)論文リンク : https://arxiv.org/abs/2510.12304 バインダーを含む言語(例えば単純型λ計算)の代入操作を定義する際、従来は代入操作と変数名変更操作を別々に定義する必要があり、大量の重複コードが生じていた。当該計算の圏論的性質を検証するには、同じ論証を何度も繰り返す必要があった。本論文は、この重複を回避するための軽量な方法を提案し、初期単純型圏族(CwF)と同型である単純型CwFを構築した。論文はAgdaの文学的プログラミングスクリプトの形式で提示されている。
機械化証明においてバインダーを含む言語の代入操作を定義する際、従来の方法では以下が必要であった:
別々の定義 :変数の名前変更(∆ ⊩v Γ)と項の代入(∆ ⊩ Γ)重複実装 :4種類の異なる代入操作:変数から変数へ、変数から項へ、項から変数へ、項から項へ重複証明 :すべての組み合わせに対する関手律の証明により、8つの異なる証明ケースが生じるソフトウェア工学原則 :コピー・ペーストコードの回避。これは形式化証明において特に重要である理論的意義 :依存型理論における代入定義の基礎を提供する実用的応用 :依存型の一貫性問題を高階圏で解釈する際の応用コード重複 :変数と項に対して類似の操作を別々に定義する必要がある証明重複 :圏論的律の証明がすべての組み合わせをカバーする必要があり、大量の重複論証が生じる保守困難 :1箇所の修正が複数の類似定義に同期更新を要求する統一フレームワーク :Sort パラメータに基づく統一代入操作を提案し、変数と項の処理を単一定義に統合終了性保証 :Agdaの構造的再帰と辞書式順序終了チェックを巧妙に利用し、定義の良基性を確保圏論的検証 :再帰的定義の代入が単純型CwFのすべての律を満たすことを証明初期性結果 :再帰的代入構文と初期CwF間の同型関係を確立正規化定理 :λ項の代入の標準形式が明示的代入なしのλ項に対応することを示す以下を満たす統一代入システムを構築する:
入力 :項/変数と代入/名前変更の任意の組み合わせ出力 :対応する型の代入結果制約 :型安全性と終了性を保持するdata Sort : Set where
V : Sort
T>V : (s : Sort) → IsV s → Sort
data IsV : Sort → Set where
isV : IsV V
pattern T = T>V V isV
この定義は巧妙にVを構造的にTより小さくし、Agda終了チェックの要件を満たす。
data _ ⊢ [_]_ : Con → Sort → Ty → Set where
zero : Γ ▷ A ⊢ [ V ] A
suc : Γ ⊢ [ V ] A → (B : Ty) → Γ ▷ B ⊢ [ V ] A
`_ : Γ ⊢ [ V ] A → Γ ⊢ [ T ] A
_ ·_ : Γ ⊢ [ T ] A ⇒ B → Γ ⊢ [ T ] A → Γ ⊢ [ T ] B
λ_ : Γ ▷ A ⊢ [ T ] B → Γ ⊢ [ T ] A ⇒ B
ここでΓ ⊢ [ V ] Aは変数に対応し、Γ ⊢ [ T ] Aは項に対応する。
data _ ⊑ _ : Sort → Sort → Set where
rfl : s ⊑ s
v⊑t : V ⊑ T
_⊔_ : Sort → Sort → Sort
V ⊔ r = r
T ⊔ r = T
_[_] : Γ ⊢ [ q ] A → ∆ ⊩ [ r ] Γ → ∆ ⊢ [ q ⊔ r ] A
重要な洞察:結果のsortは入力sortsの最小上界であり、両方の入力が変数/名前変更である場合にのみ結果が変数となることを保証する。
Sort多相の恒等関数を通じて終了性問題を解決:
id-poly : Γ ⊩ [ q ] Γ
id : Γ ⊩ [ V ] Γ
id = id-poly {q = V}
構造化再帰 :Sortの構造順序と辞書式順序測度を利用し終了性を確保パラメータ多相 :Sort パラメータを通じて変数と項の異なるケースを統一処理格理論の応用 :⊔操作を使用して型昇格を優雅に処理書き換え規則 :Agdaの REWRITE 機能を利用して等式推理を簡略化構造的帰納法により証明。重要なのは変数ケースにおける自然性補題である。
[◦] : x [ xs ◦ ys ] ≡ x [ xs ] [ ys ]
左恒等律と相互再帰的に証明する必要があり、圏構造の内在的な関連性を示す。
論文は再帰的代入構文が単純型CwFのすべての公理を満たすことを証明した:
圏構造 :文脈と代入が圏を構成する前層構造 :各型が前層に対応する終端対象 :空文脈文脈拡張 :圏の積に類似した構造両方向のマッピングを確立:
正規化 norm : Γ ⊢I A → Γ ⊢ [ T ] A埋め込み ⌜_⌝ : Γ ⊢ [ q ] A → Γ ⊢I Aそしてそれらが相互逆写像であることを証明:
安定性 norm ⌜ t ⌝ ≡ t完全性 ⌜ norm t ⌝ ≡ t帰納-帰納型 :Sort と IsV の相互定義辞書式順序終了 :複雑な再帰パターンをサポート書き換え規則 :等式推理の自動化パターン同義語 :複雑な型の使用を簡略化呼び出しグラフ分析を通じて終了性を証明。各関数の測度:
_[_]:(r, t)id:(r, Γ)_+_:(r, σ)suc[_]:(q)すべてのループにおいて、Sort が厳密に減少するか、Sort が保持されて他のパラメータが減少する。
Kit 方法 18,5 :名前変更と代入の共通パターンを kit で抽象化するが、依然として証明の重複が必要単子的視点 6,9 :代入を変数から項への関数として符号化するが、依存型への拡張が困難自動化ツール 21,22 :Autosubst ライブラリが代入補題を自動生成するが、基盤に依然として重複がある簡潔性 :辞書式再帰をサポートする言語ではより単純統一性 :単一定義がすべてのケースをカバー拡張性 :依存型の処理の基礎を提供方法論的貢献 :Sort パラメータ化を通じて代入操作を優雅に統一できることを証明理論的貢献 :再帰的代入構文の初期性を確立実践的貢献 :重複を回避するための具体的な技術方案を提供Agda 機能への依存 :辞書式順序終了チェックのサポートが必要複雑性の転移 :重複を回避する一方で、Sort システムの複雑性が増加拡張の課題 :依存型への拡張にはさらなる研究が必要依存型への拡張 :方法を完全な依存型理論に適用高階一貫性 :高階圏での応用他の証明支援系への移植 :Lean、Coq などのシステムへの移植技術的革新性 :Sort システムの設計は終了性と統一性の問題を巧妙に解決理論的完全性 :基本定義から初期性までの完全な理論発展実用的価値 :形式化検証における一般的な問題に実用的な解決策を提供表現の明確性 :文学的プログラミングスクリプトとしてコードと解説が良好に統合プラットフォーム依存 :Agda の特定機能に大きく依存し、移植性が限定的複雑度のトレードオフ :重複を回避する一方で、新しい概念的複雑性を導入拡張性の未知性 :より複雑な型システムへの拡張が検証されていない理論的貢献 :型理論の機械化に新しい視点を提供実践的指導 :形式化検証実践者に有用なツールを提供研究への刺激 :依存型理論のさらなる研究の基礎を提供形式化検証 :バインダーを含む言語定義が必要な場合型理論研究 :CwF と初期代数の研究プログラミング言語理論 :λ計算およびその拡張の機械化論文は当該分野の重要な研究を引用しており、以下を含む:
De Bruijn の原始的研究12 McBride の kit 方法18 Allais らの型安全アプローチ5 Autosubst シリーズの研究21,22 相対単子に関連する研究6 これらの引用は、著者が分野の発展を深く理解し、既存研究を十分に調査していることを示している。