Size

This is ported from the Midlands Graduate School 2019 lecture notes

 https://www.cs.bham.ac.uk/~mhe/HoTT-UF.in-Agda-Lecture-Notes/HoTT-UF-Agda.html
 https://github.com/martinescardo/HoTT-UF.Agda-Lecture-Notes


{-# OPTIONS --safe --without-K #-}

module MGS.Size where

open import MGS.Powerset                public
open import MGS.Universe-Lifting        public
open import MGS.Subsingleton-Truncation public

_has-size_ : 𝓤 ̇  (𝓥 : Universe)  𝓥   𝓤 ̇
X has-size 𝓥 = Σ Y  𝓥 ̇ , X  Y

propositional-resizing : (𝓤 𝓥 : Universe)  (𝓤  𝓥) ̇
propositional-resizing 𝓤 𝓥 = (P : 𝓤 ̇ )  is-subsingleton P  P has-size 𝓥

resize-up : (X : 𝓤 ̇ )  X has-size (𝓤  𝓥)
resize-up {𝓤} {𝓥} X = (Lift 𝓥 X , ≃-Lift X)

resize-up-subsingleton : propositional-resizing 𝓤 (𝓤  𝓥)
resize-up-subsingleton {𝓤} {𝓥} P i = resize-up {𝓤} {𝓥} P

resize : propositional-resizing 𝓤 𝓥
        (P : 𝓤 ̇ ) (i : is-subsingleton P)  𝓥 ̇

resize ρ P i = pr₁ (ρ P i)

resize-is-subsingleton : (ρ : propositional-resizing 𝓤 𝓥)
                         (P : 𝓤 ̇ ) (i : is-subsingleton P)
                        is-subsingleton (resize ρ P i)

resize-is-subsingleton ρ P i = equiv-to-subsingleton (≃-sym (pr₂ (ρ P i))) i

to-resize : (ρ : propositional-resizing 𝓤 𝓥)
            (P : 𝓤 ̇ ) (i : is-subsingleton P)
           P  resize ρ P i

to-resize ρ P i =  pr₂ (ρ P i) 

from-resize : (ρ : propositional-resizing 𝓤 𝓥)
              (P : 𝓤 ̇ ) (i : is-subsingleton P)
             resize ρ P i  P

from-resize ρ P i =  ≃-sym (pr₂ (ρ P i)) 

Propositional-resizing : 𝓤ω
Propositional-resizing = {𝓤 𝓥 : Universe}  propositional-resizing 𝓤 𝓥

EM-gives-PR : EM 𝓤  propositional-resizing 𝓤 𝓥
EM-gives-PR {𝓤} {𝓥} em P i = Q (em P i) , e
 where
   Q : P + ¬ P  𝓥 ̇
   Q (inl p) = Lift 𝓥 𝟙
   Q (inr n) = Lift 𝓥 𝟘

   j : (d : P + ¬ P)  is-subsingleton (Q d)
   j (inl p) = equiv-to-subsingleton (Lift-≃ 𝟙) 𝟙-is-subsingleton
   j (inr n) = equiv-to-subsingleton (Lift-≃ 𝟘) 𝟘-is-subsingleton

   f : (d : P + ¬ P)  P  Q d
   f (inl p) p' = lift 
   f (inr n) p  = !𝟘 (Lift 𝓥 𝟘) (n p)

   g : (d : P + ¬ P)  Q d  P
   g (inl p) q = p
   g (inr n) q = !𝟘 P (lower q)

   e : P  Q (em P i)
   e = logically-equivalent-subsingletons-are-equivalent
        P (Q (em P i)) i (j (em P i)) (f (em P i) , g (em P i))

has-size-is-subsingleton : Univalence
                          (X : 𝓤 ̇ ) (𝓥 :  Universe)
                          is-subsingleton (X has-size 𝓥)

has-size-is-subsingleton {𝓤} ua X 𝓥 = univalence→' (ua 𝓥) (ua (𝓤  𝓥)) X

PR-is-subsingleton : Univalence  is-subsingleton (propositional-resizing 𝓤 𝓥)
PR-is-subsingleton {𝓤} {𝓥} ua =
 Π-is-subsingleton (univalence-gives-global-dfunext ua)
   P  Π-is-subsingleton (univalence-gives-global-dfunext ua)
   i  has-size-is-subsingleton ua P 𝓥))

Impredicativity : (𝓤 𝓥 : Universe)  (𝓤  𝓥 ) ̇
Impredicativity 𝓤 𝓥 = (Ω 𝓤) has-size 𝓥

is-impredicative : (𝓤 : Universe)  𝓤  ̇
is-impredicative 𝓤 = Impredicativity 𝓤 𝓤

