5. Residue Class-Wise Affine Groups

This chapter describes the functionality available for calculating with rcwa groups.

5.1 The categories of rcwa groups

5.1-1 IsRcwaGroup
> IsRcwaGroup( G )( filter )

The category of all rcwa groups.

5.1-2 IsRationalBasedRcwaGroup
> IsRationalBasedRcwaGroup( G )( filter )

The category of all "rational-based" (hence all integral and all semilocal integral) rcwa groups.

5.1-3 IsIntegralRcwaGroup
> IsIntegralRcwaGroup( G )( filter )

The category of all integral rcwa groups.

5.1-4 IntegralRcwaGroupsFamily
> IntegralRcwaGroupsFamily( family )

The family of all integral rcwa groups.

All integral rcwa groups are supergroups of

5.1-5 TrivialIntegralRcwaGroup
> TrivialIntegralRcwaGroup( global variable )

The trivial integral rcwa group.

5.1-6 IsSemilocalIntegralRcwaGroup
> IsSemilocalIntegralRcwaGroup( G )( filter )

The category of all semilocal integral rcwa groups.

5.1-7 IsModularRcwaGroup
> IsModularRcwaGroup( G )( filter )

The category of all modular rcwa groups.

All rcwa groups over the ring R are subgroups of

5.1-8 RCWA
> RCWA( R )( function )

The group RCWA(R) of all bijective rcwa mappings over the ring R. This group is (at least in general) not finitely generated, hence no generators are stored.



gap> RCWA_Z := RCWA(Integers);
RCWA(Z)
gap> Size(RCWA_Z);
infinity
gap> IsFinitelyGeneratedGroup(RCWA_Z);
false
gap> One(RCWA_Z);
IdentityMapping( Integers )
gap> IsSubgroup(RCWA_Z, Group(RcwaMapping([[-1,0,1]]),
>                             RcwaMapping((1,2,3),[1..4]),
>                             RcwaMapping(2,[[0,1],[1,0],[2,3],[3,2]])));
true 


5.2 Constructing rcwa groups

Rcwa groups can be constructed using either Group, GroupByGenerators or GroupWithGenerators, as usual (see reference manual). Note that currently except of the whole groups RCWA( R ) only finitely generated rcwa groups are supported.



gap> g := RcwaMapping([[1,0,1],[1,1,1],[3,6,1],
>                      [1,0,3],[1,1,1],[3,6,1],
>                      [1,0,1],[1,1,1],[3,-21,1]]);;
gap> h := RcwaMapping([[1,0,1],[1,1,1],[3,6,1],
>                      [1,0,3],[1,1,1],[3,-21,1],
>                      [1,0,1],[1,1,1],[3,6,1]]);;
gap> Order(g);
9
gap> Order(h);
9
gap> G := Group(g,h);
<integral rcwa group with 2 generators>
gap> Size(G);
infinity


Another possible way to get an rcwa group is by "translating" a permutation group, or by taking the image of an rcwa representation.

5.2-1 IntegralRcwaGroupByPermGroup
> IntegralRcwaGroupByPermGroup( G )( function )
> RcwaGroupByPermGroup( G )( function )

Constructs an integral rcwa group isomorphic to the (finite) permutation group G, which acts on the range [ 1 .. LargestMovedPoint(G ) ] as G does.



gap> H := RcwaGroupByPermGroup(Group((1,2),(3,4),(5,6),(7,8),
>                                    (1,3)(2,4),(1,3,5,7)(2,4,6,8)));
<integral rcwa group with 6 generators>
gap> Size(H);
384
gap> IsSolvable(H);
true
gap> List(DerivedSeries(H),Size);
[ 384, 96, 32, 2, 1 ]


5.2-2 IsomorphismIntegralRcwaGroup
> IsomorphismIntegralRcwaGroup( G )( attribute )
> IsomorphismRcwaGroup( G )( attribute )

A faithful integral rcwa representation of the group G. Currently only supported for finite groups.



gap> G := GL(2,5);
GL(2,5)
gap> IsomorphismRcwaGroup(G);
CompositionMapping(
[ (1,2,4,8)(3,6,12,18)(5,10,17,22)(9,15,21,24)(13,14,19,23),
  (1,3,7)(2,5,11)(4,9,16)(6,13,12)(8,14,20)(10,18,17)(15,22,21)(19,24,23)
 ] -> [ <integral rcwa mapping with modulus 24>,
  <integral rcwa mapping with modulus 24> ], <action isomorphism> )             


5.2-3 Display
> Display( G )( method )

Displays the rcwa group G.



