Venue. POPL
2026
Normalisation for First-Class Universe Levels danielsson-2026-normalisation
Security Reasoning via Substructural Dependency Tracking gouni-2026-security
An Equational Axiomatization of Dynamic Threads via Algebraic Effects: Presheaves on Finite Relations, Labelled Posets, and Parameterized Algebraic Theories kammar-2026-an
Classical Notions of Computation and the Hasegawa-Thielecke Theorem mangel-2026-classical
From Semantics to Syntax: A Type Theory for Comprehension Categories najmaei-2026-from
Handling Higher-Order Effectful Operations with Judgemental Monadic Laws yang-2026-handling
Probabilistic Concurrent Reasoning in Outcome Logic: Independence, Conditioning, and Invariants zilberstein-2026-probabilistic
2025
Grove: A Bidirectionally Typed Collaborative Structure Editor Calculus adams-2025-grove
Tail Modulo Cons, OCaml, and Relational Separation Logic allain_etal_tmc_2025
Common functional languages incentivize tail-recursive functions, as opposed to general recursive functions that consume stack space and may not scale to large inputs. This distinction occasionally requires writing functions in a tail-recursive style that may be more complex and slower than the natural, non-tail-recursive definition.
This work describes our implementation of the tail modulo constructor (TMC) transformation in the OCaml compiler, an optimization that provides stack-efficiency for a larger class of functions — tail-recursive modulo constructors — which includes in particular the natural definition of List.map and many similar recursive data-constructing functions.
We prove the correctness of this program transformation in a simplified setting — a small untyped calculus — that captures the salient aspects of the OCaml implementation. Our proof is mechanized in the Coq proof assistant, using the Iris base logic. An independent contribution of our work is an extension of the Simuliris approach to define simulation relations that support different calling conventions. To our knowledge, this is the first use of Simuliris to prove the correctness of a compiler transformation.
Fulminate: Testing CN Separation-Logic Specifications in C banerjee-2025-fulminate
A Modal Deconstruction of Löb Induction gratzer-2025-a
Consistency of a Dependent Calculus of Indistinguishability liu-2025-consistency
Finite-Choice Logic Programming martens-2025-finite
Modelling Recursion and Probabilistic Choice in Guarded Type Theory stassen-2025-modelling
CF-GKAT: Efficient Validation of Control-Flow Transformations zhang-2025-cf
A Demonic Outcome Logic for Randomized Nondeterminism zilberstein-2025-a
Denotational Semantics of Gradual Typing using Synthetic Guarded Domain Theory giovannini_ding_new_2025
Gradually typed programming languages, which allow for soundly mixing static and dynamically typed programming styles, present a strong challenge for metatheorists. Even the simplest sound gradually typed languages feature at least recursion and errors, with realistic languages featuring furthermore runtime allocation of memory locations and dynamic type tags. Further, the desired metatheoretic properties of gradually typed languages have become increasingly sophisticated: validity of type-based equational reasoning as well as the relational property known as graduality. Many recent works have tackled verifying these properties, but the resulting mathematical developments are highly repetitive and tedious, with few reusable theorems persisting across different developments.
In this work, we present a new denotational semantics for gradual typing developed using guarded domain theory. Guarded domain theory combines the generality of step-indexed logical relations for modeling advanced programming features with the modularity and reusability of denotational semantics. We demonstrate the feasibility of this approach with a model of a simple gradually typed lambda calculus and prove the validity of beta-eta equality and the graduality theorem for the denotational model. This model should provide the basis for a reusable mathematical theory of gradually typed program semantics. Finally, we have mechanized most of the core theorems of our development in Guarded Cubical Agda, a recent extension of Agda with support for the guarded recursive constructions we use.
2024
Internal Parametricity, without an Interval altenkirch-2024-internal
Polynomial Time and Dependent Types atkey-2024-polynomial
With a Few Square Roots, Quantum Computing Is as Easy as Pi carette-2024-with
Parametric Subtyping for Structural Parametric Polymorphism deyoung-2024-parametric
Generating Well-Typed Terms That Are Not “Useless” frank-2024-generating
Modular Denotational Semantics for Effects with Guarded Interaction Trees frumin-2024-modular
Indexed Types for a Statically Safe WebAssembly geller-2024-indexed
Decalf: A Directed, Effectful Cost-Aware Logical Framework grodin-2024-decalf
Algebraic Effects Meet Hoare Logic in Cubical Agda kidney-2024-algebraic
Internalizing Indistinguishability with Dependent Types liu-2024-internalizing
Shoggoth: A Formal Foundation for Strategic Rewriting qin-2024-shoggoth
The Essence of Generalized Algebraic Data Types sieczkowski-2024-the
The Logical Essence of Well-Bracketed Control Flow timany-2024-the
Trillium: Higher-Order Concurrent and Distributed Separation Logic for Intensional Refinement timany-2024-trillium
Total Type Error Localization and Recovery with Holes zhao-2024-total
2023
An Order-Theoretic Analysis of Universe Polymorphism houfavonia-2023-an
CN: Verifying Systems C Code with Separation-Logic Refinement Types pulte-2023-cn
2022
PRIMA: General and Precise Neural Network Certification via Scalable Convex Hull Approximations mullerPRIMAGeneralPrecise2022
Formal metatheory of second-order abstract syntax fiore-2022-formal
Simuliris: A Separation Logic Framework for Verifying Concurrent Program Optimizations gaher_etal_simuliris_2022
Today’s compilers employ a variety of non-trivial optimizations to achieve good performance. One key trick compilers use to justify transformations of concurrent programs is to assume that the source program has no data races: if it does, they cause the program to have undefined behavior (UB) and give the compiler free rein. However, verifying correctness of optimizations that exploit this assumption is a non-trivial problem. In particular, prior work either has not proven that such optimizations preserve program termination (particularly non-obvious when considering optimizations that move instructions out of loop bodies), or has treated all synchronization operations as external functions (losing the ability to reorder instructions around them).
In this work we present Simuliris, the first simulation technique to establish termination preservation (under a fair scheduler) for a range of concurrent program transformations that exploit UB in the source language. Simuliris is based on the idea of using ownership to reason modularly about the assumptions the compiler makes about programs with well-defined behavior. This brings the benefits of concurrent separation logics to the space of verifying program transformations: we can combine powerful reasoning techniques such as framing and coinduction to perform thread-local proofs of non-trivial concurrent program optimizations. Simuliris is built on a (non-step-indexed) variant of the Coq-based Iris framework, and is thus not tied to a particular language. In addition to demonstrating the effectiveness of Simuliris on standard compiler optimizations involving data race UB, we also instantiate it with Jung et al.’s Stacked Borrows semantics for Rust and generalize their proofs of interesting type-based aliasing optimizations to account for concurrency.
Fully abstract models for effectful λ-calculi via category-theoretic logical relations kammar-2022-fully
Provably correct, asymptotically efficient, higher-order reverse-mode automatic differentiation krawiec-2022-provably
A cost-aware logical framework niu-2022-a
On incorrectness logic and Kleene algebra with top and tests zhang-2022-on
2021
Internalizing representation independence with univalence angiuli-2021-internalizing
Transfinite step-indexing for termination spies-2021-transfinite
egg: Fast and Extensible Equality Saturation willsey-2021-egg
2020
Seminaïve evaluation for a higher-order functional language arntzenius-2019-seminaive
Graduality and Parametricity: Together Again for the First Time new_jamner_ahmed_2020
Parametric polymorphism and gradual typing have proven to be a difficult combination, with no language yet produced that satisfies the fundamental theorems of each: parametricity and graduality. Notably, Toro, Labrada, and Tanter (POPL 2019) conjecture that for any gradual extension of System F that uses dynamic type generation, graduality and parametricity are “simply incompatible”. However, we argue that it is not graduality and parametricity that are incompatible per se, but instead that combining the syntax of System F with dynamic type generation as in previous work necessitates type-directed computation, which we show has been a common source of graduality and parametricity violations in previous work.
We then show that by modifying the syntax of universal and existential types to make the type name generation explicit, we remove the need for type-directed computation, and get a language that satisfies both graduality and parametricity theorems. The language has a simple runtime semantics, which can be explained by translation to a statically typed language where the dynamic type is interpreted as a dynamically extensible sum type. Far from being in conflict, we show that the parametricity theorem follows as a direct corollary of a relational interpretation of the graduality property.
Guarded Kleene algebra with tests: verification of uninterpreted programs in nearly linear time smolka-2019-guarded
2019
Live functional programming with typed holes omar-2019-live
A domain theory for statistical probabilistic programming vakar-2019-a
Gradual Type Theory new_licata_ahmed_2019
Gradually typed languages are designed to support both dynamically typed and statically typed programming styles while preserving the benefits of each. While existing gradual type soundness theorems for these languages aim to show that type-based reasoning is preserved when moving from the fully static setting to a gradual one, these theorems do not imply that correctness of type-based refactorings and optimizations is preserved. Establishing correctness of program transformations is technically difficult, because it requires reasoning about program equivalence, and is often neglected in the metatheory of gradual languages.
In this paper, we propose an axiomatic account of program equivalence in a gradual cast calculus, which we formalize in a logic we call gradual type theory (GTT). Based on Levy’s call-by-push-value, GTT gives an axiomatic account of both call-by-value and call-by-name gradual languages. Based on our axiomatic account we prove many theorems that justify optimizations and refactorings in gradually typed languages. For example, uniqueness principles for gradual type connectives show that if the βη laws hold for a connective, then casts between that connective must be equivalent to the so-called “lazy” cast semantics. Contrapositively, this shows that “eager” cast semantics violates the extensionality of function types. As another example, we show that gradual upcasts are pure functions and, dually, gradual downcasts are strict functions. We show the consistency and applicability of our axiomatic theory by proving that a contract-based implementation using the lazy cast semantics gives a logical relations model of our type theory, where equivalence in GTT implies contextual equivalence of the programs. Since GTT also axiomatizes the dynamic gradual guarantee, our model also establishes this central theorem of gradual typing. The model is parametrized by the implementation of the dynamic types, and so gives a family of implementations that validate type-based optimization and the gradual guarantee.
2018
Synthesizing bijective lenses miltner-2017-synthesizing
Denotational validation of higher-order Bayesian inference scibior-2017-denotational
A logical relation for monadic encapsulation of state: proving contextual equivalences in the presence of runST timany-2017-a
2017
Computational higher-dimensional type theory angiuli-2017-computational
A posteriori environment analysis with Pushdown Delta CFA germane-2017-a
Interactive proofs in higher-order concurrent separation logic krebbers-2017-interactive
Do be do be do lindley-2017-do
Hazelnut: a bidirectionally typed structure editor calculus omar-2017-hazelnut
2016
A theory of effects and resources: adjunction models and polarised calculi curien-2016-a
Pushdown control-flow analysis for free gilray-2016-pushdown
Decidability of inferring inductive invariants padonDecidabilityInferringInductive2016
Is Sound Gradual Typing Dead? takikawa_etal_2016
2015
Conjugate Hylomorphisms -- Or: The Mother of All Structured Recursion Schemes hinze-2015-conjugate
Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning jung-2015-iris
Integrating Linear and Dependent Types krishnaswami_integrating_2015
Functors are type refinement systems mellies_zeilberger_2015
The standard reading of type theory through the lens of category theory is based on the idea of viewing a type system as a category of well-typed terms. We propose a basic revision of this reading: rather than interpreting type systems as categories, we describe them as functors from a category of typing derivations to a category of underlying terms. Then, turning this around, we explain how in fact any functor gives rise to a generalized type system, with an abstract notion of typing judgment, typing derivations and typing rules. This leads to a purely categorical reformulation of various natural classes of type systems as natural classes of functors.
The main purpose of this paper is to describe the general framework (which can also be seen as providing a categorical analysis of refinement types), and to present a few applications. As a larger case study, we revisit Reynolds’ paper on “The Meaning of Types” (2000), showing how the paper’s main results may be reconstructed along these lines.