Functoriality of the loop space operation

module synthetic-homotopy-theory.functoriality-loop-spaces where
Imports
open import foundation.dependent-pair-types
open import foundation.embeddings
open import foundation.equivalences
open import foundation.faithful-maps
open import foundation.identity-types
open import foundation.universe-levels

open import structured-types.faithful-pointed-maps
open import structured-types.pointed-maps
open import structured-types.pointed-types

open import synthetic-homotopy-theory.loop-spaces

Idea

Any pointed map f : A →∗ B induces a map map-Ω f : Ω A →∗ Ω B. Furthermore, this operation respects the groupoidal operations on loop spaces.

Definition

module _
  {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Type l2) (f : A →∗ B)
  where

  map-Ω : type-Ω A  type-Ω B
  map-Ω p =
    tr-type-Ω
      ( preserves-point-pointed-map A B f)
      ( ap (map-pointed-map A B f) p)

  preserves-refl-map-Ω : Id (map-Ω refl) refl
  preserves-refl-map-Ω = preserves-refl-tr-Ω (pr2 f)

  pointed-map-Ω : Ω A →∗ Ω B
  pointed-map-Ω = pair map-Ω preserves-refl-map-Ω

  preserves-mul-map-Ω :
    (x y : type-Ω A)  Id (map-Ω (mul-Ω A x y)) (mul-Ω B (map-Ω x) (map-Ω y))
  preserves-mul-map-Ω x y =
    ( ap
      ( tr-type-Ω (preserves-point-pointed-map A B f))
      ( ap-concat (map-pointed-map A B f) x y)) 
    ( preserves-mul-tr-Ω
      ( preserves-point-pointed-map A B f)
      ( ap (map-pointed-map A B f) x)
      ( ap (map-pointed-map A B f) y))

  preserves-inv-map-Ω :
    (x : type-Ω A)  Id (map-Ω (inv-Ω A x)) (inv-Ω B (map-Ω x))
  preserves-inv-map-Ω x =
    ( ap
      ( tr-type-Ω (preserves-point-pointed-map A B f))
      ( ap-inv (map-pointed-map A B f) x)) 
    ( preserves-inv-tr-Ω
      ( preserves-point-pointed-map A B f)
      ( ap (map-pointed-map A B f) x))

Faithful pointed maps induce embeddings on loop spaces

is-emb-map-Ω :
  {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Type l2)
  (f : A →∗ B)  is-faithful (map-pointed-map A B f)  is-emb (map-Ω A B f)
is-emb-map-Ω A B f H =
  is-emb-comp
    ( tr-type-Ω (preserves-point-pointed-map A B f))
    ( ap (map-pointed-map A B f))
    ( is-emb-is-equiv (is-equiv-tr-type-Ω (preserves-point-pointed-map A B f)))
    ( H (point-Pointed-Type A) (point-Pointed-Type A))

emb-Ω :
  {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Type l2) 
  faithful-pointed-map A B  type-Ω A  type-Ω B
pr1 (emb-Ω A B f) = map-Ω A B (pointed-map-faithful-pointed-map A B f)
pr2 (emb-Ω A B f) =
  is-emb-map-Ω A B
    ( pointed-map-faithful-pointed-map A B f)
    ( is-faithful-faithful-pointed-map A B f)