证明检查器错误是否使主要证明无效?


29

大多数(全部?)证明助手有时会修复健全性错误。但是,从我所看到的那些错误中,通常很难无意间遇到这些错误,并且在修复该错误之前证明的结果通常会在修复之后出现。

按强度顺序的三个问题:

  1. 如此完善的错误修复程序是否曾经导致主要证明失败而又没有修改证明?
  2. 如果(1)为真,是否需要对证明进行重大修改?
  3. 如果(2)为真,是否有人由于稳健性错误而证明了一个错误的主定理?

我将“主要”的定义留给其他人使用。


11
这可能显示了我的无知,但是是否曾经首先与证明助手建立了一个主要定理?我当然知道4色定理和开普勒猜想,但我认为那里的第一个证明不使用证明助手。我好奇。
Sasho Nikolov

1
我相信直到CompCert之前,没有人证明编译器是正确的,并且是正确的。但是您是正确的,这将使(3)特别是一个不太有趣的问题。
Geoffrey Irving

4
@SashoNikolov:这并不重要,因为大多数由证明助手在实践中完成的证明都不是关于数学的。它们通常与软件系统或形式系统的属性有关。(这只是时间的问题,在这个星球上完成的绝大多数证明都与纯粹的数学无关。机器人来了。)这会很烦人例如,如果某人使用证明助理证明某个关键系统是安全的,然后后来证明他们不小心使用了不一致。
安德烈·鲍尔

1
谢谢@AndrejBauer。因此,这里的“主要证明”和“主要定理”对研究数学家而言不是主要的,而是重要重要系统正确性的证明吗?
Sasho Nikolov

1
我认为有足够多的人(数学家,安全专家,软件工程师)认为重要的任何证据都可以算作。恐怕我们不会找到答案,因为如果有人确实发现了这个问题,他们很可能会悄悄地解决它。
安德烈·鲍尔

Answers:


11

据我所知,还没有收回过任何经过机器检验的复杂数学发展证明。

正如安德烈虽然指出的,偶尔发生的是稳健破虫子在这些系统突然出现(虽然通常不默默地,如安德烈建议),并修复该漏洞,或者更可能的是,中涉及一些改变现有的证据,所涉及的证明系统的标准库。

Coq中此类库破坏证明的一些示例:

https://coq.inria.fr/bugs/show_bug.cgi?id=4294

https://sympa.inria.fr/sympa/arc/coq-club/2013-12/msg00119.html

很难说已建立的证明是否依赖于不一致之处,因为在修复之后,它们要求微小的调整才能被证明检查者接受。但这会在每个不重要的更新中发生!

我个人认为这样的错误不太可能发生,因为在甚至可以尝试将机器形式化之前,必须对打样进行很好的打磨。

证明框架中的不一致通常需要大量使用深奥特征的奇怪组合,因此很少“偶然”出现。


3
我指的是人们无声地解决他们的证明脚本中的问题,或者像Geoffrey所指出的那样在不知不觉中解决问题,这是对证明助手中的错误的反应。当然,总是会以惊人的兴奋程度来接收证明助手中的不一致之处。数学家应该在数学上有矛盾,这将导致有趣的几个月。
Andrej Bauer

2
人们向我扔维基百科链接是什么意思?@RickyDemer,请您解释一下。你知道我听说过罗素的悖论。那是一百多年前的事,它导致了一些出色的数学。我提议我们已经成熟了。
安德烈·鲍尔

我现在会接受这个答案,但是如果有人向另一个方向回答,我当然不会接受!(完全披露:这是我所希望的答案。)
Geoffrey Irving

1
@GeoffreyIrving答案有些不尽人意,因为我很难证明自己没有退缩!因此,尽管我很少了解非常大规模的机器形式化问题,但答案至少在一定程度上是基于我的知识不足,因此我至少对自己的回答充满信心。我还听说过,B方法中的一些重要形式化已被证明具有不一致的假设(您需要为非平凡的语句添加许多公理,并且随后将公理的集合也显示为...
cody

1
...不一致)。不幸的是,我似乎找不到关于它的参考,因此我没有在答案中包含它。同样,形式化是关于一个大型程序,而不是纯粹的数学。
科迪
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.