Skip to content

MGS.Yoneda

Martin Escardo 1st May 2020.

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.Yoneda where

open import MGS.Unique-Existence public
open import MGS.Embeddings public

𝓨 : {X : 𝓤 ̇ }  X  (X  𝓤 ̇ )
𝓨 {𝓤} {X} = Id X

𝑌 : (X : 𝓤 ̇ )  X  (X  𝓤 ̇ )
𝑌 {𝓤} X = 𝓨 {𝓤} {X}

transport-lemma : {X : 𝓤 ̇ } (A : X  𝓥 ̇ ) (x : X)
                 (τ : Nat (𝓨 x) A)
                 (y : X) (p : x  y)  τ y p  transport A p (τ x (refl x))

transport-lemma A x τ x (refl x) = refl (τ x (refl x))

𝓔 : {X : 𝓤 ̇ } (A : X  𝓥 ̇ ) (x : X)  Nat (𝓨 x) A  A x
𝓔 A x τ = τ x (refl x)

𝓝 : {X : 𝓤 ̇ } (A : X  𝓥 ̇ ) (x : X)  A x  Nat (𝓨 x) A
𝓝 A x a y p = transport A p a

yoneda-η : dfunext 𝓤 (𝓤  𝓥)  dfunext 𝓤 𝓥
          {X : 𝓤 ̇ } (A : X  𝓥 ̇ ) (x : X)
          𝓝 A x  𝓔 A x  id

yoneda-η fe fe' A x = γ
 where
  γ : (τ : Nat (𝓨 x) A)   y p  transport A p (τ x (refl x)))  τ
  γ τ = fe  y  fe'  p  (transport-lemma A x τ y p)⁻¹))

yoneda-ε : {X : 𝓤 ̇ } (A : X  𝓥 ̇ ) (x : X)
          𝓔 A x  𝓝 A x  id

yoneda-ε A x = γ
 where
  γ : (a : A x)  transport A (refl x) a  a
  γ = refl

is-fiberwise-equiv : {X : 𝓤 ̇ } {A : X  𝓥 ̇ } {B : X  𝓦 ̇ }  Nat A B  𝓤  𝓥  𝓦 ̇
is-fiberwise-equiv τ =  x  is-equiv (τ x)

𝓔-is-equiv : dfunext 𝓤 (𝓤  𝓥)  dfunext 𝓤 𝓥
            {X : 𝓤 ̇ } (A : X  𝓥 ̇ )
            is-fiberwise-equiv (𝓔 A)

