继续回到前面关于算术计算与命题逻辑演算的内容。在算术的计算中,加法计算可分解为一系列的步骤,其中每一步的操作是匹配运算律或加法表中的一项,将算式当中与运算律或加法表的表达式中“=”号左边内容相同的部分替换为“=”号右边的内容,或反过来替换。一阶谓词逻辑里,推理是应用某一重言式进行替换进而转换问题表达式的形式。“⇔”符号连接的重言式,左右二边的表达式在任何情况下真值相同,可以相互替换;“⇒”符号连接的重言式是右边可以替换左边,左边则不能替换右边。多步的推理构成证明。更基础的命题联接运算,也是在匹配真值表基础上决定能否进行替换。上述替换与被替换的内容可以是与等价类符号左右边相同的内容,也可以是对等价类符号左右二边的内容的实例进行替换。

计算操作本质上可归结为替换操作,以及替换操作基础上问题表达式的转换;计算所能进行的替换依据是等价类符号所表示的等价关系;这些等价关系本身是知识的重要组成,它们或已在知识体系中建立,或可由已有的理论推导出(这也是一种计算过程);这是计算合法性的依据。以上是本书一个重要的结论,可称为等价-替换原理。这进一步细化了6.2节里的计算定义。

算术与逻辑中基础的计算可归结为替换-转换的操作,那么所有的计算也都可以归结为替换-转换的操作,这可以从现代计算机的应用得到佐证。我们今天所知道的计算,大都已在现代计算机应用中实现,就算存在还未能由计算机执行的计算,我们也相信可以编写出程序让计算机来计算。现代计算机所执行的计算,最终都是分解为基础的算术与逻辑计算,由计算机的算术逻辑部件执行(详见后一章)。这是否也间接地说明了各类计算的规则也会是某些等价关系?

等价-替换原理并不是显而易见的。以数学为例,初等数学里的解题过程,很多时候可以感觉到是在做等价替换-转换操作,这从操作步骤的名称也可看出,如“移项”“合并同类项”“去分母”等等。有的时候这种感觉并不明显。手工操作时,通常是直接写出每一步骤或合并多个步骤的结果,而不一定明确体现操作的过程与依据。稍复杂的计算可以是多分支多步骤复合的过程,分支的过程用于得出可利用的等价关系,主要的过程则是对问题表达式的替换与转换。在这种过程中,每一步的操作对我们来说都可能有特定而具体的意义,我们专注于有意义的内容性思考,而不一定意识到操作层面的性质。比如赋值实际也是建立问题域里一个等价关系;比如增加辅助条件使问题变化,同样是为了利用其它更多的等价关系;再比如数值计算,本质是在做符号的转换,只是数字我们太过熟悉。总之,我们的符号表述没有自觉将等价与替换呈现清楚,因为这样的规范会以牺牲简洁性为代价。

计算的主要过程为一系列的步骤,每一步骤后的问题表达式与前一步骤的表达式保持等价,或者说在过程中始终保持着等价,这种效果只能是每一步的问题表达式转换都是基于等价关系。对替换操作的觉悟也反映在乔姆斯基的形式文法(参阅3.2.4节)以及卡尔纳普的逻辑句法中(参阅5.2节)。按照他们的理论,自然语言或者逻辑语言可由一些初始字符通过递归地应用转换规则与生成规则来生成所有的表述,其中的转换规则与生成规则与这里描述的等价-替换类似。

至此,再来考察等价类符号,我们把等价类符号看作可以进行某一类型替换操作的指示符,符合此要求的符号都可视为等价类的符号。前面提到的“<”“>”“<=”“>=”“≠”符号,首先它们的表达式也形成了一个命题,其次它们在特定的上下文中同样会带来替换操作,在此意义上它们仍可看作等价类符号。只是此类符号与“=”号相比,缺乏对称性,传递性也较弱,导致可以进行替换的场景较少。

“等价-替换原理”不同于一般说到的原理。一方面我们的知识以等价关系来呈现,等价关系以等价类符号标识,等价类符号可形成一个系列。另一方面“等价-替换”里的“替换”强调的是一种物理操作。“=”及其他等价类符号所建立的表达式,静态看是一陈述句型;动态来说,实际是指示进行替换操作的祈使句型。传统上,对“等价”关系,特别是“相等”关系的研究主要是在逻辑学里进行,逻辑的基本规律:同一律、矛盾律、排中律,都与此相关,只是逻辑的研究带有很大的思辨性。现在研究可以有更明确的路径进行。将我们的知识重构为更明显的等价关系表示,总结我们已有知识中已用到那些等价类符号,它们能形成什么样的系列;明确各种等价符号对应的替换操作,它们具体的作用方式与条件。最后将所得到的结论进一步一般化,并形成规范化的用法。显然这一工作不是本书能够完成的。

10-28 16:28