通过凝聚搬运结构

可以直接阅读本章,也可以通过阅读指南和依赖地图选择其他路线。

阅读指南 · 依赖地图

本章研究初等 Skolem 壳经过 Mostowski 塌缩后会变成什么。在序数索引 lam 处给定所需假设后,塌缩像将被认同为某个序数 β 所索引的 Lset β。这个结论不比较 βlam,不选取最小的此类索引,也不给出基数估计。证明首先用一条有界一阶公式描述可构造层关系,使这项关系能在塌缩前后读取。

{-# OPTIONS --cubical --safe --guardedness #-}

定理以 ℓ-suc ℓ 层级上的排中律为参数。这一条经典假设被传给前文关于序数层、Skolem 壳、层级描述与充分层的结果。本章的论证不引入选择原理:存在公式的满足以及超充分性给出的局部层见证都保持为命题截断,因此只能在目标仍是命题时使用。

open import Base.Prelude
open import Base.Classical using ( LEM )

现在固定宇宙层级与这一个经典参数。下文所有集合都属于层级 上的外围累积层级;可构造层、Skolem 壳与塌缩像也是同一累积层级中的集合。完整初等性负责搬运带无界存在量词的公式。由层绝对性、初等性与塌缩同构构成的有界接口,则对外提供沿塌缩的 Δ₀ 搬运。区分这两种用法,是凝聚证明的关键。

module L.GCH.CondensationTransfer { : Level} (lem : LEM (ℓ-suc )) where

下文两条查询只需对象语言中的隶属、相等、合取与无界存在量词。公式在外围层级、层与 Skolem 壳之间移动时,其常元字母表会随之改变。运算 mapFo 重标已有常元,而 embed 把一条无常元公式视为新常元字母表上的公式;两者都不改变公式的变元位置与逻辑结构。

open import FOL.ZFStructure using ( module hPropStructure )
open import FOL.Syntax using ( Formula; var; con; _∈̇_; _≐_; _∧̇_; ∃̇_ )
open import FOL.Manipulation.ConstantMapping using ( mapFo; embed )
import FOL.Semantics
open import V.Hierarchy {} using ( 𝒮ᵥ )

可构造层级要求始终区分序数索引 d 与它所索引的层 Lset d。当 lam 是序数时,Lset lam 的成员都是可构造的。反过来,若序数 d 属于 Lset lam,则秩比较把 d 放入 lam。向下刻画 Lset-out 只说一层的成员仅仅来自某个 c ∈ lam 处的 𝒟ₒ (Lset c),并不保留选定的出生层。若有严格的索引关系 β ∈ α,单调性再把 Lset β 中的成员搬到 Lset α

open import L.Constructible {} using
  ( IsOrd; isL; Lset; Lset-out; Lset-mono; Lset→isL; 𝒟ₒ )
open import L.Ordinal {} using ( mem-ord; suc-ord )
open import L.Ordinal.Stages {} lem using ( ord∈Lset-suc; ord∈Lset→∈ )
open import L.Axioms.Basic {} using ( Lset-suc )

这里的核心公式是 levelFo(a,p,z)。它的 Δ₀ 证书允许使用有界绝对性,并可沿塌缩搬运。可靠性说明:当 apz 都可构造时,满足该公式可推出 a ≡ Lset p;辅助界 z 不必唯一。完备性则在 γ 充分、p 是序数且 p ∈ γ 时,给出特定三元组 (Lset p,p,Lset γ) 对公式的满足。周围理论提供 Skolem 壳上的搬运,以及构造这类三元组所需的局部充分索引。

open import L.GCH.SkolemHull {} lem using
  ( module HullStage; Δ₀-isOrdAt; module Amb
  ; module Frame; _⊨ₚ_; embed-map; isOrd-at-p )
open import L.GCH.HierarchyDescription {} lem using ( levelFo; Δ₀-levelFo; level-sound; level-complete )
open import L.GCH.AdequateStages {} lem using ( Superadequate; Adequate; Lset∈suc )

有穷向量记录公式求值所用的环境,乘积则组合证明中需要的隶属事实与相等事实。本章有若干存在性处于命题截断之下。构造子 ∣_∣₁ 把一份显式的局部见证放入截断;PT.recPT.map 随后只能用它产生另一个命题。特别地,超充分性给出的局部充分索引不会变成一族全局选定的数据。

open import Cubical.Data.Vec using ( _∷_; [] )
open import Cubical.Data.Sigma using ( _×_ )
open import Cubical.Foundations.HLevels using ( isProp× )
import Cubical.HITs.PropositionalTruncation as PT
open PT using ( ∥_∥₁; ∣_∣₁; squash₁ )

d 是序数时,集合论后继 sucV d 是下一个序数索引;后继层等式 Lset (sucV d) ≡ 𝒟ₒ (Lset d) 也使用这个索引。这两项事实彼此相关,但后继索引与该索引处的层仍是不同的集合。空集另行出现,是因为 Skolem 壳构造需要一个已经属于外围索引的回退成员。

open import Cubical.HITs.CumulativeHierarchy.Constructions
  using ( ; module InfinitySet )
open InfinitySet {} using ( sucV )

打开取值为命题的层级结构后,载体 S 与外围隶属记号 _∈ˢ_ 得到固定。尖括号 ⟨_⟩ 取出一个真值所承载的证明类型。因此,d ∈ˢ lam、可构造层中的隶属以及塌缩像中的隶属,都是外围集合论陈述,应与公式内部的对象语言原子 _∈̇_ 区分。

open hPropStructure 𝒮ᵥ

外围语义给出长度为 n 的环境记号 S ^ n。公式的槽位从这种向量中读取;每个新绑定的存在见证都放在向量前端,把旧槽位向外推移。因此,后文三层嵌套的见证虽然从外到内依次引入 zpa,最终却按 (a,p,z) 的顺序读取。

module SemVᵃ = FOL.Semantics 𝒮ᵥ
open SemVᵃ using ( _^_ )

识别层见证的公式

公式 isOrd-at-p 只使用三项环境的中间槽位。它的第一个合取支说明 p 传递,第二个合取支说明 p 的每个成员都传递。这里的两个函数把这两条有界子句拆成 IsOrd p 的两个字段。相邻的 az 在这条引理中不起作用;该引理既不读取 levelFo 的其余部分,也不把 a 认同为某个可构造层。

isOrd-at-p-out : (a p z : S)   (a  p  z  []) ⊨ₚ isOrd-at-p   IsOrd p
isOrd-at-p-out a p z h =
    ( λ {x₁} {y} y∈x₁ x₁∈p  h .fst x₁ x₁∈p y y∈x₁ )
  , ( λ b b∈p {x₁} {y} y∈x₁ x₁∈b  h .snd b b∈p x₁ x₁∈b y y∈x₁ )

沿塌缩搬运层级信息

固定序数 lam,以及容纳 Skolem 壳的外围可构造层 Lset lam。该索引对集合论后继封闭,生成集 X 的每个成员都属于这一层,而 ∅ ∈ lam 提供构造 Skolem 壳时所需的默认元素。这组假设的最后一项是完整初等性:只要参数来自 Skolem 壳,每条公式在壳中与外围层中便有相同真值,其中也包括带无界量词的公式。

module Condense (lam : S) (ordλ : IsOrd lam)
  (succλ : (d : S)   d ∈ˢ lam    sucV d ∈ˢ lam )
  (X : S) (X⊆L : (x : S)   x ∈ˢ X    x ∈ˢ Lset lam )
  (∅∈λ :   ∈ˢ lam )
  (elem : Frame.A.Elementary lam ordλ succλ X X⊆L ∅∈λ)

另外两项假设分别提供局部层与可构造的塌缩值。Superadequate lam 说明:每个 d ∈ lam 仅仅包含于某个满足 γ ∈ lam 的充分序数索引 γ命题截断既不保留选定的 γ,也不保留最小者。假设 pixL 是逐点的:塌缩像的每个成员都可构造。它尚未说明塌缩像本身是可构造集,更没有把该像认同为某个特定的层。

  (sup : Superadequate lam)
  (pixL : (x : S)   x ∈ˢ HullStage.C.πX lam ordλ succλ X X⊆L ∅∈λ 
          isL x )
  where

下面同时使用三个结构:Lset lam 上的外围结构、以 Skolem 壳成员为载体的结构,以及传递的塌缩像。一个壳元素同时携带底层集合及其属于 M 的证明。有界公式可以在前两个结构之间读取,也可以沿塌缩双向搬运;单条成员关系同样可以推过塌缩。这些 Δ₀ 接口只在完整初等性处理完无界存在查询以后使用。

  module F = Frame lam ordλ succλ X X⊆L ∅∈λ using (module A; module Carry; module HS)
  module A = F.A using (SM; module SemM; inL)
  module Mse = A.SemM.At A.SM id using (_⊨_)
  module HS = F.HS using (module ASt; module C; module Condense; module H; M)
  module Cy = F.Carry elem using (atL; atM; member-push; push; pull)

包含 Hull⊆L 是从 Skolem 壳成员通往外围层的基本桥梁:若 x ∈ M,则 x ∈ Lset lam。这条事实提供 A.inL 所需的层隶属证据,稍后还会经由 isLλ 把壳中返回的每个见证转为可构造集。它是 Skolem 壳逐点包含于该层的陈述,并不说明壳本身是该层的元素。

  open HS.H using ( Hull⊆L )

M 表示由前述数据确定的 Skolem 壳。由 Hull⊆L,它的每个成员都属于 Lset lam;但这项记号本身既不说明整个 M 可构造,也不增添任何封闭性质。因此,后文每次使用塌缩时都会保留「其自变量属于 M」这一前提。

  M : S
  M = HS.M

π 表示 Mostowski 塌缩映射,以 πX 表示它的传递像。在 Skolem 壳成员上,π 保持成员关系,并把有界真值认同为它们在像中的读法。接下来的问题是为 πX 证明足够的层闭合性质与覆盖性质,从而说明这个传递集恰好是某一层 Lset β

  π : S  S
  π = HS.C.π

由于 lam 是序数,属于 Lset lam 足以推出可构造性。辅助函数 isLλ 恰好封装这条蕴涵。Skolem 壳查询返回三个分量后,证明会在调用 level-sound 之前分别对三者应用它,因为仅仅满足 levelFo 并不会给出可靠性定理所要求的可构造性假设。

  isLλ : (x : S)   x ∈ˢ Lset lam    isL x 
  isLλ = Lset→isL lam ordλ

下面两条基本隶属引理为外围层准备见证。先设 d ∈ lam。后继封闭给出 sucV d ∈ lam;整个层 Lset d 作为一个元素属于 Lset (sucV d)Lset-mono 再把这个元素搬入 Lset lam。结论 Lset d ∈ Lset lam 是集合之间的隶属关系,并非一层逐点包含于另一层。

  Lset∈Lλ : (d : S)   d ∈ˢ lam    Lset d ∈ˢ Lset lam 
  Lset∈Lλ d d∈λ = Lset-mono {α = lam} {β = sucV d} (succλ d d∈λ) (Lset∈suc d)

d 还是序数,则 ord∈Lset-suc 把索引 d 本身放入 Lset (sucV d),再由同一次单调性搬运进入 Lset lam。两条引理合起来给出两个不同的层成员,即 dLset d。在外围层中见证层公式时,二者都要使用;它们的隶属都不能与推导起点的索引关系 d ∈ lam 混同。

  ord∈Lλ : (d : S)  IsOrd d   d ∈ˢ lam    d ∈ˢ Lset lam 
  ord∈Lλ d od d∈λ =
    Lset-mono {α = lam} {β = sucV d} (succλ d d∈λ) (ord∈Lset-suc d od)

对 Skolem 壳成员 d,序数性可以正向穿过塌缩。Amb.isOrdAt-in 用无常元有界公式 isOrdAt 表达 IsOrd dCy.push 把这个 Δ₀ 真值从壳环境搬到含有 π d 的环境;Amb.isOrdAt-out 再把结果读成 IsOrd (π d)。有界性证书控制这次搬运,而 Cy.push 所封装的比较最终依赖 Skolem 壳的初等包含与塌缩同构。

  ord-push : (d : S) (d∈M :  d ∈ˢ M )  IsOrd d  IsOrd (π d)
  ord-push d d∈M od =
    Amb.isOrdAt-out (π d)
      (Cy.push Δ₀-isOrdAt ((d , d∈M)  []) (Amb.isOrdAt-in d od))

同一条有界描述也能反向搬运。从 IsOrd (π d) 出发,Cy.pullisOrdAt 的真值带回原来的 Skolem 壳成员,再读成 IsOrd d。因此,塌缩在 M 的成员上保持并反映序数性。这是带有假设 d ∈ M 的局部等价,并不说明 π 对任意外围集合如何作用。

  ord-pull : (d : S) (d∈M :  d ∈ˢ M )  IsOrd (π d)  IsOrd d
  ord-pull d d∈M oπd =
    Amb.isOrdAt-out d
      (Cy.pull Δ₀-isOrdAt ((d , d∈M)  []) (Amb.isOrdAt-in (π d) oπd))

第一条存在查询用于在 Skolem 壳中找回指定的层 Lset d。它的三个无界存在量词产生环境 (a,d′,z)。嵌入的核心要求 levelFo(a,d′,z),第二个合取支中的等式则把返回的中间坐标固定为 d′ ≡ dM。只有 levelFo 是 Δ₀;外围查询 findA 并非有界公式,因此要把见证从外围层带入 Skolem 壳,必须使用完整初等性,不能仅靠 Δ₀ 绝对性。正是这条等式把 findA 与稍后的查询 findP 区分开来;后者返回的索引 p′ 不必等于外围预备的 p

  findA : A.SM  Formula A.SM 0
  findA dM = ∃̇ (∃̇ (∃̇ (embed levelFo ∧̇ (var (suc zero)  con dM))))

引理 stageA 构造一个外围见证,稍后由初等性把它拉回 Skolem 壳。它接收一个包含序数 d 的充分索引 γ、一个底层集合等于 d 的壳代表 dM,以及 dLset dLset γ 分别属于 Lset lam 的证据。完备性给出 levelFo(Lset d,d,Lset γ);有界绝对性在层结构中读取这个核心,对象语言中的等式则使用从 dM 底层集合到 d路径。随后,三个无界存在子句在命题截断下分别由 Lset γdLset d 见证;这里没有声称 γ 是最小者。

  stageA : (d γ : S) (od : IsOrd d) (adγ : Adequate γ) (d∈γ :  d ∈ˢ γ )
          (dM : A.SM)  fst dM  d
           d ∈ˢ Lset lam    Lset d ∈ˢ Lset lam    Lset γ ∈ˢ Lset lam 
           [] HS.ASt.AbsL.⊨ᵐ mapFo A.inL (findA dM) 
  stageA d γ od adγ d∈γ dM ed d∈ Ld∈ Lγ∈ =

外围见证分别是充分界 Lset γ、指定索引 d 及其所索引的层 Lset d。它们最终组成环境 (Lset d,d,Lset γ),因此完备性给出层描述这一合取支。等式合取支需要 sym ed:查询要求返回索引等于 dM 的解释,而 ed 把该解释认同为 d。每个存在见证都被放在命题截断之下,所以这里只保留三元组的存在性,并未把这一个三元组选作典范数据。

     (Lset γ , Lγ∈) ,  (d , d∈) ,  (Lset d , Ld∈) , (sat , sym ed) ∣₁ ∣₁ ∣₁
    where
    δ : HS.ASt.SL ^ 3
    δ = (Lset d , Ld∈)  (d , d∈)  (Lset γ , Lγ∈)  []

层描述的完备性给出这里的数学核心。由于 γ 充分、d 是序数且 d ∈ γ,三元组 (Lset d,d,Lset γ) 在外围层级中满足 levelFo。充分性把描述所用的各张表放进共同的界,序数性使 d 成为合法的层索引,而 d ∈ γ 则把该索引置于界下。余下的问题,是在 Lset lam 上的结构中读取同一条 Δ₀ 事实。

    amb :  (Lset d  d  Lset γ  []) ⊨ₚ levelFo 
    amb = level-complete γ adγ d od d∈γ

接下来必须把外围真值改写成 Lset lam 上的层结构中的真值,此时还没有进入 Skolem 壳。反向使用 Cy.atL,可在该层的三个已给成员处读取 Δ₀ 公式 levelFo。随后,路径 embed-map 把无内容的常元改名认同为 embed levelFolevelFo 的常元域为空,尽管外围查询以 Skolem 壳元素为常元。这样,sat 恰好给出 stageA 所需的嵌入核心;完整初等性要等整个无界查询装配完毕后才会使用。

    sat :  δ HS.ASt.AbsL.⊨ᵐ mapFo A.inL (embed levelFo) 
    sat = subst  ψ   δ HS.ASt.AbsL.⊨ᵐ ψ ) (sym (embed-map A.inL levelFo))
            (subst ⟨_⟩ (sym (Cy.atL Δ₀-levelFo δ)) amb)

