Skip to content

Lifting.UnivalentWildCategory

Martin Escardo December 2018.

The lifting of a type forms a univalent wild-โˆž-category with hom types
l โŠ‘ m, which is a partial order if the type is a set (wild because we
are not giving coherence data).



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

open import MLTT.Spartan

module Lifting.UnivalentWildCategory
        (๐“ฃ : Universe)
        {๐“ค : Universe}
        (X : ๐“ค ฬ‡ )
       where

open import Lifting.IdentityViaSIP ๐“ฃ
open import Lifting.Construction ๐“ฃ
open import UF.Base
open import UF.Equiv
open import UF.Equiv-FunExt
open import UF.EquivalenceExamples
open import UF.FunExt
open import UF.Lower-FunExt
open import UF.Sets
open import UF.Subsingletons
open import UF.Subsingletons-FunExt
open import UF.UA-FunExt
open import UF.Univalence


We define l โŠ‘ m to mean that if l is defined then so is m with the
same value. Here the suffix "-pr" standands for preservation (and also
for projection!).


_โŠ‘_ : ๐“› X โ†’ ๐“› X โ†’ ๐“ค โŠ” ๐“ฃ ฬ‡
l โŠ‘ m = ฮฃ f ๊ž‰ (is-defined l โ†’ is-defined m) , value l โˆผ value m โˆ˜ f

def-pr : (l m : ๐“› X) โ†’ l โŠ‘ m โ†’ (is-defined l โ†’ is-defined m)
def-pr l m = prโ‚

val-pr : (l m : ๐“› X) (ฮฑ : l โŠ‘ m) โ†’ value l โˆผ value m โˆ˜ (def-pr l m ฮฑ)
val-pr l m = prโ‚‚

dom : {l m : ๐“› X} โ†’ l โŠ‘ m โ†’ ๐“› X
dom {l} {m} ฮฑ = l

cod : {l m : ๐“› X} โ†’ l โŠ‘ m โ†’ ๐“› X
cod {l} {m} ฮฑ = m

๐“›-id : (l : ๐“› X) โ†’ l โŠ‘ l
๐“›-id l = id , (ฮป x โ†’ refl)

๐“›-Id-to-arrow : (l m : ๐“› X) โ†’ l ๏ผ m โ†’ l โŠ‘ m
๐“›-Id-to-arrow l l refl = ๐“›-id l

๐“›-comp : (l m n : ๐“› X) โ†’ l โŠ‘ m โ†’ m โŠ‘ n โ†’ l โŠ‘ n
๐“›-comp l m n (f , ฮด) (g , ฮต) = g โˆ˜ f , (ฮป p โ†’ ฮด p โˆ™ ฮต (f p))

๐“›-comp-unit-right : (l m : ๐“› X) (ฮฑ : l โŠ‘ m) โ†’ ๐“›-comp l m m ฮฑ (๐“›-id m) ๏ผ ฮฑ
๐“›-comp-unit-right l m ฮฑ = refl

๐“›-comp-unit-left : funext ๐“ฃ ๐“ค
                 โ†’ (l m : ๐“› X) (ฮฑ : l โŠ‘ m)
                 โ†’ ๐“›-comp l l m (๐“›-id l) ฮฑ ๏ผ ฮฑ
๐“›-comp-unit-left fe l m ฮฑ = to-ฮฃ-๏ผ (refl , dfunext fe ฮป p โ†’ refl-left-neutral)

๐“›-comp-assoc : funext ๐“ฃ ๐“ค
             โ†’ {l m n o : ๐“› X} (ฮฑ : l โŠ‘ m) (ฮฒ : m โŠ‘ n) (ฮณ : n โŠ‘ o)
             โ†’ ๐“›-comp l n o (๐“›-comp l m n ฮฑ ฮฒ) ฮณ
             ๏ผ ๐“›-comp l m o ฮฑ (๐“›-comp m n o ฮฒ ฮณ)
๐“›-comp-assoc fe (f , ฮด) (g , ฮต) (h , ฮถ) =
 to-ฮฃ-๏ผ (refl , dfunext fe (ฮป p โ†’ โˆ™assoc (ฮด p) (ฮต (f p)) (ฮถ (g (f p)))))


Thus, the associativity law in this wild-โˆž-category is that of
function composition in the first component (where it hence holds
definitionally) and that of path composition in the first
component. (Hence this wild-โˆž-category should qualify as an
โˆž-category, with all coherence laws satisfied automatically, except
that there is at present no definition of โˆž-category in univalent type
theory.)

If X is a set, then _โŠ‘_ is a partial order:


โŠ‘-prop-valued : funext ๐“ฃ ๐“ฃ
              โ†’ funext ๐“ฃ ๐“ค
              โ†’ is-set X
              โ†’ (l m : ๐“› X) โ†’ is-prop (l โŠ‘ m)
