← 返回 News

QCP · 竞赛动态

第二届定理证明竞赛人与 AI 协作赛道决赛举行

作为 CCF 中国软件大会 2026 的竞赛活动之一,本场决赛于 11 月 8 日举行。选手通过 QCP 与 CStar 展开三小时的程序验证竞赛,8 名选手完成全部 8 道题目,共 13 名选手获奖。

CCF 中国软件大会 2026(ChinaSoft 2026)于 11 月 6 日至 8 日在天津举行,由中国计算机学会(CCF)主办。 定理证明竞赛是大会竞赛活动之一,为定理证明与程序验证领域的学生、从业者和爱好者提供交流与实践的机会。

CCF 中国软件大会 2026 官网的定理证明竞赛介绍,包含大会横幅和竞赛目的
ChinaSoft 2026 官网的定理证明竞赛介绍。查看官方赛事页面。

2026 年 11 月 8 日 9:00—12:00,第二届定理证明竞赛人与 AI 协作赛道(LLM/AI 辅助证明赛道)线下决赛在天津社会山国际会议中心酒店举行,设置了 8 道 C 程序验证题目。

本届竞赛设置人工证明与 LLM/AI 辅助证明两个赛道。其中,今年新增的 AI 辅助赛道采用线上初赛与线下决赛相结合的形式,两场初赛分别于 9 月 20 日、10 月 10 日举行,旨在通过比赛促进定理证明的学习、教学与研究,探索人与大模型协作完成程序验证。

本场比赛采用个人参赛形式,允许选手使用 AI 辅助解题,通过 QCP 或 CStar 提交验证结果,并要求如实说明 AI 的使用情况。选手可以先阅读全部题面,但同时最多打开两道题,下载相应的程序代码、形式化定义和相关材料;成功解答或永久放弃其中一道题后,才能打开新的题目。

决赛首先按通过题目数量排名;通过题数相同时,再比较最后一次成功提交距开赛的分钟数,加上初赛排名的一半。初赛排名取两次初赛中较好的一次,未参加初赛或排名低于第 30 名的,按第 30 名折算。

决赛成绩与获奖名单

本场决赛共有 19 名选手取得有效成绩,其中 8 名选手通过全部 8 道题目。

沈皓(tsuki)以 50 分钟的决赛用时率先完成全部题目。计入初赛折算时间后,其最终计时为 52 分钟,位列榜首。陶四能(taosn12)以 79 分钟完成全部题目,最终计时为 85.5 分钟。两位选手均使用 QCP,获得本次比赛一等奖。

程章(mongo)、王瑞涵(pinecone)、蒋欣桐(pineapple)、赵毅龙(firepunch)、陆华毅(green)和曹一川(caoyichuan)也完成了全部题目。其中,赵毅龙使用 CStar,其余五位选手使用 QCP。

综合最终成绩,本次比赛评出 一等奖 2 名、二等奖 4 名、三等奖 7 名。

奖项 姓名 选手 ID 通过题数 使用工具
一等奖 沈皓 tsuki 8 QCP
一等奖 陶四能 taosn12 8 QCP
二等奖 程章 mongo 8 QCP
二等奖 王瑞涵 pinecone 8 QCP
二等奖 蒋欣桐 pineapple 8 QCP
二等奖 赵毅龙 firepunch 8 CStar
三等奖 陆华毅 green 8 QCP
三等奖 曹一川 caoyichuan 8 QCP
三等奖 张书豪 studyingfather 7 CStar
三等奖 叶永舜 shreckye 6 QCP
三等奖 郭思远 gsy 6 CStar
三等奖 郭达凯 guodk 6 QCP
三等奖 江忻然 jiangxinran 6 QCP

祝贺各位获奖选手!

定理证明竞赛现场合影
定理证明竞赛现场合影。

决赛题目与验证任务

决赛题目涵盖了多种算法与数据结构。本场决赛的 8 道题包括最长合法括号子序列、汉堡的最大制作数量、批量区间操作后的数组、合法花序的区间计数、给定位数和数位和的最小与最大数,以及 RSA 编解码、哈希表实现的最长连续序列和 Two-Way 字符串匹配。前五道题涉及贪心、二分查找、差分数组、动态规划与前缀和等方法,要求选手证明给定程序确实满足题目规定的结果。

RSA 题基于 mini-gmp 的大整数接口实现密钥生成与编解码,题目允许模数最多为 4096 位。程序根据两个不同的奇素数生成公钥和私钥,编码与解码中的模幂运算均采用蒙哥马利模乘。选手需要证明:在规定的输入条件下,消息经过编码和解码后能够恢复原值,同时保持输入对象不变。这一要求也包括消息为零或为素数因子倍数的情形。

题目提供 mini-gmp 基础操作与分配函数的外部规约;选手需要为密钥生成、编解码和蒙哥马利辅助函数补充内部规约,并完成循环不变式、数学引理与证明标注,将数论性质与大整数对象的内存操作联系起来。

最长连续序列题采用哈希表记录数组中出现过的整数,去除重复值,再从每段连续序列的起点逐一查找后继,计算最长段的长度。本题只提供最外层的最终规格,哈希表专用谓词和内部函数规约需要选手自行补充,考察从数据结构实现到整体算法性质的验证能力。

Two-Way 字符串匹配取材于 musl libc 的内部 twoway_strstr 函数。比赛提供的适配版核心函数有 141 行非空 C 代码(不计注释和规格),包含最大后缀计算、周期判断、位移表和增量探测文本末端等处理。算法将模式串分为两部分,先比较右半段,再比较左半段,并利用周期信息和末字节筛选跳过不可能匹配的位置。

选手需要证明这些跳转不会遗漏最早的匹配:函数返回模式串在文本中第一次完整出现的位置,或者在不存在匹配时返回空指针,并保持输入字符串不变。验证还涉及数组访问、指针与整数运算的安全性;题目提供 memcmp 和 memchr 的外部规约,验证范围为内部匹配函数。

这些题目要求选手理解程序与待证性质,补充能够由验证工具检查的证明。AI 可以参与生成标注和证明,选手则需要判断生成内容是否符合题目要求,并根据验证反馈继续修改。

定理证明竞赛现场,选手使用笔记本电脑解题
定理证明竞赛现场。

QCP 与 CStar 工具简介

QCP(Qualified C Programming)是一款面向 C 程序的形式化验证工具。用户为程序添加函数前后置条件、循环不变式等规约与标注,QCP 通过符号执行和分离逻辑推理生成验证条件,并支持在 Rocq 或 Lean 中完成相应证明,用于检查程序的安全性与功能正确性。

CStar(C*)是一种面向 C 程序验证、融合开发与证明的系统编程语言。它允许用户在同一份源码中编写程序、规约和证明,并以 C 风格的语法组织证明步骤,将程序实现与正确性证明结合起来。

两个工具均提供在线评测平台,供选手提交并检查验证结果。读者可以通过 QCP 决赛赛事页面和 CStar 决赛赛事页面了解比赛内容,也欢迎使用两个平台学习和实践程序验证。

本届人与 AI 协作赛道的两场线上初赛与线下决赛至此结束。感谢所有参赛选手的参与,感谢竞赛主办单位浙江望安科技有限公司,以及承办单位 TPChina 定理证明开放社区、浙江大学、上海交通大学的组织与支持,也感谢赛事组织与评审委员会、命题人员和平台维护人员的工作。