paperbot · PL 论文追踪

全部论文 待读 收藏

P2 A Domain-Specific Probabilistic Programming Language for Reasoning about Reasoning (Or: A Memo on memo)

memo:一个用于推理“推理”的领域特定概率编程语言(或:关于 memo 的备忘录)
OOPSLA 9(OOPSLA2)2025匹配度 3/10 · 论文属于概率编程语言与领域特定语言设计,与用户的 PL 背景有较弱关联,但其核心是心智理论建模与数组编程推断,不涉及静态分析、LLM/Agent、浮点程序分析或贝叶斯程序分析与 LLM 的交叉。引用 2 inbox
Kartik Chandra, Tony Chen, Joshua B. Tenenbaum, Jonathan Ragan-Kelley
crossref: 2026-09-10

AI 速览

一句话:提出领域特定概率编程语言 memo,以专用语法语义和数组编程推断,支持心智理论建模。

心智理论(theory of mind)建模通常基于递归概率推理,但实践者编写此类模型十分困难:思考“思考”本身令人困惑,且模型运行缓慢。论文提出 memo,一种面向心智理论的领域特定概率编程语言:一方面为 theory of mind 提供专用语法与语义,降低建模难度;另一方面采用独特的推断方法,通过数组编程(array programming)在现代硬件上良好扩展。memo 让研究者用更少代码写出显著更快的模型,并已被多个研究小组采用。

问题
在递归概率推理范式中编写心智理论模型既令程序员困惑,又导致模型运行缓慢。
方法
设计 DSL memo,为心智理论提供专用语法与语义,并采用基于数组编程的可扩展推断方法。
评估
通过让实践者以更少代码编写显著更快的模型来展示效果,且已被多个研究小组采用。
原文摘要(Abstract)

The human ability to think about thinking (“theory of mind”) is a fundamental object of study in many disciplines. In recent decades, researchers across these disciplines have converged on a rich computational paradigm for modeling theory of mind, grounded in recursive probabilistic reasoning. However, practitioners often find programming in this paradigm challenging: first, because thinking-about-thinking is confusing for programmers, and second, because models are slow to run. This paper presents memo , a new domain-specific probabilistic programming language that overcomes these challenges: first, by providing specialized syntax and semantics for theory of mind, and second, by taking a unique approach to inference that scales well on modern hardware via array programming. memo enables practitioners to write dramatically faster models with much less code, and has already been adopted by several research groups.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@article{paperbot2895,
  title = {A Domain-Specific Probabilistic Programming Language for Reasoning about Reasoning (Or: A Memo on memo)},
  author = {Kartik Chandra and Tony Chen and Joshua B. Tenenbaum and Jonathan Ragan-Kelley},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {9},
  number = {OOPSLA2},
  year = {2025},
  doi = {10.1145/3763078}
}