Verifying replicated data types with typeclass refinements in Liquid Haskell
-
Published:2020-11-13
Issue:OOPSLA
Volume:4
Page:1-30
-
ISSN:2475-1421
-
Container-title:Proceedings of the ACM on Programming Languages
-
language:en
-
Short-container-title:Proc. ACM Program. Lang.
Author:
Liu Yiyun1,
Parker James1,
Redmond Patrick2ORCID,
Kuper Lindsey2,
Hicks Michael1ORCID,
Vazou Niki3ORCID
Affiliation:
1. University of Maryland at College Park, USA
2. University of California at Santa Cruz, USA
3. IMDEA Software Institute, Spain
Abstract
This paper presents an extension to Liquid Haskell that facilitates stating and semi-automatically proving properties of typeclasses. Liquid Haskell augments Haskell with
refinement types
—our work allows such types to be attached to typeclass method declarations, and ensures that instance implementations respect these types. The engineering of this extension is a modular interaction between GHC, the Glasgow Haskell Compiler, and Liquid Haskell’s core proof infrastructure. The design sheds light on the interplay between modular proofs and typeclass resolution, which in Haskell is coherent by default (meaning that resolution always selects the same implementation for a particular instantiating type), but in other dependently typed languages is not.
We demonstrate the utility of our extension by using Liquid Haskell to modularly verify that 34 instances satisfy the laws of five standard typeclasses.
More substantially, we implement a framework for programming distributed applications based on
replicated data types
(RDTs). We define a typeclass whose Liquid Haskell type captures the mathematical properties RDTs should satisfy; prove in Liquid Haskell that these properties are sufficient to ensure that replicas’ states converge despite out-of-order update delivery; implement (and prove correct) several instances of our RDT typeclass; and use them to build two realistic applications, a multi-user calendar event planner and a collaborative text editor.
Funder
Comunidad de Madrid BLOQUESCM
Attractio?n de Talento
Defense Advanced Research Projects Agency
Google
Amazon Web Services
National Science Foundation
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Cited by
9 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Type-Checking CRDT Convergence;Proceedings of the ACM on Programming Languages;2023-06-06
2. Modular verification of op-based CRDTs in separation logic;Proceedings of the ACM on Programming Languages;2022-10-31
3. Katara: synthesizing CRDTs with verified lifting;Proceedings of the ACM on Programming Languages;2022-10-31
4. How to safely use extensionality in Liquid Haskell;Proceedings of the 15th ACM SIGPLAN International Haskell Symposium;2022-09-06
5. Verified Causal Broadcast with Liquid Haskell;Proceedings of the 34th Symposium on Implementation and Application of Functional Languages;2022-08-31