# The circle

```agda
module synthetic-homotopy-theory.circle where
```

<details><summary>Imports</summary>

```agda
open import foundation.0-connected-types
open import foundation.action-on-identifications-dependent-functions
open import foundation.action-on-identifications-functions
open import foundation.commuting-squares-of-identifications
open import foundation.contractible-types
open import foundation.coproduct-types
open import foundation.dependent-identifications
open import foundation.dependent-pair-types
open import foundation.equivalences
open import foundation.function-types
open import foundation.homotopies
open import foundation.identity-types
open import foundation.mere-equality
open import foundation.negated-equality
open import foundation.negation
open import foundation.propositional-truncations
open import foundation.propositions
open import foundation.retractions
open import foundation.sections
open import foundation.transport-along-identifications
open import foundation.universe-levels
open import foundation.whiskering-identifications-concatenation

open import higher-group-theory.higher-groups

open import structured-types.pointed-types

open import synthetic-homotopy-theory.dependent-suspension-structures
open import synthetic-homotopy-theory.free-loops
open import synthetic-homotopy-theory.spheres
open import synthetic-homotopy-theory.suspension-structures
open import synthetic-homotopy-theory.suspensions-of-types
open import synthetic-homotopy-theory.universal-cover-circle
open import synthetic-homotopy-theory.universal-property-circle

open import univalent-combinatorics.standard-finite-types
```

</details>

## Idea

**The circle** is the initial type equipped with a base point and a
[loop](synthetic-homotopy-theory.loop-spaces.md).

## Postulates

```agda
postulate
  π•ŠΒΉ : UU lzero

postulate
  base-π•ŠΒΉ : π•ŠΒΉ

postulate
  loop-π•ŠΒΉ : base-π•ŠΒΉ = base-π•ŠΒΉ

free-loop-π•ŠΒΉ : free-loop π•ŠΒΉ
free-loop-π•ŠΒΉ = base-π•ŠΒΉ , loop-π•ŠΒΉ

π•ŠΒΉ-Pointed-Type : Pointed-Type lzero
π•ŠΒΉ-Pointed-Type = π•ŠΒΉ , base-π•ŠΒΉ

postulate
  ind-π•ŠΒΉ : induction-principle-circle free-loop-π•ŠΒΉ
```

## Properties

### The dependent universal property of the circle

```agda
dependent-universal-property-π•ŠΒΉ :
  dependent-universal-property-circle 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-π•ŠΒΉ) (Ξ± : 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) (p0 , Ξ±))

  apply-dependent-universal-property-π•ŠΒΉ : Ξ -π•ŠΒΉ
  apply-dependent-universal-property-π•ŠΒΉ =
    center (uniqueness-dependent-universal-property-π•ŠΒΉ (p0 , Ξ±))

  function-apply-dependent-universal-property-π•ŠΒΉ : (x : π•ŠΒΉ) β†’ P x
  function-apply-dependent-universal-property-π•ŠΒΉ =
    pr1 apply-dependent-universal-property-π•ŠΒΉ

  base-dependent-universal-property-π•ŠΒΉ :
    function-apply-dependent-universal-property-π•ŠΒΉ base-π•ŠΒΉ = p0
  base-dependent-universal-property-π•ŠΒΉ =
    pr1 (pr2 apply-dependent-universal-property-π•ŠΒΉ)

  loop-dependent-universal-property-π•ŠΒΉ :
    ( 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

```agda
universal-property-π•ŠΒΉ : universal-property-circle 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) (α : x = x)
  where

  Map-π•ŠΒΉ : UU l
  Map-π•ŠΒΉ =
    Ξ£ ( π•ŠΒΉ β†’ X)
      ( Ξ» h β†’ Eq-free-loop (ev-free-loop free-loop-π•ŠΒΉ X h) (x , Ξ±))

  apply-universal-property-π•ŠΒΉ : Map-π•ŠΒΉ
  apply-universal-property-π•ŠΒΉ =
    center (uniqueness-universal-property-π•ŠΒΉ (x , Ξ±))

  map-apply-universal-property-π•ŠΒΉ : π•ŠΒΉ β†’ X
  map-apply-universal-property-π•ŠΒΉ =
    pr1 apply-universal-property-π•ŠΒΉ

  base-universal-property-π•ŠΒΉ :
    map-apply-universal-property-π•ŠΒΉ base-π•ŠΒΉ = x
  base-universal-property-π•ŠΒΉ =
    pr1 (pr2 apply-universal-property-π•ŠΒΉ)

  loop-universal-property-π•ŠΒΉ :
    ap map-apply-universal-property-π•ŠΒΉ loop-π•ŠΒΉ βˆ™ base-universal-property-π•ŠΒΉ =
    base-universal-property-π•ŠΒΉ βˆ™ Ξ±
  loop-universal-property-π•ŠΒΉ =
    pr2 (pr2 apply-universal-property-π•ŠΒΉ)
