The involutive type of H-Space structures on a pointed type

module structured-types.involutive-type-of-h-space-structures where
Imports
open import foundation.binary-transport
open import foundation.contractible-types
open import foundation.dependent-pair-types
open import foundation.equality-dependent-function-types
open import foundation.equivalences
open import foundation.functoriality-dependent-pair-types
open import foundation.fundamental-theorem-of-identity-types
open import foundation.homotopies
open import foundation.identity-types
open import foundation.structure-identity-principle
open import foundation.symmetric-identity-types
open import foundation.universe-levels

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

open import univalent-combinatorics.2-element-types

Idea

We construct the involutive type of H-Space structures on a pointed type

Definition

The involutive type of H-space structures on a pointed type

h-space-Involutive-Type :
  {l1 : Level} (A : Pointed-Type l1) (X : 2-Element-Type lzero)  UU l1
h-space-Involutive-Type A X =
  Σ ( (type-2-Element-Type X  type-Pointed-Type A)  type-Pointed-Type A)
    ( λ μ 
      Σ ( ( f : type-2-Element-Type X  type-Pointed-Type A) 
          ( x : type-2-Element-Type X) 
          ( p : f x  point-Pointed-Type A) 
          μ f  f (map-swap-2-Element-Type X x))
        ( λ ν 
          symmetric-Id
            ( ( X) ,
              ( λ x 
                ν (const-Pointed-Type _ A) x refl))))

Properties

Characterization of equality in the involutive type of H-space structures on a pointed type

