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

# 5 Transformation nearrings

### Sections

1. Constructing transformation nearrings
2. Nearrings of transformations
3. The group a transformation nearring acts on
4. Transformation nearrings and other nearrings
5. Noetherian quotients for transformation nearrings
6. 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'').

## 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: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(` 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: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(` 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]