Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/sonata/doc/ref/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 23.8.2025 mit Größe 12 kB image not shown  

Quelle  grpsupp.tex   Sprache: Latech

 
%
\Chapter{Supportive functions for groups}
%

In order to support nearring calculations, a few functions for groups had to 
be added to the standard {\GAP} group library functions. 

The functions described here can be found in the source files
`grpend.g?' and `grpsupp.g?'

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Predefined groups}


All groups of order $2$ to $32$ are predefined. They can be accessed
by variables of the kind `GTW<o>\_{<n>}' where defines the order
of the group and <n> the number of the group of order <o> as they
appear in \cite{thomaswood80:GT} . For example, `GTW16\_6' defines the
group of Thomas -- Wood type $16/6$, which is actually $D_4 \times
C_2$.

Alternatively, these groups can be accessed via the function

\>TWGroup( <o>, <n> )

with <o> and <n> as above. In addition, all these groups are stored in the
list {\tt GroupList}.

Conversely, for any group <G> of order at most 32,

\>IdTWGroup( <G> )

returns a pair `[<o>,<n>]', meaning that is isomorphic to the group
$o/n$.

\beginexample
    gap> G := GTW6_2;               
    6/2
    gap> H := TWGroup( 4, 2 );
    4/2
    gap> D := DirectProduct( G, H );
    Group([ (1,2), (1,2,3), (4,5), (6,7) ])
    gap> IdTWGroup( D );
    [ 24, 4 ]
    gap> GroupList;
    [ 2/1, 3/1, 4/1, 4/2, 5/1, 6/1, 6/2, 7/1, 8/1, 8/2, 8/3, 8/4, 8/5, 
      9/1, 9/2, 10/1, 10/2, 11/1, 12/1, 12/2, 12/3, 12/4, 12/5, 13/1, 
      14/1, 14/2, 15/1, 16/1, 16/2, 16/3, 16/4, 16/5, 16/6, 16/7, 16/8, 
      16/9, 16/10, 16/11, 16/12, 16/13, 16/14, 17/1, 18/1, 18/2, 18/3, 
      18/4, 18/5, 19/1, 20/1, 20/2, 20/3, 20/4, 20/5, 21/1, 21/2, 22/1, 
      22/2, 23/1, 24/1, 24/2, 24/3, 24/4, 24/5, 24/6, 24/7, 24/8, 24/9, 
      24/10, 24/11, 24/12, 24/13, 24/14, 24/15, 25/1, 25/2, 26/1, 26/2, 
      27/1, 27/2, 27/3, 27/4, 27/5, 28/1, 28/2, 28/3, 28/4, 29/1, 30/1, 
      30/2, 30/3, 30/4, 31/1, 32/1, 32/2, 32/3, 32/4, 32/5, 32/6, 32/7, 
      32/8, 32/9, 32/10, 32/11, 32/12, 32/13, 32/14, 32/15, 32/16, 32/17, 
      32/18, 32/19, 32/20, 32/21, 32/22, 32/23, 32/24, 32/25, 32/26, 
      32/27, 32/28, 32/29, 32/30, 32/31, 32/32, 32/33, 32/34, 32/35, 
      32/36, 32/37, 32/38, 32/39, 32/40, 32/41, 32/42, 32/43, 32/44, 
      32/45, 32/46, 32/47, 32/48, 32/49, 32/50, 32/51 ]
\endexample

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Operation tables for groups}


\>PrintTable( <G> )

`PrintTable' prints the Cayley table of the group .

\beginexample
    gap> G := GTW4_2;
    4/2
    gap> PrintTable( G );
    Let:
    g0 := ()
    g1 := (3,4)
    g2 := (1,2)
    g3 := (1,2)(3,4)

      *  | g0 g1 g2 g3 
     ------------------
      g0 | g0 g1 g2 g3 
      g1 | g1 g0 g3 g2 
      g2 | g2 g3 g0 g1 
      g3 | g3 g2 g1 g0 

\endexample

