Skip to content

Commit 55c9f9c

Browse files
author
Release Manager
committed
gh-37038: Add minimal_normal_subgroups and maximal_normal_subgroups functions for permutation groups - Added the function This patch implements a minimal_normal_subgroups function in PermutationGroup_generic class. <!-- ^^^^^ Please provide a concise, informative and self-explanatory title. Don't put issue numbers in there, do this in the PR body below. For example, instead of "Fixes #1234" use "Introduce new method to calculate 1+1" --> <!-- Describe your changes here in detail --> <!-- Why is this change required? What problem does it solve? --> <!-- If this PR resolves an open issue, please link to it here. For example "Fixes #12345". --> <!-- If your change requires a documentation PR, please link it appropriately. --> ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> <!-- If your change requires a documentation PR, please link it appropriately --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> <!-- Feel free to remove irrelevant items. --> - [x] The title is concise, informative, and self-explanatory. - [x] The description explains in detail what this PR is about. - [x] I have created tests covering the changes. - [x] I have updated the documentation accordingly. ### ⌛ Dependencies <!-- List all open PRs that this PR logically depends on - #12345: short description why this is a dependency - #34567: ... --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> NA URL: #37038 Reported by: Ruchit Jagodara Reviewer(s): Ruchit Jagodara, Travis Scrimshaw
2 parents e5c6aab + fa26be9 commit 55c9f9c

File tree

2 files changed

+64
-0
lines changed

2 files changed

+64
-0
lines changed

src/sage/groups/libgap_wrapper.pyx

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,39 @@ class ParentLibGAP(SageObject):
345345
"""
346346
return self._libgap._repr_()
347347

348+
def minimal_normal_subgroups(self):
349+
"""
350+
Return the nontrivial minimal normal subgroups ``self``.
351+
352+
EXAMPLES::
353+
354+
sage: SL(2,GF(49)).minimal_normal_subgroups()
355+
[Subgroup with 1 generators (
356+
[6 0]
357+
[0 6]
358+
) of Special Linear Group of degree 2 over Finite Field in z2 of size 7^2]
359+
"""
360+
return [self._subgroup_constructor(gap_subgroup)
361+
for gap_subgroup in self._libgap.MinimalNormalSubgroups()]
362+
363+
def maximal_normal_subgroups(self):
364+
"""
365+
Return the maximal proper normal subgroups of ``self``.
366+
367+
This raises an error if `G/[G, G]` is infinite, yielding infinitely
368+
many maximal normal subgroups.
369+
370+
EXAMPLES::
371+
372+
sage: SL(2,GF(49)).minimal_normal_subgroups()
373+
[Subgroup with 1 generators (
374+
[6 0]
375+
[0 6]
376+
) of Special Linear Group of degree 2 over Finite Field in z2 of size 7^2]
377+
"""
378+
return [self._subgroup_constructor(gap_subgroup)
379+
for gap_subgroup in self._libgap.MaximalNormalSubgroups()]
380+
348381
@cached_method
349382
def gens(self):
350383
"""

src/sage/groups/perm_gps/permgroup.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4116,6 +4116,37 @@ def isomorphism_type_info_simple_group(self):
41164116
else:
41174117
raise TypeError("group must be simple")
41184118

4119+
def minimal_normal_subgroups(self):
4120+
"""
4121+
Return the nontrivial minimal normal subgroups ``self``.
4122+
4123+
EXAMPLES::
4124+
4125+
sage: G = PermutationGroup([(1,2,3),(4,5)])
4126+
sage: G.minimal_normal_subgroups()
4127+
[Subgroup generated by [(4,5)] of (Permutation Group with generators [(4,5), (1,2,3)]),
4128+
Subgroup generated by [(1,2,3)] of (Permutation Group with generators [(4,5), (1,2,3)])]
4129+
"""
4130+
return [self.subgroup(gap_group=gap_subgroup)
4131+
for gap_subgroup in self._libgap_().MinimalNormalSubgroups()]
4132+
4133+
def maximal_normal_subgroups(self):
4134+
"""
4135+
Return the maximal proper normal subgroups of ``self``.
4136+
4137+
This raises an error if `G/[G, G]` is infinite, yielding infinitely
4138+
many maximal normal subgroups.
4139+
4140+
EXAMPLES::
4141+
4142+
sage: G = PermutationGroup([(1,2,3),(4,5)])
4143+
sage: G.maximal_normal_subgroups()
4144+
[Subgroup generated by [(1,2,3)] of (Permutation Group with generators [(4,5), (1,2,3)]),
4145+
Subgroup generated by [(4,5)] of (Permutation Group with generators [(4,5), (1,2,3)])]
4146+
"""
4147+
return [self.subgroup(gap_group=gap_subgroup)
4148+
for gap_subgroup in self._libgap_().MaximalNormalSubgroups()]
4149+
41194150
###################### Boolean tests #####################
41204151

41214152
def is_abelian(self):

0 commit comments

Comments
 (0)