โŠ‘-prop-valued fe fe' s l m (f , ฮด) (g , ฮต) =
 to-ฮฃ-๏ผ (dfunext fe (ฮป p โ†’ being-defined-is-prop m (f p) (g p)) ,
         ฮ -is-prop fe' (ฮป d โ†’ s) _ ฮต)


TODO. This order is directed complete (easy). We should also do least
fixed points of continuous maps.

This TODO was implemented by Tom de Jong in the file
DomainTheory.Lifting.LiftingSet.lagda.

Next we show that for any l : ๐“› X,

 fiber ฮท l โ‰ƒ is-defined l,

using the fact that the fiber is a proposition by virtue of ฮท being an
embedding.


โŠ‘-anti-lemma : propext ๐“ฃ
             โ†’ funext ๐“ฃ ๐“ฃ
             โ†’ funext ๐“ฃ ๐“ค
             โ†’ {l m : ๐“› X} โ†’ l โŠ‘ m โ†’ (is-defined m โ†’ is-defined l) โ†’ l ๏ผ m
โŠ‘-anti-lemma pe fe fe' {Q , ฯˆ , j} {P , ฯ† , i} (f , ฮด) g = e
 where
  ฮต : (p : P) โ†’ ฯˆ (g p) ๏ผ ฯ† p
  ฮต p = ฮด (g p) โˆ™ ap ฯ† (i (f (g p)) p)

  a : Q ๏ผ P
  a = pe j i f g

  b : Idtofun (a โปยน) ๏ผ g
  b = dfunext fe (ฮป p โ†’ j (Idtofun (a โปยน) p) (g p))

  c : transport (ฮป - โ†’ (- โ†’ X) ร— is-prop -) a (ฯˆ , j)
    ๏ผ[ (P โ†’ X) ร— is-prop P ]
     (transport (ฮป - โ†’ - โ†’ X) a ฯˆ , transport is-prop a j)
  c = transport-ร— (ฮป - โ†’ - โ†’ X) is-prop a

  d = prโ‚ (transport (ฮป - โ†’ (- โ†’ X) ร— is-prop -) a (ฯˆ , j)) ๏ผโŸจ I โŸฉ
      transport (ฮป - โ†’ - โ†’ X) a ฯˆ                           ๏ผโŸจ II โŸฉ
      ฯˆ โˆ˜ Idtofun (a โปยน)                                    ๏ผโŸจ III โŸฉ
      ฯˆ โˆ˜ g                                                 ๏ผโŸจ IV โŸฉ
      ฯ†                                                     โˆŽ
       where
        I   = ap prโ‚ c
        II  = transport-is-pre-comp a ฯˆ
        III = ap (ฮป - โ†’ ฯˆ โˆ˜ -) b
        IV  = dfunext fe' ฮต

  e : Q , ฯˆ , j ๏ผ P , ฯ† , i
  e = to-ฮฃ-๏ผ (a , to-ร—-๏ผ d (being-prop-is-prop fe _ i))

โŠ‘-anti : propext ๐“ฃ
       โ†’ funext ๐“ฃ ๐“ฃ
       โ†’ funext ๐“ฃ ๐“ค
       โ†’ {l m : ๐“› X} โ†’ (l โŠ‘ m) ร— (m โŠ‘ l) โ†’ l ๏ผ m
โŠ‘-anti pe fe fe' ((f , ฮด) , (g , ฮต)) = โŠ‘-anti-lemma pe fe fe' (f , ฮด) g


We can now establish the promised fact:


open import Lifting.EmbeddingDirectly ๐“ฃ

ฮท-fiber-same-as-is-defined : propext ๐“ฃ
                           โ†’ funext ๐“ฃ ๐“ฃ
                           โ†’ funext ๐“ฃ ๐“ค
                           โ†’ funext ๐“ค (๐“ฃ โบ โŠ” ๐“ค)
                           โ†’ (l : ๐“› X) โ†’ (ฮฃ x ๊ž‰ X , ฮท x ๏ผ l) โ‰ƒ is-defined l
ฮท-fiber-same-as-is-defined pe fe fe' fe'' l = qinveq (f l) (g l , gf , fg)
 where
  f : (l : ๐“› X) โ†’ fiber ฮท l โ†’ is-defined l
  f (๐Ÿ™ , .(ฮป _ โ†’ x) , ๐Ÿ™-is-prop) (x , refl) = โ‹†

  g : (l : ๐“› X) โ†’ is-defined l โ†’ fiber ฮท l
  g (P , ฯ† , i) p = ฯ† p , โŠ‘-anti pe fe fe' (a , b)
   where
    a : ฮท (ฯ† p) โŠ‘ (P , ฯ† , i)
    a = (ฮป _ โ†’ p) , (ฮป _ โ†’ refl)

    b : (P , ฯ† , i) โŠ‘ ฮท (ฯ† p)
    b = (ฮป _ โ†’ โ‹†) , (ฮป q โ†’ ap ฯ† (i q p))

  fg : (d : is-defined l) โ†’ f l (g l d) ๏ผ d
  fg d = being-defined-is-prop l (f l (g l d)) d

  gf : (z : fiber ฮท l) โ†’ g l (f l z) ๏ผ z
  gf z = ฮท-is-embedding pe fe fe' fe'' l (g l (f l z)) z


They can't be equal, in the absence of cumulativity (and propositional
resizing), as the lhs lives in a universe higher than the rhs, and
equality is well-typed only for elements of the same type (here of the
same universe). This can be seen by adding type annotations to the
formulation of the above equivalence:


private
 ฮท-fiber-same-as-is-defined' : propext ๐“ฃ
                             โ†’ funext ๐“ฃ ๐“ฃ
                             โ†’ funext ๐“ฃ ๐“ค
                             โ†’ funext ๐“ค (๐“ฃ โบ โŠ” ๐“ค)
                             โ†’ (l : ๐“› X) โ†’ (fiber ฮท l    โˆถ ๐“ฃ โบ โŠ” ๐“ค ฬ‡ )
                                         โ‰ƒ (is-defined l โˆถ ๐“ฃ ฬ‡ )
 ฮท-fiber-same-as-is-defined' = ฮท-fiber-same-as-is-defined


For no choice of universes ๐“ค and ๐“ฃ can we have ๐“ฃ โบ โŠ” ๐“ค to coincide
with ๐“ฃ. However, for some dominances other than is-prop, it is possible to
have the equality between the fiber of l and the definedness of l.

The following simplified proof of โŠ‘-anti uses the SIP via the
construction of _โ‹ยท_ in another module:


