paperbot · PL 论文追踪

全部论文 待读 收藏

P1 Synthesizing Implication Lemmas for Interactive Theorem Proving

为交互式定理证明合成蕴含引理
OOPSLA 9(OOPSLA2)2025匹配度 6/10 · 论文属于交互式定理证明中的引理自动合成,与“AI→PL:改进形式化验证”方向相关,且兼具技术与工具实现;但方法基于数据驱动的不变式推断,并未使用 LLM/Agent,也未涉及浮点程序分析或贝叶斯程序分析,因此与用户当前核心关注点存在一定距离。引用 0 inbox
Ana Brendel, Aishwarya Sivaraman, Todd Millstein
crossref: 2026-09-10

AI 速览

一句话:基于数据驱动的不变式推断,在 Rocq 中自动合成蕴含形式的辅助引理以减轻交互式证明负担。

交互式定理证明器(ITP)让程序员能形式化验证软件性质,但用户常需手工找出完成证明所需的辅助引理,尤其是定义关键归纳不变式的引理。现有引理合成方法对蕴含形式引理 P1 ∧ … ∧ Pn ⇒ Q 的支持十分有限。本文提出一种合成有用蕴含引理的技术与工具:基于当前目标与假设的样本赋值,采用数据驱动的不变式推断来探索当前证明状态的强化。作者将该方法实现为 Rocq 中的策略 dilemma。在来自《Verified Functional Algorithms》教材以及已有引理合成基准集的证明上,该工具能有效合成必要的辅助引理,验证了方法的实用性。

问题
交互式定理证明中,用户需要手工识别并陈述大量辅助引理(特别是蕴含形式的引理),而现有引理合成技术对此类引理的支持不足。
方法
采用数据驱动的不变式推断,根据当前目标与假设的样本赋值来探索证明状态的强化,并实现为 Rocq 策略 dilemma。
评估
在《Verified Functional Algorithms》教材中的证明和已有引理合成基准集上评估,展示其合成必要辅助引理的有效性。
原文摘要(Abstract)

Interactive theorem provers (ITP) enable programmers to formally verify properties of their software systems. One burden for users of ITPs is identifying the necessary helper lemmas to complete a proof, for example those that define key inductive invariants. Existing approaches to lemma synthesis for ITPs have limited, if any, support for synthesizing implications: lemmas of the form P 1 ∧ ⋅⋅⋅ ∧ P n ⇒ Q . In this paper, we propose a technique and associated tool for synthesizing useful implication lemmas. Our approach employs a form of data-driven invariant inference to explore strengthenings of the current proof state, based on sample valuations of the current goal and assumptions. We have implemented our approach in a Rocq tactic called dilemma . We demonstrate its effectiveness in synthesizing necessary helper lemmas for proofs from the Verified Functional Algorithms textbook as well as from prior benchmark suites for lemma synthesis.

链接与引用

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

BibTeX
@article{paperbot2915,
  title = {Synthesizing Implication Lemmas for Interactive Theorem Proving},
  author = {Ana Brendel and Aishwarya Sivaraman and Todd Millstein},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {9},
  number = {OOPSLA2},
  year = {2025},
  doi = {10.1145/3763131}
}