Ask Your Question

# How to check whether a given group contains a subgroup isomorphic to Quaternion group

I want to check whether a given group $G$ has a subgroup isomorphic to $Q_8$. What should be the SAGE command for this? I am aware of the command "H.is_subgroup(G)". Does it check whether $H$ is contained in $G$ or $H$ is isomorphic to a subgroup in $G$?

edit retag close merge delete

## 2 Answers

Sort by » oldest newest most voted

Same as the answer of lisbeth, but we restrict to conjugacy classes of subgroups. And use the fact that they come in the order of their orders. So if we pass the order eight we have a verdict. Sample code checking if the group G below has a subgroup isomorphic to Q8:

Q8 = QuaternionGroup()

def hasQ8isomorphicSubgroup(G, verbose=False):

for H in G.conjugacy_classes_subgroups():
if H.order() < 8:    continue
if H.order() > 8:    break
if verbose:
print(f"Subgroup of order 8 with structure {H.structure_description()}")
if H.is_isomorphic(Q8):
return True    # or we can return H
return False


Then we have for instance:

sage: G = PSL(2, 17)
....: hasQ8isomorphicSubgroup(G)
False

sage: G = PSL(2, 17)
....: hasQ8isomorphicSubgroup(G, verbose=True)
Subgroup of order 8 with structure C8
Subgroup of order 8 with structure D4
Subgroup of order 8 with structure D4
False


Some other example:

sage: G = PSL(3, 7)
sage: hasQ8isomorphicSubgroup(G, verbose=True)
Subgroup of order 8 with structure Q8
True

more

You first define the quaternion group Q using the QuaternionGroup constructor. You then define the group G that you want to check for a subgroup isomorphic to Q, which in this case is the dihedral group of order 12, for example.

You then use the subgroups method to get a list of all subgroups of G. For each subgroup H in the list, you check if H is isomorphic to Q using the is_isomorphic method. If you find a subgroup that is isomorphic to Q, you can print the subgroup and a message indicating that you found a subgroup isomorphic to the quaternion group.

Please see the following code:

Q = QuaternionGroup()
G = DihedralGroup(12)
subgroups = G.subgroups()
for H in subgroups:
if H.is_isomorphic(Q):
print(f'Found a subgroup {H} isomorphic to the quaternion group!')

more

## Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

## Stats

Asked: 2023-07-20 18:24:16 +0200

Seen: 239 times

Last updated: Jul 23 '23