Litcius/Paper detail

Reaching for the Star: Tale of a Monad in Coq

Pierre Nigron, Pierre-Évariste Dagand

2021DROPS (Schloss Dagstuhl – Leibniz Center for Informatics)19 citationsDOIOpen Access PDF

Abstract

Monadic programming is an essential component in the toolbox of functional programmers. For the pure and total programmers, who sometimes navigate the waters of certified programming in type theory, it is the only means to concisely implement the imperative traits of certain algorithms. Monads open up a portal to the imperative world, all that from the comfort of the functional world. The trend towards certified programming within type theory begs the question of reasoning about such programs. Effectful programs being encoded as pure programs in the host type theory, we can readily manipulate these objects through their encoding. In this article, we pursue the idea, popularized by Maillard [Kenji Maillard, 2019], that every monad deserves a dedicated program logic and that, consequently, a proof over a monadic program ought to take place within a Floyd-Hoare logic built for the occasion. We illustrate this vision through a case study on the SimplExpr module of CompCert [Xavier Leroy, 2009], using a separation logic tailored to reason about the freshness of a monadic gensym.

Topics & Concepts

Monad (category theory)Computer scienceProgramming languageHaskellFunctional programmingCertificationType theoryProof assistantLogic programmingToolboxType (biology)MathematicsMathematical proofDiscrete mathematicsFunctorGeometryPolitical scienceEcologyBiologyLawLogic, programming, and type systemsSoftware Engineering ResearchLogic, Reasoning, and Knowledge
Reaching for the Star: Tale of a Monad in Coq | Litcius