Date(s) - 25/02/2016
11 h 00 min - 12 h 00 min
Catégories Pas de Catégories
The elegant theory of the call-by-value lambda-calculus relies on weak evaluation and closed terms, that are natural hypotheses in the study of programming languages. To model proof assistants, however, strong evaluation and open terms are required, and it is well known that the operational semantics of call-by-value becomes problematic in this case, as first pointed out by Paolini and Ronchi della Rocca. Here we study the intermediate setting—that we call Open Call-by-Value—of weak evaluation with open terms, on top of which Grégoire and Leroy designed the abstract machine of Coq. Various calculi for Open Call-by-Value already exist, coming from logical, semantical, or implementative points of view, each one with its pros and cons. This paper presents a detailed comparative study of their operational semantics. First, we show that all calculi are equivalent from a termination point of view, justifying the slogan Open Call-by-Value. Second, we compare their equational theories. Third, we present a detailed quantitative analysis of the time cost model. Four, we introduce a new simple abstract machine, and prove it a reasonable implementation of Open Call-by-Value with respect to its cost model. Along the way, there emerges a sharp deconstruction of call-by-value evaluation and of the complexity of its implementations.
Joint work with Beniamino Accattoli.