<html><head><title>[SONATA] 8 N-groups</title></head>
<body text="#000000" bgcolor="#ffffff">
[<a href = "chapters.htm">Up</a>] [<a href ="CHAP007.htm">Previous</a>] [<a href ="CHAP009.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
<h1>8 N-groups</h1><p>
<P>
<H3>Sections</H3>
<oL>
<li> <A HREF="CHAP008.htm#SECT001">Construction of N-groups</a>
<li> <A HREF="CHAP008.htm#SECT002">Operation tables of N-groups</a>
<li> <A HREF="CHAP008.htm#SECT003">Functions for N-groups</a>
<li> <A HREF="CHAP008.htm#SECT004">N-subgroups</a>
<li> <A HREF="CHAP008.htm#SECT005">N0-subgroups</a>
<li> <A HREF="CHAP008.htm#SECT006">Ideals of N-groups</a>
<li> <A HREF="CHAP008.htm#SECT007">Special properties of N-groups</a>
<li> <A HREF="CHAP008.htm#SECT008">Noetherian quotients</a>
<li> <A HREF="CHAP008.htm#SECT009">Nearring radicals</a>
</ol><p>
<p>
In SONATA every N-group is a group, the only difference is, that there
is a nearring that acts on the group. And since in SONATA all
nearrings are left distributive, they act on the elements of an
N-group from the right. <strong>Note</strong>, that the elements of an N-group are
added via <code>*</code>, not <code>+</code>.
<p>
The functions described in this section can be found in the source files
<code>ngroups.g?</code>.
<p>
<p>
<h2><a name="SECT001">8.1 Construction of N-groups</a></h2>
<p><p>
There is a natural way to construct an N-group. It is to take a group,
a nearring and define an action of the nearring on the group. The
function <code>NGroup</code> allows one to do this. The special case, where
(the group reduct of) a nearring is viewed as an N-group over the
nearring itself, can be constructed easily via
<code>NGroupByNearRingMultiplication</code>.
<p>
<a name = "SSEC001.1"></a>
<li><code>NGroup( </code><var>G</var><code>, </code><var>nr</var><code>, </code><var>action</var><code> )</code>
<p>
The function <code>NGroup</code> has three arguments. <var>G</var> must be a group, <var>nr</var> the
nearring that acts on the group and <var>action</var> a binary operation from the
direct product of <var>G</var> and <var>nr</var> into <var>G</var>. It returns the N-group.
<p>
<pre>
gap> G := GTW4_2;
4/2
gap> n := MapNearRing( G );
TransformationNearRing(4/2)
gap> action := function ( g, f )
> return Image( f, g );
> end;
function ( g, f ) ... end
gap> gamma := NGroup( G, n, action );
< N-group of TransformationNearRing(4/2) >
gap> IsNGroup( gamma );
true
gap> NearRingActingOnNGroup( gamma );
TransformationNearRing(4/2)
gap> ActionOfNearRingOnNGroup( gamma );
function ( g, f ) ... end
gap> Print( ActionOfNearRingOnNGroup( gamma ) );
function ( g, f )
return Image( f, g );
</pre>
<p>
<a name = "SSEC001.2"></a>
<li><code>NGroupByNearRingMultiplication( </code><var>nr</var><code> )</code>
<p>
For every (left) nearring (<i>N</i>,+,·) the group (<i>N</i>,+) is an N-group
over <i>N</i> with respect to nearring multiplication from the right as the
action. The function <code>NGroupByNearRingMultiplication</code> returns this
N-group of the nearring <var>nr</var>.
<p>
<pre>
gap> n := LibraryNearRing( GTW8_2, 3 );
LibraryNearRing(8/2, 3)
gap> NGroupByNearRingMultiplication( n ) = GTW8_2;
true
</pre>
<p>
<a name = "SSEC001.3"></a>
<li><code>NGroupByApplication( </code><var>tfmnr</var><code> )</code>
<p>
For a nearring <i>T</i> of transformations on a group <i>G</i>, <i>G</i> is an
N-group of <i>T</i> with the application of functions as the action. The
function <code>NGroupByApplication</code> returns this <code>N-group</code> of the nearring
<var>tfmnr</var>.
<p>
Another way to construct an N-Group is to take a nearring <i>N</i>, a right
ideal <i>R</i> and let <i>N</i> act on the factor <i>N</i>/<i>R</i> in the canonical way.
This is accomplished by
<p>
<a name = "SSEC001.4"></a>
<li><code>NGroupByRightIdealFactor( </code><var>nr</var><code>, </code><var>R</var><code> )</code>
<p>
The function <code>NGroupByRightIdealFactor</code> has two arguments, a nearring
<var>nr</var> and a right ideal <var>R</var>. It returns the N-group <var>nr</var>/<var>R</var>.
<p>
<pre>
gap> N := LibraryNearRing( GTW4_2, 11 );
LibraryNearRing(4/2, 11)
gap> R := NearRingRightIdeals( N )[ 3 ];
< nearring right ideal >
gap> ng := NGroupByRightIdealFactor( N, R );
< N-group of LibraryNearRing(4/2, 11) >
gap> PrintTable( ng );
Let:
(0,0) := (())
(1,0) := ((3,4))
(0,1) := ((1,2))
(1,1) := ((1,2)(3,4))
--------------------------------------------------------------------
g0 := <identity> of ...
g1 := f1
N = LibraryNearRing(4/2, 11) acts on
G = Group( [ f1 ] )
from the right by the following action:
</pre>
<p>
<p>
<h2><a name="SECT003">8.3 Functions for N-groups</a></h2>
<p><p>
<a name = "SSEC003.1"></a>
<li><code>IsNGroup( </code><var>G</var><code> )</code>
<p>
For any group <var>G</var> the function <code>IsNGroup</code> tests whether there is a nearring
defined that acts on <var>G</var>.
<p>
<a name = "SSEC003.2"></a>
<li><code>NearRingActingOnNGroup( </code><var>G</var><code> )</code>
<p>
The function <code>NearRingActingOnNGroup</code> returns the nearring that acts on the
N-group <var>G</var>.
<p>
<pre>
gap> n := LibraryNearRing( TWGroup( 8, 2 ), 3 );
LibraryNearRing(8/2, 3)
gap> gamma := NGroupByNearRingMultiplication( n );
< N-group of LibraryNearRing(8/2, 3) >
gap> NearRingActingOnNGroup( gamma );
LibraryNearRing(8/2, 3)
</pre>
<p>
<a name = "SSEC003.3"></a>
<li><code>ActionOfNearRingOnNGroup( </code><var>G</var><code> )</code>
<p>
The function <code>ActionOfNearRingOnNGroup</code> returns the action of the nearring
that acts on the N-group <var>G</var> as a 2-ary <font face="Gill Sans,Helvetica,Arial">GAP</font>-function.
<p>
<pre>
gap> n := LibraryNearRing( TWGroup( 8, 2 ), 3 );
LibraryNearRing(8/2, 3)
gap> gamma := NGroupByNearRingMultiplication( n );
< N-group of LibraryNearRing(8/2, 3) >
gap> ActionOfNearRingOnNGroup( gamma );
function ( g, n ) ... end
</pre>
<p>
<p>
<h2><a name="SECT004">8.4 N-subgroups</a></h2>
<p><p>
<a name = "SSEC004.1"></a>
<li><code>NSubgroup( </code><var>G</var><code>, </code><var>gens</var><code> )</code>
<p>
The function <code>NSubgroup</code> returns the N-subgroup of the N-group <var>G</var>
generated by <var>gens</var>.
<p>
<a name = "SSEC004.2"></a>
<li><code>NSubgroups( </code><var>G</var><code> )</code>
<p>
The function <code>NSubgroups</code> returns a list of all N-subgroups of the
N-group <var>G</var>.
<p>
<a name = "SSEC004.3"></a>
<li><code>IsNSubgroup( </code><var>G</var><code>, </code><var>S</var><code> )</code>
<p>
The function <code>IsNSubgroup</code> returns <code>true</code> iff <var>S</var> is an N-subgroup of
<var>G</var>.
<p>
<p>
<h2><a name="SECT005">8.5 N0-subgroups</a></h2>
<p><p>
<a name = "SSEC005.1"></a>
<li><code>N0Subgroups( </code><var>G</var><code> )</code>
<p>
The function <code>N0Subgroups</code> returns a list of all <i>N</i><sub>0</sub>-subgroups
of the N-group <var>G</var>.
<p>
<pre>
gap> n := LibraryNearRing(GTW12_3,20465);
LibraryNearRing(12/3, 20465)
gap> ng := NGroupByNearRingMultiplication( n );
< N-group of LibraryNearRing(12/3, 20465) >
gap> Length( N0Subgroups( ng ) );
9
</pre>
<p>
<p>
<h2><a name="SECT006">8.6 Ideals of N-groups</a></h2>
<p><p>
<a name = "SSEC006.1"></a>
<li><code>NIdeal( </code><var>G</var><code>, </code><var>gens</var><code> )</code>
<p>
The function <code>NIdeal</code> returns the N-ideal of the N-group <var>G</var> generated
by <var>gens</var>.
<p>
<a name = "SSEC006.2"></a>
<li><code>NIdeals( </code><var>G</var><code> )</code>
<p>
The function <code>NGroupIdeals</code> returns a list of all ideals of the N-group <var>G</var>.
<p>
<pre>
gap> n:=LibraryNearRing(GTW12_3,20465);
LibraryNearRing(12/3, 20465)
gap> ng := NGroupByNearRingMultiplication( n );
< N-group of LibraryNearRing(12/3, 20465) >
gap> NIdeals( ng );
[ < N-group of LibraryNearRing(12/3, 20465) >,
< N-group of LibraryNearRing(12/3, 20465) >,
< N-group of LibraryNearRing(12/3, 20465) > ]
</pre>
<p>
<a name = "SSEC006.3"></a>
<li><code>IsNIdeal( </code><var>G</var><code>, </code><var>I</var><code> )</code>
<p>
The function <code>IsNIdeal</code> returns <code>true</code> iff <var>I</var> is an N-ideal of the
N-group <var>G</var>.
<p>
<a name = "SSEC006.4"></a>
<li><code>IsSimpleNGroup( </code><var>G</var><code> )</code>
<p>
The function <code>IsSimpleNGroup</code> returns <code>true</code> if <var>G</var> is a simple N-group
and <code>false</code> otherwise.
<p>
<a name = "SSEC006.5"></a>
<li><code>IsN0SimpleNGroup( </code><var>G</var><code> )</code>
<p>
The function <code>IsN0SimpleNGroup</code> returns <code>true</code> if the N-group <var>G</var> is
<i>N</i><sub>0</sub>-simple and <code>false</code> otherwise.
<p>
<p>
<h2><a name="SECT007">8.7 Special properties of N-groups</a></h2>
<p><p>
<a name = "SSEC007.1"></a>
<li><code>IsCompatible( </code><var>G</var><code> )</code>
<p>
The function <code>IsCompatible</code> returns <code>true</code> if the N-group <var>G</var> is compatible
and <code>false</code> otherwise.
<p>
<a name = "SSEC007.2"></a>
<li><code>IsTameNGroup( </code><var>G</var><code> )</code>
<p>
The function <code>IsTameNGroup</code> returns <code>true</code> if <var>G</var> is a tame N-group
and <code>false</code> otherwise.
<p>
<a name = "SSEC007.3"></a>
<li><code>Is2TameNGroup( </code><var>G</var><code> )</code>
<p>
The function <code>Is2TameNGroup</code> returns <code>true</code> if the N-group <var>G</var> is 2-tame
and <code>false</code> otherwise.
<p>
<a name = "SSEC007.4"></a>
<li><code>Is3TameNGroup( </code><var>G</var><code> )</code>
<p>
The function <code>Is3TameNGroup</code> returns <code>true</code> if the N-group <var>G</var> is 3-tame
and <code>false</code> otherwise.
<p>
<a name = "SSEC007.5"></a>
<li><code>IsMonogenic( </code><var>G</var><code> )</code>
<p>
The function <code>IsMonogenic</code> returns <code>true</code> if the N-group <var>G</var> is monogenic
and <code>false</code> otherwise.
<p>
<a name = "SSEC007.6"></a>
<li><code>IsStronglyMonogenic( </code><var>G</var><code> )</code>
<p>
The function <code>IsStronglyMonogenic</code> returns <code>true</code> if the N-group <var>G</var> is
strongly monogenic and <code>false</code> otherwise.
<p>
<a name = "SSEC007.7"></a>
<li><code>TypeOfNGroup( </code><var>G</var><code> )</code>
<p>
The function <code>TypeOfNGroup</code> returns the type of a monogenic N-group <var>G</var>. If
<var>N</var> is not monogenic or not of type 0, 1 or 2 it returns <code>fail</code>.
<p>
<pre>
gap> n:=LibraryNearRing(GTW12_3,20465);
LibraryNearRing(12/3, 20465)
gap> ng := NGroupByNearRingMultiplication( n );
< N-group of LibraryNearRing(12/3, 20465) >
gap> TypeOfNGroup( ng );
fail
</pre>
<p>
<p>
<h2><a name="SECT008">8.8 Noetherian quotients</a></h2>
<p><p>
<a name = "SSEC008.1"></a>
<li><code>NoetherianQuotient( </code><var>nr</var><code>, </code><var>ngrp</var><code>, </code><var>target</var><code>, </code><var>source</var><code> )</code>
<p>
It is assumed that <var>source</var> and <var>target</var> are subsets of the <var>nr</var>-group
<var>ngrp</var>. The function <code>NoetherianQuotient</code> computes the set of all
elements <var>f</var> of <var>nr</var> such that <var>source</var>*<var>f</var> is a subset of <var>target</var>.
If <var>target</var> is an <var>nr</var>-ideal of <var>ngrp</var>, the Noetherian quotient is
returned as a near ring ideal, if <var>target</var> is an <var>nr</var>-subgroup of
<var>ngrp</var>, a left ideal of <var>nr</var> is returned. Otherwise the result is a
subset of <var>nr</var>.
<p>
In the following example we let a nearring act on its group reduct and
compute the noetherian quotient (<i>I</i>,<i>I</i>)<sub><i>N</i></sub> for an ideal <i>I</i> of <i>N</i>.
<p>
<pre>
gap> N := LibraryNearRing( GTW12_3, 100 );
LibraryNearRing(12/3, 100)
gap> I := NearRingIdeals( N );
[ < nearring ideal >, < nearring ideal >, < nearring ideal > ]
gap> List(I,Size);
[ 1, 6, 12 ]
gap> NN := NGroupByNearRingMultiplication( N );
< N-group of LibraryNearRing(12/3, 100) >
gap> NoetherianQuotient( N, NN, GroupReduct(I[2]), GroupReduct(I[2]) );
< nearring ideal >
gap> Size(last);
12
</pre>
<p>
<p>
<h2><a name="SECT009">8.9 Nearring radicals</a></h2>
<p><p>
<a name = "SSEC009.1"></a>
<li><code>NuRadical( </code><var>nr</var><code>, </code><var>nu</var><code> )</code>
<p>
The function <code>NuRadical</code> has two arguments, a nearring <var>nr</var> and a number
<var>nu</var> which must be one of <code>0</code>, <code>1/2</code>, <code>1</code> and <code>2</code>. It returns the
ν-radical for ν = 0, 1/2, 1, 2 respectively.
<p>
<a name = "SSEC009.2"></a>
<li><code>NuRadicals( </code><var>nr</var><code> )</code>
<p>
the function <code>NuRadicals</code> returns a record with the components <code>J_0</code>, <code>J1_2</code>,
<code>J1</code> and <code>J2</code> with the corresponding radicals.
<p>
<pre>
gap> f := LibraryNearRing( GTW8_4, 3 );
LibraryNearRing(8/4, 3)
gap> NuRadicals( f );
rec( J2 := < nearring ideal >, J1 := < nearring ideal >,
J1_2 := < nearring right ideal >, J0 := < nearring ideal > )
gap> NuRadical( f, 1/2 );
< nearring right ideal >
gap> Size( NuRadical( f, 0 ) );
8
gap> AsList( NuRadical( f, 1 ) );
[ (()), ((2,4)), ((1,2)(3,4)), ((1,2,3,4)), ((1,3)), ((1,3)(2,4)),
((1,4,3,2)), ((1,4)(2,3)) ]
gap> NuRadical( f, 1/2 ) = NuRadical( f, 2 );
true
</pre>
<p>
<p>
[<a href = "chapters.htm">Up</a>] [<a href ="CHAP007.htm">Previous</a>] [<a href ="CHAP009.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
<P>
<address>SONATA manual<br>September 2025
</address></body></html>
¤ Dauer der Verarbeitung: 0.30 Sekunden
(vorverarbeitet)
¤
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 ist noch experimentell.