Export Citations
Save this search
Please login to be able to save your searches and receive alerts for new content matching your search criteria.
- research-articleOctober 2024
Lexical Effect Handlers, Directly
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue OOPSLA2Article No.: 330, Pages 1670–1698https://doi.org/10.1145/3689770Lexically scoping effect handlers is a language-design idea that equips algebraic effects with a modular semantics: it enables local-reasoning principles without giving up on the control-flow expressiveness that makes effect handlers powerful. However, ...
Formal reasoning about layered monadic interpreters
Proceedings of the ACM on Programming Languages (PACMPL), Volume 6, Issue ICFPArticle No.: 99, Pages 254–282https://doi.org/10.1145/3547630Monadic computations built by interpreting, or handling, operations of a free monad are a compelling formalism for modeling language semantics and defining the behaviors of effectful systems. The resulting layered semantics offer the promise of modular ...
- research-articleDecember 2021
- research-articleNovember 2021
An Extended Account of Trace-relating Compiler Correctness and Secure Compilation
- Carmine Abate,
- Roberto Blanco,
- Ştefan Ciobâcă,
- Adrien Durier,
- Deepak Garg,
- Cătălin Hriţcu,
- Marco Patrignani,
- Éric Tanter,
- Jérémy Thibault
ACM Transactions on Programming Languages and Systems (TOPLAS), Volume 43, Issue 4Article No.: 14, Pages 1–48https://doi.org/10.1145/3460860Compiler correctness, in its simplest form, is defined as the inclusion of the set of traces of the compiled program in the set of traces of the original program. This is equivalent to the preservation of all trace properties. Here, traces collect, for ...
Compiling with continuations, correctly
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue OOPSLAArticle No.: 114, Pages 1–29https://doi.org/10.1145/3485491In this paper we present a novel simulation relation for proving correctness of program transformations that combines syntactic simulations and logical relations. In particular, we establish a new kind of simulation diagram that uses a small-step or big-...
Deriving efficient program transformations from rewrite rules
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue ICFPArticle No.: 74, Pages 1–29https://doi.org/10.1145/3473579An efficient optimizing compiler can perform many cascading rewrites in a single pass, using auxiliary data structures such as variable binding maps, delayed substitutions, and occurrence counts. Such optimizers often perform transformations according to ...
Interaction trees: representing recursive and impure programs in Coq
- Li-yao Xia,
- Yannick Zakowski,
- Paul He,
- Chung-Kil Hur,
- Gregory Malecha,
- Benjamin C. Pierce,
- Steve Zdancewic
Proceedings of the ACM on Programming Languages (PACMPL), Volume 4, Issue POPLArticle No.: 51, Pages 1–32https://doi.org/10.1145/3371119Interaction trees (ITrees) are a general-purpose data structure for representing the behaviors of recursive programs that interact with their environments. A coinductive variant of “free monads,” ITrees are built out of uninterpreted events and their ...
Closure conversion is safe for space
Proceedings of the ACM on Programming Languages (PACMPL), Volume 3, Issue ICFPArticle No.: 83, Pages 1–29https://doi.org/10.1145/3341687We formally prove that closure conversion with flat environments for CPS lambda calculus is correct (preserves semantics) and safe for time and space, meaning that produced code preserves the time and space required for the execution of the source ...
- research-articleDecember 2017
Correctness of speculative optimizations with dynamic deoptimization
Proceedings of the ACM on Programming Languages (PACMPL), Volume 2, Issue POPLArticle No.: 49, Pages 1–28https://doi.org/10.1145/3158137High-performance dynamic language implementations make heavy use of speculative optimizations to achieve speeds close to statically compiled languages. These optimizations are typically performed by a just-in-time compiler that generates code under a set ...
- research-articleJanuary 2016
Axiomatic semantics for compiler verification
CPP 2016: Proceedings of the 5th ACM SIGPLAN Conference on Certified Programs and ProofsPages 188–196https://doi.org/10.1145/2854065.2854083Based on constructive type theory, we study two idealized imperative languages GC and IC and verify the correctness of a compiler from GC to IC. GC is a guarded command language with underspecified execution order defined with an axiomatic semantics. ...
- research-articleJanuary 2015
Compositional CompCert
POPL '15: Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming LanguagesPages 275–287https://doi.org/10.1145/2676726.2676985This paper reports on the development of Compositional CompCert, the first verified separate compiler for C.
Specifying and proving separate compilation for C is made challenging by the coincidence of: compiler optimizations, such as register spilling, ...
Also Published in:
ACM SIGPLAN Notices: Volume 50 Issue 1 - ArticleOctober 2011
Lazy generation of canonical test programs
IFL'11: Proceedings of the 23rd international conference on Implementation and Application of Functional LanguagesPages 69–84https://doi.org/10.1007/978-3-642-34407-7_5Property-based testing can be a highly effective form of lightweight verification, but it relies critically on the method used to generate test cases. If we wish to test properties of compilers and related tools we need a generator for source programs ...
- research-articleJanuary 2011
The essence of compiling with traces
POPL '11: Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languagesPages 563–574https://doi.org/10.1145/1926385.1926450The technique of trace-based just-in-time compilation was introduced by Bala et al. and was further developed by Gal et al. It currently enjoys success in Mozilla Firefox's JavaScript engine. A trace-based JIT compiler leverages run-time profiling to ...
Also Published in:
ACM SIGPLAN Notices: Volume 46 Issue 1 - ArticleJanuary 2008
On compiling structured interactive programs with registers and voices
SOFSEM'08: Proceedings of the 34th conference on Current trends in theory and practice of computer sciencePages 259–270A model (consisting of rv-systems), a core programming language (for developing rv-programs), several specification and analysis techniques appropriate for modeling, programming and reasoning about interactive computing systems have been recently ...
- ArticleJune 2003
Static reasoning about programs and queries
PCK50: Proceedings of the Paris C. Kanellakis memorial workshop on Principles of computing & knowledge: Paris C. Kanellakis memorial workshop on the occasion of his 50th birthdayPages 28–34https://doi.org/10.1145/778348.778354In this paper, I survey three projects that are loosely related by the aim to statically understand important properties of a computation. First I describe an extension to mainstream programming languages that solves some common expressiveness ...
- articleJune 2002
Correctness of Java Card method lookup via logical relations
Theoretical Computer Science (TCSC), Volume 283, Issue 2Pages 305–331https://doi.org/10.1016/S0304-3975(01)00138-4This article presents a formalisation of the bytecode optimisation of Sun's Java Card language from the class file to CAP file format as a set of constraints between the two formats, and defines and proves its correctness. Java Card bytecode is ...
- research-articleMay 1983
The Equivalence of Two Semantic Definitions: A Case Study in LCF
We present a case study in LCF of the equivalence of two semantic definitions for a small language. The language contains recursive and nonrecursive procedure declarations, and static binding of variables is intended. A standard semantics is proved ...