Revisiting Parametricity: Inductives and Uniformity of Propositions
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.
- Publication:
-
arXiv e-prints
- Pub Date:
- May 2017
- DOI:
- 10.48550/arXiv.1705.01163
- arXiv:
- arXiv:1705.01163
- Bibcode:
- 2017arXiv170501163A
- Keywords:
-
- Computer Science - Logic in Computer Science
- E-Print:
- Addressed ICFP2017 reviews: better structure (lemmas, sections). correctness of the ISOREL translation. discussion of the necessity of assumptions. new names: weak and strong ISOREL translation. statements of theorems generated by the translations. clarification about the use of axioms, comparison with JMeq. more related work and precise comparison with HoTT