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