```

### The loop of the circle is nontrivial

```agda
is-nontrivial-loop-π•ŠΒΉ : loop-π•ŠΒΉ β‰  refl
is-nontrivial-loop-π•ŠΒΉ =
  is-nontrivial-loop-dependent-universal-property-circle
    ( free-loop-π•ŠΒΉ)
    ( dependent-universal-property-π•ŠΒΉ)
```

### The circle is 0-connected

```agda
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 base-π•ŠΒΉ)
      ( 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-π•ŠΒΉ)
```

### The circle as a higher group

```agda
π•ŠΒΉ-∞-Group : ∞-Group lzero
pr1 π•ŠΒΉ-∞-Group = π•ŠΒΉ-Pointed-Type
pr2 π•ŠΒΉ-∞-Group = is-0-connected-π•ŠΒΉ
```

### The circle is equivalent to the 1-sphere

The [1-sphere](synthetic-homotopy-theory.spheres.md) is defined as the
[suspension](synthetic-homotopy-theory.suspensions-of-types.md) of the
[0-sphere](synthetic-homotopy-theory.spheres.md). We may understand this as the
1-sphere having two points `N` and `S` and two
[identifications](foundation-core.identity-types.md) (meridians) `e, w : N = S`
between them. The following shows that the 1-sphere and the circle are
[equivalent](foundation-core.equivalences.md).

#### The map from the circle to the 1-sphere

The map from the circle to the 1-sphere is defined by mapping the basepoint to
`N` and the loop to the composite of `e` and the inverse of `w`, which forms a
loop at `N`. The choice of which meridian to start with is arbitrary, but
informs the rest of the construction hereafter.

```agda
north-sphere-1-loop : north-sphere 1 = north-sphere 1
north-sphere-1-loop =
  ( meridian-sphere 0 (zero-Fin 1)) βˆ™
  ( inv (meridian-sphere 0 (one-Fin 1)))

sphere-1-circle : π•ŠΒΉ β†’ sphere 1
sphere-1-circle =
  map-apply-universal-property-π•ŠΒΉ (north-sphere 1) north-sphere-1-loop

sphere-1-circle-base-π•ŠΒΉ-eq-north-sphere-1 :
  sphere-1-circle base-π•ŠΒΉ = north-sphere 1
sphere-1-circle-base-π•ŠΒΉ-eq-north-sphere-1 =
  base-universal-property-π•ŠΒΉ (north-sphere 1) north-sphere-1-loop

sphere-1-circle-base-π•ŠΒΉ-eq-south-sphere-1 :
  sphere-1-circle base-π•ŠΒΉ = south-sphere 1
sphere-1-circle-base-π•ŠΒΉ-eq-south-sphere-1 =
  ( sphere-1-circle-base-π•ŠΒΉ-eq-north-sphere-1) βˆ™
  ( meridian-sphere 0 (one-Fin 1))
```

#### The map from the 1-sphere to the circle

The map from the 1-sphere to the circle is defined by mapping both `N` and `S`
to the basepoint, `e` to the loop and `w` to `refl` at the basepoint. Were we to
map both meridians to the loop, we would wrap the 1-sphere twice around the
circle, which would not form an equivalence.

```agda
map-sphere-0-eq-base-π•ŠΒΉ : (sphere 0) β†’ base-π•ŠΒΉ = base-π•ŠΒΉ
map-sphere-0-eq-base-π•ŠΒΉ (inl n) = loop-π•ŠΒΉ
map-sphere-0-eq-base-π•ŠΒΉ (inr n) = refl

suspension-structure-sphere-0-π•ŠΒΉ :
  suspension-structure (sphere 0) π•ŠΒΉ
