Hatcher's acyclic type

module synthetic-homotopy-theory.hatchers-acyclic-type where
Imports
open import foundation.cartesian-product-types
open import foundation.commuting-squares-of-identifications
open import foundation.contractible-types
open import foundation.dependent-pair-types
open import foundation.equivalences
open import foundation.functoriality-cartesian-product-types
open import foundation.functoriality-dependent-pair-types
open import foundation.fundamental-theorem-of-identity-types
open import foundation.identity-types
open import foundation.structure-identity-principle
open import foundation.type-arithmetic-cartesian-product-types
open import foundation.type-arithmetic-dependent-pair-types
open import foundation.universe-levels

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

open import synthetic-homotopy-theory.double-loop-spaces
open import synthetic-homotopy-theory.functoriality-loop-spaces
open import synthetic-homotopy-theory.loop-spaces
open import synthetic-homotopy-theory.powers-of-loops

Idea

Hatcher's example of an acyclic type is a higher inductive type equipped with a point and two loops a and b, and identifications witnessing that a⁵ = b³ and b³ = (ab)².

Definitions

The structure of Hatcher's acyclic type

structure-Hatcher-Acyclic-Type : {l : Level}  Pointed-Type l  UU l
structure-Hatcher-Acyclic-Type A =
  Σ ( type-Ω A)
    ( λ a 
      Σ ( type-Ω A)
        ( λ b 
          ( power-nat-Ω 5 A a  power-nat-Ω 3 A b) ×
          ( power-nat-Ω 3 A b  power-nat-Ω 2 A (a  b))))

Algebras with the structure of Hatcher's acyclic type

algebra-Hatcher-Acyclic-Type : (l : Level)  UU (lsuc l)
algebra-Hatcher-Acyclic-Type l =
  Σ (Pointed-Type l) structure-Hatcher-Acyclic-Type

Morphisms of types equipped with the structure of Hatcher's acyclic type

hom-algebra-Hatcher-Acyclic-Type :
  {l1 l2 : Level}  algebra-Hatcher-Acyclic-Type l1 
  algebra-Hatcher-Acyclic-Type l2  UU (l1  l2)
hom-algebra-Hatcher-Acyclic-Type
  (A , a1 , a2 , r1 , r2) (B , b1 , b2 , s1 , s2) =
  Σ ( A →∗ B)
    ( λ f 
      Σ ( map-Ω A B f a1  b1)
        ( λ u 
          Σ ( map-Ω A B f a2  b2)
            ( λ v 
              ( coherence-square-identifications
                ( map-power-nat-Ω 5 A B f a1  ap (power-nat-Ω 5 B) u)
                ( s1)
                ( ap (map-Ω A B f) r1)
                ( map-power-nat-Ω 3 A B f a2  ap (power-nat-Ω 3 B) v)) ×
              coherence-square-identifications
                ( map-power-nat-Ω 3 A B f a2  ap (power-nat-Ω 3 B) v)
                ( s2)
                ( ap (map-Ω A B f) r2)
                ( ( map-power-nat-Ω 2 A B f (a1  a2)) 
                  ( ap
                    ( power-nat-Ω 2 B)
                    ( ( preserves-mul-map-Ω A B f a1 a2) 
                      ( ap-binary _∙_ u v)))))))

The Hatcher acyclic type is the initial Hatcher acyclic algebra

is-initial-algebra-Hatcher-Acyclic-Type :
  {l1 : Level} (l : Level)
  (A : algebra-Hatcher-Acyclic-Type l1)  UU (l1  lsuc l)
is-initial-algebra-Hatcher-Acyclic-Type l A =
  (B : algebra-Hatcher-Acyclic-Type l) 
  is-contr (hom-algebra-Hatcher-Acyclic-Type A B)

Properties

Characterization of identifications of Hatcher acyclic type structures

