paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Trace abstraction modulo probability

概率模追踪抽象
POPL 3(POPL)2019匹配度 3/10 · 论文属于概率程序形式验证,使用失败自动机、程序合成与 Craig 插值证明高概率精度性质,未涉及 LLM/Agent、浮点程序分析或贝叶斯程序分析,与画像中 PL 与 AI 交叉的核心方向关联较弱;仅在广义程序验证与概率推理归约上有边缘参考价值。引用 18 inbox
Calvin Smith, Justin Hsu, Aws Albarghouthi
crossref: 2026-09-10

AI 速览

一句话:提出用失败自动机上近似程序 trace、并将概率推理归约为逻辑推理的概率程序精度验证方法。

论文提出「概率模追踪抽象」(trace abstraction modulo probability),一种验证概率程序高概率精度保证的证明技术。其核心是用失败自动机(failure automata)对程序 trace 集合做上近似:这类有限状态自动机给出「未能满足目标规格」这一事件概率的上界。为自动构造证明,作者把概率推理归约为逻辑推理——先用程序合成方法为采样指令挑选公理,再用 Craig 插值证明 trace 违背规格的概率很小。该方法可处理未知输入、参数化分布、无限状态空间与参数化规格。作者在差分隐私及更广泛文献中的随机化算法上进行了评估,据称这是首个能自动建立这些算法精度性质的方法。

问题
如何自动验证概率程序以高概率满足目标精度(accuracy)保证,尤其是在存在未知输入、参数化分布与无限状态空间的情况下。
方法
用失败自动机构造程序 trace 集合的上近似,从而给出失败概率的界;把概率推理归约为逻辑推理:用程序合成选取采样指令的公理,再用 Craig 插值证明 trace 违背规格的概率很小。
评估
在来自差分隐私文献及其他领域的多种随机化算法上评估该技术,并称首次实现对这些算法精度性质的自动验证。
原文摘要(Abstract)

We propose trace abstraction modulo probability, a proof technique for verifying high-probability accuracy guarantees of probabilistic programs. Our proofs overapproximate the set of program traces using failure automata, finite-state automata that upper bound the probability of failing to satisfy a target specification. We automate proof construction by reducing probabilistic reasoning to logical reasoning: we use program synthesis methods to select axioms for sampling instructions, and then apply Craig interpolation to prove that traces fail the target specification with only a small probability. Our method handles programs with unknown inputs, parameterized distributions, infinite state spaces, and parameterized specifications. We evaluate our technique on a range of randomized algorithms drawn from the differential privacy literature and beyond. To our knowledge, our approach is the first to automatically establish accuracy properties of these algorithms.

链接与引用

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

BibTeX
@article{paperbot642,
  title = {Trace abstraction modulo probability},
  author = {Calvin Smith and Justin Hsu and Aws Albarghouthi},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {3},
  number = {POPL},
  year = {2019},
  doi = {10.1145/3290352}
}