想象你是一位建筑质检员,面对一座刚竣工的大楼。施工方递上厚厚一沓图纸,每一页都画得像模像样,嘴上信誓旦旦“结构绝对安全”。但你的工作不是听他们讲故事,而是拿起检测仪器,一根钢筋、一袋水泥地现场实测——数据不会说谎。 这就是形式化验证在 AI 数学能力评测中扮演的角色。当 AI 模型在数学题面前滔滔不绝地写出“看起来不错”的证明时,传统阅卷方式只看文字是否通顺、结论数字是否凑对;而形式化验证评测,则像请来一位铁面无私的机器监考官——它用 Lean 这样的专业“测量仪”,把 AI 写出的每一个推理步骤逐条验算:依据是否齐全、步骤是否合法、链条是否完整。任何一步想蒙混过关,都会在它面前原形毕露。 在这篇文章里,我们将跟着这位“机器监考官”走一遍完整的验收流程:认识它凭什么如此严格(形式化概念)、熟悉它的工具包(验证工具链)、了解验收的全流程(评测流程)、弄懂验收单为什么可信(可信度保障)、学习考场规则如何设计(框架设计),最后展望这套质检体系将走向何方(应用展望)。

岗位关联

形式化验证评测让你手握一把“机器校准的尺子”,在 AI 数学能力评估中从“看感觉”升级为“看数据”——这是构建可信 AI 评测体系的核心职业技能。

目录
  1. 可视化演示
  2. 形式化概念
  3. 验证工具链
  4. 评测流程
  5. 可信度保障
  6. 框架设计
  7. 应用展望
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示形式化验证通过Lean等证明助手对模型生成证明进行严格类型检查的完整流程、工具对比及假阳性问题分析。

本节配有交互动效(进入视口后自动加载,约 3KB)。

'+captions.verify+'

形式化概念

一位建筑质检员接到任务:验收一座声称“结构安全”的大楼。施工方递上厚厚的图纸,每一页都画得像模像样。但质检员不会只看图纸漂亮,他走进工地,用手里的检测仪对每根承重柱做回弹测试——强度不够就是不够,图纸画得再美也做不了数。传统 AI 数学评测很像“看图纸”:阅卷者读 AI 写出的自然语言证明,觉得“步骤连贯、思路清晰”就判对。而形式化验证评测,则换上了那台“检测仪”。

形式化验证(Formal Verification)的核心思想,是把数学证明从“给人看的文字”变成“给机器验算的符号”——每一个名词都有精确的定义,每一步推理都踩在既定规则上,整条推理链可以被计算机逐环检查,不留任何“显然”“易得”的模糊地带。这正是对抗 AI 幻觉的一大利器:模型可以编造看似合理的步骤,但编造出来的推理在机器面前寸步难行。

以最简单的情况为例:要证明“对所有自然数 x、y,两数之和的平方等于各自平方之和加两倍乘积”。在 Lean 中,这句话被写成一个精确的命题:

有了这样一台“数学检测仪”,AI 想靠华丽措辞蒙混过关就彻底行不通了——每一步都被测出“硬度”数据,承重柱不够粗、混凝土标号不够高,一律打回重做。形式化验证最迷人的地方正在于此:它不信任语言,只信任规则。

∀(x y:N), (x+y)2=x2+2xy+y2\displaystyle \forall (x\ y : \mathbb{N}),\ (x + y)^2 = x^2 + 2xy + y^2
这是一个“目标命题”(Prop)。AI 模型的任务不是输出一个最终结论,而是构造出一步步通往该结论的证明项,让机器逐环核对。
  1. 全称量词$\forall (x\ y : \mathbb{N})$ 表示“任取自然数 x 和 y”,把所有可能的取值范围显式声明出来,不依赖任何隐含假设。
    ∀(x y:N)\displaystyle \forall (x\ y : \mathbb{N})
  2. 等式命题$(x + y)^2 = x^2 + 2xy + y^2$ 是要证明的核心结论,每一项都被精确定义,没有“约等于”。
    (x+y)2=x2+2xy+y2\displaystyle (x + y)^2 = x^2 + 2xy + y^2
  3. 证明即构造在 Lean 中,“证明”这个命题等同于构造出一个类型为该命题的表达式——机器验证它时,只按规则机械地检查类型是否匹配。
    proof:∀(x y:N), (x+y)2=x2+2xy+y2\displaystyle \text{proof} : \forall (x\ y : \mathbb{N}),\ (x + y)^2 = x^2 + 2xy + y^2