PR-gives-Impredicativity⁺ : global-propext
                           global-dfunext
                           propositional-resizing 𝓥 𝓤
                           propositional-resizing 𝓤 𝓥
                           Impredicativity 𝓤 (𝓥 )

PR-gives-Impredicativity⁺ {𝓥} {𝓤} pe fe ρ σ = γ
 where
  φ : Ω 𝓥  Ω 𝓤
  φ (Q , j) = resize ρ Q j , resize-is-subsingleton ρ Q j

  ψ : Ω 𝓤  Ω 𝓥
  ψ (P , i) = resize σ P i , resize-is-subsingleton σ P i

  η : (p : Ω 𝓤)  φ (ψ p)  p
  η (P , i) = Ω-ext fe pe a b
   where
    Q : 𝓥 ̇
    Q = resize σ P i

    j : is-subsingleton Q
    j = resize-is-subsingleton σ P i

    a : resize ρ Q j  P
    a = from-resize σ P i  from-resize ρ Q j

    b : P  resize ρ Q j
    b = to-resize ρ Q j  to-resize σ P i

  ε : (q : Ω 𝓥)  ψ (φ q)  q
  ε (Q , j) = Ω-ext fe pe a b
   where
    P : 𝓤 ̇
    P = resize ρ Q j

    i : is-subsingleton P
    i = resize-is-subsingleton ρ Q j

    a : resize σ P i  Q
    a = from-resize ρ Q j  from-resize σ P i

    b : Q  resize σ P i
    b = to-resize σ P i  to-resize ρ Q j

  γ : (Ω 𝓤) has-size (𝓥 )
  γ = Ω 𝓥 , invertibility-gives-≃ ψ (φ , η , ε)

PR-gives-impredicativity⁺ : global-propext
                           global-dfunext
                           propositional-resizing (𝓤 ) 𝓤
                           is-impredicative (𝓤 )

PR-gives-impredicativity⁺ pe fe = PR-gives-Impredicativity⁺
                                   pe fe  P i  resize-up P)

PR-gives-impredicativity₁ : global-propext
                           global-dfunext
                           propositional-resizing 𝓤 𝓤₀
                           Impredicativity 𝓤 𝓤₁

PR-gives-impredicativity₁ pe fe = PR-gives-Impredicativity⁺
                                   pe fe  P i  resize-up P)

Impredicativity-gives-PR : propext 𝓤
                          dfunext 𝓤 𝓤
                          Impredicativity 𝓤 𝓥
                          propositional-resizing 𝓤 𝓥

Impredicativity-gives-PR {𝓤} {𝓥} pe fe (O , e) P i = Q , ε
 where
  𝟙'' : 𝓤 ̇
  𝟙'' = Lift 𝓤 𝟙

  k : is-subsingleton 𝟙''
  k (lift ) (lift ) = refl (lift )

  down : Ω 𝓤  O
  down =  e 

  O-is-set : is-set O
  O-is-set = equiv-to-set (≃-sym e) (Ω-is-set fe pe)

  Q : 𝓥 ̇
  Q = down (𝟙'' , k)  down (P , i)

  j : is-subsingleton Q
  j = O-is-set (down (Lift 𝓤 𝟙 , k)) (down (P , i))

  φ : Q  P
  φ q = Id→fun
         (ap _holds (equivs-are-lc down (⌜⌝-is-equiv e) q))
         (lift )

  γ : P  Q
  γ p = ap down (to-subtype-=
                     _  being-subsingleton-is-subsingleton fe)
                    (pe k i  _  p)  _  lift )))

  ε : P  Q
  ε = logically-equivalent-subsingletons-are-equivalent P Q i j (γ , φ)

PR-gives-existence-of-truncations : global-dfunext
                                   Propositional-resizing
                                   subsingleton-truncations-exist

PR-gives-existence-of-truncations fe R =
 record
 {
   ∥_∥ =

    λ {𝓤} X  resize R
               (is-inhabited X)
               (inhabitation-is-subsingleton fe X) ;

   ∥∥-is-subsingleton =

    λ {𝓤} {X}  resize-is-subsingleton R
                 (is-inhabited X)
                 (inhabitation-is-subsingleton fe X) ;

   ∣_∣ =

    λ {𝓤} {X} x  to-resize R
                   (is-inhabited X)
                   (inhabitation-is-subsingleton fe X)
                   (inhabited-intro x) ;

   ∥∥-recursion =

    λ {𝓤} {𝓥} {X} {P} i u s  from-resize R P i
                                (inhabited-recursion
                                  (resize-is-subsingleton R P i)
                                  (to-resize R P i  u)
                                  (from-resize R
                                    (is-inhabited X)
                                    (inhabitation-is-subsingleton fe X) s))
 }

