EndomorphismClasses( G, case )
The monoid of endomorphisms is required when calculating the monoid of derivations of a crossed module and when determining all the cat1-structures on a group G (see sections refAllDerivations and refAllSections).
An endomorphism epsilon of R with image H^{prime} is determined by item a normal subgroup N of R and a permutation representation theta : R/N to Q of the quotient, giving a projection theta circ nu : R to Q , where nu : R to R/N is the natural homomorphism; item an automorphism alpha of Q; item a subgroup H^{prime} in a conjugacy class [H] of subgroups of R isomorphic to Q having representative H, an isomorphism phi : Q cong H, and a conjugating element c in R such that H^c = H^{prime}, and takes values epsilon r ; = ; (phi alpha theta nu r)^c.
Endomorphisms are placed in the same class if they have the same
choice of N and [H], so the number of endomorphisms is
|
mathrm{End}(R)|
= ; sum_{classes}
|
mathrm{Aut}(Q)|
|
[H]|
.
The function returns records E = R.endomorphismClasses
and subfield
.classes
as shown below. Three cases are catered for as indicated
in the example.
gap> Ea4 := EndomorphismClasses( a4 , 7); Usage: EndomorphismClasses( G [, case] ); choose case = 1 to include automorphisms and zero, default case = 2 to exclude automorphisms and zero, case = 3 when N meet H is trivial, false gap> Ea4 := EndomorphismClasses( a4 ); rec( isDomain := true, isEndomorphismClasses := true, areNonTrivial := true, intersectionFree := false, classes := [ rec( quotient := a4.Q2, projection := OperationHomomorphism( a4, a4.Q2 ), autoGroup := Group( GroupHomomorphismByImages( a4.Q2, a4.Q2, [ (1,3,2) ], [ (1,2,3) ] ) ), rangeNumber := 3, isomorphism := GroupHomomorphismByImages( a4.Q2, a4.H3, [ (1,3,2) ], [ (2,3,4) ] ), conj := [ (), (1,3,2), (1,2)(3,4), (1,4,2) ] ) ], group := a4, latticeLength := 5, latticeReps := [ a4.id, a4.H2, a4.H3, a4.H4, a4 ] )
GAP 3.4.4