[論文レビュー] Dependently Typed Folds for Nested Data Types
この論文は、依存型付き言語におけるwell-founded再帰を用いて全関数的で形式的に検証可能なプログラミングを可能にする、ネストされたデータ型の依存型付きfoldを導入する。このアプローチは、従来のfoldをネストされた型に一般化し、不正則な公理や証明の無関心性に依存せずに形式的検証を可能にする帰納法の原則を提供する。
We present an approach to develop folds for nested data types using dependent types. We call such folds $ extit{dependently typed folds}$, they have the following properties. (1) Dependently typed folds are defined by well-founded recursion and they can be defined in a total dependently typed language. (2) Dependently typed folds do not depend on maps, map functions and many terminating functions can be defined using dependently typed folds. (3) The induction principles for nested data types follow from the definitions of dependently typed folds and the programs defined by dependently typed folds can be formally verified. (4) Dependently typed folds exist for any nested data types and they can be specialized to the traditional $ extit{higher-order folds}$. Using various of examples, we show how to program and reason about dependently typed folds. We also show how to obtain dependently typed folds in general and how to specialize them to the corresponding higher-order folds.
研究の動機と目的
- 規則的なデータ型のfoldが持つ望ましい性質をネストされたデータ型が継承しないという問題に対処すること。
- 全関数的で依存型付き言語において、well-founded再帰と終了保証をサポートするfoldの定義手法を開発すること。
- ネストされたデータ型を含むプログラムの形式的検証を可能にするために、これらのfoldから帰納法の原則を導出すること。
- 依存型付きfoldが一般再帰に依存せずに、従来の高階foldやmapに類似した関数を再構築できることを示すこと。
- 不正則なSetや証明の無関心性に依存せずに、標準的な全関数的依存型付き言語の特徴のみを用いてネストされたデータ型について形式的推論の基盤を提供すること。
提案手法
- ネストされたデータ型におけるwell-founded再帰を用いて依存型付きfoldを定義し、終了性と全関数性を保証する。
- 大規模な除去を用いて値のパターンマッチによって型を計算し、データレベルの再帰から型レベルの計算を可能にする。
- foldの型を性質依存型(p : T → Set)をサポートするように一般化し、形式的検証のための帰納法の原則を導出する。
- ネストされた構造を再帰的に処理する関数としてfoldを構築し、再帰呼び出しをマップに類似した変換を介して部分構造に適用する。
- 適切に型レベルパラメータをインスタンス化することで、依存型付きfoldを標準的な高階foldに特殊化する。
- Agdaの型システムを用いてfoldとその帰納法の原則を符号化し、等価性の証明(例:mapの実装同士の等価性)が反射と整合性を用いて構築可能であることを示す。
実験結果
リサーチクエスチョン
- RQ1任意のネストされたデータ型に対して、全関数的かつwell-foundedな方法で依存型付きfoldを定義できるか?
- RQ2foldの定義から直接的にネストされたデータ型の帰納法の原則を導出できるか?これにより形式的検証が可能になるか?
- RQ3依存型付きfoldを特殊化することで、従来の高階foldやmap関数を再構築できるか?
- RQ4依存型付きfoldと一般化されたMendlerスタイルイテレーターやLNMItのような既存の形式的体系との関係は何か?
- RQ5依存型付きfoldから導出された帰納法の原則を用いて、プログラムの等価性(例:2つのmap実装の等価性)の形式的証明を構築できるか?
主な発見
- 依存型付きfoldはwell-founded再帰を用いて定義され、Agdaのような依存型付き言語において全関数的である。
- foldの構築は自然にネストされたデータ型の帰納法の原則を生じさせ、プログラムの等価性などの性質の形式的検証を可能にする。
- ネストされたデータ型のmap関数は依存型付きfoldを用いて定義でき、その正当性は導出された帰納法の原則を用いて形式的に証明できる。
- 従来のLNMItのようなシステムとは異なり、不正則なSetや証明の無関心性に依存せず、標準的なAgdaとより整合性の高い基盤を提供する。
- 依存型付きfoldは適切に特殊化することで、標準的な高階foldを再構築でき、新しいアプローチが既存の技術を一般化していることを示している。
- この方法は、foldの型レベル構造を介して、Church符号化やインデックス付き表現のネストされたデータ型をサポートする。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。