验证工具链

质检员手里的检测仪不能是杂牌货——读数不准,验收单就成了废纸。在形式化验证领域,Lean 就是目前最受信赖的“智能测量仪”之一。这台仪器由微软研究院主导开发,它提供了一门精确的形式化语言,让研究者把日常数学中的定义、定理、证明全部翻译成机器可读的符号,再由内核(kernel)逐条核对。

一个 Lean 定理通常由三部分组成:定理名、命题声明和证明脚本。以刚才的恒等式为例,完整写法大致是这样:

除了 Lean,Coq、Isabelle、Agda 也是常见的“测量仪”品牌。它们各有所长:Coq 在程序提取上历史悠久,Isabelle 有强大的自动化和可视化界面。选哪一台,要看“工地”的具体需求——是验证数学新猜想,还是对软件代码做形式化审计。工具链本身也在飞速进化,数学库 Mathlib 的持续扩充,让越来越多的题目能在 Lean 中“落地生根”。

theorem sq_sum (x y:N):(x+y)2=x2+2xy+y2:=by ring\displaystyle \text{theorem}\ \text{sq\_sum}\ (x\ y : \mathbb{N}) : (x + y)^2 = x^2 + 2xy + y^2 := \text{by ring}
其中 by ring 是调用“战术”(tactic)——相当于施工队里熟练的班组,自动完成多项式展开一类的机械劳动。战术模块是工具链的“熟练工”,而内核才是最终拍板的“总监理”。
  1. 定理声明$\text{theorem}\ \text{sq\_sum}$ 给定理起名,便于后续引用和复用,如同给建筑图纸编号归档。
    theorem sq_sum\displaystyle \text{theorem}\ \text{sq\_sum}
  2. 参数与目标$(x\ y : \mathbb{N}) : (x + y)^2 = \cdots$ 声明参数类型与目标命题——“输入两个自然数,输出一个等式的证明”。
    (x y:N):(x+y)2=x2+2xy+y2\displaystyle (x\ y : \mathbb{N}) : (x + y)^2 = x^2 + 2xy + y^2
  3. 战术调用$:= \text{by ring}$ 指示证明器用 ring 战术完成证明——该战术内置了环论重写规则,能自动展开多项式并化简。
    :=by ring\displaystyle := \text{by ring}

评测流程

质检员拿到施工方案后,不会直接冲进工地乱测一气,而是按标准流程走:先核对图纸、再现场取样、最后出报告。形式化验证评测也遵循一条标准流水线。以 MiniF2F 等基准测试为例,每道数学题的评测要经历三个环节:命题形式化、证明生成、验证器检查。

最初,评测人员把自然语言题目翻译成 Lean 中的形式化命题——这一步叫“形式化”,相当于把施工意图变成精确的施工规范。然后,模型开始“施工”:它生成一个形式化证明项或策略脚本。最后,Lean 内核充当“验收员”对证明逐条检查。整个流程可以用一组箭头清晰表示:

这套流程最大的价值在于裁决标准全程不变。自然语言评测中,换一个阅卷人分数就可能波动;而形式化验证只要工具链版本锁定,任何人、任何地点重跑都能得到相同结论——这正是机器监考官最令人安心的品质。

