One Monad to Prove Them All
Sandra Dylus (CAU Kiel, Germany), Jan Christiansen (Flensburg, University of Applied Sciences, Germany), Finn Teegen (University of Kiel,, Germany)

TL;DR
This paper explores how to verify Haskell programs in proof assistants like Coq by translating them into monadic forms, addressing challenges related to partiality and termination checks, and introduces a novel approach based on monadic transformations.
Contribution
The paper presents a new method for verifying Haskell programs in Coq using monadic transformations, overcoming termination restrictions and modeling partiality explicitly.
Findings
Monadic transformations enable verification of partial Haskell programs in Coq.
Termination restrictions in Coq and Agda hinder direct translation of Haskell functions.
The proposed approach leverages concepts like free monads and containers for effective proof development.
Abstract
One Monad to Prove Them All is a modern fairy tale about curiosity and perseverance, two important properties of a successful PhD student. We follow the PhD student Mona on her adventure of proving properties about Haskell programs in the proof assistant Coq. On the one hand, as a PhD student in computer science Mona observes an increasing demand for correct software products. In particular, because of the large amount of existing software, verifying existing software products becomes more important. Verifying programs in the functional programming language Haskell is no exception. On the other hand, Mona is delighted to see that communities in the area of theorem proving are becoming popular. Thus, Mona sets out to learn more about the interactive theorem prover Coq and verifying Haskell programs in Coq. To prove properties about a Haskell function in Coq, Mona has to translate the…
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.
