%
\Chapter{Nearrings}
%
A *(left) nearring* is an algebra $(N,+,*)$, where
$(N,+)$ is a (not necessarily abelian) group,
$(N,*)$ is a semigroup, and
the distributive law $x*(y+z) = x*y+x*z$
holds.
Such nearrings are called *left nearrings*.
A typical example is constructed as follows:
take a group $(G,+)$ (not necessarily abelian), and
take the set $M(G)$ of all mappings from $G$ to $G$.
Then we define $+$ on $M(G)$ as pointwise addition of
mappings, and $*$ by $m * n (\gamma) := n (m (\gamma))$.
The multiplication looks more natural if we write
functions right of their arguments. Then the definition
reads $(\gamma) m * n = ((\gamma)m)n$.
Textbooks on nearrings are \cite{meldrum85:NATLWG}, \cite{Clay:Nearrings},
\cite{Ferrero:Nearrings}. They all use *left nearrings*.
The book \cite{Pilz:Nearrings} uses *right nearrings*; these are
the algebras that arise if we claim the right distributive law
$(x + y) * z = x*z + y*z$ instead of the left distributive law
given above.
SONATA uses *left* nearrings throughout.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Entering nearrings into the system}
*The problem:* Input the nearring given in the example
of page 406 of \cite{Pilz:Nearrings}
into SONATA.
This nearring is given by an explicit multiplication table.
The function `ExplicitMultiplicationNearRing' can be
used to do the job.
But first, let's get the additive group, which is
Klein's four group:
\beginexample
gap> G := GTW4_2;
4/2
\endexample
Now we have to establish a correspondence between
the elements `0', `a', `b', `c' of the group in the example
and GAP's representation of the group elements.
\beginexample
gap> AsSortedList( G );
[ (), (3,4), (1,2), (1,2)(3,4) ]
\endexample
Ok, let's map `0' to `()', `a' to `(3,4)', `b' to `(1,2)'
and `c' to `(1,2)(3,4)'
\beginexample
gap> SetSymbols( G, [ "0", "a", "b", "c" ] );
gap> PrintTable( G );
Let:
0 := ()
a := (3,4)
b := (1,2)
c := (1,2)(3,4)
+ | 0 a b c
------------
0 | 0 a b c
a | a 0 c b
b | b c 0 a
c | c b a 0
\endexample
Now for entering the nearring multiplication:
We will use the function `NrMultiplicationByOperationTable'.
This function requires as one of its arguments a matrix
of integers representing the operation table:
We choose the entries of `table' according to the
positions of the elements of `G' in
`AsSortedList( G )':
\beginexample
gap> table := [ [ 1, 1, 1, 1 ],
> [ 1, 1, 2, 2 ],
> [ 1, 2, 4, 3 ],
> [ 1, 2, 3, 4 ] ];
[ [ 1, 1, 1, 1 ], [ 1, 1, 2, 2 ], [ 1, 2, 4, 3 ], [ 1, 2, 3, 4 ] ]
\endexample
Now we are in position to define a nearring multiplication:
\beginexample
gap> mul:=NearRingMultiplicationByOperationTable(
> G, table, AsSortedList(G) );
function( x, y ) ... end
\endexample
And finally, we can define the nearring:
\beginexample
gap> N := ExplicitMultiplicationNearRing( G, mul );
ExplicitMultiplicationNearRing ( 4/2 , multiplication )
\endexample
We get no error message, which means that we have
indeed defined a nearring multiplication on `G'.
Now let's take a look at it:
\beginexample
gap> PrintTable( N );
Let:
0 := (())
a := ((3,4))
b := ((1,2))
c := ((1,2)(3,4))
+ | 0 a b c
---------------
0 | 0 a b c
a | a 0 c b
b | b c 0 a
c | c b a 0
* | 0 a b c
---------------
0 | 0 0 0 0
a | 0 0 a a
b | 0 a c b
c | 0 a b c
\endexample
The symbols used for the elements of the group are also used for the
elements of the nearring. Of course, it is still possible to redefine the
symbols.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Some simple questions about the nearring}
Now, that the nearring is in the system, let's ask
some questions about it. A nearring is a nearfield if
it has more than one element and its nonzero elements are
a group with respect to multiplication. A textbook
on nearfields is \cite{Waehling:Fastkoerper}. They are interesting
structures, closely connected to sharply $2$-transitive permutation
groups and fixedpointfree automorphism groups of groups.
\beginexample
gap> IsNearField( N );
false
gap> IsIntegralNearRing( N );
false
gap> IsNilpotentNearRing( N );
false
\endexample
\cite{Pilz:Nearrings} is correct ... Well at least in this case.`;-))'
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Entering the nearring with less typing}
Certainly, everybody has immediately seen, that this
nearring is a transformation nearring on `GTW4_2'
which is generated by the transformations
`0' to `0', `a' to `a', `b' to `c', `c' to `b', and
the identity transformation, so
\beginexample
gap> t := GroupGeneralMappingByImages(
> G, G, AsSortedList(G), AsSortedList(G){[1,2,4,3]} );
[ (), (3,4), (1,2), (1,2)(3,4) ] -> [ (), (3,4), (1,2)(3,4), (1,2) ]
gap> id := IdentityMapping( G );
IdentityMapping( 4/2 )
gap> T := TransformationNearRingByGenerators( G, [t,id] );
TransformationNearRingByGenerators(
[ [ (), (3,4), (1,2), (1,2)(3,4) ] -> [ (), (3,4), (1,2)(3,4), (1,2) ],
IdentityMapping( 4/2 ) ])
\endexample
Let's see what we've got:
\beginexample
gap> PrintTable(T);
Let:
n0 := <mapping: 4/2 -> 4/2 >
n1 := <mapping: 4/2 -> 4/2 >
n2 := <mapping: 4/2 -> 4/2 >
n3 := <mapping: 4/2 -> 4/2 >
+ | 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 n1 n2 n3
n3 | n0 n1 n3 n2
\endexample
Obviously, we've got the correct nearring.
Let's make for sure:
\beginexample
gap> IsIsomorphicNearRing( N, T );
true
\endexample
However, `N' and `T' are certaily not equal:
\beginexample
gap> N = T;
false
\endexample
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "manual"
%%% End:
¤ Dauer der Verarbeitung: 0.3 Sekunden
¤
*© Formatika GbR, Deutschland
|
|