Structures

公式自身没有含义;它需要一个被谈论的世界。对上一章的语言而言,世界就是模型论意义上的结构:一个载体,连同两个谓词符号 (成员与等词) 的解释,取值于选定的真值代数。本章定义这些结构、裁剪它们的方式,以及将把结构元素喂给公式的环境。

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

module FOL.ZFStructure where

open import Base.Prelude
open import Base.Truth
open import Cubical.Foundations.HLevels using ( isSetΣSndProp )
open import Cubical.Data.Sigma using ( Σ≡Prop )

结构的 record

仍先立约定,全书通用:花体 𝒮 代表结构,S 代表其载体,xyz 代表载体元素,即这门语言所谈的「集合」。两个关系字段上的上标 ˢ 是又一枚层标记:它宣告一个符号是当前结构的字段。至此 家族在纸面上已有三员,一字一层:库的 (宿主)、本章的 ∈ˢ (结构)、上一章的 ∈̇ (语法)。

record ZFStructure { ℓ'} (𝕋 : TruthAlgebra  ℓ') : Type (ℓ-max (ℓ-suc ) ℓ') where
  open TruthAlgebra 𝕋
  field
    S         : Type 
    isSetS    : isSet S
    _≈ˢ_ _∈ˢ_ : S  S  Ω

  infix 20 _≈ˢ_ _∈ˢ_

关于字段的两点。结构等词 ≈ˢ字段而非硬连到宿主的路径相等,这一点是承重的:在本书的力迫部分,等词与成员将是一对互递归定义的分级关系,是模型的真实内容,任何元层相等都供应不了。命题侧则毫无损失,届时装配本书实例的层级章径直以路径充当 ≈ˢ

再说说这里没有的东西:公理。这个 record 是裸结构;良基、外延等等属于第二部,在那里它们将成为模型的字段。本部构建的一切只消费上面三个投影,于是任何两个同构的结构,按宿主的结构等同原理,干脆就相等,整个开发沿之搬运。

命题侧

命题侧还有一种成员形式可用:把 x ∈ˢ y 的底层类型取出来。上标 标记这个 Type 值的变体;良基性的陈述与按成员归纳的证明都将对它量化。它住在 hPropStructure 里,即命题侧打开结构的方式:该模块公开再导出三个投影并添上 ∈ᵗ,一次 open 之后,章节径直写 y ∈ᵗ x,不见任何结构参数。

module hPropStructure {} (𝒮 : ZFStructure (hPropAlgebra )) where
  open ZFStructure 𝒮 public

  _∈ᵗ_ : S  S  Type 
  x ∈ᵗ y =  x ∈ˢ y 

  infix 20 _∈ᵗ_

传递类

载体上的类 M,若成员的成员仍在其中,称为传递。绝对性一章的诸定理消费的恰是这一前提,第四部的世界也由传递的阶段砌成;名字在此铸下,与它谈论的成员关系为邻。

Transitive :  {} (𝒮 : ZFStructure (hPropAlgebra ))
            (ZFStructure.S 𝒮  hProp )  Type 
Transitive 𝒮 M =  {x y}  y ∈ᵗ x  x ∈ᶜ M  y ∈ᶜ M
  where open hPropStructure 𝒮

子结构

读作「限制」:教科书里从全宇宙过渡到 $(A, \in \restriction A)$ 的那一步。给定命题值的类 M,限制结构 𝒮 ↾ M 以「元素配上属于 M 的证明」的对为载体,两个关系沿第一投影继承。值得品味的后果是:在 𝒮 ↾ M 上实例化整个框架,语法的常量域就自动只含 M 的成员。「参数只能来自这个类」不再是需要巡查的附加条件,而成为类型的形状;第四部正是经由这条通道构造可构造宇宙。

_↾_ :  {} (𝒮 : ZFStructure (hPropAlgebra ))
     (ZFStructure.S 𝒮  hProp )  ZFStructure (hPropAlgebra )
_↾_ {} 𝒮 M = record
  { S      = Σ[ x  S ] (x ∈ᶜ M)
  ; isSetS = isSetΣSndProp isSetS  x  (M x) .snd)
  ; _≈ˢ_   = λ a b  fst a ≈ˢ fst b
  ; _∈ˢ_   = λ a b  fst a ∈ˢ fst b }
  where open ZFStructure 𝒮

infixl 21 _↾_

限制结构的等词比较底层元素;由于隶属命题值的类无关乎证明,第一投影的相等可反射回对的相等,毫无损失。

↾-reflects :  {} {𝒮 : ZFStructure (hPropAlgebra )} {M : ZFStructure.S 𝒮  hProp }
             {a b : ZFStructure.S (𝒮  M)}
            fst a  fst b  a  b
↾-reflects {M = M} = Σ≡Prop  x  (M x) .snd)

小结

结构就是三个投影:载体、等词、成员,取值于真值代数,不带公理;传递类为后文各章反复消费的条件命名; 把结构裁剪到一个类而毫无损失 (↾-reflects)。一边是语法,一边是结构:下一章让它们相遇。