Problem→formalizeGoal→generateProof→checkAccept / Reject\displaystyle \text{Problem} \xrightarrow{\text{formalize}} \text{Goal} \xrightarrow{\text{generate}} \text{Proof} \xrightarrow{\text{check}} \text{Accept / Reject}
这个“形式化 → 生成 → 检查”的链路,就是数学能力评测的标准动作。每一步都有明确的输入输出,没有模糊地带。
  1. 形式化$\text{Problem} \xrightarrow{\text{formalize}} \text{Goal}$ 把自然语言题面翻译成 Lean 命题,剔除一切歧义。
    Problem→formalizeGoal\displaystyle \text{Problem} \xrightarrow{\text{formalize}} \text{Goal}
  2. 证明生成$\text{Goal} \xrightarrow{\text{generate}} \text{Proof}$ AI 模型基于目标搜索证明策略——既可一次生成完整证明,也可与环境交互逐步推导。
    Goal→generateProof\displaystyle \text{Goal} \xrightarrow{\text{generate}} \text{Proof}
  3. 验证器裁决$\text{Proof} \xrightarrow{\text{check}} \text{Accept / Reject}$ 内核逐条验证,不通过则整题记为失败——没有“一半正确”的中间地带。
    Proof→checkAccept / Reject\displaystyle \text{Proof} \xrightarrow{\text{check}} \text{Accept / Reject}

可信度保障

请来的检测仪再高级,如果它本身会出错,验收单依然是一张废纸。质检员信任一台仪器,靠的是它经过计量检定、内部结构透明可查。形式化验证领域同样面临“为什么相信验证器”这个根本问题。1970 年代,爱丁堡大学的 LCF 项目提出了一个划时代的思路:把信任缩小到一个极致精简的内核(kernel)。

Lean 的 kernel 只实现少数几条基本推理规则,其中最重要的一条是“蕴含消除”(modus ponens):

当然,人机协同审查依然重要:验证器只能证明“推理链合法”,不能保证“链子另一端连着现实世界的问题”。所以评测方会给结果分可信度等级——完全自动化验证的结论是高置信,依赖人工补写证明片段的是中置信,仅仅形式化到一半的是低置信。误差来源也要单独分析:是命题形式化偏差、工具链版本差异,还是评测集泄露导致的高估。有了这套保障机制,“机器监考官”的验收单才真正值得盖章放行。

Γ⊢A→BΓ⊢AΓ⊢B\displaystyle \frac{\Gamma \vdash A \to B \quad \Gamma \vdash A}{\Gamma \vdash B}
意思是:如果既能证明 A 蕴含 B,又能证明 A,那么 B 就被合法地推出。内核之外的所有策略、库函数都只是“生成证明线索的辅助工具”,最终裁决权始终掌握在内核手里。
  1. 蕴含已证$\Gamma \vdash A \to B$ 表示在当前上下文 $\Gamma$ 下,“A 蕴含 B”已被证明成立。
    Γ⊢A→B\displaystyle \Gamma \vdash A \to B
  2. 前提已证$\Gamma \vdash A$ 表示 A 本身也已经成立——两个前提缺一不可。
    Γ⊢A\displaystyle \Gamma \vdash A
  3. 横线推出$\frac{\text{前提}}{\text{结论}}$ 是“由此推出”的元规则——内核检查时只看这一步是否符合规则,不关心证明者是谁、语言多华丽。
    Γ⊢B\displaystyle \Gamma \vdash B

框架设计

一场考试要想公平,考场规则必须提前公示,答案标准必须唯一。形式化验证评测的“考场”,正是在公平性与可复现性这两个核心原则下搭建起来的:测试题不参与模型预训练,数据集划分公开透明,工具链版本锁定,随机种子固定,让第三方能原样重跑实验。评测框架设计的四个关键支柱是公平性原则、可复现性方案、基准数据集与基线对比。

一个最常用的量化指标是通过率(accuracy),它的定义极为朴素:

可复现性要求评测方把数据集、工具链版本、随机种子全部公开,就像考场规则提前公示;公平性要求测试题严格保密划分,防止模型“背题”——如果一道题已经被 AI 见过,它就不是在证明数学,而是在默写答案。基线对比则是在同一套“考场”里用多个参考模型跑出参照系,检验新模型的真实增量。这套框架让形式化验证评测从“看热闹”走向“看门道”,成为数学能力评估中可信赖的成绩单。

Accuracy=NverifiedNtotal×100%\displaystyle \text{Accuracy} = \frac{N_{\text{verified}}}{N_{\text{total}}} \times 100\%
其中 $N_{\text{verified}}$ 是通过机器验证的题目数,$N_{\text{total}}$ 是测试集总题数。由于验证结果是 0/1 的硬判定,这个指标在不同环境下具有良好的可比性。
  1. 分子$N_{\text{verified}}$ 只有通过内核验证的题才计入,不接受“步骤看着差不多”的题。
    Nverified\displaystyle N_{\text{verified}}
  2. 分母$N_{\text{total}}$ 测试集中的每一道题都必须预先完成形式化,且题面不依赖任何未公开数据。
    Ntotal\displaystyle N_{\text{total}}
  3. 百分比换算$\times 100\%$ 把通过率折算成直观的百分制,方便与自然语言评测的分数在同一尺度下对照。
    ×100%\displaystyle \times 100\%

应用展望

质检体系最初只用于核电站等极严苛的场合,如今却走进了普通工地。形式化验证评测也正沿着类似的轨迹,从学术象牙塔走向产业一线。在学术研究中,MiniF2F、ProofNet 等数据集已经成为大模型数学能力的“标尺”;在工业界,DeepSeek-Prover、AlphaProof 等系统开始把形式化验证作为核心反馈信号,驱动模型自我迭代——验证器说“错”,模型就重写证明,直到通过为止。

值得注意的是,业界逐渐倾向于把形式化评测与传统指标结合起来,形成综合能力画像。毕竟,一个只会写机器可读证明却讲不清思路的模型,在教学场景中同样寸步难行。

不过,这套体系仍面临真正的“施工难题”:把自然语言题目形式化成 Lean 命题需要专业功底,成本不低;证明搜索的算力开销巨大;数学库覆盖范围远未完备。未来,随着 AI 辅助形式化工具的成熟和 Mathlib 社区生态的扩张,形式化验证评测有望从“专家把关”走向“全民可用”。到那时,任何一个 AI 模型想宣称自己“数学很强”,都得先过机器监考官这一关——用数据说话,而不是用措辞。

Score=λ⋅Sformal+(1−λ)⋅Snatural,0≤λ≤1\displaystyle \text{Score} = \lambda \cdot S_{\text{formal}} + (1 - \lambda) \cdot S_{\text{natural}}, \quad 0 \le \lambda \le 1
其中 $S_{\text{formal}}$ 是形式化验证通过率,$S_{\text{natural}}$ 是传统自然语言评分,$\lambda$ 是调节两者权重的参数。
  1. 形式化分数$S_{\text{formal}}$ 反映模型在机器可验证明上的硬实力——严谨、无幻觉。
    Sformal\displaystyle S_{\text{formal}}
  2. 自然语言分数$S_{\text{natural}}$ 衡量模型把推理讲清楚的能力——教学、对话中同样重要。
    Snatural\displaystyle S_{\text{natural}}
  3. 权重参数$\lambda$ 决定两种能力在总分中的比重,0 表示完全传统评分,1 表示完全形式化验证。
    0≤λ≤1\displaystyle 0 \le \lambda \le 1

AI 应用场景

数学竞赛级基准评测

阶段:基础模型评测与排行榜构建

解决的问题:人工阅卷对 AI 生成的数学证明评分慢、主观性强,而且面对“看起来合理实则跳步”的证明很难准确判断。形式化验证用 Lean 自动检查模型在 MiniF2F 等基准上的每一步推理,判定结果非黑即白,彻底消除阅卷主观性。