gap> a := RcwaMapping([[3,0,2],[3, 1,4],[3,0,2],[3,-1,4]]);;
gap> b := RcwaMapping([[3,0,2],[3,13,4],[3,0,2],[3,-1,4]]);;
gap> c := RcwaMapping([[3,0,2],[3, 1,4],[3,0,2],[3,11,4]]);;
gap> H := Group(a,b);
<integral rcwa group with 2 generators>
gap> Display(H);

Integral rcwa group, generated by
 
[
 
Bijective integral rcwa mapping with modulus 4
 
                n mod 4                |                 n^f
---------------------------------------+--------------------------------------
  0 2                                  | 3n/2
  1                                    | (3n + 1)/4
  3                                    | (3n - 1)/4
 
 
Bijective integral rcwa mapping with modulus 4
 
                n mod 4                |                 n^f
---------------------------------------+--------------------------------------
  0 2                                  | 3n/2
  1                                    | (3n + 13)/4
  3                                    | (3n - 1)/4

]



5.3 Computing with rcwa groups

5.3-1 \in
> \in( g, G )( method )

Tries to figure out whether g is an element of G or not. In case G is finite, the result is correct provided that the result given by IsomorphismPermGroup( G ) is. If G is infinite and g is not in G, this method may run into an infinite loop.


gap> u := RcwaMapping([[3,0,5],[9,1,5],[3,-1,5],[9,-2,5],[9,4,5]]);;
gap> u in H;
false

5.3-2 Size
> Size( G )( method )

Tries to compute the order of the rcwa group G.

This is a probabilistic method. It may return the size of a proper factor group of G, or run in an infinite loop. You can increase the option value Steps to decrease the probability of getting a wrong result. The default value for Steps is 10.



gap> g1 := RcwaMapping((1,2),[1..2]);
<integral rcwa mapping with modulus 2>
gap> g2 := RcwaMapping((1,2,3),[1..3]);
<integral rcwa mapping with modulus 3>
gap> g3 := RcwaMapping((1,2,3,4,5),[1..5]);
<integral rcwa mapping with modulus 5>
gap> G := Group(g1,g2,g3);
<integral rcwa group with 3 generators>
gap> Size(G);
265252859812191058636308480000000


5.3-3 IsomorphismPermGroup
> IsomorphismPermGroup( G )( method )

Tries to compute an isomorphism from a finite rcwa group G to some permutation group.

This is a probabilistic method, also. It may return a homomorphism to a permutation group isomorphic to a proper factor group of G. You can increase the option value Steps to decrease the probability of getting a wrong result. The default value for Steps is 10.



gap> H := Group(g1,g2);
<integral rcwa group with 2 generators>
gap> phi := IsomorphismPermGroup(H);
[ <bijective integral rcwa mapping with modulus 2, of order 2>,
  <bijective integral rcwa mapping with modulus 3, of order 3> ] ->
[ (1,2)(3,4)(5,6), (1,2,3)(4,5,6) ]                                             


5.3-4 NiceMonomorphism
> NiceMonomorphism( G )( method )

Returns the result of IsomorphismPermGroup in case the group is supposed to be finite by Size, and IdentityMapping( G ) otherwise.

5.3-5 NiceObject
> NiceObject( G )( method )

Returns the image of NiceMonomorphism( G ).


gap> NiceObject(G);
Group([ (1,2)(3,4)(5,6)(7,8)(9,10)(11,12)(13,14)(15,16)(17,18)(19,20)(21,
    22)(23,24)(25,26)(27,28)(29,30), (1,2,3)(4,5,6)(7,8,9)(10,11,12)(13,14,
    15)(16,17,18)(19,20,21)(22,23,24)(25,26,27)(28,29,30),
  (1,2,3,4,5)(6,7,8,9,10)(11,12,13,14,15)(16,17,18,19,20)(21,22,23,24,25)(26,
    27,28,29,30) ])                                                             

5.3-6 Modulus
> Modulus( G )( method )

Computes the modulus of the rcwa group G.

See also Modulus (4.3-2) for rcwa mappings, and IsTame (5.3-10).


gap> Modulus(G);
30
gap> Modulus(Group(a,b));
0

5.3-7 PrimeSet
> PrimeSet( G )( operation )

Computes the prime set of the rcwa group G.

See also PrimeSet (4.11-3) for rcwa mappings.


gap> PrimeSet(G);
[ 2, 3, 5 ]
gap> PrimeSet(H);
[ 2, 3 ]

5.3-8 IsFlat
> IsFlat( G )( property )

Determines whether or not the rcwa group G is flat.

See also IsFlat (4.4-3) for rcwa mappings.


gap> IsFlat(AlternatingGroup(IsIntegralRcwaGroup,5));
true
gap> IsFlat(Group(a,b));
false
gap> IsFlat(Group(g));
false

5.3-9 IsClassWiseOrderPreserving
> IsClassWiseOrderPreserving( G )( property )

