Toward Hole-Driven Development with Liquid Haskell
Patrick Redmond, Gan Shen, Lindsey Kuper

TL;DR
This paper proposes enhancing Liquid Haskell with Agda-style typed holes and interactive commands to improve its usability as a theorem prover, enabling incremental proof development within Haskell programs.
Contribution
It introduces the idea of integrating typed holes into Liquid Haskell, combining refinement types with interactive proof features for better usability.
Findings
Conceptual framework for typed holes in Liquid Haskell
Discussion of implementation approaches and future steps
Potential for more interactive and user-friendly theorem proving
Abstract
Liquid Haskell is an extension to the Haskell programming language that adds support for refinement types: data types augmented with SMT-decidable logical predicates that refine the set of values that can inhabit a type. Furthermore, Liquid Haskell's support for refinement reflection enables the use of Haskell for general-purpose mechanized theorem proving. A growing list of large-scale mechanized proof developments in Liquid Haskell take advantage of this capability. Adding theorem-proving capabilities to a "legacy" language like Haskell lets programmers directly verify properties of real-world Haskell programs (taking advantage of the existing highly tuned compiler, run-time system, and libraries), just by writing Haskell. However, more established proof assistants like Agda and Coq offer far better support for interactive proof development and insight into the proof state (for…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Parallel Computing and Optimization Techniques · Formal Methods in Verification
