Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/sonata/doc/ref/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 23.8.2025 mit Größe 9 kB image not shown  

Quelle  tfms.tex   Sprache: Latech

 
%
\Chapter{Arbitrary functions on groups: EndoMappings}
%

An *endomapping* is a mapping with equal source and range, say $G$,
where $G$ is a group. An endomapping  on $G$ then acts on $G$ by
*transforming* each element of $G$ into (precisely one) element of $G$.
Endomappings are special cases of Mappings.

Endomappings are created by the constructor functions 
`EndoMappingByPositionList', `EndoMappingByFunction', `IdentityEndoMapping',
`ConstantEndoMapping', and are represented as mappings.
The functions described in
this section can be found in the file `grptfms.g?'.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Defining endo mappings}


\>EndoMappingByPositionList ( <G>, <list> )

The constructor function `EndoMappingByPositionList' returns the
the endomapping that maps the i-th element of the group (in the
ordering given by AsSortedList)
to the i-th element of list.

\beginexample
    gap> G := GTW4_2;
    4/2
    gap> t1 := EndoMappingByPositionList ( G, [1, 2, 4, 4] );
    <mapping: 4/2 -> 4/2 >
\endexample

\>EndoMappingByFunction( <G>, <fun> )

The constructor function `EndoMappingByFunction' returns the
function <fun> that maps elements of the group <G> into <G> as an
endomapping.

\beginexample
    gap> t2 := EndoMappingByFunction ( GTW8_2, g -> g^-1 );
    <mapping: 8/2 -> 8/2 >
    gap> IsGroupHomomorphism ( t2 );
    true
    gap> t3 := EndoMappingByFunction ( GTW6_2, g -> g^-1 );
    <mapping: 6/2 -> 6/2 >
    gap> IsGroupHomomorphism ( t3 );
    false
\endexample

`EndoMappings' and `GroupGeneralMappings' are different
kinds of objects in {\GAP}: `GroupGeneralMappings' model homomorphisms between
two different groups, whereas `EndoMappings' model nonlinear functions
on one group.
However, `GroupGeneralMappings' can be transformed into
`Endomappings' if they have equal source and range.

\>AsEndoMapping( <map> )

The constructor function `AsEndoMapping' returns the mapping
as an endomapping.

\beginexample
    gap> G1 := Group ((1,2,3), (1, 2));
    Group([ (1,2,3), (1,2) ])
    gap> G2 := Group ((2,3,4), (2, 3));
    Group([ (2,3,4), (2,3) ])
    gap> f1 := IsomorphismGroups ( G1, G2 );
    [ (1,2,3), (1,2) ] -> [ (2,3,4), (2,3) ]
    gap> f2 := IsomorphismGroups ( G2, G1 );
    [ (2,3,4), (2,3) ] -> [ (1,2,3), (1,2) ]
    gap> AsEndoMapping ( CompositionMapping ( f1, f2 ) );
    <mapping: Group( [ (2,3,4), (2,3) ] ) -> Group( [ (2,3,4), (2,3)
    ] ) >
\endexample

`EndoMappings' and `GroupGeneralMappings' are two completely different
kinds of objects in {\GAP}, but they can be transformed into one
another.

\>AsGroupGeneralMappingByImages( <endomap> )

`AsGroupGeneralMappingByImages' returns the
`GroupGeneralMappingByImages' that acts on the group the same way as
the endomapping <endomap>. It only makes sense to use this function
for endomappings that are group endomorphisms.

\beginexample
    gap> m := IdentityEndoMapping ( GTW6_2 );
    <mapping: 6/2 -> 6/2 >
    gap> AsGroupGeneralMappingByImages ( m );
    [ (1,2), (1,2,3) ] -> [ (1,2), (1,2,3) ]
\endexample

\>IsEndoMapping( <obj> )

`IsEndoMapping' returns `true' if the object <obj> is an endomapping
and `false' otherwise.

\beginexample
    gap> IsEndoMapping ( InnerAutomorphisms ( GTW6_2 ) [3] );
    true
\endexample

\>IdentityEndoMapping( <G> )

`IdentitEndoMapping' is the counterpart to the {\GAP} standard
library function `IdentityMapping'. It returns the identity
transformation on the group <G>.

\beginexample
    gap> AsList ( UnderlyingRelation ( IdentityEndoMapping ( Group ((1,2,3,4)) ) ) );
    [ DirectProductElement( [ (), () ] ), DirectProductElement( [ (1,2,3,4), (1,2,
       3,4) ] ), DirectProductElement( [ (1,3)(2,4), (1,3)(2,4) ] ),
      DirectProductElement( [ (1,4,3,2), (1,4,3,2) ] ) ]
\endexample

\>ConstantEndoMapping( <G>, <g> )

`ConstantEndoMapping' returns the endomapping on the group
which maps everything to the group element <g> of <G>.

\beginexample
    gap> C3 := CyclicGroup (3);
    <pc group of size 3 with 1 generator>
    gap> m := ConstantEndoMapping (C3, AsSortedList (C3) [2]);
    MappingByFunction( <pc group of size 3 with 
    1 generator>, <pc group of size 3 with 
    1 generator>, function( x ) ... end )
    gap> List (AsList (C3), x -> Image (m, x));
    [ f1, f1, f1 ]
\endexample


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Properties of endo mappings}


\>IsIdentityEndoMapping( <endomap> )

`IsIdentityEndoMapping' returns `true' if <endomap> is the identity
function on a group.

\beginexample
    gap> IsIdentityEndoMapping (EndoMappingByFunction ( 
    > AlternatingGroup ( [1..5] ), x -> x^31));
    true
\endexample

\>IsConstantEndoMapping( <endomap> )