โŠ‘-anti-sip : is-univalent ๐“ฃ
           โ†’ funext ๐“ฃ ๐“ค
           โ†’ {l m : ๐“› X} โ†’ (l โŠ‘ m) ร— (m โŠ‘ l) โ†’ l ๏ผ m
โŠ‘-anti-sip ua fe {Q , ฯˆ , j} {P , ฯ† , i} ((f , ฮด) , (g , ฮต)) =
 โŒœ ๐“›-Idยท ua fe (Q , ฯˆ , j) (P , ฯ† , i) โŒโปยน ฮณ
 where
  e : Q โ‰ƒ P
  e = f , ((g , (ฮป p โ†’ i (f (g p)) p)) , (g , (ฮป q โ†’ j (g (f q)) q)))

  ฮณ : (Q , ฯˆ , j) โ‹ยท (P , ฯ† , i)
  ฮณ = e , ฮด


Could the map (anti l m) be an equivalence? No. We instead have an
equivalence (l โŠ‘ m) ร— (m โŠ‘ l) โ†’ (l ๏ผ m) ร— (l ๏ผ m), reflecting the
fact that there are two candidate proofs for the equality.


to-โ‹ยท : (l m : ๐“› X) โ†’ (l โŠ‘ m) ร— (is-defined m โ†’ is-defined l) โ†’ (l โ‹ยท m)
to-โ‹ยท (Q , ฯˆ , j) (P , ฯ† , i) ((f , ฮด) , g) =
  (f , ((g , (ฮป p โ†’ i (f (g p)) p)) , (g , (ฮป q โ†’ j (g (f q)) q)))) , ฮด

from-โ‹ยท : (l m : ๐“› X) โ†’ (l โ‹ยท m) โ†’ (l โŠ‘ m) ร— (is-defined m โ†’ is-defined l)
from-โ‹ยท l m (f , g) = (โŒœ f โŒ , g) , โŒœ f โŒโปยน

from-to-โ‹ยท : (l m : ๐“› X) โ†’  from-โ‹ยท l m โˆ˜ to-โ‹ยท l m โˆผ id
from-to-โ‹ยท l m e = refl

