Reference. Interactive proofs in higher-order concurrent separation logic
Cite
Cited by (21)
Contextual Refinement of Higher-Order Concurrent Probabilistic Programs li-2026-contextual
Context-Dependent Effects and Concurrency in Guarded Interaction Trees stepanenko-2025-context
The Nextgen Modality: A Modality for Non-Frame-Preserving Updates in Separation Logic vindum-2025-the
Context-Dependent Effects in Guarded Interaction Trees stepanenko-2025-contextx
Solving Guarded Domain Equations in Presheaves over Ordinals and Mechanizing It stepanenko-2025-solving
A Logical Approach to Type Soundness timany-2024-a
Tachis: Higher-Order Separation Logic with Credits for Expected Costs haselwarter-2024-tachis
Error Credits: Resourceful Reasoning about Error Bounds for Higher-Order Probabilistic Programs aguirre-2024-error
Cerise: Program Verification on a Capability Machine in the Presence of Untrusted Code georges-2024-cerise
Modular Denotational Semantics for Effects with Guarded Interaction Trees frumin-2024-modular
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
Correctly Compiling Proofs About Programs Without Proving Compilers Correct seo-2024-correctly
Grove: A Separation-Logic Library for Verifying Distributed Systems sharmaGroveSeparationLogicLibrary2023
Lilac: A Modal Separation Logic for Conditional Probability li-2023-lilac
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.
ReLoC Reloaded: A Mechanized Relational Logic for Fine-Grained Concurrency and Logical Atomicity frumin_krebbers_birkedal_reloc_2021
QED at Large: A Survey of Engineering of Formally Verified Software ringer-2019-qed
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
Cites 44 works (2 here)
With notes (2)
Higher-order ghost state jung_higher-order_2016
Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning jung-2015-iris
External (42)
- A Logical Account of a Type-and-Effect System (published as: A relational model of types-and-effects in higher-order concurrent separation logic) (2017)
- The Coq Proof Assistant Reference Manual (2016)
- The Essence of Higher-Order Concurrent Separation Logic (2016)
- ERC Project RustBelt (2016)
- Extensible and Efficient Automation Through Reflective Tactics (2016)
- Mechanized verification of fine-grained concurrent programs (2015)
- The C standard formalized in Coq (PhD thesis) (2015)
- Autosubst: Reasoning with de Bruijn Terms and Parallel Substitutions (2015)
- ModuRes: A Coq library for modular reasoning about concurrent higher-order imperative programming languages (2015)
- Program Logics for Certified Compilers (2014)
- TaDA: A Logic for Time and Data Abstraction (2014)
- Communicating State Transition Systems for Fine-Grained Concurrent Resources (2014)
- Impredicative Concurrent Abstract Predicates (2014)
- The Bedrock structured programming system: combining generative metaprogramming and Hoare logic in an extensible program verifier (2013)
- High-level separation logic for low-level code (2013)
- Modular Reasoning about Separation of Concurrent Data Structures (2013)
- Unifying refinement and hoare-style reasoning in a logic for higher-order concurrency (2013)
- Charge! - A Framework for Higher-Order Separation Logic in Coq (2012)
- Step-indexed kripke models over recursive worlds (2011)
- Logical step-indexed logical relations (2011)
- The essence of monotonic state (2011)
- VeriFast: A Powerful, Sound, Predictable, Fast Verifier for C and Java (2011)
- Type classes for mathematics in type theory (2011)
- Concurrent abstract predicates (2010)
- Reasoning about optimistic concurrency using a program logic for history (2010)
- Structuring the verification of heap-manipulating programs (2010)
- Local rely-guarantee reasoning (2009)
- Practical Tactics for Separation Logic (2009)
- First-Class Type Classes (2008)
- A very modal model of a modern, major, general type system (2007)
- On the relationship between concurrent separation logic and assume-guarantee reasoning (2007)
- A marriage of rely/guarantee and separation logic (2007)
- Step-Indexed Syntactic Logical Relations for Recursive and Quantified Types (2006)
- Tactics for Separation Logic (2006)
- Symbolic Execution with Separation Logic (2005)
- Semantics of Types for Mutable State (PhD thesis) (2004)
- Certifying Machine Code Safety: Shallow Versus Deep Embedding (2004)
- A Tactic Language for the System Coq (2000)
- A modality for recursion (2000)
- Introduction to HOL (1993)
- A logic for parametric polymorphism (1993)
- Edinburgh LCF (1979)