Skip to main content
QUICK REVIEW

[論文レビュー] Revisiting Parametricity: Inductives and Uniformity of Propositions

Abhishek Anand, Greg Morrisett|arXiv (Cornell University)|May 2, 2017
Logic, programming, and type systems参考文献 17被引用数 8
ひとこと要約

この論文は、同型のインスタンスにおいて多相的命題が一様に関連付けられるように保証する、Coqの新しいパラメトリシティ翻訳を提示する。これにより論理的に同値な命題と関連する証明が得られ、従来の手法とは異なり、同型性の仮定を要求することで一様性を強制し、コンパイラ正当性や依存型検証におけるより強力なフリー定理を可能にする。

ABSTRACT

Reynold's parametricity theory captures the property that parametrically polymorphic functions behave uniformly: they produce related results on related instantiations. In dependently-typed programming languages, such relations and uniformity proofs can be expressed internally, and generated as a program translation. We present a new parametricity translation for a significant fragment of Coq. Previous translations of parametrically polymorphic propositions allowed non-uniformity. For example, on related instantiations, a function may return propositions that are logically inequivalent (e.g. True and False). We show that uniformity of polymorphic propositions is not achievable in general. Nevertheless, our translation produces proofs that the two propositions are logically equivalent and also that any two proofs of those propositions are related. This is achieved at the cost of potentially requiring more assumptions on the instantiations, requiring them to be isomorphic in the worst case. Our translation augments the previous one for Coq by carrying and compositionally building extra proofs about parametricity relations. It is made easier by a new method for translating inductive types and pattern matching. The new method builds upon and generalizes previous such translations for dependently-typed programming languages. Using reification and reflection, we have implemented our translation as Coq programs. We obtain several stronger free theorems applicable to an ongoing compiler-correctness project. Previously, proofs of some of these theorems took several hours to finish.

研究の動機と目的

  • 既存のパラメトリシティ翻訳における制限、すなわち多相的命題が同型のインスタンスにおいて一様でない関係(例:真と偽の論理的に同値でない命題への写像)となる可能性を解消すること。
  • 同型のインスタンスにおいて論理的に同値な命題と関連する証明を保証する、Coqネイティブなパラメトリシティ翻訳の開発。
  • 依存型付きプログラムにおける帰納型とパターンマッチ構文を扱えるように、従来の翻訳を拡張すること。
  • 観察的同値性のような決定不能な関係の検証を可能にするために、パラメトリシティ定理が意味的かつ有用なまま保たれることを保証すること。
  • フリー定理の完全に展開されたCoq証明を生成する実用的でオープンソースの実装を提供し、手作業による証明作業を削減すること。

提案手法

  • KellerとLasson(2012)の既存のパラメトリシティ翻訳に、同型のインスタンスにおける命題間の論理的同値性と証明関係の構成的証明を拡張する。
  • 2つの翻訳を導入する:同型性の仮定を必要とする弱いバージョン(\llbracket \rrbracket_{iso})と、可能な限り仮定を緩和する強いバージョン(\llbracket \rrbracket_{sIso})。
  • 帰納型とパターンマッチの翻訳を一般化し、完全な構成的性質を保つ新しい手法を開発する。
  • 再帰的表現(reification)と反映(reflection)を用いて、翻訳を実行可能であるCoqプログラムとして実装し、自動証明生成を可能にする。
  • パラメトリシティ関係におけるTotalおよびOneToOneの性質を強制し、関連するインスタンス間で一貫した振る舞いを保証する。
  • Coqの依存型システムを活用して、パラメトリシティ関係を内部的に表現・検証し、外部のメタ理論に依存しないようにする。

実験結果

リサーチクエスチョン

  • RQ1Coqにおけるパラメトリシティ翻訳は、多相的命題が同型のインスタンスにおいて関連付けられるだけでなく、論理的に同値であることを保証できるか?
  • RQ2依存型付き言語(Coqなど)において、多相的命題の一様性を強制するために必要な仮定は何か?
  • RQ3帰納型とパターンマッチを、パラメトリシティを保持し、構成的推論を可能にする方法でどのように翻訳できるか?
  • RQ4翻訳を実行可能であるCoqコードとして実装し、完全に展開された証明を自動生成できるか?
  • RQ5翻訳における同型性の仮定が、その適用範囲を制限するが、それでも検証に有用なフリー定理を生成できる限界はどこか?

主な発見

  • 提案された翻訳は、パラメトリシティ的に関連付けられた命題が論理的に同値であることを保証し、従来の翻訳が非一様な結果を許容していたという主要な制限を解消する。
  • 翻訳は、命題同士を関連付けるだけでなく、それらの命題の任意の2つの証明間の関係も保証するCoq証明を生成する。これにより型安全性と検証の能力が向上する。
  • 観察的同値性のような決定不能な関係に対しても、翻訳は意味的かつ有用なフリー定理を生成する。これは従来のアプローチでは達成できなかった。
  • 実装は https://github.com/aa755/paramcoq-iff で公開されており、かつて数時間もかかって手作業で書かれた証明の自動生成を実現している。
  • 強力な翻訳(\llbracket \rrbracket_{sIso})は、一部のケースで同型性の仮定の必要性を軽減しており、すべてのインスタンスで同型性を要求しなくても一様性を達成できることを示している。
  • この手法により、コンパイラ正当性プロジェクトにおける自動化が著しく進み、手作業で書かれた証明の代わりに検証済みで機械的に生成された証明が利用可能になった。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。