Skip to content

UF.SIP

Martin Escardo, 30 April 2020

The structure identity principle and tools from the 2019 paper and links

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

There are three submodules:

 * sip
 * sip-with-axioms
 * sip-join


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

module UF.SIP where

open import MLTT.Spartan
open import UF.Base
open import UF.Embeddings
open import UF.Equiv
open import UF.EquivalenceExamples
open import UF.Retracts
open import UF.Subsingletons
open import UF.Univalence
open import UF.Yoneda

module sip where

 โŸจ_โŸฉ : {S : ๐“ค ฬ‡ โ†’ ๐“ฅ ฬ‡ } โ†’ ฮฃ S โ†’ ๐“ค ฬ‡
 โŸจ X , s โŸฉ = X

 structure : {S : ๐“ค ฬ‡ โ†’ ๐“ฅ ฬ‡ } (A : ฮฃ S) โ†’ S โŸจ A โŸฉ
 structure (X , s) = s

 canonical-map : {S : ๐“ค ฬ‡ โ†’ ๐“ฅ ฬ‡ }
                 (ฮน : (A B : ฮฃ S) โ†’ โŸจ A โŸฉ โ‰ƒ โŸจ B โŸฉ โ†’ ๐“ฆ ฬ‡ )
                 (ฯ : (A : ฮฃ S) โ†’ ฮน A A (โ‰ƒ-refl โŸจ A โŸฉ))
                 {X : ๐“ค ฬ‡ }
                 (s t : S X)
               โ†’ s ๏ผ t โ†’ ฮน (X , s) (X , t) (โ‰ƒ-refl X)
 canonical-map ฮน ฯ {X} s s (refl {s}) = ฯ (X , s)

 SNS : (๐“ค ฬ‡ โ†’ ๐“ฅ ฬ‡ ) โ†’ (๐“ฆ : Universe) โ†’ ๐“ค โบ โŠ” ๐“ฅ โŠ” (๐“ฆ โบ) ฬ‡
 SNS {๐“ค} {๐“ฅ} S ๐“ฆ = ฮฃ ฮน ๊ž‰ ((A B : ฮฃ S) โ†’ (โŸจ A โŸฉ โ‰ƒ โŸจ B โŸฉ โ†’ ๐“ฆ ฬ‡ ))
                  , ฮฃ ฯ ๊ž‰ ((A : ฮฃ S) โ†’ ฮน A A (โ‰ƒ-refl โŸจ A โŸฉ))
                  , ({X : ๐“ค ฬ‡ } (s t : S X) โ†’ is-equiv (canonical-map ฮน ฯ s t))

 homomorphic : {S : ๐“ค ฬ‡ โ†’ ๐“ฅ ฬ‡ } โ†’ SNS S ๐“ฆ
             โ†’ (A B : ฮฃ S) โ†’ โŸจ A โŸฉ โ‰ƒ โŸจ B โŸฉ โ†’ ๐“ฆ ฬ‡
 homomorphic (ฮน , ฯ , ฮธ) = ฮน

 _โ‰ƒ[_]_ : {S : ๐“ค ฬ‡ โ†’ ๐“ฅ ฬ‡ } โ†’ ฮฃ S โ†’ SNS S ๐“ฆ โ†’ ฮฃ S โ†’ ๐“ค โŠ” ๐“ฆ ฬ‡
 A โ‰ƒ[ ฯƒ ] B = ฮฃ f ๊ž‰ (โŸจ A โŸฉ โ†’ โŸจ B โŸฉ)
            , ฮฃ i ๊ž‰ is-equiv f
            , homomorphic ฯƒ A B (f , i)

 Idโ†’homEq : {S : ๐“ค ฬ‡ โ†’ ๐“ฅ ฬ‡ } (ฯƒ : SNS S ๐“ฆ)
          โ†’ (A B : ฮฃ S) โ†’ (A ๏ผ B) โ†’ (A โ‰ƒ[ ฯƒ ] B)
 Idโ†’homEq (_ , ฯ , _) A A (refl {A}) = id , id-is-equiv โŸจ A โŸฉ , ฯ A

 homomorphism-lemma : {S : ๐“ค ฬ‡ โ†’ ๐“ฅ ฬ‡ } (ฯƒ : SNS S ๐“ฆ)
                      (A B : ฮฃ S) (p : โŸจ A โŸฉ ๏ผ โŸจ B โŸฉ)
                    โ†’
                      (transport S p (structure A) ๏ผ structure B)
                    โ‰ƒ  homomorphic ฯƒ A B (idtoeq โŸจ A โŸฉ โŸจ B โŸฉ p)
 homomorphism-lemma (ฮน , ฯ , ฮธ) (X , s) (X , t) (refl {X}) = ฮณ
  where
   ฮณ : (s ๏ผ t) โ‰ƒ ฮน (X , s) (X , t) (โ‰ƒ-refl X)
   ฮณ = (canonical-map ฮน ฯ s t , ฮธ s t)

 characterization-of-๏ผ : is-univalent ๐“ค
                       โ†’ {S : ๐“ค ฬ‡ โ†’ ๐“ฅ ฬ‡ } (ฯƒ : SNS S ๐“ฆ)
                       โ†’ (A B : ฮฃ S)

                       โ†’ (A ๏ผ B) โ‰ƒ (A โ‰ƒ[ ฯƒ ] B)
 characterization-of-๏ผ ua {S} ฯƒ A B =
    (A ๏ผ B)                                                            โ‰ƒโŸจ i โŸฉ
    (ฮฃ p ๊ž‰ โŸจ A โŸฉ ๏ผ โŸจ B โŸฉ , transport S p (structure A) ๏ผ structure B) โ‰ƒโŸจ ii โŸฉ
    (ฮฃ p ๊ž‰ โŸจ A โŸฉ ๏ผ โŸจ B โŸฉ , ฮน A B (idtoeq โŸจ A โŸฉ โŸจ B โŸฉ p))               โ‰ƒโŸจ iii โŸฉ
    (ฮฃ e ๊ž‰ โŸจ A โŸฉ โ‰ƒ โŸจ B โŸฉ , ฮน A B e)                                     โ‰ƒโŸจ iv โŸฉ
    (A โ‰ƒ[ ฯƒ ] B)                                                        โ– 
  where
   ฮน   = homomorphic ฯƒ
   i   = ฮฃ-๏ผ-โ‰ƒ
   ii  = ฮฃ-cong (homomorphism-lemma ฯƒ A B)
   iii = ฮฃ-change-of-variable (ฮน A B) (idtoeq โŸจ A โŸฉ โŸจ B โŸฉ) (ua โŸจ A โŸฉ โŸจ B โŸฉ)
   iv  = ฮฃ-assoc

 Idโ†’homEq-is-equiv : (ua : is-univalent ๐“ค) {S : ๐“ค ฬ‡ โ†’ ๐“ฅ ฬ‡ } (ฯƒ : SNS S ๐“ฆ)
                   โ†’ (A B : ฮฃ S) โ†’ is-equiv (Idโ†’homEq ฯƒ A B)
 Idโ†’homEq-is-equiv ua {S} ฯƒ A B = ฮณ
  where
   h : (A B : ฮฃ S) โ†’ Idโ†’homEq ฯƒ A B โˆผ โŒœ characterization-of-๏ผ ua ฯƒ A B โŒ
   h A A (refl {A}) = refl

   ฮณ : is-equiv (Idโ†’homEq ฯƒ A B)
   ฮณ = equiv-closed-under-โˆผ _ _
        (โŒœโŒ-is-equiv (characterization-of-๏ผ ua ฯƒ A B))
        (h A B)

 module _ {S : ๐“ค ฬ‡ โ†’ ๐“ฅ ฬ‡ }
          (ฮน : (A B : ฮฃ S) โ†’ โŸจ A โŸฉ โ‰ƒ โŸจ B โŸฉ โ†’ ๐“ฆ ฬ‡ )
          (ฯ : (A : ฮฃ S) โ†’ ฮน A A (โ‰ƒ-refl โŸจ A โŸฉ))
          {X : ๐“ค ฬ‡ }
        where

  canonical-map-charac
   : (s t : S X) (p : s ๏ผ t)
   โ†’ canonical-map ฮน ฯ s t p
   ๏ผ transport (ฮป - โ†’ ฮน (X , s) (X , -) (โ‰ƒ-refl X)) p (ฯ (X , s))
  canonical-map-charac s t p =
   (yoneda-lemma
    s
    (ฮป t โ†’ ฮน (X , s) (X , t) (โ‰ƒ-refl X))
    (canonical-map ฮน ฯ s) t p)โปยน

  when-canonical-map-is-equiv
   : ((s t : S X) โ†’ is-equiv (canonical-map ฮน ฯ s t))
   โ†” ((s : S X) โ†’ โˆƒ! t ๊ž‰ S X , ฮน (X , s) (X , t) (โ‰ƒ-refl X))
  when-canonical-map-is-equiv = (ฮป e s โ†’ Yoneda-Theorem-back  s (c s) (e s)) ,
                                (ฮป ฯ† s โ†’ Yoneda-Theorem-forth s (c s) (ฯ† s))
   where
    c = canonical-map ฮน ฯ

  canonical-map-equiv-criterion :
    ((s t : S X) โ†’ (s ๏ผ t) โ‰ƒ ฮน (X , s) (X , t) (โ‰ƒ-refl X))
   โ†’ (s t : S X) โ†’ is-equiv (canonical-map ฮน ฯ s t)
  canonical-map-equiv-criterion ฯ† s = fiberwise-equiv-criterion'
                                       (ฮป t โ†’ ฮน (X , s) (X , t) (โ‰ƒ-refl X))
                                       s (ฯ† s) (canonical-map ฮน ฯ s)

  canonical-map-equiv-criterion' :
     ((s t : S X) โ†’ ฮน (X , s) (X , t) (โ‰ƒ-refl X) โ— (s ๏ผ t))
    โ†’ (s t : S X) โ†’ is-equiv (canonical-map ฮน ฯ s t)
  canonical-map-equiv-criterion' ฯ† s = fiberwise-equiv-criterion
                                        (ฮป t โ†’ ฮน (X , s) (X , t) (โ‰ƒ-refl X))
                                        s (ฯ† s) (canonical-map ฮน ฯ s)