`IsConstantEndoMapping' returns `true' if the endomapping
<endomap> is constant and `false' otherwise.

\beginexample
    gap> C3 := CyclicGroup ( 3 );
    <pc group of size 3 with 1 generator>
    gap> IsConstantEndoMapping ( EndoMappingByFunction ( C3,  x -> x^3 ));
    true
\endexample

\>IsDistributiveEndoMapping( <endomap> )

A mapping $t$ on an (additively written) group $G$ is called
*distributive* if for all elements $x$ and $y$ in $G$:java.lang.NullPointerException
$t(x+y) = t(x) + t(y)$.
The function `IsDistributiveEndoMapping' returns the according
boolean value `true' or `false'.

\beginexample
    gap> G := Group ( (1,2,3), (1,2) );
    Group([ (1,2,3), (1,2) ])
    gap> IsDistributiveEndoMapping ( EndoMappingByFunction ( G, x -> x^3));
    false
    gap> IsDistributiveEndoMapping ( EndoMappingByFunction ( G, x -> x^7));
    true
\endexample

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Operations for endo mappings}


While the composition operator `\*' is applicable to mappings and
transformations, the operation `+' (pointwise addition of the images) can
only be applied to transformations.

The product operator `\*' returns the transformation which is obtained
from the transformations <t1> and <t2> by composition of <t1> and <t2>
(i.e. performing <t2> *after* <t1>).

\beginexample
    gap> t1 := ConstantEndoMapping ( GTW2_1, ());
    MappingByFunction( 2/1, 2/1, function( x ) ... end )
    gap> t2 := ConstantEndoMapping (GTW2_1, (1, 2));
    MappingByFunction( 2/1, 2/1, function( x ) ... end )
    gap> List ( AsList ( GTW2_1 ), x -> Image ( t1 * t2, x ));
    [ (1,2), (1,2) ]
\endexample

The add operator `+' returns the endomapping which is obtained
from the endomappings <t1> and <t2> by pointwise addition 
of <t1> and <t2>. (Note that in this context addition means that
for every place $x$ in the source of <t1> and <t2>,   
{\GAP} performs the  operation `p\*q', where
`p' is the image of at $x$ and `q' is the image of <t2> at $x$.) 

The subtract operator `-' returns the endomapping which is
obtained from the endomappings <t1> and <t2> by pointwise 
subtraction of <t1> and <t2>. (Note that in this context subtraction 
means performing the {\GAP} operation `p\*q\^{}(-1)',
where
`p' is the image of at a place $x$ and `q' is the image of <t2> at $x$.) 

\beginexample
    gap> G := SymmetricGroup ( 3 );
    Sym( [ 1 .. 3 ] )
    gap> invertingOnG := EndoMappingByFunction ( G, x -> x^-1 );
    <mapping: SymmetricGroup( [ 1 .. 3 ] ) -> SymmetricGroup(
    [ 1 .. 3 ] ) >
    gap> identityOnG := IdentityEndoMapping (G);
    <mapping: SymmetricGroup( [ 1 .. 3 ] ) -> SymmetricGroup(
    [ 1 .. 3 ] ) >
    gap> AsSortedList ( G );
    [ (), (2,3), (1,2), (1,2,3), (1,3,2), (1,3) ]
    gap> List ( AsSortedList (G), 
    >              x -> Image ( identityOnG * invertingOnG, x ));
    [ (), (2,3), (1,2), (1,3,2), (1,2,3), (1,3) ]
    gap> List ( AsSortedList (G),
    >              x -> Image ( identityOnG + invertingOnG, x ));
    [ (), (), (), (), (), () ]
    gap> IsIdentityEndoMapping ( - invertingOnG );
    true
    gap> - invertingOnG = identityOnG;
    true
\endexample

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Nicer ways to print a mapping}


\> GraphOfMapping( <mapping> )

`GraphOfMapping' returns the set of all pairs (x,m(x)), where
x lies in the source of the mapping. In particular, it returns
List (Source (m), x -> [x, Image (m, x)]);

\beginexample
    gap> G := SymmetricGroup ( 3 );
    Sym( [ 1 .. 3 ] )
    gap> m := ConstantEndoMapping (G, (1,2,3)) + IdentityEndoMapping( G );
    MappingByFunction( Sym( [ 1 .. 3 ] ), Sym( [ 1 .. 3 ] ), function( g ) ... end )
    gap> PrintArray( GraphOfMapping( m ) );
    [ [       (),  (1,2,3) ],
      [    (2,3),    (1,3) ],
      [    (1,2),    (2,3) ],
      [  (1,2,3),  (1,3,2) ],
      [  (1,3,2),       () ],
      [    (1,3),    (1,2) ] ]
\endexample

\> PrintAsTerm( <mapping> )

If <mapping> is a polynomial function on its source then `PrintAsTerm'
prints a polynomial that induces the mapping <mapping>.
\beginexample
    gap> G := SymmetricGroup ( 3 );
    Sym( [ 1 .. 3 ] )
    gap> p := Random( PolynomialNearRing( G ) );
    <mapping: SymmetricGroup( [ 1 .. 3 ] ) -> SymmetricGroup( [ 1 .. 3 ] ) >
    gap> PrintAsTerm( p );
    g1 - x - 2 * g1 - g2 - x - g1 - g2 + g1 - x - 2 * g1 - 
    g2 - x - g1 - g2 - 3 * x + g1
    gap> GeneratorsOfGroup( G );
    [ (1,2,3), (1,2) ]
\endexample

The expressions `g1' and `g2' stand for the first and secong generator 
of the group <G> respectively. The result is not necessarily a 
polynomial of minimal length.

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: t
%%% End: 

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

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.