module powerset-union-existence
        (pt  : subsingleton-truncations-exist)
        (hfe : global-hfunext)
       where

 open basic-truncation-development pt hfe

 family-union : {X : 𝓤  𝓥 ̇ } {I : 𝓥 ̇ }  (I  𝓟 X)  𝓟 X
 family-union {𝓤} {𝓥} {X} {I} A = λ x  ( i  I , x  A i) , ∃-is-subsingleton

 𝓟𝓟 : 𝓤 ̇  𝓤 ⁺⁺ ̇
 𝓟𝓟 X = 𝓟 (𝓟 X)

 existence-of-unions : (𝓤 : Universe)  𝓤 ⁺⁺ ̇
 existence-of-unions 𝓤 =
  (X : 𝓤 ̇ ) (𝓐 : 𝓟𝓟 X)  Σ B  𝓟 X , ((x : X)  (x  B)  ( A  𝓟 X , (A  𝓐) × (x  A)))

 existence-of-unions₁ : (𝓤 :  Universe)  _ ̇
 existence-of-unions₁ 𝓤 =
  (X : 𝓤 ̇ )
  (𝓐 : (X  Ω _)  Ω _)
      Σ B  (X  Ω _) , ((x : X)  (x  B)  ( A  (X  Ω _) , (A  𝓐) × (x  A)))

 existence-of-unions₂ : (𝓤 :  Universe)  𝓤 ⁺⁺ ̇
 existence-of-unions₂ 𝓤 =
  (X : 𝓤 ̇ )
  (𝓐 : (X  Ω 𝓤)  Ω (𝓤 ))
      Σ B  (X  Ω 𝓤) , ((x : X)  (x  B)  ( A  (X  Ω 𝓤) , (A  𝓐) × (x  A)))

 existence-of-unions-agreement : existence-of-unions 𝓤  existence-of-unions₂ 𝓤
 existence-of-unions-agreement = refl _

 existence-of-unions-gives-PR : existence-of-unions 𝓤
                               propositional-resizing (𝓤 ) 𝓤

 existence-of-unions-gives-PR {𝓤} α = γ
  where
   γ : (P : 𝓤  ̇ )  (i : is-subsingleton P)  P has-size 𝓤
   γ P i = Q , e
    where
    𝟙ᵤ : 𝓤 ̇
    𝟙ᵤ = Lift 𝓤 𝟙

    ⋆ᵤ : 𝟙ᵤ
    ⋆ᵤ = lift 

    𝟙ᵤ-is-subsingleton : is-subsingleton 𝟙ᵤ
    𝟙ᵤ-is-subsingleton = equiv-to-subsingleton (Lift-≃ 𝟙) 𝟙-is-subsingleton

    𝓐 : 𝓟𝓟 𝟙ᵤ
    𝓐 = λ (A : 𝓟 𝟙ᵤ)  P , i

    B : 𝓟 𝟙ᵤ
    B = pr₁ (α 𝟙ᵤ 𝓐)

    φ : (x : 𝟙ᵤ)  (x  B)  ( A  𝓟 𝟙ᵤ , (A  𝓐) × (x  A))
    φ = pr₂ (α 𝟙ᵤ 𝓐)

    Q : 𝓤 ̇
    Q = ⋆ᵤ  B

    j : is-subsingleton Q
    j = ∈-is-subsingleton B ⋆ᵤ

    f : P  Q
    f p = b
     where
      a : Σ A  𝓟 𝟙ᵤ , (A  𝓐) × (⋆ᵤ  A)
      a =  (x : 𝟙ᵤ)  𝟙ᵤ , 𝟙ᵤ-is-subsingleton) , p , ⋆ᵤ

      b : ⋆ᵤ  B
      b = rl-implication (φ ⋆ᵤ)  a 

    g : Q  P
    g q = ∥∥-recursion i b a
     where
      a :  A  𝓟 𝟙ᵤ , (A  𝓐) × (⋆ᵤ  A)
      a = lr-implication (φ ⋆ᵤ) q

      b : (Σ A  𝓟 𝟙ᵤ , (A  𝓐) × (⋆ᵤ  A))  P
      b (A , m , _) = m

    e : P  Q
    e = logically-equivalent-subsingletons-are-equivalent P Q i j (f , g)

 PR-gives-existence-of-unions : propositional-resizing (𝓤 ) 𝓤
                               existence-of-unions 𝓤

 PR-gives-existence-of-unions {𝓤} ρ X 𝓐 = B ,  x  lr x , rl x)
  where
   β : X  𝓤  ̇
   β x =  A  𝓟 X , (A  𝓐) × (x  A)

   i : (x : X)  is-subsingleton (β x)
   i x = ∃-is-subsingleton

   B : 𝓟 X
   B x = (resize ρ (β x) (i x) , resize-is-subsingleton ρ (β x) (i x))

   lr : (x : X)  x  B   A  𝓟 X , (A  𝓐) × (x  A)
   lr x = from-resize ρ (β x) (i x)

   rl : (x : X)  ( A  𝓟 X , (A  𝓐) × (x  A))  x  B
   rl x = to-resize ρ (β x) (i x)

