- Constructing transformation nearrings
- Nearrings of transformations
- The group a transformation nearring acts on
- Transformation nearrings and other nearrings
- Noetherian quotients for transformation nearrings
- Zerosymmetric mappings

In the previous chapter we introduced mappings on groups, and we
called them **endomappings**. We also introduced the operation of
pointwise addition `+`

for endomappings. Now we are able to use these
mappings together with pointwise addition `+`

and composition `*`

to
construct left nearrings. These nearrings satisfy the distributive
law *x* * (*y* + *z*) = *x* * *y* + *x* * *z*.

A **transformation nearring** is a set of mappings on a group *G* that
is closed under pointwise addition of mappings, under forming the
additive inverse and under functional composition. For more
information we suggest Pilz:Nearrings, meldrum85:NATLWG,
and Clay:Nearrings,

The algorithms used can be found in aichingereckernoebauer00:TUOCINT and aichingerea00:CWN.

The elements of a transformation nearring are given as endomappings on
the group *G* (cf. Chapter ``Functions on groups that are not
necessarily homomorphisms: EndoMappings'').

`TransformationNearRingByGenerators( `

`, `

` )`

For a (possibly empty) list `endomaplist` of endomappings on a group
`G`, the constructor function `TransformationNearRingByGenerators`

returns the
nearring generated by these mappings. All of them must be
endomappings on the group `G`.

gap> g := AlternatingGroup ( 4 ); Alt( [ 1 .. 4 ] ) gap> 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> t := EndoMappingByPositionList ( g, [1,3,4,5,2,1,1,1,1,1,1,1] ); <mapping: AlternatingGroup( [ 1 .. 4 ] ) -> AlternatingGroup( [ 1 .. 4 ] ) > gap> m := TransformationNearRingByGenerators ( g, [t] ); TransformationNearRingByGenerators( [ <mapping: AlternatingGroup( [ 1 .. 4 ] ) -> AlternatingGroup( [ 1 .. 4 ] ) > ]) gap> Size (m); # may take a few moments 20736 gap> IsCommutative ( m ); false

`TransformationNearRingByAdditiveGenerators( `

`, `

` )`

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 *E*(*G*), *A*(*G*) and *I*(*G*)), the function
`TransformationNearRingByAdditiveGenerators`

allows to
construct this nearring. The only difference between
`TransformationNearRingByGenerators`

and
`TransformationNearRingByAdditiveGenerators`

is that
`TransformationNearRingByAdditiveGenerators`

is much faster.

gap> G := SymmetricGroup(3);; gap> endos := Endomorphisms ( G ); [ [ (1,2,3), (1,2) ] -> [ (), () ], [ (1,2,3), (1,2) ] -> [ (), (2,3) ], [ (1,2,3), (1,2) ] -> [ (), (1,2) ], [ (1,2,3), (1,2) ] -> [ (), (1,3) ], [ (1,2,3), (1,2) ] -> [ (1,2,3), (2,3) ], [ (1,2,3), (1,2) ] -> [ (1,3,2), (2,3) ], [ (1,2,3), (1,2) ] -> [ (1,3,2), (1,2) ], [ (1,2,3), (1,2) ] -> [ (1,2,3), (1,2) ], [ (1,2,3), (1,2) ] -> [ (1,2,3), (1,3) ], [ (1,2,3), (1,2) ] -> [ (1,3,2), (1,3) ] ] gap> Endo := TransformationNearRingByAdditiveGenerators ( G, endos ); < transformation nearring with 10 generators > gap> Size( Endo ); 54

`MapNearRing( `

` )`

`TransformationNearRing( `

` )`

`MapNearRing`

and `TransformationNearRing`

both return the nearring of all
mappings on `G`.

gap> m := MapNearRing ( GTW32_12 ); TransformationNearRing(32/12) gap> Size ( m ); 1461501637330902918203684832716283019655932542976 gap> NearRingIdeals ( m ); [ < nearring ideal >, < nearring ideal > ]

`IsFullTransformationNearRing( `

` )`

The function `IsFullTransformationNearRing`

returns `true`

if the
transformation nearring `tfmnr` is the nearring of all mappings over
the group.

gap> g := CyclicGroup ( 4 ); <pc group of size 4 with 2 generators> gap> m := MapNearRing ( g ); TransformationNearRing(<pc group of size 4 with 2 generators>) gap> gens := Filtered ( AsList ( m ), > f -> IsFullTransformationNearRing ( > TransformationNearRingByGenerators ( g, [ f ] )));; gap> Length(gens); 12

`PolynomialNearRing( `

` )`

`PolynomialNearRing`

returns the nearring of all polynomial functions on `G`.

gap> P := PolynomialNearRing ( GTW16_6 ); PolynomialNearRing( 16/6 ) gap> Size ( P ); 256

`EndomorphismNearRing( `

` )`

`EndomorphismNearRing`

returns the nearring generated by all endomorphisms
on `G`.

