我们来看 Devlin 的传世名著中使用的编码方案, 它虽然非常自然, 但却不能在 Devlin 原来设想的语境中实现.
我们用 ⟨x0,...,xn−1⟩ 指代函数 f, 其定义域为 ┌n┐, 并将每个 0≤i<n 对应的 ┌i┐∈┌n┐ 映到 xi. 它将被称作一个长为 n 的元序列.
对于元序列 s=⟨x0,...,xn−1⟩ 与 t=⟨y0,...,ym−1⟩, 我们称元序列 s⌢t=⟨x0,...,xn−1,y0,...,ym−1⟩ 为 s 与 t 的串接 (concatenation).
对于元序列 s=⟨x0,...,xn−1⟩, 称 n=length(s) 为其长度, xn−1=∣∣s∣∣ 为其末项.
我们形式化一个 Δ0 谓词判断集合是否是序列: isSeq(x)⇔isFun(x)∧isNat(dom(x)). 对于这类形式化版本的序列, length 和 ∣∣⋅∣∣ 都是基础函数, 但串接操作是 Δ1TAr 的, 这是因为 s=t1⌢t2 当且仅当 isSeq(s)∧isSeq(t1)∧isSeq(t2)∧dom(s)=dom(t1)+dom(t2)∧∀i∈dom(t1)(t1(i)=s(i))∧∀i∈dom(t2)(t2(i)=s(i+dom(t1))) 涉及加法.
注意区分 ⟨∅⟩ 与 ∅=⟨⟩, 后者是长度为 0 的唯一序列, 通常称之为空序列. 序列不是元组. 今后我们通常认为元序列是 (形式化版本的) 序列的一种特别情况.
现在, 我们来用元序列编码以所有集合为常元符号的集合论语言 LV, 每个概念均又有对应的形式化版本的谓词.
做以下约定.
1. | 对变元符号 xn, 做编码 ┌xn┐=(┌2┐,┌n┐). 造 Δ0 谓词来判断集合是否是变元符号的编码, 即 isVarSym(x)⇔∃n∈⋃⋃x(isNat(n)∧x=(┌2┐,n)). |
2. | 对集合 x, 做其常元符号 x˙ 的编码 ┌x˙┐=(┌3┐,x). 对应的造出 Δ0 谓词来判断集合是否是常元符号的编码, 即 isConSym(x)⇔∃y∈⋃⋃x(x=(┌3┐,y)). |
3. | 对原子公式 x∈y(此处 x,y 既可以是变元符号也可以是常元符号, 下同), 做编码 ┌x∈y┐=⟨0,4,┌x┐,┌y┐,1⟩. |
4. | 对原子公式 x=y, 做编码 ┌x=y┐=⟨0,5,┌x┐,┌y┐,1⟩. |
5. | 造出 Δ0 谓词来判断集合是否是原子公式的编码, 即 isPFml(x)⇔isFun(x)∧dom(x)=┌5┐∧x(┌0┐)=┌0┐∧(x(┌1┐)=┌4┐∨x(┌1┐)=┌5┐)∧(isVarSym(x(┌2┐))∨isConSym(x(┌2┐)))∧(isVarSym(x(┌3┐))∨isConSym(x(┌3┐)))∧x(┌4┐)=┌1┐ |
6. | 归纳定义公式的编码. 1. | φ→ψ 的编码是 ┌φ→ψ┐=⟨0,6⟩⌢┌φ┐⌢┌ψ┐⌢⟨┌1┐⟩. | 2. | ¬φ 的编码是 ┌¬φ┐=⟨0,7⟩⌢┌φ┐⌢⟨┌1┐⟩. | 3. | ∃xn(φ) 的编码是 ┌∃xn(φ)┐=⟨0,8,┌xn┐⟩⌢┌φ┐⌢⟨┌1┐⟩. |
|
7. | 造出谓词来判断集合是否是某种特定公式的编码. 1. | Δ0, 是用属于产生的原子公式: isInFml(s,x,y)⇔isFun(s)∧dom(s)=┌5┐∧s(┌0┐)=┌0┐∧s(┌1┐)=┌4┐∧s(┌2┐)=x∧s(┌3┐)=y∧x(┌4┐)=┌1┐ | 2. | Δ0, 是用等于产生的原子公式: isEqFml(s,x,y)⇔isFun(s)∧dom(s)=┌5┐∧s(┌0┐)=┌0┐∧s(┌1┐)=┌5┐∧s(┌2┐)=x∧s(┌3┐)=y∧x(┌4┐)=┌1┐ | 3. | Δ1TAr, 是用蕴含产生的公式: isToFml(s,t1,t2)⇔isSeq(s)∧isSeq(t1)∧isSeq(t2)∧dom(s)=dom(t1)+dom(t2)+3∧s(┌0┐)=┌0┐∧s(┌1┐)=┌6┐∧∣∣s∣∣=┌1┐∧∀i∈dom(t1)(t1(i)=s(i+2))∧∀i∈dom(t2)(t2(i)=s(i+dom(t1)+2)) | 4. | Δ0, 是加否定产生的公式: isNegFml(s,t)⇔isSeq(s)∧isSeq(t)∧dom(s)=Succ(3)dom(t)∧s(┌0┐)=┌0┐∧s(┌1┐)=┌7┐∧∣∣s∣∣=┌1┐∧∀i∈dom(t)(t(i)=s(Succ(2)i)) | 5. | Δ0, 是存在量化产生的公式: isExiFml(s,t,x)⇔isSeq(s)∧isSeq(t)∧isVarSym(x)∧dom(s)=Succ(4)dom(t)∧s(┌0┐)=┌0┐∧s(┌1┐)=┌8┐∧s(┌2┐)=x∧∣∣s∣∣=┌1┐∧∀i∈dom(t)(t(i)=s(Succ(3)i)) |
|
8. | 指明公式的构造序列. 在元语言中, 某个公式的构造序列是个有穷长的序列, 其中元素均为公式, 且每个公式或者是原子公式, 或者是前面的公式由逻辑连接词连接而成, 或者是前面的公式存在量化而成, 且最后一个元素恰好就是开始指出的那个公式. 因此, 这个 Δ1TAr 谓词写为 isBuiltSeq(S)⇔isSeq(S)∧∀i∈dom(S)(isPFml(S(i))∨∃j∈i∃k∈i(isToFml(S(i),S(j),S(k)))∨∃j∈i(isNegFml(S(i),S(j)))∨∃j∈i∃x∈ran(s)(isExiFml(S(i),S(j),x))) 我们称 Δ1TAr 谓词 isBuiltFrom(s,S)⇔isBuiltSeq(S)∧∣∣S∣∣=s. |
9. | 判断一集合是否可以被解读为一个公式. 显然, 我们会得到谓词 isFml(s)⇔∃S(isBuiltFrom(s,S)), 它 Σ1TAr, 但我们将要证明它是 Δ1TAr 的, 为此需要做一些准备. 如果可以用某个函数 A(s) 让 isBuiltFrom(s,S)→S∈A(s), 那么我们就可以把 ∃S(isBuiltFrom(s,S)) 变成 ∃S∈A(s)(isBuiltFrom(s,S)). 临时取函数 A(x)=⋃n∈dom(x)(⋃m∈dom(x)(ran(x)Succ(m)))Succ(n), 回想我们之前的相关论述, TAr 中可证若 x 是序列 (从而是有穷集) 则 A(x) 必然同样存在且是有穷集. 现在, ∃S∈A(s)(isBuiltFrom(s,S)) 可以写为 ∀T(A(s)⊆T→∃S∈T(isBuiltFrom(s,S))), 注意到 A(s)⊆T 是 ∀x(x∈A(s)→x∈T), 而 x∈A(s) 等价于 ∃n∈dom(s)(isFun(x)∧dom(x)=Succ(n)∧∀y(y∈ran(x)↔∃m∈dom(s)(isFunOn(y,Succ(m),ran(s))))) 是 Π1 公式, 于是整个谓词的复杂度也可为 Π1TAr. |
现在, 我们获得了 Δ1TAr 的谓词 isFml.
我们接下来编码相应的语法概念. 我们先考虑可证的命题如何刻画, 也就是在默认全体一阶逻辑公理和全体集合常元自带的属于关系真命题下可证的句子. 为此, 我们需要先编码自由出现和无冲突替换两个概念. 由于这个语言的项不是变元就是常元, 我们先来考虑把变元换成常元的操作.
我们先定义谓词 Subc(s,s′,v,t), 它意味着 s′ 是将 s 中所有变元 v 自由出现之处改为常元 t 所得之公式, 下标 c 表示 t 是个常元. 显然, 我们要模仿公式归纳法来做这件事.
我们首先考虑 s,s′ 都是原始公式的情形, 此谓词显然可以以 Δ0 方式写为 Subcpf(s,s′,v,t)⇔isPFml(s)∧isPFml(s′)∧isVarSym(v)∧isConSym(t)∧∃t1∈ran(s)∧∃t2∈ran(s)((isInFml(s,t1,t2)∧((t1=v∧t2=v∧s=s′)∨(t1=v∧t2=v∧isInFml(s′,t,t2))∨(t1=v∧t2=v∧isInFml(s′,t1,t))∨(t1=v∧t2=v∧isInFml(s′,t,t))))∨(isEqFml(s,t1,t2)∧((t1=v∧t2=v∧s=s′)∨(t1=v∧t2=v∧isEqFml(s′,t,t2))∨(t1=v∧t2=v∧isEqFml(s′,t1,t))∨(t1=v∧t2=v∧isEqFml(s′,t,t))))).
为了考虑 s,s′ 是任意公式的情形, 势比引入其构造序列 S 与 S′, 我们希望它们的元素可以一一对应, 使得 Subc 这个关系递归地延续到 ∣∣S∣∣=s 和 ∣∣S′∣∣=s′ 上. 我们把判别条件拆出来临时分别命名.
1. | Δ0 谓词 A(v,t)⇔isVarSym(v)∧isConSym(t) |
2. | Δ1TAr 谓词 B(s,S,S′)⇔isBuiltFrom(s,S)∧isBuiltSeq(S′)∧dom(S)=dom(S′) |
3. | Δ1TAr 谓词 C(s,s′,S,S′)⇔∀i∈dom(S)(Subcpf(S(i),S′(i),v,t)∨(∃j∈i∃k∈i(isToFml(S(i),S(j),S(k))∧isToFml(S′(i),S′(j),S′(k))))∨∃j∈i(isNegFml(S(i),S(j))∧isNegFml(S′(i),S′(j)))∨∃j∈i(isExiFml(S(i),S(j),v)∧S′(i)=S(i))∨∃j∈i∃u∈ran(s)(isVarSym(u)∧u=v∧isExiFml(S(i),S(j),u)∧isExiFml(S′(i),S′(j),u))) |
现在, 只需证明 TAr⊢isFml(s)∧∃S∃S′(A(v,t)∧B(s,S,S′)∧C(s,s′,S,S′)∧∣∣S′∣∣=s′)↔isFml(s)∧∀S∀S′(A(v,t)∧B(s,S,S′)∧C(s,s′,S,S′)→∣∣S′∣∣=s′) 即可得到我们所想要的这个 Δ1TAr 谓词 Subc(s,s′,v,t). 这个等价性只需要在 dom(S) 上面归纳 S′.
有了这种替换, 是否自由出现就非常易于判断. 我们还能顺带判断公式是否是句子.
考虑 Δ1TAr 谓词 BddHere(s,v,i)⇔isVarSym(v)∧isFml(s)∧i∈dom(s)∧s(i)=v∧∃s′(Subc(s,s′,v,┌∅┐)∧s′(i)=v), 它显然可证等价于 isVarSym(v)∧isFml(s)∧i∈dom(s)∧s(i)=v∧∀s′(Subc(s,s′,v,┌∅┐)→s′(i)=v), 能判断 v 在 s 中 i 处出现时是否是受限出现.
进一步, 做 Δ1TAr 谓词 isSen(s)⇔isFml(s)∧∀v∈ran(s)(isVarSym(v)→Subc(s,s,v,┌∅┐)) 判断 s 是不是一个句子.
把变元换成变元的操作就很简单了.
考虑 Δ1TAr 谓词 Subpv(s,s′,v,u), 它意味着 s′ 是将 s 中部分变元 v 自由出现之处改为变元 u 所得之公式, 下标 p 表示只有部分被改变, 下标 v 表示 u 是个常元: isFml(s)∧isFml(s′)∧dom(s)=dom(s′)∧∀i∈dom(s)(s(i)=s′(i)→s(i)=u∧s′(i)=v∧¬BddHere(s,v,i)).
当然也可以考虑 Δ1TAr 谓词 Subv(s,s′,v,u), 它意味着 s′ 是将 s 中所有变元 v 自由出现之处改为变元 u 所得之公式: Subpv(s,s′,v,u)∧∀i∈dom(s)(s(i)=u∧¬BddHere(s,v,i)→s′(i)=u).
我们现在来考虑给定公理集 T 下的证明概念.
做以下约定.
1. | 造出 Δ1TAr 谓词 isAxSet(T)⇔∀s∈T(isSen(s)) 判断 T 是公理集. 我们不默认逻辑公理在公理集之中. |
2. | 造出 Δ1TAr 谓词 isPfSeq(S,T) 判断 S 是否是公理集 T 下的一个证明序列: isAxSet(T)∧isSeq(S)∧∀s∈ran(S)(isFml(s))∧∀i∈dom(S)(S(i)∈T∨∃j∈i∃k∈i(isToFml(S(j),S(k),S(i)))) |
3. | 造出 Σ1 谓词 Bwb(s,T) 判断 s 是否在公理集 T 下可证: ∃S(isPfSeq(S,T)∧∣∣S∣∣=s) |
鉴于全体无常元逻辑公理由原始递归函数枚举, 不妨设这个 Δ1TAr 常元符号为 LAxioms.
这与我们在算术语言中得到的经验是一样的 (那时候 Bwb 也是个递归可枚举但不递归的关系). 我们甚至可以考虑继续复刻不动点引理, 从而证明集合论版本的第一不完备性定理, 但我们这里不再展开这些和逻辑学关系更大的内容了.
现在继续考虑满足关系. 因为 (全局) 真不可定义, 我们退而求其次地编码一个集合和其上默认的属于结构满足一个句子的情况.
我们同样把条件拆成几个部分分别临时命名.
1. | Δ0 谓词 Satpf(s,x)⇔∃a∈x(s=┌a=a┐)∨∃a∈x∃b∈x(b∈a∧s=┌b∈a┐) |
2. | Δ1TAr 谓词 E(x,χ)⇔isFml(χ)∧∀c∈ran(χ)(isConSym(c)→∃d∈x(c=┌d┐)) |
3. | Δ1TAr 谓词 A(s,x)⇔x=∅∧isSen(s)∧∀c∈ran(s)(isConSym(c)→∃d∈x(c=┌d┐)) |
4. | Δ1TAr 谓词 B(s,f,g)⇔isSeq(f)∧isSeq(g)∧dom(f)=dom(g)∧∀i∈dom(f)∀a∈f(i)∪g(i)(isSeq(a)∧dom(a)⊆dom(s)) |
5. | Δ1TAr 谓词 C(x,f,χ)⇔(χ∈f(∅)↔(isPFml(χ)∧∀c∈ran(χ)(isConSym(c)→∃d∈x(c=┌d┐))))∧∀j∈dom(f)∀i∈j(χ∈f(Succ(i))↔(χ∈f(i)∨∃θ1,θ2∈f(i)(isToFml(χ,θ1,θ2))∨∃θ∈f(i)(isNegFml(χ,θ))∨∃θ∈f(i)∃v∈ran(χ)(isVarSym(v)∧isExiFml(χ,θ,v)))) |
6. | Δ1TAr 谓词 D(x,f,g,χ)⇔(χ∈g(∅)↔Satpf(χ,x))∧∀j∈dom(f)∀i∈j(χ∈g(Succ(i))↔(χ∈g(i)∨∃θ1,θ2∈f(i)(isToFml(χ,θ1,θ2)∧((θ1∈g(i)∧θ2∈g(i))∨(θ1∈g(i)∧isSen(θ1))))∨∃θ∈f(i)(isNegFml(χ,θ)∧θ∈g(i)∧isSen(θ))∨∃θ1∈f(i)∃θ2∈g(i)∃v∈ran(χ)∃a∈x(isVarSym(v)∧isExiFml(χ,θ1,v)∧Subc(χ,θ2,v,┌a┐)))) |
7. | Σ2 谓词 Sat(s,x)⇔A(s,x)∧∃f∃g∀χ(s∈∣∣g∣∣∧B(s,f,g)∧(E(x,χ)→(C(x,f,χ)∧D(x,f,g,χ)))) |
χ 是可能被装进 f 的公式, f 里面装着不长于 s 的所有可能将要被判断的公式, g 里面装着所有确实被判断了的句子, 我们其实是在对公式的复杂度递归.
想要改进 Sat 的复杂度, 我们就必须用一个函数来从 s 算出一个包含所有可能的 χ 构成的集合的集合, 但 TAr 贫乏的构造能力阻止了我们. 幸运的是, 我们只需要加强公理系统就能完成这项工作, 且有许多互不蕴含的公理系统都能做这件事.
我们需要的东西长成这样:
定义以下函数和预函数.
1. | Σ1 预函数 u=Seq(a,n) 为以下句子: ∃f(isSeq(f)∧isNat(n)∧n=dom(f)∧u=⋃ran(f)∧∀i∈n(∀x∈f(i)(isSeq(x)∧i=dom(x)∧∀j∈i(x(j)∈a))∧∀j∈i∀x∈f(j)∀p∈a(i=Succ(j)→x∪{(j,p)}∈f(i)))). 它让 u 收集到所有长度小于 n 的 a 中元素构成的序列. |
2. | Δ0 预函数 b=VarSym 为以下句子: (┌2┐,┌0┐)∈b∧∀x∈b((┌2┐,Succ(x(2)(1)))∈b)∧∀x∈b(isVarSym(x)). 它说 b 里面装着所有变元符号, 显然如果有 (Inf) 这就是个函数了. |
3. | Δ0 预函数 c=ConSym(a) 为以下句子: ∀x∈a(┌x˙┐∈c)∧∀y∈c∃x∈a(y=┌x˙┐). 它说 c 里装着所有 a 中元素作为常元符号的编码; 显然如果有 (rRep) 显然这就是个函数了. |
4. | Δ0 预函数 w=w(u,s) 为以下句子: w=w1∪w2, 其中 w1=⋃m∈dom(s)(┌9┐∪VarSym∪ConSym(u))Succ(m), 而 w2=⋃m∈dom(s)(⋃k∈dom(s)(┌9┐∪VarSym∪ConSym(u))Succ(m))Succ(n). w1 让 w 收集到所有长度不超过 s 的常元符号属于 u 的公式, w2 收集到这些公式的长度不超过 s 的序列. |
先来看 Π1−GJI, 它是 Π1−GJ 加上无穷公理所得的公理系统.
证明. 根据我们的讨论, w(u,s) 已经是函数了, 我们只要再验证 Seq 也是函数; 为证明 ∀a∀n∃u∃f(...), 只需对 n 归纳后面的 Σ1 句子.
现在首先写出
Sat(s,u) 的
Σ1 形式:
∃w∃x∃y∃a∃b(a=ConSym(u)∧b=VarSym∧x=Seq(┌9┐∪a∪b,Succ(dom(s)))∧y=Seq(x,Succ(dom(s)))∧w=x∪y∧Sat′(s,u,w)). 这里
Sat′(s,u,w) 把
Sat(s,u) 中的
∀χ 换成了
∀χ∈w, 因而
Σ1. 另一方面, 鉴于
¬Sat(s,u) 当且仅当
Sat(¬s,u), 我们立即知道
Sat 也有
Π1 形式.
接下来讨论 1.3 节中引入的 DS.
证明. 先来证明 Seq 是函数. 只要连续两次用 Δ0 分离: 第一次从 FinSub(ω×a) 里面取出有穷函数, 第二次从这个集合的有穷子集族里面取出定义域属于 n 的函数. 显然我们可以让它 Δ1DS, 只要把 ∃f(u=⋃ran(f)∧...) 换成 ∀f(...→u=⋃ran(f)).
接下来证明
w 是函数. 只要注意
ConSym 可以从某些卡氏积的有穷子集族里面分离出来因而是函数, 以下完全同上.
今后, 我们将把 Π1−GJI 和 DS 合称为 TSat, 因此在需要 Δ1 的满足关系时只需保证是 TSat 的扩张. 显然 TSat⊋TAr.
接下来, 我们来讨论上述形式化语言 L∈ 中的模型论. 一个简单的事实是, 全体无常元公式构成的集合可以在 DS 中得证是集, 但其上良序则直接是可定义的. 因此, 常元符号取于某集 c 的全体公式是否是集取决于是否有无穷公理和有穷子集族公理, 而是否可良序化则取决于 c 上是否有一个可用的良序. 因此, 我们直接有:
任给 LAxioms 的扩张 T, 其中常元符号构成一集 c, 记 κ=ℵ0+∣c∣, 我们有:
1. | (完备性)T 有不可证的命题, 当且仅当 T 被某集满足. |
2. | (紧致性)T 可被满足, 当且仅当 T 的有穷子集均可被满足. |
3. | (下行 LS) 若有 T 的无穷模型, 则有 T 的基数不超过 κ 的模型. |
证明. 这都是熟知的结论, 但熟知的诸证明都大肆利用了良序原理.
我们另外指出它们与选择公理的强相关性.
ZF 中任给 ℵ 数 κ, (LS)κ 等价于 (DC)+(AC)κ. 这里 (LS)κ 说任给基数不大于 κ 的语言 L, 其上理论有无穷模型则有基数不大于 κ 的模型.
ZF 中一阶逻辑紧致性等价于一阶逻辑完备性, 也等价于超滤引理.