Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 91213ddcfbe7f54821d42c2d9e091326 > files > 2780

gap-system-packages-4.4.12-5mdv2010.0.i586.rpm

<html><head><title>[SONATA] 5 Transformation nearrings</title></head>
<body text="#000000" bgcolor="#ffffff">
[<a href = "chapters.htm">Up</a>] [<a href ="CHAP004.htm">Previous</a>] [<a href ="CHAP006.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
<h1>5 Transformation nearrings</h1><p>
<P>
<H3>Sections</H3>
<oL>
<li> <A HREF="CHAP005.htm#SECT001">Constructing transformation nearrings</a>
<li> <A HREF="CHAP005.htm#SECT002">Nearrings of transformations</a>
<li> <A HREF="CHAP005.htm#SECT003">The group a transformation nearring acts on</a>
<li> <A HREF="CHAP005.htm#SECT004">Transformation nearrings and other nearrings</a>
<li> <A HREF="CHAP005.htm#SECT005">Noetherian quotients for transformation nearrings</a>
<li> <A HREF="CHAP005.htm#SECT006">Zerosymmetric mappings</a>
</ol><p>
<p>
In the previous chapter we introduced mappings on groups, and we
called them <strong>endomappings</strong>.  We also introduced the operation of
pointwise addition <code>+</code> for endomappings. Now we are able to use these
mappings together with pointwise addition <code>+</code> and composition <code>*</code> to
construct left nearrings. These nearrings satisfy the distributive
law <var>x * (y + z) = x * y + x * z</var>.
<p>
A <strong>transformation nearring</strong> is a set of mappings on a group <var>G</var> that
is closed under pointwise addition of mappings, under forming the
additive inverse and under functional composition. For more
information we suggest citePilz:Nearrings, citemeldrum85:NATLWG,
and citeClay:Nearrings,
<p>
The algorithms used can be found in
citeaichingereckernoebauer00:TUOCINT and citeaichingerea00:CWN.
<p>
The elements of a transformation nearring are given as endomappings on
the group <var>G</var> (cf. Chapter ``Functions on groups that are not
necessarily homomorphisms: EndoMappings'').
<p>
<p>
<h2><a name="SECT001">5.1 Constructing transformation nearrings</a></h2>
<p><p>
<a name = "SECT001"></a>
<li><code>TransformationNearRingByGenerators( </code><var>G</var><code>, </code><var>endomaplist</var><code> )</code>
<p>
For a (possibly empty) list <var>endomaplist</var> of endomappings on a group
<var>G</var>, the constructor function <code>TransformationNearRingByGenerators</code> returns the
nearring  generated by these mappings. All of them must be
endomappings on the group <var>G</var>.
<p>
<pre>
    gap&gt; g := AlternatingGroup ( 4 );
    Alt( [ 1 .. 4 ] )
    gap&gt; AsSortedList ( g );
    [ (), (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) ]
    gap&gt; t := EndoMappingByPositionList ( g, [1,3,4,5,2,1,1,1,1,1,1,1] );
    &lt;mapping: AlternatingGroup( [ 1 .. 4 ] ) -&gt; AlternatingGroup( 
    [ 1 .. 4 ] ) &gt;
    gap&gt; m := TransformationNearRingByGenerators ( g, [t] );
    TransformationNearRingByGenerators(
    [ &lt;mapping: AlternatingGroup( [ 1 .. 4 ] ) -&gt; AlternatingGroup( 
        [ 1 .. 4 ] ) &gt; ])
    gap&gt; Size (m); # may take a few moments
    20736
    gap&gt; IsCommutative ( m );
    false
</pre>
<p>
<a name = "SECT001"></a>
<li><code>TransformationNearRingByAdditiveGenerators( </code><var>G</var><code>, </code><var>endomaplist</var><code> )</code>
<p>
If a transformation nearring is known to be additively generated by a
set of endomappings on a group (as for example the distributively
generated nearrings <var>E(G)</var>, <var>A(G)</var> and <var>I(G)</var>), the function
<code>TransformationNearRingByAdditiveGenerators</code> allows to
construct this nearring. The only difference between
<code>TransformationNearRingByGenerators</code> and
<code>TransformationNearRingByAdditiveGenerators</code> is that
<code>TransformationNearRingByAdditiveGenerators</code> is much faster.
<p>
<pre>
    gap&gt; endos := Endomorphisms ( GTW6_2 );
    [ [ (1,2), (1,2,3) ] -&gt; [ (), () ], [ (1,2), (1,2,3) ] -&gt; [ (2,3), () ],
      [ (1,2), (1,2,3) ] -&gt; [ (1,3), () ], [ (1,2), (1,2,3) ] -&gt; [ (1,2), () ],
      [ (1,2), (1,2,3) ] -&gt; [ (2,3), (1,2,3) ],
      [ (1,2), (1,2,3) ] -&gt; [ (2,3), (1,3,2) ],
      [ (1,2), (1,2,3) ] -&gt; [ (1,2), (1,3,2) ],
      [ (1,2), (1,2,3) ] -&gt; [ (1,2), (1,2,3) ],
      [ (1,2), (1,2,3) ] -&gt; [ (1,3), (1,2,3) ],
      [ (1,2), (1,2,3) ] -&gt; [ (1,3), (1,3,2) ] ]
    gap&gt; Endo := TransformationNearRingByAdditiveGenerators ( GTW6_2, endos );
    &lt; transformation nearring with 10 generators &gt;
    gap&gt; Size ( Endo );
    54
</pre>
<p>
<p>
<h2><a name="SECT002">5.2 Nearrings of transformations</a></h2>
<p><p>
<a name = "SECT002"></a>
<li><code>MapNearRing( </code><var>G</var><code> )</code>
<p>
<a name = "SECT002"></a>
<li><code>TransformationNearRing( </code><var>G</var><code> )</code>
<p>
<code>MapNearRing</code> and <code>TransformationNearRing</code> both return the nearring of all
mappings on <var>G</var>.
<p>
<pre>
    gap&gt; m := MapNearRing ( GTW32_12 );
    TransformationNearRing(32/12)
    gap&gt; Size ( m );
    1461501637330902918203684832716283019655932542976
    gap&gt; NearRingIdeals ( m );
    [ &lt; nearring ideal &gt;, &lt; nearring ideal &gt; ]
</pre>
<p>
<a name = "SECT002"></a>
<li><code>IsFullTransformationNearRing( </code><var>tfmnr</var><code> )</code>
<p>
The function <code>IsFullTransformationNearRing</code> returns <code>true</code> if the
transformation nearring <var>tfmnr</var> is the nearring of all mappings over
the group.
<p>
<pre>
    gap&gt; g := CyclicGroup ( 4 );
    &lt;pc group of size 4 with 2 generators&gt;
    gap&gt; m := MapNearRing ( g );
    TransformationNearRing(&lt;pc group of size 4 with 2 generators&gt;)
    gap&gt; gens := Filtered ( AsList ( m ), 
    &gt;       f -&gt; IsFullTransformationNearRing ( 
    &gt;               TransformationNearRingByGenerators ( g, [ f ] )));;
    gap&gt; Length(gens);
    12
</pre>
<p>
<a name = "SECT002"></a>
<li><code>PolynomialNearRing( </code><var>G</var><code> )</code>
<p>
<code>PolynomialNearRing</code> returns the nearring of all polynomial functions on <var>G</var>.
<p>
<pre>
    gap&gt; P := PolynomialNearRing ( GTW16_6 );
    PolynomialNearRing( 16/6 )
    gap&gt; Size ( P );
    256
</pre>
<p>
<a name = "SECT002"></a>
<li><code>EndomorphismNearRing( </code><var>G</var><code> )</code>
<p>
<code>EndomorphismNearRing</code> returns the nearring generated by all endomorphisms
on <var>G</var>.
<p>
<pre>
    gap&gt; ES4 := EndomorphismNearRing ( SymmetricGroup ( 4 ) );
    EndomorphismNearRing( Sym( [ 1 .. 4 ] ) )
    gap&gt; Size ( ES4 );
    927712935936
</pre>
<p>
<a name = "SECT002"></a>
<li><code>AutomorphismNearRing( </code><var>G</var><code> )</code>
<p>
<code>AutomorphismNearRing</code> returns the nearring generated by all automorphisms
on <var>G</var>.
<p>
<pre>
    gap&gt; A := AutomorphismNearRing ( DihedralGroup ( 8 ) );
    AutomorphismNearRing( &lt;pc group of size 8 with 3 generators&gt; )
    gap&gt; Length(NearRingRightIdeals ( A ));
    28
    gap&gt; Size (A);
    32
</pre>
<p>
<a name = "SECT002"></a>
<li><code>InnerAutomorphismNearRing( </code><var>G</var><code> )</code>
<p>
<code>InnerAutomorphismNearRing</code> returns the nearring generated by all inner
automorphisms on <var>G</var>.
<p>
<pre>
    gap&gt; I := InnerAutomorphismNearRing ( AlternatingGroup ( 4 ) );
    InnerAutomorphismNearRing( Alt( [ 1 .. 4 ] ) )
    gap&gt; Size ( I );
    3072
    gap&gt; m := Enumerator( I )[1000];
    &lt;mapping: AlternatingGroup( [ 1 .. 4 ] ) -&gt; AlternatingGroup( [ 1 .. 4 ] ) &gt;
    gap&gt; graph := List ( AsList ( AlternatingGroup ( 4 ) ),
    &gt; x -&gt; [x, Image (m, x)] );
    [ [ (), () ], [ (2,3,4), (1,4)(2,3) ], [ (2,4,3), (1,4)(2,3) ],
      [ (1,2)(3,4), (1,2)(3,4) ], [ (1,2,3), (1,3)(2,4) ],
      [ (1,2,4), (1,4)(2,3) ], [ (1,3,2), (1,4)(2,3) ], [ (1,3,4), (1,2)(3,4) ],
      [ (1,3)(2,4), (1,3)(2,4) ], [ (1,4,2), () ], [ (1,4,3), (1,4)(2,3) ],
      [ (1,4)(2,3), (1,4)(2,3) ] ]
</pre>
<p>
<a name = "SECT002"></a>
<li><code>CompatibleFunctionNearRing( </code><var>G</var><code> )</code>
<p>
<code>CompatibleFunctionNearRing</code> returns the nearring of all compatible functions
on the group <var>G</var>. A function <var>m:G rightarrowG</var> is compatible iff for every normal
subgroup <var>N</var> of <var>G</var> and all <var>g,h inG</var> if <var>g</var> and <var>h</var> are in the same coset of <var>N</var>
then their images under <var>m</var> are in the same coset of <var>G</var>.
<p>
<a name = "SECT002"></a>
<li><code>ZeroSymmetricCompatibleFunctionNearRing( </code><var>G</var><code> )</code>
<p>
<code>ZeroSymmetricCompatibleFunctionNearRing</code> returns the nearring of all zerosymmetric
compatible functions on the group <var>G</var>. This function is also called by 
<code>CompatibleFunctionNearRing</code>.
<p>
<a name = "SECT002"></a>
<li><code>IsCompatibleEndoMapping( </code><var>m</var><code> )</code>
<p>
<code>IsCompatibleEndoMapping</code> returns <code>true</code> iff <var>m</var> is a compatible function on its 
source.
<p>
<a name = "SECT002"></a>
<li><code>Is1AffineComplete( </code><var>G</var><code> )</code>
<p>
A group <var>G</var> is called 1-affine complete, iff every compatible function on <var>G</var> is
polynomial. <code>Is1AffineComplete</code> returns <code>true</code> iff <var>G</var> is 1-affine complete.
<p>
<a name = "SECT002"></a>
<li><code>CentralizerNearRing( </code><var>G</var><code>, </code><var>endos</var><code> )</code>
<p>
<code>CentralizerNearRing</code> returns the nearring of all functions
<var>m:G rightarrowG</var> such that for all endomorphisms <var>e</var> in <var>endos</var> the
equality <var>m circe = e circm</var> holds.
<p>
<pre>
    gap&gt; autos := Automorphisms ( GTW8_4 );
    [ IdentityMapping( 8/4 ), ^(2,4),
      [ (1,2,3,4), (2,4) ] -&gt; [ (1,4,3,2), (1,2)(3,4) ],
      [ (1,2,3,4), (2,4) ] -&gt; [ (1,2,3,4), (1,2)(3,4) ], ^(1,4)(2,3),
      ^(1,2,3,4), [ (1,2,3,4), (2,4) ] -&gt; [ (1,2,3,4), (1,4)(2,3) ],
      [ (1,4)(2,3), (1,4,3,2) ] -&gt; [ (2,4), (1,2,3,4) ] ]
    gap&gt; C := CentralizerNearRing ( GTW8_4, autos );
    CentralizerNearRing( 8/4, ... )
    gap&gt; C0 := ZeroSymmetricPart ( C );
    &lt; transformation nearring with 4 generators &gt;
    gap&gt; Size ( C0 );
    32
    gap&gt; Is := NearRingIdeals ( C0 );
    [ &lt; nearring ideal &gt;, &lt; nearring ideal &gt;, &lt; nearring ideal &gt;,
      &lt; nearring ideal &gt;, &lt; nearring ideal &gt;, &lt; nearring ideal &gt;,
      &lt; nearring ideal &gt;, &lt; nearring ideal &gt;, &lt; nearring ideal &gt;,
      &lt; nearring ideal &gt;, &lt; nearring ideal &gt;, &lt; nearring ideal &gt;,
      &lt; nearring ideal &gt; ]
    gap&gt; List (Is, Size);
    [ 1, 2, 4, 2, 4, 8, 8, 16, 4, 8, 16, 16, 32 ]
</pre>
<p>
<a name = "SECT002"></a>
<li><code>RestrictedEndomorphismNearRing( </code><var>G</var><code>, </code><var>U</var><code> )</code>
<p>
<code>RestrictedEndomorphismNearRing</code> returns the nearring generated by all
endomorphisms <var>e</var> on <var>G</var> with <var>e(G) subseteqU</var>.
<p>
<pre>
    gap&gt; G := GTW16_8;
    16/8
    gap&gt; U := First ( NormalSubgroups ( G ),
    &gt;              x -&gt; Size (x) = 2 );
    Group([ ( 1, 5)( 2,10)( 3,11)( 4,12)( 6,15)( 7,16)( 8, 9)(13,14) ])
    gap&gt; HGU := RestrictedEndomorphismNearRing (G, U);
    RestrictedEndomorphismNearRing( 16/8, Group(
    [ ( 1, 5)( 2,10)( 3,11)( 4,12)( 6,15)( 7,16)( 8, 9)(13,14) ]) )
    gap&gt; Size (HGU);
    8
    gap&gt; IsDistributiveNearRing ( HGU );
    true
    gap&gt; Filtered ( AsList ( HGU),
    &gt;       x -&gt; x = x * x );
    [ &lt;mapping: 16/8 -&gt; 16/8 &gt; ]
</pre>
<p>
<a name = "SECT002"></a>
<li><code>LocalInterpolationNearRing( </code><var>tfmnr</var><code>, </code><var>m</var><code> )</code>
<p>
<code>LocalInterpolationNearRing</code> returns the nearring of all mappings on
<var>G</var> that can be interpolated at any set of <var>m</var> places by a mapping in
<var>tfmnr</var>, where <var>G</var> is the domain and codomain of the elements in
<var>tfmnr</var>.
<p>
<pre>
    gap&gt; P := PolynomialNearRing ( GTW8_5 );
    PolynomialNearRing( 8/5 )
    gap&gt; L := LocalInterpolationNearRing ( P, 2 );
    LocalInterpolationNearRing( PolynomialNearRing( 8/5 ), 2 )
    gap&gt; Size ( L ) / Size ( P );
    16
</pre>
<p>
<p>
<h2><a name="SECT003">5.3 The group a transformation nearring acts on</a></h2>
<p><p>
<a name = "SECT003"></a>
<li><code>Gamma( </code><var>tfmnr</var><code> )</code>
<p>
The function <code>Gamma</code> returns the group on which the mappings of the
nearring <var>tfmnr</var> act.
<p>
<pre>
    gap&gt; Gamma ( PolynomialNearRing ( CyclicGroup ( 25 ) ) );
    &lt;pc group of size 25 with 2 generators&gt;
    gap&gt; IsCyclic (last);
    true
</pre>
<p>
<p>
<h2><a name="SECT004">5.4 Transformation nearrings and other nearrings</a></h2>
<p><p>
<a name = "SECT004"></a>
<li><code>AsTransformationNearRing( </code><var>nr</var><code> )</code>
<p>
Provided that <var>nr</var> is not already a transformation nearring,
<code>AsTransformationNearRing</code> returns a transformation nearring that is isomorphic
to the nearring <var>nr</var>.
<p>
<pre>
    gap&gt; L := LibraryNearRing (GTW8_3, 12);
    LibraryNearRing(8/3, 12)
    gap&gt; Lt := AsTransformationNearRing ( L );
    &lt; transformation nearring with 3 generators &gt;
    gap&gt; Gamma ( Lt );
    8/3 x C_2
</pre>
<p>
<a name = "SECT004"></a>
<li><code>AsExplicitMultiplicationNearRing( </code><var>nr</var><code> )</code>
<p>
Provided that <var>nr</var> is not already an explicit multiplication nearring
(i. e. a transformation nearring), <code>AsExplicitMultiplicationNearRing</code> returns
an explicit multiplication nearring that is isomorphic to the nearring <var>nr</var>.
<p>
<pre>
    gap&gt; P := PolynomialNearRing ( GTW4_2 );
    PolynomialNearRing( 4/2 )
    gap&gt; n := AsExplicitMultiplicationNearRing ( P );
    ExplicitMultiplicationNearRing ( Group(
    [ ( 1, 2)( 5, 6)( 9,10)(13,14), ( 3, 4)( 7, 8)(11,12)(15,16), 
      ( 7, 8)( 9,10)(13,14)(15,16) ]) , multiplication )
</pre>
<p>
<p>
<h2><a name="SECT005">5.5 Noetherian quotients for transformation nearrings</a></h2>
<p><p>
<a name = "SECT005"></a>
<li><code>NoetherianQuotient( </code><var>tfmnr</var><code>, </code><var>target</var><code>, </code><var>source</var><code> )</code>
<p>
<code>NoetherianQuotient</code> returns the set of all mappings <var>t</var> in <var>tfmnr</var>
with <var>t(<code>source</code>) subseteq<code>target</code></var>.
<p>
<pre>
    gap&gt; G := SymmetricGroup ( 4 );
    Sym( [ 1 .. 4 ] )
    gap&gt; V := First ( NormalSubgroups ( G ), x -&gt; Size ( x ) = 4 );
    Group([ (1,4)(2,3), (1,3)(2,4) ])
    gap&gt; P := InnerAutomorphismNearRing ( G );
    InnerAutomorphismNearRing( Sym( [ 1 .. 4 ] ) )
    gap&gt; N := NoetherianQuotient ( P, V, G );
    NoetherianQuotient( Group([ (1,4)(2,3), (1,3)(2,4) ]) ,Sym(
    [ 1 .. 4 ] ) )
    gap&gt; Size ( P ) / Size ( N );
    54
</pre>
<p>
<a name = "SECT005"></a>
<li><code>CongruenceNoetherianQuotient( </code><var>P</var><code>, </code><var>A</var><code>, </code><var>B</var><code>, </code><var>C</var><code> )</code>
<p>
<code>CongruenceNoetherianQuotient</code> returns the ideal of all those  mappings in <var>P</var> that
map every element of the group Gamma(P) into <var>C</var>, and maps two elements that
are congruent modulo <var>B</var> into elements that are congruent modulo <var>A</var>.
Input conditions: (1) <var>P</var> is the nearring of polynomial functions on a group G,
                  (2) <var>A</var> is a normal subgroup of G,
                  (3) <var>B</var> is a normal subgroup of G,
                  (4) <var>C</var> is a normal subgroup of G,
                  (5) [C,B] is less or equal to A.
<pre>
    gap&gt; G := GTW8_4;
    8/4
    gap&gt; P := PolynomialNearRing (G);
    PolynomialNearRing( 8/4 )
    gap&gt; A := TrivialSubgroup (G);
    Group(())
    gap&gt; B := DerivedSubgroup (G);
    Group([ (1,3)(2,4) ])
    gap&gt; C := G;
    8/4
    gap&gt; I := CongruenceNoetherianQuotient (P, A, B, C);
    &lt; nearring ideal &gt;
    gap&gt; Size (P/I);
    2
</pre>
<p>
<a name = "SECT005"></a>
<li><code>CongruenceNoetherianQuotientForInnerAutomorphismNearRings (</code><var>I</var><code>, </code><var>A</var><code>, </code><var>B</var><code>, </code><var>C</var><code> )</code>
<p>
<code>CongruenceNoetherianQuotientForInnerAutomorphismNearRings</code> returns the ideal of all those  mappings in <var>I</var> that
map every element of the group Gamma(I) into <var>C</var>, and maps two elements that
are congruent modulo <var>B</var> into elements that are congruent modulo <var>A</var>.
Input conditions: (1) <var>P</var> is the nearring of polynomial functions on a group G,
                  (2) <var>A</var> is a normal subgroup of G,
                  (3) <var>B</var> is a normal subgroup of G,
                  (4) <var>C</var> is a normal subgroup of G,
                  (5) [C,B] is less or equal to A.
<pre>
    gap&gt; G := GTW8_4;
    8/4
    gap&gt; I := InnerAutomorphismNearRing (G);
    InnerAutomorphismNearRing( 8/4 )
    gap&gt; A := TrivialSubgroup (G);
    Group(())
    gap&gt; B := DerivedSubgroup (G);
    Group([ (1,3)(2,4) ])
    gap&gt; C := G;
    8/4
    gap&gt; j := CongruenceNoetherianQuotientForInnerAutomorphismNearRings (I,A,B,C);
    &lt; nearring ideal &gt;
    gap&gt; Size (I/j);
    2
</pre>
<p>
<p>
<h2><a name="SECT006">5.6 Zerosymmetric mappings</a></h2>
<p><p>
<a name = "SECT006"></a>
<li><code>ZeroSymmetricPart( </code><var>tfmnr</var><code> )</code>
<p>
<code>ZeroSymmetricPart</code> returns the nearring of all mappings <var>t</var> in
        <var>tfmnr</var> with <var>t(0) = 0</var>.
<p>
<pre>
    gap&gt; g := GTW8_4;
    8/4
    gap&gt; P := PolynomialNearRing ( g );
    PolynomialNearRing( 8/4 )
    gap&gt; Zp := ZeroSymmetricPart ( P );
    &lt; transformation nearring with 4 generators &gt;
    gap&gt; InnerAutomorphismNearRing ( g ) = Zp;
    true
</pre>
<p>
<p>
[<a href = "chapters.htm">Up</a>] [<a href ="CHAP004.htm">Previous</a>] [<a href ="CHAP006.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
<P>
<address>SONATA manual<br>November 2008
</address></body></html>