一句话:提出符号导数引导的符号执行,借助 LTLf 规约与符号自动机剪枝,高效证伪带不透明库的程序中数据结构安全性质。
论文研究面向与有副作用、不透明库交互的函数式程序的符号执行(SE)过程。方法上,允许用有限迹线性时序逻辑(LTLf)书写库与抽象数据类型(ADT)方法的规约,并将其解释为符号有限自动机(SFA),从而实现规约引导的智能路径探索:规约刻画 ADT 方法及其所依赖库方法允许执行的、按时间排序的事件可行迹,作者据此构造相应方法的可行符号输入状态,并将安全性质编码到同一形式化框架中。更重要的是,论文引入符号导数(symbolic derivatives)机制,使 SE 过程能够依据规约中潜藏的自动机结构与待证伪的安全性质,对需要探索的前置状态集合做智能欠近似。直观上,导数让符号执行利用基于迹的规约所定义的时间约束,快速剪除无产出路径并发现可行的错误状态。实验在一系列具有挑战性的 ADT 实现上验证了该方法的有效性。
We consider the formulation of a symbolic execution (SE) procedure for functional programs that interact with effectful, opaque libraries. Our procedure allows specifications of libraries and abstract data type (ADT) methods that are expressed in Linear Temporal Logic over Finite Traces (LTL f ), interpreting them as symbolic finite automata (SFAs) to enable intelligent specification-guided path exploration in this setting. We apply our technique to facilitate the falsification of complex data structure safety properties in terms of effectful operations made by ADT methods on underlying opaque representation type(s). Specifications naturally characterize admissible traces of temporally-ordered events that ADT methods (and the library methods they depend upon) are allowed to perform. We show how to use these specifications to construct feasible symbolic input states for the corresponding methods, as well as how to encode safety properties in terms of this formalism. More importantly, we incorporate the notion of symbolic derivatives , a mechanism that allows the SE procedure to intelligently underapproximate the set of precondition states it needs to explore, based on the automata structures latent in the provided specifications and the safety property that is to be falsified. Intuitively, derivatives enable symbolic execution to exploit temporal constraints defined by trace-based specifications to quickly prune unproductive paths and discover feasible error states. Experimental results on a wide-range of challenging ADT implementations demonstrate the effectiveness of our approach.
DOI 原文 · arXiv · PDF(开放获取) · DBLP
@article{abs-2411-02716,
title = {Derivative-Guided Symbolic Execution},
author = {Yongwei Yuan and Zhe Zhou and Julia Belyakova and Suresh Jagannathan},
journal = {Proceedings of the ACM on Programming Languages},
volume = {9},
number = {POPL},
year = {2025},
doi = {10.1145/3704886}
}