module Algebra.Group.Action where
open is-group-hom
open Functor
Group actionsđ
A useful way to think about groups is to think of their elements as encoding âsymmetriesâ of a particular object. For a concrete example, consider the group of real numbers under addition, and consider the unit circle1 sitting in Given a real number we can consider the âactionâ on the circle defined by
which âvisuallyâ has the effect of rotating the point so it lands radians around the circle, in the counterclockwise direction. Each rotation has an inverse, given by rotation radians in the clockwise direction; but observe that this is the same as rotating degrees counterclockwise. Additionally, observe that rotating by zero radians does nothing to the circle.
We say that acts on the circle by counterclockwise rotation; What this means is that to each element we assign a map in a way compatible with the group structure: Additive inverses âtranslate toâ inverse maps, addition translates to function composition, and the additive identity is mapped to the identity function. Note that since is a set, this is equivalently a group homomorphism
where the codomain is the group of symmetries of But what if we want a group to act on an object of a more general category, rather than an object of
Automorphism groupsđ
The answer is that, for an object of some category the collection of all isomorphisms forms a group under composition, generalising the construction of to objects beyond sets! We refer to a âself-isomorphismâ as an automorphism, and denote their group by
module _ {o â} (C : Precategory o â) where
private module C = Cat C
: C.Ob â Group _
Aut = to-group mg where
Aut X : make-group (X C.â
X)
mg .make-group.group-is-set = hlevel 2
mg .make-group.unit = C.id-iso
mg .make-group.mul f g = g C.âIso f
mg .make-group.inv = C._Isoâ»Âč
mg .make-group.assoc x y z = ext (sym (C.assoc _ _ _))
mg .make-group.invl x = ext (x .C.invl)
mg .make-group.idl x = ext (C.idr _) mg
Suppose we have a category an object and a group A on is a group homomorphism
: Group â â C.Ob â Type _
Action = Groups.Hom G (Aut X) Action G X
Since weâve defined in the automorphism group, our definition corresponds to right actions. If we had defined instead, we would get left actions. Of course, the two definitions are formally dual, so it does not really matter.
As functorsđ
Recall that we defined the delooping of a monoid into a category as the category with a single object and If we instead deloop a group into a group then functors correspond precisely to actions of on the object
module _ {G : Group â} where
private BG = B (Group-on.underlying-monoid (G .snd) .snd) ^op
: (F : Functor BG C) â Action G (F .Fâ tt)
Functorâaction .hom it = C.make-iso
Functorâaction F (F .Fâ it) (F .Fâ (it â»Âč))
(F.annihilate inversel) (F.annihilate inverser)
where
open Group-on (G .snd)
module F = Functor-kit F
.preserves .is-group-hom.pres-â x y = ext (F .F-â _ _)
Functorâaction F
: {X : C.Ob} (A : Action G X) â Functor BG C
Actionâfunctor {X = X} A .Fâ _ = X
Actionâfunctor .Fâ e = (A # e) .C.to
Actionâfunctor A .F-id = ap C.to (is-group-hom.pres-id (A .preserves))
Actionâfunctor A .F-â f g = ap C.to (is-group-hom.pres-â (A .preserves) _ _) Actionâfunctor A
After constructing these functions in either direction, itâs easy enough to show that they are inverse equivalences, but we must be careful about the codomain: rather than taking â with a â for any particular we take the total space of equipped with
After this small correction, the proof is almost definitional: after
applying the right helpers for pushing paths inwards, weâre left with
refl
at all the leaves.
: is-equiv {B = ÎŁ _ (Action G)} λ i â _ , Functorâaction i
Functorâaction = is-isoâis-equiv λ where
Functorâaction .is-iso.inv (x , act) â Actionâfunctor act
.is-iso.rinv x â ÎŁ-pathp refl $
_ _ _ (funext (λ i â C.â
-pathp _ _ refl))
total-hom-pathp (is-propâpathp (λ i â is-group-hom-is-prop) _ _)
.is-iso.linv x â Functor-path (λ _ â refl) λ _ â refl
Examples of actionsđ
For any group category and object we have the trivial action of on which maps every element to the identity automorphism. It can be defined simply as the zero morphism
module _ {o â} {C : Precategory o â} (G : Group â) where
: â X â Action C G X
trivial-action = Zero.zeroâ â
Ꮃ trivial-action X
Any group acts on itself on the right in two ways: first, acts on its underlying set by multiplication on the right. This is sometimes called the principal action or the (right-)regular action, and is the basis for Cayleyâs theorem.
module _ {â} (G : Group â) where
private module G = Group-on (G .snd)
: Action (Sets â) G (G .fst)
principal-action .hom x = equivâiso ((G._â x) , G.â-equivr x)
principal-action .preserves .pres-â x y = ext λ z â G.associative principal-action
also acts on itself as a group by conjugation. An automorphism of that arises from conjugation with an element of is called an inner automorphism.
: Action (Groups â) G G
conjugation-action .hom x = total-iso
conjugation-action ((λ y â x G.â»Âč G.â y G.â x) , â-is-equiv (G.â-equivr x) (G.â-equivl (x G.â»Âč)))
(record { pres-â = λ y z â group! G })
.preserves .pres-â x y = ext λ z â group! G conjugation-action
this is not the higher inductive type , but rather the usual definition of the circle as a subset of â©ïž