Reference. Separation logic: A logic for shared mutable data structures
Cite
Cited by (31)
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
An Axiomatic Basis for Computer Programming on Relaxed Hardware Architectures: The AxSL Logics liu-2026-an
Probabilistic Concurrent Reasoning in Outcome Logic: Independence, Conditioning, and Invariants zilberstein-2026-probabilistic
Day algebras robinson_wrigley_2026
Intrinsic Verification of Parsers and Formal Grammar Theory in Dependent Lambek Calculus intrinsic-verification-of-parsers
We present Dependent Lambek Calculus (Lambek), a domain-specific dependent type theory for verified parsing and formal grammar theory. In Lambek, linear types are used as a syntax for formal grammars, and parsers can be written as linear terms. The linear typing restriction provides a form of intrinsic verification that a parser yields only valid parse trees for the input string. We demonstrate the expressivity of this system by showing that the combination of inductive linear types and dependency on non-linear data can be used to encode commonly used grammar formalisms such as regular and context-free grammars as well as traces of various types of automata. Using these encodings, we define parsers for regular expressions using deterministic automata, as well as examples of verified parsers of context-free grammars.
We present a denotational semantics of our type theory that interprets the linear types as functions from strings to sets of abstract parse trees and terms as parse transformers. Based on this denotational semantics, we have made a prototype implementation of Lambek using a shallow embedding in the Agda proof assistant. All of our examples parsers have been implemented in this prototype implementation.
Fulminate: Testing CN Separation-Logic Specifications in C banerjee-2025-fulminate
Idempotent Resources in Separation Logic: The Heart of core in Iris gratzer-2025-idempotent
A Logical Approach to Type Soundness timany-2024-a
Algebraic Effects Meet Hoare Logic in Cubical Agda kidney-2024-algebraic
Leaf: Modularity for Temporary Sharing in Separation Logic hance-2023-leaf
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 Hardware Design with Timeline Types nigam_amorim_sampson_2023
Recovering purity with comonads and capabilities choudhury-2020-recovering
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
Homotopical patch theory angiuli-2016-homotopical
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.
From categorical logic to facebook engineering ohearn_fromCat2015
Type refinement and monoidal closed bifibrations mellies_zeilberger_2013
Data representation synthesis hawkins-2011-data
BI-hyperdoctrines, higher-order separation logic, and abstraction biering-2007-bi
Relational separation logic yang_relational_separation_2007
BI Hyperdoctrines and Higher-Order Separation Logic biering_birkedal_torpsmith_2005
On the Logic of Bunched Implications — and its relation to separation logic biering_bunched_2004
Cites 35 works (2 here)
With notes (2)
BI as an assertion language for mutable data structures ishtiaq_ohearn_bi_2001
The logic of bunched implications ohearn_pym_bi_1999
External (33)
- A semantic basis for local reasoning (2002)
- Resource Tableaux (2002)
- The query language TQL (2002)
- The Semantics and Proof Theory of the Logic of Bunched Implications (2002)
- A spatial logic for querying graphs (2002)
- Semantic and Logical Properties of Stateful Programming (C. Calcagno, PhD thesis, Genova) (2002)
- Notes on separation logic for shared-variable concurrency (P. W. O'Hearn, unpublished) (2002)
- An example of local reasoning in BI pointer logic: The Schorr-Waite graph marking algorithm (2001)
- Proof-Search and Countermodel Generation in Propositional BI Logic (2001)
- Local reasoning about programs that alter data structures (2001)
- A query language based on the ambient logic (2001)
- Reasoning about shared mutable data structure (abstract of invited lecture) (2001)
- On garbage and program logic (2001)
- Alias Types for Recursive Data Structures (2001)
- Program logics in the presence of garbage collection (abstract) (2001)
- Computability and complexity results for a spatial assertion language for data structures (2001)
- Explicit description in BI pointer logic (R. Bornat, unpublished) (2001)
- Program logic and equivalence in the presence of garbage collection (Calcagno, O'Hearn, Bornat; submitted) (2001)
- Notes on conditional critical regions in spatial pointer logic (P. W. O'Hearn, unpublished) (2001)
- Local Reasoning for Stateful Programs (H. Yang, PhD thesis, UIUC) (2001)
- Dynamic Logic (2000)
- Anytime, anywhere (2000)
- Intuitionistic reasoning about shared mutable data structure (2000)
- Lectures on reasoning about shared mutable data structure (J. C. Reynolds, IFIP WG 2.3 School, Tandil) (2000)
- Stack-based typed assembly language (1998)
- Verifiable and executable specifications of concurrent objects in Lπ (1998)
- Implementation of the typed call-by-value λ-calculus using a stack of regions (1994)
- The Craft of Programming (J. C. Reynolds) (1981)
- Verifying properties of parallel programs (1976)
- Towards a Theory of Parallel Programming (1972)
- Some techniques for proving correctness of programs which alter data structures (1972)
- Proof of a program (1971)
- An axiomatic basis for computer programming (1969)