paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Quantitative strongest post: a calculus for reasoning about the flow of quantitative information

量化最强后条件:一种用于推理量化信息流的演算
OOPSLA 6(OOPSLA1)2022匹配度 2/10 · 该论文属于程序验证与量化信息流的形式化演算,虽与静态分析/形式化验证大方向相关,但未涉及 LLM/Agent 与静态分析的交叉,也未讨论浮点程序分析或贝叶斯程序分析,因此与研究画像的核心问题匹配度较低。引用 13 inbox
Linpeng Zhang, Benjamin Lucien Kaminski
crossref: 2026-09-10

AI 速览

一句话:提出量化最强后条件演算,支持非确定性含循环程序,用于推理量化信息流并导出部分不正确性逻辑。

论文针对非确定性含循环程序的量化推理,提出一种新的最强后条件演算。现有量化最弱前置条件只能从给定初始状态推理程序终止后的量值,而量化最强后条件可反向推理:在程序执行并到达给定终态时,某量在执行前应取何值。该演算使程序中的量化信息流推理成为可能,并类比最弱自由前置条件,给出量化最强自由后条件。作为副产品,作者首次提出最强自由后条件这一概念,并表明它预示一种新的程序逻辑——部分不正确性逻辑(partial incorrectness logic),可视为 O'Hearn 近期不正确性逻辑的更自由版本。

问题
如何对带循环的非确定性程序进行量化后向推理,特别是推理到达给定终态时量在程序执行前的值以及量化信息在程序中的流动。
方法
提出量化最强后条件演算,并类比最弱自由前置条件构造量化最强自由后条件;用最强后条件刻画量化信息流。
评估
通过概念与逻辑分析展示该演算支持量化信息流推理,并由此导出部分不正确性逻辑这一新的程序逻辑方向。
原文摘要(Abstract)

We present a novel strongest-postcondition-style calculus for quantitative reasoning about non-deterministic programs with loops. Whereas existing quantitative weakest pre allows reasoning about the value of a quantity after a program terminates on a given initial state, quantitative strongest post allows reasoning about the value that a quantity had before the program was executed and reached a given final state. We show how strongest post enables reasoning about the flow of quantitative information through programs. Similarly to weakest liberal preconditions, we also develop a quantitative strongest liberal post. As a byproduct, we obtain the entirely unexplored notion of strongest liberal postconditions and show how these foreshadow a potential new program logic - partial incorrectness logic - which would be a more liberal version of O'Hearn's recent incorrectness logic.

链接与引用

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

BibTeX
@article{paperbot1528,
  title = {Quantitative strongest post: a calculus for reasoning about the flow of quantitative information},
  author = {Linpeng Zhang and Benjamin Lucien Kaminski},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {6},
  number = {OOPSLA1},
  year = {2022},
  doi = {10.1145/3527331}
}