A Probabilistic and Non-Deterministic Call-by-Push-Value Language

12/30/2018
by   Jean Goubault-Larrecq, et al.
0

There is no known way of giving a domain-theoretic semantics to higher-order probabilistic languages, in such a way that the involved domains are continuous or quasi-continuous - the latter is required to do any serious mathematics. We argue that the problem naturally disappears for languages with two kinds of types, where one kind is interpreted in a Cartesian-closed category of continuous dcpos, and the other is interpreted in a category that is closed under the probabilistic powerdomain functor. Such a setting is provided by Paul B. Levy's call-by-push-value paradigm. Following this insight, we define a call-by-push-value language, with probabilistic choice sitting inside the value types, and where conversion from a value type to a computation type involves demonic non-determinism. We give both a domain-theoretic semantics and an operational semantics for the resulting language, and we show that they are sound and adequate. With the addition of statistical termination testers and parallel if, we show that the language is even fully abstract - and those two primitives are required for that.

READ FULL TEXT
research
11/21/2021

The Central Valuations Monad

We give a commutative valuations monad Z on the category DCPO of dcpo's ...
research
01/31/2021

Commutative Monads for Probabilistic Programming Languages

A long-standing open problem in the semantics of programming languages s...
research
01/26/2022

Polarized Subtyping

Polarization of types in call-by-push-value naturally leads to the separ...
research
09/26/2022

Focusing on Liquid Refinement Typing

We present a foundation systematizing, in a way that works for any evalu...
research
11/27/2017

Measurable Cones and Stable, Measurable Functions

We define a notion of stable and measurable map between cones endowed wi...
research
06/30/2021

A Domain-Theoretic Approach to Statistical Programming Languages

We give a domain-theoretic semantics to a statistical programming langua...
research
11/11/2019

Recurrence Extraction for Functional Programs through Call-by-Push-Value (Extended Version)

The main way of analyzing the complexity of a program is that of extract...

Please sign up or login with your details

Forgot password? Click here to reset