𝓔-is-equiv fe fe' A x = invertibles-are-equivs (𝓔 A x )
                         (𝓝 A x , yoneda-η fe fe' A x , yoneda-ε A x)

𝓝-is-equiv : dfunext 𝓤 (𝓤  𝓥)  dfunext 𝓤 𝓥
            {X : 𝓤 ̇ } (A : X  𝓥 ̇ )
            is-fiberwise-equiv (𝓝 A)

𝓝-is-equiv fe fe' A x = invertibles-are-equivs (𝓝 A x)
                         (𝓔 A x , yoneda-ε A x , yoneda-η fe fe' A x)

Yoneda-Lemma : dfunext 𝓤 (𝓤  𝓥)  dfunext 𝓤 𝓥
              {X : 𝓤 ̇ } (A : X  𝓥 ̇ ) (x : X)
              Nat (𝓨 x) A  A x

Yoneda-Lemma fe fe' A x = 𝓔 A x , 𝓔-is-equiv fe fe' A x

retract-universal-lemma : {X : 𝓤 ̇ } (A : X  𝓥 ̇ ) (x : X)
                         ((y : X)  A y  (x  y))
                         ∃! A

retract-universal-lemma A x ρ = i
 where
  σ : Σ A  singleton-type' x
  σ = Σ-retract ρ

  i : ∃! A
  i = retract-of-singleton σ (singleton-types'-are-singletons (domain A) x)

fiberwise-equiv-universal : {X : 𝓤 ̇ } (A : X  𝓥 ̇ )
                            (x : X) (τ : Nat (𝓨 x) A)
                           is-fiberwise-equiv τ
                           ∃! A

fiberwise-equiv-universal A x τ e = retract-universal-lemma A x ρ
 where
  ρ :  y  A y  (x  y)
  ρ y = ≃-gives-▷ ((τ y) , e y)

universal-fiberwise-equiv : {X : 𝓤 ̇ } (A : X  𝓥 ̇ )
                           ∃! A
                           (x : X) (τ : Nat (𝓨 x) A)  is-fiberwise-equiv τ

universal-fiberwise-equiv {𝓤} {𝓥} {X} A u x τ = γ
 where
  g : singleton-type' x  Σ A
  g = NatΣ τ

  e : is-equiv g
  e = maps-of-singletons-are-equivs g (singleton-types'-are-singletons X x) u

  γ : is-fiberwise-equiv τ
  γ = NatΣ-equiv-gives-fiberwise-equiv τ e

hfunext→ : hfunext 𝓤 𝓥
          ((X : 𝓤 ̇ ) (A : X  𝓥 ̇ ) (f : Π A)  ∃! g  Π A , f  g)

hfunext→ hfe X A f = fiberwise-equiv-universal (f ∼_) f (happly f) (hfe f)

→hfunext : ((X : 𝓤 ̇ ) (A : X  𝓥 ̇ ) (f : Π A)  ∃! g  Π A , f  g)
          hfunext 𝓤 𝓥

→hfunext φ {X} {A} f = universal-fiberwise-equiv (f ∼_) (φ X A f) f (happly f)

fiberwise-equiv-criterion : {X : 𝓤 ̇ } (A : X  𝓥 ̇ )
                            (x : X)
                           ((y : X)  A y  (x  y))
                           (τ : Nat (𝓨 x) A)  is-fiberwise-equiv τ

fiberwise-equiv-criterion A x ρ τ = universal-fiberwise-equiv A
                                     (retract-universal-lemma A x ρ) x τ

fiberwise-equiv-criterion' : {X : 𝓤 ̇ } (A : X  𝓥 ̇ )
                            (x : X)
                           ((y : X)  (x  y)  A y)
                           (τ : Nat (𝓨 x) A)  is-fiberwise-equiv τ

fiberwise-equiv-criterion' A x e = fiberwise-equiv-criterion A x
                                     y  ≃-gives-▷ (e y))

_≃̇_ : {X : 𝓤 ̇ }  (X  𝓥 ̇ )  (X  𝓦 ̇ )  𝓤  𝓥  𝓦 ̇
A ≃̇ B =  x  A x  B x

is-representable : {X : 𝓤 ̇ }  (X  𝓥 ̇ )  𝓤  𝓥 ̇
is-representable A = Σ x  domain A , 𝓨 x ≃̇ A

representable-universal : {X : 𝓤 ̇ } (A : X  𝓥 ̇ )
                         is-representable A
                         ∃! A

representable-universal A (x , e) = retract-universal-lemma A x
                                      x  ≃-gives-▷ (e x))

universal-representable : {X : 𝓤 ̇ } {A : X  𝓥 ̇ }
                         ∃! A
                         is-representable A

universal-representable {𝓤} {𝓥} {X} {A} ((x , a) , p) = x , φ
 where
  e : is-fiberwise-equiv (𝓝 A x a)
  e = universal-fiberwise-equiv A ((x , a) , p) x (𝓝 A x a)

  φ : (y : X)  (x  y)  A y
  φ y = (𝓝 A x a y , e y)

fiberwise-retractions-are-equivs : {X : 𝓤 ̇ } (A : X  𝓥 ̇ ) (x : X)
                                  (τ : Nat (𝓨 x) A)
                                  ((y : X)  has-section (τ y))
                                  is-fiberwise-equiv τ

fiberwise-retractions-are-equivs {𝓤} {𝓥} {X} A x τ s = γ
 where
  ρ : (y : X)  A y  (x  y)
  ρ y = τ y , s y

  i : ∃! A
  i = retract-universal-lemma A x ρ

  γ : is-fiberwise-equiv τ
  γ = universal-fiberwise-equiv A i x τ

fiberwise-◁-gives-≃ : (X : 𝓤 ̇ ) (A : X  𝓥 ̇ ) (x : X)
                     ((y : X)  A y  (x  y))
                     ((y : X)  A y  (x  y))

fiberwise-◁-gives-≃ X A x ρ = γ
 where
  f : (y : X)  (x  y)  A y
  f y = retraction (ρ y)

  e : is-fiberwise-equiv f
  e = fiberwise-retractions-are-equivs A x f  y  retraction-has-section (ρ y))

  γ : (y : X)  A y  (x  y)
  γ y = ≃-sym (f y , e y)

embedding-criterion' : {X : 𝓤 ̇ } {Y : 𝓥 ̇ } (f : X  Y)
                      ((x x' : X)  (f x  f x')  (x  x'))
                      is-embedding f

embedding-criterion' f ρ = embedding-criterion f
                             x  fiberwise-◁-gives-≃ (domain f)
                                     -  f x  f -) x (ρ x))

being-fiberwise-equiv-is-subsingleton : global-dfunext
                                       {X : 𝓤 ̇ } {A : X  𝓥 ̇ } {B : X  𝓦 ̇ }
                                       (τ : Nat A B)
                                       is-subsingleton (is-fiberwise-equiv τ)

being-fiberwise-equiv-is-subsingleton fe τ =
 Π-is-subsingleton fe  y  being-equiv-is-subsingleton fe fe (τ y))

