To Zip Through the Cost Analysis of Probabilistic Programs
By: Matthias Hetzenberger, Georg Moser, Florian Zuleger
Potential Business Impact:
Helps computers guess how long programs will run.
Probabilistic programming and the formal analysis of probabilistic algorithms are active areas of research, driven by the widespread use of randomness to improve performance. While functional correctness has seen substantial progress, automated reasoning about expected runtime remains comparatively limited. In this work, we address this challenge by introducing a refinement-typed probability monad in Liquid Haskell. Our monad enables automated reasoning about expected values and costs by encoding probabilistic behaviour directly in types. Initially defined for discrete distributions over finite support, it is extended to support infinite distributions via an axiomatic approach. By leveraging Liquid Haskell's SMT-based refinement type checking, our framework provides a high degree of automation. We evaluate our approach through four case studies: meldable heaps, coupon collector, randomised quicksort, and zip trees. The first two demonstrate automation with minimal annotation overhead. The latter two showcase how our monad integrates with interactive proofs, including the first formal verification of the expected runtime of zip trees.
Similar Papers
On Circuit Description Languages, Indexed Monads, and Resource Analysis
Programming Languages
Lets computers build better, smaller circuits.
Proof-Producing Translation of Functional Programs into a Time \& Space Reasonable Model
Logic in Computer Science
Builds computer programs from simpler instructions.
A Foundational Theory of Quantitative Abstraction: Adjunctions, Duality, and Logic for Probabilistic Systems
Logic in Computer Science
Makes complex computer predictions more accurate.