Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  CHAP001.htm   Sprache: HTML

 
 products/Sources/formale Sprachen/GAP/pkg/sonata/doc/htm/ref/CHAP001.htm


<html><head><title>[SONATA] 1 Supportive functions for groups</title></head>
<body text="#000000" bgcolor="#ffffff">
[<a href = "chapters.htm">Up</a>] [<a href ="CHAP002.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
<h1>1 Supportive functions for groups</h1><p>
<P>
<H3>Sections</H3>
<oL>
<li> <A HREF="CHAP001.htm#SECT001">Predefined groups</a>
<li> <A HREF="CHAP001.htm#SECT002">Operation tables for groups</a>
<li> <A HREF="CHAP001.htm#SECT003">Group endomorphisms</a>
<li> <A HREF="CHAP001.htm#SECT004">Group automorphisms</a>
<li> <A HREF="CHAP001.htm#SECT005">Inner automorphisms of a group</a>
<li> <A HREF="CHAP001.htm#SECT006">Isomorphic groups</a>
<li> <A HREF="CHAP001.htm#SECT007">Subgroups of a group</a>
<li> <A HREF="CHAP001.htm#SECT008">Normal subgroups generated by a single element</a>
<li> <A HREF="CHAP001.htm#SECT009">Invariant subgroups</a>
<li> <A HREF="CHAP001.htm#SECT010">Coset representatives</a>
<li> <A HREF="CHAP001.htm#SECT011">Scott length</a>
<li> <A HREF="CHAP001.htm#SECT012">Other useful functions for groups</a>
</ol><p>
<p>
In order to support nearring calculations, a few functions for groups had to 
be added to the standard <font face="Gill Sans,Helvetica,Arial">GAP</font> group library functions. 
<p>
The functions described here can be found in the source files
<code>grpend.g?</code> and <code>grpsupp.g?</code>
<p>
<p>
<h2><a name="SECT001">1.1 Predefined groups</a></h2>
<p><p>
All groups of order 2 to 32 are predefined. They can be accessed
by variables of the kind <code>GTW</code><var>o</var><code>_</code><var>n</var><code></code> where <var>o</vardefines the order
of the group and <var>n</var> the number of the group of order <var>o</var> as they
appear in <a href="biblio.htm#thomaswood80:GT"><[>thomaswood80:GT</cite></a>] . For example, <code>GTW16_6</code> defines the
group of Thomas -- Wood type 16/6, which is actually <i>D</i><sub>4</sub> ×<i>C</i><sub>2</sub>.
<p>
Alternatively, these groups can be accessed via the function
<p>
<a name = "SSEC001.1"></a>
<li><code>TWGroup( </code><var>o</var><code>, </code><var>n</var><code> )</code>
<p>
with <var>o</var> and <var>n</var> as above. In addition, all these groups are stored in the
list ttGroupList.
<p>
Conversely, for any group <var>G</var> of order at most 32,
<p>
<a name = "SSEC001.2"></a>
<li><code>IdTWGroup( </code><var>G</var><code> )</code>
<p>
returns a pair <code>[</code><var>o</var><code>,</code><var>n</var><code>]</code>, meaning that <var>G</var> is isomorphic to the group
<i>o</i>/<i>n</i>.
<p>
<pre>
    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 ]
</pre>
<p>
<p>
<h2><a name="SECT002">1.2 Operation tables for groups</a></h2>
<p><p>
<a name = "SSEC002.1"></a>
<li><code>PrintTable( </code><var>G</var><code> )</code>
<p>
<code>PrintTable</code> prints the Cayley table of the group <var>G</var>.
<p>
<pre>
    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 

</pre>
<p>
Sometimes different symbols for the elements in the would make the table
look nicer. For the group 4/2 (<b>Z</b><sub>2</sub> ×<b>Z</b><sub>2</sub>) one could choose
the canonical form as pairs of zeros and ones.
<p>
<pre>
    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)  
</pre>
<p>
<p>
<h2><a name="SECT003">1.3 Group endomorphisms</a></h2>
<p><p>
<a name = "SSEC003.1"></a>
<li><code>Endomorphisms( </code><var>G</var><code> )</code>
<p>
<code>Endomorphisms</code> computes all the endomorphisms of the group <var>G</var>. 
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.
<p>
<pre>
    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) ] ]
