QCP (Qualified C Programming) 项目介绍及使用说明

QCP是由上海交通大学曹钦翔老师实验室在VST, VST-A的基础上进行开发的C程序验证工具。

原理说明

QCP延续了VST-A的思路,接受一个带标注的C程序为输入,会基于标注断言对C程序进行符号执行,生成待证明的Coq proof。用户只需要证明相关的Coq proof就能够完成对C程序的证明。

QCP项目分为C实现的符号执行部分和Coq实现的后端证明部分。

在符号执行部分,我们实现了更为丰富的标注语言,能够接受更加复杂的C程序语法,并且使用了strategy和SMT solver来进行断言的自动求解,减少了用户的证明工作量。我们将整个证明分别输出为四个文件:

在后端证明部分,我们实现了与VST类似的proof tactics。

相关论文发表

Xiwei Wu, Yueyang Feng, Tianyi Huang, Xiaoyang Lu, Shengkai Lin, Lihan Xie, Shizhen Zhao, Qinxiang Cao, "VEP: A Two-stage Verification Toolchain for Full eBPF Programmability" , in NSDI, Philadelphia, PA, USA, April, 2025.

开发人员名单和联系方式

李卷儒 - jarod@sjtu.edu.cn

吴熙炜 - yashen@sjtu.edu.cn

陆潇扬 - luxy1115@sjtu.edu.cn

前端语言、类型推断、符号执行

冯跃洋 - fyyvexoben@sjtu.edu.cn

符号执行、soundness proof

谢立汉 - sheringham@sjtu.edu.cn

SMT solver和proof checker开发和维护

王治奕 - ginwiahzy@gmail.com

strategy开发和维护,相关soundness proof证明

吴姝姝 - ciel77@sjtu.edu.cn

Relational Hoare Logic部分证明维护

林田川 - lintianchuan@foxmail.com

符号执行、soundness proof

钟泓逸 - zhonghongyi1204@sjtu.edu.cn

strategy parser开发和维护、部分并发用例的开发

张子涵 - 1032ghost@gmail.com

QCP网页端开发和维护

杨承羲 - arcadia-y@sjtu.edu.cn

Relational Hoare Logic、VSCode 插件开发、符号执行

刘衎 - liukanooo83@gmail.com

分离逻辑基础库、Relational Hoare Logic

刘思雨 - williamliusy@sjtu.edu.cn

断言处理与输出

方屹 - chnfy@stu.pku.edu.cn

断言处理与输出

陶浥尘 - ychtao@umich.edu

分离逻辑基础库

特别感谢詹乃军老师、胡振江老师和郁昱老师对QCP工具及其应用的指导,特别感谢董弈伯、周李韬、秦健行、王中烨、唐亚周、陈彦宁和刘涵之等同学在项目前期探索方面做出的贡献。