being-representable-is-subsingleton : global-dfunext
                                     {X : 𝓤 ̇ } (A : X  𝓥 ̇ )
                                     is-subsingleton (is-representable A)

being-representable-is-subsingleton fe {X} A r₀ r₁ = γ
 where
  u : ∃! A
  u = representable-universal A r₀

  i : (x : X) (τ : Nat (𝓨 x) A)  is-singleton (is-fiberwise-equiv τ)
  i x τ = pointed-subsingletons-are-singletons
           (is-fiberwise-equiv τ)
           (universal-fiberwise-equiv A u x τ)
           (being-fiberwise-equiv-is-subsingleton fe τ)

  ε : (x : X)  (𝓨 x ≃̇ A)  A x
  ε x = ((y : X)  𝓨 x y  A y)                       ≃⟨ ΠΣ-distr-≃ 
        (Σ τ  Nat (𝓨 x) A , is-fiberwise-equiv τ)    ≃⟨ pr₁-≃ (i x) 
        Nat (𝓨 x) A                                   ≃⟨ Yoneda-Lemma fe fe A x 
        A x                                           

  δ : is-representable A  Σ A
  δ = Σ-cong ε

  v : is-singleton (is-representable A)
  v = equiv-to-singleton δ u

  γ : r₀  r₁
  γ = singletons-are-subsingletons (is-representable A) v r₀ r₁

𝓨-is-embedding : Univalence  (X : 𝓤 ̇ )  is-embedding (𝑌 X)
𝓨-is-embedding {𝓤} ua X A = γ
 where
  hfe : global-hfunext
  hfe = univalence-gives-global-hfunext ua

  dfe : global-dfunext
  dfe = univalence-gives-global-dfunext ua

  p = λ x  (𝓨 x  A)                 ≃⟨ i  x 
            ((y : X)  𝓨 x y  A y)   ≃⟨ ii x 
            ((y : X)  𝓨 x y  A y)   
    where
     i  = λ x  (happly (𝓨 x) A , hfe (𝓨 x) A)
     ii = λ x  Π-cong dfe dfe
                  y  univalence-≃ (ua 𝓤)
                         (𝓨 x y) (A y))

  e : fiber 𝓨 A  is-representable A
  e = Σ-cong p

  γ : is-subsingleton (fiber 𝓨 A)
  γ = equiv-to-subsingleton e (being-representable-is-subsingleton dfe A)