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-articleJanuary 2025
A Dependent Type Theory for Meta-programming with Intensional Analysis
Proceedings of the ACM on Programming Languages (PACMPL), Volume 9, Issue POPLArticle No.: 15, Pages 416–445https://doi.org/10.1145/3704851In this paper, we introduce DeLaM, a dependent layered modal type theory which enables meta-programming in Martin-Löf type theory (MLTT) with recursion principles on open code. DeLaM includes three layers: the layer of static syntax objects of MLTT ...
- research-articleNovember 2024
A Logical Approach to Type Soundness
Journal of the ACM (JACM), Volume 71, Issue 6Article No.: 40, Pages 1–75https://doi.org/10.1145/3676954Type soundness, which asserts that “well-typed programs cannot go wrong,” is widely viewed as the canonical theorem one must prove to establish that a type system is doing its job. It is commonly proved using the so-called syntactic approach (also known ...
- research-articleOctober 2024
Realistic Realizability: Specifying ABIs You Can Count On
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue OOPSLA2Article No.: 315, Pages 1249–1278https://doi.org/10.1145/3689755The Application Binary Interface (ABI) for a language defines the interoperability rules for its target platforms, including data layout and calling conventions, such that compliance with the rules ensures “safe” execution and perhaps certain resource ...
- research-articleApril 2024
Gradually Typed Languages Should Be Vigilant!
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue OOPSLA1Article No.: 125, Pages 864–892https://doi.org/10.1145/3649842In gradual typing, different languages perform different dynamic type checks for the same program even though the languages have the same static type system. This raises the question of whether, given a gradually typed language, the combination of the ...
- research-articleJanuary 2024
Internal Parametricity, without an Interval
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue POPLArticle No.: 78, Pages 2340–2369https://doi.org/10.1145/3632920Parametricity is a property of the syntax of type theory implying, e.g., that there is only one function having the type of the polymorphic identity function. Parametricity is usually proven externally, and does not hold internally. Internalising it is ...
-
The Logical Essence of Well-Bracketed Control Flow
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue POPLArticle No.: 20, Pages 575–603https://doi.org/10.1145/3632862A program is said to be well-bracketed if every called function must return before its caller can resume execution. This is often the case. Well-bracketedness has been captured semantically as a condition on strategies in fully abstract games models and ...
Modular Denotational Semantics for Effects with Guarded Interaction Trees
Proceedings of the ACM on Programming Languages (PACMPL), Volume 8, Issue POPLArticle No.: 12, Pages 332–361https://doi.org/10.1145/3632854We present guarded interaction trees — a structure and a fully formalized framework for representing higher-order computations with higher-order effects in Coq, inspired by domain theory and the recently proposed interaction trees. We also present an ...
- research-articleAugust 2023
Semantic Encapsulation using Linking Types
TyDe 2023: Proceedings of the 8th ACM SIGPLAN International Workshop on Type-Driven DevelopmentPages 14–28https://doi.org/10.1145/3609027.3609405Interoperability pervades nearly all mainstream language implementations, as most systems leverage subcomponents written in different languages. And yet, such linking can expose a language to foreign behaviors that are internally inexpressible, which ...
- research-articleApril 2023
Compositional Security Definitions for Higher-Order Where Declassification
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue OOPSLA1Article No.: 89, Pages 406–433https://doi.org/10.1145/3586041To ensure programs do not leak private data, we often want to be able to provide formal guarantees ensuring such data is handled correctly. Often, we cannot keep such data secret entirely; instead programmers specify how private data may be declassified. ...
- research-articleJanuary 2023
ADEV: Sound Automatic Differentiation of Expected Values of Probabilistic Programs
Proceedings of the ACM on Programming Languages (PACMPL), Volume 7, Issue POPLArticle No.: 5, Pages 121–153https://doi.org/10.1145/3571198Optimizing the expected values of probabilistic processes is a central problem in computer science and its applications, arising in fields ranging from artificial intelligence to operations research to statistical computing. Unfortunately, automatic ...
Verified symbolic execution with Kripke specification monads (and no meta-programming)
Proceedings of the ACM on Programming Languages (PACMPL), Volume 6, Issue ICFPArticle No.: 97, Pages 194–224https://doi.org/10.1145/3547628Verifying soundness of symbolic execution-based program verifiers is a significant challenge. This is especially true if the resulting tool needs to be usable outside of the proof assistant, in which case we cannot rely on shallowly embedded assertion ...
- research-articleAugust 2022
Concrete categories and higher-order recursion: With applications including probability, differentiability, and full abstraction
LICS '22: Proceedings of the 37th Annual ACM/IEEE Symposium on Logic in Computer ScienceArticle No.: 57, Pages 1–14https://doi.org/10.1145/3531130.3533370We study concrete sheaf models for a call-by-value higher-order language with recursion. Our family of sheaf models is a generalization of many examples from the literature, such as models for probabilistic and differentiable programming, and fully ...
- research-articleJune 2022
Semantic soundness for language interoperability
PLDI 2022: Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and ImplementationPages 609–624https://doi.org/10.1145/3519939.3523703Programs are rarely implemented in a single language, and thus questions of type soundness should address not only the semantics of a single language, but how it interacts with others. Even between type-safe languages, disparate features can frustrate ...
- research-articleJanuary 2022
Reasoning about “reasoning about reasoning”: semantics and contextual equivalence for probabilistic programs with nested queries and recursion
Proceedings of the ACM on Programming Languages (PACMPL), Volume 6, Issue POPLArticle No.: 16, Pages 1–28https://doi.org/10.1145/3498677Metareasoning can be achieved in probabilistic programming languages (PPLs) using agent models that recursively nest inference queries inside inference queries. However, the semantics of this powerful, reflection-like language feature has defied an ...
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-...
- research-articleOctober 2021
Logical Relations as Types: Proof-Relevant Parametricity for Program Modules
Journal of the ACM (JACM), Volume 68, Issue 6Article No.: 41, Pages 1–47https://doi.org/10.1145/3474834The theory of program modules is of interest to language designers not only for its practical importance to programming, but also because it lies at the nexus of three fundamental concerns in language design: the phase distinction, computational effects, ...
Compositional optimizations for CertiCoq
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue ICFPArticle No.: 86, Pages 1–30https://doi.org/10.1145/3473591Compositional compiler verification is a difficult problem that focuses on separate compilation of program components with possibly different verified compilers. Logical relations are widely used in proving correctness of program transformations in ...
- research-articleJanuary 2021
Transfinite step-indexing for termination
Proceedings of the ACM on Programming Languages (PACMPL), Volume 5, Issue POPLArticle No.: 13, Pages 1–29https://doi.org/10.1145/3434294Step-indexed logical relations are an extremely useful technique for building operational-semantics-based models and program logics for realistic, richly-typed programming languages. They have proven to be indispensable for modeling features like higher-...
Scala step-by-step: soundness for DOT with step-indexed logical relations in Iris
Proceedings of the ACM on Programming Languages (PACMPL), Volume 4, Issue ICFPArticle No.: 114, Pages 1–29https://doi.org/10.1145/3408996The metatheory of Scala’s core type system—the Dependent Object Types (DOT) calculus—is hard to extend, like the metatheory of other type systems combining subtyping and dependent types. Soundness of important Scala features therefore remains an open ...
- research-articleJanuary 2020
On the expressiveness and semantics of information flow types
Journal of Computer Security (JOCS), Volume 28, Issue 1Pages 129–156https://doi.org/10.3233/JCS-191382Information Flow Control (IFC) is a form of dependence analysis that tracks and prohibits dependence of public outputs on secret inputs. Such a dependence analysis is often carried out using a type system. IFC type systems can track dependence (via ...