Formally Verified Samplers From Probabilistic Programs With Loops and Conditioning (original) (raw)
Abstract:We present Zar: a formally verified compiler pipeline from discrete probabilistic programs with unbounded loops in the conditional probabilistic guarded command language (cpGCL) to proved-correct executable samplers in the random bit model. We exploit the key idea that all discrete probability distributions can be reduced to unbiased coin-flipping schemes. The compiler pipeline first translates a cpGCL program into choice-fix trees, an intermediate representation suitable for reduction of biased probabilistic choices. Choice-fix trees are then translated to coinductive interaction trees for execution within the random bit model. The correctness of the composed translations establishes the sampling equidistribution theorem: compiled samplers are correct wrt. the conditional weakest pre-expectation semantics of cpGCL source programs. Zar is implemented and fully verified in the Coq proof assistant. We extract verified samplers to OCaml and Python and empirically validate them on a number of illustrative examples.
Submission history
From: Alexander Bagnall [view email]
[v1] Sat, 12 Nov 2022 21:23:17 UTC (3,449 KB)
[v2] Tue, 15 Nov 2022 21:05:55 UTC (17,842 KB)
[v3] Thu, 20 Apr 2023 22:29:27 UTC (1,364 KB)