Reference. Multi-Language Probabilistic Programming
Cite
Cites 63 works (4 here)
With notes (4)
Lilac: A Modal Separation Logic for Conditional Probability li-2023-lilac
FabULous Interoperability for ML and a Linear Language scherer_etal_2018
Instead of a monolithic programming language trying to cover all features of interest, some programming systems are designed by combining together simpler languages that cooperate to cover the same feature space. This can improve usability by making each part simpler than the whole, but there is a risk of abstraction leaks from one language to another that would break expectations of the users familiar with only one or some of the involved languages.
We propose a formal specification for what it means for a given language in a multi-language system to be usable without leaks: it should embed into the multi-language in a fully abstract way, that is, its contextual equivalence should be unchanged in the larger system.
To demonstrate our proposed design principle and formal specification criterion, we design a multi-language programming system that combines an ML-like statically typed functional language and another language with linear types and linear state. Our goal is to cover a good part of the expressiveness of languages that mix functional programming and linear state (ownership), at only a fraction of the complexity. We prove that the embedding of ML into the multi-language system is fully abstract: functional programmers should not fear abstraction leaks. We show examples of combined programs demonstrating in-place memory updates and safe resource handling, and an implementation extending OCaml with our linear language.
Semantics for probabilistic programming: higher-order functions, continuous distributions, and soft constraints staton-2016-semantics
Fully Abstract Compilation via Universal Embedding new_bowman_ahmed_2016
A fully abstract compiler guarantees that two source components are observationally equivalent in the source language if and only if their translations are observationally equivalent in the target. Full abstraction implies the translation is secure: target-language attackers can make no more observations of a compiled component than a source-language attacker interacting with the original source component. Proving full abstraction for realistic compilers is challenging because realistic target languages contain features (such as control effects) unavailable in the source, while proofs of full abstraction require showing that every target context to which a compiled component may be linked can be back-translated to a behaviorally equivalent source context.
We prove the first full abstraction result for a translation whose target language contains exceptions, but the source does not. Our translation—specifically, closure conversion of simply typed λ-calculus with recursive types—uses types at the target level to ensure that a compiled component is never linked with attackers that have more distinguishing power than source-level attackers. We present a new back-translation technique based on a shallow embedding of the target language into the source language at a dynamic type. Then boundaries are inserted that mediate terms between the untyped embedding and the strongly-typed source. This technique allows back-translating non-terminating programs, target features that are untypeable in the source, and well-bracketed effects.
External (59)
- A Verified Foreign Function Interface between Coq and C (2025)
- Artifact: Multi-Language Probabilistic Programming (2025)
- Melocoton: A Program Logic for Verified Interoperability Between OCaml and C (2023)
- DimSum: A Decentralized Approach to Multi-language Semantics and Verification (2023)
- A Gradual Probabilistic Lambda Calculus (2023)
- Semi-symbolic inference for efficient streaming probabilistic programming (2022)
- Semantic soundness for language interoperability (2022)
- Interoperability through realizability: expressing high-level abstractions using low-level code (2022)
- Reasoning about “reasoning about reasoning”: semantics and contextual equivalence for probabilistic programs with nested queries and recursion (2022)
- Conditional Independence by Typing (2021)
- Learning Proposals for Probabilistic Programs with Inference Combinators (2021)
- Scaling exact inference for discrete probabilistic programs (2020)
- A Semantic Foundation for Sound Gradual Typing (PhD thesis) (2020)
- Etalumis: Bringing Probabilistic Programming to Scientific Simulators at Scale (2019)
- Pyro: Deep Universal Probabilistic Programming (2019)
- Gen: a general-purpose probabilistic programming system with programmable inference (2019)
- Scalable verification of probabilistic networks (2019)
- Tensor Variable Elimination for Plated Factor Graphs (2019)
- Foundations of dependent interoperability (2018)
- Bayonet: probabilistic inference for networks (2018)
- Category-theoretic Structure for Independence and Conditional Independence (2018)
- Approximate Knowledge Compilation by Online Collapsed Importance Sampling (2018)
- Delayed Sampling and Automatic Rao-Blackwellization of Probabilistic Programs (2018)
- On Nesting Monte Carlo Estimators (2018)
- Formally Justified and Modular Bayesian Inference for Probabilistic Programs (PhD thesis) (2018)
- Stan : A Probabilistic Programming Language (2017)
- Contextual Equivalence for Probabilistic Programs with Continuous Random Variables and Scoring (2017)
- Probability Sheaves and the Giry Monad (2017)
- Commutative Semantics for Probabilistic Programming (2017)
- PSI: Exact Symbolic Inference for Probabilistic Programs (2016)
- Inference and learning in probabilistic logic programs using weighted Boolean formulas (2014)
- Venture: A Higher-Order Probabilistic Programming Platform with Programmable Inference (2014)
- Reasoning about reasoning by nested conditioning: Modeling theory of mind with probabilistic programs (2013)
- The Internet Topology Zoo (2011)
- MCMC Using Hamiltonian Dynamics (2011)
- Languages as libraries (2011)
- Step-Indexing: The Good, the Bad and the Ugly (2010)
- Stateful Contracts for Affine Types (2010)
- Action understanding as inverse planning (2009)
- The design and implementation of typed scheme (2008)
- On probabilistic inference by weighted model counting (2007)
- An operational semantics for Scheme (2007)
- Operational semantics for multi-language programs (2007)
- Gradual Typing for Functional Languages (2006)
- Performing Bayesian Inference by Weighted Model Counting (2005)
- A Probabilistic Causal Model for Diagnosis of Liver Disorders (2005)
- A Knowledge Compilation Map (2002)
- Stochastic lambda calculus and monads of probability distributions (2002)
- A modal analysis of staged computation (2001)
- Analysis of an Equal-Cost Multi-Path Algorithm (2000)
- Monte Carlo Statistical Methods (1999)
- Adaptive Probabilistic Networks with Hidden Variables (1997)
- A semantics of introspection in a reflective prototype-based language (1996)
- A Model-Based Approach to Insulin Adjustment (1991)
- The ALARM Monitoring System: A Case Study with two Probabilistic Inference Techniques for Belief Networks (1989)
- Probabilistic Reasoning in Intelligent Systems: Networks of Plausible Inference (1988)
- Reflection and semantics in LISP (1984)
- A categorical approach to probability theory (1982)
- Discrete-Time Queuing Theory (1958)