ReLoC Reloaded: A Mechanized Relational Logic for Fine-Grained Concurrency and Logical Atomicity

by   Dan Frumin, et al.

We present a new version of ReLoC: a relational logic for proving refinements of programs in a language with higher-order state, fine-grained concurrency, polymorphism and recursive types. The core of ReLoC is the refinement judgment e ≾ e' : τ, which expresses that a program e refines a program e' at type τ. In contrast to earlier work on refinements for languages with higher-order state and concurrency, ReLoC provides type-directed structural rules and symbolic execution rules for manipulating this judgment, whereas previously, such proofs were carried out by unfolding the judgment into its definition in the model. These more abstract proof rules make it simpler to carry out refinement proofs, and enable us to generalize the notion of logically atomic specifications to the relational case, which we call logically atomic relational specifications. We build ReLoC on top of the Iris framework for separation logic in Coq, allowing us to leverage features of Iris to prove soundness of ReLoC, and to carry out refinement proofs in ReLoC. We implement tactics for interactive refinements proofs, allowing us to mechanize several case studies, and thereby demonstrate the practicality of ReLoC. ReLoC Reloaded extends our ReLoC logic (LICS'18) with various technical improvements, a new Coq mechanization, and support for Iris's prophecy variables. The latter allows us to carry out refinement proofs that involve reasoning about the program's future. We also expand ReLoC's notion of logically atomic relational specifications with a new flavor based on the HOCAP pattern by Svendsen et al.



page 1

page 2

page 3

page 4


Compositional Non-Interference for Fine-Grained Concurrent Programs

We present SeLoC: a relational separation logic for verifying non-interf...

Trillium: Unifying Refinement and Higher-Order Distributed Separation Logic

We present a unification of refinement and Hoare-style reasoning in a fo...

Relational Reasoning for Markov Chains in a Probabilistic Guarded Lambda Calculus

We extend the simply-typed guarded λ-calculus with discrete probabilitie...

Functional Extensionality for Refinement Types

Refinement type checkers are a powerful way to reason about functional p...

Schematic Polymorphism in the Abella Proof Assistant

The Abella interactive theorem prover has proven to be an effective vehi...

Kind Inference for Datatypes: Technical Supplement

In recent years, languages like Haskell have seen a dramatic surge of ne...

To Memory Safety through Proofs

We present a type system capable of guaranteeing the memory safety of pr...
This week in AI

Get the week's most popular data science and artificial intelligence research sent straight to your inbox every Saturday.