警局里来了两位风格迥异的老刑警。老李办案喜欢顺着物证一路往前摸:现场发现一把钥匙、一张便条,他就推断出嫌疑人曾进入房间;小张则习惯倒着查:先假设凶手是某人,再回头搜集能支撑这个假设的目击证词。两人破案率不相上下,但办案日志的格式完全不同。在逻辑学世界里,这两种风格恰好对应两套经典的形式推理系统——自然演绎(Natural Deduction)与序列演算(Sequent Calculus)。 1935 年,德国逻辑学家格哈德·根岑(Gerhard Gentzen)同时提出这两套系统,本意是还原数学家真实的推理直觉。自然演绎像老李的顺推日志:从已知前提一步步得出新结论;序列演算像小张的倒查报告:从想证明的目标反推还缺哪些证据。它们的共同点,是把「想清楚」变成可以逐行核对的符号操作——这正是机器能自动执行推理的基石。理解了这两套系统,你就理解了自动定理证明器、交互式证明助手乃至 AI 形式化验证背后的「推理引擎」。
对 AI 从业者而言,自然演绎与序列演算是理解定理证明器、证明助手和神经符号推理的底层语法;掌握它们,等于拿到了读懂现代 AI 推理系统设计图纸的钥匙。
可视化演示
通过自然演绎证明树、序列演算左右规则应用和Cut消除过程,直观展示两种逻辑推理系统的核心机制与等价性。
本节配有交互动效(进入视口后自动加载,约 3KB)。
自然演绎证明树 引入规则(→I)构造蕴涵式证明 消去规则(→E)使用已知蕴涵进行推理 Γ, A ⊢ B ⇒ Γ ⊢ A→B 每个连接词有对称的引入和消去规则对
推理系统概述
警局里来了两位风格迥异的老刑警。老李办案喜欢顺着物证一路往前摸:现场发现一把钥匙、一张便条,他就推断出嫌疑人曾进入房间;小张则习惯倒着查:先假设凶手是某人,再回头搜集能支撑这个假设的目击证词。两人破案率不相上下,但办案日志的格式完全不同。在逻辑学世界里,这两种风格恰好对应两套经典的形式推理系统——自然演绎(Natural Deduction)与序列演算(Sequent Calculus)。
1935 年,根岑同时提出这两套系统,本意是还原数学家真实的推理直觉。自然演绎像老李的顺推日志:从已知前提一步步得出新结论;序列演算像小张的倒查报告:从想证明的目标反推还缺哪些证据。它们的共同点,是把「想清楚」变成可以逐行核对的符号操作——这正是机器能执行推理的前提。
形式证明系统的核心是一条条推理规则。每条规则都写成「横线上方是若干前提,横线下方是一个结论」的格式,就像警局的办案手册规定:只要满足这些前提,就可以签署这张结论。
老李和小张的手册都遵循这套「前提推断结论」的格式,只是办案方向相反。前者把规则写成从上往下生长,后者把规则倒过来从下往上查找需要哪些前提。有了这两份手册,机器侦探才有可能按图索骥。
- 前提(分子)横线上方列出推理所需要的已有命题,相当于办案时已到手的证据。
- 横线表示「根据这条规则可以推出」的动作,相当于笔录里「据此判断」。
- 结论(分母)横线下方是得到的新命题,相当于新签发的调查结论。
- 规则名右侧标注规则身份,如 (∧I) 表示合取引入规则。
自然演绎入门
老李的顺推日志有个特点:他允许在笔记本上临时写一条「假设」。比如他假设嫌疑人当晚在酒吧,若这个假设能推出不在场证明不成立,他就会把整段推理写成「若在酒吧,则不在场证明有问题」——这就是在推理过程中引入并随后消去假设。自然演绎正是把这个动作规则化为「蕴含引入」规则。
自然演绎的规则分成两组:引入规则负责「合成」新公式,消去规则负责「分解」已有公式。推理过程通常画成树状:树根是结论,叶子是前提与被消去的假设,枝干是规则使用记录。每个证明都是一棵「案卷树」,可逐层检查。
蕴含引入规则是自然演绎最有特色的规则。它允许我们开一个临时假设 A,在假设下推出 B,然后合上假设,得到结论 A→B。方括号表示这个假设只在局部有效。
老李把这页合上之后,临时假设就「结案归档」,不再作为全局证据出现。正是这种「开假设—推结论—销假设」的机制,让自然演绎非常贴近人类数学证明的书写习惯,读起来像一份有人情味的破案报告。
- 临时假设 [A]方括号表示把 A 临时加入证据,像侦探在笔记上写「假设某人是凶手」。
- 推导链 ⋮从 A 出发,经过若干步推理得到 B,代表案卷中间省略的若干页。
- 结论 A→B把临时假设兑现为一条蕴含命题:只要 A 成立,B 就成立。
序列演算基础
小张的倒查报告则完全另一种排版。他在报告开头写下核心问题——目标命题,然后不断问自己:「要证明这个目标,需要哪些子证据?」他用的是一种叫「相继式」的记法:左边放可用证据集合,右边放想要证明的目标集合。一张报告纸就是一条相继式。
相继式的标准写法是 Γ ⊢ Δ,读作「由证据 Γ 能推出目标 Δ 之一」。左边通常记作希腊字母 Γ,右边记作 Δ。小张的规则分为两类:对证据动手的左规则,和对目标动手的右规则。而且左右高度对称——把公式从右边移到左边,规则就换一副面孔。
除了对称的左右规则,序列演算还有三条「结构规则」:弱化允许添加与推理无关的公式,收缩允许合并两个相同公式,交换允许调整公式顺序。这三条规则不管公式内容,只管证据的增、并、序,像侦探整理物证时允许加一份无关卷宗、合并重复照片、重排证物架。
合取右规则展示了小张如何把大目标拆成小目标:要证明 A∧B,先分别证明 A 与 B。
小张的报告因此有一种「自顶向下拆解」的优雅:每页都从目标出发,把待证公式一路展开,直到所有分支都能被证据直接满足。这种格式对后续机械化搜索极其友好,是机器侦探最爱的卷宗模板。
- 相继式Γ⊢Δ 表示证据集 Γ 能推出目标集 Δ 中至少一个,是报告的基本行文格式。
- 两个子目标要证明 A∧B,只需分别证明 A 与 B 成立,像两个子案件并行调查。
- 合取右规则标注 (∧R),表示这条规则作用在目标(右边)一侧,对合取式进行分解。
证明构造对比
老李和小张拿到同一个案子——已知 P→Q、Q→R、P 三份证词,要确认 R 是否成立。两人生成的报告完全不同,但结论一致。
老李顺着推:由 P 和 P→Q 这两份证词,用「蕴含消去」直接得到 Q;再拿 Q 与 Q→R 推出 R。每一步都发生在当下,证据只会越来越多。这就是自然演绎的前向构造:像往拼图桌上不断添加新拼块,直到目标图案出现。
小张倒着查:先把 R 写在报告底部,问「哪份证词能直接推出 R?」发现 Q→R 差一个 Q;于是把 Q 记为子目标,再问「Q 从哪来?」发现 P→Q 差一个 P;而 P 就在证据里,所有分支闭合,得证。这就是序列演算的后向搜索:从目标一路分解,直到所有叶子都落在前提上,像考古从地层表面逐层向下挖到文物。
两种构造共享同一个核心推理动作——蕴含消去,也就是逻辑学家口中的「肯定前件」(Modus Ponens):知道 A→B 且 A,就能签发 B。
老李的前向构造贴近人类思维,但面对海量证词时容易漫无目的地堆积新结论;小张的后向构造则目标明确,每步都朝结论收敛,因此自动定理证明器普遍采用后向搜索。两种构造互为镜像,正如一枚硬币的正反面。
- 蕴含前提A→B 是一块「如果……那么……」拼图,代表待接的接口。
- 条件前提A 是与接口吻合的底座,代表当前已确认的事实。
- 结论 B两块拼图一合,得到 B。规则名 (→E) 表示「蕴含消去」。
Cut消除定理
小张的案卷里偶尔会出现一种「外援」做法:先从现有证据 Γ 中费力气证明一个中间结论 A,然后引用这个 A 去推最终目标 B。这种做法很像侦探请外面专家做一份鉴定,再用鉴定结果结案。在序列演算中,这条「请外援」的规则叫 Cut 规则。
Cut 规则的可怕之处在于,它引入的 A 可以是一个与最终案情毫无直接关系的大定理、怪引理。有了 Cut,证明可以借用任意庞大的中间结论,案卷会变得极其难查——因为没人知道这个外来命题从何而来。
1927 年,根岑证明了他的著名主定理(Hauptsatz):序列演算中任何包含 Cut 的证明,都能被机械地转换成不含 Cut 的证明。也就是说,所有「请外援」的案卷都能被重写成「本地办案」。消除 Cut 之后,证明拥有漂亮的子公式性质:证明中出现的每个公式,都是最终定理某个部分的子公式。
Cut 消除定理给逻辑系统带来了两大红利:一是系统一致性——如果逻辑系统能推出矛盾,用 Cut 消除一查便知有缺陷;二是证明可分析性——任何证明都能被拆成「原子公式级别」的拼图,供机器逐步核实。这份「去外援化」的案卷,正是自动推理能够放心的根基。
- 第一前提由 Γ 能证明 A,相当于外援专家给出了鉴定结论。
- 第二前提把 A 加入证据 Δ 后能证明 B,相当于案卷借用了这份鉴定。
- 结论把外援 A 从流程中删去,直接用 Γ 和 Δ 证明 B。
自动化实现
把两本办案手册交给机器侦探前,必须先回答一个问题:每步该应用哪条规则?证据和前提的数量可能成百上千,规则也可能几十条。若乱试,搜索空间如天文数字般爆炸。于是机器侦探需要「办案策略」来引导选择。
序列演算天然适合后向搜索:从目标公式出发,不断用右规则把目标拆小,用左规则对证据分组,直到所有分支都落到公理。这种搜索被称为「目标制导」推理——每一步都以结论为中心,避免了前向推理中大量的无关推导。
现代自动定理证明器(如 Vampire、E)把公式转成子句集,使用归结方法高速搜索矛盾;而交互式证明助手(如 Coq、Isabelle)则把序列演算风格的后向搜索嵌入脚本,由人类提供关键中间引理、机器负责核对。机器侦探与人类专家协作,是当前的主流办案模式。
归结规则是机器最爱的单条规则——它把两个子句的互补文字消去,得到新的子句,不断「碰撞」直到生成空子句,即矛盾。
从序列演算的视角看,归结规则可以被理解为一种经过优化的 Cut 加压缩操作。理解这条脉络,你就明白为何自动推理器大多以「反证法 + 归结」为内核对,而交互式工具以「目标拆解」为外壳——前者求快,后者求可读。
- 两个子句A∨B 与 ¬A∨C 是两叠证词,其中 A 与 ¬A 恰好一正一反。
- 互补文字相消A 与 ¬A 像两片互相咬合的证词碎片,互相抵消。
- 归结结果剩下的 B∨C 拼成新子句,返回搜索池继续碰撞。
基准评测
办案水平再高,也要放到统一的考题库中检验。自动定理证明领域的「警察大比武」有两个核心设施:TPTP(Thousands of Problems for Theorem Provers)问题库与 CASC(CADE ATP System Competition)竞赛。
TPTP 像一座标准化模拟卷库,收集了上万道一阶逻辑难题,按领域分类编号。每道题都有标准格式,标注难度与理论归属。任何证明器都可以拿同一张试卷来考,结果可复现、可比较。相比「自己出题自己考」,TPTP 让所有机器侦探站在同一起跑线。
CASC 则是每年一度的正式大比武,分为多个组别:纯一阶逻辑组、带等式推理组、高阶逻辑组等等。各证明器在同样机器、同样时限内解题,比谁解得更多、更快。冠军系统的策略往往成为下一年研究的风向标。
评测的核心指标是「求解率」——在一批问题上成功证明的比例,它决定了证明器在真实任务中的可靠程度。
除了求解率,鲁棒性同样重要:在考试题上得高分的系统,换了一批新题可能表现暴跌。因此 CASC 还会用「隐藏题」测试泛化能力,防止机器侦探只会背题。这种标准化的评测文化,正是自动推理技术能持续进步的引擎。
- 分子成功求解数,代表机器侦探在规定时间内证明出结论的题目数量。
- 分母问题总数,代表试卷上所有题目的数量,含未解出的难题。
- 比值两者相除得到 0 到 1 之间的分数,衡量系统的整体可靠性。
未来挑战
老李和小张的办案风格已经稳定了几十年,但如今 AI 技术正给这两本手册注入新活力。第一波冲击来自深度学习:神经网络可以从海量证明数据中学习「下一步该选哪条规则」,为搜索提供直觉启发式,显著减少盲目试错。
第二波冲击来自大语言模型。数学形式化项目(如 Lean 上的数学库)中,人类专家常常卡在「想不出中间引理」这一步。大模型可以基于上下文生成候选引理,再由符号验证器严格核对——相当于让 AI 当参谋提出侦查方向,机器侦探严格验证每条线索。
第三波是神经符号融合:用一个神经网络感知结构、生成策略,再用序列演算这样的符号系统保证每一步推理严格成立。两者结合,既保留符号系统的可解释性,又获得神经网络的模式识别能力。
这类系统的训练目标不再是单纯的「证明成功」,还要兼顾证明质量与效率,常用一个加权损失函数来平衡:
未来,自然演绎的「人味儿」与序列演算的「机器感」之间的边界会更加模糊。老李和小张也许会从竞争对手变成搭档:一个提供直觉方向,一个确保万无一失。对 AI 从业者而言,理解这两套系统的底层差异,是参与这场推理革命最好的起跑姿势。
- 神经损失衡量神经网络预测的规则选择与真实最优选择之间的差距。
- 逻辑约束衡量生成证明在符号规则下的违规程度,如步骤非法或结论不符。
- 加权系数 λ控制两项损失的相对重要性,λ 大则更强调逻辑严谨性。
AI 应用场景
编译器正确性验证
阶段:模型验证 / 发布前检查
解决的问题:编译器是软件世界的「翻译官」,一旦翻译出错,所有上层程序都可能崩溃。传统测试只能覆盖有限用例,无法证明「所有程序都翻译正确」。交互式证明助手(如 Coq)基于序列演算的后向搜索与自然演绎的证明构造,把编译器的每次转换证明为一个数学定理。
具体案例:法国 INRIA 团队用 Coq 完成 CompCert 编译器,证明其 C 语言编译行为与形式化语义完全一致。该编译器已被多家航空、汽车安全关键系统采用,成为「证明过的编译器」的黄金标准。
程序漏洞自动发现
阶段:自动化分析 / 安全检测
解决的问题:人工代码审计耗时且易遗漏。自动定理证明器把程序逻辑转化为一组逻辑公式,若公式不一致(存在矛盾),说明程序路径存在漏洞。这相当于用序列演算的证明搜索快速发现「证据链断裂」的位置。
具体案例:微软的 SLAM 项目与开源工具 SeaHorn 利用约束求解与定理证明技术,自动验证设备驱动的 API 调用顺序,发现数百个空指针与越界漏洞,修复成本远低于事后补丁。
数学定理的机器辅助形式化
阶段:知识表示 / 辅助证明
解决的问题:前沿数学论文动辄上百页,人工审阅难以发现隐藏错误。把定理输入 Lean、Coq 等证明助手,由机器倒推目标、逐条核实规则,相当于给数学结论配备「永不疲倦的审稿警探」。
具体案例:凯文·巴扎德(Kevin Buzzard)团队在 Lean 上形式化了液体飞溅实验(Liquid Splash Experiment)涉及的大量现代数学;自然数游戏(Natural Number Game)则用自然演绎式证明树帮助初学者理解归纳证明。
Python 演示
"""极简命题逻辑证明器:用后向链搜索构造自然演绎证明树。规则:假设公理、蕴含引入、蕴含消去(MP)、合取引入。失败时返回 None,深度限制防止无限递归。""" def is_var(t): return isinstance(t, str) def prove(hyps, goal, depth=0): """返回证明树;若在 depth 内无法证明则返回 None。""" if depth > 6: return None if goal in hyps: return ("assume", goal) if goal[0] == "->": _, ante, concl = goal p = prove(hyps + [ante], concl, depth + 1) if p: return ("impl_intro", ante, p) if goal[0] == "and": _, left, right = goal p1 = prove(hyps, left, depth + 1) p2 = prove(hyps, right, depth + 1) if p1 and p2: return ("and_intro", p1, p2) for h in hyps: if h[0] == "->" and h[2] == goal: p = prove(hyps, h[1], depth + 1) if p: return ("mp", p, h) return None def fmt(f): """把公式转成便于阅读的字符串。""" if is_var(f): return f if f[0] == "->": return "(%s -> %s)" % (fmt(f[1]), fmt(f[2])) if f[0] == "and": return "(%s and %s)" % (fmt(f[1]), fmt(f[2])) return "?" def show(proof, indent=0): """把证明树打印成缩进文本。""" pad = " " * indent tag = proof[0] if tag == "assume": print(pad + "假设满足: " + fmt(proof[1])) elif tag == "impl_intro": _, ante, sub = proof print(pad + "蕴含引入, 假设 %s:" % fmt(ante)) show(sub, indent + 1) elif tag == "and_intro": _, p1, p2 = proof print(pad + "合取引入:") show(p1, indent + 1) show(p2, indent + 1) elif tag == "mp": _, sub, h = proof print(pad + "用 %s 消去:" % fmt(h)) show(sub, indent + 1) def impl(a, b): return ("->", a, b) def conj(a, b): return ("and", a, b) if __name__ == "__main__": # 已知前提 P -> Q, Q -> R, P,求证 R hyps = [impl("P", "Q"), impl("Q", "R"), "P"] goal = "R" tree = prove(hyps, goal) print("目标:", fmt(goal)) if tree: print("证明成功:") show(tree) else: print("未能在深度限制内证明")
def prove(hyps, goal, depth=0):核心证明函数,接收证据列表、目标公式与递归深度限制,返回证明树或 None。if goal in hyps:「假设公理」:目标已在证据中,调查结束。if goal[0] == "->":遇到蕴含目标,启用蕴含引入,把前件加入假设继续递归。for h in hyps:遍历已有证据,寻找可做蕴含消去(MP)的规则,模拟侦探翻找匹配证词。if h[0] == "->" and h[2] == goal:找到「结论恰好等于目标」的蕴含证据,改证其前件。show(proof, indent=0)把证明树按缩进打印,方便人眼复核每一步推理。hyps = [impl("P", "Q"), impl("Q", "R"), "P"]对应正文中的三份证词:P→Q、Q→R、P。
常见误区
误区教材总是从前提一步一步推到结论,所以自然演绎只能正向使用。我让程序从头到尾遍历所有前提,结果要么漏掉关键推导,要么生成无数无关结论,根本跑不完。
正解自然演绎的规则本身是「方向中立」的,既可以正向从前提推出结论,也可以逆向从目标反查需要哪些前提。自动化实现中,恰恰是「目标制导的后向搜索」更高效。好比老李虽然习惯顺线索办案,但遇到悬案时也会先假设凶手,再回头找证据——破案方向是策略,不是规则的死规定。
为何常见:教材为可读性几乎都用自上而下的证明树展示,初学者误把「呈现顺序」当成「算法方向」。
误区Cut 消除定理就是说「Cut 规则没用,证明时直接不用它就行」。那我只要写证明时别用 Cut,不就没有消除的必要了吗?
正解Cut 消除是一个「证明变换算法」:面对任意一份含 Cut 的证明,都能机械地产出一份不含 Cut 的新证明。它论证的是某个证明空间与另一个证明空间在能力上等价,而不是劝你在写证明时避开某条规则。就像警方档案里凡有外援鉴定的案子,必须能重写成不依赖外援的独立案卷——这保证的是体系的纯净性,而非办案时的个人偏好。
为何常见:把「定理」误当成「使用建议」,忽略了它是对一类证明的整体结构性声明。
误区两者都能证明同样的逻辑定理,那么选择哪套系统只是记号偏好问题。我学会了自然演绎,序列演算看两行就能猜个大概。
正解序列演算引入了自然演绎没有的结构规则(弱化、收缩、交换)与左右对称规则,并把推导过程显式地放进相继式。正是这种设计使 Cut 消除、子公式性质等深层定理可以被严格证明。好比两份破案报告都得出同样结论,但一份只有口供摘要,另一份连证物移交记录都编号归档——后者才能做审计。
为何常见:只比较「能证什么」,忽略了「还能分析出什么性质」这一层,而后者对证明论研究至关重要。
误区给证明器多设计几条推理规则,它就能走捷径更快解题。我加了十几条「优化规则」后,求解率反而断崖式下降。
正解规则越多,每一步可选的搜索分支就越多,搜索树会指数级膨胀。自动定理证明的关键不是堆规则,而是设计策略来裁剪分支。归结方法之所以流行,恰恰因为它用一条规则完成大部分推理,把搜索空间压缩到最小。就像给侦探塞了五十种推理锦囊,他反而不知道先翻哪个。
为何常见:把「人的解题经验」误等同于「机器的搜索优势」,忽略了分支因子对搜索代价的几何级影响。
误区自动定理证明器在竞赛里击败人类选手,是不是数学研究很快就可以全交给机器了?我试着让它证明费马大定理,结果跑了几小时没有输出。
正解CASC 竞赛的题目集中在特定逻辑片段,而现代数学往往需要庞杂的定义、高阶逻辑与巧妙的新引理。当前自动证明器在纯数学难题上依然乏力,交互式证明助手更是需要人类持续提供中间引理。机器侦探目前擅长的是「查缺补漏」,还做不到「灵光一现」。
为何常见:竞赛榜单给人「机器全能」的错觉,忽视了竞赛题库与真实数学难题之间的巨大鸿沟。
面试题
Q1. 自然演绎中「→ 引入规则」的核心操作是?
- A.把结论拆成更小的子目标
- B.引入临时假设并推出结论← 正确答案
- C.删除证明中多余的前提
- D.合并两个内容相同的假设
答案:B。(→I) 规则的做法是临时假设 A,在假设下推出 B,然后得到 A→B。它像侦探在笔记上写下「假设某人是凶手」然后完成整段推理。拆目标、删前提、并假设分别对应序列演算的分解与结构规则,并非蕴含引入的职责。
Q2. 序列演算的相继式「Γ ⊢ Δ」中,Γ 表示?
- A.希望证明的目标公式集合
- B.推演时可使用的证据集合← 正确答案
- C.推理规则的名称与编号
- D.上下文无关文法中的符号
答案:B。Γ 位于⊢左侧,是所有可用前提(证据)的集合;Δ 位于右侧,是目标集合。左边是侦探到手的证物,右边是他要侦破的目标。把 Γ 当目标、Δ 当证据,就把两种角色的位置记反了。
Q3. 序列演算中的结构规则「弱化」允许做什么?
- A.删除任何已得到的前提
- B.任意交换前提的位置
- C.添加一条无关的公式← 正确答案
- D.把两个相同公式合并
答案:C。弱化规则允许在证据或目标中加入与推导无关的公式,相当于案卷里允许放入一份不相关的目击证词。删除前提、交换顺序、合并相同公式分别是裁割、交换、收缩规则的工作,不能混淆。
Q4. 谁在 1935 年同时提出自然演绎与序列演算?
- A.库尔特·哥德尔
- B.阿尔弗雷德·塔斯基
- C.格哈德·根岑← 正确答案
- D.阿隆佐·丘奇
答案:C。根岑(Gentzen)的博士论文同时构建了自然演绎 NJ/LK 与序列演算 LJ/LK 两套系统,并证明 Cut 消除定理。哥德尔贡献了完备性与不完备性定理,塔斯基主攻模型论,丘奇则与 lambda 演算和判定性问题相关。
Q5. Cut 消除定理的核心结论是?
- A.任意证明都可化为无 Cut 形式← 正确答案
- B.任意证明都必须使用 Cut
- C.Cut 可以替代全部结构规则
- D.只有不完整逻辑才需要 Cut
答案:A。主定理断言:任何含 Cut 的序列演算证明,都能通过机械变换转成不含 Cut 的证明。这意味着「外援鉴定」永远可以被「本地证据链」替代。B 与结论相反;C 混淆规则职责;D 则与 Cut 的可用性无关。
Q6. 以下哪些属于序列演算的结构规则?
- A.弱化允许添加无关公式← 正确答案
- B.收缩允许合并相同公式← 正确答案
- C.交换允许调整公式顺序← 正确答案
- D.蕴含右规则分解目标
答案:ABC。结构规则只管证据的增、并、序,不关心公式的逻辑连接词:弱化加一份无关证词、收缩合并重复证词、交换重排证词顺序。蕴含右规则是对蕴含目标进行分解的逻辑规则,属于操作规则而非结构规则。
Q7. 自动定理证明器的证明搜索通常采用哪种方式?
- A.从公理出发向下生长证明树
- B.从目标倒推到所有分支闭合← 正确答案
- C.随机生成证明再逐条检查
- D.穷举真值表验证定理成立
答案:B。主流证明器采用目标制导的后向搜索:从待证目标开始,反复应用右规则/归结,直到所有叶子都落到公理上。它像小张从「凶手是谁」倒查目击证据,方向明确、分支可控。A 是自然演绎的呈现方式,C、D 则因组合爆炸而不现实。
Q8. 关于 Cut 消除后的证明,正确的说法有?
- A.证明中的公式全是原子命题
- B.每个公式都是原定理的子公式← 正确答案
- C.消除后的证明可能变得很长← 正确答案
- D.消除后的证明一定变得更短
答案:BC。Cut 消除带来子公式性质:证明中每个公式都是原定理某个部分的子公式,杜绝「外来引理」。但消除过程可能把一次「外援跳跃」展开成一大段本地推理,证明长度甚至指数级增长。因此 B、C 对,A 与 D 错。
Q9. TPTP 在自动定理证明领域的角色是?
- A.标准化的定理考题库← 正确答案
- B.新式逻辑编程运行环境
- C.图形化证明演示工具箱
- D.定理证明器的加密插件
答案:A。TPTP 是自动定理证明界的标准化问题库,收录上万道按领域与难度分类的一阶逻辑题,让不同证明器在同一张「试卷」上可比对成绩。它不是运行环境、演示工具或安全插件,而是评测生态的基石。
Q10. 关于 Cut 消除的证明变换,最令人意外的事实是?
- A.消除 Cut 后证明一定变短
- B.消除 Cut 后证明可能指数变长← 正确答案
- C.消除 Cut 后定理不再成立
- D.消除 Cut 需要外部公理辅助
答案:B。Cut 规则像「外援捷径」,消除它虽然让证明纯净,却常常要付出巨大篇幅:把一次引用展开为完整推导,可导致证明长度指数级膨胀。这正是「简洁的证明未必结构简单」的经典案例。A 与事实相反,C、D 则与主定理的内容矛盾。