Endomorphism structure of symmetric group:S4

This article the endomorphism structure of discusses symmetric group:S4, the symmetric group of degree four. We denote its elements as acting on the set $$\{ 1,2,3,4 \}$$, written using cycle decompositions, with composition by function composition where functions act on the left.

Description of automorphism group
Symmetric group:S4 is a complete group (i.e., it is a centerless group and every automorphism is inner). See also symmetric groups on finite sets are complete.

Thus, all its automorphisms are inner automorphisms, i.e., they are given as conjugations by elements of the group, and distinct elements give distinct inner automorphisms.

GAP implementation
The endomorphism structure can be explored using the GAP function Endomorphisms, available through the SONATA package:

gap> L := Endomorphisms(SymmetricGroup(4)); [ [ (1,2,3,4), (1,2) ] -> [, ], [ (1,2,3,4), (1,2) ] -> [ (1,4), (1,4) ], [ (1,2,3,4), (1,2) ] -> [ (2,3), (2,3) ],  [ (1,2,3,4), (1,2) ] -> [ (3,4), (3,4) ], [ (1,2,3,4), (1,2) ] -> [ (1,2), (1,2) ], [ (1,2,3,4), (1,2) ] -> [ (2,4), (2,4) ],  [ (1,2,3,4), (1,2) ] -> [ (1,3), (1,3) ], [ (1,2,3,4), (1,2) ] -> [ (1,4), (2,4) ], [ (1,2,3,4), (1,2) ] -> [ (1,3), (2,3) ],  [ (1,2,3,4), (1,2) ] -> [ (2,4), (1,4) ], [ (1,2,3,4), (1,2) ] -> [ (2,3), (1,3) ], [ (1,2,3,4), (1,2) ] -> [ (1,2), (2,4) ],  [ (1,2,3,4), (1,2) ] -> [ (1,3), (3,4) ], [ (1,2,3,4), (1,2) ] -> [ (3,4), (1,3) ], [ (1,2,3,4), (1,2) ] -> [ (2,4), (1,2) ],  [ (1,2,3,4), (1,2) ] -> [ (1,2), (2,3) ], [ (1,2,3,4), (1,2) ] -> [ (1,4), (3,4) ], [ (1,2,3,4), (1,2) ] -> [ (3,4), (1,4) ],  [ (1,2,3,4), (1,2) ] -> [ (2,3), (1,2) ], [ (1,2,3,4), (1,2) ] -> [ (1,4), (1,3) ], [ (1,2,3,4), (1,2) ] -> [ (1,3), (1,4) ],  [ (1,2,3,4), (1,2) ] -> [ (2,4), (2,3) ], [ (1,2,3,4), (1,2) ] -> [ (2,3), (2,4) ], [ (1,2,3,4), (1,2) ] -> [ (1,2), (1,4) ],  [ (1,2,3,4), (1,2) ] -> [ (1,4), (1,2) ], [ (1,2,3,4), (1,2) ] -> [ (3,4), (2,3) ], [ (1,2,3,4), (1,2) ] -> [ (2,3), (3,4) ],  [ (1,2,3,4), (1,2) ] -> [ (1,2), (1,3) ], [ (1,2,3,4), (1,2) ] -> [ (1,3), (1,2) ], [ (1,2,3,4), (1,2) ] -> [ (3,4), (2,4) ],  [ (1,2,3,4), (1,2) ] -> [ (2,4), (3,4) ], [ (1,2,3,4), (1,2) ] -> [ (1,3,4,2), (2,4) ], [ (1,2,3,4), (1,2) ] -> [ (1,4,3,2), (2,3) ],  [ (1,2,3,4), (1,2) ] -> [ (1,2,3,4), (1,4) ], [ (1,2,3,4), (1,2) ] -> [ (1,2,4,3), (1,3) ], [ (1,2,3,4), (1,2) ] -> [ (1,3,2,4), (2,4) ],  [ (1,2,3,4), (1,2) ] -> [ (1,2,3,4), (3,4) ], [ (1,2,3,4), (1,2) ] -> [ (1,4,2,3), (1,3) ], [ (1,2,3,4), (1,2) ] -> [ (1,4,3,2), (1,2) ],  [ (1,2,3,4), (1,2) ] -> [ (1,4,2,3), (2,3) ], [ (1,2,3,4), (1,2) ] -> [ (1,2,4,3), (3,4) ], [ (1,2,3,4), (1,2) ] -> [ (1,3,2,4), (1,4) ],  [ (1,2,3,4), (1,2) ] -> [ (1,3,4,2), (1,2) ], [ (1,2,3,4), (1,2) ] -> [ (1,3,4,2), (1,3) ], [ (1,2,3,4), (1,2) ] -> [ (1,4,3,2), (1,4) ],  [ (1,2,3,4), (1,2) ] -> [ (1,2,3,4), (2,3) ], [ (1,2,3,4), (1,2) ] -> [ (1,2,4,3), (2,4) ], [ (1,2,3,4), (1,2) ] -> [ (1,4,2,3), (1,4) ],  [ (1,2,3,4), (1,2) ] -> [ (1,2,4,3), (1,2) ], [ (1,2,3,4), (1,2) ] -> [ (1,3,2,4), (2,3) ], [ (1,2,3,4), (1,2) ] -> [ (1,3,4,2), (3,4) ],  [ (1,2,3,4), (1,2) ] -> [ (1,3,2,4), (1,3) ], [ (1,2,3,4), (1,2) ] -> [ (1,2,3,4), (1,2) ], [ (1,2,3,4), (1,2) ] -> [ (1,4,2,3), (2,4) ],  [ (1,2,3,4), (1,2) ] -> [ (1,4,3,2), (3,4) ], [ (1,2,3,4), (1,2) ] -> [ (1,3)(2,4), (1,3)(2,4) ], [ (1,2,3,4), (1,2) ] -> [ (1,4)(2,3), (1,4)(2,3) ],  [ (1,2,3,4), (1,2) ] -> [ (1,2)(3,4), (1,2)(3,4) ] ] gap> Length(L); 58 gap> M := Filtered(L,x -> x = x*x); [ [ (1,2,3,4), (1,2) ] -> [, ], [ (1,2,3,4), (1,2) ] -> [ (1,4), (1,4) ], [ (1,2,3,4), (1,2) ] -> [ (2,3), (2,3) ],  [ (1,2,3,4), (1,2) ] -> [ (3,4), (3,4) ], [ (1,2,3,4), (1,2) ] -> [ (1,2), (1,2) ], [ (1,2,3,4), (1,2) ] -> [ (2,4), (2,4) ],  [ (1,2,3,4), (1,2) ] -> [ (1,3), (1,3) ], [ (1,2,3,4), (1,2) ] -> [ (1,3), (3,4) ], [ (1,2,3,4), (1,2) ] -> [ (2,4), (1,2) ],  [ (1,2,3,4), (1,2) ] -> [ (1,3), (1,2) ], [ (1,2,3,4), (1,2) ] -> [ (2,4), (3,4) ], [ (1,2,3,4), (1,2) ] -> [ (1,2,3,4), (1,2) ] ] gap> Length(M); 12 gap> K := List(L,Kernel); [ Group([ (1,2,3,4), (1,2) ]), Group([ (1,3)(2,4), (1,4,3) ]), Group([ (1,3)(2,4), (1,4,3) ]), Group([ (1,3)(2,4), (1,4,3) ]), Group([ (1,3)(2,4), (1,4,3) ]), Group([ (1,3)(2,4), (1,4,3) ]), Group([ (1,3)(2,4), (1,4,3) ]), Group([ (1,4)(2,3), (1,3)(2,4) ]), Group([ (1,4)(2,3), (1,3)(2,4) ]), Group([ (1,3)(2,4), (1,4)(2,3) ]), Group([ (1,3)(2,4), (1,4)(2,3) ]), Group([ (1,4)(2,3), (1,3)(2,4) ]), Group([ (1,4)(2,3), (1,3)(2,4) ]), Group([ (1,3)(2,4), (1,4)(2,3) ]), Group([ (1,3)(2,4), (1,4)(2,3) ]), Group([ (1,4)(2,3), (1,3)(2,4) ]), Group([ (1,4)(2,3), (1,3)(2,4) ]), Group([ (1,3)(2,4), (1,4)(2,3) ]), Group([ (1,3)(2,4), (1,4)(2,3) ]), Group([ (1,4)(2,3), (1,3)(2,4) ]), Group([ (1,4)(2,3), (1,3)(2,4) ]), Group([ (1,4)(2,3), (1,3)(2,4) ]), Group([ (1,4)(2,3), (1,3)(2,4) ]), Group([ (1,4)(2,3), (1,3)(2,4) ]), Group([ (1,4)(2,3), (1,3)(2,4) ]), Group([ (1,3)(2,4), (1,4)(2,3) ]), Group([ (1,4)(2,3), (1,3)(2,4) ]), Group([ (1,4)(2,3), (1,3)(2,4) ]), Group([ (1,4)(2,3), (1,3)(2,4) ]), Group([ (1,3)(2,4), (1,4)(2,3) ]), Group([ (1,4)(2,3), (1,3)(2,4) ]), Group(), Group(), Group(), Group(), Group(), Group(), Group(), Group(), Group(), Group(), Group(), Group(), Group(), Group(), Group(), Group(), Group(), Group(), Group(), Group(), Group(), Group(), Group(), Group(), Group([ (1,3)(2,4), (1,4,3) ]), Group([ (1,3)(2,4), (1,4,3) ]), Group([ (1,3)(2,4), (1,4,3) ]) ] gap> FrequencySort(K); [ [ Group(), 24 ], [ Group([ (1,2,3,4), (1,2) ]), 1 ], [ Group([ (1,3)(2,4), (1,4,3) ]), 9 ], [ Group([ (1,4)(2,3), (1,3)(2,4) ]), 24 ] ]