Reference. Transfinite Iris: resolving an existential dilemma of step-indexed separation logic
Cite
Cited by (14)
Contextual Refinement of Higher-Order Concurrent Probabilistic Programs li-2026-contextual
Lawyer: Modular Obligations-Based Liveness Reasoning in Higher-Order Impredicative Concurrent Separation Logic namakonov-2026-lawyer
An Axiomatic Basis for Computer Programming on Relaxed Hardware Architectures: The AxSL Logics liu-2026-an
Relational Separation Logic for Compiler Verification leroy_pottier_relsep_2026
Verifying Wait-Freedom for Concurrent Higher-Order Programs namakonov-2026-verifying
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.
A Modal Deconstruction of Löb Induction gratzer-2025-a
The Nextgen Modality: A Modality for Non-Frame-Preserving Updates in Separation Logic vindum-2025-the
Idempotent Resources in Separation Logic: The Heart of core in Iris gratzer-2025-idempotent
Solving Guarded Domain Equations in Presheaves over Ordinals and Mechanizing It stepanenko-2025-solving
A Logical Approach to Type Soundness timany-2024-a
Trillium: Higher-Order Concurrent and Distributed Separation Logic for Intensional Refinement timany-2024-trillium
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.
First Steps in Synthetic Tait Computability: The Objective Metatheory of Cubical Type Theory sterling_2021
Cites 64 works (7 here)
With notes (7)
Transfinite step-indexing for termination spies-2021-transfinite
Iris from the ground up: A modular foundation for higher-order concurrent separation logic jung_etal_iris_ground_up_2018
A logical relation for monadic encapsulation of state: proving contextual equivalences in the presence of runST timany-2017-a
A Higher-Order Logic for Concurrent Termination-Preserving Refinement tassarotti_jung_harper_2017
Higher-order ghost state jung_higher-order_2016
Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning jung-2015-iris
The logic of bunched implications ohearn_pym_bi_1999
External (57)
- Diamonds are not forever: liveness in reactive programming with guarded recursion (2021)
- Compositional Non-Interference for Fine-Grained Concurrent Programs (2021)
- Safe systems programming in Rust (2021)
- Iris: A higher-order concurrent separation logic framework implemented and verified in the proof assistant Coq (project website) (2021)
- Transfinite Iris appendix and Coq development (2021)
- Scala step-by-step: soundness for DOT with step-indexed logical relations in Iris (2020)
- Cosmo: a concurrent separation logic for multicore OCaml (2020)
- Verifying concurrent, crash-safe systems with Perennial (2019)
- RustBelt meets relaxed memory (2019)
- Time Credits and Time Receipts in Iris (2019)
- TaDA Live: Compositional Reasoning for Termination of Fine-grained Concurrent Programs (2019)
- VST-Floyd: A Separation Logic Tool to Verify Correctness of C Programs (2018)
- ReLoC: A mechanised relational logic for fine-grained concurrency (2018)
- Large model constructions for second-order ZF in dependent type theory (2018)
- MoSeL: a general, extensible modal framework for interactive proofs in separation logic (2018)
- A Separation Logic for a Promising Semantics (2018)
- RustBelt: securing the foundations of the Rust programming language (2017)
- The Essence of Higher-Order Concurrent Separation Logic (2017)
- Progress of concurrent objects with partial methods (2017)
- Modular Termination Verification for Non-blocking Concurrency (2016)
- A promising semantics for relaxed-memory concurrency (2016)
- Interactive proofs in higher-order concurrent separation logic (2016)
- A relational model of types-and-effects in higher-order concurrent separation logic (2016)
- A program logic for concurrent objects under fair scheduling (2016)
- Transfinite Step-Indexing: Decoupling Concrete and Logical Steps (2016)
- Program Logics for Certified Compilers (2014)
- A Model of Countable Nondeterminism in Guarded Type Theory (2014)
- TaDA: A Logic for Time and Data Abstraction (2014)
- Impredicative Concurrent Abstract Predicates (2014)
- Step-Indexed Relational Reasoning for Countable Nondeterminism (2013)
- Modular Reasoning about Separation of Concurrent Data Structures (2013)
- Unifying refinement and hoare-style reasoning in a logic for higher-order concurrency (2013)
- Logical relations for fine-grained concurrency (2013)
- Time Bounds for General Function Pointers (2012)
- First Steps in Synthetic Guarded Domain Theory: Step-Indexing in the Topos of Trees (2011)
- Step-indexed kripke models over recursive worlds (2011)
- Characteristic formulae for the verification of imperative programs (2011)
- Logical Step-Indexed Logical Relations (2011)
- Amortised Resource Analysis with Separation Logic (2010)
- A relational modal logic for higher-order stateful ADTs (2010)
- A Theory of Termination via Indirection (2010)
- State-dependent representation independence (2009)
- Oracle Semantics for Concurrent Separation Logic (2008)
- A very modal model of a modern, major, general type system (2007)
- Logical Reasoning for Higher-Order Functions with Local State (2007)
- Unifying Recursive and Co-recursive Definitions in Sheaf Categories (2004)
- Semantics of types for mutable state (2004)
- A stratified semantics of general references embeddable in higher-order logic (2003)
- An indexed model of recursive types for foundational proof-carrying code (2001)
- Local Reasoning about Programs that Alter Data Structures (2001)
- A modality for recursion (2000)
- Sets in types, types in sets (1997)
- Solving reflexive domain equations in a category of complete metric spaces (1989)
- Characterizing finite Kripke structures in propositional temporal logic (1988)
- Binary codes capable of correcting deletions, insertions, and reversals (1965)
- On the interpretation of intuitionistic number theory (1945)
- Grundbegriffe der Mengenlehre (1906)