Reference. Lawyer: Modular Obligations-Based Liveness Reasoning in Higher-Order Impredicative Concurrent Separation Logic
Cite
Cited by (1)
Verifying Wait-Freedom for Concurrent Higher-Order Programs namakonov-2026-verifying
Cites 38 works (7 here)
With notes (7)
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.
Transfinite Iris: resolving an existential dilemma of step-indexed separation logic spies-2021-transfinitex
Iris from the ground up: A modular foundation for higher-order concurrent separation logic jung_etal_iris_ground_up_2018
A Higher-Order Logic for Concurrent Termination-Preserving Refinement tassarotti_jung_harper_2017
Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning jung-2015-iris
Verified Software Toolchain appel_vst_2011
External (31)
- Artifact for the "Lawyer: Modular Obligations-Based Liveness Reasoning in Higher-Order Impredicative Concurrent Separation Logic" paper of OOPSLA'26 (2026)
- Technical appendix for the Lawyer paper (2026)
- Lilo: A Higher-Order, Relational Concurrent Separation Logic for Liveness (2025)
- Nola: Later-Free Ghost State for Verifying Termination in Iris (2025)
- A flexible specification approach for verifying total correctness of fine-grained concurrent modules (2024)
- Verifying Liveness Properties of Distributed Systems via Trace Refinement in Higher-Order Concurrent Separation Logic (2024)
- Fair Operational Semantics (2023)
- VMSL: A Separation Logic for Mechanised Robust Safety of Virtual Machines Communicating above FF-A (2023)
- Ghost Signals: Verifying Termination of Busy Waiting (2021)
- Ghost Signals: Verifying Termination of Busy-Waiting (Technical Report) (2021)
- TaDA Live: Compositional Reasoning for Termination of Fine-grained Concurrent Programs (2019)
- Certified concurrent abstraction layers (2018)
- Modular Termination Verification of Single-Threaded and Multithreaded Programs (2018)
- Safety and Liveness of MCS Lock - Layer by Layer (2017)
- Lecture Notes on Iris: Higher-Order Concurrent Separation Logic (2017)
- A program logic for concurrent objects under fair scheduling (2016)
- Modular Verification of Finite Blocking in Non-terminating Programs (2015)
- Deep Specifications and Certified Abstraction Layers (2015)
- Mechanized verification of fine-grained concurrent programs (2015)
- TaDA: A Logic for Time and Data Abstraction (2014)
- Impredicative Concurrent Abstract Predicates (2014)
- VeriFast: A Powerful, Sound, Predictable, Fast Verifier for C and Java (2011)
- A theory of indirection via approximation (2010)
- Deadlock-Free Channels and Locks (2010)
- A New Type System for Deadlock-Free Processes (2006)
- An indexed model of recursive types for foundational proof-carrying code (2001)
- Conjoining specifications (1995)
- Linearizability: a correctness condition for concurrent objects (1990)
- Information Processing 83, Proceedings of the IFIP 9th World Computer Congress, Paris, France, September 19-23 (1983)
- Proving termination with multiset orderings (1979)
- Verifying properties of parallel programs: an axiomatic approach (1976)