The precategory of orbits of a monoid action
Content created by Fredrik Bakke.
Created on 2024-03-11.
Last modified on 2024-03-11.
module group-theory.precategory-of-orbits-monoid-actions where
Imports
open import category-theory.precategories open import foundation.contractible-types open import foundation.dependent-pair-types open import foundation.equivalences open import foundation.fundamental-theorem-of-identity-types open import foundation.identity-types open import foundation.propositions open import foundation.sets open import foundation.subtype-identity-principle open import foundation.torsorial-type-families open import foundation.universe-levels open import group-theory.monoid-actions open import group-theory.monoids
Idea
The precategory of orbits of a
monoid action of M
on X
consists of the
elements of the set X
as the objects, and a
morphism from x
to y
is an element m
of the
monoid M
such that mx = y
.
Definition
The precategory of orbits of a monoid action
module _ {l1 l2 : Level} (M : Monoid l1) (X : action-Monoid l2 M) where hom-orbit-action-Monoid : (x y : type-action-Monoid M X) → UU (l1 ⊔ l2) hom-orbit-action-Monoid x y = Σ (type-Monoid M) ( λ m → Id (mul-action-Monoid M X m x) y) element-hom-orbit-action-Monoid : {x y : type-action-Monoid M X} → hom-orbit-action-Monoid x y → type-Monoid M element-hom-orbit-action-Monoid f = pr1 f eq-hom-orbit-action-Monoid : {x y : type-action-Monoid M X} (f : hom-orbit-action-Monoid x y) → Id (mul-action-Monoid M X (element-hom-orbit-action-Monoid f) x) y eq-hom-orbit-action-Monoid f = pr2 f htpy-hom-orbit-action-Monoid : {x y : type-action-Monoid M X} (f g : hom-orbit-action-Monoid x y) → UU l1 htpy-hom-orbit-action-Monoid {x} {y} f g = Id ( element-hom-orbit-action-Monoid f) ( element-hom-orbit-action-Monoid g) refl-htpy-hom-orbit-action-Monoid : {x y : type-action-Monoid M X} (f : hom-orbit-action-Monoid x y) → htpy-hom-orbit-action-Monoid f f refl-htpy-hom-orbit-action-Monoid f = refl htpy-eq-hom-orbit-action-Monoid : {x y : type-action-Monoid M X} (f g : hom-orbit-action-Monoid x y) → Id f g → htpy-hom-orbit-action-Monoid f g htpy-eq-hom-orbit-action-Monoid f .f refl = refl-htpy-hom-orbit-action-Monoid f is-torsorial-htpy-hom-orbit-action-Monoid : {x y : type-action-Monoid M X} (f : hom-orbit-action-Monoid x y) → is-torsorial (htpy-hom-orbit-action-Monoid f) is-torsorial-htpy-hom-orbit-action-Monoid {x} {y} f = is-torsorial-Eq-subtype ( is-torsorial-Id (element-hom-orbit-action-Monoid f)) ( λ u → is-set-type-action-Monoid M X (mul-action-Monoid M X u x) y) ( element-hom-orbit-action-Monoid f) ( refl) ( eq-hom-orbit-action-Monoid f) is-equiv-htpy-eq-hom-orbit-action-Monoid : {x y : type-action-Monoid M X} (f g : hom-orbit-action-Monoid x y) → is-equiv (htpy-eq-hom-orbit-action-Monoid f g) is-equiv-htpy-eq-hom-orbit-action-Monoid f = fundamental-theorem-id ( is-torsorial-htpy-hom-orbit-action-Monoid f) ( htpy-eq-hom-orbit-action-Monoid f) extensionality-hom-orbit-action-Monoid : {x y : type-action-Monoid M X} (f g : hom-orbit-action-Monoid x y) → Id f g ≃ htpy-hom-orbit-action-Monoid f g pr1 (extensionality-hom-orbit-action-Monoid f g) = htpy-eq-hom-orbit-action-Monoid f g pr2 (extensionality-hom-orbit-action-Monoid f g) = is-equiv-htpy-eq-hom-orbit-action-Monoid f g eq-htpy-hom-orbit-action-Monoid : {x y : type-action-Monoid M X} {f g : hom-orbit-action-Monoid x y} → htpy-hom-orbit-action-Monoid f g → Id f g eq-htpy-hom-orbit-action-Monoid {x} {y} {f} {g} = map-inv-is-equiv (is-equiv-htpy-eq-hom-orbit-action-Monoid f g) is-prop-htpy-hom-orbit-action-Monoid : {x y : type-action-Monoid M X} (f g : hom-orbit-action-Monoid x y) → is-prop (htpy-hom-orbit-action-Monoid f g) is-prop-htpy-hom-orbit-action-Monoid f g = is-set-type-Monoid M ( element-hom-orbit-action-Monoid f) ( element-hom-orbit-action-Monoid g) is-set-hom-orbit-action-Monoid : {x y : type-action-Monoid M X} → is-set (hom-orbit-action-Monoid x y) is-set-hom-orbit-action-Monoid {x} {y} f g = is-prop-equiv ( extensionality-hom-orbit-action-Monoid f g) ( is-prop-htpy-hom-orbit-action-Monoid f g) hom-orbit-monoid-action-Set : (x y : type-action-Monoid M X) → Set (l1 ⊔ l2) pr1 (hom-orbit-monoid-action-Set x y) = hom-orbit-action-Monoid x y pr2 (hom-orbit-monoid-action-Set x y) = is-set-hom-orbit-action-Monoid id-hom-orbit-action-Monoid : (x : type-action-Monoid M X) → hom-orbit-action-Monoid x x pr1 (id-hom-orbit-action-Monoid x) = unit-Monoid M pr2 (id-hom-orbit-action-Monoid x) = unit-law-mul-action-Monoid M X x comp-hom-orbit-action-Monoid : {x y z : type-action-Monoid M X} → hom-orbit-action-Monoid y z → hom-orbit-action-Monoid x y → hom-orbit-action-Monoid x z pr1 (comp-hom-orbit-action-Monoid g f) = mul-Monoid M ( element-hom-orbit-action-Monoid g) ( element-hom-orbit-action-Monoid f) pr2 (comp-hom-orbit-action-Monoid {x} g f) = ( associative-mul-action-Monoid M X ( element-hom-orbit-action-Monoid g) ( element-hom-orbit-action-Monoid f) ( x)) ∙ ( ap-mul-action-Monoid M X (eq-hom-orbit-action-Monoid f)) ∙ ( eq-hom-orbit-action-Monoid g) associative-comp-hom-orbit-action-Monoid : {x y z w : type-action-Monoid M X} (h : hom-orbit-action-Monoid z w) (g : hom-orbit-action-Monoid y z) (f : hom-orbit-action-Monoid x y) → comp-hom-orbit-action-Monoid (comp-hom-orbit-action-Monoid h g) f = comp-hom-orbit-action-Monoid h (comp-hom-orbit-action-Monoid g f) associative-comp-hom-orbit-action-Monoid h g f = eq-htpy-hom-orbit-action-Monoid ( associative-mul-Monoid M ( element-hom-orbit-action-Monoid h) ( element-hom-orbit-action-Monoid g) ( element-hom-orbit-action-Monoid f)) left-unit-law-comp-hom-orbit-action-Monoid : {x y : type-action-Monoid M X} (f : hom-orbit-action-Monoid x y) → Id (comp-hom-orbit-action-Monoid (id-hom-orbit-action-Monoid y) f) f left-unit-law-comp-hom-orbit-action-Monoid f = eq-htpy-hom-orbit-action-Monoid ( left-unit-law-mul-Monoid M (element-hom-orbit-action-Monoid f)) right-unit-law-comp-hom-orbit-action-Monoid : {x y : type-action-Monoid M X} (f : hom-orbit-action-Monoid x y) → Id (comp-hom-orbit-action-Monoid f (id-hom-orbit-action-Monoid x)) f right-unit-law-comp-hom-orbit-action-Monoid f = eq-htpy-hom-orbit-action-Monoid ( right-unit-law-mul-Monoid M (element-hom-orbit-action-Monoid f)) orbit-monoid-action-Precategory : Precategory l2 (l1 ⊔ l2) orbit-monoid-action-Precategory = make-Precategory ( type-action-Monoid M X) ( hom-orbit-monoid-action-Set) ( comp-hom-orbit-action-Monoid) ( id-hom-orbit-action-Monoid) ( associative-comp-hom-orbit-action-Monoid) ( left-unit-law-comp-hom-orbit-action-Monoid) ( right-unit-law-comp-hom-orbit-action-Monoid)
Recent changes
- 2024-03-11. Fredrik Bakke. Refactor category theory to use strictly involutive identity types (#1052).