Reference. Higher-order ghost state
Cite
Cited by (22)
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
Contextual Refinement of Higher-Order Concurrent Probabilistic Programs li-2026-contextual
Mixtris: Mechanised Higher-Order Separation Logic for Mixed Choice Multiparty Message Passing hinrichsen-2026-mixtris
Reasoning about Weak Isolation Levels in Separation Logic alnormathiasen-2025-reasoning
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.
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
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
Modular Denotational Semantics for Effects with Guarded Interaction Trees frumin-2024-modular
The Logical Essence of Well-Bracketed Control Flow timany-2024-the
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
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
ReLoC Reloaded: A Mechanized Relational Logic for Fine-Grained Concurrency and Logical Atomicity frumin_krebbers_birkedal_reloc_2021
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
Interactive proofs in higher-order concurrent separation logic krebbers-2017-interactive
A Higher-Order Logic for Concurrent Termination-Preserving Refinement tassarotti_jung_harper_2017
Cites 40 works (1 here)
With notes (1)
Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning jung-2015-iris
External (39)
- Verifying Custom Synchronization Constructs Using Higher-Order Separation Logic (2016)
- Extensible and Efficient Automation Through Reflective Tactics (2016)
- Higher-Order Ghost State: Appendix and Coq development (Iris project website) (2016)
- Mechanized verification of fine-grained concurrent programs (2015)
- ModuRes: A Coq Library for Modular Reasoning About Concurrent Higher-Order Imperative Programming Languages (2015)
- The C standard formalized in Coq (Krebbers, PhD thesis, Radboud University) (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)
- GPS (2014)
- The bedrock structured programming system (2013)
- Views (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)
- Syntactic soundness proof of a type-and-capability system with hidden state (2012)
- Charge! - A Framework for Higher-Order Separation Logic in Coq (2012)
- Step-Indexed Kripke Model of Separation Logic for Storable Locks (2011)
- Type classes for mathematics in type theory (2011)
- The category-theoretic solution of recursive metric-space equations (2010)
- Invariants, Modularity, and Rights (2010)
- Concurrent abstract predicates (2010)
- A theory of indirection via approximation (2010)
- Reasoning about Optimistic Concurrency Using a Program Logic for History (2010)
- Hints in Unification (2009)
- A Fresh Look at Separation Algebras and Share Accounting (2009)
- Local rely-guarantee reasoning (2009)
- Packaging Mathematical Structures (2009)
- A new look at generalized rewriting in type theory (2009)
- Oracle Semantics for Concurrent Separation Logic (2008)
- Resources, concurrency, and local reasoning (2007)
- Types, bytes, and separation logic (2007)
- A Marriage of Rely/Guarantee and Separation Logic (2007)
- Local Reasoning for Storable Locks and Threads (2007)
- On the Relationship Between Concurrent Separation Logic and Assume-Guarantee Reasoning (2007)
- An indexed model of recursive types for foundational proof-carrying code (2001)
- Solving reflexive domain equations in a category of complete metric spaces (1989)
- Verifying properties of parallel programs (1976)