module _
  {l1 : Level} (A : Pointed-Type l1) (X : 2-Element-Type lzero)
  where

  htpy-h-space-Involutive-Type :
    (μ μ' : h-space-Involutive-Type A X)  UU l1
  htpy-h-space-Involutive-Type μ μ' =
    Σ ( (f : type-2-Element-Type X  type-Pointed-Type A)  pr1 μ f  pr1 μ' f)
      ( λ H 
        Σ ( ( f : type-2-Element-Type X  type-Pointed-Type A) 
            ( x : type-2-Element-Type X) 
            ( p : f x  point-Pointed-Type A) 
            pr1 (pr2 μ) f x p  (H f  pr1 (pr2 μ') f x p))
          ( λ K 
            Eq-symmetric-Id
              ( ( X) ,
                ( λ x 
                  ( H (const-Pointed-Type _ A)) 
                  ( pr1 (pr2 μ') (const-Pointed-Type _ A) x refl)))
              ( tr-symmetric-Id
                ( ( X) ,
                  ( λ x  pr1 (pr2 μ) (const-Pointed-Type _ A) x refl))
                ( ( X) ,
                  ( λ x 
                    ( H (const-Pointed-Type _ A)) 
                    ( pr1 (pr2 μ') (const-Pointed-Type _ A) x refl)))
                ( id-equiv)
                ( λ x  K (const-Pointed-Type _ A) x refl)
                ( pr2 (pr2 μ)))
              ( map-equiv-symmetric-Id
                ( equiv-concat
                  ( H (const-Pointed-Type _ A))
                  ( point-Pointed-Type A))
                ( ( X) ,
                  ( λ x  pr1 (pr2 μ') (const-Pointed-Type _ A) x refl))
                ( pr2 (pr2 μ')))))

  refl-htpy-h-space-Involutive-Type :
    (μ : h-space-Involutive-Type A X)  htpy-h-space-Involutive-Type μ μ
  pr1 (refl-htpy-h-space-Involutive-Type (μ , unit-laws-μ , coh-μ)) f = refl
  pr1
    ( pr2 (refl-htpy-h-space-Involutive-Type (μ , unit-laws-μ , coh-μ))) f x p =
    refl
  pr1
    ( pr2 (pr2 (refl-htpy-h-space-Involutive-Type (μ , unit-laws-μ , coh-μ)))) =
    refl
  pr2
    ( pr2
      ( pr2 (refl-htpy-h-space-Involutive-Type (μ , unit-laws-μ , coh-μ)))) x =
    ( ( compute-pr2-tr-symmetric-Id
        ( X , ( λ x  unit-laws-μ (const-Pointed-Type _ A) x refl))
        ( X , ( λ x  unit-laws-μ (const-Pointed-Type _ A) x refl))
        ( id-equiv)
        ( λ y  refl)
        ( λ y  pr2 coh-μ y)
        ( x)) 
      ( right-unit)) 
    ( inv (ap-id (pr2 coh-μ x)))

  is-contr-total-htpy-h-space-Involutive-Type :
    ( μ : h-space-Involutive-Type A X) 
    is-contr (Σ (h-space-Involutive-Type A X) (htpy-h-space-Involutive-Type μ))
  is-contr-total-htpy-h-space-Involutive-Type (μ , ν , ρ) =
    is-contr-total-Eq-structure
      ( λ μ' νρ' H  _)
      ( is-contr-total-htpy μ)
      ( μ , refl-htpy)
      ( is-contr-total-Eq-structure
        ( λ ν' ρ' H 
          Eq-symmetric-Id
            ( ( X) ,  x  ν' (const-Pointed-Type _ A) x refl))
            ( tr-symmetric-Id
              ( X ,  x  ν (const-Pointed-Type _ A) x refl))
              ( X ,  x  ν' (const-Pointed-Type _ A) x refl))
              ( id-equiv)
              ( λ x  H (const-Pointed-Type _ A) x refl)
              ( ρ))
            ( map-equiv-symmetric-Id
              ( id-equiv)
              ( X ,  x  ν' (const-Pointed-Type _ A) x refl))
              ( ρ')))
        ( is-contr-total-Eq-Π
          ( λ f ν'  (x : type-2-Element-Type X)  ν f x ~ ν' x)
          ( λ f 
            is-contr-total-Eq-Π
              ( λ x ν'  ν f x ~ ν')
              ( λ x  is-contr-total-htpy (ν f x))))
        ( ν ,  f x p  refl))
        ( is-contr-equiv
          ( Σ ( symmetric-Id
                ( X ,  x  ν (const-Pointed-Type _ A) x refl)))
              ( Eq-symmetric-Id
                ( X , λ x  ν (const-Pointed-Type _ A) x refl)
                ( ρ)))
          ( equiv-tot
            ( λ α 
              equiv-binary-tr
                ( Eq-symmetric-Id
                  ( X ,  x  ν (const-Pointed-Type _ A) x refl)))
                ( refl-Eq-unordered-pair-tr-symmetric-Id
                  ( X ,  x  ν (const-Pointed-Type _ A) x refl))
                  ( ρ))
                ( id-equiv-symmetric-Id
                  ( X ,  x  ν (const-Pointed-Type _ A) x refl))
                  ( α))))
          ( is-contr-total-Eq-symmetric-Id
            ( X ,  x  ν (const-Pointed-Type _ A) x refl))
            ( ρ))))

  htpy-eq-h-space-Involutive-Type :
    (μ μ' : h-space-Involutive-Type A X) 
    (μ  μ')  htpy-h-space-Involutive-Type μ μ'
  htpy-eq-h-space-Involutive-Type μ .μ refl =
    refl-htpy-h-space-Involutive-Type μ

  is-equiv-htpy-eq-h-space-Involutive-Type :
    (μ μ' : h-space-Involutive-Type A X) 
    is-equiv (htpy-eq-h-space-Involutive-Type μ μ')
  is-equiv-htpy-eq-h-space-Involutive-Type μ =
    fundamental-theorem-id
      ( is-contr-total-htpy-h-space-Involutive-Type μ)
      ( htpy-eq-h-space-Involutive-Type μ)

  extensionality-h-space-Involutive-Type :
    (μ μ' : h-space-Involutive-Type A X) 
    (μ  μ')  htpy-h-space-Involutive-Type μ μ'
  pr1 (extensionality-h-space-Involutive-Type μ μ') =
    htpy-eq-h-space-Involutive-Type μ μ'
  pr2 (extensionality-h-space-Involutive-Type μ μ') =
    is-equiv-htpy-eq-h-space-Involutive-Type μ μ'

  eq-htpy-h-space-Involutive-Type :
    (μ μ' : h-space-Involutive-Type A X) 
    htpy-h-space-Involutive-Type μ μ'  μ  μ'
  eq-htpy-h-space-Involutive-Type μ μ' =
    map-inv-equiv (extensionality-h-space-Involutive-Type μ μ')