module sip-with-axioms where

 open sip

 [_] : {S : ๐“ค ฬ‡ โ†’ ๐“ฅ ฬ‡ } {axioms : (X : ๐“ค ฬ‡ ) โ†’ S X โ†’ ๐“ฆ ฬ‡ }
     โ†’ (ฮฃ X ๊ž‰ ๐“ค ฬ‡ , ฮฃ s ๊ž‰ S X , axioms X s) โ†’ ฮฃ S
 [ X , s , _ ] = (X , s)

 โŸช_โŸซ : {S : ๐“ค ฬ‡ โ†’ ๐“ฅ ฬ‡ } {axioms : (X : ๐“ค ฬ‡ ) โ†’ S X โ†’ ๐“ฆ ฬ‡ }
     โ†’ (ฮฃ X ๊ž‰ ๐“ค ฬ‡ , ฮฃ s ๊ž‰ S X , axioms X s) โ†’ ๐“ค ฬ‡
 โŸช X , _ , _ โŸซ = X

 add-axioms : {S : ๐“ค ฬ‡ โ†’ ๐“ฅ ฬ‡ }
              (axioms : (X : ๐“ค ฬ‡ ) โ†’ S X โ†’ ๐“ฆ ฬ‡ )
            โ†’ ((X : ๐“ค ฬ‡ ) (s : S X) โ†’ is-prop (axioms X s))
            โ†’ SNS S ๐“ฃ
            โ†’ SNS (ฮป X โ†’ ฮฃ s ๊ž‰ S X , axioms X s) ๐“ฃ
 add-axioms {๐“ค} {๐“ฅ} {๐“ฆ} {๐“ฃ} {S} axioms i (ฮน , ฯ , ฮธ) = ฮน' , ฯ' , ฮธ'
  where
   S' : ๐“ค ฬ‡ โ†’ ๐“ฅ โŠ” ๐“ฆ ฬ‡
   S' X = ฮฃ s ๊ž‰ S X , axioms X s

   ฮน' : (A B : ฮฃ S') โ†’ โŸจ A โŸฉ โ‰ƒ โŸจ B โŸฉ โ†’ ๐“ฃ ฬ‡
   ฮน' A B = ฮน [ A ] [ B ]

   ฯ' : (A : ฮฃ S') โ†’ ฮน' A A (โ‰ƒ-refl โŸจ A โŸฉ)
   ฯ' A = ฯ [ A ]

   ฮธ' : {X : ๐“ค ฬ‡ } (s' t' : S' X) โ†’ is-equiv (canonical-map ฮน' ฯ' s' t')
   ฮธ' {X} (s , a) (t , b) = ฮณ
    where
     ฯ€ : S' X โ†’ S X
     ฯ€ (s , _) = s

     j : is-embedding ฯ€
     j = prโ‚-is-embedding (i X)

     k : {s' t' : S' X} โ†’ is-equiv (ap ฯ€ {s'} {t'})
     k {s'} {t'} = embedding-gives-embedding' ฯ€ j s' t'

     l : canonical-map ฮน' ฯ' (s , a) (t , b)
       โˆผ canonical-map ฮน ฯ s t โˆ˜ ap ฯ€ {s , a} {t , b}

     l (refl {s , a}) = ๐“ป๐“ฎ๐’ป๐“ต (ฯ (X , s))

     e : is-equiv (canonical-map ฮน ฯ s t โˆ˜ ap ฯ€ {s , a} {t , b})
     e = โˆ˜-is-equiv k (ฮธ s t)

     ฮณ : is-equiv (canonical-map ฮน' ฯ' (s , a) (t , b))
     ฮณ = equiv-closed-under-โˆผ _ _ e l

 characterization-of-๏ผ-with-axioms
  : is-univalent ๐“ค
  โ†’ {S : ๐“ค ฬ‡ โ†’ ๐“ฅ ฬ‡ }
    (ฯƒ : SNS S ๐“ฃ)
    (axioms : (X : ๐“ค ฬ‡ ) โ†’ S X โ†’ ๐“ฆ ฬ‡ )
  โ†’ ((X : ๐“ค ฬ‡ ) (s : S X) โ†’ is-prop (axioms X s))
  โ†’ (A B : ฮฃ X ๊ž‰ ๐“ค ฬ‡ , ฮฃ s ๊ž‰ S X , axioms X s)
  โ†’ (A ๏ผ B) โ‰ƒ ([ A ] โ‰ƒ[ ฯƒ ] [ B ])
 characterization-of-๏ผ-with-axioms ua ฯƒ axioms i =
  characterization-of-๏ผ ua (add-axioms axioms i ฯƒ)

module sip-join where

 technical-lemma :

     {X : ๐“ค ฬ‡ } {A : X โ†’ X โ†’ ๐“ฅ ฬ‡ }
     {Y : ๐“ฆ ฬ‡ } {B : Y โ†’ Y โ†’ ๐“ฃ ฬ‡ }
     (f : (xโ‚€ xโ‚ : X) โ†’ xโ‚€ ๏ผ xโ‚ โ†’ A xโ‚€ xโ‚)
     (g : (yโ‚€ yโ‚ : Y) โ†’ yโ‚€ ๏ผ yโ‚ โ†’ B yโ‚€ yโ‚)
   โ†’ ((xโ‚€ xโ‚ : X) โ†’ is-equiv (f xโ‚€ xโ‚))
   โ†’ ((yโ‚€ yโ‚ : Y) โ†’ is-equiv (g yโ‚€ yโ‚))

   โ†’ ((xโ‚€ , yโ‚€) (xโ‚ , yโ‚) : X ร— Y) โ†’
   is-equiv (ฮป (p : (xโ‚€ , yโ‚€) ๏ผ (xโ‚ , yโ‚)) โ†’ f xโ‚€ xโ‚ (ap prโ‚ p) ,
                                              g yโ‚€ yโ‚ (ap prโ‚‚ p))
 technical-lemma {๐“ค} {๐“ฅ} {๐“ฆ} {๐“ฃ} {X} {A} {Y} {B} f g i j (xโ‚€ , yโ‚€) = ฮณ
  where
   module _ ((xโ‚ , yโ‚) : X ร— Y) where
    r : (xโ‚€ , yโ‚€) ๏ผ (xโ‚ , yโ‚) โ†’ A xโ‚€ xโ‚ ร— B yโ‚€ yโ‚
    r p = f xโ‚€ xโ‚ (ap prโ‚ p) , g yโ‚€ yโ‚ (ap prโ‚‚ p)

    f' : (a : A xโ‚€ xโ‚) โ†’ xโ‚€ ๏ผ xโ‚
    f' = inverse (f xโ‚€ xโ‚) (i xโ‚€ xโ‚)

    g' : (b : B yโ‚€ yโ‚) โ†’ yโ‚€ ๏ผ yโ‚
    g' = inverse (g yโ‚€ yโ‚) (j yโ‚€ yโ‚)

    s : A xโ‚€ xโ‚ ร— B yโ‚€ yโ‚ โ†’ (xโ‚€ , yโ‚€) ๏ผ (xโ‚ , yโ‚)
    s (a , b) = to-ร—-๏ผ (f' a) (g' b)

    ฮท : (c : A xโ‚€ xโ‚ ร— B yโ‚€ yโ‚) โ†’ r (s c) ๏ผ c
    ฮท (a , b) =
      r (s (a , b))                               ๏ผโŸจreflโŸฉ
      r (to-ร—-๏ผ  (f' a) (g' b))                  ๏ผโŸจreflโŸฉ
      (f xโ‚€ xโ‚ (ap prโ‚ (to-ร—-๏ผ (f' a) (g' b))) ,
       g yโ‚€ yโ‚ (ap prโ‚‚ (to-ร—-๏ผ (f' a) (g' b))))  ๏ผโŸจ ii โŸฉ
      (f xโ‚€ xโ‚ (f' a) , g yโ‚€ yโ‚ (g' b))           ๏ผโŸจ iii โŸฉ
      a , b                                       โˆŽ
     where
      ii  = apโ‚‚ (ฮป p q โ†’ f xโ‚€ xโ‚ p , g yโ‚€ yโ‚ q)
                (ap-prโ‚-to-ร—-๏ผ (f' a) (g' b))
                (ap-prโ‚‚-to-ร—-๏ผ (f' a) (g' b))
      iii = to-ร—-๏ผ (inverses-are-sections (f xโ‚€ xโ‚) (i xโ‚€ xโ‚) a)
                   (inverses-are-sections (g yโ‚€ yโ‚) (j yโ‚€ yโ‚) b)

   ฮณ : (z : X ร— Y) โ†’ is-equiv (r z)
   ฮณ = nats-with-sections-are-equivs (xโ‚€ , yโ‚€) r (ฮป z โ†’ (s z , ฮท z))

 open sip

 โŸช_โŸซ : {Sโ‚€ : ๐“ค ฬ‡ โ†’ ๐“ฅโ‚€ ฬ‡ } {Sโ‚ : ๐“ค ฬ‡ โ†’ ๐“ฅโ‚ ฬ‡ }
     โ†’ (ฮฃ X ๊ž‰ ๐“ค ฬ‡ , Sโ‚€ X ร— Sโ‚ X) โ†’ ๐“ค ฬ‡
 โŸช X , sโ‚€ , sโ‚ โŸซ = X

 [_]โ‚€ : {Sโ‚€ : ๐“ค ฬ‡ โ†’ ๐“ฅโ‚€ ฬ‡ } {Sโ‚ : ๐“ค ฬ‡ โ†’ ๐“ฅโ‚ ฬ‡ }
      โ†’ (ฮฃ X ๊ž‰ ๐“ค ฬ‡ , Sโ‚€ X ร— Sโ‚ X) โ†’ ฮฃ Sโ‚€
 [ X , sโ‚€ , sโ‚ ]โ‚€ = (X , sโ‚€)

 [_]โ‚ : {Sโ‚€ : ๐“ค ฬ‡ โ†’ ๐“ฅโ‚€ ฬ‡ } {Sโ‚ : ๐“ค ฬ‡ โ†’ ๐“ฅโ‚ ฬ‡ }
      โ†’ (ฮฃ X ๊ž‰ ๐“ค ฬ‡ , Sโ‚€ X ร— Sโ‚ X) โ†’ ฮฃ Sโ‚
 [ X , sโ‚€ , sโ‚ ]โ‚ = (X , sโ‚)

 join : {Sโ‚€ : ๐“ค ฬ‡ โ†’ ๐“ฅโ‚€ ฬ‡ } {Sโ‚ : ๐“ค ฬ‡ โ†’ ๐“ฅโ‚ ฬ‡ }
      โ†’ SNS Sโ‚€ ๐“ฆโ‚€
      โ†’ SNS Sโ‚ ๐“ฆโ‚
      โ†’ SNS (ฮป X โ†’ Sโ‚€ X ร— Sโ‚ X) (๐“ฆโ‚€ โŠ” ๐“ฆโ‚)
 join {๐“ค} {๐“ฅโ‚€} {๐“ฅโ‚} {๐“ฆโ‚€} {๐“ฆโ‚} {Sโ‚€} {Sโ‚} (ฮนโ‚€ , ฯโ‚€ , ฮธโ‚€) (ฮนโ‚ , ฯโ‚ , ฮธโ‚) =
  ฮน , ฯ , ฮธ
  where
   S : ๐“ค ฬ‡ โ†’ ๐“ฅโ‚€ โŠ” ๐“ฅโ‚ ฬ‡
   S X = Sโ‚€ X ร— Sโ‚ X

   ฮน : (A B : ฮฃ S) โ†’ โŸจ A โŸฉ โ‰ƒ โŸจ B โŸฉ โ†’ ๐“ฆโ‚€ โŠ” ๐“ฆโ‚ ฬ‡
   ฮน A B e = ฮนโ‚€ [ A ]โ‚€ [ B ]โ‚€ e  ร—  ฮนโ‚ [ A ]โ‚ [ B ]โ‚ e

   ฯ : (A : ฮฃ S) โ†’ ฮน A A (โ‰ƒ-refl โŸจ A โŸฉ)
   ฯ A = (ฯโ‚€ [ A ]โ‚€ , ฯโ‚ [ A ]โ‚)

   ฮธ : {X : ๐“ค ฬ‡ } (s t : S X) โ†’ is-equiv (canonical-map ฮน ฯ s t)
   ฮธ {X} s@(sโ‚€ , sโ‚) t@(tโ‚€ , tโ‚) = ฮณ
    where
     c : (p : s ๏ผ t) โ†’ ฮนโ‚€ (X , sโ‚€) (X , tโ‚€) (โ‰ƒ-refl X)
                      ร— ฮนโ‚ (X , sโ‚) (X , tโ‚) (โ‰ƒ-refl X)
     c p = (canonical-map ฮนโ‚€ ฯโ‚€ sโ‚€ tโ‚€ (ap prโ‚ p) ,
            canonical-map ฮนโ‚ ฯโ‚ sโ‚ tโ‚ (ap prโ‚‚ p))

     i : is-equiv c
     i = technical-lemma
          (canonical-map ฮนโ‚€ ฯโ‚€)
          (canonical-map ฮนโ‚ ฯโ‚)
          ฮธโ‚€ ฮธโ‚ s t

     e : canonical-map ฮน ฯ s t โˆผ c
     e (refl {s}) = ๐“ป๐“ฎ๐’ป๐“ต (ฯโ‚€ (X , sโ‚€) , ฯโ‚ (X , sโ‚))

     ฮณ : is-equiv (canonical-map ฮน ฯ s t)
     ฮณ = equiv-closed-under-โˆผ _ _ i e

 _โ‰ƒโŸฆ_,_โŸง_ : {Sโ‚€ : ๐“ค ฬ‡ โ†’ ๐“ฅ ฬ‡ } {Sโ‚ : ๐“ค ฬ‡ โ†’ ๐“ฅโ‚ ฬ‡ }
          โ†’ (ฮฃ X ๊ž‰ ๐“ค ฬ‡ , Sโ‚€ X ร— Sโ‚ X)
          โ†’ SNS Sโ‚€ ๐“ฆโ‚€
          โ†’ SNS Sโ‚ ๐“ฆโ‚
          โ†’ (ฮฃ X ๊ž‰ ๐“ค ฬ‡ , Sโ‚€ X ร— Sโ‚ X)
          โ†’ ๐“ค โŠ” ๐“ฆโ‚€ โŠ” ๐“ฆโ‚ ฬ‡
 A โ‰ƒโŸฆ ฯƒโ‚€ , ฯƒโ‚ โŸง B = ฮฃ f ๊ž‰ (โŸช A โŸซ โ†’ โŸช B โŸซ)
                  , ฮฃ i ๊ž‰ is-equiv f , homomorphic ฯƒโ‚€ [ A ]โ‚€ [ B ]โ‚€ (f , i)
                                     ร— homomorphic ฯƒโ‚ [ A ]โ‚ [ B ]โ‚ (f , i)

 characterization-of-join-๏ผ : is-univalent ๐“ค
                            โ†’ {Sโ‚€ : ๐“ค ฬ‡ โ†’ ๐“ฅ ฬ‡ } {Sโ‚ : ๐“ค ฬ‡ โ†’ ๐“ฅโ‚ ฬ‡ }
                              (ฯƒโ‚€ : SNS Sโ‚€ ๐“ฆโ‚€)  (ฯƒโ‚ : SNS Sโ‚ ๐“ฆโ‚)
                              (A B : ฮฃ X ๊ž‰ ๐“ค ฬ‡ , Sโ‚€ X ร— Sโ‚ X)
                            โ†’ (A ๏ผ B) โ‰ƒ (A โ‰ƒโŸฆ ฯƒโ‚€ , ฯƒโ‚ โŸง B)
 characterization-of-join-๏ผ ua ฯƒโ‚€ ฯƒโ‚ = characterization-of-๏ผ ua (join ฯƒโ‚€ ฯƒโ‚)