视频新人博主陶哲轩又更新了!这次是“喂饭级”AI教程——

手把手演示如何只用GitHub Copilot证明函数极限问题

(这更新频率确实o( ̄▽ ̄)d)



据陶哲轩介绍,他此前主要将GitHub Copilot用于一些“花里胡哨”的代码补全,但实际情况是,如果想让它来证明数学定理,往往需要人类的“正确指挥”。

因此,这一次的教学核心奔着一个目标:

  • 让大家学会如何正确引导GitHub Copilot。

他从定义函数极限问题出发,依次演示了求和、求差和求积定理的证明过程,以及他在过程中遇到的问题和解决方法,全程主打一个细致。

下面具体来看。

一招鲜:Copilot代码补全+人工手动调整

先说结论,和陶哲轩一直以来的观念一致,GitHub Copilot等AI目前在数学定理证明中仍主要用于“打辅”。

  • Copilot能快速生成代码框架和常见模式,对初学者尤其有用,还能提示使用已有库函数。
  • 但面对复杂的数学细节、特殊情况和需要创造性解决方案的问题时,Copilot的可靠性下降,需要大量人工干预和调整。

在他看来,复杂问题可能需要结合纸笔推导,确保思路正确后再进行形式化验证。



以下为得出结论的详细过程。

首先,他定义了函数极限问题,即“设f是从实数到实数的函数,当x趋近于x_时f(x)收敛于L”。

Copilot帮忙自动补全了这个极限的ε-δ定义,不过由于他更喜欢用绝对值符号来表达极限的定义,所以自己又稍微修改了一下。

求和定理证明

然后他提出了第一个想要证明的问题——函数极限的求和定理证明

  • 如果函数f在x_处收敛于L,函数g在x_处收敛于M,那么f+g在x_处收敛于L+M。

Copilot给出了正确的命题表述。



随后在证明过程中,陶哲轩用到了大量“Copilot代码补全+人工手动调整”这一模式。

比如证明的起始步骤是提取f和g收敛的ε-δ条件。这里需要特别注意δ的选取,即取δ₁和δ₂的最小值,以保证两个函数的收敛性同时成立。

但Copilot最初给出的证明方式有些问题,特别是在处理δ的正性验证(某个数学命题或结论是否为正)时不够严谨。

同时在证明不等式部分,陶使用了计算块(calc block)来构建不等式链。虽然Copilot自动生成了基本结构,但在绝对值符号处理和最终步骤上出现了偏差。

这里需要手动修正几个关键点:

  • 移除了多余的绝对值符号
  • 修正了三角不等式的应用
  • 调整了最终表达式

另外,为了应对数学分析中合并估计值时常遇到的ε损失问题,陶也尝试让Copilot采用标准解决方法(从一开始就使用ε/2来进行论证),结果发现其生成的代码中ε仍然是原来的两倍,因此需要手动调整参数。



整体而言,他不断在Copilot的自动补全和手动调整之间切换。这说明Copilot虽然能快速生成代码框架,但关键的数学细节和严谨性仍需要人工把控。

不过值得一提的是,Copilot在后期提示可以使用Lean内置的add_sub_add_comm引理,以简化重组步骤。

这意味着,Copilot不仅能补全代码,还能提醒开发者利用现有的库函数。

求差定理证明

在证明了和的极限后,陶尝试用类似方法证明差的极限。

和前面一样,Copilot能够生成基本正确的命题表述,并自动沿用了之前的证明框架。

不过在关键的一行还是出现了问题:它错误地使用了一个不存在的sub_sub_anc方法。

虽然陶尝试通过提示让它修正,但Copilot似乎无法记住上下文,给出的解决方案也不理想。



同时在处理代数表达式时,陶原本希望使用congruence策略来匹配等式两边,但这个策略过于激进,把问题过于简化了。

Copilot在这个环节表现得不太稳定,有时会虚构不存在的方法

最后陶不得不手动完成这个代数恒等式的证明,因为虽然这个恒等式在所有交换群中都成立,但Lean的数学库中并没有现成的直接解决方案。



求积定理证明

最后,对于函数乘积极限定理证明,陶给Copilot的打分为B+

总体而言,它完成了大部分工作,但在处理ε的分配和绝对值不等式时出现了混乱。

首先,对于乘积极限的证明,Copilot提出的策略是:

  • 将f的近似误差设为ε/(2|M|+1)
  • 将g的近似误差设为ε/(2|L|+1)



陶哲轩表示,这个思路基本正确,但在具体实现时出现了几个问题:

其一,在验证正性条件时,Copilot试图使用多个特定引理,但实际上可以使用更通用的正性验证方法。(陶手动调整了这个部分)

其二,在处理绝对值不等式时,Copilot错误地使用了add_lt_add方法,这个方法要求两边都是严格不等式,但实际情况中有一个等式。陶尝试让Copilot修正这个问题,但它给出的解决方案并不理想。

与此同时,在最终证明的以下几个关键步骤中,虽然Copilot在整体框架上提供了很大帮助,但在处理这些精细的数学细节时,还是需要人工干预来确保准确性。

  • 使用三角不等式分解表达式
  • 分别控制f(x)-L和g(x)-M的项
  • 处理交叉项L(g(x)-M)和M(f(x)-L)

陶哲轩强调,尤其在处理不等式和绝对值运算时,需要特别注意每个步骤的适用条件

比如在最后阶段遇到的一个bug:Copilot生成的代码假设M是正数,而实际上并没有这个前提条件。

对于这个问题,陶最后也花了一番功夫手动调整。并且他意识到,当问题复杂度达到一定程度时,Copilot确实会变得不太可靠。

最后他得出结论,面临上述情况,切换到更传统的人工证明方法可能更有效。

  • 如果我能先用纸笔写下完整的证明思路,确保所有ε参数都正确设置,然后再进行形式化验证,效率会更高。

小结一下,Copilot这类工具在起步阶段确实很有帮助,但关键在于要懂得何时使用它,何时需要切换回传统方法。



One More Thing

以上教学收获一片好评的同时,网友的关注点也开始逐渐跑偏——

众人在线求更换录音设备。





看来油管新人博主的业务还需要精进(doge)。

ad1 webp
ad2 webp
ad1 webp
ad2 webp