具体案例:DeepSeek-Prover 系列在训练中把 Lean 验证器的通过/拒绝信号作为强化学习奖励。模型每写一步证明,验证器立刻检查,通过率从 13.8% 提升到 46.3% 左右;最终评测时,同一套验证器再作为“考官”把关,训练与评测共用一把尺子。

安全关键软件的数学保证

阶段:模型上线前的合规评估与部署决策

解决的问题:自动驾驶、金融风控等场景中,模型逻辑漏洞后果严重。传统测试只能覆盖有限样例,无法穷尽所有情况。形式化验证将模型的关键性质转化为定理,用机器证明“这个规则在所有输入上都成立”。

具体案例:某商业银行将贷款风控规则形式化为一组逻辑约束,再用验证器检查新模型是否违反监管要求(如不得对特定群体歧视性定价)。模型上线前自动生成“验收合格证”,审计人员只需核对验证报告。

智能教育中的证明批改

阶段:学习反馈闭环

解决的问题:老师批改数学证明题时,难以对每一步推理单独给出反馈。形式化验证把学生的证明路径拆成可检查的步骤,精确定位“这一步不能从前文推出”。

具体案例:在线数学平台让学生用 Lean 编写证明,系统逐行反馈:“第 3 步依据不充分”,并提示可用的战术库命令。学生像打游戏一样反复修改,直到验证器亮起绿灯,推理能力在迭代中稳步提升。

Python 演示

python47 行
class ProofVerifier:    """极简证明验证器: 展示形式化验证'每一步合法才放行'的核心理念."""     def __init__(self):        self.known = set()          # 已接受的命题集合        self.trace = []             # 验证轨迹     def add_axiom(self, statement):        """把公理加入已知命题集合."""        self.known.add(statement)        self.trace.append(("axiom", statement))     def verify_step(self, rule, premises, conclusion):        """检查一步推理是否合法; 合法则接受结论."""        if not all(p in self.known for p in premises):            return False        if rule == "and_intro":            expected = "({} and {})".format(premises[0], premises[1])            valid = len(premises) == 2 and conclusion == expected        elif rule == "mp":            implies = "({} -> {})".format(premises[0], premises[1])            valid = implies in self.known        else:            valid = False        if valid:            self.known.add(conclusion)            self.trace.append((rule, premises, conclusion))        return valid  def run_demo():    v = ProofVerifier()    v.add_axiom("x>0")    v.add_axiom("(x>0 -> y>0)")    ok1 = v.verify_step("mp", ["x>0", "y>0"], "y>0")    ok2 = v.verify_step("and_intro", ["x>0", "y>0"], "(x>0 and y>0)")    ok3 = v.verify_step("mp", ["x>0", "z>0"], "z>0")  # 非法: 缺蕴含前提    print("mp inference y>0:", ok1)    print("conjunction (x>0 and y>0):", ok2)    print("illegal inference z>0 rejected:", not ok3)    print("verification trace:")    for act in v.trace:        print("  ->", act)  if __name__ == "__main__":    run_demo()
目的:用 Python 实现一个微型证明验证器,模拟 Lean kernel 的核心机制——每一步推理必须依据已知命题,只有验证器是唯一的“放行入口”。
  1. if not all(p in self.known for p in premises):像质检员先核对材料是否在场:前提中任何一个命题不在已证集合里,这一步直接拒绝。
  2. expected = "({} and {})".format(premises[0], premises[1])合取引入规则要求结论必须恰好是“前提 1 与 前提 2”的拼接,格式错一丝都不行。
  3. valid = implies in self.known蕴含消除(mp)要求“蕴含式”本身先被证明存在,这是 Lean 内核中 modus ponens 的朴素映射。
  4. self.known.add(conclusion)只在此处添加新命题:验证器是唯一“盖章放行”的入口,对应信任根设计。
  5. v.verify_step("mp", ["x>0", "z>0"], "z>0")故意构造非法推理:由于缺少 (x>0 -> z>0) 蕴含前提,被验证器拒绝,展示“结论正确但推理非法”的判负逻辑。
  6. for act in v.trace:打印验证轨迹,对应评测报告中的可追溯性——每一步都有据可查。

