The multiplication operation on the circle
module synthetic-homotopy-theory.multiplication-circle where
Imports
open import foundation.dependent-pair-types open import foundation.function-extensionality open import foundation.functions open import foundation.homotopies open import foundation.identity-types open import foundation.universe-levels open import structured-types.pointed-homotopies open import structured-types.pointed-maps open import synthetic-homotopy-theory.circle
Idea
Classically, the circle can be viewed as the subset of the complex numbers of absolute value 1. The absolute value of a product of complex numbers is the product of their absolute values. This implies that when we multiply two complex numbers on the unit circle, the result is a complex number on the unit circle. This multiplicative structure carries over to the homotopy type of the circle.
Definition
Homotopy id ~ id
of degree one
htpy-id-id-Π-𝕊¹ : Π-𝕊¹ ( eq-value id id) ( loop-𝕊¹) ( map-compute-path-over-eq-value-id-id loop-𝕊¹ loop-𝕊¹ loop-𝕊¹ refl) htpy-id-id-Π-𝕊¹ = apply-dependent-universal-property-𝕊¹ ( eq-value id id) ( loop-𝕊¹) ( map-compute-path-over-eq-value-id-id loop-𝕊¹ loop-𝕊¹ loop-𝕊¹ refl) htpy-id-id-𝕊¹ : (x : 𝕊¹) → Id x x htpy-id-id-𝕊¹ = pr1 htpy-id-id-Π-𝕊¹ htpy-id-id-base-𝕊¹ : Id (htpy-id-id-𝕊¹ base-𝕊¹) loop-𝕊¹ htpy-id-id-base-𝕊¹ = pr1 (pr2 htpy-id-id-Π-𝕊¹)
Multiplication on the circle
Mul-Π-𝕊¹ : 𝕊¹ → UU lzero Mul-Π-𝕊¹ x = 𝕊¹-Pointed-Type →∗ (pair 𝕊¹ x) path-over-Mul-Π-𝕊¹ : {x : 𝕊¹} (p : Id base-𝕊¹ x) (q : Mul-Π-𝕊¹ base-𝕊¹) (r : Mul-Π-𝕊¹ x) → (H : pr1 q ~ pr1 r) → Id (pr2 q ∙ p) (H base-𝕊¹ ∙ pr2 r) → Id (tr Mul-Π-𝕊¹ p q) r path-over-Mul-Π-𝕊¹ {x} refl q r H u = eq-htpy-pointed-map ( 𝕊¹-Pointed-Type) ( 𝕊¹-Pointed-Type) ( q) ( r) ( pair H (con-inv (H base-𝕊¹) (pr2 r) (pr2 q) (inv (inv right-unit ∙ u)))) eq-id-id-𝕊¹-Pointed-Type : Id (tr Mul-Π-𝕊¹ loop-𝕊¹ id-pointed-map) id-pointed-map eq-id-id-𝕊¹-Pointed-Type = path-over-Mul-Π-𝕊¹ loop-𝕊¹ ( id-pointed-map) ( id-pointed-map) ( htpy-id-id-𝕊¹) ( inv htpy-id-id-base-𝕊¹ ∙ inv right-unit) mul-Π-𝕊¹ : Π-𝕊¹ (Mul-Π-𝕊¹) (id-pointed-map) (eq-id-id-𝕊¹-Pointed-Type) mul-Π-𝕊¹ = apply-dependent-universal-property-𝕊¹ ( Mul-Π-𝕊¹) ( id-pointed-map) ( eq-id-id-𝕊¹-Pointed-Type) mul-𝕊¹ : 𝕊¹ → 𝕊¹ → 𝕊¹ mul-𝕊¹ x = pr1 (pr1 mul-Π-𝕊¹ x) left-unit-law-mul-𝕊¹ : (x : 𝕊¹) → Id (mul-𝕊¹ base-𝕊¹ x) x left-unit-law-mul-𝕊¹ = htpy-eq (ap pr1 (pr1 (pr2 mul-Π-𝕊¹))) right-unit-law-mul-𝕊¹ : (x : 𝕊¹) → Id (mul-𝕊¹ x base-𝕊¹) x right-unit-law-mul-𝕊¹ x = pr2 (pr1 mul-Π-𝕊¹ x)