Isomorphisms of monoids
Content created by Egbert Rijke, Fredrik Bakke and Gregor Perčič.
Created on 2023-09-21.
Last modified on 2023-11-24.
module group-theory.isomorphisms-monoids where
Imports
open import category-theory.isomorphisms-in-large-precategories open import foundation.function-types open import foundation.homotopies open import foundation.identity-types open import foundation.propositions open import foundation.sets open import foundation.transport-along-identifications open import foundation.universe-levels open import group-theory.homomorphisms-monoids open import group-theory.invertible-elements-monoids open import group-theory.monoids open import group-theory.precategory-of-monoids
Idea
An isomorphism of monoids is an invertible homomorphism of monoids.
Definitions
The predicate of being an isomorphism
module _ {l1 l2 : Level} (M : Monoid l1) (N : Monoid l2) (f : hom-Monoid M N) where is-iso-Monoid : UU (l1 ⊔ l2) is-iso-Monoid = is-iso-Large-Precategory Monoid-Large-Precategory {X = M} {Y = N} f hom-inv-is-iso-Monoid : is-iso-Monoid → hom-Monoid N M hom-inv-is-iso-Monoid = hom-inv-is-iso-Large-Precategory ( Monoid-Large-Precategory) { X = M} { Y = N} ( f) is-section-hom-inv-is-iso-Monoid : (H : is-iso-Monoid) → comp-hom-Monoid N M N f (hom-inv-is-iso-Monoid H) = id-hom-Monoid N is-section-hom-inv-is-iso-Monoid = is-section-hom-inv-is-iso-Large-Precategory ( Monoid-Large-Precategory) { X = M} { Y = N} ( f) is-retraction-hom-inv-is-iso-Monoid : (H : is-iso-Monoid) → comp-hom-Monoid M N M (hom-inv-is-iso-Monoid H) f = id-hom-Monoid M is-retraction-hom-inv-is-iso-Monoid = is-retraction-hom-inv-is-iso-Large-Precategory ( Monoid-Large-Precategory) { X = M} { Y = N} ( f)
Isomorphisms of monoids
module _ {l1 l2 : Level} (M : Monoid l1) (N : Monoid l2) where iso-Monoid : UU (l1 ⊔ l2) iso-Monoid = iso-Large-Precategory Monoid-Large-Precategory M N hom-iso-Monoid : iso-Monoid → hom-Monoid M N hom-iso-Monoid = hom-iso-Large-Precategory Monoid-Large-Precategory {X = M} {Y = N} map-iso-Monoid : iso-Monoid → type-Monoid M → type-Monoid N map-iso-Monoid f = map-hom-Monoid M N (hom-iso-Monoid f) preserves-mul-iso-Monoid : (f : iso-Monoid) {x y : type-Monoid M} → map-iso-Monoid f (mul-Monoid M x y) = mul-Monoid N (map-iso-Monoid f x) (map-iso-Monoid f y) preserves-mul-iso-Monoid f = preserves-mul-hom-Monoid M N (hom-iso-Monoid f) is-iso-iso-Monoid : (f : iso-Monoid) → is-iso-Monoid M N (hom-iso-Monoid f) is-iso-iso-Monoid = is-iso-iso-Large-Precategory Monoid-Large-Precategory {X = M} {Y = N} hom-inv-iso-Monoid : iso-Monoid → hom-Monoid N M hom-inv-iso-Monoid = hom-inv-iso-Large-Precategory Monoid-Large-Precategory {X = M} {Y = N} map-inv-iso-Monoid : iso-Monoid → type-Monoid N → type-Monoid M map-inv-iso-Monoid f = map-hom-Monoid N M (hom-inv-iso-Monoid f) preserves-mul-inv-iso-Monoid : (f : iso-Monoid) {x y : type-Monoid N} → map-inv-iso-Monoid f (mul-Monoid N x y) = mul-Monoid M (map-inv-iso-Monoid f x) (map-inv-iso-Monoid f y) preserves-mul-inv-iso-Monoid f = preserves-mul-hom-Monoid N M (hom-inv-iso-Monoid f) is-section-hom-inv-iso-Monoid : (f : iso-Monoid) → comp-hom-Monoid N M N (hom-iso-Monoid f) (hom-inv-iso-Monoid f) = id-hom-Monoid N is-section-hom-inv-iso-Monoid = is-section-hom-inv-iso-Large-Precategory ( Monoid-Large-Precategory) { X = M} { Y = N} is-section-map-inv-iso-Monoid : (f : iso-Monoid) → map-iso-Monoid f ∘ map-inv-iso-Monoid f ~ id is-section-map-inv-iso-Monoid f = htpy-eq-hom-Monoid N N ( comp-hom-Monoid N M N (hom-iso-Monoid f) (hom-inv-iso-Monoid f)) ( id-hom-Monoid N) ( is-section-hom-inv-iso-Monoid f) is-retraction-hom-inv-iso-Monoid : (f : iso-Monoid) → comp-hom-Monoid M N M (hom-inv-iso-Monoid f) (hom-iso-Monoid f) = id-hom-Monoid M is-retraction-hom-inv-iso-Monoid = is-retraction-hom-inv-iso-Large-Precategory ( Monoid-Large-Precategory) { X = M} { Y = N} is-retraction-map-inv-iso-Monoid : (f : iso-Monoid) → map-inv-iso-Monoid f ∘ map-iso-Monoid f ~ id is-retraction-map-inv-iso-Monoid f = htpy-eq-hom-Monoid M M ( comp-hom-Monoid M N M (hom-inv-iso-Monoid f) (hom-iso-Monoid f)) ( id-hom-Monoid M) ( is-retraction-hom-inv-iso-Monoid f)
Examples
Identity homomorphisms are isomorphisms
module _ {l : Level} (M : Monoid l) where is-iso-id-hom-Monoid : is-iso-Monoid M M (id-hom-Monoid M) is-iso-id-hom-Monoid = is-iso-id-hom-Large-Precategory ( Monoid-Large-Precategory) { X = M} id-iso-Monoid : iso-Monoid M M id-iso-Monoid = id-iso-Large-Precategory ( Monoid-Large-Precategory) { X = M}
Equalities induce isomorphisms
An equality between objects x y : A
gives rise to an isomorphism between them.
This is because by the J-rule, it is enough to construct an isomorphism given
refl : Id x x
, from x
to itself. We take the identity morphism as such an
isomorphism.
iso-eq-Monoid : {l1 : Level} (M N : Monoid l1) → M = N → iso-Monoid M N iso-eq-Monoid = iso-eq-Large-Precategory Monoid-Large-Precategory
Properties
Being an isomorphism is a proposition
Let f : hom x y
and suppose g g' : hom y x
are both two-sided inverses to
f
. It is enough to show that g = g'
since the equalities are propositions
(since the hom-types are sets). But we have the following chain of equalities:
g = g ∘ id_y = g ∘ (f ∘ g') = (g ∘ f) ∘ g' = id_x ∘ g' = g'
.
module _ {l1 l2 : Level} (M : Monoid l1) (N : Monoid l2) where is-prop-is-iso-Monoid : (f : hom-Monoid M N) → is-prop (is-iso-Monoid M N f) is-prop-is-iso-Monoid = is-prop-is-iso-Large-Precategory ( Monoid-Large-Precategory) { X = M} { Y = N} is-iso-prop-Monoid : (f : hom-Monoid M N) → Prop (l1 ⊔ l2) is-iso-prop-Monoid = is-iso-prop-Large-Precategory Monoid-Large-Precategory {X = M} {Y = N}
The type of isomorphisms form a set
The type of isomorphisms between objects x y : A
is a subtype of the set
hom x y
since being an isomorphism is a proposition.
module _ {l1 l2 : Level} (M : Monoid l1) (N : Monoid l2) where is-set-iso-Monoid : is-set (iso-Monoid M N) is-set-iso-Monoid = is-set-iso-Large-Precategory Monoid-Large-Precategory {X = M} {Y = N} iso-set-Monoid : Set (l1 ⊔ l2) iso-set-Monoid = iso-set-Large-Precategory Monoid-Large-Precategory {X = M} {Y = N}
Isomorphisms are stable by composition
module _ {l1 l2 l3 : Level} (M : Monoid l1) (N : Monoid l2) (K : Monoid l3) (g : iso-Monoid N K) (f : iso-Monoid M N) where hom-comp-iso-Monoid : hom-Monoid M K hom-comp-iso-Monoid = hom-comp-iso-Large-Precategory ( Monoid-Large-Precategory) { X = M} { Y = N} { Z = K} ( g) ( f) is-iso-comp-iso-Monoid : is-iso-Monoid M K hom-comp-iso-Monoid is-iso-comp-iso-Monoid = is-iso-comp-iso-Large-Precategory ( Monoid-Large-Precategory) { X = M} { Y = N} { Z = K} ( g) ( f) comp-iso-Monoid : iso-Monoid M K comp-iso-Monoid = comp-iso-Large-Precategory ( Monoid-Large-Precategory) { X = M} { Y = N} { Z = K} ( g) ( f)
Inverses of isomorphisms are isomorphisms
module _ {l1 l2 : Level} (M : Monoid l1) (N : Monoid l2) (f : iso-Monoid M N) where is-iso-inv-iso-Monoid : is-iso-Monoid N M (hom-inv-iso-Monoid M N f) is-iso-inv-iso-Monoid = is-iso-inv-is-iso-Large-Precategory ( Monoid-Large-Precategory) { X = M} { Y = N} ( is-iso-iso-Monoid M N f) inv-iso-Monoid : iso-Monoid N M inv-iso-Monoid = inv-iso-Large-Precategory Monoid-Large-Precategory {X = M} {Y = N} f
Any isomorphism of monoids preserves and reflects invertible elements
module _ {l1 l2 : Level} (M : Monoid l1) (N : Monoid l2) (f : iso-Monoid M N) where preserves-invertible-elements-iso-Monoid : {x : type-Monoid M} → is-invertible-element-Monoid M x → is-invertible-element-Monoid N (map-iso-Monoid M N f x) preserves-invertible-elements-iso-Monoid = preserves-invertible-elements-hom-Monoid M N (hom-iso-Monoid M N f) reflects-invertible-elements-iso-Monoid : {x : type-Monoid M} → is-invertible-element-Monoid N (map-iso-Monoid M N f x) → is-invertible-element-Monoid M x reflects-invertible-elements-iso-Monoid H = tr ( is-invertible-element-Monoid M) ( is-retraction-map-inv-iso-Monoid M N f _) ( preserves-invertible-elements-hom-Monoid N M ( hom-inv-iso-Monoid M N f) ( H))
Recent changes
- 2023-11-24. Egbert Rijke. Abelianization (#877).
- 2023-10-20. Fredrik Bakke and Egbert Rijke. Nonunital precategories (#864).
- 2023-09-26. Fredrik Bakke and Egbert Rijke. Maps of categories, functor categories, and small subprecategories (#794).
- 2023-09-21. Egbert Rijke and Gregor Perčič. The classification of cyclic rings (#757).