There are many non-isomorphic nearrings, even of small order. All non-isomorphic nearrings of orders 2 to 15 and all non-isomorphic nearrings with identity up to order 31 with exception of those on the elementary abelian groups of orders 16 and 27 are collected in the SONATA nearring library.
The number of nearrings in the library is big. For example, try
gap> NumberLibraryNearRings( GTW12_3 ); 48137
Try your favorite small groups with this function to get an impression of these numbers.
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.
Consider for example the following
Problem: How many non-rings with identity of order 4 are there and what do they look like? If you cannot answer this question adhoc, stay tuned.
Let's start with the groups of order 4. Of course you know,
there are 2 groups of order 4:
GTW4_1, the cyclic group
GTW4_2, Klein's four group.
Let's go for
gap> NumberLibraryNearRingsWithOne( GTW4_1 ); 1 gap> Filtered( AllLibraryNearRingsWithOne( GTW4_1 ), > n -> not IsDistributiveNearRing( n ) ); [ ]
So, the only nearring with identity there is
GTW4_1 is the ring. Well... you knew that before,
gap> NumberLibraryNearRingsWithOne( GTW4_2 ); 5 gap> Filtered( AllLibraryNearRingsWithOne( GTW4_2 ), > n -> not IsDistributiveNearRing( n ) ); [ LibraryNearRing(4/2, 12), LibraryNearRing(4/2, 22) ]
Here we go:
gap> 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> 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
An alternative to filtering the nearring library is to
for ... do ... od construction.
We shall demonstrate this by recomputing the list
of nearrings given in appendix K of Pilz:Nearrings,
i.e. a list of all nearrings on the dihedral group of order 8
GTW8_4) which have an identity, are non-zerosymmetric or
First, we initialize the variable
as the empty list:
gap> nr_list := [ ]; [ ]
Now, we write ourselves a
for loop and add those nearrings
gap> for i in [1..NumberLibraryNearRings( GTW8_4 )] do > n := LibraryNearRing( GTW8_4, i ); > if ( not IsZeroSymmetricNearRing( n ) or > IsIntegralNearRing( n ) or > Identity( n ) <> fail > ) then > Add( nr_list, n ); > fi; > od; gap> Length( nr_list ); 141
How many boolean nearrings are amongst these? We call a nearring boolean if x*x=x for all x ∈ N.
gap> Filtered( nr_list, IsBooleanNearRing ); [ LibraryNearRing(8/4, 1314), LibraryNearRing(8/4, 1380), LibraryNearRing(8/4, 1446), LibraryNearRing(8/4, 1447) ]
Which correspond to the numbers 140, 86, 99, and 141 in Pilz:Nearrings, appendix K, accordingly.
For those who got interested in boolean nearrings: many results about them have been collected in Pilz:Nearrings, 9.31.
[Up] [Previous] [Next] [Index]