Sometimes different symbols for the elements in the would make the table
look nicer. For the group $4/2$ ($\Z_2 \times \Z_2$) one could choose
the canonical form as pairs of zeros and ones.

\beginexample
    gap> G := GTW4_2;
    4/2
    gap> SetSymbols( G, ["(0,0)","(1,0)","(0,1)","(1,1)"] );
    gap> PrintTable( G );
    Let:
    (0,0) := ()
    (1,0) := (3,4)
    (0,1) := (1,2)
    (1,1) := (1,2)(3,4)

          *  | (0,0)  (1,0)  (0,1)  (1,1)  
      -----------------------------------
      (0,0)  | (0,0)  (1,0)  (0,1)  (1,1)  
      (1,0)  | (1,0)  (0,0)  (1,1)  (0,1)  
      (0,1)  | (0,1)  (1,1)  (0,0)  (1,0)  
      (1,1)  | (1,1)  (0,1)  (1,0)  (0,0)  
\endexample

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Group endomorphisms}


\>Endomorphisms( <G> )

`Endomorphisms' computes all the endomorphisms of the group .
This function is most essential for computing the nearrings on a group.
The endomorphisms are returned as a list of group homomorphisms. So all
functions for mappings and homomorphisms are applicable.

\beginexample
    gap> G := TWGroup( 4, 2 );
    4/2
    gap> Endomorphisms( G );
    [ [ (1,2), (3,4) ] -> [ (), () ], [ (1,2), (3,4) ] -> [ (), (1,2) ],
      [ (1,2), (3,4) ] -> [ (), (3,4) ], [ (1,2), (3,4) ] -> [ (), (1,2)(3,4) ],
      [ (1,2), (3,4) ] -> [ (1,2), () ], [ (1,2), (3,4) ] -> [ (3,4), () ],
      [ (1,2), (3,4) ] -> [ (1,2)(3,4), () ], [ (1,2), (3,4) ] -> [ (1,2), (1,2) ]
        , [ (1,2), (3,4) ] -> [ (3,4), (3,4) ],
      [ (1,2), (3,4) ] -> [ (1,2)(3,4), (1,2)(3,4) ],
      [ (1,2), (3,4) ] -> [ (1,2), (3,4) ],
      [ (1,2), (3,4) ] -> [ (1,2)(3,4), (3,4) ],
      [ (1,2), (3,4) ] -> [ (3,4), (1,2) ],
      [ (1,2), (3,4) ] -> [ (1,2)(3,4), (1,2) ],
      [ (1,2), (3,4) ] -> [ (3,4), (1,2)(3,4) ],
      [ (1,2), (3,4) ] -> [ (1,2), (1,2)(3,4) ] ]
\endexample

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Group automorphisms}


\>Automorphisms( <G> )

`Automorphisms' computes all the automorphisms of the group .
The automorphisms are returned as a list of group homomorphisms. So all
functions for mappings and homomorphisms are applicable.

\beginexample
    gap> Automorphisms( GTW4_2 );
    [ IdentityMapping( 4/2 ), [ (1,2), (3,4) ] -> [ (1,2)(3,4), (3,4) ],
      [ (1,2), (3,4) ] -> [ (3,4), (1,2) ], 
      [ (3,4), (1,2) ] -> [ (1,2), (1,2)(3,4) ], 
      [ (3,4), (1,2) ] -> [ (1,2)(3,4), (3,4) ], 
      [ (3,4), (1,2) ] -> [ (1,2)(3,4), (1,2) ] ]
\endexample

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Inner automorphisms of a group}


\>InnerAutomorphisms( <G> )

