对于不太懂数理逻辑的人来说,逻辑推演就像是魔术。把奇怪的符号摆弄一通,竟然可以从正确的前提导出无比复杂,但却必然正确丝毫不爽的结论。这是为什么呢?
首先要搞清楚一点,当我们谈到逻辑的时候,这种指意几乎都是不明确的,因为逻辑不止一个,而是有无数种不同的可能性,我们将其称为不同的逻辑体系。在数理逻辑中,这些不同的体系描述了不同的数学系统,有着不同的性质。有的比较弱,但足以解答很多问题,也可以让我们能利用计算机进行自动推理;有的比较强,能解答的问题更多,甚至能成为几乎所有现代数学的逻辑基础,但在这样的系统中,对于某些命题,虽然我们知道它是真的,却没有办法在有限的时间内在体系中给出证明。
但所有这些系统,几乎都拥有同一个性质:如果前提是正确的,那么结论也必定是正确的。
作者David Rosenthal,来自http://facpub.stjohns.edu/~rosenthd/
不过,即使这种说法也很模糊。正确,是相对于什么来说正确?一串符号本身是没有正确错误之分的,要分出这一点,必然要将符号和外部的某些东西来比较。
这种东西就是数理逻辑中所谓的“模型”。比如说皮亚诺公理,它的模型就是自然数,因为人们提出这套公理就是为了将自然数这个体系公理化。为了做到这一点,所有公理都是被设计好,能恰当地刻画相应的模型,而从公理推出的结论也都是正确的,而这种正确,指的就是在模型内正确,也就是说相应的命题,无论它的自由变量在模型中取什么值,得到的结论在模型中都是正确的。在数理逻辑中,逻辑体系的这种属性又叫可靠性(soundness)。
当然,你可能会说,我们有很多逻辑体系,有描述自然数的,有描述实数的,有描述集合的,它们用到的推理规则都是一样的。那么,为什么不同的逻辑体系,即使描述的东西不一样,它们也都满足可靠性,也就是说从符合模型的公理推出的结论也必定符合模型?
这是因为,推理规则本身也是一种逻辑体系,或者更加准确地说,逻辑体系就是推理规则加上公理,而推理规则本身也是可以变化的。现在常用的推理规则,它的选择并非漫无目的,而正是因为它满足可靠性的条件,我们才选用了它。
那么问题又回来了。我们之前说过,正确性之类的性质,需要跟外部的某个东西作比较,才能得到结论,而可靠性也是这样。那么,对于推理规则来说,“外部的某种东西”又是什么呢?
答案就是命题结构本身。举个例子,命题逻辑的模型就是对于命题真假的赋值,以及如何计算复合命题(A蕴含B之类的命题)的真值。用这个模型很容易就能证明命题逻辑演算的可靠性。一阶逻辑的模型就是所谓的Herbrand结构,它实际上就是命题真假赋值的一种延伸,通过这个结构可以将一阶逻辑演算的可靠性归结为命题逻辑演算的可靠性。对于更高阶的逻辑,或者其他种类的逻辑(比如线性逻辑),我们也能找出类似的结构。
说来说去,为什么逻辑演算绝对能得到正确的命题,答案其实很简单。为了探索世界,我们需要判断命题的真假,还有一些逻辑运算。而我们定义对应逻辑体系的方法,就是构造一个能满足我们的需求,也就是从真命题必然推出真命题的逻辑体系。正是因为我们希望逻辑体系是可靠的,所以我们才去定义了可靠的逻辑体系,而逻辑体系也因此而可靠。
要记住,逻辑体系不是天上掉下来的,它也是人类心血的结晶。对世界的探索是因,逻辑体系的出现才是果。
本文系悟空问答签约稿件,未经许可不得进行商业转载