Sophie

Sophie

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

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

<html><head><title>[SONATA-tutorial] 3 The nearring library</title></head>
<body text="#000000" bgcolor="#ffffff">
[<a href = "chapters.htm">Up</a>] [<a href ="CHAP002.htm">Previous</a>] [<a href ="CHAP004.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
<h1>3 The nearring library</h1><p>
<P>
<H3>Sections</H3>
<oL>
<li> <A HREF="CHAP003.htm#SECT001">An application of the nearring library</a>
<li> <A HREF="CHAP003.htm#SECT002">Appendix K revisited</a>
</ol><p>
<p>
There are many non-isomorphic nearrings, even of small order.
All non-isomorphic nearrings of orders <var>2</var> to <var>15</var> and
all non-isomorphic nearrings with identity up
to order <var>31</var> with exception of those on
the elementary abelian groups of orders
<var>16</var> and <var>27</var> are collected in the SONATA
nearring library.
<p>
<p>
<h2><a name="SECT001">3.1 An application of the nearring library</a></h2>
<p><p>
The number of nearrings in the library is big.
For example, try
<p>
<pre>
    gap&gt; NumberLibraryNearRings( GTW12_3 );
    48137
</pre>
<p>
Try your favorite small groups with this
function to get an impression of these
numbers.
<p>
Of course, no one can know all these nearrings
personally. Therefore, the main purpose
of the nearring library is to filter out the
nearrings of interest.
<p>
Consider for example the following
<p>
<strong>Problem:</strong> How many non-rings with identity of order <var>4</var> are
there  and what do they look like? If you cannot answer this
question adhoc, stay tuned. 
<p>
Let's start with the groups of order <var>4</var>. Of course you know,
there are <var>2</var> groups of order <var>4</var>: <code>GTW4_1</code>, the cyclic group
and <code>GTW4_2</code>, Klein's four group.
<p>
Let's go for <code>GTW4_1</code> first:
<p>
<pre>
    gap&gt; NumberLibraryNearRingsWithOne( GTW4_1 );
    1
    gap&gt; Filtered( AllLibraryNearRingsWithOne( GTW4_1 ),     
    &gt;              n -&gt; not IsDistributiveNearRing( n ) );
    [  ]
</pre>
<p>
So, the only nearring with identity there is
on <code>GTW4_1</code> is the ring. Well... you knew that before,
didn't you?
<p>
Now for <code>GTW4_2</code>:
<p>
<pre>
    gap&gt; NumberLibraryNearRingsWithOne( GTW4_2 );
    5
    gap&gt; Filtered( AllLibraryNearRingsWithOne( GTW4_2 ),
    &gt;              n -&gt; not IsDistributiveNearRing( n ) );
    [ LibraryNearRing(4/2, 12), LibraryNearRing(4/2, 22) ]
</pre>
<p>
Here we go:
<p>
<pre>
    gap&gt; PrintTable( LibraryNearRing( GTW4_2, 12 ) );
    Let:
    n0 := (())
    n1 := ((3,4))
    n2 := ((1,2))
    n3 := ((1,2)(3,4))

       +  | n0  n1  n2  n3  
      --------------------
      n0  | n0  n1  n2  n3  
      n1  | n1  n0  n3  n2  
      n2  | n2  n3  n0  n1  
      n3  | n3  n2  n1  n0  

       *  | n0  n1  n2  n3  
      --------------------
      n0  | n0  n0  n0  n0  
      n1  | n0  n0  n1  n1  
      n2  | n0  n0  n2  n2  
      n3  | n0  n1  n2  n3  
    gap&gt; PrintTable( LibraryNearRing( GTW4_2, 22 ) );
    Let:
    n0 := (())
    n1 := ((3,4))
    n2 := ((1,2))
    n3 := ((1,2)(3,4))

       +  | n0  n1  n2  n3  
      --------------------
      n0  | n0  n1  n2  n3  
      n1  | n1  n0  n3  n2  
      n2  | n2  n3  n0  n1  
      n3  | n3  n2  n1  n0  

       *  | n0  n1  n2  n3  
      --------------------
      n0  | n0  n0  n2  n2  
      n1  | n0  n1  n2  n3  
      n2  | n0  n2  n2  n0  
      n3  | n0  n3  n2  n1  
</pre>
<p>
<p>
<h2><a name="SECT002">3.2 Appendix K revisited</a></h2>
<p><p>
An alternative to filtering the nearring library is to
use a <code>for ... do ... od</code> construction.
<p>
We shall demonstrate this by recomputing the list
of nearrings given in appendix K of citePilz:Nearrings,
i.e. a list of all nearrings on the dihedral group of order <var>8</var>
(<code>GTW8_4</code>) which have an identity, are non-zerosymmetric or
are integral.
<p>
First, we initialize the variable <code>nr_list</code> 
as the empty list:
<p>
<pre>
    gap&gt; nr_list := [ ];
    [ ]
</pre>
<p>
Now, we write ourselves a <code>for</code> loop and add those nearrings
we want:
<p>
<pre>
    gap&gt; for i in [1..NumberLibraryNearRings( GTW8_4 )] do  
    &gt;       n := LibraryNearRing( GTW8_4, i );
    &gt;       if ( not IsZeroSymmetricNearRing( n ) or     
    &gt;            IsIntegralNearRing( n ) or          
    &gt;            Identity( n ) &lt;&gt; fail    
    &gt;          ) then              
    &gt;         Add( nr_list, n );    
    &gt;       fi;
    &gt;    od;      
    gap&gt; Length( nr_list );                                          
    141
</pre>
<p>
How many boolean nearrings are amongst these? We call a nearring
<strong>boolean</strong> if <var>x*x=x</var> for all <var>x inN</var>.
<p>
<pre>
    gap&gt; Filtered( nr_list, IsBooleanNearRing );
    [ LibraryNearRing(8/4, 1314), LibraryNearRing(8/4, 1380), 
      LibraryNearRing(8/4, 1446), LibraryNearRing(8/4, 1447) ]
</pre>
<p>
Which correspond to the numbers
<var>140</var>, <var>86</var>, <var>99</var>, and <var>141</var> in
citePilz:Nearrings, appendix K, accordingly.
<p>
For those who got interested in boolean nearrings:
many results about them have been collected in
citePilz:Nearrings, 9.31.
<p>
<p>
[<a href = "chapters.htm">Up</a>] [<a href ="CHAP002.htm">Previous</a>] [<a href ="CHAP004.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
<P>
<address>SONATA-tutorial manual<br>November 2008
</address></body></html>