`InnerAutomorphisms' computes all the inner automorphisms of the group
<G>. 
The inner automorphisms are returned as a list of group homomorphisms. So all
functions for mappings and homomorphisms are applicable.

\beginexample
    gap> InnerAutomorphisms( AlternatingGroup( 4 ) );
    [ ^(), ^(2,3,4), ^(2,4,3), ^(1,2)(3,4), ^(1,2,3), ^(1,2,4), 
      ^(1,3,2), ^(1,3,4), ^(1,3)(2,4), ^(1,4,2), ^(1,4,3), ^(1,4)(2,3) ]
\endexample

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Isomorphic groups}


\>IsIsomorphicGroup( <G>, <H> )

`IsIsomorphicGroup' determines if the groups and are
isomorphic. If they are isomorphic, an isomorphism between these two groups
can be found with `IsomorphismGroups'.

\beginexample
    gap> IsIsomorphicGroup( SymmetricGroup( 4 ), GTW24_12 );
    true
\endexample

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Subgroups of a group}


\>Subgroups( <G> )

`Subgroups' returns a list of all subgroups of the group , if there
are only finitely many subgroups.

\beginexample
    gap> Subgroups( TWGroup( 8, 4 ) );
    [ Group(()), Group([ (1,3)(2,4) ]), Group([ (2,4) ]), Group([ (1,3) ]),
      Group([ (1,2)(3,4) ]), Group([ (1,4)(2,3) ]), Group([ (1,3)(2,4), (2,4) ]),
      Group([ (1,3)(2,4), (1,2,3,4) ]), Group([ (1,3)(2,4), (1,2)(3,4) ]),
      Group([ (1,3)(2,4), (2,4), (1,2,3,4) ]) ]
\endexample

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Normal subgroups generated by a single element}


\>OneGeneratedNormalSubgroups( <G> )

`OneGeneratedSubgroups' returns a list of all proper, non-trivial normal
subgroups of the group <G> which are generated by one element.
`OneGeneratedSubgroups' is a synonym for `GeneratorsOfCongruenceLattice'.

\beginexample
    gap> OneGeneratedNormalSubgroups( AlternatingGroup(4) );
    [ Group([ (1,2)(3,4), (1,3)(2,4), (1,4)(2,3) ]) ]
\endexample

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Invariant subgroups}


\>IsInvariantUnderMaps( <G>, <U>, <maps> )

For a list of mappings, <maps> on the group <G> and
a subgroup <U> of <G>, `IsInvariantUnderMaps' returns the truth
value of ``<U> is invariant under all mappings in <maps>''. In the following
example this function is used to compute all fully invariant subgroups of
the dihedral group of order 12.

\beginexample
    gap> D12 := DihedralGroup( 12 );                                        
    <pc group of size 12 with 3 generators>
    gap> s := Subgroups( D12 );
    [ Group([  ]), Group([ f1 ]), Group([ f1*f3^2 ]), Group([ f1*f3 ]), 
      Group([ f2*f3 ]), Group([ f1*f2 ]), Group([ f1*f2*f3^2 ]), 
      Group([ f1*f2*f3 ]), Group([ f3 ]), Group([ f1, f2*f3 ]), 
      Group([ f1*f3^2, f2*f3 ]), Group([ f1*f3, f2*f3 ]), 
      Group([ f3, f1 ]), Group([ f3, f2 ]), Group([ f3, f1*f2 ]), 
      Group([ f3, f1, f2 ]) ]
    gap> e := Endomorphisms( D12 );;                                        
    gap> f := Filtered( s, sg -> IsInvariantUnderMaps( D12, sg, e ) );
    [ Group([  ]), Group([ f3 ]), Group([ f3, f1, f2 ]) ]
\endexample

\>IsCharacteristicSubgroup( <G>, <U> )

A subgroup <U> of the group <G> is *characteristic* if it is invariant under
all automorphisms on <G>. For a subgroup <U> of the group <G>,
`IsCharacteristicSubgroup' returns the truth value of `` is a characteristic
subgroup of <G>''. If the group <U> is defined as the subgroup of a group
<G> then the function call

\>IsCharacteristicInParent( <U> )

has the same result.

\beginexample
    gap> IsCharacteristicInParent( Centre( GTW16_11 ) );
    true
\endexample

\>IsFullinvariant( <G>, <U> )