module basic-powerset-development
        (hfe : global-hfunext)
        (ρ   : Propositional-resizing)
       where

  pt : subsingleton-truncations-exist
  pt = PR-gives-existence-of-truncations (hfunext-gives-dfunext hfe) ρ

  open basic-truncation-development pt hfe
  open powerset-union-existence pt hfe

   : {X : 𝓤 ̇ }  𝓟𝓟 X  𝓟 X
   𝓐 = pr₁ (PR-gives-existence-of-unions ρ _ 𝓐)

  ⋃-property : {X : 𝓤 ̇ } (𝓐 : 𝓟𝓟 X)
              (x : X)  (x   𝓐)  ( A  𝓟 X , (A  𝓐) × (x  A))

  ⋃-property 𝓐 = pr₂ (PR-gives-existence-of-unions ρ _ 𝓐)

  intersections-exist :
    (X : 𝓤 ̇ )
    (𝓐 : 𝓟𝓟 X)
        Σ B  𝓟 X , ((x : X)  (x  B)  ((A : 𝓟 X)  A  𝓐  x  A))

  intersections-exist {𝓤} X 𝓐 = B ,  x  lr x , rl x)
   where
    β : X  𝓤  ̇
    β x = (A : 𝓟 X)  A  𝓐  x  A

    i : (x : X)  is-subsingleton (β x)
    i x = Π-is-subsingleton hunapply
            A  Π-is-subsingleton hunapply
            _  ∈-is-subsingleton A x))

    B : 𝓟 X
    B x = (resize ρ (β x) (i x) , resize-is-subsingleton ρ (β x) (i x))

    lr : (x : X)  x  B  (A : 𝓟 X)  A  𝓐  x  A
    lr x = from-resize ρ (β x) (i x)

    rl : (x : X)  ((A : 𝓟 X)  A  𝓐  x  A)  x  B
    rl x = to-resize ρ (β x) (i x)

   : {X : 𝓤 ̇ }  𝓟𝓟 X  𝓟 X
   {𝓤} {X} 𝓐 = pr₁ (intersections-exist X 𝓐)

  ⋂-property : {X : 𝓤 ̇ } (𝓐 : 𝓟𝓟 X)
              (x : X)  (x   𝓐)  ((A : 𝓟 X)  A  𝓐  x  A)

  ⋂-property {𝓤} {X} 𝓐 = pr₂ (intersections-exist X 𝓐)

   full : {X : 𝓤 ̇ }  𝓟 X

      = λ x  (Lift _ 𝟘 , equiv-to-subsingleton (Lift-≃ 𝟘) 𝟘-is-subsingleton)

  full = λ x  (Lift _ 𝟙 , equiv-to-subsingleton (Lift-≃ 𝟙) 𝟙-is-subsingleton)

  ∅-property : (X : 𝓤 ̇ )  (x : X)  ¬ (x  )
  ∅-property X x = lower

  full-property : (X : 𝓤 ̇ )  (x : X)  x  full
  full-property X x = lift 

  _∩_ _∪_ : {X : 𝓤 ̇ }  𝓟 X  𝓟 X  𝓟 X

  (A  B) = λ x  ((x  A)  (x  B)) , ∨-is-subsingleton

  (A  B) = λ x  ((x  A) × (x  B)) ,
                  ×-is-subsingleton
                    (∈-is-subsingleton A x)
                    (∈-is-subsingleton B x)

  ∪-property : {X : 𝓤 ̇ } (A B : 𝓟 X)
              (x : X)  x  (A  B)  (x  A)  (x  B)

  ∪-property {𝓤} {X} A B x = id , id

  ∩-property : {X : 𝓤 ̇ } (A B : 𝓟 X)
              (x : X)  x  (A  B)  (x  A) × (x  B)

  ∩-property {𝓤} {X} A B x = id , id

  infix  20 _∩_
  infix  20 _∪_

  Top : (𝓤 : Universe)  𝓤 ⁺⁺ ̇
  Top 𝓤 = Σ X  𝓤 ̇ , is-set X
                     × (Σ 𝓞  𝓟𝓟 X , full  𝓞
                                   × ((U V : 𝓟 X)  U  𝓞  V  𝓞  (U  V)  𝓞)
                                   × ((𝓖 : 𝓟𝓟 X)  𝓖  𝓞   𝓖  𝓞))