gap> a:= Transformation( [ 8, 6, 9, 6, 5, 4, 3, 1, 11, 3, 9 ] ); Transformation( [ 8, 6, 9, 6, 5, 4, 3, 1, 11, 3, 9 ] ) gap> 1^a; 8 gap> Image(a); [ 1, 3, 4, 5, 6, 8, 9, 11 ] gap> Rank(a); 8 gap> Degree(a); 11 gap> a^0; Transformation( [ 1 .. 11 ] )Transformations act from the right on , their multiplication is defined accordingly.
gap> b:= Transformation( [ 2, 1, 11, 5, 9, 9, 9, 2, 3, 10, 11 ] );; gap> a * b; Transformation( [ 2, 9, 3, 9, 9, 5, 11, 2, 11, 11, 3 ] )A transformation monoid of degree is a monoid generated by transformations of degree .
gap> M:= Monoid(a, b);
Monoid( [ Transformation( [ 8, 6, 9, 6, 5, 4, 3, 1, 11, 3, 9 ] ),
Transformation( [ 2, 1, 11, 5, 9, 9, 9, 2, 3, 10, 11 ] ) ] )
gap> Size(M);
137
MONOiD provides functions that determine the size of a transformation monoid
, can list the elements of or decide membership
of any transformation of degree in . Moreover,
the Green class structure of can be determined.
gap> Length(DClasses(M)); 63A finite binary relation of degree is a graph with vertex set . In MONOiD such a relation is represented by its list of successors.
gap> d:= Relation( [ [ ], [ 1 ], [ 1, 2 ], [ 1, 2, 3 ] ] ); Relation( [ [ ], [ 1 ], [ 1, 2 ], [ 1, 2, 3 ] ] )Relations can be multiplied, checked for properties like reflexive, symmetric, transitive, and closures can be formed. Relations of degree can be used to generate a monoid.
The action of a transformation monoid on
induces actions on tuples, subsets, ... which
can be used to build new transformation monoids from given ones.
gap> orb:= StrongOrbit(M, [1,4,5], Size, OnSets);
[ [ 1, 4, 5 ], [ 5, 6, 8 ] ]
gap> act:= ActionWithZero(M, orb, OnSets);
Monoid( [ Transformation( [ 2, 1, 3 ] ), Transformation( [ 3, 3, 3 ] ) ] )
gap> Size(act);
3
(For the precise meaning of the commands in the above example we refer to the
MONOiD manual.) The concept of monoid actions can
be used to turn a monoid of binary relations into a transformation monoid.