paperbot · PL 论文追踪

全部论文 待读 收藏

P1 Solvable Tuple Patterns and Their Applications to Program Verification

可解元组模式及其在程序验证中的应用
PLDI 10(PLDI)2026匹配度 5/10 · 论文属于程序验证与静态分析领域,提出可解元组模式用于递归数据结构不变量推断并集成到 CHC 求解器,具备理论形式化和工程实现,且问题驱动;但未涉及 LLM/Agent、浮点或贝叶斯程序分析,与用户当前核心交叉方向匹配有限。引用 0 inbox
Naoki Kobayashi, Ryosuke Sato, Ayumi Shinohara, Ryo Yoshinaka
crossref: 2026-09-10

AI 速览

一句话:提出可从少量正样本高效推断的(合取)可解元组模式,并用于 CHC 求解器验证递归数据结构程序。

尽管自动化程序验证已有进展,全自动验证操作递归数据结构的程序仍很困难。本文提出可解元组模式(STP)与合取可解元组模式(CSTP),用于表达和推断类表递归数据结构之间的不变式。其显著特点是仅需少量正样本即可高效推断,无需负样本。作者给出 STP/CSTP 的性质与推断算法,并将 CSTP 推断集成到支持类表数据结构的 CHC(约束 Horn 子句)求解器中,作为自动化程序验证工具的统一后端。集成 (C)STP 推断的 CHC 求解器在 CHC-COMP 2025 的 ADT-LIN 赛道以显著优势夺冠。

问题
全自动验证操作递归数据结构(尤其是类表结构)的程序仍具挑战性,核心问题是如何有效表达并推断递归数据结构之间的不变式。
方法
提出 STP/CSTP 形式化,并设计仅依赖少量正样本、无需负样本的高效推断算法;随后将 CSTP 推断集成到支持类表数据结构的 CHC 求解器中。
评估
将集成 (C)STP 推断的 CHC 求解器用于自动化程序验证基准,并在 CHC-COMP 2025 的 ADT-LIN 赛道中以显著优势获胜。
原文摘要(Abstract)

Despite the recent progress of automated program verification techniques, fully automated verification of programs manipulating recursive data structures remains a challenge. We introduce solvable tuple patterns (STPs) and conjunctive STPs (CSTPs), novel formalisms for expressing and inferring invariants between list-like recursive data structures. A distinguishing feature of STPs is that they can be efficiently inferred from only a small number of positive samples; no negative samples are required. After presenting properties and inference algorithms of STPs and CSTPs, we show how to incorporate the CSTP inference into a CHC (Constrained Horn Clauses) solver supporting list-like data structures, which serves as a uniform backend for automated program verification tools. A CHC solver incorporating the (C)STP inference has won the ADT-LIN category of CHC-COMP 2025 by a significant margin.

链接与引用

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

BibTeX
@article{paperbot3767,
  title = {Solvable Tuple Patterns and Their Applications to Program Verification},
  author = {Naoki Kobayashi and Ryosuke Sato and Ayumi Shinohara and Ryo Yoshinaka},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {10},
  number = {PLDI},
  year = {2026},
  doi = {10.1145/3808258}
}