gap> ES4 := EndomorphismNearRing ( SymmetricGroup ( 4 ) ); EndomorphismNearRing( Sym( [ 1 .. 4 ] ) ) gap> Size ( ES4 ); 927712935936

`AutomorphismNearRing( `

` )`

`AutomorphismNearRing`

returns the nearring generated by all automorphisms
on `G`.

gap> A := AutomorphismNearRing ( DihedralGroup ( 8 ) ); AutomorphismNearRing( <pc group of size 8 with 3 generators> ) gap> Length(NearRingRightIdeals ( A )); 28 gap> Size (A); 32

`InnerAutomorphismNearRing( `

` )`

`InnerAutomorphismNearRing`

returns the nearring generated by all inner
automorphisms on `G`.

gap> I := InnerAutomorphismNearRing ( AlternatingGroup ( 4 ) ); InnerAutomorphismNearRing( Alt( [ 1 .. 4 ] ) ) gap> Size ( I ); 3072 gap> m := Enumerator( I )[1000]; <mapping: AlternatingGroup( [ 1 .. 4 ] ) -> AlternatingGroup( [ 1 .. 4 ] ) > gap> graph := List ( AsList ( AlternatingGroup ( 4 ) ), > x -> [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) ] ]

`CompatibleFunctionNearRing( `

` )`

`CompatibleFunctionNearRing`

returns the nearring of all compatible functions
on the group `G`. A function *m*:*G* → *G* is compatible iff for every normal
subgroup *N* of *G* and all *g*,*h* ∈ *G* if *g* and *h* are in the same coset of *N*
then their images under *m* are in the same coset of *G*.

`ZeroSymmetricCompatibleFunctionNearRing( `

` )`

`ZeroSymmetricCompatibleFunctionNearRing`

returns the nearring of all zerosymmetric
compatible functions on the group `G`. This function is also called by
`CompatibleFunctionNearRing`

.

`IsCompatibleEndoMapping( `

` )`

`IsCompatibleEndoMapping`

returns `true`

iff `m` is a compatible function on its
source.

`Is1AffineComplete( `

` )`

A group `G` is called 1-affine complete, iff every compatible function on `G` is
polynomial. `Is1AffineComplete`

returns `true`

iff `G` is 1-affine complete.

`CentralizerNearRing( `

`, `

` )`

`CentralizerNearRing`

returns the nearring of all functions
*m*:*G* → *G* such that for all endomorphisms *e* in `endos` the
equality *m* °*e* = *e* °*m* holds.

gap> autos := Automorphisms ( GTW8_4 ); [ IdentityMapping( 8/4 ), ^(2,4), [ (1,2,3,4), (2,4) ] -> [ (1,4,3,2), (1,2)(3,4) ], [ (1,2,3,4), (2,4) ] -> [ (1,2,3,4), (1,2)(3,4) ], ^(1,4)(2,3), ^(1,2,3,4), [ (1,2,3,4), (2,4) ] -> [ (1,2,3,4), (1,4)(2,3) ], [ (1,4)(2,3), (1,4,3,2) ] -> [ (2,4), (1,2,3,4) ] ] gap> C := CentralizerNearRing ( GTW8_4, autos ); CentralizerNearRing( 8/4, ... ) gap> C0 := ZeroSymmetricPart ( C ); < transformation nearring with 4 generators > gap> Size ( C0 ); 32 gap> Is := NearRingIdeals ( C0 ); [ < nearring ideal >, < nearring ideal >, < nearring ideal >, < nearring ideal >, < nearring ideal >, < nearring ideal >, < nearring ideal >, < nearring ideal >, < nearring ideal >, < nearring ideal >, < nearring ideal >, < nearring ideal >, < nearring ideal > ] gap> List (Is, Size); [ 1, 2, 4, 2, 4, 8, 8, 16, 4, 8, 16, 16, 32 ]

`RestrictedEndomorphismNearRing( `

`, `

` )`

`RestrictedEndomorphismNearRing`

returns the nearring generated by all
endomorphisms *e* on *G* with *e*(*G*) ⊆ *U*.

gap> G := GTW16_8; 16/8 gap> U := First ( NormalSubgroups ( G ), > x -> Size (x) = 2 ); Group([ ( 1, 5)( 2,10)( 3,11)( 4,12)( 6,15)( 7,16)( 8, 9)(13,14) ]) gap> 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> Size (HGU); 8 gap> IsDistributiveNearRing ( HGU ); true gap> Filtered ( AsList ( HGU), > x -> x = x * x ); [ <mapping: 16/8 -> 16/8 > ]

`LocalInterpolationNearRing( `

`, `

` )`

`LocalInterpolationNearRing`

returns the nearring of all mappings on
*G* that can be interpolated at any set of *m* places by a mapping in
`tfmnr`, where *G* is the domain and codomain of the elements in
`tfmnr`.

