DeepAI AI Chat
Log In Sign Up

A Probabilistic Call-by-Need Lambda-Calculus – Extended Version

05/30/2022
by   David Sabel, et al.
0

To support the understanding of declarative probabilistic programming languages, we introduce a lambda-calculus with a fair binary probabilistic choice that chooses between its arguments with equal probability. The reduction strategy of the calculus is a call-by-need strategy that performs lazy evaluation and implements sharing by recursive let-expressions. Expected convergence of expressions is the limit of the sum of all successful reduction outputs weighted by their probability. We use contextual equivalence as program semantics: two expressions are contextually equivalent if and only if the expected convergence of the expressions plugged into any program context is always the same. We develop and illustrate techniques to prove equivalences including a context lemma, two derived criteria to show equivalences and a syntactic diagram-based method. This finally enables us to show correctness of a large set of program transformations with respect to the contextual equivalence.

READ FULL TEXT

page 1

page 2

page 3

page 4

04/27/2020

The Benefit of Being Non-Lazy in Probabilistic λ-calculus

We consider the probabilistic applicative bisimilarity (PAB), a coinduct...
07/08/2018

Contextual Equivalence for a Probabilistic Language with Continuous Random Variables and Recursion

We present a complete reasoning principle for contextual equivalence in ...
02/19/2018

Space Improvements and Equivalences in a Functional Core Language

We explore space improvements in LRP, a polymorphically typed call-by-ne...
05/10/2018

On Randomised Strategies in the λ-Calculus (Long Version)

In this work we introduce randomised reduction strategies, a notion alre...
02/02/2023

A Typed Lambda-Calculus for Establishing Trust in Probabilistic Programs

The extensive deployment of probabilistic algorithms has radically chang...
08/31/2020

Correctly Implementing Synchronous Message Passing in the Pi-Calculus By Concurrent Haskell's MVars

Comparison of concurrent programming languages and correctness of progra...