module _
  {l : Level} (A : Pointed-Type l) (s : structure-Hatcher-Acyclic-Type A)
  where

  Eq-structure-Hatcher-Acyclic-Type :
    structure-Hatcher-Acyclic-Type A  UU l
  Eq-structure-Hatcher-Acyclic-Type t =
    Σ ( pr1 s  pr1 t)
      ( λ p 
        Σ ( pr1 (pr2 s)  pr1 (pr2 t))
          ( λ q 
            ( ( pr1 (pr2 (pr2 s))  ap (power-nat-Ω 3 A) q) 
              ( (ap (power-nat-Ω 5 A) p)  pr1 (pr2 (pr2 t)))) ×
            ( ( pr2 (pr2 (pr2 s))  ap (power-nat-Ω 2 A) (ap-binary _∙_ p q)) 
              ( ap (power-nat-Ω 3 A) q  pr2 (pr2 (pr2 t))))))

  refl-Eq-structure-Hatcher-Acyclic-Type :
    Eq-structure-Hatcher-Acyclic-Type s
  pr1 refl-Eq-structure-Hatcher-Acyclic-Type = refl
  pr1 (pr2 refl-Eq-structure-Hatcher-Acyclic-Type) = refl
  pr1 (pr2 (pr2 refl-Eq-structure-Hatcher-Acyclic-Type)) = right-unit
  pr2 (pr2 (pr2 refl-Eq-structure-Hatcher-Acyclic-Type)) = right-unit

  is-contr-total-Eq-structure-Hatcher-Acyclic-Type :
    is-contr
      ( Σ ( structure-Hatcher-Acyclic-Type A)
          ( Eq-structure-Hatcher-Acyclic-Type))
  is-contr-total-Eq-structure-Hatcher-Acyclic-Type =
    is-contr-total-Eq-structure
      ( λ (ω : type-Ω A) u (p : pr1 s  ω) 
          Σ (pr1 (pr2 s)  pr1 u)
           q 
             ((pr1 (pr2 (pr2 s))  ap (power-nat-Ω 3 A) q) 
              (ap (power-nat-Ω 5 A) p  pr1 (pr2 u))) ×
             ((pr2 (pr2 (pr2 s))  ap (power-nat-Ω 2 A) (ap-binary _∙_ p q)) 
              (ap (power-nat-Ω 3 A) q  pr2 (pr2 u)))))
      ( is-contr-total-path (pr1 s))
      ( pr1 s , refl)
      ( is-contr-total-Eq-structure
        ( λ ω u p 
          Σ ( ( pr1 (pr2 (pr2 s))  ap (power-nat-Ω 3 A) p) 
              ( ap (power-nat-Ω 5 A) {pr1 s} refl  pr1 u))
            ( λ a 
              ( ( pr2 (pr2 (pr2 s))) 
                ( ap
                  ( power-nat-Ω 2 A)
                  ( ap-binary _∙_ {pr1 s} {pr1 s} refl p))) 
              ( ap (power-nat-Ω 3 A) p  pr2 u)))
        ( is-contr-total-path (pr1 (pr2 s)))
        ( pr1 (pr2 s) , refl)
        ( is-contr-total-Eq-structure
          ( λ u v w  Id (pr2 (pr2 (pr2 s))  refl) v)
          ( is-contr-total-path (pr1 (pr2 (pr2 s))  refl))
          ( pr1 (pr2 (pr2 s)) , right-unit)
          ( is-contr-total-path (pr2 (pr2 (pr2 s))  refl))))

  Eq-eq-structure-Hatcher-Acyclic-Type :
    (t : structure-Hatcher-Acyclic-Type A) 
    (s  t)  Eq-structure-Hatcher-Acyclic-Type t
  Eq-eq-structure-Hatcher-Acyclic-Type .s refl =
    refl-Eq-structure-Hatcher-Acyclic-Type

  is-equiv-Eq-eq-structure-Hatcher-Acyclic-Type :
    (t : structure-Hatcher-Acyclic-Type A) 
    is-equiv (Eq-eq-structure-Hatcher-Acyclic-Type t)
  is-equiv-Eq-eq-structure-Hatcher-Acyclic-Type =
    fundamental-theorem-id
      is-contr-total-Eq-structure-Hatcher-Acyclic-Type
      Eq-eq-structure-Hatcher-Acyclic-Type

  extensionality-structure-Hatcher-Acyclic-Type :
    (t : structure-Hatcher-Acyclic-Type A) 
    (s  t)  Eq-structure-Hatcher-Acyclic-Type t
  pr1 (extensionality-structure-Hatcher-Acyclic-Type t) =
    Eq-eq-structure-Hatcher-Acyclic-Type t
  pr2 (extensionality-structure-Hatcher-Acyclic-Type t) =
    is-equiv-Eq-eq-structure-Hatcher-Acyclic-Type t

  eq-Eq-structure-Hatcher-Acyclic-Type :
    (t : structure-Hatcher-Acyclic-Type A) 
    Eq-structure-Hatcher-Acyclic-Type t  s  t
  eq-Eq-structure-Hatcher-Acyclic-Type t =
    map-inv-equiv (extensionality-structure-Hatcher-Acyclic-Type t)

Loop spaces uniquely have the structure of a Hatcher acyclic type

module _
  {l : Level} (A : Pointed-Type l)
  where

  is-contr-structure-Hatcher-Acyclic-Type-Ω :
    is-contr (structure-Hatcher-Acyclic-Type (Ω A))
  is-contr-structure-Hatcher-Acyclic-Type-Ω =
    is-contr-equiv
      ( Σ (type-Ω (Ω A))  a  refl  a))
      ( equiv-tot
        ( λ a 
          ( ( inv-equiv
              ( equiv-ap
                ( equiv-concat' (refl-Ω A) (power-nat-Ω 5 (Ω A) a))
                ( refl-Ω (Ω A))
                ( a))) ∘e
            ( equiv-concat'
              ( power-nat-Ω 5 (Ω A) a)
              ( ( inv (power-nat-mul-Ω 3 2 (Ω A) a)) 
                ( power-nat-succ-Ω' 5 (Ω A) a)))) ∘e
          ( ( ( left-unit-law-Σ-is-contr
                ( is-contr-total-path' (a  a))
                ( a  a , refl)) ∘e
              ( inv-associative-Σ
                ( type-Ω (Ω A))
                ( λ b  b  (a  a))
                ( λ bq 
                  power-nat-Ω 5 (Ω A) a  power-nat-Ω 3 (Ω A) (pr1 bq)))) ∘e
            ( equiv-tot
              ( λ b 
                ( commutative-prod) ∘e
                ( equiv-prod
                  ( id-equiv)
                  ( ( ( inv-equiv
                        ( equiv-ap
                          ( equiv-concat' (refl-Ω A) (b  b))
                          ( b)
                          ( a  a))) ∘e
                      ( equiv-concat
                        ( inv (power-nat-add-Ω 1 2 (Ω A) b))
                        ( (a  a)  (b  b)))) ∘e
                    ( equiv-concat'
                      ( power-nat-Ω 3 (Ω A) b)
                      ( interchange-concat-Ω² a b a b)))))))))
        ( is-contr-total-path refl)