定义(二)
Gx=dfx>3&x<10。
如果语言具有谓词名词化机制——例如类抽象运算符——我们可以为 G 给出另一种异质定义:
Gs=df 的类,即 3 到 10 之间的数字类。
请注意,像 (4) 这样的异质定义不仅仅是一个缩写。首先,我们将其中的表达式 x 视为一个真正的变量,允许替换和绑定。因此,定义项 Gx 不仅仅是定义项的缩写。此外,如果这样的定义是缩写,它们将受到定义项必须比定义项短的要求,但这样的要求并不存在。另一方面,对定义的真正要求却毫无意义。以下规定并非合法定义:
Gx=dfx>y&x<10。
但如果将其视为单纯的缩写,则并无不合法之处。(事实上,数学家们经常使用这种缩写,省略那些暂时不感兴趣的变量。)
有些规定性定义仅仅是缩写手段(例如,关于公式中括号省略的定义;参见Church 1956,§11)。然而,许多规定性定义并非如此;它们在我们的论述中引入了有意义的内容。因此,定义(4)使G成为一个有意义的一元谓词:G根据(4)表达了一个特定的概念。相反,根据规定(6),G不是一个有意义的谓词,也不表达任何类型的概念。但差异的根源是什么?为什么(4)是合理的?但 (6) 不是吗?更一般地说,定义何时合法?定义项必须满足哪些要求?就此而言,被定义项又如何呢?被定义项必须是原子性的,例如,像 (3) 和 (4) 中那样吗?如果不是,被定义项有哪些限制(如果有的话)?
2.1 两个标准
对这些问题的任何回答,合理的要求是必须遵守两个标准。[4] 首先,规定性定义不应使我们能够确立本质上全新的主张——我们称之为保守性标准。我们不应该仅仅通过规定就确立关于月球的新事物。诚然,除非这个标准足够精确,否则它很容易受到琐碎反例的影响,因为引入定义会对某些事实产生实质性的影响。然而,这个标准可以变得精确且可辩护,我们很快就会看到一些方法来实现这一点。
其次,定义应该明确已定义表达式X的用法——我们称之为“使用标准”。这个标准看似合理,因为只有定义——而非其他——才能指导我们使用X。然而,这里存在一些复杂因素。什么才算X的使用?在“说”和“知道”的范围内出现的X是否包括在内?在引文上下文中以及在词语(例如“色诺芬尼”)中出现的X又如何呢?显然,最后一个问题的答案应该是“否”。但前几个问题的答案却不那么明确。还有一个复杂因素:即使我们能够以某种方式分离出X的真正出现,其中一些出现也可能被定义合理地忽略。例如,商的定义可能会使该术语的某些出现未定义(例如,除以0的情况)。正统观点认为此类定义不合法,但这种正统观点在此值得挑战。然而,我们不妨将挑战留待下次,并通过理想化来规避复杂性。让我们将研究范围限制在具有明确确定的逻辑结构(例如,一阶语言)且不包含定义项X出现的基础语言中。并且,让我们将研究范围限制在对X的合法出现不设任何限制的定义中。那么,使用标准现在规定,定义应该确定扩展语言中所有包含X的表达式的使用。
使用标准的一种变体表述是:定义必须确定被定义项的含义。新的表述不那么确定,也更具争议性,因为它依赖于“含义”,这是一个模糊且在理论上存在争议的概念。
请注意,这两个标准适用于所有规定性定义,无论它们是单个还是多个,也无论它们是否属于形式(2)。
2.2 传统解释的基础
传统的定义解释基于三个理念。第一个理念是定义是广义恒等式;第二个理念是句子的原初性;第三个理念是归约。第一个理念——定义是广义恒等式——激发了传统解释中定义的推理规则。简而言之,这些规则是:(i) 任何被定义项的出现都可以被被定义项的出现所取代(广义被定义项消除法);反之,(ii) 任何被定义项的出现都可以被被定义项的出现所取代(广义被定义项引入法)。第二个观点——句子的首要性——源于这样一种思想:一个术语的基本用法在于断言和论证:如果我们理解了定义术语在断言和论证中的用法,那么我们就完全掌握了该术语。然而,句子在论证和断言中是首要的。因此,第二个观点认为,要解释定义术语X的用法,解释包含X的句子项的用法是必要且充分的。(这里的句子项被理解为包括带有自由变量的句子和类似句子的事物,例如(4)中的定义项;此后,这些项将被称为公式。)第二个观点提出的问题当然很大也很重要,但它们无法在简短的概述中得到解决。让我们简单地将这个想法视为既定事实。
第三个观点——归约——是,包含定义术语的公式Z的用法可以通过将Z归约到基础语言中的公式来解释。这一思想与句子的首位性相结合,引出了使用标准的一个强版本,称为可消除性标准:定义必须将每个包含被定义项的公式化简为基础语言中的公式,即不包含被定义项的公式。可消除性是传统解释的独特论点,正如我们将在下文中看到的,它可以受到质疑。
需要注意的是,传统解释并不要求化简扩展语言的所有表达式;它只要求化简公式。例如,谓词G的定义无需提供将G单独化简为基础语言谓词的方法。因此,传统解释与以下思想相一致:规定性定义可以为语言添加新的概念资源。因为基础语言中没有任何东西能够表达扩展语言中 G 所表达的谓词概念。这并不是否认扩展语言中没有表达任何新的命题——至少在真值条件的意义上是如此。
2.3 保守性和可消除性
现在让我们看看如何使保守性和可消除性精确化。首先考虑具有我们熟悉的精确证明系统的语言。假设基础语言 L 就是这样一种语言。L 的证明系统可以是经典的、三值的、模态的、相关的或其他类型的;它可能包含也可能不包含一些非逻辑公理。我们假设我们有“在 L 中可证明”和“在 L 中可证明等价”的概念,以及当 L 的证明系统补充定义 D 和控制定义的逻辑规则时产生的“在 L+ 中可证明”和“在 L+ 中可证明等价”的概念。现在,保守性标准可以精确化如下。
保守性准则(句法表述):任何在 L+ 中可证明的 L 公式,在 L 中也是可证明的。
也就是说,任何使用定义 D 可证明的 L 公式,在不使用 D 的情况下也可证明:该定义无法证明 L 中的任何新内容。可消除性准则可以精确地表达如下:
可消除性准则(句法表述):对于 L+ 中的任何公式 A,存在一个 L 公式,在 L+ 中可证明与 A 等价。
(民间传说将保守性和可消除性准则的提出归功于波兰逻辑学家 S. Leśniewski,但这是一个错误;有关讨论和更多参考文献,请参阅 Dudman 1973、Hodges 2008、Urbaniak 和 Hämäri 2012。)[5]
现在,我们为 L 赋予一个模型论语义。也就是说,我们将一类解释与 L 关联起来,我们提出“在解释M中,在L中有效”(又称“在L中,在M中为真”)和“在L中相对于M语义等价”的概念。当L的语义补充了定义D的语义后,则得到“在L+中,在M+中有效”和“在L+中相对于M语义等价”的概念。保守性和可消除性准则现在可以精确地表达如下:
保守性准则(语义表述):对于L的所有公式A,如果A在所有解释M+中在L+中有效,则A在所有解释M中在L中有效。
可消除性准则(语义表述):对于L+中的任何公式A,都存在一个L的公式B,使得相对于所有解释M+,B在L+中语义等价于A。
这两个准则的句法和语义表述显然是平行的。然而,即使我们假设强完备性定理对 L 和 L+ 成立,这两个公式也不一定等价:这取决于我们对定义 D 的语义。事实上,在句法和语义框架内,这两个标准可能存在几种不同的、不等价的公式。
还有另一种更严格的语义保守性概念,它在关于真值的文献中尤为突出(Halbach 2014,第 69 页)。假设 L+ 的解释 M+ 是 L 解释 M 的扩展,当且仅当 M 和 M+ 为 L 中的量词赋予相同的定义域,并为 L 中的非逻辑常量赋予相同的语义值。那么我们有:
保守性标准(强语义公式):L 的每个解释 M 都可以扩展为 L+ 的解释 M+。
换句话说,如果一个定义不排除任何先前可用的原始语言解释,则该定义在语义上是强保守的。
请注意,无论是在语义还是句法表述上,保守性和可消除性标准的满足都不是定义的绝对属性;这种满足是相对于基础语言而言的。不同的基础语言可能具有与之相关的不同的证明系统和不同类型的解释。因此,一个定义在添加到一种语言时可能满足这两个标准,但在添加到另一种语言时可能无法满足。有关这些标准的进一步讨论,请参阅 Suppes 1957 和 Belnap 1993。
2.4 范式定义
为了具体起见,我们将基础语言 L 固定为具有恒等式的经典一阶语言。L 的证明系统可能包含一些非逻辑公理 T;因此,L 的解释就是 T 的经典模型。与前面一样,L+ 是将非逻辑常数 X 的定义 D 添加到 L 后得到的扩展语言;因此,X 可以是名称、谓词或函数符号。当且仅当两个定义在扩展语言中得出相同的定理时,才称它们等价。然后,可以证明,如果 D 满足保守性和可消除性标准,则 D 等价于如下规定的范式定义。[6] 由于范式定义满足保守性和可消除性的要求,传统的解释意味着,如果我们要求定义是范式,则不会丢失任何本质信息。
定义的范式可以如下规定。名称 a、n 元谓词 H 和 n 元函数符号 f 的定义必须分别具有以下形式:
a=x=dfψ(x)H(x1,…,xn) = dfϕ(x1,…,xn),
f(x1,…,xn)=y = dfχ(x1,…,xn,y),
其中变量 x1,…,xn,y 各不相同,且每种情况下的定义子都满足可分为一般部分和特定部分的条件。[7] 定义子的一般条件在每种情况下均相同:它不得包含定义项或除定义项之外的任何自由变量。当传统的定义方法应用于非经典逻辑(例如,多值逻辑和模态逻辑)时,一般条件保持不变。特定条件则更具多样性。在经典逻辑中,(7) 式的定义子 ψ(x) 的具体条件是它满足存在唯一性条件:即可证明某事物满足 ψ(x),且最多只有一个事物满足 ψ(x)。[8] (8) 式没有具体条件,但 (9) 式的条件与 (7) 式的条件相同。存在唯一性断言必须成立:公式
∃yχ(x1,…,xn,y)&∀u∀v[χ(x1,…,xn,u)
&χ(x1,…,xn,v)→u=v] 的万有闭包
必须是可证明的。[9]
在允许空名的逻辑中,(7) 式的定义子的具体条件会更弱:存在性条件将被删除。相反,在要求名称非空且刚性的模态逻辑中,特定条件会得到加强:不仅必须证明存在性和唯一性必然成立,还必须证明定义项在可能世界中由同一个对象满足。
符合 (7)–(9) 的定义是异质的;被定义项是句子性的,但被定义的术语不是。(7) 和 (9) 的特定条件的一个来源是它们的异质性。需要特定条件来确保定义项,虽然不属于所定义术语的逻辑范畴,但赋予其适当的逻辑行为。这些条件确保了扩展语言的逻辑与基础语言的逻辑相同。这就是为什么范式的具体条件会随着基础语言的逻辑而变化的原因。请注意,无论这种逻辑是什么,正则同质定义都不需要任何特定条件。
传统的解释使得定义的简单逻辑规则以及扩展语言的简单语义成为可能。假设定义 D 有一个句子定义项。(在经典逻辑中,所有定义都可以轻松地转换为满足此条件。)设 D 为
ϕ(x1,…,xn)=dfψ(x1,…,xn),
其中 x1,…,xn 是 ϕ 或 ψ 中所有自由变量。令 ϕ(t1,…,tn) 和 ψ(t1,…,tn) 分别通过同时用项 t1, …, tn 代替 ϕ(x1,…,xn) 和 ψ(x1,…,xn) 中的 x1, …, xn 得到;并根据需要更改绑定变量。则控制 D 的推理规则如下:
ϕ(t1,…,tn)
ψ(t1,…,tn)
定义项消除
ψ(t1,…,tn)
ϕ(t1,…,tn)
定义项引言
扩展语言的语义也很简单。例如,假设 D 是名称 a 的定义,并假设其以范式表示时等价于 (7)。那么,L 的每个经典解释 M 都会扩展为扩展语言 L+ 的唯一经典解释 M+。 M+ 中 a 的表示是 M 中唯一满足 ψ(x) 的对象;ψ(x) 上的条件确保了这样的对象存在。定义谓词和函数符号的语义与之类似。在传统论述下,非经典逻辑中定义的逻辑和语义可以并行处理。请注意,将定义 (10) 添加到语言中的推理力与将 ϕ(x1,…,xn)↔ψ(x1,…,xn) 的全称闭包作为公理添加的推理力相同。
然而,(10) 和 (11) 逻辑行为的相似性不应掩盖双条件(“↔”)和定义等价(“=df”)之间的巨大差异。前者是句子连接词,而后者是跨范畴的:不仅公式,而且谓词、名称和其他逻辑范畴的项都可以出现在“=df”的两侧。此外,双条件可以迭代,例如 ((ϕ↔ψ)↔χ),但定义等价则不行。最后,一个术语可以通过规定性定义引入到逻辑资源受限于经典合取和析取等式的基础语言中。即使双条件句无法用语言表达,这仍然是完全可行的。在这种情况下,规定性定义的推理作用不会被扩展语言的任何公式所反映。
传统的定义解释不应被视为要求定义必须符合范式。它所施加的唯一要求是:(i) 被定义项包含被定义项;(ii) 被定义项和被定义项属于同一逻辑范畴;以及 (iii) 定义满足保守性和可消除性。只要满足这些要求,就没有进一步的限制。被定义项和被定义项一样,可以是复数;而被定义项和被定义项一样,可以包含被定义项。因此,例如,如果函数表达式“的数量”的定义以公式“F的数量等于G的数量”作为其被定义项,则在形式上没有任何错误。范式的作用仅仅是提供一种简单的方法来确保定义满足保守性和可消除性;它们并非规定性地引入术语的唯一合法格式。因此,(4) 是合法定义,而 (6) 不是,其原因并非在于 (4) 是范式而 (6) 不是。
Gx = dfx>3&x<10。
Gx = dfx>y&x<10。
原因是 (4) 满足这两个条件,而 (6) 不满足。(这里假设基础语言包含普通算术;在此假设下,第二个定义意味着矛盾。)以下两个定义也不符合范式:
Gx = df(x>3&x<10)&y=y。
Gx = df[x=0&(G0∨G1)]∨[x=1&(∼G0&∼G1)]。
但在传统解释下,两者都应被视为合法,因为它们满足保守性和可消除性准则。由此可见,这两个定义可以写成范式。定义 (12) 显然等价于 (4),定义 (13) 等价于 (14):
Gx=dfx=0。
请注意,(13) 的定义在逻辑上不等价于任何无 G 的公式。尽管如此,该定义仍然具有范式。
同样,传统解释与逻辑和数学中的递归(又称归纳)定义完全兼容。例如,在皮亚诺算术中,指数运算可以通过以下方程来定义:
m0 = 1,
mn+1 = mn⋅m。
这里,第一个方程(称为基子句)定义了指数为 0 时函数的值。第二个子句(称为递归子句)使用指数为 n 时函数的值来定义指数为 n+1 时的值。根据传统的解释,这是完全合理的。因为皮亚诺算术定理表明上述定义等价于范式定义。[10] 递归定义在格式上是循环的,正是这种循环性使它们变得清晰易懂。但这种循环性完全是表面现象,正如范式的存在所表明的那样。请参阅下文关于循环定义的讨论。
2.5 条件定义
我们通常的做法是,有时我们定义术语时并非绝对的,而是有条件的。有时我们并非直接肯定某个定义,而是在某个条件的范围内,这个条件可以是默认的,也可以是明确规定的。例如,我们可以定义 F(x, y) 来表达“隔一世的堂兄堂妹”的概念,即:
F(x,y)=df∃u∃v(u 是 x 的父母
& v 是 y 的祖父母
& u 是 v 的兄弟姐妹),
其中,变量的范围被理解为人类。再比如,在定义除法时,我们可以明确地将除数不为 0 作为定义的一个条件。我们可以规定
(y/x=z)=df(y=x.z),
但前提是 x≠0。这种做法似乎违反了可消除性准则,因为条件定义似乎并不能确保所有句子中定义的项都能被消除。因此,由于 (16) 中对变量值域的默认限制,我们无法证明
∃xF(x,2)
与任何不含 F 的句子等价。同样,(17) 也无法让我们从
0/0=2 中消除定义的符号。
然而,如果这里违反了可消除性准则,那也只是表面上的,并且可以通过两种方法之一轻松纠正。第一种方法——也是最符合我们日常实践的方法——是理解通过添加定义来排除诸如 (18) 和 (19) 之类的句子而产生的丰富语言。因为当我们规定诸如 (16) 之类的定义时,我们的目的并非谈论数字之间的隔代关系;相反,我们希望排除所有此类不恰当的讨论。同样,在规定 (17) 时,我们希望排除关于除以 0 的讨论,认为它们是合法的。因此,第一种方法是认识到诸如 (16) 和 (17) 之类的条件定义会给丰富语言带来限制,因此,一旦丰富语言被正确划分,它就符合可消除性准则。这个想法可以通过将条件定义视为在具有种类量化的语言中表述来正式实现。
第二种方法——最符合我们实际形式实践的方法——是将定义项在先决条件不成立的情况下的应用理解为“无关情况”,并针对此类应用做出适当的规定。因此,我们可以规定,除了人类之外,没有其他生物有隔开一堂兄弟姐妹的表兄弟姐妹,也可以规定任何数除以 0 的结果都为 0。因此,我们可以将 (17) 替换为
(y/x=z)=df[x≠0&y=x.z]∨[x=0&z=0]。
由此得出的定义满足可消除性准则。第二种方法迫使我们在阅读包含定义项的句子时要格外小心。因此,例如,句子
∃x∃y∃z(x>y&x/z=y/z)
虽然在除法的定义如(20)中为真,但它表达的并非一个有趣的数学真理,而仅仅是我们处理“无关紧要的情况”的副产品。尽管存在这样的代价,但证明概念的简化性带来的收益或许足以证明,在某些情况下,转向诸如 (20) 这样的定义。
参见 Suppes 1957 中关于条件定义的不同观点。