如何放下您的证明


59

检查证明的一般准则是什么?我相信这对像我这样的研究生很重要。我已经知道我们需要做些什么来证明某些东西,但是在发送之前,您始终必须检查所有内容。甚至给自己的顾问。

我通过反复试验制定了一些策略,并从顾问那里得到了很多建议。但这始终是非常繁琐的工作。通常,当您完成某件事时,您只想继续下一个问题,但是您仍然必须坚持当前的问题,直到一切都变得完美为止。在这里,我展示了自己的一些技巧示例:

  1. 填写详细信息。如果您写“很明显……”,“不失一般性……”等,很多地方都会出错。
  2. 尝试一些数字。尝试极端情况,例如“当我设置或时会发生什么”。n=1n=1000
  3. 保持笔记本清洁。每天在上面写下,并与您的粗略笔记进行比较。我也尝试用乳胶写东西,这样我发现了很多错误。

您用来检查证明的一般策略是什么?

这个问题的目的是使它成为社区维基。


如果问题看起来很主观,请帮助我改善它。
Marcos Villagra

我如何制作这个社区维基?
Marcos Villagra

1
嘿,酷!我对这个问题的答案很感兴趣。另外,我也很感谢您的#3。(当我认真思考时,当我专心解决问题时,实际上我到处都是成堆的纸张,然后将它们随机地重新放置。是的。)以前,在此问题上我遇到了一个错误,最终浪费了很多时间。
丹尼尔·阿蓬

@Daniel:我有同样的问题!这就是为什么在我完成证明后立即写乳胶版本的原因。很高兴知道我不是唯一一个把所有事情都保留到处的人:-)
Marcos Villagra

1
您标记它以引起主持人注意。
Suresh Venkat

Answers:


39

软件工程师有一个概念,他们称之为“ 代码气味 ”。这些是代码中的症状,可能表示更深层次的问题。软件工程师收集要注意的精神气味清单(即,方法过长或参数过多)。它不一定表示存在问题,而只是表明编写者可能要仔细检查。

我建议我们也应该考虑“难闻的气味”。这不会给您提供一种检查证明的算法,但是会提供一种语言和一种隐喻,用于识别证明中可能存在的问题。校对气味的一些示例:

  1. 副词“很明显”,“很明显”等。
  2. 引用先前结果的证明,而不是引用结果本身。
  3. 轻率地使用具有许多技术先决条件的结果。

也有更微妙的气味。例如,如果一个证明使用二项式定理扩展表达式,然后又使用二项式定理返回封闭形式,则可能对封闭形式进行直接操纵即可得出相同的结果。

我的建议是收集(精神或书面)此类气味的清单,并在您阅读作品时进行检查。这种方法的好处是它还将使您成为更好的读者。

注意:我希望此答案能直观地支持兰帕特(Lamport)的《如何写证明》中所提供的严格答案,该答案引用于M. Alaggan的答案中。


4
我一直对我的学生这么说,他们认为我疯了。当然,我实际上声称我可以闻到一个错误,这可能是问题的一部分;)
Suresh Venkat

7
@Suresh:这位学生认为您出于不同的原因而疯狂。;-)
约翰·穆勒

4
在代码气味说明上,我一直试图在其他人的证据中进行仔细研究的内容包括不平等链。通常,真正的基本错误都有在较困难的推导中逐渐蔓延的习惯。
约翰·穆勒

23

Leslie Lamport的论文很好(如何写证明)。实际上,这是他的一种建议,即以如下方式编写详细的证明:

(1)允许直接检测错误

(2)弄清楚哪些假设和定理在哪些部分中使用,这很容易看出如果您想要(例如)使用较弱的假设会发生什么

关于MO的这项技术,也有一些社区经验和鼓舞人心的评论,这些评论总体上显示出积极的经验(以及其他一些资源)。

更新:有一个新版本如何编写21世纪的证明


5
这些证明与PL研究论文中的证明非常相似。逻辑链非常明确。在学习了如何阅读和欣赏PL风格的证明之后,我发现很难理解“正常”的数学证明。这样的证明通常要求读者以与作者相同的方式思考,而当您习惯了不同的证明方式时,情况就并非如此(至少对我来说是如此!)
Christopher Monsanto

2
@Christopher Monsanto:PL代表编程语言?如果您能提及这样的示例(一份这样的论文)以进行检查,我将不胜感激:)
M. Alaggan

5
我一直觉得Lamport的建议与Paul Lockhart的“数学家的哀叹”(maa.org/devlin/LockhartsLament.pdf)不兼容。
Marcos Villagra


14

我似乎记得很早以前读过一篇关于物理学家如何处理类似问题的通俗文章。谁知道以下版本的准确性如何?欢迎更正。但是我发现基本策略非常出色。

他们解释了他们如何相信黑洞。黑洞最初纯粹是数学构造,就像虫洞中的其他物理奇异物体一样。他们的策略引人注目:他们会在数学上将其他对象扔到要测试的对象上。虫洞的测试失败,因为他们发现虫洞即使在存在正常物理物体(例如小行星)的情况下也会崩溃。但是黑洞通过了这项测试:向其发射小行星,黑洞将幸免于难。因此,他们尝试向其投掷一颗星星。结果相同。最后,他们在黑洞处又扔了一个黑洞,它幸免了下来。结果,他们对黑洞的存在变得足够自信,可以开始在真实的宇宙中寻找它们。

因此,上述策略的相关性和应用在于开始证明一切。它可以通过健全性检查吗?如果删除必要的假设,它是否会崩溃?当将其应用于超出其范围的案例时,它是否会崩溃?它可以承受合理的概括和专业化吗?看看Polya的《如何解决中的启发式列表。尝试使用这些启发式方法来改变您的证据,并查看其是否如预期的那样跌落。


您的大部分答案都集中在检查证明上,方法是验证证明在应该为假的情况下变为假。那是行不通的,因为它不会在定理成立的地方检查该定理是否成立!例如,假设我“证明”了每个奇数都可被三整除。如果我也扩展到偶数,我会检查我的证明是否失败:确实会失败,因为四不能被三整除。万岁,我的证明必须正确!
David Richerby 2014年

12

我认为最安全的方法之一是提出多个独立的证明。这样,即使您在证明的某些细节上有误,也可以确信您的主要结果是正确的。


9

我发现一种有用的技术是考虑证明策略可以证明的其他结果。如果我能够轻松地采用证明策略来证明一个大的开放性问题,甚至是一个尚未解决的问题,但与证明策略的复杂性相比,解决方案过于复杂,那么这就是一个值得怀疑的重要原因证据。


5
如果可以的话,我会给这个+10-特别是在复杂性理论中,有缺陷的证明技术通常可以证明证明这样的很强的陈述,然后很容易猜出您的证明技术是错误的。特别是如果您的证明技术相对应!PNP
2014年

6

我总是使用COQISABELLE之类的证明检查器来重新检查我的证明。如果您可以使用任何一种编程语言来证明您的证明,则可以确保您的证明是正确的。就像一个lambda项一样简单;)。


我从未使用过Coq,但我应该尝试。实际上,我正在尝试证明mathematica的一些下界,但是我没有找到正确的方法。也许我需要一些特殊的包装之类的东西。
Marcos Villagra

1
也许这是一个长镜头,但是如果您想证明实数的下界,则可以检查以下库:coqtail.sourceforge.net/?home/zh
Gopi

同意,但是任何编程语言都可以。通常,我会相反地这样做。用编程语言(通常是Ruby)来描述问题域,然后将其用作我的证明的模板。
乍得·布鲁贝克2014年
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.