第二条查询同样寻找满足层描述的三元组 (u,a,z),但附加条件不同。它不把中间坐标认同为指定索引,而是要求名为 yM 的 Skolem 壳元素属于第一坐标 u。因此,它寻找的是某个包含 y 且得到正确描述的可构造层,而该层的索引保持未定。这正是覆盖论证所需的条件。

  findP : A.SM  Formula A.SM 0
  findP yM = ∃̇ (∃̇ (∃̇ (embed levelFo ∧̇ (con yM ∈̇ var zero))))

引理 stageP 为这条成员查询准备外围见证。它从序数 p、包含 p 的充分层 γ、命名 y 的 Skolem 壳元素 yM,以及 y ∈ Lset p 出发。另有三条成员关系分别把 pLset pLset γ 放进 Lset lam,从而使三个存在见证都能在层结构中使用。这里的 p 只用于构造一份外围见证。由于 findP 没有用等式固定中间坐标,初等性稍后返回的内部索引可以是另一个 p′

  stageP : (y p γ : S) (op : IsOrd p) (adγ : Adequate γ) (p∈γ :  p ∈ˢ γ )
          (yM : A.SM)  fst yM  y   y ∈ˢ Lset p 
           p ∈ˢ Lset lam    Lset p ∈ˢ Lset lam    Lset γ ∈ˢ Lset lam 
           [] HS.ASt.AbsL.⊨ᵐ mapFo A.inL (findP yM) 
  stageP y p γ op adγ p∈γ yM ey y∈Lp p∈ Lp∈ Lγ∈ =

