Exact Recursive Probabilistic Programming

10/03/2022
by   David Chiang, et al.
0

Recursive calls over recursive data are widely useful for generating probability distributions, and probabilistic programming allows computations over these distributions to be expressed in a modular and intuitive way. Exact inference is also useful, but unfortunately, existing probabilistic programming languages do not perform exact inference on recursive calls over recursive data, forcing programmers to code many applications manually. We introduce a probabilistic language in which a wide variety of recursion can be expressed naturally, and inference carried out exactly. For instance, probabilistic pushdown automata and their generalizations are easy to express, and polynomial-time parsing algorithms for them are derived automatically. We eliminate recursive data types using program transformations related to defunctionalization and refunctionalization. These transformations are assured correct by a linear type system, and a successful choice of transformations, if there is one, is guaranteed to be found by a greedy algorithm.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
03/06/2016

Composing inference algorithms as program transformations

Probabilistic inference procedures are usually coded painstakingly from ...
research
11/15/2018

Effect Handling for Composable Program Transformations in Edward2

Algebraic effects and handlers have emerged in the programming languages...
research
07/15/2019

Designing Perfect Simulation Algorithms using Local Correctness

Consider a randomized algorithm that draws samples exactly from a distri...
research
05/09/2012

Monolingual Probabilistic Programming Using Generalized Coroutines

Probabilistic programming languages and modeling toolkits are two modula...
research
09/07/2015

Matrix Factorisation with Linear Filters

This text investigates relations between two well-known family of algori...
research
02/19/2021

Tail Modulo Cons

OCaml function calls consume space on the system stack. Operating system...
research
02/28/2022

Getting There and Back Again

"There and Back Again" (TABA) is a programming pattern where the recursi...

Please sign up or login with your details

Forgot password? Click here to reset