paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Solving String Constraints with Lengths by Stabilization

通过稳定化求解带长度的字符串约束
OOPSLA 7(OOPSLA2)2023匹配度 3/10 · 该论文属于字符串约束求解与SMT形式化验证,虽涉及程序分析与约束求解工具,但未涉及用户核心关注的LLM/Agent交叉、浮点程序分析或贝叶斯程序分析,仅有广义形式化验证层面的边缘关联。引用 17 inbox
Yu-Fang Chen, David Chocholatý, Vojtěch Havlena, Lukáš Holík, Ondřej Lengál, Juraj Síč
crossref: 2026-09-10

AI 速览

一句话:提出基于稳定化的字符串约束求解算法,可处理长度约束与不等关系,并集成到 SMT 求解器。

本文研究字符串约束的求解问题,特别是如何在避免组合爆炸的同时处理带线性整数算术长度的约束。作者在将字符串变量解释为语言而非单个字符串的最新词方程与正则约束方法之上,引入稳定化框架,并结合方程对齐与分裂原则来处理长度约束,同时扩展到其他常见字符串约束,包括无限制不等关系,从而覆盖无链片段这一最大可判定类之一。该算法被集成到基于 DPLL 的 SMT 求解器中。在来自字符串程序验证的多个基准上,实现性能与当前最优求解器相当,甚至在若干基准上显著更优。

问题
如何高效求解带有线性整数算术长度约束及其他常见约束的字符串约束,并缓解传统方法中的组合爆炸。
方法
将字符串变量解释为语言,基于词方程与正则约束的稳定化方法,结合方程对齐与分裂处理长度约束,并集成到基于 DPLL 的 SMT 求解器。
评估
在来自字符串程序验证的多个基准上对比当前最优字符串求解器,性能具有竞争力,且在若干基准上显著更优。
原文摘要(Abstract)

We present a new algorithm for solving string constraints. The algorithm builds upon a recent method for solving word equations and regular constraints that interprets string variables as languages rather than strings and, consequently, mitigates the combinatorial explosion that plagues other approaches. We extend the approach to handle linear integer arithmetic length constraints by combination with a known principle of equation alignment and splitting, and by extension to other common types of string constraints, yielding a fully-fledged string solver. The ability of the framework to handle unrestricted disequalities even extends one of the largest decidable classes of string constraints, the chain-free fragment. We integrate our algorithm into a DPLL-based SMT solver. The performance of our implementation is competitive and even significantly better than state-of-the-art string solvers on several established benchmarks obtained from applications in verification of string programs.

链接与引用

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

BibTeX
@article{paperbot1865,
  title = {Solving String Constraints with Lengths by Stabilization},
  author = {Yu-Fang Chen and David Chocholatý and Vojtěch Havlena and Lukáš Holík and Ondřej Lengál and Juraj Síč},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {7},
  number = {OOPSLA2},
  year = {2023},
  doi = {10.1145/3622872}
}