</pre>
<p>
<p>
<h2><a name="SECT004">1.4 Group automorphisms</a></h2>
<p><p>
<a name = "SSEC004.1"></a>
<li><code>Automorphisms( </code><var>G</var><code> )</code>
<p>
<code>Automorphisms</code> computes all the automorphisms of the group <var>G</var>. 
The automorphisms are returned as a list of group homomorphisms. So all
functions for mappings and homomorphisms are applicable.
<p>
<pre>
    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) ] ]
</pre>
<p>
<p>
<h2><a name="SECT005">1.5 Inner automorphisms of a group</a></h2>
<p><p>
<a name = "SSEC005.1"></a>
<li><code>InnerAutomorphisms( </code><var>G</var><code> )</code>
<p>
<code>InnerAutomorphisms</code> computes all the inner automorphisms of the group 
<var>G</var>. 
The inner automorphisms are returned as a list of group homomorphisms. So all
functions for mappings and homomorphisms are applicable.
<p>
<pre>
    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) ]
</pre>
<p>
<p>
<h2><a name="SECT006">1.6 Isomorphic groups</a></h2>
<p><p>
<a name = "SSEC006.1"></a>
<li><code>IsIsomorphicGroup( </code><var>G</var><code>, </code><var>H</var><code> )</code>
<p>
<code>IsIsomorphicGroup</code> determines if the groups <var>G</var> and <var>H</var> are 
isomorphic. If they are isomorphic, an isomorphism between these two groups
can be found with <code>IsomorphismGroups</code>.
<p>
<pre>
    gap> IsIsomorphicGroup( SymmetricGroup( 4 ), GTW24_12 );
    true
</pre>
<p>
<p>
<h2><a name="SECT007">1.7 Subgroups of a group</a></h2>
<p><p>
<a name = "SSEC007.1"></a>
<li><code>Subgroups( </code><var>G</var><code> )</code>
<p>
<code>Subgroups</code> returns a list of all subgroups of the group <var>G</var>, if there
are only finitely many subgroups.
<p>
<pre>
    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) ]) ]
</pre>
<p>
<p>
<h2><a name="SECT008">1.8 Normal subgroups generated by a single element</a></h2>
<p><p>
<a name = "SSEC008.1"></a>
<li><code>OneGeneratedNormalSubgroups( </code><var>G</var><code> )</code>
<p>
<code>OneGeneratedSubgroups</code> returns a list of all proper, non-trivial normal
subgroups of the group <var>G</var> which are generated by one element.
<code>OneGeneratedSubgroups</code> is a synonym for <code>GeneratorsOfCongruenceLattice</code>.
<p>
<pre>
    gap> OneGeneratedNormalSubgroups( AlternatingGroup(4) );
    [ Group([ (1,2)(3,4), (1,3)(2,4), (1,4)(2,3) ]) ]
</pre>
<p>
<p>
<h2><a name="SECT009">1.9 Invariant subgroups</a></h2>
<p><p>
<a name = "SSEC009.1"></a>
<li><code>IsInvariantUnderMaps( </code><var>G</var><code>, </code><var>U</var><code>, </code><var>maps</var><code> )</code>
<p>
For a list of mappings, <var>maps</var> on the group <var>G</var> and
a subgroup <var>U</var> of <var>G</var>, <code>IsInvariantUnderMaps</code> returns the truth 
value of ``<var>U</var> is invariant under all mappings in <var>maps</var>''. In the following
example this function is used to compute all fully invariant subgroups of
the dihedral group of order 12.
<p>
<pre>
    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 ]) ]
</pre>
<p>
<a name = "SSEC009.2"></a>
<li><code>IsCharacteristicSubgroup( </code><var>G</var><code>, </code><var>U</var><code> )</code>
<p>
A subgroup <var>U</var> of the group <var>G</var> is <strong>characteristic</strong> if it is invariant under
all automorphisms on <var>G</var>. For a subgroup <var>U</var> of the group <var>G</var>,
<code>IsCharacteristicSubgroup</code> returns the truth value of ``<var>U</var> is a characteristic
subgroup of <var>G</var>''. If the group <var>U</var> is defined as the subgroup of a group
<var>G</var> then the function call
<p>
<a name = "SSEC009.3"></a>
<li><code>IsCharacteristicInParent( </code><var>U</var><code> )</code>
<p>
has the same result.
<p>
<pre>
    gap> IsCharacteristicInParent( Centre( GTW16_11 ) );
    true
