Processing math: 100%
Ask Your Question
1

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

asked 1 year ago

sagelearner gravatar image

updated 0 years ago

FrédéricC gravatar image

I want to check whether a given group G has a subgroup isomorphic to Q8. 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?

Preview: (hide)

2 Answers

Sort by » oldest newest most voted
1

answered 1 year ago

dan_fulea gravatar image

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
Preview: (hide)
link
1

answered 1 year ago

lisbeth gravatar image

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!')
Preview: (hide)
link

Your Answer

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

Add Answer

Question Tools

1 follower

Stats

Asked: 1 year ago

Seen: 473 times

Last updated: Jul 23 '23