pr1 suspension-structure-sphere-0-π•ŠΒΉ = base-π•ŠΒΉ
pr1 (pr2 suspension-structure-sphere-0-π•ŠΒΉ) = base-π•ŠΒΉ
pr2 (pr2 suspension-structure-sphere-0-π•ŠΒΉ) = map-sphere-0-eq-base-π•ŠΒΉ

circle-sphere-1 : sphere 1 β†’ π•ŠΒΉ
circle-sphere-1 =
  cogap-suspension
    ( suspension-structure-sphere-0-π•ŠΒΉ)

circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ :
  circle-sphere-1 (north-sphere 1) = base-π•ŠΒΉ
circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ =
  compute-north-cogap-suspension
    ( suspension-structure-sphere-0-π•ŠΒΉ)

circle-sphere-1-south-sphere-1-eq-base-π•ŠΒΉ :
  circle-sphere-1 (south-sphere 1) = base-π•ŠΒΉ
circle-sphere-1-south-sphere-1-eq-base-π•ŠΒΉ =
  compute-south-cogap-suspension
    ( suspension-structure-sphere-0-π•ŠΒΉ)
```

#### The map from the circle to the 1-sphere has a section

Some care needs to be taken when proving this part of the equivalence. The point
`N` is mapped to the basepoint and then back to `N`, but so is the point `S`. It
needs to be further identified back with `S` using the meridian `w`. The
meridian `w` is thus mapped to `refl` and then back to `w βˆ™ refl = w`, while the
meridian `e` is mapped to the loop and then back to `w βˆ™ wβ»ΒΉβˆ™ e = e`.

```agda
sphere-1-circle-sphere-1-north-sphere-1 :
    ( sphere-1-circle (circle-sphere-1 (north-sphere 1))) = ( north-sphere 1)
sphere-1-circle-sphere-1-north-sphere-1 =
  ( ap sphere-1-circle circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ) βˆ™
  ( sphere-1-circle-base-π•ŠΒΉ-eq-north-sphere-1)

sphere-1-circle-sphere-1-south-sphere-1 :
    ( sphere-1-circle (circle-sphere-1 (south-sphere 1))) = ( south-sphere 1)
sphere-1-circle-sphere-1-south-sphere-1 =
  ( ap sphere-1-circle circle-sphere-1-south-sphere-1-eq-base-π•ŠΒΉ) βˆ™
  ( sphere-1-circle-base-π•ŠΒΉ-eq-south-sphere-1)

apply-up-suspension-meridian-suspension-sphere-1-circle-sphere-1 :
  ( n : Fin 2) β†’
  coherence-square-identifications
    ( ap
      ( sphere-1-circle)
      ( ( circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ) βˆ™
        ( map-sphere-0-eq-base-π•ŠΒΉ n)))
    ( ap sphere-1-circle (ap circle-sphere-1 (meridian-suspension n)))
    ( sphere-1-circle-base-π•ŠΒΉ-eq-south-sphere-1)
    ( sphere-1-circle-sphere-1-south-sphere-1)
apply-up-suspension-meridian-suspension-sphere-1-circle-sphere-1
  n =
  ( inv
    ( assoc
      ( ap sphere-1-circle (ap circle-sphere-1 (meridian-suspension n)))
      ( ap sphere-1-circle circle-sphere-1-south-sphere-1-eq-base-π•ŠΒΉ)
      ( sphere-1-circle-base-π•ŠΒΉ-eq-south-sphere-1))) βˆ™
  ( right-whisker-concat
    ( inv
      ( ap-concat
        ( sphere-1-circle)
        ( ap circle-sphere-1 (meridian-sphere 0 n))
        ( circle-sphere-1-south-sphere-1-eq-base-π•ŠΒΉ)))
    ( sphere-1-circle-base-π•ŠΒΉ-eq-south-sphere-1)) βˆ™
  ( ap
    ( Ξ» x β†’
      ( ap sphere-1-circle x) βˆ™
      ( sphere-1-circle-base-π•ŠΒΉ-eq-south-sphere-1))
    ( compute-meridian-cogap-suspension
      ( suspension-structure-sphere-0-π•ŠΒΉ)
      ( n)))

apply-loop-universal-property-π•ŠΒΉ-sphere-1-circle-sphere-1 :
  coherence-square-identifications
    ( sphere-1-circle-base-π•ŠΒΉ-eq-north-sphere-1)
    ( ap sphere-1-circle loop-π•ŠΒΉ)
    ( meridian-sphere 0 (zero-Fin 1))
    ( sphere-1-circle-base-π•ŠΒΉ-eq-south-sphere-1)
apply-loop-universal-property-π•ŠΒΉ-sphere-1-circle-sphere-1 =
  ( inv
    ( assoc
      ( ap sphere-1-circle loop-π•ŠΒΉ)
      ( sphere-1-circle-base-π•ŠΒΉ-eq-north-sphere-1)
      ( meridian-sphere 0 (one-Fin 1)))) βˆ™
  ( right-whisker-concat
    ( loop-universal-property-π•ŠΒΉ
      ( north-sphere 1)
      ( north-sphere-1-loop))
    ( meridian-sphere 0 (one-Fin 1))) βˆ™
  ( assoc
    ( sphere-1-circle-base-π•ŠΒΉ-eq-north-sphere-1)
    ( north-sphere-1-loop)
    ( meridian-sphere 0 (one-Fin 1))) βˆ™
  ( left-whisker-concat
    ( sphere-1-circle-base-π•ŠΒΉ-eq-north-sphere-1)
    ( is-section-inv-concat'
      ( meridian-sphere 0 (one-Fin 1))
      ( meridian-sphere 0 (zero-Fin 1))))

map-sphere-1-circle-sphere-1-meridian :
  ( n : Fin 2) β†’
  ( dependent-identification
    ( Ξ» x β†’ (sphere-1-circle (circle-sphere-1 x)) = x)
    ( meridian-suspension-structure
      ( suspension-structure-suspension (Fin 2))
      ( n))
    ( sphere-1-circle-sphere-1-north-sphere-1)
    ( sphere-1-circle-sphere-1-south-sphere-1))
map-sphere-1-circle-sphere-1-meridian (inl (inr n)) =
  map-compute-dependent-identification-eq-value-comp-id
    ( sphere-1-circle)
    ( circle-sphere-1)
    ( meridian-sphere 0 (inl (inr n)))
    ( sphere-1-circle-sphere-1-north-sphere-1)
    ( sphere-1-circle-sphere-1-south-sphere-1)
    ( ( apply-up-suspension-meridian-suspension-sphere-1-circle-sphere-1
        ( inl (inr n))) βˆ™
      ( right-whisker-concat
        ( ap-concat
          ( sphere-1-circle)
          ( circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ)
          ( loop-π•ŠΒΉ))
        ( sphere-1-circle-base-π•ŠΒΉ-eq-south-sphere-1)) βˆ™
      ( assoc
        ( ap sphere-1-circle (circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ))
        ( ap sphere-1-circle loop-π•ŠΒΉ)
        ( sphere-1-circle-base-π•ŠΒΉ-eq-south-sphere-1)) βˆ™
      ( left-whisker-concat
        ( ap sphere-1-circle (circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ))
        ( apply-loop-universal-property-π•ŠΒΉ-sphere-1-circle-sphere-1)) βˆ™
      ( inv
        ( assoc
          ( ap sphere-1-circle (circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ))
          ( sphere-1-circle-base-π•ŠΒΉ-eq-north-sphere-1)
          ( meridian-sphere 0 (zero-Fin 1)))))
map-sphere-1-circle-sphere-1-meridian (inr n) =
  map-compute-dependent-identification-eq-value-comp-id
    ( sphere-1-circle)
    ( circle-sphere-1)
    ( meridian-sphere 0 (inr n))
    ( sphere-1-circle-sphere-1-north-sphere-1)
    ( sphere-1-circle-sphere-1-south-sphere-1)
    ( ( apply-up-suspension-meridian-suspension-sphere-1-circle-sphere-1
        ( inr n)) βˆ™
      ( ap
        ( Ξ» x β†’
          ( ap sphere-1-circle x) βˆ™
          ( sphere-1-circle-base-π•ŠΒΉ-eq-south-sphere-1))
        ( right-unit {p = circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ})) βˆ™
      ( inv
        ( assoc
          ( ap sphere-1-circle circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ)
          ( sphere-1-circle-base-π•ŠΒΉ-eq-north-sphere-1)
          ( meridian-sphere 0 (one-Fin 1)))))

