この章を読むか、対話型目次と依存グラフで別のルートを選べます。
対話型目次 · 依存グラフ宇宙レベル ℓ を固定し、レベル ℓ-suc ℓ における排中律を仮定する。この仮定には二つの異なる数学的用途がある。ord-tri は候補の順序数を比較し、降下は「より小さい候補が存在する」という hProp を判定する。
module L.Stage {ℓ : Level} (lem : LEM (ℓ-suc ℓ)) where
各構成可能集合 x は、少なくとも一つの順序数 α に対する Lset α に属する。本章は、この単なる存在から標準的な上界、すなわち x を含む最小段階の順序数添字を得る。まず、より一般的な問題を解く。順序数上の任意の hProp 値の性質 P について、整礎的な降下が最小の証人を見つけ、順序数の三分法がその一意性を示す。
降下は P を満たす任意の順序数から始まる。α において、より小さい β ∈ α も P を満たすかを問う。肯定なら β における帰納法の結果を使い、否定なら α の最小性が得られる。所属に関する帰納法により、この定義は整礎的である。「より小さい証人が存在する」という主張と最初の証人はいずれも命題的に切り捨てられているが、LeastOrd P 自身が命題なので、それぞれの切り捨てをこの完全なパッケージへ消去できる。
P σ を x ∈ Lset σ に特殊化すると stage x hx が得られる。付随する定理は、この添字が順序数で、その段階が x を含み、より小さい順序数の段階は x を含まないことを述べる。排中律を使うのは、より小さい証人の存在を判定するときと、二つの候補順序数を比較するときだけである。
所属関係は、順序数上の狭義順序と、その整礎帰納の原理の両方を与える。構成可能性からは、述語 IsOrd、段階族 Lset、そして x がある順序数添字の段階に現れるという主張 isL x を得る。したがって同じ所属関係が候補添字の間の降下を制御し、特殊化後には x の段階への所属を表す。
「より小さい証人が存在する」という主張は、命題的に切り捨てられた存在で表す。これは存在だけを記録し、選ばれた β を取り出さない。消去子 rec₁ がこの証拠を使えるのは対象が命題の場合だけであり、下の一意性の証明が LeastOrd P についてまさにそれを示す。積と依存関数型は命題性を保つので、固定した順序数添字に付随する証拠も一意になる。
性質 P は Ω、すなわち hProp の型への写像である。したがって ⟨ P α ⟩ は α における基礎の命題であり、(P α) .snd はその任意の二つの証人が一致することを示す。順序数添字の等号を最小証人のパッケージ全体の等号へ持ち上げるとき、この命題性を使う。
open hPropView 𝒮ᵥ
性質を満たす最小の順序数
順序数の性質 P に対して、LeastOrd P は P を満たす順序数 α と、それより小さい順序数は P を満たさないという証明とを組にする。この定義が扱うのは順序数の添字そのものであり、後で P σ = (x ∈ Lset σ) と特殊化して初めて、その添字は構成可能段階の添字になる。
一意性は、性質が hProp の値を取るという事実を用いる。二人の候補は三分性で比較され、どちらの厳密な向きも相手の最小性によって反駁され、残りの成分はすべて命題である。したがって順序数として等しければ、パッケージ全体としても等しいのである。
最小性は反駁として述べられる。isLeastOrd α とは、任意の集合 γ について、γ が P を満たす順序数でかつ γ ∈ α であるような状況は起こりえない、という主張である。ここで背理的な形の最小性が適切なのは、順序数の厳密な順序が所属を通して読み取られるからである。返すべき「より小さい順序数」の値はなく、導出すべきは不可能な状況だけである。パッケージ全体 LeastOrd は、順序数、その順序数性、そこでの P の証明、そしてこの最小性の条項をひとまとめにする。
module _ (P : S → hProp (ℓ-suc ℓ)) where
isLeastOrd : S → Type (ℓ-suc ℓ)
isLeastOrd α = (γ : S) → IsOrd γ → ⟨ P γ ⟩ → ⟨ γ ∈ˢ α ⟩ → ⊥₀
LeastOrd : Type (ℓ-suc ℓ)
LeastOrd = Σ[ α ∶ S ] (IsOrd α × ⟨ P α ⟩ × isLeastOrd α)
このようなパッケージが等しいことを示すには、まず順序数の添字を比較する。三分性は α ∈ α′、α = α′、α′ ∈ α の三つの場合を届ける。方針は、厳密な二つの場合を背理的に消去し、等しい場合を残すことである。decide はこの三分法の結果をパス α ≡ α′ に変える関数である。重要なのは、この議論が示すのは添字の等しさだけだということである。パッケージは添字上の依存対なので、添字の等しさだけからパッケージの等しさは得られない。
isPropLeastOrd : isProp LeastOrd
isPropLeastOrd (α , ordα , pα , leastα) (α' , ordα' , pα' , leastα') =
Σ≡Prop propRest α≡α'
where
decide : (⟨ α ∈ˢ α' ⟩ ⊎ ((α ≡ α') ⊎ ⟨ α' ∈ˢ α ⟩)) → α ≡ α'
それぞれの厳密な場合は最小性と矛盾するが、それは相手側の候補の最小性との矛盾である。α ∈ α′ なら、α は α′ より厳密に下にあり P を満たす順序数であり、leastα' が反駁するのはまさにこれである。α′ ∈ α の場合は leastα を用いて対称である。真ん中の場合がパスそのものである。ord-tri の判定を decide に流し込めばパス α≡α' が得られる。ここまでに P について使った仮定は、その値が命題であること以外にない。
decide (inl α∈α') = ⊥₀-rec (leastα' α ordα pα α∈α')
decide (inr (inl e)) = e
decide (inr (inr α'∈α)) = ⊥₀-rec (leastα α' ordα' pα' α'∈α)
α≡α' : α ≡ α'
α≡α' = decide (ord-tri α ordα α' ordα')
残るは、添字のパスをパッケージのパスへ引き上げることであり、ここでは依存する残りの命題性を使う。添字とともに変わる成分は IsOrd β × ⟨ P β ⟩ × isLeastOrd β である。IsOrd β は構成可能の章により命題であり、⟨ P β ⟩ は P が hProp 値であることから命題であり、isLeastOrd β は空型への関数型なので isPropΠ の繰り返しで命題である。よって propRest β が残りの全体の命題性を証明し、Σ≡Prop が基礎のパスを、求めるパッケージの相等へと変える。添字が一致すれば、依存する残りは一致しないようがないのである。
propRest : (β : S) → isProp (IsOrd β × ⟨ P β ⟩ × isLeastOrd β)
propRest β = isProp× (isPropIsOrd β)
(isProp× ((P β) .snd)
(isPropΠ λ _ → isPropΠ λ _ → isPropΠ λ _ → isPropΠ λ _ → isProp⊥))
最小の順序数への降下
P を満たす任意の順序数から始め、leastOrdBelow は、それより小さく P を満たす順序数があれば再帰的にそこへ降りる。所属に関する帰納法は、真に小さい順序数での結果から現在の結果を定め、P を満たす最小の順序数を与える。この時点ではまだ構成可能段階への特殊化は行わない。
結果が命題であるため、出発点の順序数は切り詰められた形で与えてよく、それこそが呼び出し側の実際の形である。呼び出し側は、適切な順序数が存在することを知っているだけで、ひとつを選んではいない。
降下は所属に関する整礎帰納として構成される。これが階層の章の原理 ∈-induction である。そのステップは、順序数 α、その順序数性、α での P の証明、そしてすべての厳密に小さい要素 β に対して有効な帰納法の仮定を受け取る。β が再び P を満たす順序数であれば、β から帰納を始めて得られる大域的に最小の P の証人がすでに手にある、というものである。ステップの仕事はただひとつ、α において降下を続けるか、到着したかを判定することである。
leastOrdBelow : (α : S) → IsOrd α → ⟨ P α ⟩ → LeastOrd
leastOrdBelow = ∈-induction step
where
step : (α : S) → (∀ β → ⟨ β ∈ˢ α ⟩ → IsOrd β → ⟨ P β ⟩ → LeastOrd)
→ IsOrd α → ⟨ P α ⟩ → LeastOrd
判定すべき問いは Smaller である。すなわち、β ∈ α であり、順序数であり、P を満たすような β が単に存在するかどうかで、各条件は論理積でひとつの hProp にまとめられる。ここで重要な点が二つある。第一に、この存在文は切り詰められていることである。Smaller は選ばれた β を持たず、存在することの主張だけを運ぶ。第二に、レベル ℓ-suc ℓ における排中律が lem を通してこの問いを丸ごと判定し、切り詰めの要素か、反駁かのどちらかを届けることである。これこそ古典的な仮定が降下に入り込む場所である。
step α IH ordα pα = decide (lem Smaller)
where
Smaller : hProp (ℓ-suc ℓ)
Smaller = ∃[ β ∶ S ] ((β ∈ˢ α) ⊓ ((IsOrd β , isPropIsOrd β) ⊓ P β))
decide : Dec ⟨ Smaller ⟩ → LeastOrd
判定の二つの分岐は、どちらも答えを直接組み立てる。肯定的な分岐では、切り詰められた証人をデータとして分解することはできないが、rec₁ はそれを任意の命題へ消去でき、LeastOrd はまさに命題である。そこで証人は、選ばれることなく、β における帰納法の仮定が与える大域的に最小のパッケージへと変換される。否定的な分岐では、より小さい証人はそもそも存在しないので、α 自身が最小である。再帰は ∈-induction の管理された帰納法の仮定を通してのみ起こる。。
decide (yes ∃β) = rec₁ isPropLeastOrd
(λ { (β , (β∈α , (ordβ , pβ))) → IH β β∈α ordβ pβ }) ∃β
decide (no ¬∃β) = α , ordα , pα , leastProof
where
leastProof : isLeastOrd α
否定的な分岐の最小性の条項で、反駁が働く。α より下で P を満たす順序数 γ が与えられれば、証人 (γ , γ∈α , ordγ , pγ) は、まさに否定されたはずの切り詰め Smaller に梱包され、それに ¬∃β を適用して求める矛盾が得られる。最後に leastOrd が、呼び出し側が実際に持つ形を扱う。P を満たす順序数が単に存在する、という形である。ここでも LeastOrd への消去は、前節で証明された命題性によって許される。こうして切り詰められた存在は、切り捨てを任意のデータ型へ消去することなく、正準な最小の添字へと洗練されるのである。
leastProof γ ordγ pγ γ∈α = ¬∃β ∣ γ , (γ∈α , (ordγ , pγ)) ∣₁
leastOrd : ∥ (Σ[ α ∶ S ] (IsOrd α × ⟨ P α ⟩)) ∥₁ → LeastOrd
leastOrd = rec₁ isPropLeastOrd
(λ { (α , (ordα , pα)) → leastOrdBelow α ordα pα })
段階の添字を返す関数
P σ = (x ∈ Lset σ) とすると、降下は x を含む段階 Lset α の最小の順序数添字 α を返す。関数 stage が α を選び、stage-ord はそれが順序数であることを、stage-mem と stage-earliest はその添字と対応する段階との関係を示す。
この添字は再帰的な構成そのものではなく、三つの安定した事実を通して与えられる。すなわち、順序数であり、その段階が x を含み、その性質をもつ順序数添字の中で最小である。stage を opaque とすることで、この抽象化の境界を保つ。
構成可能性の証明書 ⟨ isL x ⟩ は、leastOrd が期待する入力の形そのものである。構成可能の章でのクラスの定義により、isL x の要素とは、順序数 σ とその順序数性と所属 x ∈ˢ Lset σ の対を単に切り詰めたものである。したがって性質 λ σ → x ∈ˢ Lset σ は降下の仮定を満たし、theEarliest はこの性質に leastOrd を適用する。したがって構成可能性は、最小段階の添字を得るために必要な切り捨てられた存在の前提をちょうど与える。
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
パッケージ theEarliest x p は、最小の添字と三つの証明を含む。関数 stage は添字を射影し、その再帰的構成を不透明に保つので、後の議論は順序数性、段階への所属、最小性を使う。これは構成可能集合とその証人から順序数を返す関数であり、宇宙レベルでも階数関数でもない。
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-ord は選ばれた添字が順序数であることを述べ、したがって後に他の添字と比較できる。stage-mem は x を段階 Lset (stage x p) に属させる。これが降下によって示される所属の事実である。stage-earliest は最小性の条項そのものを取り戻す。より小さい順序数 σ で 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 x hx は x を含む最小の Lset α の順序数添字 α を返し、stage-ord、stage-mem、stage-earliest がその事実を正確に述べる。後の議論では、これらの順序数添字を比較または上から抑えてから、対応する構成可能段階を使える。