Satisfaction, internalized

那个实例。给定元语言的一条公式,以及诸环境所落之上的 L 的一个集合,满足关系那张表是 L 的元素,并且在那里由一条对象语言的公式定义。

funct 就是那两半的会合。存在性把前几章造出的对象递给那个图:槽作索引集、其上的表、载体作常元。唯一性取图所接受的任意一张表,把它的取值对着元语言递归造出的那个钉死。两半在此处都不做任何事;它们在本章开篇之前就已完成,而这一页只是施用它们的地方。

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

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

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

open import FOL.ZFStructure using ( module hPropStructure )
open import FOL.Syntax using ( Formula )
import FOL.Absoluteness
open import V.Hierarchy {} using ( 𝒮ᵥ )
open import V.Coding {} using ( pr )
open import L.Constructible {} using ( 𝒮ʟ; isL; isL-trans )
open import L.Coding.Model {} using ( prʟ-fst; domAt; domAt-intro; domAt-out )
open import L.Coding.Sat {} lem using ( Sat )
open import L.Coding.Table {} lem
  using ( keyʟ; slot; satTable; tree; ent; slot-ent; total; inSlot
        ; module Parts )
open import L.Coding.Slot {} lem using ( slotClosed )
open import L.Coding.Sound {} lem using ( soundness )
open import L.Coding.Unique {} lem using ( module Good )
open import L.Coding.Graph {} lem using ( satGraph; graph-in; graph-out )
open import L.Recursion {} lem using ( Recursion; mereFunct; module Of )

open import Cubical.Data.Sigma using ( Σ≡Prop )
import Cubical.HITs.PropositionalTruncation as PT
open PT using ( ∣_∣₁ )
open import Cubical.HITs.CumulativeHierarchy.Base using ( V; _∈_; setIsSet )

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

module AbsL = FOL.Absoluteness.Single 𝒮ᵥ isL isL-trans
open AbsL renaming ( _⊨ᵐ_ to _⊨_ )

那个实例

定义域是那个槽;图是上一章写下的那一个;而 functmereFunct 交付,因为「仅仅存在的唯一解」就是可缩解,而可缩性是命题。那是整个目标的第一个发现,作出于任何东西被造出之前,而此处正是它被花掉的地方。

module _ (B : S) {n : } (φ : Formula S n) where
  private
    C T : S
    C = slot B φ
    T = satTable B φ

    Ci Ti : Fin 5
    Ci = suc (suc zero)
    Ti = suc zero

    δ : (x y : S)  S ^ 5
    δ x y = B  T  C  y  x  []

    hdom : (x y : S)   δ x y  domAt Ti Ci 
    hdom x y = domAt-intro Ti Ci (δ x y)
       z   h  PT.rec (snd (fst z  fst C))
                 { (w , hw)  inSlot B φ (fst z) (fst w) hw }) h)
           ,  h  total B φ (fst z) h))

    entry :  {m} (ψ : Formula S m) (x : S)  fst x  fst (keyʟ ψ)
           ((z : V )   z  fst (tree B (ent B) ψ)    z  fst T )
            pr (fst x) (fst (Sat B ψ))  fst T 
    entry ψ x q incl =
      subst  w   pr w (fst (Sat B ψ))  fst T ) (sym q)
        (incl (pr (fst (keyʟ ψ)) (fst (Sat B ψ)))
          (subst  w   w  fst (tree B (ent B) ψ) )
            (prʟ-fst (keyʟ ψ) (Sat B ψ)) (Parts.self B (ent B) ψ)))

  satRec : Recursion
  Recursion.dom satRec = C
  Recursion.graph satRec = satGraph B
  Recursion.funct satRec x x∈ = mereFunct (satGraph B) x (PT.map
     { (m , ψ , (q , incl))  Sat B ψ
       , ( graph-in B x (Sat B ψ)
              C , (T , (B , (refl
             , ( slotClosed B φ (Sat B ψ  x  [])
             , ( hdom x (Sat B ψ)
             , ( entry ψ x q incl
             , soundness B φ (Sat B ψ  x  []) )))))) ∣₁
         ,  y' hy'  Σ≡Prop  v  snd (isL v))
             (PT.rec (setIsSet (fst y') (fst (Sat B ψ)))
                { (C' , (T' , (b , (eb , (hc , (hd , (ha , h12))))))) 
                 Good.pinned (b  T'  C'  y'  x  []) Ci Ti zero
                     hc hd h12 ψ x y' q
                     (domAt-out Ti Ci (b  T'  C'  y'  x  []) hd x y' ha) ha
                  cong  w  fst (Sat w ψ))
                     (Σ≡Prop  v  snd (isL v)) eb) })
               (graph-out B x y' hy'))) ) })
    (slot-ent B φ (fst x) x∈))

  module Table = Of satRec