Affiliation:
1. Northeastern University, USA
2. Ochanomizu University, Japan
Abstract
Dependently typed languages such as Coq are used to specify and prove functional correctness of source programs, but what we ultimately need are guarantees about correctness of compiled code. By preserving dependent types through each compiler pass, we could preserve source-level specifications and correctness proofs into the generated target-language programs. Unfortunately, type-preserving compilation of dependent types is hard. In 2002, Barthe and Uustalu showed that type-preserving CPS is
not possible
for languages such as Coq. Specifically, they showed that for strong dependent pairs (Σ types), the standard typed call-by-name CPS is
not type preserving
. They further proved that for dependent case analysis on sums, a class of typed CPS translations—including the standard translation—is
not possible
. In 2016, Morrisett noticed a similar problem with the standard call-by-value CPS translation for dependent functions (Π types). In essence, the problem is that the standard typed CPS translation by double-negation, in which computations are assigned types of the form (
A
→ ⊥) → ⊥, disrupts the term/type equivalence that is used during type checking in a dependently typed language.
In this paper, we prove that type-preserving CPS translation for dependently typed languages is
not
not possible. We develop both call-by-name and call-by-value CPS translations from the Calculus of Constructions with both Π and Σ types (CC) to a dependently typed target language, and prove type preservation and compiler correctness of each translation. Our target language is CC extended with an additional equivalence rule and an additional typing rule, which we prove consistent by giving a model in the extensional Calculus of Constructions. Our key observation is that we can use a CPS translation that employs
answer-type polymorphism
, where CPS-translated computations have type ∀ α. (
A
→ α) → α. This type justifies, by a
free theorem
, the new equality rule in our target language and allows us to recover the term/type equivalences that CPS translation disrupts. Finally, we conjecture that our translation extends to dependent case analysis on sums, despite the impossibility result, and provide a proof sketch.
Funder
National Science Foundation
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Cited by
13 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. On the Operational Theory of the CPS-Calculus: Towards a Theoretical Foundation for IRs;Proceedings of the ACM on Programming Languages;2024-08-15
2. An Intrinsically Typed Compiler for Algebraic Effect Handlers;Proceedings of the 2024 ACM SIGPLAN International Workshop on Partial Evaluation and Program Manipulation;2024-01-11
3. Defunctionalization with Dependent Types;Proceedings of the ACM on Programming Languages;2023-06-06
4. ANF preserves dependent types up to extensional equality;Journal of Functional Programming;2022
5. Compiling with continuations, correctly;Proceedings of the ACM on Programming Languages;2021-10-20