Reference. ReLoC Reloaded: A Mechanized Relational Logic for Fine-Grained Concurrency and Logical Atomicity
Cite
Cited by (7)
Modular Verification of Differential Privacy in Probabilistic Higher-Order Separation Logic haselwarter-2026-modular
Contextual Refinement of Higher-Order Concurrent Probabilistic Programs li-2026-contextual
Relational Separation Logic for Compiler Verification leroy_pottier_relsep_2026
Tail Modulo Cons, OCaml, and Relational Separation Logic allain_etal_tmc_2025
Common functional languages incentivize tail-recursive functions, as opposed to general recursive functions that consume stack space and may not scale to large inputs. This distinction occasionally requires writing functions in a tail-recursive style that may be more complex and slower than the natural, non-tail-recursive definition.
This work describes our implementation of the tail modulo constructor (TMC) transformation in the OCaml compiler, an optimization that provides stack-efficiency for a larger class of functions — tail-recursive modulo constructors — which includes in particular the natural definition of List.map and many similar recursive data-constructing functions.
We prove the correctness of this program transformation in a simplified setting — a small untyped calculus — that captures the salient aspects of the OCaml implementation. Our proof is mechanized in the Coq proof assistant, using the Iris base logic. An independent contribution of our work is an extension of the Simuliris approach to define simulation relations that support different calling conventions. To our knowledge, this is the first use of Simuliris to prove the correctness of a compiler transformation.
A Logical Approach to Type Soundness timany-2024-a
Algebraic Effects Meet Hoare Logic in Cubical Agda kidney-2024-algebraic
Trillium: Higher-Order Concurrent and Distributed Separation Logic for Intensional Refinement timany-2024-trillium
Cites 107 works (10 here)
With notes (10)
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
Higher-order ghost state jung_higher-order_2016
Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning jung-2015-iris
Relational separation logic yang_relational_separation_2007
Simple relational correctness proofs for static analyses and program transformations benton_relational_2004
BI as an assertion language for mutable data structures ishtiaq_ohearn_bi_2001
A Completeness Theorem for Kleene Algebras and the Algebra of Regular Events KOZEN1994366
External (97)
- Machine-checked semantic session typing (2021)
- Contextual refinement of the Michael-Scott queue (proof pearl) (2021)
- Safe systems programming in Rust: the promise and the challenge (2021)
- Compositional Non-Interference for Fine-Grained Concurrent Programs (2021)
- Appendix and Coq development of ReLoC (2021)
- The future is ours: prophecy variables in separation logic (2020)
- Actris: session-type based reasoning in separation logic (2020)
- The high-level benefits of low-level sandboxing (2020)
- Behavioural equivalence via modalities for algebraic effects (2020)
- Scala step-by-step: soundness for DOT with step-indexed logical relations in Iris (2020)
- Lecture notes on Iris: Higher-order concurrent separation logic (2020)
- RustBelt meets relaxed memory (2020)
- The Iris Project website and Coq development (2020)
- A relational logic for higher-order programs (2019)
- Verifying concurrent, crash-safe systems with Perennial (2019)
- Mechanized relational verification of concurrent programs with continuations (2019)
- Data Abstraction and Relational Program Logic (2019)
- RustBelt: securing the foundations of the Rust programming language (2018)
- MoSeL: a general, extensible modal framework for interactive proofs in separation logic (2018)
- Monadic refinements for relational cost analysis (2018)
- Types for Information Flow Control: Labeling Granularity and Semantic Models (2018)
- A perspective on specifying and verifying concurrent modules (2018)
- ReLoC: A mechanised relational logic for fine-grained concurrency (2018)
- Contributions in programming languages theory: Logical relations and type theory (2018)
- The Essence of Higher-Order Concurrent Separation Logic (2017)
- A relational model of types-and-effects in higher-order concurrent separation logic (2017)
- Proving Linearizability Using Partial Orders (2017)
- Concurrent data structures linked in time (2017)
- Robust and compositional verification of object capability patterns (2017)
- Relational cost analysis (2017)
- Reasoning with time and data abstractions (2017)
- Relational Logic with Framing and Hypotheses (2016)
- A type theory for incremental computational complexity with control flow changes (2016)
- Practical Foundations for Programming Languages (2nd ed.) (2016)
- Autosubst: Reasoning with de Bruijn Terms and Parallel Substitutions (2015)
- Verifying linearisability: A comparative survey (2015)
- Impredicative Concurrent Abstract Predicates (2014)
- TaDA: A Logic for Time and Data Abstraction (2014)
- Unifying refinement and hoare-style reasoning in a logic for higher-order concurrency (2013)
- Modular verification of linearizability with non-fixed linearization points (2013)
- Logical relations for fine-grained concurrency (2013)
- Modular Reasoning about Separation of Concurrent Data Structures (2013)
- Dependent Type Theory for Verification of Information Flow and Access Control Policies (2013)
- Step-indexed relational reasoning for countable nondeterminism (2013)
- EasyCrypt: A tutorial (2013)
- Local reasoning for global invariants, part I: Region logic (2013)
- Views: compositional reasoning for concurrent programs (2013)
- Probabilistic relational reasoning for differential privacy (2012)
- The impact of higher-order state and control effects on local relational reasoning (2012)
- A concurrent logical relation (2012)
- A kripke logical relation between ML and assembly (2011)
- Expressive modular fine-grained concurrency specification (2011)
- Step-indexed kripke models over recursive worlds (2011)
- Concurrent Kleene algebra and its foundations (2011)
- Non-parametric parametricity (2011)
- A relational modal logic for higher-order stateful ADTs (2010)
- Model Checking of Linearizability of Concurrent List Implementations (2010)
- A Generic Operational Metatheory for Algebraic Effects (2010)
- Line-up: a complete and automatic linearizability checker (2010)
- Concurrent abstract predicates (2010)
- Abstraction for concurrent objects (2010)
- State-dependent representation independence (2009)
- Experience with Model Checking Linearizability (2009)
- Logical Step-Indexed Logical Relations (2009)
- Model Checking Linearizability via Refinement (2009)
- Formal certification of code-based cryptographic proofs (2009)
- Shape-value abstraction for verifying linearizability (2009)
- Thread Quantification for Concurrent Shape Analysis (2008)
- Typed closure conversion preserves observational equivalence (2008)
- Modular fine-grained concurrency verification (2008)
- Resources, concurrency, and local reasoning (2007)
- Comparison Under Abstraction for Verifying Linearizability (2007)
- A very modal model of a modern, major, general type system (2007)
- A bisimulation for type abstraction and recursion (2007)
- A semantics for concurrent separation logic (2007)
- Small bisimulations for reasoning about higher-order imperative programs (2006)
- Step-indexed syntactic logical relations for recursive and quantified types (2006)
- Typed operational reasoning (2005)
- Semantics of types for mutable state (2004)
- A scalable lock-free stack algorithm (2004)
- Operational Semantics and Program Equivalence (2002)
- A stratified semantics of general references embeddable in higher-order logic (2002)
- Local Reasoning about Programs that Alter Data Structures (2001)
- An indexed model of recursive types for foundational proof-carrying code (2001)
- Bisimilarity as a theory of functional programming (1999)
- Operational reasoning for functions with local state (1998)
- Simple, fast, and practical non-blocking and blocking concurrent queue algorithms (1996)
- A logic for parametric polymorphism (1993)
- The revised report on the syntactic theories of sequential control and state (1992)
- Algorithms for scalable synchronization on shared-memory multiprocessors (1991)
- The existence of refinement mappings (1991)
- Linearizability: a correctness condition for concurrent objects (1990)
- Representation independence and data abstraction (1986)
- Systems programming: Coping with parallelism (1986)
- A powerdomain construction (1976)
- Powerdomains (1976)
- Towards a theory of type structure (1974)