Equivalences between semigroups

module group-theory.equivalences-semigroups where
Imports
open import foundation.contractible-types
open import foundation.dependent-pair-types
open import foundation.equivalences
open import foundation.function-extensionality
open import foundation.functions
open import foundation.identity-types
open import foundation.propositions
open import foundation.sets
open import foundation.structure-identity-principle
open import foundation.subtype-identity-principle
open import foundation.subtypes
open import foundation.univalence
open import foundation.universe-levels

open import group-theory.homomorphisms-semigroups
open import group-theory.semigroups

Idea

An equivalence between semigroups is an equivalence between their underlying types that preserves the binary operation.

Definition

Equivalences preserving binary operations

module _
  {l1 l2 : Level} {A : UU l1} {B : UU l2}
  where

  preserves-mul-equiv :
    (μA : A  A  A) (μB : B  B  B)  (A  B)  UU (l1  l2)
  preserves-mul-equiv μA μB e = preserves-mul μA μB (map-equiv e)

Equivalences of semigroups

module _
  {l1 l2 : Level} (G : Semigroup l1) (H : Semigroup l2)
  where

  preserves-mul-equiv-Semigroup :
    (type-Semigroup G  type-Semigroup H)  UU (l1  l2)
  preserves-mul-equiv-Semigroup e =
    preserves-mul-equiv (mul-Semigroup G) (mul-Semigroup H) e

  equiv-Semigroup : UU (l1  l2)
  equiv-Semigroup =
    Σ (type-Semigroup G  type-Semigroup H) preserves-mul-equiv-Semigroup

  is-equiv-hom-Semigroup : type-hom-Semigroup G H  UU (l1  l2)
  is-equiv-hom-Semigroup f = is-equiv (map-hom-Semigroup G H f)

Properties

The total space of all equivalences of semigroups with domain G is contractible

module _
  {l : Level} (G : Semigroup l)
  where

  center-total-preserves-mul-id-Semigroup :
    Σ ( has-associative-mul (type-Semigroup G))
      ( λ μ  preserves-mul-Semigroup G (pair (set-Semigroup G) μ) id)
  pr1 (pr1 (center-total-preserves-mul-id-Semigroup)) = mul-Semigroup G
  pr2 (pr1 (center-total-preserves-mul-id-Semigroup)) =
    associative-mul-Semigroup G
  pr2 (center-total-preserves-mul-id-Semigroup) x y = refl

  contraction-total-preserves-mul-id-Semigroup :
    ( t : Σ ( has-associative-mul (type-Semigroup G))
            ( λ μ 
              preserves-mul-Semigroup G (pair (set-Semigroup G) μ) id)) 
    Id center-total-preserves-mul-id-Semigroup t
  contraction-total-preserves-mul-id-Semigroup
    (pair (pair μ-G' associative-G') μ-id) =
    eq-type-subtype
      ( λ μ 
        preserves-mul-semigroup-Prop G (pair (set-Semigroup G) μ) id)
      ( eq-type-subtype
        ( λ μ 
          Π-Prop
            ( type-Semigroup G)
            ( λ x 
              Π-Prop
                ( type-Semigroup G)
                ( λ y 
                  Π-Prop
                    ( type-Semigroup G)
                    ( λ z 
                      Id-Prop
                        ( set-Semigroup G)
                        ( μ (μ x y) z) (μ x (μ y z))))))
        ( eq-htpy  x  eq-htpy  y  μ-id x y))))

  is-contr-total-preserves-mul-id-Semigroup :
    is-contr
      ( Σ ( has-associative-mul (type-Semigroup G))
          ( λ μ  preserves-mul (mul-Semigroup G) (pr1 μ) id))
  pr1 is-contr-total-preserves-mul-id-Semigroup =
    center-total-preserves-mul-id-Semigroup
  pr2 is-contr-total-preserves-mul-id-Semigroup =
    contraction-total-preserves-mul-id-Semigroup

  is-contr-total-equiv-Semigroup :
    is-contr (Σ (Semigroup l) (equiv-Semigroup G))
  is-contr-total-equiv-Semigroup =
    is-contr-total-Eq-structure
      ( λ H μH  preserves-mul-equiv-Semigroup G (pair H μH))
      ( is-contr-total-Eq-subtype
        ( is-contr-total-equiv (type-Semigroup G))
        ( is-prop-is-set)
        ( type-Semigroup G)
        ( id-equiv)
        ( is-set-type-Semigroup G))
      ( pair (set-Semigroup G) id-equiv)
      ( is-contr-total-preserves-mul-id-Semigroup)