paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Reasoning about External Calls

对外部调用的推理
OOPSLA 9(OOPSLA2)2025匹配度 3/10 · 论文属于程序验证与Hoare逻辑,关注外部调用和对象能力封装,与用户核心方向(LLM/Agent与静态分析/形式化验证交叉、浮点程序分析、贝叶斯程序分析)无直接关联;仅在Agentic程序调用外部不可信代码的场景下可能间接相关,但论文未涉及LLM/Agent或机器学习系统。引用 0 inbox
Sophia Drossopoulou, Julian Mackay, Susan Eisenbach, James Noble
crossref: 2026-09-10

AI 速览

一句话:提出用于对象能力与封装限制外部调用效应的断言、规约与 Hoare 逻辑,并证明其可靠性。

现代软件中可信内部代码与不可信外部代码紧密交织;即使外部代码不可信甚至不可用,程序也需推理其调用可能产生的效应。论文针对依赖封装与对象能力(object capabilities)来限制外部调用效应的内部代码,提出新的能力访问断言、限制效应的规约,以及一套 Hoare 逻辑,用于验证模块在调用外部代码时仍满足其规约。作者通过一个贯穿示例展示方法并给出机器化证明,同时证明该 Hoare 逻辑的可靠性(soundness)。

问题
如何在内部代码调用不可信、甚至不可用的外部代码时,规约并验证其效应,尤其是利用封装和对象能力限制外部调用的影响。
方法
提出能力访问断言与限制效应的规约,并设计 Hoare 逻辑来验证模块满足规约;通过贯穿示例和机器化证明展示方法,并证明逻辑的可靠性。
评估
通过一个贯穿示例与机器化证明进行说明,并证明所提出 Hoare 逻辑的 soundness。
原文摘要(Abstract)

In today’s complex software, internal trusted code is tightly intertwined with external untrusted code. To reason about internal code, programmers must reason about the potential effects of calls to external code, even though that code is not trusted and may not even be available. The effects of external calls can be limited if internal code is programmed defensively, limiting potential effects by limiting access to the capabilities necessary to cause those effects. This paper addresses the specification and verification of internal code that relies on encapsulation and object capabilities to limit the effects of external calls. We propose new assertions for access to capabilities, new specifications for limiting effects, and a Hoare logic to verify that a module satisfies its specification, even while making external calls. We illustrate the approach though a running example with mechanised proofs, and prove soundness of the Hoare logic.

链接与引用

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

BibTeX
@article{paperbot2889,
  title = {Reasoning about External Calls},
  author = {Sophia Drossopoulou and Julian Mackay and Susan Eisenbach and James Noble},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {9},
  number = {OOPSLA2},
  year = {2025},
  doi = {10.1145/3763064}
}