The stage of a constructible set

可构造性当初定义为「某个序数阶段包含它」,而那个见证被刻意留在陈述里,好让后续理论把它取回来。现在就取,并且加以锐化:不是某个阶段,而是最早的那个。正是这个函数,使此后每个构造能把有穷多个可构造集安置在公共阶段上,因为界住最早的阶段就界住了任何合用的阶段。

要证的有两件。最小阶段存在,那是一次下降:从任何合用的阶段出发,问是否有更小的也合用;若有则递归,而成员关系良基,故递归会停。以及它唯一,那是三歧:两个最小阶段无论哪个方向都不能严格相比,故它们相等。

两个论证都不看那条性质说了什么。故本章对任意的序数性质来证,再把阶段函数作为实例读出:此处不费分文,而日后有偿:序数的一个典范选取是若干构造都想要的东西,而每个由此获得它的构造,就是一个无须 L 的良序即可获得它的构造。

两件都是经典的,理由前面已经见过。下降在每一步问的是关于任意集合的问题,而唯一性是比较。于是最小序数加入经典锥,本章是排中律进入 L 侧机器的第三处、也是最后一处。

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

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

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

open import FOL.ZFStructure using ( module hPropStructure )
open import V.Hierarchy {} using ( 𝒮ᵥ; ∈-induction )
open import L.Constructible {} using ( IsOrd; isPropIsOrd; Lset; isL )
open import L.Ordinal.Linear {} lem using ( ord-tri )

open import Cubical.Data.Sum using ( _⊎_; inl; inr )
import Cubical.Data.Empty as Empty
import Cubical.HITs.PropositionalTruncation as PT
open PT using ( ∣_∣₁; ∥_∥₁ )
open import Cubical.Functions.Logic using ( ∃[∶]-syntax )
open import Cubical.Data.Sigma using ( Σ≡Prop )
open import Cubical.Foundations.HLevels using ( isProp×; isPropΠ )

open TruthAlgebra (hPropAlgebra (ℓ-suc ))
open hPropStructure 𝒮ᵥ

作为最早的阶段

一个序数对某条性质而言是最小的,指没有更小的序数具有该性质。把这一条与序数性、该性质打成包,就得到后续章节想要的数据;而这个包是命题,正是这一点使它能从截断的见证中被取出,可构造性携带的正是这样的见证。

唯一性正是那条性质取值于 hProp 的用武之处:两个候选由三歧比较,每个严格方向都被对方的极小性反驳,而其余分量都是命题,故序数相等即是整包相等。

module _ (P : S  Ω) where

  isLeastOrd : S  Type (ℓ-suc )
  isLeastOrd α = (γ : S)  IsOrd γ   P γ    γ ∈ˢ α   Empty.⊥

  LeastOrd : Type (ℓ-suc )
  LeastOrd = Σ[ α  S ] (IsOrd α ×  P α  × isLeastOrd α)

  isPropLeastOrd : isProp LeastOrd
  isPropLeastOrd (α , ordα ,  , leastα) (α' , ordα' , pα' , leastα') =
    Σ≡Prop propRest α≡α'
    where
    decide : ( α ∈ˢ α'   ((α  α')   α' ∈ˢ α ))  α  α'
    decide (inl α∈α')       = Empty.rec (leastα' α ordα  α∈α')
    decide (inr (inl e))    = e
    decide (inr (inr α'∈α)) = Empty.rec (leastα α' ordα' pα' α'∈α)
    α≡α' : α  α'
    α≡α' = decide (ord-tri α ordα α' ordα')
    propRest : (β : S)  isProp (IsOrd β ×  P β  × isLeastOrd β)
    propRest β = isProp× (isPropIsOrd β)
      (isProp× (snd (P β))
        (isPropΠ λ _  isPropΠ λ _  isPropΠ λ _  isPropΠ λ _  Empty.isProp⊥))

下降

给定任一具有该性质的序数,向下走。问是否有严格更小的序数也具有它;若有则递归进去,而成员关系良基,故这趟行走会终止;若没有,则当前序数最小,而对那个问题的反驳恰是极小性的证明。

结果既是命题,起始序数便可以截断的形式给出,而这正是诸调用方手上的形式:它们知道合用的序数存在,却未曾选定一个。

  leastOrdBelow : (α : S)  IsOrd α   P α   LeastOrd
  leastOrdBelow = ∈-induction step
    where
    step : (α : S)  (∀ β   β ∈ˢ α   IsOrd β   P β   LeastOrd)
          IsOrd α   P α   LeastOrd
    step α IH ordα  = decide (lem Smaller)
      where
      Smaller : hProp (ℓ-suc )
      Smaller = ∃[ β  S ] ((β ∈ˢ α)  ((IsOrd β , isPropIsOrd β)  P β))
      decide : ( Smaller   ( Smaller   Empty.⊥))  LeastOrd
      decide (inl ∃β) = PT.rec isPropLeastOrd
         { (β , (β∈α , (ordβ , )))  IH β β∈α ordβ  }) ∃β
      decide (inr ¬∃β) = α , ordα ,  , leastProof
        where
        leastProof : isLeastOrd α
        leastProof γ ordγ  γ∈α = ¬∃β  γ , (γ∈α , (ordγ , )) ∣₁

  leastOrd :  (Σ[ α  S ] (IsOrd α ×  P α )) ∥₁  LeastOrd
  leastOrd = PT.rec isPropLeastOrd
     { (α , (ordα , ))  leastOrdBelow α ordα  })

阶段函数

可构造性携带的见证是截断的,而下降的结果是命题,故截断可以抬过去。阶段就是其序数分量,三条性质随之投影而出。

这个函数被封印。它展开是一次良基递归,其步进提到那座塔,而此后每个提到阶段的类型都会把那次展开拖进转换检查;三个投影各开封一次,而没有任何消费方需要再开封。

theEarliest : (x : S)   isL x   LeastOrd  σ  x ∈ˢ Lset σ)
theEarliest x = leastOrd  σ  x ∈ˢ Lset σ)

opaque
  stage : (x : S)   isL x   S
  stage x p = theEarliest x p .fst

opaque
  unfolding stage
  stage-ord : (x : S) (p :  isL x )  IsOrd (stage x p)
  stage-ord x p = theEarliest x p .snd .fst

  stage-mem : (x : S) (p :  isL x )   x ∈ˢ Lset (stage x p) 
  stage-mem x p = theEarliest x p .snd .snd .fst

  stage-earliest : (x : S) (p :  isL x )
                  isLeastOrd  σ  x ∈ˢ Lset σ) (stage x p)
  stage-earliest x p = theEarliest x p .snd .snd .snd

小结

leastOrd 从「合用的序数存在」这一截断见证出发,为任意序数性质选出满足它的最小序数。stage 是它的头一个实例,为可构造集命名包含它的最早阶段,stage-ordstage-memstage-earliest 是它的三条性质。存在性是一次良基下降,唯一性是三歧,故本章经典;而函数被封印,故那次下降永不抵达日后的转换问题。反射是第一个消费方,且两者都用:它经界住诸阶段而把公式的参数安置在公共阶段上,又经取「有见证的最早阶段」而为一个存在量词选出见证。