to-from : funext ๐“ฃ ๐“ฃ โ†’ (l m : ๐“› X) โ†’ to-โ‹ยท l m โˆ˜ from-โ‹ยท l m โˆผ id
to-from fe l m ๐•—@((f , ฮด) , g) = b
 where
  ฮด' : is-equiv f
  ฮด' = โŒœ is-defined-โ‹ยท l m (to-โ‹ยท l m (from-โ‹ยท l m ๐•—)) โŒ-is-equiv

  a : ฮด' ๏ผ ฮด
  a = being-equiv-is-prop'' fe f ฮด' ฮด

  b : (f , ฮด') , g ๏ผ (f , ฮด) , g
  b = ap (ฮป - โ†’ (f , -) , g) a

โŠ‘-anti-equiv-lemma'' : funext ๐“ฃ ๐“ฃ โ†’ (l m : ๐“› X) โ†’ is-equiv (to-โ‹ยท l m)
โŠ‘-anti-equiv-lemma'' fe l m = qinvs-are-equivs
                               (to-โ‹ยท l m)
                               (from-โ‹ยท l m , from-to-โ‹ยท l m , to-from fe l m)

โŠ‘-anti-equiv-lemma' : funext ๐“ฃ ๐“ฃ
                   โ†’ (l m : ๐“› X)
                   โ†’ (l โŠ‘ m) ร— (is-defined m โ†’ is-defined l) โ‰ƒ (l โ‹ยท m)
โŠ‘-anti-equiv-lemma' fe l m = to-โ‹ยท l m , โŠ‘-anti-equiv-lemma'' fe l m

โŠ‘-anti-equiv-lemma : is-univalent ๐“ฃ
                   โ†’ funext ๐“ฃ ๐“ค
                   โ†’ (l m : ๐“› X)
                   โ†’ (l โŠ‘ m) ร— (is-defined m โ†’ is-defined l) โ‰ƒ (l ๏ผ m)
โŠ‘-anti-equiv-lemma ua fe l m =
  (โŠ‘-anti-equiv-lemma' (univalence-gives-funext ua) l m)
  โ— (โ‰ƒ-sym (๐“›-Idยท ua fe l m))

โŠ‘-anti-equiv : is-univalent ๐“ฃ
             โ†’ funext ๐“ฃ ๐“ค
             โ†’ (l m : ๐“› X)
             โ†’ (l โŠ‘ m) ร— (m โŠ‘ l) โ‰ƒ (l ๏ผ m) ร— (m ๏ผ l)
โŠ‘-anti-equiv ua fe l m = ฮณ โ— (ร—-cong (โŠ‘-anti-equiv-lemma ua fe l m)
                                     (โŠ‘-anti-equiv-lemma ua fe m l))
 where
  A = (l โŠ‘ m) ร— (m โŠ‘ l)

  B = ((l โŠ‘ m) ร— (is-defined m โ†’ is-defined l))
    ร— ((m โŠ‘ l) ร— (is-defined l โ†’ is-defined m))

  ฮณ : A โ‰ƒ B
  ฮณ = qinveq u (v , vu , uv)
    where
     u : A โ†’ B
     u ((f , ฮด) , (g , ฮต)) = ((f , ฮด) , g) , ((g , ฮต) , f)

     v : B โ†’ A
     v (((f , ฮด) , h) , ((g , ฮต) , k)) = (f , ฮด) , (g , ฮต)

     vu : (a : A) โ†’ v (u a) ๏ผ a
     vu a = refl

     uv : (b : B) โ†’ u (v b) ๏ผ b
     uv (((f , ฮด) , h) , ((g , ฮต) , k)) = t
      where
       r : g ๏ผ h
       r = dfunext
            (univalence-gives-funext ua)
            (ฮป p โ†’ being-defined-is-prop l (g p) (h p))
       s : f ๏ผ k
       s = dfunext
            (univalence-gives-funext ua)
            (ฮป p โ†’ being-defined-is-prop m (f p) (k p))

       t : ((f , ฮด) , g) , (g , ฮต) , f ๏ผ ((f , ฮด) , h) , (g , ฮต) , k
       t = apโ‚‚ (ฮป -โ‚€ -โ‚ โ†’ ((f , ฮด) , -โ‚€) , (g , ฮต) , -โ‚) r s


Next we show that (l โŠ‘ m) โ‰ƒ (is-defined l โ†’ l ๏ผ m), so that elements
of l โŠ‘ m can be seen as partial elements of the identity type l ๏ผ m.

We begin with the following auxiliary construction, which shows that
the type l โŠ‘ m is modal for the open modality induced by the
proposition "is-defined l" (and gave me a headache):


โŠ‘-open : funext ๐“ฃ ๐“ฃ
       โ†’ funext ๐“ฃ (๐“ฃ โŠ” ๐“ค)
       โ†’ (l m : ๐“› X) โ†’ (l โŠ‘ m) โ‰ƒ (is-defined l โ†’ l โŠ‘ m)
โŠ‘-open fe fe'' (Q , ฯˆ , j) (P , ฯ† , i) = qinveq ฯ€ (ฯ , ฯฯ€ , ฯ€ฯ)
 where
  l = (Q , ฯˆ , j)

  m = (P , ฯ† , i)

  ฯ€ : l โŠ‘ m โ†’ (is-defined l โ†’ l โŠ‘ m)
  ฯ€ ฮฑ d = ฮฑ

  ฯ : (is-defined l โ†’ l โŠ‘ m) โ†’ l โŠ‘ m
  ฯ h = (ฮป d โ†’ def-pr l m (h d) d) , (ฮป d โ†’ val-pr l m (h d) d)

  ฯฯ€ : ฯ โˆ˜ ฯ€ โˆผ id
  ฯฯ€ ฮฑ = refl

  ฯ-lemma : (h : is-defined l โ†’ l โŠ‘ m) (q : is-defined l) โ†’ ฯ h ๏ผ h q
  ฯ-lemma h q = ฮณ
   where
    remark : h q ๏ผ def-pr l m (h q) , val-pr l m (h q)
    remark = refl

    k : (d : Q) โ†’ def-pr l m (h d) d ๏ผ def-pr l m (h q) d
    k d = ap (ฮป - โ†’ def-pr l m (h -) d) (j d q)

    a : (ฮป d โ†’ def-pr l m (h d) d) ๏ผ def-pr l m (h q)
    a = dfunext fe k

    u : (d : Q) {f g : Q โ†’ P} (k : f โˆผ g)
      โ†’ ap (ฮป (- : Q โ†’ P) โ†’ ฯ† (- d)) (dfunext fe k) ๏ผ ap ฯ† (k d)
    u d {f} {g} k = ap-funext f g ฯ† k fe d

    v : (d : Q) โ†’ val-pr l m (h d) d โˆ™ ap (ฮป - โ†’ ฯ† (- d)) a
                ๏ผ val-pr l m (h q) d
    v d =
     val-pr l m (h d) d โˆ™ ap (ฮป - โ†’ ฯ† (- d)) a                         ๏ผโŸจ I โŸฉ
     val-pr l m (h d) d โˆ™ ap ฯ† (ap (ฮป - โ†’ def-pr l m (h -) d) (j d q)) ๏ผโŸจ II โŸฉ
     val-pr l m (h d) d โˆ™ ap (ฮป - โ†’ ฯ† (def-pr l m (h -) d)) (j d q)    ๏ผโŸจ III โŸฉ
     ap (ฮป _ โ†’ ฯˆ d) (j d q) โˆ™ val-pr l m (h q) d                       ๏ผโŸจ IV โŸฉ
     refl โˆ™ val-pr l m (h q) d                                         ๏ผโŸจ V โŸฉ
     val-pr l m (h q) d                                                โˆŽ
      where
       I   = ap (ฮป - โ†’ val-pr l m (h d) d โˆ™ -) (u d k)
       II  = ap (ฮป - โ†’ val-pr l m (h d) d โˆ™ -)
                (ap-ap (ฮป - โ†’ def-pr l m (h -) d) ฯ† (j d q))
       III = homotopies-are-natural
              (ฮป _ โ†’ ฯˆ d)
              (ฮป - โ†’ ฯ† (def-pr l m (h -) d))
              (ฮป - โ†’ val-pr l m (h -) d)
              {d} {q} {j d q}
       IV  = ap (ฮป - โ†’ - โˆ™ val-pr l m (h q) d) (ap-const (ฯˆ d) (j d q))
       V   = refl-left-neutral

    t : {f g : Q โ†’ P} (r : f ๏ผ g) (h : ฯˆ โˆผ ฯ† โˆ˜ f)
      โ†’ transport (ฮป - โ†’ ฯˆ โˆผ ฯ† โˆ˜ -) r h ๏ผ ฮป q โ†’ h q โˆ™ ap (ฮป - โ†’ ฯ† (- q)) r
    t refl h = refl

    b = transport (ฮป - โ†’ ฯˆ โˆผ ฯ† โˆ˜ -) a (ฮป d โ†’ val-pr l m (h d) d) ๏ผโŸจ I โŸฉ
        (ฮป d โ†’ val-pr l m (h d) d โˆ™ ap (ฮป - โ†’ ฯ† (- d)) a)        ๏ผโŸจ II โŸฉ
        val-pr l m (h q)                                         โˆŽ
         where
          I  = t a (ฮป d โ†’ val-pr l m (h d) d)
          II = dfunext (lower-funext ๐“ฃ ๐“ฃ fe'') v

    ฮณ : (ฮป d โ†’ def-pr l m (h d) d) , (ฮป d โ†’ val-pr l m (h d) d) ๏ผ h q
    ฮณ = to-ฮฃ-๏ผ (a , b)

  ฯ€ฯ :  ฯ€ โˆ˜ ฯ โˆผ id
  ฯ€ฯ h = dfunext fe'' (ฯ-lemma h)


Using this we have the following, as promised:


โŠ‘-in-terms-of-๏ผ : is-univalent ๐“ฃ
                โ†’ funext ๐“ฃ (๐“ฃ โบ โŠ” ๐“ค)
                โ†’ (l m : ๐“› X) โ†’ (l โŠ‘ m) โ‰ƒ (is-defined l โ†’ l ๏ผ m)
โŠ‘-in-terms-of-๏ผ ua feโบ l m =
 l โŠ‘ m                                                                 โ‰ƒโŸจ a โŸฉ
 (is-defined l โ†’ l โŠ‘ m)                                                โ‰ƒโŸจ b โŸฉ
 ((is-defined l โ†’ l โŠ‘ m) ร— ๐Ÿ™)                                          โ‰ƒโŸจ c โŸฉ
 (is-defined l โ†’ l โŠ‘ m) ร— (is-defined l โ†’ is-defined m โ†’ is-defined l) โ‰ƒโŸจ d โŸฉ
 (is-defined l โ†’ (l โŠ‘ m) ร— (is-defined m โ†’ is-defined l))              โ‰ƒโŸจ e โŸฉ
 (is-defined l โ†’ l ๏ผ m)                                                โ– 
 where
  fe : funext ๐“ฃ ๐“ฃ
  fe = univalence-gives-funext ua
  s : (is-defined l โ†’ is-defined m โ†’ is-defined l) โ‰ƒ ๐Ÿ™ {๐“ค}
  s = singleton-โ‰ƒ-๐Ÿ™
       ((ฮป d e โ†’ d) ,
        ฮ -is-prop fe
          (ฮป d โ†’ ฮ -is-prop fe
                   (ฮป e โ†’ being-defined-is-prop l)) (ฮป d e โ†’ d))

  a = โŠ‘-open fe (lower-funext ๐“ฃ ((๐“ฃ โบ) โŠ” ๐“ค) feโบ) l m
  b =  โ‰ƒ-sym ๐Ÿ™-rneutral
  c = ร—-cong (โ‰ƒ-refl _) (โ‰ƒ-sym s)
  d = โ‰ƒ-sym ฮ ฮฃ-distr-โ‰ƒ
  e = โ†’cong feโบ
       (lower-funext ๐“ฃ ((๐“ฃ โบ) โŠ” ๐“ค) feโบ)
       (โ‰ƒ-refl (is-defined l))
       (โŠ‘-anti-equiv-lemma ua (lower-funext ๐“ฃ ((๐“ฃ โบ) โŠ” ๐“ค) feโบ) l m)


And we also get the promised map l โŠ‘ m โ†’ ๐“› (l ๏ผ m) that regards
elements of hom-type l โŠ‘ m as partial element of identity the type l ๏ผ m.
(Conjectural conjecture: this map is an embedding.)

TODO. This map should be an embedding.


โŠ‘-lift : is-univalent ๐“ฃ
       โ†’ funext ๐“ฃ (๐“ฃ โบ โŠ” ๐“ค)
       โ†’ (l m : ๐“› X) โ†’ l โŠ‘ m โ†’ ๐“› (l ๏ผ m)
โŠ‘-lift ua fe l m ฮฑ = is-defined l ,
                     โŒœ โŠ‘-in-terms-of-๏ผ ua fe l m โŒ ฮฑ ,
                     being-defined-is-prop l

We now show that the wild-โˆž-category ๐“› X is univalent if the universe ๐“ฃ
is univalent and we have enough function extensionality for ๐“ฃ and ๐“ค.


๐“›-pre-comp-with : (l m : ๐“› X) โ†’ l โŠ‘ m โ†’ (n : ๐“› X) โ†’ m โŠ‘ n โ†’ l โŠ‘ n
๐“›-pre-comp-with l m ฮฑ n = ๐“›-comp l m n ฮฑ

is-๐“›-equiv : (l m : ๐“› X) โ†’ l โŠ‘ m โ†’ ๐“ฃ โบ โŠ” ๐“ค ฬ‡
is-๐“›-equiv l m ฮฑ = (n : ๐“› X) โ†’ is-equiv (๐“›-pre-comp-with l m ฮฑ n)

being-๐“›-equiv-is-prop : funext (๐“ฃ โบ โŠ” ๐“ค) (๐“ฃ โŠ” ๐“ค)
                      โ†’ (l m : ๐“› X) (ฮฑ : l โŠ‘ m)
                      โ†’ is-prop (is-๐“›-equiv l m ฮฑ)
being-๐“›-equiv-is-prop fe l m ฮฑ =
 ฮ -is-prop fe
  (ฮป n โ†’ being-equiv-is-prop''
          (lower-funext (๐“ฃ โบ) ๐“ค fe)
          (๐“›-pre-comp-with l m ฮฑ n))

is-๐“›-equivโ†’ : (l m : ๐“› X) (ฮฑ : l โŠ‘ m)
            โ†’ is-๐“›-equiv l m ฮฑ
            โ†’ is-equiv (def-pr l m ฮฑ)
is-๐“›-equivโ†’ l m ฮฑ e =
 qinvs-are-equivs
  (def-pr l m ฮฑ)
  (def-pr m l ฮฒ ,
    (ฮป p โ†’ being-defined-is-prop l
            (def-pr m l ฮฒ
              (def-pr l m ฮฑ p)) p) ,
    (ฮป q โ†’ being-defined-is-prop m
            (def-pr l m ฮฑ
              (def-pr m l ฮฒ q)) q))
 where
  u : m โŠ‘ l โ†’ l โŠ‘ l
  u = ๐“›-pre-comp-with l m ฮฑ l

  ฮฒ : m โŠ‘ l
  ฮฒ = inverse u (e l) (๐“›-id l)

is-๐“›-equivโ† : propext ๐“ฃ
            โ†’ funext ๐“ฃ ๐“ฃ
            โ†’ funext ๐“ฃ ๐“ค
            โ†’ (l m : ๐“› X) (ฮฑ : l โŠ‘ m)
            โ†’ is-equiv (def-pr l m ฮฑ)
            โ†’ is-๐“›-equiv l m ฮฑ
is-๐“›-equivโ† pe fe fe' l m ฮฑ e = ฮณ
 where
  r : l ๏ผ m
  r = โŠ‘-anti-lemma pe fe fe' ฮฑ (inverse (def-pr l m ฮฑ) e)

  ฯ€ : (l n : ๐“› X) (ฮฑ : l โŠ‘ l)
    โ†’ def-pr l l ฮฑ ๏ผ id
    โ†’ ฮฃ ฮด ๊ž‰ ((q : is-defined l) โ†’ value l q ๏ผ value l q)
          , ๐“›-pre-comp-with l l ฮฑ n
            โˆผ ฮป ฮฒ โ†’ (def-pr l n ฮฒ , (ฮป q โ†’ ฮด q โˆ™ val-pr l n ฮฒ q))
  ฯ€ l n (.id , ฮด) refl = ฮด , ฮป ฮฒ โ†’ refl

  ฯ : (l : ๐“› X) (ฮฑ : l โŠ‘ l)
    โ†’ is-equiv (def-pr l l ฮฑ)
    โ†’ is-๐“›-equiv l l ฮฑ
  ฯ l ฮฑ e n = equiv-closed-under-โˆผ u (๐“›-pre-comp-with l l ฮฑ n) i h
   where
    s : def-pr l l ฮฑ ๏ผ id
    s = dfunext fe (ฮป q โ†’ being-defined-is-prop l
                           (def-pr l l ฮฑ q) q)

    ฮด : (q : is-defined l) โ†’ value l q ๏ผ value l q
    ฮด = prโ‚ (ฯ€ l n ฮฑ s)

    u : l โŠ‘ n โ†’ l โŠ‘ n
    u ฮฒ = def-pr l n ฮฒ , ฮป q โ†’ ฮด q โˆ™ val-pr l n ฮฒ q

    h : ๐“›-pre-comp-with l l ฮฑ n โˆผ u
    h = prโ‚‚ (ฯ€ l n ฮฑ s)

    v : l โŠ‘ n โ†’ l โŠ‘ n
    v ฮณ = def-pr l n ฮณ ,
          (ฮป p โ†’ (ฮด p)โปยน โˆ™ val-pr l n ฮณ p)

    vu : v โˆ˜ u โˆผ id
    vu (g , ฮต) = to-ฮฃ-๏ผ (refl , dfunext fe' a)
     where
      a : (q : is-defined l) โ†’ (ฮด q)โปยน โˆ™ (ฮด q โˆ™ ฮต q) ๏ผ ฮต q
      a q = (ฮด q)โปยน โˆ™ (ฮด q โˆ™ ฮต q) ๏ผโŸจ I โŸฉ
            ((ฮด q)โปยน โˆ™ ฮด q) โˆ™ ฮต q ๏ผโŸจ II โŸฉ
            refl โˆ™ ฮต q            ๏ผโŸจ III โŸฉ
            ฮต q                   โˆŽ
             where
              I   = (โˆ™assoc ((ฮด q)โปยน) (ฮด q) (ฮต q))โปยน
              II  = ap (ฮป - โ†’ - โˆ™ ฮต q) ((sym-is-inverse (ฮด q))โปยน)
              III = refl-left-neutral

    uv : u โˆ˜ v โˆผ id
    uv (g , ฮต) = to-ฮฃ-๏ผ (refl , dfunext fe' a)
     where
      a : (q : is-defined l) โ†’ ฮด q โˆ™ ((ฮด q)โปยน โˆ™ ฮต q) ๏ผ ฮต q
      a q = ฮด q โˆ™ ((ฮด q)โปยน โˆ™ ฮต q)  ๏ผโŸจ I โŸฉ
           (ฮด q โˆ™ ((ฮด q)โปยน)) โˆ™ ฮต q ๏ผโŸจ II โŸฉ
            refl โˆ™ ฮต q             ๏ผโŸจ III โŸฉ
            ฮต q                    โˆŽ
             where
              I   = (โˆ™assoc (ฮด q) ((ฮด q)โปยน) (ฮต q))โปยน
              II  = ap (ฮป - โ†’ - โˆ™ ฮต q) ((sym-is-inverse' (ฮด q))โปยน)
              III = refl-left-neutral

    i : is-equiv u
    i = qinvs-are-equivs u (v , vu , uv)

  ฯƒ : (l m : ๐“› X)
    โ†’ l ๏ผ m
    โ†’ (ฮฑ : l โŠ‘ m)
    โ†’ is-equiv (def-pr l m ฮฑ)
    โ†’ is-๐“›-equiv l m ฮฑ
  ฯƒ l .l refl = ฯ l

  ฮณ : is-๐“›-equiv l m ฮฑ
  ฮณ = ฯƒ l m r ฮฑ e


With this and Yoneda we can now easily derive the univalence of the
wild-โˆž-category ๐“› X.

The univalence of ๐“ฃ is more than we need in the
following. Propositional extensionality for propositions in ๐“ฃ
suffices, but the way we proved this using a general SIP relies on
univalence (we could prove a specialized version of the SIP, but this
is probably not worth the trouble (we'll see)).


module univalence-of-๐“› (ua : is-univalent ๐“ฃ)
                       (fe : Fun-Ext)
       where

 pe : propext ๐“ฃ
 pe = univalence-gives-propext ua

 is-๐“›-equiv-charac : (l m : ๐“› X) (ฮฑ : l โŠ‘ m)
                   โ†’ is-๐“›-equiv l m ฮฑ โ‰ƒ (is-defined m โ†’ is-defined l)
 is-๐“›-equiv-charac l m ฮฑ =
  is-๐“›-equiv l m ฮฑ              โ‰ƒโŸจ a โŸฉ
  is-equiv (def-pr l m ฮฑ)   โ‰ƒโŸจ b โŸฉ
  (is-defined m โ†’ is-defined l) โ– 
  where
   a = logically-equivalent-props-are-equivalent
        (being-๐“›-equiv-is-prop fe l m ฮฑ)
        (being-equiv-is-prop'' fe (def-pr l m ฮฑ))
        (is-๐“›-equivโ†’ l m ฮฑ)
        (is-๐“›-equivโ† pe fe fe l m ฮฑ)

   b = logically-equivalent-props-are-equivalent
        (being-equiv-is-prop'' fe (def-pr l m ฮฑ))
        (ฮ -is-prop fe (ฮป p โ†’ being-defined-is-prop l))
        (inverse (def-pr l m ฮฑ))
        (ฮป g โ†’ qinvs-are-equivs
                (def-pr l m ฮฑ)
                (g ,
                 (ฮป q โ†’ being-defined-is-prop l
                         (g (def-pr l m ฮฑ q)) q) ,
                 (ฮป p โ†’ being-defined-is-prop m
                         (def-pr l m ฮฑ (g p)) p)))

 _โ‰ƒโŸจ๐“›โŸฉ_ : ๐“› X โ†’ ๐“› X โ†’ ๐“ฃ โบ โŠ” ๐“ค ฬ‡
 l โ‰ƒโŸจ๐“›โŸฉ m = ฮฃ ฮฑ ๊ž‰ l โŠ‘ m , is-๐“›-equiv l m ฮฑ

 โ‰ƒโŸจ๐“›โŸฉ-charac : (l m : ๐“› X)
             โ†’ (l โ‰ƒโŸจ๐“›โŸฉ m) โ‰ƒ (l โŠ‘ m) ร— (is-defined m โ†’ is-defined l)
 โ‰ƒโŸจ๐“›โŸฉ-charac l m = ฮฃ-cong (is-๐“›-equiv-charac l m)

 โ‰ƒโŸจ๐“›โŸฉ-is-Id : (l m : ๐“› X)
            โ†’ (l โ‰ƒโŸจ๐“›โŸฉ m) โ‰ƒ (l ๏ผ m)
 โ‰ƒโŸจ๐“›โŸฉ-is-Id l m = (โ‰ƒโŸจ๐“›โŸฉ-charac l m) โ— (โŠ‘-anti-equiv-lemma ua fe l m)

 ๐“›-is-univalent' : (l : ๐“› X) โ†’ โˆƒ! m ๊ž‰ ๐“› X , (l โ‰ƒโŸจ๐“›โŸฉ m)
 ๐“›-is-univalent' l = equiv-to-singleton e (singleton-types-are-singletons l)
  where
    e : (ฮฃ m ๊ž‰ ๐“› X , l โ‰ƒโŸจ๐“›โŸฉ m) โ‰ƒ (ฮฃ m ๊ž‰ ๐“› X , l ๏ผ m)
    e = ฮฃ-cong (โ‰ƒโŸจ๐“›โŸฉ-is-Id l)

 ๐“›-id-is-๐“›-equiv : (l : ๐“› X) โ†’ is-๐“›-equiv l l (๐“›-id l)
 ๐“›-id-is-๐“›-equiv l n = (id , h) , (id , h)
  where
   h : ๐“›-pre-comp-with l l (๐“›-id l) n โˆผ id
   h (f , ฮด) = to-ฮฃ-๏ผ (refl , dfunext fe (ฮป p โ†’ refl-left-neutral))

 ๐“›-refl : (l : ๐“› X) โ†’ l โ‰ƒโŸจ๐“›โŸฉ l
 ๐“›-refl l = ๐“›-id l , ๐“›-id-is-๐“›-equiv l

 Id-to-๐“›-eq : (l m : ๐“› X) โ†’ l ๏ผ m โ†’ l โ‰ƒโŸจ๐“›โŸฉ m
 Id-to-๐“›-eq l m r = transport (l โ‰ƒโŸจ๐“›โŸฉ_) r (๐“›-refl l)

 ๐“›-is-univalent : (l m : ๐“› X) โ†’ is-equiv (Id-to-๐“›-eq l m)
 ๐“›-is-univalent l = universality-equiv l (๐“›-refl l)
                     (central-point-is-universal (l โ‰ƒโŸจ๐“›โŸฉ_) (l , ๐“›-refl l)
                       (singletons-are-props (๐“›-is-univalent' l) (l , ๐“›-refl l)))
  where
   open import UF.Yoneda


This completes the main goal of the module.

We have yet another equivalence, using the above techniques:


ฮท-maximal' : (x : X) (l : ๐“› X) โ†’ ฮท x โŠ‘ l โ†’ l โŠ‘ ฮท x
ฮท-maximal' x (P , ฯˆ , i) (f , ฮด) = (ฮป p โ†’ โ‹†) , (ฮป p โ†’ ap ฯˆ (i p (f โ‹†)) โˆ™ (ฮด โ‹†)โปยน)

ฮท-maximal : propext ๐“ฃ
          โ†’ funext ๐“ฃ ๐“ฃ
          โ†’ funext ๐“ฃ ๐“ค
          โ†’ (x : X) (l : ๐“› X)
          โ†’ ฮท x โŠ‘ l
          โ†’ ฮท x ๏ผ l
ฮท-maximal pe fe fe' x l a = โŠ‘-anti pe fe fe' (a , ฮท-maximal' x l a)

โŠฅ-least : (l : ๐“› X) โ†’ โŠฅ โŠ‘ l
โŠฅ-least l = unique-from-๐Ÿ˜ , ฮป z โ†’ unique-from-๐Ÿ˜ z

โŠฅ-initial : funext ๐“ฃ ๐“ฃ
          โ†’ funext ๐“ฃ ๐“ค
          โ†’ (l : ๐“› X) โ†’ is-singleton (โŠฅ โŠ‘ l)
โŠฅ-initial fe fe' l = โŠฅ-least l ,
                     (ฮป ฮฑ โ†’ to-ฮฃ-๏ผ (dfunext fe (ฮป z โ†’ unique-from-๐Ÿ˜ z) ,
                                     dfunext fe'(ฮป z โ†’ unique-from-๐Ÿ˜ z)))

ฮท-๏ผ-gives-โŠ‘ : {x y : X} โ†’ x ๏ผ y โ†’ ฮท x โŠ‘ ฮท y
ฮท-๏ผ-gives-โŠ‘ {x} {y} p = id , (ฮป d โ†’ p)

ฮท-โŠ‘-gives-๏ผ : {x y : X} โ†’ ฮท x โŠ‘ ฮท y โ†’ x ๏ผ y
ฮท-โŠ‘-gives-๏ผ (f , ฮด) = ฮด โ‹†

ฮท-๏ผ-gives-โŠ‘-is-equiv : funext ๐“ฃ ๐“ฃ
                     โ†’ funext ๐“ฃ ๐“ค
                     โ†’ {x y : X} โ†’ is-equiv (ฮท-๏ผ-gives-โŠ‘ {x} {y})
ฮท-๏ผ-gives-โŠ‘-is-equiv fe fe' {x} {y} =
 qinvs-are-equivs ฮท-๏ผ-gives-โŠ‘ (ฮท-โŠ‘-gives-๏ผ , ฮฑ , ฮฒ)
 where
  ฮฑ : {x y : X} (p : x ๏ผ y) โ†’  ฮท-โŠ‘-gives-๏ผ (ฮท-๏ผ-gives-โŠ‘ p) ๏ผ p
  ฮฑ p = refl

  ฮฒ : {x y : X} (q : ฮท x โŠ‘ ฮท y) โ†’ ฮท-๏ผ-gives-โŠ‘ (ฮท-โŠ‘-gives-๏ผ q) ๏ผ q
  ฮฒ (f , ฮด) = to-ร—-๏ผ
               (dfunext fe (ฮป x โ†’ ๐Ÿ™-is-prop x (f x)))
               (dfunext fe' (ฮป x โ†’ ap ฮด (๐Ÿ™-is-prop โ‹† x)))

Id-via-lifting : funext ๐“ฃ ๐“ฃ
               โ†’ funext ๐“ฃ ๐“ค
               โ†’ {x y : X} โ†’ (x ๏ผ y) โ‰ƒ (ฮท x โŠ‘ ฮท y)
Id-via-lifting fe fe' = ฮท-๏ผ-gives-โŠ‘ , ฮท-๏ผ-gives-โŠ‘-is-equiv fe fe'


Added 13th March 2024.


ฮท-image : funext ๐“ฃ ๐“ฃ
        โ†’ funext ๐“ฃ ๐“ค
        โ†’ propext ๐“ฃ
        โ†’ {X : ๐“ค ฬ‡ }
        โ†’ ยฌ (ฮฃ l ๊ž‰ ๐“› X , (l โ‰  โŠฅ) ร— ((x : X) โ†’ l โ‰  ฮท x))
ฮท-image fe fe' pe ((P , ฯ† , P-is-prop) , ฮฝ , f) =
 no-props-other-than-๐Ÿ˜-or-๐Ÿ™ pe (P , P-is-prop , g , h)
 where
  g : ยฌ (P ๏ผ ๐Ÿ˜)
  g e = ฮฝ (to-ฮฃ-๏ผ
            (e ,
             to-subtype-๏ผ
              (ฮป _ โ†’ being-prop-is-prop fe)
              (dfunext fe' (ฮป x โ†’ ๐Ÿ˜-elim x))))

  h : ยฌ (P ๏ผ ๐Ÿ™)
  h refl = f (ฯ† โ‹†)
             (to-ฮฃ-๏ผ
               (refl ,
                to-subtype-๏ผ
                 (ฮป _ โ†’ being-prop-is-prop fe)
                 (dfunext fe' (ฮป โ‹† โ†’ refl))))

ฮท-bounded : (y : ๐“› X) (x x' : X) โ†’ ฮท x โŠ‘ y โ†’ ฮท x' โŠ‘ y โ†’ x ๏ผ x'
ฮท-bounded y@(P , ฯ† , P-is-prop) x x' (p , e) (p' , e') =
 x        ๏ผโŸจ e โ‹† โŸฉ
 ฯ† (p  โ‹†) ๏ผโŸจ ap ฯ† (P-is-prop (p โ‹†) (p' โ‹†)) โŸฉ
 ฯ† (p' โ‹†) ๏ผโŸจ (e' โ‹†)โปยน โŸฉ
 x'       โˆŽ


TODO. Monad algebras should also be univalent wild-โˆž-categories.