常见误区

误区“形式化验证就是拿计算器把答案算一遍,结果对就算通过,和普通判题没区别。”

正解计算器只能验证数值结果,形式化验证验证的是完整的推理链。即便结论碰巧正确,只要中间任何一步依据不足,内核就会拒绝。打个比方:计算器只检查“大楼总高度是否达标”,形式化验证则检查“每一层楼板的钢筋是否达标”。推理链条的完整性,才是它区别于抽查式评测的根本。

为何常见:日常中“验证”一词被计算器等工具占据了直觉,人们容易把“验证结果”误解为“验证过程”。

误区“只要 Lean 验证通过了,这个证明一定正确,没有任何风险。”

正解内核保证的是“证明项在逻辑上合法”,但有一个重要前提:形式化系统本身的公理一致。如果研究者错误地加入了一条与现有系统矛盾的扩展公理,系统内部可能推出不一致,从而“证明”任何命题。同时,形式化翻译阶段本身可能误解了原题——机器检验的是一道被翻译过的题,翻译错了,检查再严也徒劳。

为何常见:人们对机器给出的“通过”判定往往过度信赖,忽略了“翻译环节”和“公理基础”这两个前置假设。

误区“形式化验证评测只对奥数这类纯数学题有意义,工程里根本用不上。”

正解恰恰相反,形式化验证最早成熟于软件与硬件验证领域:操作系统内核、编译器、芯片设计都有大量成功案例。在 AI 评测中,它既能评测量模型的数学能力,也能评测代码生成模型、推理规划模型;Lean 的数学库 Mathlib 已覆盖从中学到研究级的广泛命题。

为何常见:因为最近热门的 MiniF2F 等基准聚焦竞赛题,让大家误以为形式化验证的数学库只能覆盖到这个范围。

误区“有了形式化验证,任何数学题都能立刻被 AI 证明并验证,不需要人工做额外工作。”

正解现实中,每道题都需要经过专业的形式化翻译,人力成本不低;数学库覆盖面有限,许多高等问题难以表达;证明搜索的算力开销也很大。形式化验证是一种需要“前期投入”的严谨评测,而不是即插即用的插件。好比检测仪虽准,但每种材料都要先完成取样与制样。

为何常见:看到验证器对竞赛题表现神勇,容易高估工具链的即时可用性,忽略了背后的数据建设与工具打磨。

面试题

Q1. 形式化验证评测中,“验证器”最核心的作用是?

单选题 · easy

  • A.给出主观印象分档
  • B.替代模型生成完整证明
  • C.对每道题进行难易排序
  • D.逐条检查推理步骤合法性← 正确答案

答案:D。验证器像“机器监考官”,逐条检查推理步骤是否合法,不靠主观印象、不负责生成证明,也不做难度排名。它只回答一个二元问题:每一步是否符合推理规则。

Q2. 下列哪些属于形式化验证工具链中的定理证明器?

多选题 · mid

  • A.Lean 证明助手← 正确答案
  • B.Coq 证明助手← 正确答案
  • C.Isabelle 证明仪← 正确答案
  • D.PyTorch 训练库

答案:ABC。Lean、Coq、Isabelle 都是主流的交互式定理证明器,用于把数学证明形式化并交给内核验证。PyTorch 是深度学习训练框架,不参与数学证明的验证工作。

Q3. 在 Lean 中,“证明一个命题”本质上相当于?

单选题 · easy

  • A.给命题取个英文名字
  • B.用自然语言描述思路
  • C.构造该命题的证明项← 正确答案
  • D.把命题打印到屏幕上