Indicates whether the integral rcwa group G is class-wise order-preserving or not.

See also IsClassWiseOrderPreserving (4.4-4) for rcwa mappings.


gap> IsClassWiseOrderPreserving(Group(a,b));
true
gap> IsClassWiseOrderPreserving(G);
true
gap> t := RcwaMapping([[-1,0,1]]);;
gap> IsClassWiseOrderPreserving(Group(t,g,h));
false

5.3-10 IsTame
> IsTame( G )( property )

Determines whether or not the rcwa group G is tame.

See also IsTame (4.10-2) for rcwa mappings.


gap> IsTame(G);
true
gap> IsTame(Group(a,b));
false
gap> IsTame(Group(Comm(a,b),Comm(a,c)));
true

5.3-11 ShortOrbits
> ShortOrbits( G, S, maxlng )( function )

Computes all finite orbits of the rcwa group G of maximal length maxlng, which intersect non-trivially with the set S.


gap> A5 := AlternatingGroup(IsIntegralRcwaGroup,5);;
gap> ShortOrbits(A5,[-10..10],100);
[ [ -14, -13, -12, -11, -10 ], [ -9, -8, -7, -6, -5 ], [ -4, -3, -2, -1, 0 ], 
  [ 1, 2, 3, 4, 5 ], [ 6, 7, 8, 9, 10 ] ]
gap> Action(A5,last[2]);
Group([ (1,2,3,4,5), (3,4,5) ])
gap> ab := Comm(a,b);; ac := Comm(a,c);;
gap> G := Group(ab,ac);;
gap> orb := ShortOrbits(G,[-20..20],100);
[ [ -51, -48, -42, -39, -25, -23, -22, -20, -19, -17 ], [ -18 ], 
  [ -33, -30, -24, -21, -16, -14, -13, -11, -10, -8 ], 
  [ -15, -12, -7, -6, -5, -4, -3, -2, -1, 1 ], [ -9 ], [ 0 ], 
  [ 2, 3, 4, 5, 6, 7, 8, 10, 12, 15 ], [ 9 ], 
  [ 11, 13, 14, 16, 17, 19, 21, 24, 30, 33 ], [ 18 ], 
  [ 20, 22, 23, 25, 26, 28, 39, 42, 48, 51 ] ]
gap> Action(G,orb[1]);
Group([ (2,6,8,10,4,7), (1,5,7,9,3,6) ])
gap> ShortOrbits(Group(u),[-30..30],100);
[ [ -13, -8, -7, -5, -4, -3, -2 ], [ -10, -6 ], [ -1 ], [ 0 ], [ 1, 2 ], 
  [ 3, 5 ], [ 24, 36, 39, 40, 44, 48, 60, 65, 67, 71, 80, 86, 93, 100, 112, 
      128, 138, 155, 167, 187, 230, 248, 312, 446, 520, 803, 867, 1445 ] ]

5.4 Properties of RCWA(Z)

5.4-1 NrConjugacyClassesOfRCWAZOfOrder
> NrConjugacyClassesOfRCWAZOfOrder( ord )( function )

Computes the number of conjugacy classes of the whole group RCWA(Z) of elements of order ord.


gap> NrConjugacyClassesOfRCWAZOfOrder(2);
infinity
gap> NrConjugacyClassesOfRCWAZOfOrder(105);
218

5.5 Predefined rcwa groups

There are methods for constructing various types of groups as integral rcwa groups. They are just using the ad hoc-translation provided by IntegralRcwaGroupByPermGroup, for the matrix groups after turning to the image under IsomorphismPermGroup. So far, the provided methods cover all groups listed in the sections concerning basic groups and classical groups in the chapter describing the group libraries in the reference manual.



gap> C2 := CyclicGroup(IsIntegralRcwaGroup,2);
<integral rcwa group with 1 generator>
gap> G := ExtraspecialGroup(IsIntegralRcwaGroup,27,3);
<integral rcwa group with 3 generators>
gap> IsAbelian(G);
false
gap> Exponent(G);
3
gap> S4 := SymmetricGroup(IsIntegralRcwaGroup,4);
<integral rcwa group with 2 generators>
gap> Size(S4);
24
gap> G := SylowSubgroup(S4,2);
<integral rcwa group with 3 generators, of size 8>
gap> IdGroup(G);
[ 8, 3 ]
gap> A5 := AlternatingGroup(IsIntegralRcwaGroup,5);
<integral rcwa group with 2 generators>
gap> Size(A5);
60
gap> IsSimple(A5);
true
gap> G := GL(IsIntegralRcwaGroup,2,3);
<integral rcwa group with 2 generators>
gap> Size(G);
48


 




generated by GAPDoc2HTML