GAP:IsCharacteristicSubgroup

Function type
IsCharacteristicSubgroup is a GAP function that takes in two arguments, both of which represent groups, and outputs a Boolean answer (true/false).

Behavior
The behavior is as follows:

Typical use
The function is typically used in the following form: IsCharacteristicSubgroup(group, subgroup);

Testing functions

 * GAP:IsCharacteristicInParent: Checks whether a given subgroup is characteristic in its parent group, or the ambient group within which it is defined.
 * GAP:IsNormal: Checks whether the first input group normalizes the second input group. When the second input group is a subgroup of the first, this is equivalent to checking whether the second input group is a normal subgroup of the first input group.
 * GAP:IsFullinvariant: Checks whether the second input group is a fully invariant subgroup of the first input group.

Listing functions

 * GAP:CharacteristicSubgroups: This takes as input a group and outputs the list of all characteristic subgroups of the group.
 * GAP:NormalSubgroups: This takes as input a group and outputs the list of all normal subgroups of the group.

Some examples involving prespecified groups
gap> IsCharacteristicSubgroup(SymmetricGroup(2),SymmetricGroup(1)); true gap> IsCharacteristicSubgroup(SymmetricGroup(3),SymmetricGroup(2)); false gap> IsCharacteristicSubgroup(CyclicGroup(3),SymmetricGroup(3)); Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 1st choice method found for `IsCharacteristicSubgroup' on 2 arguments called from called from read-eval-loop Entering break read-eval-print loop ... you can 'quit;' to quit to outer loop, or you can 'return;' to continue brk> return; no method returned gap> IsCharacteristicSubgroup(SymmetricGroup(2),SymmetricGroup(3)); Error, usage: Image, Image, Image called from Image( i, H ) called from func( elm ) called from ForAny( GeneratorsOfGroup( a ), function ( i )     return Image( i, H ) <> H;  end ) called from called from read-eval-loop Entering break read-eval-print loop ... you can 'quit;' to quit to outer loop, or you can 'return;' to continue

Method

 * Since computation of the automorphism group is hard in general, this function first works by checking if the subgroup is normal in the whole group. If the subgroup is not normal, an answer of false is returned.
 * If the subgroup is normal, the automorphism group is computed, using the same method as that used for the command AutomorphismGroup. Then, the subgroup is checked for invariance under the generating set for this automorphism group.