Reference. Algebraic Effects Meet Hoare Logic in Cubical Agda
Cite
Cites 78 works (12 here)
With notes (12)
Modular Models of Monoids with Operations yang-2023-modular
Quotients, inductive types, and quotient inductive types fiore-2022-quotients
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 Machine-Checked Proof of Birkhoff’s Variety Theorem in Martin-Löf Type Theory demeo-2022-a
Structured Handling of Scoped Effects yang-2022-structured
Syntax and models of Cartesian cubical type theory angiuli-2021-syntax
ReLoC Reloaded: A Mechanized Relational Logic for Fine-Grained Concurrency and Logical Atomicity frumin_krebbers_birkedal_reloc_2021
Cubical Agda: A Dependently Typed Programming Language with Univalence and Higher Inductive Types VezzosiMortbergAbel2019
Dijkstra monads for all maillard-2019-dijkstra
Just do it: simple monadic equational reasoning gibbons-2011-just
Separation logic: A logic for shared mutable data structures reynolds_separation_2002
External (66)
- Conditional Contextual Refinement (2023)
- High-level effect handlers in C++ (2022)
- Program adverbs and Tlön embeddings (2022)
- Towards a Practical Library for Monadic Equational Reasoning in Coq (2022)
- A typed continuation-passing translation for lexical effect handlers (2022)
- Formal reasoning about layered monadic interpreters (2022)
- Controlling unfolding in type theory (2022)
- Birkhoff's Completeness Theorem for Multi-Sorted Algebras Formalized in Agda (2021)
- Greatest HITs: Higher inductive types in coinductive definitions via induction under clocks (2021)
- Dijkstra monads forever: termination-sensitive specifications for interaction trees (2021)
- Retrofitting effect handlers onto OCaml (2021)
- Latent Effects for Reusable Language Components (2021)
- The Agda-Unimath Library (2021)
- Weakest Preconditions in Fibrations (2020)
- Domain Theory in Constructive and Predicative Univalent Foundations (2020)
- Finiteness in Cubical Type Theory (2020)
- Compiling effect handlers in capability-passing style (2020)
- What Is Algebraic about Algebraic Effects and Handlers?arXiv:1807.05923 [cs] (March 2019) (2019)
- Interaction trees: representing recursive and impure programs in Coq (2019)
- Abstraction-safe effect handlers via tunneling (2019)
- Effect handlers for the masses (2018)
- Finite sets in homotopy type theory (2018)
- Formalization of Universal Algebra in Agda (2018)
- Syntax and Semantics for Operations with Scopes (2018)
- Guarded Computational Type Theory (2018)
- Handling fibred algebraic effects (2017)
- Handle with care: relational interpretation of algebraic effects and handlers (2017)
- Stack semantics of type theory (2017)
- Type directed compilation of row-typed algebraic effects (2017)
- Guarded Dependent Type Theory with Coinductive Types (2016)
- A program logic for concurrent objects under fair scheduling (2016)
- Dependent types and multi-monadic effects in F* (2016)
- Homotopy-Initial Algebras in Type Theory (2015)
- Cubical Type Theory: A Constructive Interpretation of the Univalence Axiom (2015)
- Algebraic Effects, Linearity, and Quantum Programming Languages (2015)
- Generic weakest precondition semantics from monads enriched with order (2014)
- Koka: Programming with Row Polymorphic Effect Types (2014)
- An Effect System for Algebraic Effects and Handlers (2014)
- Effect handlers in scope (2014)
- Combinatorial Species and Labelled Structures (2014)
- An Effect System for Algebraic Effects and Handlers (2013)
- A Relatively Complete Generic Hoare Logic for Order-Enriched Effects (2013)
- Handling Algebraic Effects (2013)
- Instances of Computational Effects: An Algebraic Perspective (2013)
- Verifying higher-order programs with the dijkstra monad (2013)
- Unifying refinement and hoare-style reasoning in a logic for higher-order concurrency (2013)
- Handlers of Algebraic Effects (2009)
- A Logic for Algebraic Effects (2008)
- Combining algebraic effects with continuations (2007)
- Combining effects: Sum and tensor (2006)
- Containers: Constructing strictly positive types (2005)
- Computational Effects and Operations: An Overview (2004)
- Infinite trees and completely iterative theories: a coalgebraic view (2003)
- Monad-Independent Hoare Logic in HASCASL (2003)
- Notions of Computation Determine Monads (2002)
- HASCASL: Towards Integrated Specification and Development of Functional Programs (2002)
- Universal Algebra in Type Theory (1999)
- Monadic parsing in Haskell (1998)
- Adjunctions whose counits are coequalizers, and presentations of finitary enriched monads (1993)
- Notions of Computation and Monads (1991)
- An Abstract View of Programming Languages (1989)
- Constructive Analysis (1985)
- Constructive Mathematics and Computer Programming (1982)
- Universal Algebra (1981)
- An axiomatic basis for computer programming (1969)
- On the Structure of Abstract Algebras (1935)