Affiliation:
1. Carnegie Mellon University & Universitá di Bologna, Pittsburgh, USA
2. University of Buenos Aires & CONICET, Buenos Aires, Argentina
3. CNRS & Università Paris, Villetaneuse, France
Abstract
It is well-known that many environment-based abstract machines can be seen as strategies in lambda calculi with explicit substitutions (ES). Recently, graphical syntaxes and linear logic led to the linear substitution calculus (LSC), a new approach to ES that is halfway between small-step calculi and traditional calculi with ES. This paper studies the relationship between the LSC and environment-based abstract machines. While traditional calculi with ES simulate abstract machines, the LSC rather distills them: some transitions are simulated while others vanish, as they map to a notion of structural congruence. The distillation process unveils that abstract machines in fact implement weak linear head reduction, a notion of evaluation having a central role in the theory of linear logic. We show that such a pattern applies uniformly in call-by-name, call-by-value, and call-by-need, catching many machines in the literature. We start by distilling the KAM, the CEK, and a sketch of the ZINC, and then provide simplified versions of the SECD, the lazy KAM, and Sestoft's machine. Along the way we also introduce some new machines with global environments. Moreover, we show that distillation preserves the time complexity of the executions, i.e. the LSC is a complexity-preserving abstraction of abstract machines.
Funder
Agence Nationale de la Recherche
Qatar Foundation
ECOS Sud
French-Argentinian Laboratory in Computer Science
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Cited by
9 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. The Spirit of Node Replication;Lecture Notes in Computer Science;2021
2. Pattern Matching and Fixed Points;Proceedings of the 20th International Symposium on Principles and Practice of Declarative Programming;2018-09-03
3. On the value of variables;Information and Computation;2017-08
4. Implementing Open Call-by-Value;Fundamentals of Software Engineering;2017
5. The Bang Calculus;Proceedings of the 18th International Symposium on Principles and Practice of Declarative Programming;2016-09-05