gap> P := PolynomialNearRing ( GTW8_5 ); PolynomialNearRing( 8/5 ) gap> L := LocalInterpolationNearRing ( P, 2 ); LocalInterpolationNearRing( PolynomialNearRing( 8/5 ), 2 ) gap> Size ( L ) / Size ( P ); 16

`Gamma( `

` )`

The function `Gamma`

returns the group on which the mappings of the
nearring `tfmnr` act.

gap> Gamma ( PolynomialNearRing ( CyclicGroup ( 25 ) ) ); <pc group of size 25 with 2 generators> gap> IsCyclic (last); true

`AsTransformationNearRing( `

` )`

Provided that `nr` is not already a transformation nearring,
`AsTransformationNearRing`

returns a transformation nearring that is isomorphic
to the nearring `nr`.

gap> L := LibraryNearRing (GTW8_3, 12); LibraryNearRing(8/3, 12) gap> Lt := AsTransformationNearRing ( L ); < transformation nearring with 3 generators > gap> Gamma ( Lt ); 8/3 x C_2

`AsExplicitMultiplicationNearRing( `

` )`

Provided that `nr` is not already an explicit multiplication nearring
(i. e. a transformation nearring), `AsExplicitMultiplicationNearRing`

returns
an explicit multiplication nearring that is isomorphic to the nearring `nr`.

gap> P := PolynomialNearRing ( GTW4_2 ); PolynomialNearRing( 4/2 ) gap> 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 )

`NoetherianQuotient( `

`, `

`, `

` )`

`NoetherianQuotient`

returns the set of all mappings *t* in `tfmnr`
with *t*(`source`) ⊆ `target`.

gap> G := SymmetricGroup ( 4 ); Sym( [ 1 .. 4 ] ) gap> V := First ( NormalSubgroups ( G ), x -> Size ( x ) = 4 ); Group([ (1,4)(2,3), (1,3)(2,4) ]) gap> P := InnerAutomorphismNearRing ( G ); InnerAutomorphismNearRing( Sym( [ 1 .. 4 ] ) ) gap> N := NoetherianQuotient ( P, V, G ); NoetherianQuotient( Group([ (1,4)(2,3), (1,3)(2,4) ]) ,Sym( [ 1 .. 4 ] ) ) gap> Size ( P ) / Size ( N ); 54

`CongruenceNoetherianQuotient( `

`, `

`, `

`, `

` )`

`CongruenceNoetherianQuotient`

returns the ideal of all those mappings in `P` that
map every element of the group Gamma(P) into `C`, and maps two elements that
are congruent modulo `B` into elements that are congruent modulo `A`.
Input conditions: (1) `P` is the nearring of polynomial functions on a group G,
(2) `A` is a normal subgroup of G,
(3) `B` is a normal subgroup of G,
(4) `C` is a normal subgroup of G,
(5) [C,B] is less or equal to A.

gap> G := GTW8_4; 8/4 gap> P := PolynomialNearRing (G); PolynomialNearRing( 8/4 ) gap> A := TrivialSubgroup (G); Group(()) gap> B := DerivedSubgroup (G); Group([ (1,3)(2,4) ]) gap> C := G; 8/4 gap> I := CongruenceNoetherianQuotient (P, A, B, C); < nearring ideal > gap> Size (P/I); 2

`CongruenceNoetherianQuotientForInnerAutomorphismNearRings (`

`, `

`, `

`, `

` )`

`CongruenceNoetherianQuotientForInnerAutomorphismNearRings`

returns the ideal of all those mappings in `I` that
map every element of the group Gamma(I) into `C`, and maps two elements that
are congruent modulo `B` into elements that are congruent modulo `A`.
Input conditions: (1) `P` is the nearring of polynomial functions on a group G,
(2) `A` is a normal subgroup of G,
(3) `B` is a normal subgroup of G,
(4) `C` is a normal subgroup of G,
(5) [C,B] is less or equal to A.

gap> G := GTW8_4; 8/4 gap> I := InnerAutomorphismNearRing (G); InnerAutomorphismNearRing( 8/4 ) gap> A := TrivialSubgroup (G); Group(()) gap> B := DerivedSubgroup (G); Group([ (1,3)(2,4) ]) gap> C := G; 8/4 gap> j := CongruenceNoetherianQuotientForInnerAutomorphismNearRings (I,A,B,C); < nearring ideal > gap> Size (I/j); 2

`ZeroSymmetricPart( `

` )`

`ZeroSymmetricPart`

returns the nearring of all mappings *t* in
`tfmnr` with *t*(0) = 0.

gap> g := GTW8_4; 8/4 gap> P := PolynomialNearRing ( g ); PolynomialNearRing( 8/4 ) gap> Zp := ZeroSymmetricPart ( P ); < transformation nearring with 4 generators > gap> InnerAutomorphismNearRing ( g ) = Zp; true

[Up] [Previous] [Next] [Index]

SONATA manual

December 2022