同一个外围三元组 (Lset p,p,Lset γ) 见证层描述,但最后的合取支现在记录 yM 的解释属于 Lset p。这种平行构造凸显两条查询的数学差别:findA 保留指定索引,findP 则保留指定点的成员关系。因此,在第二种情形中,完整初等性可以返回另一个内部索引。

     (Lset γ , Lγ∈) ,  (p , p∈) ,  (Lset p , Lp∈) , (sat , mem) ∣₁ ∣₁ ∣₁
    where
    δ : HS.ASt.SL ^ 3
    δ = (Lset p , Lp∈)  (p , p∈)  (Lset γ , Lγ∈)  []

完备性给出两条查询共用的核心。由 γ 的充分性、p 的序数性与 p ∈ γ,它证明 (Lset p,p,Lset γ) 在外围层级中满足 levelFo。这里应区分完备性给出什么与不给出什么:它验证这一个在外围备好的三元组,却不声称每个满足公式的三元组都使用 p,也不使稍后得到的内部索引唯一。

    amb :  (Lset p  p  Lset γ  []) ⊨ₚ levelFo 
    amb = level-complete γ adγ p op p∈γ

与前一条查询相同,此处的搬运只发生在外围层级与 Lset lam 上的层结构之间。反向使用 Cy.atL,凭 levelFo 的 Δ₀ 证书,把三个底层集合处的外围满足读成它们的层代表处的满足。路径 embed-map 再把无常元核心放进外围 Skolem 壳查询的常元域。所得正是 stageP 所需的第一个合取支;这次有界搬运并未搬运任何无界量词。

    sat :  δ HS.ASt.AbsL.⊨ᵐ mapFo A.inL (embed levelFo) 
    sat = subst  ψ   δ HS.ASt.AbsL.⊨ᵐ ψ ) (sym (embed-map A.inL levelFo))
            (subst ⟨_⟩ (sym (Cy.atL Δ₀-levelFo δ)) amb)