dependent-suspension-structure-sphere-1-circle-sphere-1 :
  dependent-suspension-structure
    ( Ξ» x β†’ (sphere-1-circle (circle-sphere-1 x)) = x)
    ( suspension-structure-suspension (Fin 2))
pr1 dependent-suspension-structure-sphere-1-circle-sphere-1 =
  sphere-1-circle-sphere-1-north-sphere-1
pr1 (pr2 dependent-suspension-structure-sphere-1-circle-sphere-1) =
  sphere-1-circle-sphere-1-south-sphere-1
pr2 (pr2 dependent-suspension-structure-sphere-1-circle-sphere-1) =
  map-sphere-1-circle-sphere-1-meridian

sphere-1-circle-sphere-1 : section sphere-1-circle
pr1 sphere-1-circle-sphere-1 = circle-sphere-1
pr2 sphere-1-circle-sphere-1 =
  dependent-cogap-suspension
    ( Ξ» x β†’ (sphere-1-circle (circle-sphere-1 x)) = x)
    ( dependent-suspension-structure-sphere-1-circle-sphere-1)
```

#### The map from the circle to the 1-sphere has a retraction

The basepoint is mapped to `N` and then back to the basepoint, while the loop is
mapped to `wβ»ΒΉβˆ™ e` and then back to `refl⁻¹ βˆ™ loop = loop`.

```agda
circle-sphere-1-circle-base-π•ŠΒΉ :
  circle-sphere-1 (sphere-1-circle base-π•ŠΒΉ) = base-π•ŠΒΉ
circle-sphere-1-circle-base-π•ŠΒΉ =
  ( ap circle-sphere-1 sphere-1-circle-base-π•ŠΒΉ-eq-north-sphere-1) βˆ™
  ( circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ)

apply-up-suspension-meridian-one-suspension-circle-sphere-1-circle :
  coherence-square-identifications
    ( refl)
    ( ap circle-sphere-1 (inv (meridian-sphere 0 (one-Fin 1))))
    ( circle-sphere-1-south-sphere-1-eq-base-π•ŠΒΉ)
    ( circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ)
apply-up-suspension-meridian-one-suspension-circle-sphere-1-circle =
  ( right-whisker-concat
    ( ap-inv
      ( circle-sphere-1)
      ( meridian-suspension (one-Fin 1)))
    ( circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ)) βˆ™
  ( inv right-unit) βˆ™
  ( assoc
    ( inv (ap circle-sphere-1 (meridian-suspension (one-Fin 1))))
    ( circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ)
    ( refl)) βˆ™
  ( left-whisker-concat
    ( inv (ap circle-sphere-1 (meridian-suspension (one-Fin 1))))
    ( inv
      ( compute-meridian-cogap-suspension
          ( suspension-structure-sphere-0-π•ŠΒΉ)
          ( one-Fin 1)))) βˆ™
  ( inv
    ( assoc
      ( inv (ap circle-sphere-1 (meridian-suspension (one-Fin 1))))
      ( ap circle-sphere-1 (meridian-suspension (one-Fin 1)))
      ( circle-sphere-1-south-sphere-1-eq-base-π•ŠΒΉ))) βˆ™
  ( right-whisker-concat
    ( left-inv (ap circle-sphere-1 (meridian-suspension (one-Fin 1))))
    ( circle-sphere-1-south-sphere-1-eq-base-π•ŠΒΉ))

apply-up-suspension-meridian-zero-suspension-circle-sphere-1-circle :
  coherence-square-identifications
    ( circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ)
    ( ap (circle-sphere-1) (north-sphere-1-loop))
    ( loop-π•ŠΒΉ)
    ( circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ)
apply-up-suspension-meridian-zero-suspension-circle-sphere-1-circle =
  ( right-whisker-concat
    ( ap-concat
      ( circle-sphere-1)
      ( meridian-sphere 0 (zero-Fin 1))
      ( inv (meridian-suspension (one-Fin 1))))
    ( circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ)) βˆ™
  ( assoc
    ( ap circle-sphere-1 (meridian-suspension (zero-Fin 1)))
    ( ap circle-sphere-1 (inv ( meridian-sphere 0 (one-Fin 1))))
    ( circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ)) βˆ™
  ( left-whisker-concat
    ( ap circle-sphere-1 (meridian-suspension (zero-Fin 1)))
    ( apply-up-suspension-meridian-one-suspension-circle-sphere-1-circle)) βˆ™
  ( compute-meridian-cogap-suspension
    ( suspension-structure-sphere-0-π•ŠΒΉ)
    ( zero-Fin 1))

