GAP:IsNormal
This article is about a GAP function.
This GAP function takes as input two groups, both having a common parent group. 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
IsNormal 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:
- The function returns true if both groups are subgroups of a common big group, and the first group normalizes the second, i.e., the first subgroup is contained in the normalizer of the second subgroup.
- The function returns false if both groups are subgroups of a common big group, and the first group does not normalize the second, i.e., the first subgroup is not contained in the normalizer of the second subgroup.
- If one of the arguments provided is not a group, or if the two groups provided are not subgroups of a common big group, GAP returns a NoMethodFound error.
Typical use
The function is typically used in the form:
IsNormal(group,subgroup);
The first argument is a group and the second argument is a subgroup of that group. In this case:
- The function returns true if the subgroup is a normal subgroup of the whole group.
- The function returns false if the subgroup is not a normal subgroup of the whole group.
Note that if the order of the group and the subgroup are interchanged, GAP will not detect an error and will return true, because any subgroup of a group normalizes the whole group.
Examples of usage
Some examples involving prespecified groups
gap> IsNormal(SymmetricGroup(2),SymmetricGroup(1)); true gap> IsNormal(SymmetricGroup(3),SymmetricGroup(2)); false gap> IsNormal(SymmetricGroup(2),SymmetricGroup(3)); true gap> IsNormal(SymmetricGroup(3),AlternatingGroup(3)); true gap> IsNormal(SymmetricGroup(3),AlternatingGroup(4)); true gap> IsNormal(CyclicGroup(4),CyclicGroup(2)); Error, no method found! For debugging hints type ?Recovery from NoMethodFound Error, no 1st choice method found for `IsNormalOp' on 2 arguments called from oper( super, sub ) 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>
GAP defines the symmetric group SymmetricGroup(n) as the symmetric group on the set , and all these groups are viewed as subgroups inside the symmetric group on the natural numbers. Thus, for the first example, the symmetric group on is tested for normality in the symmetric group on , while in the second example, the symmetric group on is tested for normality in the symmetric group on .
In the third example, the subgroup is specified on the left, and since we know that any subgroup of a group normalizes the whole group, an answer of true is returned. In the fifth example, neither the symmetric group on three elements nor the alternating group on four elements is contained in the other, but the symmetric group on three elements normalizes the alternating group on four elements, resulting in an output of true.
In the sixth example, GAP does not recognize the two groups provided as living inside a common big group, and hence throws an error message.
Some examples involving groups defined on the fly
Here are some examples:
gap> G := SmallGroup(56,4); <pc group of size 56 with 4 generators> gap> C := Center(G); Group([ f2, f3]) gap> IsNormal(G,C); true
Method
Since GAP stores groups in the forms of generating sets and relations, the checking is done as follows:
- Finite case: Suppose is the stored generating set for and is the stored generating set for . Then, to test whether normalizes , GAP tests whether the conjugate of any element of by any element of lies inside .
- Infinite case: Suppose is the stored generating set for and is the stored generating set for . Then, to test whether normalizes , GAP tests whether the conjugate of any element of by any element of lies inside , as well as whether the conjugate of every element of by every element of lies inside .