余下的合取支断言 yM 的解释属于 Lset p。它的底层集合是 fst yM,而路径 ey : fst yM ≡ y 可把给定的成员关系 y ∈ Lset p 反向搬到这个解释上。正是这次小改写把指定的点放进查询,同时不固定索引。初等性稍后返回三元组 (u,p′,z) 时,保留下来的结论将是 y ∈ u,并没有 p′ 与此处 p 之间的等式。

    mem :  fst (A.inL yM) ∈ˢ Lset p 
    mem = subst  w   w ∈ˢ Lset p ) (sym ey) y∈Lp

对集合 dWitness d命题截断下记录三项事实:某个界 z 属于 Skolem 壳,指定的层 Lset d 属于 Skolem 壳,并且 (Lset d,d,z) 在外围层级中满足 levelFo。这个类型可对任意 d 写下,但下文的构造同时需要 IsOrd dd ∈ M。保留命题截断已经足以支持后面取命题值的闭合与等式结论,也避免把充分界误当作选定的数据。

  Witness : S  Type (ℓ-suc )
  Witness d =  Σ[ z  S ] (  z ∈ˢ M  ×  Lset d ∈ˢ M 
                           ×  (Lset d  d  z  []) ⊨ₚ levelFo  ) ∥₁

构造首先把 Skolem 壳成员 d 放进外围层:Hull⊆L 给出 d ∈ Lset lam。然而,超充分性接收的是序数 lam 的成员,而不是其可构造层的任意成员。下一步建立的局部事实 d∈λ 恰好跨过这道差别。得到它以后,sup d d∈λ 只在 d 之上给出一个充分层;由于目标 Witness d 本身是命题,外层 PT.rec 可以使用这份被命题截断的供给。

  witness : (d : S)  IsOrd d   d ∈ˢ M   Witness d
  witness d od d∈M = PT.rec squash₁ step1 (sup d d∈λ)
    where
    d∈Lλ :  d ∈ˢ Lset lam 
    d∈Lλ = Hull⊆L d d∈M

为了恢复索引成员关系,对 d ∈ Lset lam 应用层反映引理。它的前提准确揭示这一步为何成立:模块参数说明 lam 是序数,调用方则说明 d 是序数。只有在这两项序数性前提下,d 属于 lam 处之层才能推出 d ∈ lam。这是序数索引之间的比较,并非任意集合都适用的一般秩原理。

    d∈λ :  d ∈ˢ lam 
    d∈λ = ord∈Lset→∈ lam ordλ d od d∈Lλ

现在,后继封闭把索引关系转成 stageA 所需的第二条层成员关系。由 d ∈ lam,前面的引理 Lset∈Lλ 给出 Lset d ∈ Lset lam,这里整个 Lset d 是外层的一个元素。它与 d∈Lλ 合起来备好与 d 有关的两个坐标。最终的界 Lset γ 的成员资格要等超充分性给出 γ 后另行推出。

    Ld∈Lλ :  Lset d ∈ˢ Lset lam 
    Ld∈Lλ = Lset∈Lλ d d∈λ

超充分性在命题截断下返回一个索引 γ,满足 γ ∈ lamd ∈ γAdequate γ。对任意这样的三元组,step1 都会构造 Witness d:先在外围层中建立整条查询,再用初等性取得该查询在 Skolem 壳中的被截断存在回答,最后只把这个回答消去到被截断的见证目标。因此,证明可以在消去器内部临时使用 γ,却不会让某个 γ 的选择逸出成为定理数据。

    step1 : Σ[ γ  S ] ( γ ∈ˢ lam  ×  d ∈ˢ γ  × Adequate γ)  Witness d
    step1 (γ , γ∈λ , d∈γ , adγ) =
      PT.rec squash₁ takeZ hullSat
      where
      Lγ∈Lλ :  Lset γ ∈ˢ Lset lam 

给定的关系 γ ∈ lam 产生最后一条外围层成员关系。在 γ 处应用 Lset∈Lλ,得到 Lset γ ∈ Lset lam。至此,Lset ddLset γ 都是层结构中的合法元素,因而可在该结构中陈述 stageA 的完备性见证。这里既不需要 γ 最小,也不需要它唯一确定。

      Lγ∈Lλ = Lset∈Lλ γ γ∈λ