</pre>
<p>
<a name = "SSEC009.4"></a>
<li><code>IsFullinvariant( </code><var>G</var><code>, </code><var>U</var><code> )</code>
<p>
A subgroup <var>U</var> of the group <var>G</var> is <strong>fully invariant</strong> if it is invariant under
all endomorphisms on <var>G</var>. 
For a subgroup <var>U</var> of the group <var>G</var>, <code>IsFullinvariant</code> returns the
truth value of ``<var>U</var> is a fully invariant subgroup of <var>G</var>''.
<p>
<pre>
    gap> G := GTW6_2;
    6/2
    gap> S := Subgroup( G, [(1,2)] );                                
    Group([ (1,2) ])
    gap> IsFullinvariant( G, S );
    false
</pre>
<p>
If the group <var>U</var> is defined as the subgroup of a group <var>G</var> then the function
call
<p>
<a name = "SSEC009.5"></a>
<li><code>IsFullinvariantInParent( </code><var>U</var><code> )</code>
<p>
has the same result.
<p>
<pre>
    gap> IsFullinvariantInParent( Centre( GTW16_11 ) );
    true
</pre>
<p>
<p>
<h2><a name="SECT010">1.10 Coset representatives</a></h2>
<p><p>
<a name = "SSEC010.1"></a>
<li><code>RepresentativesModNormalSubgroup( </code><var>G</var><code>, </code><var>N</var><code> )</code>
<p>
If <var>G</var> is a group and <var>N</var> is a normal subgroup of <var>G</var> then the function
<code>RepresentativesModNormalSubgroup</code> returns a set of representatives for
the congruence classes modulo the normal subgroup <var>N</var>, i.e. a set of elements
of <var>G</var> with exactly one element from each cogruence class modulo <var>N</var>.
<p>
<pre>
    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 ]
</pre>
<p>
<a name = "SSEC010.2"></a>
<li><code>NontrivialRepresentativesModNormalSubgroup( </code><var>G</var><code>, </code><var>N</var><code> )</code>
<p>
This function behaves as <code>RepresentativesModNormalSubgroup</code> but it excludes
the representative for the congruence class which contains the neutral element
of the group.
<p>
<pre>
    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 ]
</pre>
<p>
<p>
<h2><a name="SECT011">1.11 Scott length</a></h2>
<p><p>
<a name = "SSEC011.1"></a>
<li><code>ScottLength( </code><var>G</var><code> )</code>
<p>
The function <code>ScottLength</code> retuns the Scott-length of the group <var>G</var>.
For a definition of the Scott-length of a group and an idea for an
algorithm for the general case see <a href="biblio.htm#scott69:TAOPMOAGATSOCPPGI"><[>scott69:TAOPMOAGATSOCPPGI</cite></a>].
In the case of a class 2 nilpotent finite group <var>G</var> a faster algorithm
described in <a href="biblio.htm#ecker98:OTNOPFONGOC2"><[>ecker98:OTNOPFONGOC2</cite></a>] is used.
<p>
<pre>
    gap> ScottLength( GTW6_2 );    
    2
    gap> ScottLength( GTW16_11 );
    4
</pre>
<p>
<p>
<h2><a name="SECT012">1.12 Other useful functions for groups</a></h2>
<p><p>
<a name = "SSEC012.1"></a>
<li><code>AsPermGroup( </code><var>G</var><code> )</code>
<p>
For a group <var>G</var>, <code>AsPermGroup</code> returns a permutation group that is isomorphic
to <var>G</var>. In the case of a permutation group this is the group itself.
<p>
<pre>
    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) ])
</pre>
<p>
<p>
[<a href = "chapters.htm">Up</a>] [<a href ="CHAP002.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
<P>
<address>SONATA manual<br>September 2025
</address></body></html>

Messung V0.5
C=95 H=99 G=96

¤ Dauer der Verarbeitung: 0.8 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 und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge