Fri 17 Jun 2022 15:30 - 15:50 at Macaw - Refinement Types Chair(s): Sorav Bansal

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, 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 conflict-free replicated data types (CRDTs). We define a typeclass whose Liquid Haskell type captures the mathematical properties CRDTs 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 CRDT typeclass; and use them to build two realistic applications, a multi-user calendar event planner and a collaborative text editor.

Fri 17 Jun

Displayed time zone: Pacific Time (US & Canada) change

15:30 - 16:50
Refinement TypesSIGPLAN Track at Macaw
Chair(s): Sorav Bansal IIT Delhi and CompilerAI Labs
15:30
20m
Talk
(OOPSLA 2020) Verifying Replicated Data Types with Typeclass Refinements in Liquid Haskell
SIGPLAN Track
Yiyun Liu University of Maryland at College Park, James Parker Galois, Inc., Patrick Redmond University of California at Santa Cruz, Lindsey Kuper University of California at Santa Cruz, Michael Hicks University of Maryland at College Park, Niki Vazou IMDEA Software Institute
15:50
20m
Talk
(PLDI 2021) RefinedC: Automating the Foundational Verification of C Code with Refined Ownership Types
SIGPLAN Track
Michael Sammler MPI-SWS, Rodolphe Lepigre MPI-SWS, Robbert Krebbers Radboud University Nijmegen, Kayvan Memarian University of Cambridge, Derek Dreyer MPI-SWS, Deepak Garg MPI-SWS
Link to publication DOI Authorizer link Pre-print
16:10
20m
Talk
(POPL 2021) Data Flow Refinement Type Inference
SIGPLAN Track
Zvonimir Pavlinovic Google, USA, Yusen Su University of Waterloo, Thomas Wies New York University
16:30
20m
Talk
(PLDI 2021) RbSyn: type- and effect-guided program synthesis
SIGPLAN Track
Sankha Narayan Guria University of Maryland, College Park, Jeffrey S. Foster Tufts University, David Van Horn University of Maryland
Link to publication DOI Authorizer link Pre-print