固定索引查询所命名的常元必须是 Skolem 壳载体的元素,不能只是一个外围集合。把 d 与给定的 d ∈ M 证明配对,得到 dM : A.SM。它的底层集合依定义就是 d,所以传给 stageA 的等式证明是自反性。这次打包既不产生新的代表,也不调用塌缩;它只是把已有的 Skolem 壳成员呈现在初等性所使用的语言中。

      dM : A.SM
      dM = d , d∈M

现在对 findA 使用完整初等性。前面对 stageA 的调用证明了改名后的查询在 Lset lam 上的层结构中成立;elem 的对称方向把这份满足搬到 Skolem 壳结构。因为 elem 适用于任意公式,这一步可以连同三个无界存在量词一起搬运。因此必须把它与 Cy.atL 区分开,后者只用于 Δ₀ 核心 levelFo。所得 hullSat 只说明 Skolem 壳中存在合适的三元组。

      hullSat :  [] Mse.⊨ findA dM 
      hullSat = subst ⟨_⟩ (sym (elem 0 (findA dM) []))
        (stageA d γ od adγ d∈γ dM refl d∈Lλ Ld∈Lλ Lγ∈Lλ)

为了把 findA 的回答转成所需见证,先设它外面的两个坐标 zd′ 已在消去器中展开。最内层存在量词于是给出 Skolem 壳元素 a、嵌入核心在 (a,d′,z) 处的满足,以及等式 fst d′ ≡ d。辅助函数 finishA 把这个未截断的分支转换成三项数据:M 中的一个界、指定的 Lset dM 的成员资格,以及 (Lset d,d,fst z) 处的外围满足。这次转换依赖可靠性,并不依赖存在见证的唯一性。

      finishA : (z d' : A.SM)
               Σ[ a  A.SM ]
                  (  (a  d'  z  []) Mse.⊨ embed levelFo 
                  × (fst d'  d) )
               Σ[ w  S ] (  w ∈ˢ M  ×  Lset d ∈ˢ M 

首先把嵌入核心读回外围层级。由于 levelFo 是 Δ₀,有界比较 Cy.atM 把它在 Skolem 壳结构中于 (a,d′,z) 处的满足,认同为它在底层集合 (fst a,fst d′,fst z) 处的外围满足。这次有界步骤只作用于存在见证已经展开后取得的核心;它既不消去无界查询,也不会独自把第一坐标认同为可构造层。

                           ×  (Lset d  d  w  []) ⊨ₚ levelFo  )
      finishA z d' (a , sat , ed) = fst z , snd z , Ld∈M , amb'
        where
        amb :  (fst a  fst d'  fst z  []) ⊨ₚ levelFo 
        amb = subst ⟨_⟩ (Cy.atM Δ₀-levelFo (a  d'  z  [])) sat

levelFo 的可靠性定理要求三个底层集合分别可构造。三者都是 Skolem 壳的成员,所以由 Hull⊆L 分别属于 Lset lam;又因为 lam 是序数,isLλ 把这三条成员关系转成所需的可构造性证明。将这些独立前提与外围满足 amb 一同交给 level-sound,便得到 fst aLset (fst d′) 的认同。仅有公式满足并不足以推出这项认同。

        ea : fst a  Lset d
        ea = level-sound (fst a) (fst d') (fst z)
               (isLλ (fst a) (Hull⊆L (fst a) (snd a)))
               (isLλ (fst d') (Hull⊆L (fst d') (snd d')))
               (isLλ (fst z) (Hull⊆L (fst z) (snd z))) amb

现在,findA 的等式合取支兑现了它的用途。可靠性已经给出 fst a ≡ Lset (fst d′);把 Lset 作用于 ed : fst d′ ≡ d,又得到 Lset (fst d′) ≡ Lset d。复合两条路径便得 ea : fst a ≡ Lset d。因此,返回的第一坐标正是原先指定索引处的层。若没有这个等式合取支,同样的可靠性论证只能把它认同为某个返回索引处的层。

              cong Lset ed

返回的坐标 a 已经带有 snd a,即它属于 Skolem 壳的证明。沿 ea 搬运这个命题,得到 Lset d ∈ M。这就是对指定 Skolem 壳序数 d 所需的闭合事实。它由超充分性、完整初等性、有界绝对性与层描述的可靠性共同推出,并未为 M 另设闭合公理;这部分论证也尚未使用 Mostowski 塌缩。

        Ld∈M :  Lset d ∈ˢ M 
        Ld∈M = subst  w   w ∈ˢ M ) ea (snd a)

见证包还要保留一份方向正确的层描述。从 (fst a,fst d′,fst z) 处的外围满足出发,先沿 ed 搬运中间坐标,再沿 ea 搬运第一坐标,得到 (Lset d,d,fst z) 处的满足,恰是 Witness d 的第三个字段。它与 snd z 以及刚得到的 Lset d ∈ M 合在一起,形成一个未截断分支,随后再放回命题截断之下。

        amb' :  (Lset d  d  fst z  []) ⊨ₚ levelFo 
        amb' = subst  v   (v  d  fst z  []) ⊨ₚ levelFo ) ea
          (subst  p   (fst a  p  fst z  []) ⊨ₚ levelFo ) ed amb)

固定 zd′ 后,最内层存在量词只保留某个合适的 a 仅仅存在。每个显式的 a 都可经 finishA 产生所需的 d 的截断见证,因此在截断内部作映射恰好保留了所需的存在性。构造不会暴露一个选定的 a,其余坐标也将服从同样的命题性限制。

      takeD : (z : A.SM)
             Σ[ d'  A.SM ]
                 (d'  z  []) Mse.⊨ ∃̇ (embed levelFo ∧̇ (var (suc zero)  con dM)) 
             Witness d
      takeD z (d' , hd) = PT.map (finishA z d') hd

最外层见证 z 已经固定以后,下一层截断隐藏的是中间坐标 d′。把它消去到命题 Witness d,就是把每个局部的 d′ 交给前面的构造。step1 中已经出现的外层消去则处理见证 z。因此,超充分性以及三个存在量词给出的见证都只局限于命题结论;充分界与壳中三元组都没有被选成全局数据。

      takeZ : Σ[ z  A.SM ]
                 (z  []) Mse.⊨ ∃̇ (∃̇ (embed levelFo ∧̇ (var (suc zero)  con dM))) 
             Witness d
      takeZ (z , hz) = PT.rec squash₁ (takeD z) hz

现在可以陈述塌缩与可构造层之间的局部相容性。若 d 是 Skolem 壳中的序数,则 commute 同时证明 Lset d 仍在壳中,并且塌缩这一层得到 Lset (π d)。证明把 Witness d 消去到两个命题的乘积中。壳成员关系取值于命题,而两个外围集合之间的等式也是命题,因为外围累积层级是 h-集合。因此,两者的乘积是消去命题截断的合法目标。

  commute : (d : S)  IsOrd d  (d∈M :  d ∈ˢ M )
            Lset d ∈ˢ M  × (π (Lset d)  Lset (π d))
  commute d od d∈M =
    PT.rec (isProp× (snd (Lset d ∈ˢ M)) (isSetS (π (Lset d)) (Lset (π d))))
           go (witness d od d∈M)

在局部打开见证后,其中关于 Lset d 的壳成员资格原样给出第一个结论。其余两项数据,即壳成员 zlevelFo(Lset d,d,z) 的满足关系,则留给等式证明使用。这一区分正好对应 commute 的两个结论:Skolem 壳在由 d 索引的层处闭合,直接来自 Witness d;而该层与塌缩的相容性,仍须由这层的有界描述推出。

    where
    go : Σ[ z  S ] (  z ∈ˢ M  ×  Lset d ∈ˢ M 
                    ×  (Lset d  d  z  []) ⊨ₚ levelFo  )
         Lset d ∈ˢ M  × (π (Lset d)  Lset (π d))
    go (z , z∈M , Ld∈M , amb) = Ld∈M , eq

等式证明首先把有界描述沿塌缩搬运。环境由三个 Skolem 壳成员 Lset ddz 及其成员资格证明组成。由于 levelFo 是无常元的 Δ₀ 公式,Cy.push 可把每个坐标换成其塌缩值,得到 levelFo(π (Lset d),π d,π z) 的满足关系。这与前文搬运序数性时使用的是同一种局部 Δ₀ 搬运,只是此处施用于描述可构造层的三变元公式。

      where
      pushed :  (π (Lset d)  π d  π z  []) ⊨ₚ levelFo 
      pushed = Cy.push Δ₀-levelFo ((Lset d , Ld∈M)  (d , d∈M)  (z , z∈M)  []) amb

要用可靠性读取搬运后的公式,三个塌缩坐标都必须可构造。每个坐标都是某个 Skolem 壳成员的塌缩,故由 πX-intro 属于塌缩像;逐点假设 pixL 随即给出所需的可构造性证明。因此,可靠性可把第一个塌缩坐标认同为由第二个坐标索引的可构造层:

π (Lset d) ≡ Lset (π d)

辅助值 π z 用于验证这项描述,但不出现在所得等式中。

      eq : π (Lset d)  Lset (π d)
      eq = level-sound (π (Lset d)) (π d) (π z)
             (pixL (π (Lset d)) (HS.C.πX-intro (Lset d) Ld∈M))
             (pixL (π d) (HS.C.πX-intro d d∈M))
             (pixL (π z) (HS.C.πX-intro z z∈M))

搬运后的满足关系是上述可靠性论证的最后一个前提。读取其结论时必须保留 commute 的假设:该等式只对属于 Skolem 壳的序数 d 成立。它不是运算 πLset 之间的全局等式。这样的局部性已经足够,因为下面两处应用都会先找回一个相关的壳中序数,然后才调用这条相容等式。

             pushed

抽象凝聚论证要求的第一项性质,是塌缩像在自身序数处的层闭合。给定塌缩像中的序数 δlevelIn 必须证明 Lset δ 也属于该像。成员刻画 πX-member命题截断下给出一个 Skolem 壳成员 d,满足 π d ≡ δ。目标本身是成员命题 Lset δ ∈ πX,所以可以在局部打开这个带命题截断的原像。

  levelIn : (δ : S)  IsOrd δ   δ ∈ˢ HS.C.πX    Lset δ ∈ˢ HS.C.πX 
  levelIn δ  δ∈πX =
    PT.rec (snd (Lset δ ∈ˢ HS.C.πX)) go (HS.C.πX-member δ δ∈πX)
    where
    go : Σ[ d  S ] ( d ∈ˢ M  × (π d  δ))   Lset δ ∈ˢ HS.C.πX 

取得这样的原像 d 后,所求的像成员资格将来自 Lset d。确实,若有 Lset d 属于 Skolem 壳的证明,πX-intro 就给出 π (Lset d) 属于塌缩像的证明。最后依次沿相容等式 π (Lset d) ≡ Lset (π d),以及把 Lset 施于原像等式 π d ≡ δ 所得的等式作传输。余下要说明的是 d 为序数,并且 Lset d 属于壳。

    go (d , d∈M , e) =
      subst  w   w ∈ˢ HS.C.πX ) (cm .snd  cong Lset e)
            (HS.C.πX-intro (Lset d) (cm .fst))
      where
      od : IsOrd d

调用相容引理之前,先恢复原像的序数性。沿 π d ≡ δ 反向传输假设 IsOrd δ,得到 IsOrd (π d)ord-pull 再把这项事实穿过塌缩反映为 IsOrd d。这里的论证次序不可省略:原像刻画本身只说明 d 是 Skolem 壳成员;它的序数性来自 δ 的序数性与有界序数公式的反映性。

      od = ord-pull d d∈M (subst IsOrd (sym e) )

此时 commute 的各项前提已经齐备。它的第一分量Lset d 放入 Skolem 壳,第二分量给出 π (Lset d) ≡ Lset (π d)。把后一个等式与 cong Lset e 复合,其中 e : π d ≡ δ,便把这个塌缩层认同为 Lset δ;再作传输即得所求的像成员资格。因此,塌缩像对其所含的每个序数 δ 都包含 Lset δ。这里没有对非序数或像外序数作闭合断言。

      cm :  Lset d ∈ˢ M  × (π (Lset d)  Lset (π d))
      cm = commute d od d∈M

第二项性质是覆盖。对每个 Skolem 壳成员 y,它只要求塌缩像中仅仅存在一个序数 γ,使 π y ∈ Lset γ。该序数、它属于塌缩像的证明以及这条层成员关系,都保留在同一个命题截断之下。因此,每个 y 都有覆盖层,但定理没有选出这样的一族层,也不断言其索引最小或与 lam 有任何大小关系。

  cover : (y : S)   y ∈ˢ M 
          Σ[ γ  S ] (IsOrd γ ×  γ ∈ˢ HS.C.πX  ×  π y ∈ˢ Lset γ ) ∥₁
  cover y y∈M = PT.rec squash₁ go (Lset-out lam y (Hull⊆L y y∈M))
    where
    Goal : Type (ℓ-suc )

目标 Goal 本身就是命题截断。这一点会使用两次:Lset-out 给出的 y 的分解,以及超充分性给出的充分索引,都能在局部使用,因为它们共同到达一个命题。两步都不固定最终的覆盖索引;该索引将来自成员查询 findP 的内部回答。

    Goal =  Σ[ γ  S ] (IsOrd γ ×  γ ∈ˢ HS.C.πX  ×  π y ∈ˢ Lset γ ) ∥₁

构造先在可构造层级中定位 y。每个 Skolem 壳成员都属于 Lset lam,所以 Lset-out命题截断下给出一个索引 c ∈ lam,使 yLset c 的可定义子集。令 p = sucV c。后继闭合把 p 放回 lam 后,超充分性再次仅在命题截断下给出一个包含 p 的充分索引 γ ∈ lam。预备的索引 p 提供一个含有 y 的外围层;它尚不是 Skolem 壳随后返回的索引。

    go : Σ[ c  S ] ( c ∈ˢ lam  ×  y ∈ˢ 𝒟ₒ (Lset c) )  Goal
    go (c , c∈λ , y∈D) = PT.rec squash₁ go₂ (sup p p∈λ)
      where
      p : S
      p = sucV c

第一项辅助事实把 lam 的后继闭合假设施于 c ∈ lam,从而对 p = sucV c 得到 p ∈ lam。这项关系有两类用途:一方面要在 p 处调用超充分性,另一方面,稍后的外围见证必须把序数 p 与层 Lset p 都放入 Lset lam。关于索引的这一条闭合假设支撑了所有这些步骤。

      p∈λ :  p ∈ˢ lam 
      p∈λ = succλ c c∈λ

预备的索引还必须是序数。由于 lam 是序数且 c ∈ lammem-ord 给出 IsOrd c;序数对 von Neumann 后继的闭合再给出 IsOrd (sucV c),也就是 IsOrd p。这里区分了后继的两种用途:succλ 把后继放入外围索引,suc-ord 则证明该后继本身是序数。

      op : IsOrd p
      op = suc-ord (mem-ord {A = lam} ordλ c c∈λ)

诞生层信息给出 y ∈ 𝒟ₒ (Lset c)。后继层等式把这个可定义幂集层认同为 Lset (sucV c),因此传输得到 y ∈ Lset p。这正是从 c 转到其后继的原因:分解把 y 定位为 c 处之层上的可定义子集,而 findP 需要的是对某个可构造层的普通成员关系。

      y∈Lp :  y ∈ˢ Lset p 
      y∈Lp = subst  w   y ∈ˢ w ) (sym (Lset-suc c)) y∈D

在局部打开超充分性见证,得到索引 γ ∈ lam、关系 p ∈ γ 与性质 Adequate γ。这些正是对外围预备索引 p 使用完备性所需的前提。二元组 yM = (y,y∈M) 此时把 y 视为壳载体的元素,使其能作为常元参数出现在 findP 中。从这里起,构造使用的是固定 y 之成员关系的查询,而不是前面固定指定索引的查询。

      go₂ : Σ[ γ  S ] ( γ ∈ˢ lam  ×  p ∈ˢ γ  × Adequate γ)  Goal
      go₂ (γ , γ∈λ , p∈γ , adγ) = PT.rec squash₁ takeZ hullSat
        where
        yM : A.SM
        yM = y , y∈M

在充分索引 γ 处,完备性以三元组 (Lset p,p,Lset γ) 构造 findP 的外围回答,而前一步所得的成员关系把 y 放入其第一坐标。所需的三项载体成员资格分别由 ord∈Lλ pLset∈Lλ pLset∈Lλ γ 给出。由于 findP 含有无界存在量词,把整个回答送入 Skolem 壳必须使用完整初等性。所得结论是一条内部存在断言:yM 属于某个被正确描述的层。

        hullSat :  [] Mse.⊨ findP yM 
        hullSat = subst ⟨_⟩ (sym (elem 0 (findP yM) []))
          (stageP y p γ op adγ p∈γ yM refl y∈Lp
            (ord∈Lλ p op p∈λ) (Lset∈Lλ p p∈λ) (Lset∈Lλ γ γ∈λ))

在局部打开内部断言,得到三个 Skolem 壳元素 uaz。它们的底层集合满足 levelFo(fst u,fst a,fst z),同一回答还记录 y ∈ fst u。现在要由这些事实取得塌缩像中的一个序数,使其所索引的层包含 π y。构造可以为每份局部回答形成显式依值和,但这份依值和立即被送回命题截断之下,所以覆盖索引不会作为选定数据逸出。

        finishP : (z a : A.SM)
                 Σ[ u  A.SM ]
                    (  (u  a  z  []) Mse.⊨ embed levelFo 
                    ×  y ∈ˢ fst u  )
                 Σ[ β  S ] (IsOrd β ×  β ∈ˢ HS.C.πX 

输出见证在局部取为 β = π p′,其中 p′ 是中间壳坐标 a 的底层集合。一旦证明 p′ 为序数,ord-push 就证明 π p′ 为序数,而 a 所带的证明给出 p′ ∈ M,故 πX-introπ p′ 放入塌缩像。余下的分量是 π y ∈ Lset (π p′)。要得到它,必须先在外围层级中读取公式回答,再把成员关系与局部相容等式结合起来。

                              ×  π y ∈ˢ Lset β )
        finishP z a (u , sat , y∈u) =
          π p′ , ord-push p′ (snd a) op′ , HS.C.πX-intro p′ (snd a) , πy∈
          where
          amb :  (fst u  fst a  fst z  []) ⊨ₚ levelFo 

内部满足关系证明讨论的是壳结构中的 embed levelFo。由于其核心 levelFo 是 Δ₀ 公式,Cy.atM 把这项证明读成 levelFo 在同三个底层集合 (fst u,fst a,fst z) 处的外围满足关系。此步没有塌缩任何坐标;它的作用是离开 Skolem 壳的内部语义,恢复一条可供 isOrd-at-p-outlevel-sound 使用的外围陈述。

          amb = subst ⟨_⟩ (Cy.atM Δ₀-levelFo (u  a  z  [])) sat

p′ = fst a 为 Skolem 壳内部返回的中间坐标。它不必等于外围预备的后继 p = sucV c。外围三元组证明 findP yM 可满足,但 findP 只固定 yM 对第一坐标的成员关系,其中没有固定中间坐标的等式。因此,完整初等性只在命题截断下给出某个内部索引 p′,余下证明使用的是这个返回的索引。

          p′ : S
          p′ = fst a

不过,仍可证明返回的索引是序数。外围满足关系 amb 的第一个合取支,是在中间坐标处读取的三槽序数描述。把读式引理 isOrd-at-p-out 施于该合取支,便得到 IsOrd p′。这一结论讨论的是内部原像索引 p′Goal 中使用的序数是它的塌缩 π p′,后者的序数性另由 ord-push 得到。

          op′ : IsOrd p′
          op′ = isOrd-at-p-out (fst u) p′ (fst z) (amb .fst)

现在由可靠性识别内部回答的第一坐标。由于 uaz 都是 Skolem 壳元素,Hull⊆L 把它们的底层集合放入 Lset lamisLλ 再分别证明三者可构造。结合 amb,这三个前提给出 fst u ≡ Lset p′。因此,回答中记录的 y ∈ fst u 可以传输为 y ∈ Lset p′。辅助界 fst z 不必唯一,证明也没有使用 p′ 与预备索引 p 之间的等式;可靠性只凭返回的序数索引确定层的取值。

          u≡ : fst u  Lset p′
          u≡ = level-sound (fst u) p′ (fst z)
                 (isLλ (fst u) (Hull⊆L (fst u) (snd u)))
                 (isLλ p′ (Hull⊆L p′ (snd a)))
                 (isLλ (fst z) (Hull⊆L (fst z) (snd z))) amb

可靠性等式 u≡ 把返回的层值 fst u 认同为 Lset p′。沿这条等式搬运已取得的成员关系 y∈u,便得到 y ∈ Lset p′。这里仅替换成员关系右侧的集合,并未在返回指标 p′ 与先前预备的指标 p 之间建立任何关系。

          y∈Lp′ :  y ∈ˢ Lset p′ 
          y∈Lp′ = subst  v   y ∈ˢ v ) u≡ y∈u

返回的中间坐标恰好给出局部交换定理所需的数据。它的底层集合是 p′op′ 证明该集合是序数,snd a 证明它属于壳。因此,commute p′ op′ (snd a) 同时给出 Lset p′ ∈ M 与等式 π (Lset p′) ≡ Lset (π p′)。该定理只针对壳中的序数,而这里已经满足这一适用条件。

          cm :  Lset p′ ∈ˢ M  × (π (Lset p′)  Lset (π p′))
          cm = commute p′ op′ (snd a)

关系 y∈Lp′ 的两端都是壳成员:y∈M 给出 y 的壳成员资格,cm .fst 给出 Lset p′ 的壳成员资格。于是 member-push 保持这条成员关系,得到 π y ∈ π (Lset p′);再沿 cm .snd 替换右侧集合,便得到 π y ∈ Lset (π p′)。结合前面关于 π p′ 的序数性与像中成员资格,这正是 finishP 所需的覆盖见证。

          πy∈ :  π y ∈ˢ Lset (π p′) 
          πy∈ = subst  w   π y ∈ˢ w ) (cm .snd)
                  (Cy.member-push (Lset p′) y (cm .fst) y∈M y∈Lp′)

固定 za 后,最后一个存在量词只断言某个合适的 u 仅仅存在。每份显式回答都确定上面构造出的序数 π p′、它对塌缩像的成员资格,以及证明 π y ∈ Lset (π p′)。在命题截断内部作这项映射,便保留覆盖序数的存在性,而不选定查询的某份特定回答。

        takeA : (z : A.SM)
               Σ[ a  A.SM ]
                   (a  z  []) Mse.⊨ ∃̇ (embed levelFo ∧̇ (con yM ∈̇ var zero)) 
               Goal
        takeA z (a , ha) = PT.map (finishP z a) ha

余下两层存在量词服从同一限制。固定 z 后,可以使用中间见证 a,因为目标 Goal 是命题;外层消去以同样方式处理 z。因此,内部回答的三个坐标都只能在局部使用。所得结论证明每个 Skolem 壳成员都有覆盖序数,却不产生选择这类序数的函数。

        takeZ : Σ[ z  A.SM ]
                   (z  []) Mse.⊨ ∃̇ (∃̇ (embed levelFo ∧̇ (con yM ∈̇ var zero))) 
               Goal
        takeZ (z , hz) = PT.rec squash₁ (takeA z) hz

已经证明的两项性质现在确定塌缩像。令 β 为该像的序数成员所成的集合。像的传递性,加上序数成员的成员仍为序数这一事实,使 β 成为序数。若 x ∈ πX,覆盖性质把 x 放入某个 Lset γ,其中序数 γ ∈ πX;于是 γ ∈ β,单调性给出 x ∈ Lset β。反过来,把 x ∈ Lset β 分解到某个 δ ∈ β 处。对像中成员 δ 使用覆盖性质,得到序数 γ ∈ βδ ∈ γ。于是 x ∈ Lset γ,而 levelInLset γ 放进传递的塌缩像,故 x ∈ πX。外延性最终给出 πX ≡ Lset β

  module Cn = HS.Condense levelIn cover using (condenses)

于是得到显式集合 β,并有 IsOrd βHS.C.πX ≡ Lset β。这个见证不在命题截断之下,因为它就是塌缩像的所有序数成员所成的集合。该结论使用 Condense 的全部结构性假设,而其唯一的经典参数是 LEM (ℓ-suc ℓ)。它不比较 β 与外层索引 lam,也不给出基数估计或单射;这些结论还需要后续章节中的附加构造。

  condenses : Σ[ β  S ] (IsOrd β × (HS.C.πX  Lset β))
  condenses = Cn.condenses