答案:C。Lean 基于 Curry-Howard 对应,“命题即类型、证明即程序”。证明一个命题,就是构造出一个类型为该命题的表达式(proof term)。起名、描述或打印都不产生任何验证效力。

Q4. 形式化验证评测流程的正确顺序是?

单选题 · mid

  • A.生成证明再形式化再检查
  • B.内核检查后生成再形式化
  • C.形式化目标后检查再生成
  • D.形式化目标后生成再检查← 正确答案

答案:D。评测流程是“先形式化目标 → 再让模型生成证明 → 最后由内核检查”。这就像施工流程:先画精确图纸、再施工、最后验收,顺序颠倒就会乱套。

Q5. 关于 Lean 内核的“信任根”设计,下列正确的是?

多选题 · hard

  • A.内核越小安全边界越可控← 正确答案
  • B.策略仍要内核验证证明项← 正确答案
  • C.内核信任所有高层自动化策略
  • D.内核只实现少数基本推理规则← 正确答案

答案:ABD。LCF 思想是把信任压缩到一个小内核,所有策略(tactics)生成的证明项最终都要交给内核检查,内核不信任任何高层自动化策略。这正是“小内核”安全边界的设计精髓。

Q6. MiniF2F 在形式化验证评测中扮演的角色是?

单选题 · mid

  • A.聊天机器人评价框架
  • B.自动生成数学考题的模型
  • C.竞赛题形式化的公开基准集← 正确答案
  • D.图形化的证明器操作界面

答案:C。MiniF2F 是一个跨形式化系统的竞赛数学基准集,题目来自 AMC、AIME、IMO 等来源,被翻译成 Lean、Metamath、Isabelle 等格式,用于统一评测模型的形式化证明能力。

Q7. 评测框架设计中,保障“可复现性”最关键的做法是?

单选题 · mid

  • A.公开评测环境与全部参数← 正确答案
  • B.让模型自行报告训练配置
  • C.只公布最终成绩排名
  • D.引入人工专家随机抽查

答案:A。可复现要求公开数据集划分、工具链版本、随机种子等评测环境与参数,让第三方能重跑出相同结论。依赖模型自报配置不具约束力;只公布排名无法复核;人工抽查不解决可复现问题。

Q8. 形式化验证通过率 Accuracy 的分子是?

单选题 · easy

  • A.模型输出的总字数统计
  • B.验证器被调用的总次数
  • C.通过内核验证的题目数量← 正确答案
  • D.测试集包含的总题目数

答案:C。Accuracy 的分子是通过内核验证的题目数,分母才是测试集总题数。只有机器验证通过的才算数,“写得长”“调用次数多”都不能计入分子。

Q9. 关于形式化验证评测的误差来源,下列正确的是?

多选题 · hard

  • A.验证器证明正确绝无出错
  • B.形式化阶段可能误解原题意← 正确答案
  • C.工具链版本差异导致结果漂移← 正确答案
  • D.训练集数据泄露造成评测高估← 正确答案

答案:BCD。A 过于绝对——验证器自身也可能有实现 bug,历史上 Lean 的类型检查器就发现过缺陷。其余三项都是真实存在的误差来源:形式化翻译有偏差、工具链版本不同结果可能漂移、训练集泄露会造成虚假高分。

Q10. 在依赖类型理论中,Pi 类型(∏)统一了两个看似不同的概念,它们是?

单选题 · extreme

  • A.合取引入与析取消去
  • B.全称量化与函数类型← 正确答案
  • C.蕴含引入与归谬法
  • D.等式替换与类型转换

答案:B。Pi 类型 ∏x:A, B(x) 同时表达了“对所有 x 命题 B(x) 成立”的全称量化,以及“输入 x 输出类型 B(x) 的值”的函数类型。这是 Curry-Howard 对应的深层体现,也是 Lean 内核的理论基石。