A subgroup <U> of the group <G> is *fully invariant* if it is invariant under
all endomorphisms on <G>. 
For a subgroup <U> of the group <G>, `IsFullinvariant' returns the
truth value of ``<U> is a fully invariant subgroup of <G>''.

\beginexample
    gap> G := GTW6_2;
    6/2
    gap> S := Subgroup( G, [(1,2)] );                                
    Group([ (1,2) ])
    gap> IsFullinvariant( G, S );
    false
\endexample

If the group <U> is defined as the subgroup of a group <G> then the function
call

\>IsFullinvariantInParent( <U> )

has the same result.

\beginexample
    gap> IsFullinvariantInParent( Centre( GTW16_11 ) );
    true
\endexample

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Coset representatives}


\>RepresentativesModNormalSubgroup( <G>, <N> )

If <G> is a group and <N> is a normal subgroup of <G> then the function
`RepresentativesModNormalSubgroup' returns a set of representatives for
the congruence classes modulo the normal subgroup <N>, i.e. a set of elements
of <G> with exactly one element from each cogruence class modulo <N>.

\beginexample
    gap> G := DihedralGroup( 16 );
    <pc group of size 16 with 4 generators>
    gap> C := Centre( G );
    Group([ f4 ])
    gap> RepresentativesModNormalSubgroup( G, C );
    [ <identity> of ..., f1, f2, f3, f2*f3, f1*f2*f4, f1*f3*f4, 
      f1*f2*f3*f4 ]
\endexample

\>NontrivialRepresentativesModNormalSubgroup( <G>, <N> )

This function behaves as `RepresentativesModNormalSubgroup' but it excludes
the representative for the congruence class which contains the neutral element
of the group.

\beginexample
    gap> G := DihedralGroup( 16 );
    <pc group of size 16 with 4 generators>
    gap> C := Centre( G );
    Group([ f4 ])
    gap> NontrivialRepresentativesModNormalSubgroup( G, C );
    [ f1, f2, f3, f2*f3, f1*f2*f4, f1*f3*f4, f1*f2*f3*f4 ]
\endexample


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Scott length}


\>ScottLength( <G> )

The function `ScottLength' retuns the Scott-length of the group .
For a definition of the Scott-length of a group and an idea for an
algorithm for the general case see \cite{scott69:TAOPMOAGATSOCPPGI}.
In the case of a class 2 nilpotent finite group <G> a faster algorithm
described in \cite{ecker98:OTNOPFONGOC2} is used.

\beginexample
    gap> ScottLength( GTW6_2 );    
    2
    gap> ScottLength( GTW16_11 );
    4
\endexample

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Other useful functions for groups}


\>AsPermGroup( <G> )

For a group <G>, `AsPermGroup' returns a permutation group that is isomorphic
to <G>. In the case of a permutation group this is the group itself.

\beginexample
    gap> D24 := DihedralGroup( 24 );
    <pc group of size 24 with 4 generators>
    gap> D24p := AsPermGroup( D24 );
    <permutation group of size 24 with 4 generators>
    gap> IsomorphismGroups( D24, D24p );
    [ f1, f2, f3, f4 ] ->
    [ (1,17)(2,16)(3,18)(4,14)(5,13)(6,15)(7,20)(8,19)(9,21)(10,22)(11,24)(12,23),
      (1,11,4,9,2,12,5,7,3,10,6,8)(13,23,16,21,14,24,17,19,15,22,18,20),
      (1,4,2,5,3,6)(7,10,8,11,9,12)(13,16,14,17,15,18)(19,22,20,23,21,24),
      (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,15)(16,17,18)(19,20,21)(22,23,24) ]
    gap> C12 := CyclicGroup( 12 );  
    <pc group of size 12 with 3 generators>
    gap> AsPermGroup( C12 );
    Group([ ( 1, 7, 4,10, 2, 8, 5,11, 3, 9, 6,12), 
      ( 1, 4, 2, 5, 3, 6)( 7,10, 8,11, 9,12), 
      ( 1, 2, 3)( 4, 5, 6)( 7, 8, 9)(10,11,12) ])
\endexample




















%%% Local Variables: 
%%% mode: latex
%%% TeX-master: t
%%% End: 

93%


¤ Dauer der Verarbeitung: 0.7 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.