Could someone suggest a piece of code that will produce the subgroup permutability graph of a finite group? There is more than one way this graph can be defined. The one I have in mind has the non-normal subgroups of the group as vertices and two vertices are joined by an edge if the corresponding subgroups permute.
2026-03-27 16:26:26.1774628786
On
Permutability Graph with GAP
404 Views Asked by Bumbble Comm https://math.techqa.club/user/bumbble-comm/detail At
2
There are 2 best solutions below
3
On
I think there can be problems if you define the graph with conjugacy classes of non-normal subgroups instead of considering all subgroups. For instance, take the semidirect product $G=[V]S$ of the symmetric group of degree $3$, $S=\langle a,b\mid a^3=b^2=1\rangle $ say, by a faithful and irreducible module $V=\langle c,d\rangle$ over the field of $7$ elements. This is
SmallGroup(294, 7)
in GAP. Then $\langle b\rangle$ permutes with $\langle a\rangle$, but $\langle b\rangle$ does not permute with $\langle a^c\rangle$. Therefore I think that we will need all non-normal subgroups in the construction of the graph, as Alexander Konovalov says, not only the conjugacy classes of such subgroups.
First, let's pick up some group, for example this one, which is a semidirect product of $C_9 \times C_3$ and $C_3$:
The next command calculates the list of all its non-normal subgroups by iterating over each conjugacy class of subgroups, containing more than 1 subgroup:
Remarkably, it has 42 of them, what makes this group an excellent example :-)
The next function constructs the adjacency matrix for the permutability graph. It first creates the identity matrix (obviously, each subgroup is permutable with itself, so we have $1$s on the main diagonal and do not have to check this), and then populates the rest of the entries:
One could do even better with the Permut package:
which have some shortcuts for partial cases. Just to check that both functions agree about the result:
Now you may load the GRAPE package and construct GRAPE graph given by this adjacency matrix with the commmands:
This allows you to explore properties of this graph, for example:
One could further call
AssignVertexNames(g,cc);to label vertices of the graph with subgroups.Update:. Trying to understand and reproduce example from page 6 of the paper you've mentioned, I've made some quickly-written code, which may be useful to you for further experiments. First, this function returns a list of all non-normal subgroups:
Remember that their ordering is not guaranteed to be the same for different instances of $G$ as probabilistic methods may be involved.
Next, GAP operates with binary relations - for example, finds a transitive closure. This function looks similar to adjacency matrix, but it returns an input for
BinaryRelationOnPoints:In the following example we will show that $C_3 \times S_3$ is irreducible with respect to permutability (as defined in the paper) since the transitive closure of the permutability relation has one equivalence class:
The following function takes a binary relation and returns a GRAPE graph corresponding to it:
Now we may explore graphs given by
RandTabove:On the other hand, for $D_{32}$ we have two classes:
GRAPE can construct graph as above, but it can find connected components only if the graph is simple. So if we want to find the diameter of each of the two connected components, we have to construct two graphs first, and then find their diameters. Luckily, GRAPE already has functionality for that via
InducedSubgraph:Thus, both of the connected components for permutability graph has the diameter 2, so $\Delta(G_{32})=2$.
Update (communicated to me by Leonard Soicher)
The code posted above may be improved to use the full power of GRAPE package to associate a group acting as a group of automorphisms of the graph we are constructing, as illustrated below:
Now
nonnormalsubgroupsis a $G$-invariant list, andpermutabledefines a $G$-invariant binary relation onnonnormalsubgroups(for the conjugation action of $G$ on its subgroups). Hence the required GRAPE graph can be computed as:If you want this graph with the loops removed so as to obtain a simple graph, you can do: