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

# 5 Transformation nearrings

### Sections

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'').

## 5.1 Constructing transformation nearrings

• `TransformationNearRingByGenerators( `G`, `endomaplist` )`

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( `G`, `endomaplist` )`

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
```

## 5.2 Nearrings of transformations

• `MapNearRing( `G` )`

• `TransformationNearRing( `G` )`

`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( `tfmnr` )`

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( `G` )`

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

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

• `EndomorphismNearRing( `G` )`

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

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

• `AutomorphismNearRing( `G` )`

`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( `G` )`

`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( `G` )`

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

• `ZeroSymmetricCompatibleFunctionNearRing( `G` )`

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

• `IsCompatibleEndoMapping( `m` )`

`IsCompatibleEndoMapping` returns `true` iff m is a compatible function on its source.

• `Is1AffineComplete( `G` )`

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( `G`, `endos` )`

`CentralizerNearRing` returns the nearring of all functions m:GG 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( `G`, `U` )`

`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( `tfmnr`, `m` )`

`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
```

## 5.3 The group a transformation nearring acts on

• `Gamma( `tfmnr` )`

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
```

## 5.4 Transformation nearrings and other nearrings

• `AsTransformationNearRing( `nr` )`

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( `nr` )`

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 )
```

## 5.5 Noetherian quotients for transformation nearrings

• `NoetherianQuotient( `tfmnr`, `target`, `source` )`

`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( `P`, `A`, `B`, `C` )`

`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 (`I`, `A`, `B`, `C` )`

`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
```

## 5.6 Zerosymmetric mappings

• `ZeroSymmetricPart( `tfmnr` )`

`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