The circle

module synthetic-homotopy-theory.circle where
Imports
open import foundation.0-connected-types
open import foundation.contractible-types
open import foundation.dependent-pair-types
open import foundation.identity-types
open import foundation.mere-equality
open import foundation.propositional-truncations
open import foundation.propositions
open import foundation.universe-levels

open import structured-types.pointed-types

open import synthetic-homotopy-theory.free-loops
open import synthetic-homotopy-theory.universal-property-circle

Postulates

postulate 𝕊¹ : UU lzero

postulate base-𝕊¹ : 𝕊¹

postulate loop-𝕊¹ : Id base-𝕊¹ base-𝕊¹

free-loop-𝕊¹ : free-loop 𝕊¹
pr1 free-loop-𝕊¹ = base-𝕊¹
pr2 free-loop-𝕊¹ = loop-𝕊¹

𝕊¹-Pointed-Type : Pointed-Type lzero
pr1 𝕊¹-Pointed-Type = 𝕊¹
pr2 𝕊¹-Pointed-Type = base-𝕊¹

postulate ind-𝕊¹ : {l : Level}  induction-principle-circle l free-loop-𝕊¹

Properties

The dependent universal property of the circle

dependent-universal-property-𝕊¹ :
  {l : Level}  dependent-universal-property-circle l free-loop-𝕊¹
dependent-universal-property-𝕊¹ =
  dependent-universal-property-induction-principle-circle free-loop-𝕊¹ ind-𝕊¹

uniqueness-dependent-universal-property-𝕊¹ :
  {l : Level} {P : 𝕊¹  UU l} (k : free-dependent-loop free-loop-𝕊¹ P) 
  is-contr
    ( Σ ( (x : 𝕊¹)  P x)
        ( λ h 
          Eq-free-dependent-loop free-loop-𝕊¹ P
            ( ev-free-loop-Π free-loop-𝕊¹ P h) k))
uniqueness-dependent-universal-property-𝕊¹ {l} {P} =
  uniqueness-dependent-universal-property-circle
    free-loop-𝕊¹
    dependent-universal-property-𝕊¹

module _
  {l : Level} (P : 𝕊¹  UU l) (p0 : P base-𝕊¹) (α : Id (tr P loop-𝕊¹ p0) p0)
  where

  Π-𝕊¹ : UU l
  Π-𝕊¹ =
    Σ ( (x : 𝕊¹)  P x)
      ( λ h 
        Eq-free-dependent-loop free-loop-𝕊¹ P
          ( ev-free-loop-Π free-loop-𝕊¹ P h) (pair p0 α))

  apply-dependent-universal-property-𝕊¹ : Π-𝕊¹
  apply-dependent-universal-property-𝕊¹ =
    center (uniqueness-dependent-universal-property-𝕊¹ (pair p0 α))

  function-apply-dependent-universal-property-𝕊¹ : (x : 𝕊¹)  P x
  function-apply-dependent-universal-property-𝕊¹ =
    pr1 apply-dependent-universal-property-𝕊¹

  base-dependent-universal-property-𝕊¹ :
    Id (function-apply-dependent-universal-property-𝕊¹ base-𝕊¹) p0
  base-dependent-universal-property-𝕊¹ =
    pr1 (pr2 apply-dependent-universal-property-𝕊¹)

  loop-dependent-universal-property-𝕊¹ :
    Id ( apd function-apply-dependent-universal-property-𝕊¹ loop-𝕊¹ 
         base-dependent-universal-property-𝕊¹)
       ( ap (tr P loop-𝕊¹) base-dependent-universal-property-𝕊¹  α)
  loop-dependent-universal-property-𝕊¹ =
    pr2 (pr2 apply-dependent-universal-property-𝕊¹)

The universal property of the circle

universal-property-𝕊¹ :
  {l : Level}  universal-property-circle l free-loop-𝕊¹
universal-property-𝕊¹ =
  universal-property-dependent-universal-property-circle
    free-loop-𝕊¹
    dependent-universal-property-𝕊¹

uniqueness-universal-property-𝕊¹ :
  {l : Level} {X : UU l} (α : free-loop X) 
  is-contr
    ( Σ ( 𝕊¹  X)
        ( λ h  Eq-free-loop (ev-free-loop free-loop-𝕊¹ X h) α))
uniqueness-universal-property-𝕊¹ {l} {X} =
  uniqueness-universal-property-circle free-loop-𝕊¹ universal-property-𝕊¹ X

module _
  {l : Level} {X : UU l} (x : X) (α : Id x x)
  where

  Map-𝕊¹ : UU l
  Map-𝕊¹ =
    Σ ( 𝕊¹  X)
      ( λ h  Eq-free-loop (ev-free-loop free-loop-𝕊¹ X h) (pair x α))

  apply-universal-property-𝕊¹ : Map-𝕊¹
  apply-universal-property-𝕊¹ =
    center (uniqueness-universal-property-𝕊¹ (pair x α))

  map-apply-universal-property-𝕊¹ : 𝕊¹  X
  map-apply-universal-property-𝕊¹ =
    pr1 apply-universal-property-𝕊¹

  base-universal-property-𝕊¹ :
    Id (map-apply-universal-property-𝕊¹ base-𝕊¹) x
  base-universal-property-𝕊¹ =
    pr1 (pr2 apply-universal-property-𝕊¹)

  loop-universal-property-𝕊¹ :
    Id ( ap map-apply-universal-property-𝕊¹ loop-𝕊¹ 
         base-universal-property-𝕊¹)
       ( base-universal-property-𝕊¹  α)
  loop-universal-property-𝕊¹ =
    pr2 (pr2 apply-universal-property-𝕊¹)

The circle is 0-connected

mere-eq-𝕊¹ : (x y : 𝕊¹)  mere-eq x y
mere-eq-𝕊¹ =
  function-apply-dependent-universal-property-𝕊¹
    ( λ x  (y : 𝕊¹)  mere-eq x y)
    ( function-apply-dependent-universal-property-𝕊¹
      ( mere-eq base-𝕊¹)
      ( refl-mere-eq)
      ( eq-is-prop is-prop-type-trunc-Prop))
    ( eq-is-prop (is-prop-Π  y  is-prop-type-trunc-Prop)))

is-0-connected-𝕊¹ : is-0-connected 𝕊¹
is-0-connected-𝕊¹ = is-0-connected-mere-eq base-𝕊¹ (mere-eq-𝕊¹ base-𝕊¹)