一句话:提出融合并行证明检查与回归选择的技术及工具 piCoq,显著加速 Coq 大规模验证项目的证明检查。
大规模 Coq 验证项目在每个修订后都需检查大量证明。已有工作可做文件级粗粒度并行,或利用 Coq 等 LCF 系证明助手的证明级细粒度并行,但未与只检查受变更影响证明的回归选择结合。本文提出融合并行证明检查与回归选择的技术,并实现 piCoq:它跟踪文件、定义与引理依赖,针对两个修订间的变更并行检查受影响的文件或证明,支持本地和持续集成。作者在多个大型开源项目的多轮修订上测量检查时间,发现证明级并行加选择显著更快:4 路并行比从头顺序检查最高快 28.6 倍,比带选择的顺序检查最高快 2.8 倍。
Large-scale verification projects using proof assistants typically contain many proofs that must be checked at each new project revision. While proof checking can sometimes be parallelized at the coarse-grained file level to save time, recent changes in some proof assistant in the LCF family, such as Coq, enable fine-grained parallelism at the level of proofs. However, these parallel techniques are not currently integrated with regression proof selection, a technique that checks only the subset of proofs affected by a change. We present techniques that blend the power of parallel proof checking and selection to speed up regression proving in verification projects, suitable for use both on users' own machines and in workflows involving continuous integration services. We implemented the techniques in a tool, piCoq, which supports Coq projects. piCoq can track dependencies between files, definitions, and lemmas and perform parallel checking of only those files or proofs affected by changes between two project revisions. We applied piCoq to perform regression proving over many revisions of several large open source projects and measured the proof checking time. While gains from using proof-level parallelism and file selection can be considerable, our results indicate that proof-level parallelism and proof selection is consistently much faster than both sequential checking from scratch and sequential checking with proof selection. In particular, 4-way parallelization is up to 28.6 times faster than the former, and up to 2.8 times faster than the latter.