Reference. Iris from the ground up: A modular foundation for higher-order concurrent separation logic
Cite
Cited by (56)
Oblivious Probabilistic Outcome Logic: Verifying Probabilistic Programs with an Oblivious Adversary chen-2026-oblivious
Verifying Isolation Levels of Database Implementations for Free Using Separation Logic mathiasen-2026-verifying
Yarrow: Reconciling Effect Handlers and Region-Based Memory Management mathiasen-2026-yarrow
Code-Specify-Test-Debug-Prove: Flexibly Integrating Separation Logic Specification into Conventional Workflows aamer-2026-code
Modular Verification of Differential Privacy in Probabilistic Higher-Order Separation Logic haselwarter-2026-modular
Iris-WasmFX: Modular Reasoning for Wasm Stack Switching legoupil-2026-iris
Contextual Refinement of Higher-Order Concurrent Probabilistic Programs li-2026-contextual
Cerisier: A Program Logic for Attestation in a Capability Machine rousseau-2026-cerisier
Mixtris: Mechanised Higher-Order Separation Logic for Mixed Choice Multiparty Message Passing hinrichsen-2026-mixtris
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
An Equational Axiomatization of Dynamic Threads via Algebraic Effects: Presheaves on Finite Relations, Labelled Posets, and Parameterized Algebraic Theories kammar-2026-an
Probabilistic Concurrent Reasoning in Outcome Logic: Independence, Conditioning, and Invariants zilberstein-2026-probabilistic
Verifying Exact Samplers for Continuous Distributions with a Discrete Program Logic demedeiros-2026-verifying
Verifying Wait-Freedom for Concurrent Higher-Order Programs namakonov-2026-verifying
Context-Dependent Effects and Concurrency in Guarded Interaction Trees stepanenko-2025-context
Mechanizing a Proof-Relevant Logical Relation for Timed Message-Passing Protocols zhang-2025-mechanizing
Place Capability Graphs: A General-Purpose Model of Rust’s Ownership and Borrowing Guarantees grannan-2025-place
From Linearity to Borrowing wagner-2025-from
Reasoning about Weak Isolation Levels in Separation Logic alnormathiasen-2025-reasoning
Modular Reasoning about Error Bounds for Concurrent Probabilistic Programs li-2025-modular
Fulminate: Testing CN Separation-Logic Specifications in C banerjee-2025-fulminate
The Nextgen Modality: A Modality for Non-Frame-Preserving Updates in Separation Logic vindum-2025-the
Substructural Parametricity aberle-2025-substructural
Idempotent Resources in Separation Logic: The Heart of core in Iris gratzer-2025-idempotent
Context-Dependent Effects in Guarded Interaction Trees stepanenko-2025-contextx
Solving Guarded Domain Equations in Presheaves over Ordinals and Mechanizing It stepanenko-2025-solving
Verus: A Practical Foundation for Systems Verification lattuada-2024-verus
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 Essence of Generalized Algebraic Data Types sieczkowski-2024-the
Trillium: Higher-Order Concurrent and Distributed Separation Logic for Intensional Refinement timany-2024-trillium
A denotationally-based program logic for higher-order store aagaard-2023-a
Dependent Type Refinements for Futures somayyajula-2023-dependent
Grove: A Separation-Logic Library for Verifying Distributed Systems sharmaGroveSeparationLogicLibrary2023
Leaf: Modularity for Temporary Sharing in Separation Logic hance-2023-leaf
Verifying Reliable Network Components in a Distributed Separation Logic with Dependent Separation Protocols gondelman-2023-verifying
Lilac: A Modal Separation Logic for Conditional Probability li-2023-lilac
Verus: Verifying Rust Programs using Linear Ghost Types lattuada-2023-verus
Outcome Logic: A Unifying Foundation for Correctness and Incorrectness Reasoning zilberstein-2023-outcome
CN: Verifying Systems C Code with Separation-Logic Refinement Types pulte-2023-cn
Modular Verification of State-Based CRDTs in Separation Logic nieto-2023-modular
Classifying topoi in synthetic guarded domain theory: the universal property of multi-clock guarded recursion palombi_sterling_2023
Armada: Automated Verification of Concurrent Code with Sound Semantic Extensibility lorch-2022-armada
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.
A cost-aware logical framework niu-2022-a
Transfinite Iris: resolving an existential dilemma of step-indexed separation logic spies-2021-transfinitex
Transfinite step-indexing for termination spies-2021-transfinite
ReLoC Reloaded: A Mechanized Relational Logic for Fine-Grained Concurrency and Logical Atomicity frumin_krebbers_birkedal_reloc_2021
First Steps in Synthetic Tait Computability: The Objective Metatheory of Cubical Type Theory sterling_2021
Armada: low-effort verification of high-performance concurrent programs lorch-2020-armada
QED at Large: A Survey of Engineering of Formally Verified Software ringer-2019-qed
Cites 76 works (8 here)
With notes (8)
A logical relation for monadic encapsulation of state: proving contextual equivalences in the presence of runST timany-2017-a
Interactive proofs in higher-order concurrent separation logic krebbers-2017-interactive
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
Separation logic: A logic for shared mutable data structures reynolds_separation_2002
BI as an assertion language for mutable data structures ishtiaq_ohearn_bi_2001
The logic of bunched implications ohearn_pym_bi_1999
External (68)
- MoSeL: A general, extensible modal framework for interactive proofs in separation logic (2018)
- RustBelt: Securing the foundations of the Rust programming language (2018)
- Mechanized relational verification of concurrent programs with continuations (2018)
- A separation logic for concurrent randomized programs (2018)
- Iron: Managing obligations in higher-order concurrent separation logic (2018)
- ReLoC: A mechanised relational logic for fine-grained concurrency (2018)
- Robust and compositional verification of object capability patterns (2017)
- The Essence of Higher-Order Concurrent Separation Logic (2017)
- A relational model of types-and-effects in higher-order concurrent separation logic (2017)
- Bringing order to the separation logic jungle (2017)
- On models of higher-order separation logic (2017)
- The Iris documentation and Coq development (2017)
- Strong logic for weak memory: Reasoning about release-acquire consistency in Iris (2017)
- Verifying Custom Synchronization Constructs Using Higher-Order Separation Logic (2016)
- Viper: A verification infrastructure for permission-based reasoning (2016)
- Mechanized verification of fine-grained concurrent programs (2015)
- Program Logics for Certified Compilers (2014)
- Impredicative concurrent abstract predicates (2014)
- TaDA: A logic for time and data abstraction (2014)
- Verified compilation for shared-memory C (2014)
- GPS: Navigating weak memory with ghosts, protocols, and separation (2014)
- Communicating state transition systems for fine-grained concurrent resources (2014)
- Syntactic soundness proof of a type-and-capability system with hidden state (2013)
- Subjective auxiliary state for coarse-grained concurrency (2013)
- Unifying refinement and Hoare-style reasoning in a logic for higher-order concurrency (2013)
- Views: Compositional reasoning for concurrent programs (2013)
- Superficially substructural types (2012)
- Fictional separation logic (2012)
- Step-indexed Kripke model of separation logic for storable locks (2011)
- The essence of monotonic state (2011)
- First steps in synthetic guarded domain theory: step-indexing in the topos of trees (2011)
- Concurrent Abstract Predicates (2010)
- The category-theoretic solution of recursive metric-space equations (2010)
- Abstraction and Refinement for Local Reasoning (2010)
- The next 700 separation logics - (Invited paper) (2010)
- Dafny: An automatic program verifier for functional correctness (2010)
- Reasoning about optimistic concurrency using a program logic for history (2010)
- A relational modal logic for higher-order stateful ADTs (2010)
- A theory of indirection via approximation (2010)
- A new look at generalized rewriting in type theory (2009)
- Verification of concurrent programs with Chalice (2009)
- Deny-guarantee reasoning (2009)
- Invariants, modularity, and rights (2009)
- Packaging mathematical structures (2009)
- A fresh look at separation algebras and share accounting (2009)
- Local rely-guarantee reasoning (2009)
- Oracle semantics for concurrent separation logic (2008)
- Resources, concurrency, and local reasoning (2007)
- A semantics for concurrent separation logic (2007)
- A Marriage of Rely/Guarantee and Separation Logic (2007)
- A very modal model of a modern, major, general type system (2007)
- Local reasoning about storable locks and threads (2007)
- On the relationship between concurrent separation logic and assume-guarantee reasoning (2007)
- Permission accounting in separation logic (2005)
- Certifying machine code safety: Shallow versus deep embedding (2004)
- Checking interference with fractional permissions (2003)
- A unifying approach to recursive and co-recursive definitions (2002)
- An indexed model of recursive types for foundational proof-carrying code (2001)
- Foundational proof-carrying code (2001)
- Local reasoning about programs that alter data structures (2001)
- A modality for recursion (2000)
- Intuitionistic reasoning about shared mutable data structure (2000)
- Solving Reflexive Domain Equations in a Category of Complete Metric Spaces (1989)
- Guarded commands, nondeterminacy and formal derivation of programs (1975)
- Proving Assertions about Parallel Programs (1975)
- Strong functors and monoidal monads (1972)
- Monads on symmetric monoidal closed categories (1970)
- Semantical Analysis of Intuitionistic Logic I (1965)