参考资料:Basic Proof Theory (Troelstra, Schwichtenberg), Proof Theory (Takeuti).
一阶逻辑语言
一些(甚至可能是
一些(同上)常函数;
一些(同上)常谓词;
"总是够用"个(我们最好还是暂时回避基数问题)自由变量;
"总是够用"个受限变量;
逻辑连接词
量词
如果给定所有的常量,一个语言系统也就给定了。因此有时候在语言系统不变的情况下我们有时省略"在
任何一个符号列被称为(
常量、自由变量和常函数(及其可能的复合)组成的表达式被称为项。更准确来说:
常量、自由变量是项。
如果
项只能通过以上两种方法得到。(即项的定义是归纳的)
如果
原子命题是命题。
命题的逻辑连接是命题。
如果
命题只能通过以上三种方法得到。
定义
对于
下面我们把一排命题
特别地,记
特别地,记
虽说
记
(直觉地)这表示如果假设
但是这并没有告诉我们什么推理是合法的,什么推理是不合法的。一组推理规则被称为列演算。
下面我们介绍其中一种由 Gentzen 提出的列演算:LK 系统,Logistische Kalkül(逻辑演算)。
以下是几条(LK 系统中)无聊的结构性推理规则。
1.1) 弱化律
1.2) 压缩律
1.3) 交换律
以下是唯一一条不无聊的结构性推理规则。记住它。
1.4) 切割律
以下是几条因为太直观而无聊的逻辑性推理规则。
2.1)
律 2.2)
律 2.3)
律 2.4)
律
以下是两条不那么容易理解的逻辑性推理规则。
2.5)
律 其中
是任意项; 不出现在推理的下一行。 更具体来说,记号
是 ,要保证 不出现在推理的下一行。 看起来很没道理,为啥
能推出对所有 都成立?因为 不出现在其他任何地方,因此它应当被理解为 对任意选取的 都成立,也就直接是 。 这里
被称为特征变量。 2.6)
律 其中
是任意项; 不出现在推理的下一行。 这里
也被称为特征变量。
还有一种类似的逻辑系统,被称为 LJ 系统,代表了直觉主义逻辑。LJ 和 LK 在很大程度上都是相同的,但是
比如,在 LK 中我们可以有
但 LJ 中就不可能有如此证明。
不过话说回来却有
太怪了。
一个 LK 中的证明
最顶上的(叶子节点)列总是形如
除了根(称为终列)以外,每个列都是所在推理的依据;该推理的结论也总是在
如果(在 LK 中)存在一个终列为
定义一个 LK-证明 是正则的,当且仅当:
所用的特征变量互不相同;
一个
十分合理的要求。可以让我们避免很多麻烦。
如果
归纳即可。
由此得到一个很好的性质:对于任意的 LK-证明,总存在一个与其结论相同的正则 LK-证明。仍是直接归纳即可证明。从此我们总是假设我们谈论的证明是正则的。
用相同方法还可以得到一个关于把变元替换为项的引理。
令
(我靠变量替换这玩意简直是万恶之源,就不能用更文明优雅的、天然地解决了变量的作用范围的 lambda 演算吗???)
最后给出两个小性质。
如果某列是可证明的,那么它也一定可以从原子命题的公理开始证明。
因为很显然任何逻辑链接都可以通过对应的推理规则构造。
如果某列是可以不通过切割律证明的,那么它也一定可以从原子命题的公理开始不通过切割律地证明。
同上。
所以我们到底为什么这么关注切割律?这个问题还留待以后解答。
我们以 LK 为基础推理系统。
可以发现 LK 中暂时只有无聊的重言式
一组无自由变元的命题的集合
如果
如果空列
一个无自由变元的命题
容易证明以下三个命题是等价的:
任何命题
对于某命题
还有一个容易证明的小性质:
一个列可由
(提示:切割律。)
也就是说这两种公理系统的定义是等价的,以后我们不区分它们而是都记得到的新推理系统为 LK
定理.
一个列是 LK 可证的,那么从 LK 中删去切割律它仍可证。
这部分有繁琐且套娃的归纳、无穷无尽的分讨、一大堆一次性用完即抛的概念而且这一切根本就没人关心。因此我们将跳过证明。对于证明过程我们只需指出:
这个证明是构造性的。我们归纳地构造了一个新的不用切割的证明。
证明依赖于
这个定理的应用更为关键。
注意到,去除切割律之后,证明的每一步总是把列变得更复杂(命题不会凭空消失)。因此,证明
定理.
LK 一致。
(即
在 LK 中不可证)
应用消除切割定理还可以得到一个重要的引理和一堆衍生物。
引理.
记在 LK 中加入无参数常谓词
和公理 (即加入真值常谓词)得到的系统为 。 令
LK 可证,而 和 分别是 和 的划分(可以为空),记为 。 那么总存在命题
(称为这对划分的插值)满足
和 都 可证;
中所有自由变元、常变元、除 之外的常谓词都在 中。
证明.
对(无切割)证明
所需步数进行归纳即可。 特别关注归纳基础,即无需任何推理的情况:那么
必形如 。分割只有四种情况,每一种的 都是显然的: 。
它可以衍生出
定理. (Craig's interpolation)
令
LK 可证。 总存在命题
,称为 的插值,满足
和 都 LK 可证;
中所有自由变元、常变元、常谓词都在 (虽然这个记号意义不明但相信你懂我意思)中。 特别地,如果
没有公共的常谓词,那么 和 之一必 LK 可证。
证明.
可证,那么(由推断律) 可证。划分为 应用前述引理,得到一个 使得 和 都 可证。 无公共常谓词的情况已经显然了;现在假设有一个公共常谓词
。 令
,其中 皆为受限变量。这就构造出了一个无参常谓词。将 替换为 即可。
其他衍生物都不知道有啥用啊!!!不写算了。
我们在 LK 中特别加入一个二元常谓词
可以得到一个新系统
易证得,对于任何命题
都
与先前的公理系统类似,我们也可以用以下命题族
这里切掉了
和另一例
的切割得到。因此得到归纳。
定理.
定义.
令
是一个一阶逻辑语言。 上的一个结构是一个 的对,其中
常量被
映射到 上, 常函数被
映射到 上, 常谓词被
映射到 上。 特别地,如果再配上一个映射
把变量也映射到 上,那么 还被称为诠释。 被称为一个指派。
半项是允许受限变量的项。我们如此定义半项
在 上的映射 :对于常量和变量直接应用 ,对于 递归地定义 。 如果
是一个谓词常量,那么 被一个诠释满足当且仅当 。
被满足当且仅当 不被满足; 被满足当且仅当 都被满足; 被满足当且仅当 中至少一个被满足; 被满足当且仅当 不被满足或 被满足。
被满足,当且仅当,对于任何最多只在 处和 不同(当然,也可以就是 )的 , 都被满足。 被满足,当且仅当,存在一个最多只在 处和 不同(当然,也可以就是 )的 , 被满足。
被满足当且仅当 不被满足或 被满足。 一个命题/列在结构
中有效,当且仅当它在任何指派下都被满足。 一个命题/列有效,当且仅当它在任何结构下都有效。
(终于,我们现在给出我们定理的陈述:)
一个命题 LK 可证当且仅当它有效。
显然,在推理系统中所有的函数/谓词都是没有"实际含义"的空壳,只服从于推理规则。而如果指定了某个结构,函数/谓词就可能有"实际含义",从而
仅仅是顺带一提(毕竟我们不打算在此书中研究模型论),一个结构称为某公理系统
"可证
"有效
引理.
令
是一个列。要么它有一个无切割证明,要么存在一个不满足 的诠释。
证明. (Schütte)
下面我们将介绍一种机械化地对列进行简化的方法。
我们从列
出发,以如下方式展开它的推理树。循环以下 13 步:
左简化。对于所有叶子列 ,把所有 中形如 的命题去掉 移到右边,得到新的叶子列。
右简化。对于所有叶子列 ,把所有 中形如 的命题去掉 移到左边,得到新的叶子列。
左简化。对于所有叶子列 ,把所有 中形如 的命题直接写成 ,得到新的叶子列。
右简化。对于所有叶子列 ,把所有 中形如 的命题任意替换为 之一,从而得到 个命题,这 个命题全是该列的儿子。
左简化。对于所有叶子列 ,把所有 中形如 的命题任意替换为 之一,从而得到 个命题,这 个命题全是该列的儿子。
右简化。对于所有叶子列 ,把所有 中形如 的命题直接写成 ,得到新的叶子列。
左简化。对于所有叶子列 ,考虑所有 中形如 的命题。新的叶子列为 和 (共 个)。
右简化。对于所有叶子列 ,考虑所有 中形如 的命题。新的叶子列为 。
左简化。对于所有叶子列 ,把所有 中形如 的命题直接写成 (其中 是一个此前没有被用于化简的自由变元)。
右简化。对于所有叶子列 ,把所有 中形如 的命题直接写成 (其中 是一个在之前的展开没有出现且此前没有被用于化简的自由变元)。
左简化。对于所有叶子列 ,把所有 中形如 的命题直接写成 (其中 是一个在之前的展开没有出现且此前没有被用于化简的自由变元)。
右简化。对于所有叶子列 ,把所有 中形如 的命题直接写成 (其中 是一个此前没有被用于化简的自由变元)。 如果
和 有公共命题,不展开它;否则仍把 展开为自己。 显然这 13 种展开都是有效的推理;而且上面的列如果不被满足,立刻就可以推出下面的列亦为假。
考虑得到的
中一条从 开始的链。前 12 种展开都会减少逻辑连接词和量词的数量;所以这条链要么终结于有公共命题、没有逻辑连接词和量词的 要么最终是一条无穷无尽不断重复的没有公共命题的 。 前者可以对公理使用弱化律立即推出。因此如果所有"叶子"都是前者,我们已经得到了一个
的证明。 如果存在一个后者情况的链,我们可以构造一个结构使得在足够远处,
全被满足而 全不被满足。显然, 和 一定没有公共的原子命题 ,否则(由于没有切割律)我们一定展开不出无公共命题的列。剩下的工作就显然了。