circle-sphere-1-circle-loop-π•ŠΒΉ :
  coherence-square-identifications
    ( circle-sphere-1-circle-base-π•ŠΒΉ)
    ( ap circle-sphere-1 (ap sphere-1-circle loop-π•ŠΒΉ))
    ( loop-π•ŠΒΉ)
    ( circle-sphere-1-circle-base-π•ŠΒΉ)
circle-sphere-1-circle-loop-π•ŠΒΉ =
  ( inv
    ( assoc
      ( ap circle-sphere-1 (ap sphere-1-circle loop-π•ŠΒΉ))
      ( ap
        ( circle-sphere-1)
        ( sphere-1-circle-base-π•ŠΒΉ-eq-north-sphere-1))
      ( circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ)) βˆ™
    ( right-whisker-concat
      ( inv
        ( ap-concat
          ( circle-sphere-1)
          ( ap sphere-1-circle loop-π•ŠΒΉ)
          ( sphere-1-circle-base-π•ŠΒΉ-eq-north-sphere-1)))
      ( circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ)) βˆ™
    ( right-whisker-concat
      ( ap
        ( ap circle-sphere-1)
        ( loop-universal-property-π•ŠΒΉ
          ( north-sphere 1)
          ( north-sphere-1-loop)))
      ( circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ)) βˆ™
    ( right-whisker-concat
      ( ap-concat
        ( circle-sphere-1)
        ( sphere-1-circle-base-π•ŠΒΉ-eq-north-sphere-1)
        ( north-sphere-1-loop))
      ( circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ)) βˆ™
    ( assoc
      ( ap circle-sphere-1 sphere-1-circle-base-π•ŠΒΉ-eq-north-sphere-1)
      ( ap circle-sphere-1 north-sphere-1-loop)
      ( circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ)) βˆ™
    ( left-whisker-concat
      ( ap circle-sphere-1 sphere-1-circle-base-π•ŠΒΉ-eq-north-sphere-1)
      ( apply-up-suspension-meridian-zero-suspension-circle-sphere-1-circle)) βˆ™
    ( inv
      ( assoc
        ( ap circle-sphere-1 sphere-1-circle-base-π•ŠΒΉ-eq-north-sphere-1)
        ( circle-sphere-1-north-sphere-1-eq-base-π•ŠΒΉ)
        ( loop-π•ŠΒΉ))))

circle-sphere-1-circle : retraction sphere-1-circle
pr1 circle-sphere-1-circle = circle-sphere-1
pr2 circle-sphere-1-circle =
  function-apply-dependent-universal-property-π•ŠΒΉ
    ( Ξ» x β†’ (circle-sphere-1 (sphere-1-circle x)) = x)
    ( circle-sphere-1-circle-base-π•ŠΒΉ)
    ( map-compute-dependent-identification-eq-value-comp-id
      ( circle-sphere-1)
      ( sphere-1-circle)
      ( loop-π•ŠΒΉ)
      ( circle-sphere-1-circle-base-π•ŠΒΉ)
      ( circle-sphere-1-circle-base-π•ŠΒΉ)
      ( circle-sphere-1-circle-loop-π•ŠΒΉ))
```

#### The equivalence between the circle and the 1-sphere

```agda
is-equiv-sphere-1-circle : is-equiv sphere-1-circle
pr1 is-equiv-sphere-1-circle =
  sphere-1-circle-sphere-1
pr2 is-equiv-sphere-1-circle =
  circle-sphere-1-circle

equiv-sphere-1-circle : π•ŠΒΉ ≃ sphere 1
pr1 equiv-sphere-1-circle = sphere-1-circle
pr2 equiv-sphere-1-circle = is-equiv-sphere-1-circle
```

## See also

### Table of files related to cyclic types, groups, and rings

{{#include tables/cyclic-types.md}}