尝鲜 GPT-4 之后,陶哲轩又用上了 Github Copilot。
这一次,他的试用场景是学习 Lean 语言并利用其形式化数学定理。
对于大模型来说,形式化的定理证明也算一种挑战。形式化证明本质上是一种计算机程序,但与 C++ 或 Python 中的传统程序不同,证明的正确性可以用证明助手(比如 Lean 语言)来验证。定理证明是代码生成的一种特殊形式,在评估上非常严格,没有让模型产生幻觉的空间。
而陶哲轩提到的定理,来自 10 月 9 日的一篇论文:
论文中的这个证明只有不到一页,但陶哲轩的形式化证明使用了 200 行 Lean 语言。
举例来说,在论文中,陶哲轩只是断言对于任意 a>0 的情况,在实数上是凸的,因为这是一个常规的微积分练习,然后调用了 Jensen 不等式,但写出所有细节用了大约 50 行代码。
陶哲轩表示,Github copilot 能够正确预测各种例行验证的多行代码,并从定理的名字等线索中推断出他想要的方向,这种能力是「不可思议」的。
Lean 的「重写」策略是不可或缺的,它可以通过有针对性的替换来修改冗长的假设或目标,无需完整地键入表达式就能对其进行操作。
「在用 LaTeX 撰写证明时,我经常粗略地模拟这种方法,将我要处理的冗长表达式从一行剪切粘贴到下一行,然后进行有针对性的编辑,但这有时会导致错字在文档中多行传播,因此能以自动和可验证的方式进行重写是件好事。」
论文中还提到一个不等式,即对于任意的 k, l, n,满足 ,则
陶哲轩表示下一个目标就是建立该不等式的简单版本,即论文中的不等式 (1.8):
这部分的证明主要还是利用微积分的知识,但有一个难点是需要使用渐近符号。陶哲轩表示后续的论证虽然会很耗时,但并不是特别困难。