一句话:提出并评估 CPA-DF,一种基于区间抽象域的可配置数据流分析,可独立或并行增强程序验证。
程序验证常需辅助不变式提升效果。CPACHECKER 的 k-归纳实现利用可配置数据流分析生成不变式来强化归纳假设,CPA-DF 正是该生成器,以区间上的算术表达式为抽象域,并能独立证明部分安全验证任务。作者在 SV-Benchmarks 上广泛评估后发现其潜力被低估:作为独立分析,其证明数量接近无辅助不变式的 plain k-induction;作为与 plain k-induction 并行的子分析,可达到与经过深度优化并注入不变式的 k-induction 相当的任务求解数。分析表明动态精度调整对效率和效果至关重要。进一步用 CoVeriTeam 将 CPA-DF 与三个先进验证器组成并行组合,正确结果最多提升超过 20%。
Software verification is challenging, and auxiliary program invariants are used to improve the effectiveness of verification approaches. For instance, the k-induction implementation in CPACHECKER, an award-winning framework for program analysis, uses invariants produced by a configurable data-flow analysis to strengthen induction hypotheses. This invariant generator, CPA-DF, uses arithmetic expressions over intervals as its abstract domain and is able to prove some safe verification tasks alone. After extensively evaluating CPA-DF on SV-Benchmarks, the largest publicly available suite of C safety-verification tasks, we discover that its potential as a stand-alone analysis or a sub-analysis in a parallel portfolio for combined verification approaches has been significantly underestimated: (1) As a stand-alone analysis, CPA-DF finds almost as many proofs as the plain k-induction implementation without auxiliary invariants. (2) As a sub-analysis running in parallel to the plain k-induction implementation, CPA-DF boosts the portfolio verifier to solve a comparable amount of tasks as the heavily-optimized k-induction implementation with invariant injection. Our detailed analysis reveals that dynamic precision adjustment is crucial to the efficiency and effectiveness of CPA-DF. To generalize our results beyond CPACHECKER, we use CoVeriteam,a platform for cooperative verification, to compose three portfolio verifiers that execute CPA-DF and three other software verifiers in parallel, respectively. Surprisingly, running CPA-DF merely in parallel to these state-of-the-art tools further boosts the number of correct results up to more than 20 %. Demonstration video: https://youtu.be/l7UG-vhTL_4