Skip to content

Categories for finite/permutation/symmetric groups #8044

@nthiery

Description

@nthiery

This patch:

  • Introduces two new categories: FiniteGroups and FinitePermutationGroups

  • As a result, this standardizes the interface of those groups
    (cardinality, one, ...).

  • Puts all pari, permutation, and matrix groups in the corresponding
    categories. There remains to handle Galois groups in
    sage/rings/number_field/.

  • Deprecates the abstract class sage.groups.group.FiniteGroup.
    Content moved to the FiniteGroups category (see cayley_graph).
    It is not used anymore anywhere in Sage's library.

  • Merges cayley_graph with that for FiniteSemigroups:

    • Generalization to any Semigroups with an elements option
      (should this be vertices?) to handle large/infinite semigroups
    • The call:
      sage: G.cayley_graph(connecting_set = [a,b,c])
      is deprecated in favor of:
      sage: G.cayley_graph(generators = [a,b,c])
    • The following feature is removed:
      sage: G.cayley_graph(connecting_set = a)
    • side = "right" is now the default (was "twosided" for semigroups).
    • Removed forcing implementation = "networkx" in the produced graph.
      Note: this changed the order of the edges, which required fixing
      a test in sage.graphs.generic_graphs (color_by_label)
  • Adds cool examples of Cayley graphs plots, courtesy of Sebastien Labbe

  • Provides group_generators defined from gens, as well as
    semigroup_generators defined from group_generators in the finite
    and coxeter cases.

  • Puts the SymmetricGroup in the FiniteWeylGroups category.
    Beware: as all Sage's permutation groups, this uses GAP's product
    convention coming from left-to-right composition of permutations,
    which can be surprising for combinatorists.
    Beware: the generators of SymmetricGroup(n) are now its canonical
    Weyl group generators, namely the elementary transpositions

  • Adds an has_descent method to permutation group elements

  • Makes all named permutation groups, as well as GL and SL have
    UniqueRepresentation,

  • Makes more systematic use of TestSuite(...).run()

  • Makes a minor improvement to FiniteEnumeratedSets tests for
    large finite enumerated sets

  • Strips away some unused imports

  • Updates a couple doctests here and there

Further debatable changes:

  • The underlying set of an alternating or symmetric group is now a
    tuple. This is safer and helps UniqueRepresentation. However, this
    could break backward compatibility. Also, the repr is now of the
    form SymmetricGroup((1,3,4)) instead of SymmetricGroup([1,3,4]).

  • Due to the switch to UniqueRepresentation, with:

     sage: F = GF(3); MS = MatrixSpace(F,2,2)
     sage: gens = [MS([[0,1],[1,0]]),MS([[1,1],[0,1]])]
     sage: G = MatrixGroup(gens)
     sage: H = GL(2,F)
    

    the following equality test fails:

     sage: H == G
    

    True

    Do we really want this feature? If yes, than the equality test
    inherited from UniqueRepresentation will have to be fixed.

CC: @sagetrac-sage-combinat [email protected]

Component: group theory

Keywords: Finite groups, permutation groups, symmetric groups

Author: Nicolas M. Thiéry

Reviewer: David Joyner, Javier López Peña

Merged: sage-4.3.3.alpha0

Issue created by migration from https://trac.sagemath.org/ticket/8044

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions