Litcius/Paper detail

Dijkstra monads forever: termination-sensitive specifications for interaction trees

Lucas Silver, Steve Zdancewic

2021Proceedings of the ACM on Programming Languages17 citationsDOIOpen Access PDF

Abstract

This paper extends the Dijkstra monad framework, designed for writing specifications over effectful programs using monadic effects, to handle termination sensitive specifications over interactive programs. We achieve this by introducing base specification monads for non-terminating programs with uninterpreted events. We model such programs using interaction trees, a coinductive datatype for representing programs with algebraic effects in Coq, which we further develop by adding trace semantics. We show that this approach subsumes typical, simple proof principles. The framework is implemented as an extension of the Interaction Trees Coq library.

Topics & Concepts

Programming languageMonad (category theory)Computer scienceTRACE (psycholinguistics)Dijkstra's algorithmSimple (philosophy)Extension (predicate logic)CoinductionProof assistantRecursion (computer science)Theoretical computer scienceMathematical proofMathematicsDiscrete mathematicsFunctorGraphEpistemologyPhilosophyShortest path problemGeometryLinguisticsLogic, programming, and type systemsFormal Methods in VerificationSecurity and Verification in Computing