我们将要学习的对于真的刻画来自于 Tarski 的工作, 其后有更加丰富的哲学意蕴——但我们暂且放下这些讨论.
结构
对于某个语言 L, 我们称满足以下条件的 M={M,F,P,−M} 为这个语言的一个结构:
1. | M 是集合, F⊆{f:M(n)→M∣n∈ω}, P⊆⋃n∈ωM(n). |
2. | −M:L::F∪L::P→M::F∪M::P 是双射. |
3. | 对函数符号 f∈L::F, domfM=ML::aF(f). |
4. | 对谓词符号 P∈L::P, PM⊆ML::aP(P). |
我们还将把形如 ass:L::X→M 的函数称作这个结构上的一个原始赋值.
我们提醒读者一个集合论上的小问题: 我们定义有序对 (a,b)={{a},{a,b}}, 然后递归地定义 X(2)=X×X={(a,b)∣a,b∈X}, X(n+1)=X×X(n). 虽然显然 X(n) 和 Xn={f:n→X} 之间有典范的双射, 但从定义上它们是不一样的. 我们会把 Xn 里的元素记为 ⟨x0,...,xn−1⟩, 而把 X(n) 里的元素记为 (x0,...,xn−1).
同样的, 你会发现二元函数是 f:X(2)→Y 而不是 f:X2→Y, 因此我们简写的是 f(x1,x2)=f((x1,x2)) 而非 f(x1,x2)=f(⟨x1,x2⟩), 这也与直观相符.
显然, 原始赋值会帮我们把
L 里的项实现为
M 可定义的一些集合, 进而把
L 里的公式翻译为
M 看到的一些集合论的事实. 我们下面来详细叙述这个操作.
给定 L 的结构 M 上的一个原始赋值 ass, 我们递归地定义一个 Ass:L::Term→M::M 如下:
1. | Ass(xn)=ass(xn). |
2. | Ass(f(t0,...,tn−1))=fM(Ass(t0),...,Ass(tn−1)). |
我们称这个 Ass 为原始赋值 ass 生成的赋值.
给定原始赋值 ass, 我们对每个 xn∈L::X 和 a∈M 定义 letaxn(ass) 为一个新的原始赋值, 它除了将 xn 映到 a 之外与原先的 ass 保持一致. 这个新的原始赋值生成的赋值同样记为 letaxn(Ass).
现在, 我们对所有的原始赋值 ass 定义一个关系 ⊨, 对 L::Formula 的长度归纳:
1. | (M,ass)⊨t0≈t1 当且仅当 Ass(t0)=Ass(t1). |
2. | (M,ass)⊨P(t0,...,tn−1) 当且仅当 (Ass(t0),...,Ass(tn−1))∈PM. |
3. | (M,ass)⊨¬φ 当且仅当 ¬((M,ass)⊨φ), 右侧通常也简写为 (M,ass)⊨φ. |
4. | (M,ass)⊨(φ→ψ) 当且仅当 (M,ass)⊨φ 或者 (M,ass)⊨ψ. |
5. | (M,ass)⊨∀x(ψ) 当且仅当对每个 a∈M 都有 (M,letax(ass))⊨ψ. |
这个 ⊨ 称作满足, (M,ass)⊨φ 读作结构 M 在赋值 ass 下满足 φ.
我们继续定义另一种
⊨.
如果对任何满足公式集 Γ 中所有公式的结构 M 和其上的赋值 ass 均有 (M,ass)⊨φ, 则称 Γ(语义) 蕴含 φ, 记为 Γ⊨φ. 我们同样将 {ψ}⊨φ 简记为 ψ⊨φ.
首先, 我们指出满足只与自由变元的赋值有关.
如果两个原始赋值 ass1 与 ass2 满足 ass1∣fVar(φ)=ass2∣fVar(φ), 则 (M,ass1)⊨φ 当且仅当 (M,ass2)⊨φ. 换言之, 只需要确定 ass 在有穷集 fVar(φ) 上的取值就足以确定是否有 (M,ass)⊨φ.
证明. 对 φ 的长度归纳. 首先, 不难归纳证明如果 ass1 与 ass2 满足对在某个项 t 中出现的全体变元符号赋值相同, 则 Ass1(t)=Ass2(t).
1. | 如果 φ 形如 P(t0,...,tn−1), 由上知 Ass1(ti)=Ass2(ti), 因此显然有 (M,ass1)⊨φ 当且仅当 (M,ass2)⊨φ. |
2. | 如果 φ 形如 ¬ψ 或 (ϕ→ψ), 证明是简单的. |
3. | 如果 φ 形如 ∀x(ψ), 如果 x 不是 ψ 的自由变元则显然, 否则对 ψ 运用归纳假设, 注意到 φ 的自由变元恰好是 ψ 的自由变元去掉 x, 而根据这时候满足的定义我们会确定 x 的赋值, 即得证. |
对含 n 个自由变元的公式 φ(xm0,...,xmn−1), (M,ass)⊨φ 可以记为 M⊨φ[ass(xm0),...,ass(xmn−1)].
现在, 我们来建立一阶逻辑的可靠性定理. 我们先给出一个引理.
如果 Subtx(φ), 则 (M,ass)⊨subtx(φ) 当且仅当 (M,letAss(t)x(ass))⊨φ.
证明. 对公式 φ 实行归纳.
1. | φ 形如 P(t0,...,tn−1). 此时 (M,ass)⊨Subtx(P(t0,...,tn−1)) 当且仅当 (Ass(Subtx(t0)),...,Subtx(tn−1))∈PM 当且仅当 (letAss(t)xAss(t0),...,letAss(t)xAss(tn−1))∈PM 当且仅当 (M,letAss(t)xass)⊨P(t0,...,tn−1). |
2. | φ 形如 t1≈t2. 与上类似. |
3. | φ 形如 ∀y(ψ). 此时若 x 不在 φ 中自由出现, 则由自由变元决定性显然. 下讨论自由出现的情形: 注意到无冲突替换要求 y 不在 t 出现且 t 在 ψ 中也可以无冲突替换, 这说明对任何 d∈M 都有 Ass(t)=letdyAss(t). 又注意到 Subtx(φ)=∀y(Subtx(ψ)), 可如下做连续等价推导: (M,ass)⊨subtx(φ) 当且仅当对所有的 d∈M, (M,letdyass)⊨Subtx(ψ) 当且仅当对所有的 d∈M, (M,letletdyAss(t)xletdy(ass))⊨ψ 当且仅当对所有的 d∈M, (M,letAss(t)xletdy(ass))⊨ψ 当且仅当对所有的 d∈M, (M,letdyletletdyAss(t)x(ass))⊨ψ 当且仅当 (M,letAss(t)x(ass))⊨ψ. |
4. | φ 形如 ¬ψ. 此时 (M,ass)⊨Subtx(φ) 当且仅当 (M,ass)⊨Subtx(ψ) 当且仅当 (M,letAss(t)xass)⊨ψ 当且仅当 (M,letAss(t)xass)⊨φ. |
5. | φ 形如 (ϕ→ψ). 类上. |
证明. 显然我们会对证明序列归纳, 证明满足 Γ 中每个公式的 (M,ass) 同样满足证明序列中的每一个公式, 从而满足最后一个公式. 换言之, 我们只需证明它总是满足逻辑公理, 且满足 MP 规则. 我们先来验证没有经过全称概括的那些逻辑公理.
1. | 前三条逻辑公理: 直接验算真值表即可. 以第一条为例, (M,ass)⊨φ 总是不真则假, (M,ass)⊨ψ 亦然, 只需列举四种可能情况, 根据定义发现在每种情况下均有 (M,ass)⊨(φ→(ψ→φ)) 即可. |
2. | 第四条逻辑公理: |
3. | 第五条逻辑公理: |
4. | 第六条逻辑公理: |
5. | 第七条逻辑公理: 根据 ∀a∈M(a=a) 恒成立显然. |
6. | 第八条逻辑公理: 考察所有满足 x≈y 的结构与赋值, 不难归纳得出它在每个项上都可以将任意个 x 替换为 y 而不改变赋值, 进而将任意个 x 替换为 y 不改变原子公式的真假, 进而不改变全体公式的真假. |
由于以上所有证明均为对 ass 做任何要求, 根据 (元语言的) 概括定理, 我们就证明了以上所有公式的所有全称概括都被任何 (M,ass) 满足, 换言之任何逻辑公理都被任何 (M,ass) 满足.
最后, 只需要证明
(M,ass)⊨(φ→ψ) 且
(M,ass)⊨φ 时,
(M,ass)⊨ψ. 这可以直接根据满足的定义得出.
结构之间的态射
我们现在先来定义什么叫模型.
给定句子集 Γ, 我们令 fVar(Γ)=⋃{fVar(φ)∣φ∈Γ} 为这个句子集的自由变元集.
如果 fVarΓ={xi∣i∈I}, 这里指标集 I⊆ω. 给定结构 M 和, 如果一个 aˉ∈MI 满足对任意 φ(xij)∈Γ 都有 M⊨φ[aij], 这里 {ij∣xij∈fVar(φ)}⊆I, 我们就称 (M,aˉ) 是 Γ 的模型, 记为 M⊨Γ[aˉ].
特别的, 如果 fVar(Γ)=∅, 换言之 Γ 是一个理论, 则简略的记 M⊨Γ[{∅}] 为 M⊨Γ.
结构现在可以理解为空理论 (一句话也没有的理论) 的模型.
我们定义一个与一致性并驾齐驱的性质.
证明. 否则, 这个句子集的模型会满足
⊥, 这显然是不可能的.
这个定理的逆命题也是正确的, 但是其证明并不简单. 事实上, 它是下一节要证明的东西的推论.
我们先来继续探讨结构之间的态射这个话题. 我们希望定义某种结构之间的函数, 使得一个理论的全体模型构成一个好的范畴.
对语言 L 的理论 T 的两个模型 M 与 N, 我们直接记 M::M 为 M, 记 N::M 为 N, 若 F:M→N 具有如下性质:
1. | ∀f∈L::F∀(a0,...,,an−1)∈M(n)(F(fM(a0,...,an−1))=fN(F(a0),...,F(an−1))) |
2. | ∀P∈L::P∀(a0,...,an−1)∈M(n)((a0,...,an−1)∈PM→(F(a0),...,F(an−1))∈PN) |
则称 F 是一个同态, 记为 F:M→N.
如果 F 是单射、同态, 且满足 ∀P∈L::P∀(a0,...,an−1)∈M(n)((F(a0),...,F(an−1))∈PN→(a0,...,an−1)∈PM), 则称 F 是一个嵌入.
如果 F 是满射、嵌入, 则称 F 是同构. 此时我们也称 M 与 N 同构.
如果 M⊆N 使得 i:M→N,a↦a 是嵌入, 则称 M 是 N 的子结构, 记为 M<N.
同态复合同态仍是同态, 嵌入复合嵌入仍是嵌入, 结构之间的同构是一个等价关系.
证明是简单的. 然而我们通常至少考虑嵌入而非同态, 这是因为嵌入有另一种表述方式.
我们考虑同态 F:M→N 的如下性质:
1. | 如果 ∀φ(xm0,...,xmn−1)∈L::qfFormula∀(a0,...,an−1)∈Mn(M⊨φ[a0,...,an−1]↔N⊨φ[F(a0),...,Fan−1]), 则称 F 是嵌入. |
2. | 如果 ∀φ(xm0,...,xmn−1)∈L::Formula∀(a0,...,an−1)∈Mn(M⊨φ[a0,...,an−1]↔N⊨φ[F(a0),...,Fan−1]), 则称 F 是初等嵌入. |
如果 M⊆N 使得 i:M→N,a↦a 是嵌入, 则称 M 是 N 的子结构, 记为 M<N. 如果 M⊆N 使得 i:M→N,a↦a 是初等嵌入, 则称 M 是 N 的初等子结构, 记为 M≺N.
子结构是通过限制得到的结构, 这一观察体现为以下定理.
如果存在 M 到 N 的嵌入, 则存在 N 的子结构与 M 同构. 如果存在 M 到 N 的初等嵌入, 则存在 N 的初等子结构与 M 同构.
由于同构的模型不应加以区分, 我们将宽泛的在存在 M 到 N 的嵌入时就称 M 是 N 的子结构, 在存在 M 到 N 的初等嵌入时就称 M 是 N 的初等子结构.
初等子结构是最妙的子结构, 因为我们如果考察结构的理论, 就会发现以下事实.
我们还有一种有趣的方式来考虑 M 到别的结构的嵌入和初等嵌入.
给定语言 L 和集合 M, 我们给定一个新的语言 LM 如下:
1. | LM::F=L::F∪{a˙∣a∈M}, (LM::aF):a˙↦0. 这些 a˙ 称为 a 的名. |
2. | LM::P=L::P. |
注意到名都是 0 元函数, 我们以后也会令语言 L 中的全体零元函数构成的集合为 L::C, 零元函数称为常元. 不难意识到, 它们的性质介于变元和函数之间.
自然的想法是把
M::M 加入原有的语言
L 中, 但我们还想知道
M 作为结构的性质, 因此有必要在新的语言中保留它们.
对语言 L 的结构 M, 我们考虑以下两个 LM 的理论:
1. | Diag(M)={Sub(a0˙,...,an−1˙)(xm0,...,xmn−1)φ(xm0,...,xmn=1)∣φ∈L::qfFormula,L::fVar(φ)={xm0,...,xmn−1},(a0,...,an−1)∈M(n),M⊨φ[a0,...,an−1]}, 它称作 M 的原子图, 这里 Sub(a0˙,...,an−1˙)(xm0,...,xmn−1) 是 Suba0˙xm0...Suban−1˙xmn−1 的缩写. |
2. | elDiag(M)={Sub(a0˙,...,an−1˙)(xm0,...,xmn−1)φ(xm0,...,xmn=1)∣φ∈L::Formula,L::fVar(φ)={xm0,...,xmn−1},(a0,...,an−1)∈M(n),M⊨φ[a0,...,an−1]}, 它称作 M 的初等图. |
对
LM 的结构
N, 我们可以通过遗忘所有
(˙a)M 来得到一个
L 结构. 我们将因而不区分作为
L 或是作为
LM 结构的
N. 现在, 我们再给出嵌入与初等嵌入的另一种等价定义.
给定 L 结构 M 与 LM 结构 N, 这里 M=M::M.
1. | 如果 N 是 Diag(M) 的模型, 则 M<N. |
2. | 如果 N 是 elDiag(M) 的模型, 则 M≺N. |
下行 Lowenheim-Skolem 定理
结构的扩张
首先, 我们来定义一种比先前的要求稍稍宽泛的结构.
对于某个语言 L, 我们称满足以下条件的 M={M,F,P,−M,≈M} 为这个语言的一个预结构:
1. | M 是集合, F⊆{f:M(n)→M∣n∈ω}, P⊆⋃n∈ωM(n), ≈M 是一个 M 上的等价关系. |
2. | −M:L::F∪L::P→M::F∪M::P 是双射. |
3. | 对函数符号 f∈L::F, domfM=ML::aF(f). |
4. | 对谓词符号 P∈L::P, PM⊆ML::aP(P). |
5. | 如果 a0≈Mb0,...,an−1≈Mbn−1, 则 fM(a0,...,an−1)=fM(b0,...,bn−1) , (a0,...,an−1)∈PM 当且仅当 (b0,...,bn−1)∈PM. |
M/≈M 称作这个预结构诱导的结构.
构造模型的很多时候我们总是先得到一个预结构, 然后才得到它诱导的结构. 它可以视为收缩一个结构的最简单的方法. 我们现在要考虑的问题是如何在语言扩张时同步地把结构也扩张出来.