# GAP:IsCharacteristicSubgroup

This GAP function takes as input a pair of a group and a subgroup thereof. See other GAP functions like this.
This GAP function outputs a Boolean variable, i.e., it returns either true or false. View other GAP functions with Boolean output

## Definition

### 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:

Nature of input Output Example input
Two inputs, both groups, and the second input is a characteristic subgroup of the first input true IsCharacteristicSubgroup(SymmetricGroup(2),SymmetricGroup(1))
Two inputs, both groups, the second input is a subgroup of the first input, but is not characteristic in it false IsCharacteristicSubgroup(SymmetricGroup(3),SymmetricGroup(2))
Two inputs that live inside a common big group, but where the second is not a subgroup of the first Usage error IsCharacteristicSubgroup(SymmetricGroup(2),SymmetricGroup(3))
Two inputs where either one of them is not a group or they both do not live inside a common big group NoMethodFound error IsCharacteristicSubgroup(CyclicGroup(3),SymmetricGroup(3))

### Typical use

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

## Related functions

### 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.

## Examples of usage

### 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
<function>( <arguments> ) 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(<map>), Image(<map>,<elm>), Image(<map>,<coll>) called from
Image( i, H ) called from
func( elm ) called from
ForAny( GeneratorsOfGroup( a ), function ( i )
return Image( i, H ) <> H;
end ) called from
<function>( <arguments> ) 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.