Computer Science ETDs
Publication Date
Summer 5-13-2019
Abstract
Call-by-need semantics formalize the wisdom that work should be done at most once. It frees programmers to focus more on the correctness of their code, and less on the operational details. Because of this property, programmers of lazy functional languages rely heavily on their compiler to both preserve correctness and generate high-performance code for high level abstractions. In this dissertation I present a novel technique for compiling call-by-need semantics by using shared environments to share results of computation. I show how the approach enables a compiler that generates high-performance code, while staying simple enough to lend itself to formal reasoning. The dissertation is divided into three main contributions. First, I present an abstract machine, the \ce machine, which formalizes the approach. Second, I show that it can be implemented as a native code compiler with encouraging performance results. Finally, I present a verified compiler, implemented in the Coq proof assistant, demonstrating how the simplicity of the approach enables formal verification.
Language
English
Keywords
compiler, verification, call-by-need
Document Type
Dissertation
Degree Name
Computer Science
Level of Degree
Doctoral
Department Name
Department of Computer Science
First Committee Member (Chair)
Darko Stefanovic
Second Committee Member
Stephanie Forrest
Third Committee Member
Patrick Bridges
Fourth Committee Member
Kei Davis
Fifth Committee Member
Stephen L. Olivier
Recommended Citation
Stelle, George W.. "Shared-Environment Call-by-Need." (2019). https://digitalrepository.unm.edu/cs_etds/99