原文(English)

对自己的工作保持怀疑态度

专家就是在非常狭窄的领域内犯过所有可能错误的人。 ——尼尔斯·玻尔

如果你意外地发现某个问题几乎毫不费力地自行解决了,而你却不太明白原因,你应该更加怀疑地分析你的解决方案。

特别是,该方法可能还能够证明一些已知为错误的更强陈述,这将意味着该方法存在缺陷。

本着类似的精神,如果你试图证明某个雄心勃勃的论断,你可以先尝试寻找反例;要么你找到一个反例,这会为你节省大量时间,并且很可能本身就值得发表,要么你遇到一些障碍,这应该能为你提供一些线索,告诉你需要做什么才能积极确立该论断(特别是,它可以"识别敌人",即为了完成证明而必须克服的障碍)。

实际上,将这种怀疑态度应用于其他数学家的论断也不是个坏主意;至少,它们可以让你了解该论断为何成立以及它的威力有多大。

在处理已知困难的问题(这包括大多数"著名问题")或超出你通常专业领域的问题时,尤其应该对自己的工作保持怀疑态度。特别是,如果你对该问题的解决方案类似于以下过程:

  1. 将困难问题转化为另一个困难问题。
  2. 再次将问题转化为另一个困难问题。
  3. 再次将问题转化为另一个困难问题。
  4. 再次转化问题。突然问题变得简单多了!
  5. 将简单问题转化为另一个简单问题。
  6. 再次将简单问题转化为另一个简单问题。
  7. 解决最后一个简单问题。完成!

那么你的论证在第5步几乎肯定存在重大错误。(如果在第1-4步中,转化后问题的难度一直在增加,这一点尤其正确。)至少,这个可疑的步骤应该被彻底检查和重新检查,该步骤附近的任何模糊论证都应该完整写出来,并且应该进行分析,以理解究竟是论证中的哪个决定性步骤戏剧性地简化了问题,以及该步骤如何能够如此强大地实现这种简化。

以下是另一种常见的可疑论证类型:

  1. 为了证明著名猜想X,使用反证法,并为了矛盾而假设X为假。
  2. 进行一些与X有间接关联的随机计算。
  3. 进行更多此类随机计算。
  4. 进行另一次随机计算,但这次无意中犯了符号错误、除以零或类似错误。
  5. 进行更多随机计算。
  6. 注意到你的两次计算相互矛盾。
  7. 恭喜——你得到了期望的矛盾。宣告胜利!

对这种错误论证进行压力测试的一个好方法是尝试使用X为假的初始假设来运行相同的论证。如果可以轻松修改论证再次导致矛盾,这表明问题不在于X——而在于论证本身。这里的一个经典例子是,一个"证明"声称方程 a^n + b^n = c^n 存在非平凡自然数解会导致矛盾,但这个证明神秘地没有以任何重要方式使用 n > 2 的假设,并且实际上(可能经过一些小的修改后)对于 n = 2 也适用。另一个好做法是,将你最初使用反证法找到的论证尝试解开,创建一个避免使用反证法的更直接的证明。如果论证本质上是相当"线性"的,这应该会产生一个更简单、更精简的论证(这无论如何都是重写过程的一部分),并且通常也能捕捉到上述第5步中的错误类型。

另一个警告信号是,如果计算引导你越来越远离X本应处理的数学主题和联系(例如,一个黎曼假设的拟议证明几乎完全使用亚纯函数理论进行,几乎没有涉及整数、素数或其他基本数论概念;或者相反,一个完全通过处理整数进行的论证,几乎没有涉及zeta函数)。

最后一个警告信号是,如果你的方法基于改编过去该领域许多专家频繁使用的方法,但添加了你自己的一些所有先前专家不知何故"错过"的额外技巧。在这种情况下,这个技巧很可能包含一个严重的技术缺陷,而先前的专家们已经意识到并避免了这种缺陷,在这种情况下尤其需要保持高度怀疑。

相比之下,对一个重大问题的实际解决方案往往是通过更类似于以下的过程达成的(通常涉及多位数学家经过数年或数十年的努力,这里描述的许多中间步骤本身就是重要的可发表论文):

  1. 分离出主要问题X的一个玩具模型案例x。
  2. 使用方法A解决模型案例x。
  3. 尝试使用方法A解决完整问题X。
  4. 这不成功,但方法A可以扩展以处理X的更多模型案例,如x’和x"。
  5. 最终,意识到方法A关键依赖于性质P为真;这个性质对于x、x’和x"是已知的,从而解释了目前的进展。
  6. 猜想性质P对于问题X的所有实例都成立。
  7. 发现该猜想的一系列反例y、y’、y"……这表明要么需要修改方法A以避免依赖P,要么需要新方法。
  8. 取该系列中最简单的反例y,尝试证明X在这个特殊情况下的成立。同时,尝试看看在缺乏P的情况下方法A是否可行。
  9. 发现方法A失败的几个反例,其中失败原因可以明确追溯到P。放弃修改方法A的努力。
  10. 意识到特殊情况y与数学另一个领域中的问题z相关(或至少类似)。查阅关于z的文献,并向该领域的专家请教对该问题的最新观点。
  11. 了解到z在该领域已通过使用方法B成功攻克。尝试调整方法B来解决y。
  12. 经过大量努力,开发出调整后的方法B’来解决y。
  13. 用B’替换A重复上述步骤1-12(当然,结果可能与上述示例情节略有不同)。继续这样做几年,直到所有模型特殊情况都可以通过某种方法解决。
  14. 最终,拥有一个方法阵列,可以对X给出部分结果,每种方法都有其优缺点。对于在何种情况下给定方法可能产生非平凡结果,获得了相当多的直觉。
  15. 开始将这些方法结合起来,简化这些方法的执行,定位新的模型问题,和/或找到一个统一且澄清的框架,在该框架中许多先前的方法、见解、结果等成为特例。
  16. 最终,意识到存在一个方法族A^(其中A是最早被发现的),粗略地说,可以处理所有出现性质P^(性质P的现代推广)的情况。还有一个相当不同的方法族B^*,可以处理所有出现Q^*的情况。
  17. 从之前关于这个问题的所有工作中,所有已知的模型例子都已知满足P^或Q^。提出猜想C:问题X的所有情况都满足P^或Q^
  18. 验证猜想C实际上蕴含该问题。这是一个重大的简化!
  19. 重复步骤1-18,但将问题X替换为猜想C。(同样,情节可能与上述不同。)这个过程本身可能会迭代几次。
  20. 最后,问题被提炼到最纯粹的本质:一个关键猜想K,它(至少在道德上)为已知方法A^*、B^*等提供了决定性输入,这些方法将解决猜想C从而解决问题X。
  21. 一个突破:引入新方法Z来解决K的一个重要特殊情况。
  22. 终局:利用所有直觉、经验和过去结果的全部力量,迅速发展和扩展方法Z,完全解决K,然后C,最后X。
  23. 为解决主要问题X而开发的技术被调整用于解决该领域中其他相关问题。但现在出现了一个X的自然后继问题X’,它刚好超出了新开发工具的范围……然后我们回到第1步。

另请参阅"了解你的工具的局限性"、"问自己愚蠢的问题"、"提前思考“和”使用废纸篓"。