% \Chapter{Transformation nearrings} % 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 \cite{Pilz:Nearrings}, \cite{meldrum85:NATLWG}, and \cite{Clay:Nearrings}, The algorithms used can be found in \cite{aichingereckernoebauer00:TUOCINT} and \cite{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''). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{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>. \beginexample 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 \endexample \>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 `Trans\-formation\-NearRing\-By\-Additive\-Generators' allows to construct this nearring. The only difference between `TransformationNearRingByGenerators' and `Trans\-formation\-NearRing\-By\-Additive\-Generators' is that `Trans\-formation\-NearRing\-By\-Additive\-Generators' is much faster. \beginexample gap> endos := Endomorphisms ( GTW6_2 ); [ [ (1,2), (1,2,3) ] -> [ (), () ], [ (1,2), (1,2,3) ] -> [ (2,3), () ], [ (1,2), (1,2,3) ] -> [ (1,3), () ], [ (1,2), (1,2,3) ] -> [ (1,2), () ], [ (1,2), (1,2,3) ] -> [ (2,3), (1,2,3) ], [ (1,2), (1,2,3) ] -> [ (2,3), (1,3,2) ], [ (1,2), (1,2,3) ] -> [ (1,2), (1,3,2) ], [ (1,2), (1,2,3) ] -> [ (1,2), (1,2,3) ], [ (1,2), (1,2,3) ] -> [ (1,3), (1,2,3) ], [ (1,2), (1,2,3) ] -> [ (1,3), (1,3,2) ] ] gap> Endo := TransformationNearRingByAdditiveGenerators ( GTW6_2, endos ); < transformation nearring with 10 generators > gap> Size ( Endo ); 54 \endexample %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Nearrings of transformations} \>MapNearRing( <G> ) \>TransformationNearRing( <G> ) `MapNearRing' and `TransformationNearRing' both return the nearring of all mappings on <G>. \beginexample gap> m := MapNearRing ( GTW32_12 ); TransformationNearRing(32/12) gap> Size ( m ); 1461501637330902918203684832716283019655932542976 gap> NearRingIdeals ( m ); [ < nearring ideal >, < nearring ideal > ] \endexample \>IsFullTransformationNearRing( <tfmnr> ) The function `IsFullTransformationNearRing' returns `true' if the transformation nearring <tfmnr> is the nearring of all mappings over the group. \beginexample 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 \endexample \>PolynomialNearRing( <G> ) `PolynomialNearRing' returns the nearring of all polynomial functions on <G>. \beginexample gap> P := PolynomialNearRing ( GTW16_6 ); PolynomialNearRing( 16/6 ) gap> Size ( P ); 256 \endexample \>EndomorphismNearRing( <G> ) `EndomorphismNearRing' returns the nearring generated by all endomorphisms on <G>. \beginexample gap> ES4 := EndomorphismNearRing ( SymmetricGroup ( 4 ) ); EndomorphismNearRing( Sym( [ 1 .. 4 ] ) ) gap> Size ( ES4 ); 927712935936 \endexample \>AutomorphismNearRing( <G> ) `AutomorphismNearRing' returns the nearring generated by all automorphisms on <G>. \beginexample gap> A := AutomorphismNearRing ( DihedralGroup ( 8 ) ); AutomorphismNearRing( <pc group of size 8 with 3 generators> ) gap> Length(NearRingRightIdeals ( A )); 28 gap> Size (A); 32 \endexample \>InnerAutomorphismNearRing( <G> ) `InnerAutomorphismNearRing' returns the nearring generated by all inner automorphisms on <G>. \beginexample 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) ] ] \endexample \>CompatibleFunctionNearRing( <G> ) `CompatibleFunctionNearRing' returns the nearring of all compatible functions on the group <G>. A function $m:G \rightarrow G$ is compatible iff for every normal subgroup $N$ of $G$ and all $g,h \in 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 \rightarrow G$ such that for all endomorphisms $e$ in <endos> the equality $m \circ e = e \circ m$ holds. \beginexample 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 ] \endexample \>RestrictedEndomorphismNearRing( <G>, <U> ) `RestrictedEndomorphismNearRing' returns the nearring generated by all endomorphisms $e$ on $G$ with $e(G) \subseteq U$. \beginexample 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 > ] \endexample \>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>. \beginexample gap> P := PolynomialNearRing ( GTW8_5 ); PolynomialNearRing( 8/5 ) gap> L := LocalInterpolationNearRing ( P, 2 ); LocalInterpolationNearRing( PolynomialNearRing( 8/5 ), 2 ) gap> Size ( L ) / Size ( P ); 16 \endexample %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{The group a transformation nearring acts on} \>Gamma( <tfmnr> ) The function `Gamma' returns the group on which the mappings of the nearring <tfmnr> act. \beginexample gap> Gamma ( PolynomialNearRing ( CyclicGroup ( 25 ) ) ); <pc group of size 25 with 2 generators> gap> IsCyclic (last); true \endexample %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{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>. \beginexample 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 \endexample \>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>. \beginexample 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 ) \endexample %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Noetherian quotients for transformation nearrings} \>NoetherianQuotient( <tfmnr>, <target>, <source> )!{for transformation nearrings} `NoetherianQuotient' returns the set of all mappings $t$ in <tfmnr> with $t(`source') \subseteq `target'$. \beginexample 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 \endexample \>CongruenceNoetherianQuotient( <P>, <A>, <B>, <C> )!{for nearrings of polynomial functions} `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. \beginexample 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 \endexample \>CongruenceNoetherianQuotientForInnerAutomorphismNearRings (<I>, <A>, <B>, <C> )!{for inner automorphism nearrings} `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. \beginexample 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 \endexample %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Zerosymmetric mappings} \>ZeroSymmetricPart( <tfmnr> )!{for transformation nearrings} `ZeroSymmetricPart' returns the nearring of all mappings $t$ in <tfmnr> with $t(0) = 0$. \beginexample 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 \endexample %%% Local Variables: %%% mode: latex %%% TeX-master: t %%% End: