Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

610986 views
1
2
8 The Algorithms Implemented in RCWA
3
4
This chapter lists brief descriptions of the algorithms and methods
5
implemented in this package. These descriptions are kept very informal and
6
terse, and some of them provide only rudimentary information. They are
7
listed in alphabetical order. The word trivial as a description means that
8
essentially nothing is done except of performing I/O operations, storing or
9
recalling one or several values or doing very basic computations, and
10
straightforward means that no sophisticated algorithm is used. Note that
11
trivial and straightforward are to be read as mathematically trivial
12
respectively straightforward, and that the code of a function or method
13
attributed in this way can still be reasonably long and complicated. Longer
14
and better descriptions of some of the algorithms and methods can be found
15
in [Koh08].
16
17
 ActionOnRespectedPartition(G) 
18
Straightforward after having computed a respected partition by
19
RespectedPartition.
20
21
 AllElementsOfCTZWithGivenModulus(m) 
22
This function first determines a list of all unordered partitions
23
mathcalP of ℤ into m residue classes. Then for any such partition
24
mathcalP it runs a loop over the elements of the symmetric group of
25
degree m. For any σ ∈ S_m and any partition mathcalP it constructs the
26
element of CT(Z) with modulus dividing m which maps the ordered
27
partition {0(m), 1(m), dots, m-1(m)} to the ordered partition obtained
28
from mathcalP by permuting the residue classes with σ. Finally it
29
discards the elements whose modulus is a proper divisor of m, and
30
returns the rest.
31
32
 Ball(G,g,r) 
33
Straightforward.
34
35
 Ball(G,p,r,act) 
36
Straightforward.
37
38
 ClassPairs(m) 
39
Runs a loop over all 4-tuples of nonnegative integers less than m, and
40
filters by congruence criteria and ordering of the entries.
41
42
 ClassReflection(r,m) 
43
Trivial.
44
45
 ClassRotation(r,m,u) 
46
Trivial.
47
48
 ClassShift(r,m) 
49
Trivial.
50
51
 ClassTransposition(r1,m1,r2,m2) 
52
Trivial.
53
54
 ClassWiseOrderPreservingOn(f), etc. 
55
Forms the union of the residue classes modulo the modulus of f in
56
whose corresponding coefficient triple the first entry is positive,
57
zero or negative, respectively.
58
59
 Coefficients(f) 
60
Trivial.
61
62
 CommonRightInverse(l,r) 
63
See RightInverse.
64
65
 CT(R) 
66
Attributes and properties are set according to [Koh10].
67
68
 CycleRepresentativesAndLengths(g,S) 
69
Straightforward.
70
71
 CyclesOnFiniteOrbit(G,g,n) 
72
Straightforward.
73
74
 DecreasingOn(f) 
75
Forms the union of the residue classes which are determined by the
76
coefficients as indicated.
77
78
 DerivedSubgroup(G) 
79
No genuine method -- GAP Library methods already work for tame groups.
80
81
 Determinant(g) 
82
Evaluation of the given expression. For the mathematical meaning
83
(epimorphism!), see Theorem 2.11.9 in [Koh05].
84
85
 DifferencesList(l) 
86
Trivial.
87
88
 DirectProduct(G1,G2, ... ) 
89
Restricts the groups G1, G2, ... to disjoint residue classes. See
90
Restriction and Corollary 2.3.3 in [Koh05].
91
92
 Display(f) 
93
Trivial.
94
95
 DistanceToNextSmallerPointInOrbit(G,n) 
96
Straightforward -- computes balls of radius r about n for r = 1, 2,
97
dots until a point smaller than n is found.
98
99
 Divisor(f) 
100
Lcm of coefficients, as indicated.
101
102
 DrawGrid(U,range_y,range_x,filename) 
103
Straightforward.
104
105
 DrawOrbitPicture 
106
Compute spheres of radius 1, dots, r around the given point(s). Choose
107
the origin either in the lower left corner of the picture (if all
108
points lie in the first quadrant) or in the middle of the picture (if
109
they don't). Mark points of the ball with black pixels in case of a
110
monochrome picture. Choose colors from the given palette depending on
111
the distance from the starting points in case of a colored picture.
112
113
 EpimorphismFromFpGroup(G,r) 
114
Computes orders of elements in the ball of radius r about 1 in G, and
115
uses the corresponding relations if they affect the abelian invariants
116
of G, G', G'', etc..
117
118
 Exponent(G) 
119
Check whether G is finite. If it is, then use the GAP Library method,
120
applied to Image(IsomorphismPermGroup(G)). Check whether G is tame. If
121
yes, return infinity. If not, run a loop over G until finding an
122
element of infinite order. Once one is found, return infinity.
123
124
The final loop to find a non-torsion element can be left away under
125
the assumption that any finitely generated wild rcwa group has a wild
126
element. It looks likely that this holds, but currently the author
127
does not know a proof.
128
129
 ExtRepOfObj(f) 
130
Trivial.
131
132
 FactorizationIntoCSCRCT(g),   Factorization(g) 
133
The method used here is rather sophisticated, and will likely some
134
time be published elsewhere. At the moment termination is not
135
guaranteed, but in case of termination the result is certain. The
136
strategy is roughly first to make the mapping class-wise
137
order-preserving and balanced, and then to remove all prime factors
138
from multiplier and divisor one after the other in decreasing order by
139
dividing by appropriate class transpositions. The remaining integral
140
mapping can be factored in a similar way as a permutation of a finite
141
set can be factored into transpositions.
142
143
 FactorizationOnConnectedComponents(f,m) 
144
Calls GRAPE to get the connected components of the transition graph,
145
and then computes a partition of the suitably blown up coefficient
146
list corresponding to the connected components.
147
148
 FixedPointsOfAffinePartialMappings(f) 
149
Straightforward.
150
151
 FixedResidueClasses(g,maxmod),   FixedResidueClasses(G,maxmod) 
152
Runs a loop over all moduli m ≤ maxmod and all residues r modulo these
153
moduli, and selects those residue classes r(m) which are mapped to
154
itself by g, respectively, by all generators of G.
155
156
 FloatQuotientsList(l) 
157
Trivial.
158
159
 GluckTaylorInvariant(a) 
160
Evaluation of the given expression.
161
162
 GroupByResidueClasses(classes) 
163
Finds all pairs of residue classes in the list classes which are
164
disjoint, forms the corresponding class transpositions and returns the
165
group generated by them.
166
167
 GuessedDivergence(f) 
168
Numerical computation of the limit of some series, which seems to
169
converge often. Caution!!!
170
171
 Image(f),   Image(f,S) 
172
Straightforward if one can compute images of residue classes under
173
affine mappings and unite and intersect residue classes (Chinese
174
Remainder Theorem). See Lemma 1.2.1 in [Koh05].
175
176
 ImageDensity(f) 
177
Evaluation of the given expression.
178
179
 g in G (membership test for rcwa groups) 
180
Test whether the mapping g or its inverse is in the list of generators
181
of G. If it is, return true. Test whether its prime set is a subset of
182
the prime set of G. If not, return false. Test whether the multiplier
183
or the divisor of g has a prime factor which does not divide the
184
multiplier of G. If yes, return false. Test if G is class-wise
185
order-preserving, and g is not. If so, return false. Test if the sign
186
of g is -1 and all generators of G have sign 1. If yes, return false.
187
Test if G is class-wise order-preserving, all generators of G have
188
determinant 0 and g has determinant ≠ 0. If yes, return false. Test
189
whether the support of g is a subset of the support of G. If not,
190
return false. Test whether G fixes the nonnegative integers setwise,
191
but g does not. If yes, return false.
192
193
If G is tame, proceed as follows: Test whether the modulus of g
194
divides the modulus of G. If not, return false. Test whether G is
195
finite and g has infinite order. If so, return false. Test whether g
196
is tame. If not, return false. Compute a respected partition P of G
197
and the finite permutation group H induced by G on it (see
198
RespectedPartition). Check whether g permutes P. If not, return false.
199
Let h be the permutation induced by g on P. Check whether h lies in H.
200
If not, return false. Compute an element g1 of G which acts on P
201
like g. For this purpose, factor h into generators of H using
202
PreImagesRepresentative, and compute the corresponding product of
203
generators of G. Let k := g/g1. The mapping k is always integral.
204
Compute the kernel K of the action of G on P using
205
KernelOfActionOnRespectedPartition. Check whether k lies in K. This is
206
done using the package Polycyclic [EHN13], and uses an isomorphism
207
from a supergroup of  K which is isomorphic to the |P|-fold direct
208
product of the infinite dihedral group and which always contains k to
209
a polycyclically presented group. If k lies in K, return true,
210
otherwise return false.
211
212
If G is not tame, proceed as follows: Look for finite orbits of G. If
213
some are found, test whether g acts on them, and whether the induced
214
permutations lie in the permutation groups induced by G. If for one of
215
the examined orbits one of the latter two questions has a negative
216
answer, then return false. Look for a positive integer m such that g
217
does not leave a partition of ℤ into unions of residue classes (mod m)
218
invariant which is fixed by G. If successful, return false. If not,
219
try to factor g into generators of G using PreImagesRepresentative. If
220
successful, return true. If g is in G, this terminates after a finite
221
number of steps. Both run time and memory requirements are exponential
222
in the word length. If g is not in G at this stage, the method runs
223
into an infinite loop.
224
225
 f in M (membership test for rcwa monoids) 
226
Test whether the mapping f is in the list of generators of G. If it
227
is, return true. Test whether the multiplier of f is zero, but all
228
generators of M have nonzero multiplier. If yes, return false. Test if
229
neither f nor any generator of M has multiplier zero. If so, check
230
whether the prime set of f is a subset of the prime set of M, and
231
whether the set of prime factors of the multiplier of f is a subset of
232
the union of the sets of prime factors of the multipliers of the
233
generators of M. If one of these is not the case, return false. Check
234
whether the set of prime factors of the divisor of f is a subset of
235
the union of the sets of prime factors of the divisors of the
236
generators of M. If not, return false. If the underlying ring is ℤ or
237
a semilocalization thereof, then check whether f is not class-wise
238
order-preserving, but M is. If so, return false.
239
240
If f is not injective, but all generators of M are, then return false.
241
If f is not surjective, but all generators of M are, then return
242
false. If the support of f is not a subset of the support of M, then
243
return false. If f is not sign-preserving, but M is, then return
244
false. Check whether M is tame. If so, then return false provided that
245
one of the following three conditions hold: 1. The modulus of f does
246
not divide the modulus of M. 2. f is not tame. 3. M is finite, and f
247
is bijective and has infinite order. If membership has still not been
248
decided, use ShortOrbits to look for finite orbits of M, and check
249
whether f fixes all of them setwise. If a finite orbit is found which
250
f does not map to itself, then return false.
251
252
Finally compute balls of increasing radius around 1 until f is found
253
to lie in one of them. If that happens, return true. If f is an
254
element of M, this will eventually terminate, but if at this stage f
255
is not an element of M, this will run into an infinite loop.
256
257
 point in orbit (membership test for orbits) 
258
Uses the equality test for orbits: The orbit equality test computes
259
balls of increasing radius around the orbit representatives until they
260
intersect non-trivially. Once they do so, it returns true. If it finds
261
that one or both of the orbits are finite, it makes use of that
262
information, and returns false if appropriate. In between, i.e. after
263
having computed balls to a certain extent depending on the properties
264
of the group, it chooses a suitable modulus m and computes orbits
265
(modulo m). If the representatives of the orbits to be compared belong
266
to different orbits (mod m), it returns false. If this is not the case
267
although the orbits are different, the equality test runs into an
268
infinite loop.
269
270
 IncreasingOn(f) 
271
Forms the union of the residue classes which are determined by the
272
coefficients as indicated.
273
274
 Index(G,H) 
275
In general, i.e. if the underlying ring is not ℤ, proceed as follows:
276
If both groups G and H are finite, return the quotient of their
277
orders. If G is infinite, but H is finite, return infinity. Otherwise
278
return the number of right cosets of H in G, computed by the GAP
279
Library function RightCosets.
280
281
If the underlying ring is ℤ, do additionally the following before
282
attempting to compute the list of right cosets: If the group G is
283
class-wise order-preserving, check whether one of its generators has
284
nonzero determinant, and whether all generators of H have
285
determinant zero. If so, then return infinity. Check whether H is
286
tame, but G is not. If so, then return infinity. If G is tame, then
287
check whether the rank of the largest free abelian subgroup of the
288
kernel of the action of G on a respected partition is higher than the
289
corresponding rank for H. For this check, use
290
RankOfKernelOfActionOnRespectedPartition. If it is, then return
291
infinity.
292
293
 Induction(g,f) 
294
Computes f * g * RightInverse(f).
295
296
 Induction(G,f) 
297
Gets a set of generators by applying Induction(g,f) to the generators
298
g of G.
299
300
 InjectiveAsMappingFrom(f) 
301
The function starts with the entire source of f as preimage pre and
302
the empty set as image im. It loops over the residue classes
303
(mod Mod(f)). For any such residue class cl the following is done:
304
Firstly, the image of cl under f is added to im. Secondly, the
305
intersection of the preimage of the intersection of the image of cl
306
under f and im under f and cl is subtracted from pre.
307
308
 IntegralConjugate(f),   IntegralConjugate(G) 
309
Uses the algorithm described in the proof of Theorem 2.5.14
310
in [Koh05].
311
312
 IntegralizingConjugator(f),   IntegralizingConjugator(G) 
313
Uses the algorithm described in the proof of Theorem 2.5.14
314
in [Koh05].
315
316
 Inverse(f) 
317
Essentially inversion of affine mappings. See Lemma 1.3.1, Part (b)
318
in [Koh05].
319
320
 IsBalanced(f) 
321
Checks whether the sets of prime factors of the multiplier and the
322
divisor of f are the same.
323
324
 IsBijective(f) 
325
Trivial, respectively, see IsInjective and IsSurjective.
326
327
 IsClassReflection(g) 
328
Computes the support of g, and compares g with the corresponding class
329
reflection.
330
331
 IsClassRotation(g) 
332
Computes the support of g, extracts the possible rotation factor from
333
the coefficients and compares g with the corresponding class rotation.
334
335
 IsClassShift(g) 
336
Computes the support of g, and compares g with the corresponding class
337
shift.
338
339
 IsClassTransposition(g),   IsGeneralizedClassTransposition(g) 
340
Computes the support of g, writes it as a disjoint union of two
341
residue classes and compares g with the class transposition which
342
interchanges them.
343
344
 IsClassWiseOrderPreserving(f),   IsClassWiseTranslating(f) 
345
Trivial.
346
347
 IsConjugate(RCWA(Integers),f,g) 
348
Test whether f and g have the same order, and whether either both or
349
none of them is tame. If not, return false.
350
351
If the mappings are wild, use ShortCycles to search for finite cycles
352
not belonging to an infinite series, until their numbers for a
353
particular length differ. This may run into an infinite loop. If it
354
terminates, return false.
355
356
If the mappings are tame, use the method described in the proof of
357
Theorem 2.5.14 in [Koh05] to construct integral conjugates of f and g.
358
Then essentially use the algorithm described in the proof of
359
Theorem 2.6.7 in [Koh05] to compute standard representatives of the
360
conjugacy classes which the integral conjugates of f and g belong to.
361
Finally compare these standard representatives, and return true if
362
they are equal and false if not.
363
364
 IsInjective(f) 
365
See Image.
366
367
 IsIntegral(f) 
368
Trivial.
369
370
 IsNaturalCT(G),   IsNaturalRCWA(G) 
371
Only checks a set flag.
372
373
 IsomorphismMatrixGroup(G) 
374
Uses the algorithm described in the proof of Theorem 2.6.3 in [Koh05].
375
376
 IsomorphismPermGroup(G) 
377
If the group G is finite and class-wise order-preserving, use
378
ActionOnRespectedPartition. If G is finite, but not class-wise
379
order-preserving, compute the action on the respected partition which
380
is obtained by splitting any residue class r(m) in
381
RespectedPartition(G) into three residue classes r(3m), r+m(3m),
382
r+2m(3m). If G is infinite, there is no isomorphism to a finite
383
permutation group, thus return fail.
384
385
 IsomorphismRcwaGroup(G) 
386
The method for finite groups uses RcwaMapping, Part (d).
387
388
The method for free products of finite groups uses the Table-Tennis
389
Lemma (which is also known as Ping-Pong Lemma, cf. e.g. Section II.B.
390
in [dlH00]). It uses regular permutation representations of the
391
factors G_r (r = 0, dots ,m-1) of the free product on residue classes
392
modulo n_r := |G_r|. The basic idea is that since point stabilizers in
393
regular permutation groups are trivial, all non-identity elements map
394
any of the permuted residue classes into their complements. To get
395
into a situation where the Table-Tennis Lemma is applicable, the
396
method computes conjugates of the images of the mentioned permutation
397
representations under rcwa permutations σ_r which satisfy 0(n_r)^σ_r =
398
ℤ ∖ r(m).
399
400
The method for free groups uses an adaptation of the construction
401
given on page 27 in [dlH00] from PSL(2,ℂ) to RCWA(ℤ). As an equivalent
402
for the closed discs used there, the method takes the residue classes
403
modulo two times the rank of the free group.
404
405
 IsOne(f) 
406
Trivial.
407
408
 IsPerfect(G) 
409
If the group G is trivial, then return true. Otherwise if it is
410
abelian, then return false.
411
412
If the underlying ring is ℤ, then do the following: If one of the
413
generators of G has sign -1, then return false. If G is class-wise
414
order-preserving and one of the generators has nonzero determinant,
415
then return false.
416
417
If G is wild, and perfectness has not been decided so far, then give
418
up. If G is finite, then check the image of IsomorphismPermGroup(G)
419
for perfectness, and return true or false accordingly.
420
421
If the group G is tame and if it acts transitively on its stored
422
respected partition, then return true or false depending on whether
423
the finite permutation group ActionOnRespectedPartition(G) is perfect
424
or not. If G does not act transitively on its stored respected
425
partition, then give up.
426
427
 IsPrimeSwitch(g) 
428
Checks whether the multiplier of g is an odd prime, and compares g
429
with the corresponding prime switch.
430
431
 IsSignPreserving(f) 
432
If f is not class-wise order-preserving, then return false. Otherwise
433
let c ≥ 1 be greater than or equal to the maximum of the absolute
434
values of the coefficients b_r(m) of the affine partial mappings of f,
435
and check whether the minimum of the image of {0, dots, c} under f is
436
nonnegative and whether the maximum of the image of {-c, dots, -1}
437
under f is negative. If both is the case, then return true, otherwise
438
return false.
439
440
 IsSolvable(G) 
441
If G is abelian, then return true. If G is tame, then return true or
442
false depending on whether ActionOnRespectedPartition(G) is solvable
443
or not. If G is wild, then give up.
444
445
 IsSubset(G,H) (checking for a subgroup relation) 
446
Check whether the set of stored generators of H is a subset of the set
447
of stored generators of G. If so, return true. Check whether the prime
448
set of H is a subset of the prime set of G. If not, return false.
449
Check whether the support of H is a subset of the support of G. If
450
not, return false. Check whether G is tame, but H is wild. If so,
451
return false.
452
453
If G and H are both tame, then proceed as follows: If the multiplier
454
of H does not divide the multiplier of G, then return false. If H does
455
not respect the stored respected partition of G, then return false.
456
Check whether the finite permutation group induced by H on
457
RespectedPartition(G) is a subgroup of ActionOnRespectedPartition(G).
458
If yes, return true. Check whether the order of H is greater than the
459
order of G. If so, return false.
460
461
Finally use the membership test to check whether all generators of H
462
lie in G, and return true or false accordingly.
463
464
 IsSurjective(f) 
465
See Image.
466
467
 IsTame(G) 
468
Checks whether the modulus of the group is nonzero.
469
470
 IsTame(f) 
471
Application of the criteria given in Corollary 2.5.10 and 2.5.12 and
472
Theorem A.8 and A.11 in [Koh05], as well as of the criteria given
473
in [Koh07a]. The criterion surjective, but not injective means wild
474
(Theorem A.8 in [Koh05]) is the subject of [Koh07b]. The package GRAPE
475
is needed for the application of the criterion which says that an rcwa
476
permutation is wild if a transition graph has a weakly-connected
477
component which is not strongly-connected (cf. Theorem A.11
478
in [Koh05]).
479
480
 IsTransitive(G,Integers) 
481
Look for finite orbits, using ShortOrbits on a couple of intervals. If
482
a finite orbit is found, return false. Test if G is finite. If yes,
483
return false.
484
485
Search for an element g and a residue class r(m) such that the
486
restriction of g to r(m) is given by n ↦ n + m. Then the cyclic group
487
generated by g acts transitively on r(m). The element g is searched
488
among the generators of G, its powers, its commutators, powers of its
489
commutators and products of few different generators. The search for
490
such an element may run into an infinite loop, as there is no
491
guarantee that the group has a suitable element.
492
493
If suitable g and r(m) are found, proceed as follows:
494
495
Put S := r(m). Put S := S ∪ S^g for all generators g of G, and repeat
496
this until S remains constant. This may run into an infinite loop.
497
498
If it terminates: If S = ℤ, return true, otherwise return false.
499
500
 IsTransitiveOnNonnegativeIntegersInSupport(G) 
501
Computes balls about 1 with successively increasing radii, and checks
502
whether the union of the sets where the elements of these balls are
503
decreasing or shifting down equals the support of G. If a positive
504
answer is found, transitivity on small points (nonnegative integers
505
less than an explicit bound) is verified.
506
507
 IsZero(f) 
508
Trivial.
509
510
 KernelOfActionOnRespectedPartition(G) 
511
First determine the abelian invariants of the kernel K. For this,
512
compute sufficiently many quotients of orders of permutation groups
513
induced by G on refinements of the stored respected partition P by the
514
order of the permutation group induced by G on P itself. Then use a
515
random walk through the group G. Compute powers of elements
516
encountered along the way which fix P. Translate these kernel elements
517
into elements of a polycyclically presented group isomorphic to the
518
|P|-fold direct product of the infinite dihedral group (K certainly
519
embeds into this group). Use Polycyclic [EHN13] to collect independent
520
nice generators of K. Proceed until the permutation groups induced
521
by K on the refined respected partitions all equal the initially
522
stored quotients.
523
524
 LargestSourcesOfAffineMappings(f) 
525
Forms unions of residue classes modulo the modulus of the mapping,
526
whose corresponding coefficient triples are equal.
527
528
 LaTeXStringRcwaMapping(f),   LaTeXAndXDVI(f) 
529
Collects residue classes those corresponding coefficient triples are
530
equal.
531
532
 LikelyContractionCentre(f,maxn,bound) 
533
Computes trajectories with starting values from a given interval,
534
until a cycle is reached. Aborts if the trajectory exceeds the
535
prescribed bound. Form the union of the detected cycles.
536
537
 LoadDatabaseOf...(),   LoadRCWAExamples() 
538
Trivial. -- These functions do nothing more than reading in certain
539
files.
540
541
 LocalizedRcwaMapping(f,p) 
542
Trivial.
543
544
 Log2HTML(logfilename) 
545
Straightforward string operations.
546
547
 Loops(f) 
548
Runs over the residue classes modulo the modulus of f, and selects
549
those of them which f does not map to themselves, but which intersect
550
non-trivially with their images under f.
551
552
 MaximalShift(f) 
553
Trivial.
554
555
 MergerExtension(G,points,point) 
556
As described in MergerExtension (3.1-4).
557
558
 Mirrored(g),   Mirrored(G) 
559
Conjugates with n ↦ -n - 1, as indicated in the definition.
560
561
 mKnot(m) 
562
Straightforward, following the definition given in [Kel99].
563
564
 Modulus(G) 
565
Searches for a wild element in the group. If unsuccessful, tries to
566
construct a respected partition (see RespectedPartition).
567
568
 Modulus(f) 
569
Trivial.
570
571
 MovedPoints(G) 
572
Needs only forming unions of residue classes and determining fixed
573
points of affine mappings.
574
575
 Multiplier(f) 
576
Lcm of coefficients, as indicated.
577
578
 Multpk(f,p,k) 
579
Forms the union of the residue classes modulo the modulus of the
580
mapping, which are determined by the given divisibility criteria for
581
the coefficients of the corresponding affine mapping.
582
583
 NrClassPairs(m) 
584
Relatively straightforward. -- Practical for values of m ranging up
585
into the hundreds and corresponding counts of $10^9$ and more.
586
587
 NrConjugacyClassesOfCTZOfOrder(ord), 
588
Evaluation of the expression
589
Length(Filtered(Combinations(DivisorsInt(ord)), l -> l <> [] and
590
Lcm(l) = ord)).
591
592
 NrConjugacyClassesOfRCWAZOfOrder(ord) 
593
The class numbers are taken from Corollary 2.7.1 in [Koh05].
594
595
 ObjByExtRep(fam,l) 
596
Trivial.
597
598
 One(f),   One(G), 
599
Trivial.
600
601
 Orbit(G,pnt,gens,acts,act) 
602
Check if the orbit has length less than a certain bound. If so, then
603
return it as a list. Otherwise test whether the group G is tame or
604
wild.
605
606
If G is tame, then test whether G is finite. If yes, then compute the
607
orbit by the GAP Library method. Otherwise proceed as follows: Compute
608
a respected partition mathcalP of G. Use mathcalP to find a residue
609
class r(m) which is a subset of the orbit to be computed. In general,
610
r(m) will not be one of the residue classes in mathcalP, but a subset
611
of one of them. Put Ω := r(m). Unite the set Ω with its images under
612
all the generators of G and their inverses. Repeat that until Ω does
613
not change any more. Return Ω.
614
615
If G is wild, then return an orbit object which stores the group G,
616
the representative rep and the action act.
617
618
 OrbitsModulo(f,m) 
619
Uses GRAPE to compute the connected components of the transition
620
graph.
621
622
 OrbitsModulo(G,m) 
623
Straightforward.
624
625
 Order(f) 
626
Test for IsTame. If the mapping is not tame, then return infinity.
627
Otherwise use Corollary 2.5.10 in [Koh05].
628
629
 PermutationOpNC(sigma,P,act) 
630
Several different methods for different types of arguments, which
631
either provide straightforward optimizations via computing with
632
coefficients directly, or just delegate to PermutationOp.
633
634
 PreImage(f,S) 
635
See Image.
636
637
 PreImagesRepresentative(phi,g),   PreImagesRepresentatives(phi,g) 
638
As described in the documentation of these methods. The underlying
639
idea to successively compute two balls around 1 and g until they
640
intersect non-trivially is standard in computational group theory. For
641
rcwa groups it would mean wasting both memory and run time to actually
642
compute group elements. Thus only images of tuples of points are
643
computed and stored.
644
645
 PrimeSet(f),   PrimeSet(G) 
646
Straightforward.
647
648
 PrimeSwitch(p) 
649
Multiplication of rcwa mappings as indicated.
650
651
 Print(f) 
652
Trivial.
653
654
 f*g 
655
Essentially composition of affine mappings. See Lemma 1.3.1, Part (a)
656
in [Koh05].
657
658
 ProjectionsToCoordinates(f) 
659
Straightforward coefficient operations.
660
661
 ProjectionsToInvariantUnionsOfResidueClasses(G,m) 
662
Use OrbitsModulo to determine the supports of the images of the
663
epimorphisms to be determined, and use RestrictedPerm to compute the
664
images of the generators of G under these epimorphisms.
665
666
 QuotientsList(l) 
667
Trivial.
668
669
 Random(RCWA(Integers)) 
670
Computes a product of randomly chosen class shifts, class reflections
671
and class transpositions. This seems to be suitable for generating
672
reasonably good examples.
673
674
 RankOfKernelOfActionOnRespectedPartition(G) 
675
Performs the first part of the computations done by
676
KernelOfActionOnRespectedPartition.
677
678
 Rcwa(R) 
679
Trivial. -- Attributes and properties set can be derived easily or
680
hold by definition.
681
682
 RCWA(R) 
683
Attributes and properties are set according to Theorem 2.1.1,
684
Theorem 2.1.2, Corollary 2.1.6 and Theorem 2.12.8 in [Koh05].
685
686
 RCWABuildManual() 
687
Consists of a call to a function from the GAPDoc package.
688
689
 RcwaGroupByPermGroup(G) 
690
Uses RcwaMapping, Part (d).
691
692
 RCWAInfo(n) 
693
Trivial.
694
695
 RcwaMapping 
696
(a)-(c): trivial, (d): n^perm - n for determining the coefficients,
697
(e): affine mappings by values at two given points, (f) and (g):
698
trivial, (h) and (i): correspond to Lemma 2.1.4 in [Koh05], (j): uses
699
a simple parser for the permitted expressions.
700
701
 RCWATestAll(),   RCWATestInstall() 
702
Just read in files running / containing the tests.
703
704
 RCWATestExamples() 
705
Runs the example tester from the GAPDoc package.
706
707
 RepresentativeAction(G,src,dest,act),   RepresentativeActionPreImage 
708
As described in the documentation of these methods. The underlying
709
idea to successively compute two balls around src and dest until they
710
intersect non-trivially is standard in computational group theory.
711
Words standing for products of generators of G are stored for every
712
image of src or dest.
713
714
 RepresentativeAction(RCWA(Integers),P1,P2) 
715
Arbitrary mapping: see Lemma 2.1.4 in [Koh05]. Tame mapping: see proof
716
of Theorem 2.8.9 in [Koh05]. The former is almost trivial, while the
717
latter is a bit complicated and takes usually also much more time.
718
719
 RepresentativeAction(RCWA(Integers),f,g) 
720
The algorithm used by IsConjugate constructs actually also an element
721
x such that f^x = g.
722
723
 RespectedPartition(f),   RespectedPartition(G) 
724
There are presently two sophisticated algorithms implemented for
725
finding respected partitions. One of them has evolved from the
726
algorithm described in the proof of Theorem 2.5.8 in [Koh05]. The
727
other one starts with the coarsest partition of the base ring such
728
that every generator of G is affine on every part. This partition is
729
then refined successively until a respected partition is obtained. The
730
refinement step is basically as follows: Take the images of the
731
partition under all generators of G. This way one obtains as many
732
further partitions of the base ring as there are generators of G. Then
733
the new partition is the coarsest common refinement of all these
734
partitions.
735
736
 RespectsPartition(G,P) 
737
Straightforward.
738
739
 RestrictedBall(G,g,r,modulusbound) 
740
Straightforward.
741
742
 RestrictedPerm(g,S) 
743
Straightforward.
744
745
 Restriction(g,f) 
746
Computes the action of RightInverse(f) * g * f on the image of f.
747
748
 Restriction(G,f) 
749
Gets a set of generators by applying Restriction(g,f) to the
750
generators g of G.
751
752
 RightInverse(f) 
753
Straightforward if one knows how to compute images of residue classes
754
under affine mappings, and how to compute inverses of affine mappings.
755
756
 Root(f,k) 
757
If f is bijective, class-wise order-preserving and has finite order:
758
759
Find a conjugate of f which is a product of class transpositions.
760
Slice cycles ∏_i=2^l τ_r_1(m_1),r_i(m_i) of f a respected partition
761
mathcalP into cycles ∏_i=1^l ∏_j=0^k-1 τ_r_1(km_1),r_i+jm_i(km_i) of
762
the k-fold length on the refined partition which one gets from
763
mathcalP by decomposing any r_i(m_i) ∈ mathcalP into residue classes
764
(mod km_i). Finally conjugate the resulting permutation back.
765
766
Other cases seem to be more difficult and are currently not covered.
767
768
 RotationFactor(g) 
769
Trivial.
770
771
 RunDemonstration(filename) 
772
Trivial -- only I/O operations.
773
774
 SemilocalizedRcwaMapping(f,pi) 
775
Trivial.
776
777
 ShiftsDownOn(f),   ShiftsUpOn(f) 
778
Straightforward coefficient- and residue class operations.
779
780
 ShortCycles(g,maxlng) 
781
Looks for fixed points of affine partial mappings of powers of g.
782
783
 ShortCycles(g,S,maxlng),   ShortCycles(g,S,maxlng,maxn) 
784
Straightforward.
785
786
 ShortOrbits(G,S,maxlng),   ShortOrbits(G,S,maxlng,maxn) 
787
Straightforward.
788
789
 ShortResidueClassCycles(g,modulusbound,maxlng) 
790
Different methods -- see source code in pkg/rcwa/lib/rcwamap.gi.
791
792
 ShortResidueClassOrbits(g,modulusbound,maxlng) 
793
Different methods -- see source code in pkg/rcwa/lib/rcwagrp.gi.
794
795
 Sign(g) 
796
Evaluation of the given expression. For the mathematical meaning
797
(epimorphism!), see Theorem 2.12.8 in [Koh05].
798
799
 Sinks(f) 
800
Computes the strongly connected components of the transition graph by
801
the function STRONGLY_CONNECTED_COMPONENTS_DIGRAPH, and selects those
802
which are proper subsets of their preimages and proper supersets of
803
their images under f.
804
805
 Size(G) (order of an rcwa group) 
806
Test whether one of the generators of the group G has infinite order.
807
If so, return infinity. Test whether the group G is tame. If not,
808
return infinity. Test whether
809
RankOfKernelOfActionOnRespectedPartition(G) is nonzero. If so, return
810
infinity. Otherwise if G is class-wise order-preserving, return the
811
size of the permutation group induced on the stored respected
812
partition. If G is not class-wise order-preserving, return the size of
813
the permutation group induced on the refinement of the stored
814
respected partition which is obtained by splitting each residue class
815
into three residue classes with equal moduli.
816
817
 Size(M) (order of an rcwa monoid) 
818
Check whether M is in fact an rcwa group. If so, use the method for
819
rcwa groups instead. Check whether one of the generators of M is
820
surjective, but not injective. If so, return infinity. Check whether
821
for all generators f of M, the image of the union of the loops of f
822
under f is finite. If not, return infinity. Check whether one of the
823
generators of M is bijective and has infinite order. If so, return
824
infinity. Check whether one of the generators of M is wild. If so,
825
return infinity. Apply the above criteria to the elements of the ball
826
of radius 2 around 1, and return infinity if appropriate. Finally
827
attempt to compute the list of elements of M. If this is successful,
828
return the length of the resulting list.
829
830
 SmallGeneratingSet(G) 
831
Eliminates generators g which can be found to be redundant easily,
832
i.e. by checking whether the balls about 1 and g of some small radius
833
r in the group generated by all generators of G except for g intersect
834
nontrivially.
835
836
 Sources(f) 
837
Computes the strongly connected components of the transition graph by
838
the function STRONGLY_CONNECTED_COMPONENTS_DIGRAPH, and selects those
839
which are proper supersets of their preimages and proper subsets of
840
their images under f.
841
842
 SparseRep(f),   StandardRep(f) 
843
Straightforward coefficient operations.
844
845
 SplittedClassTransposition(ct,k) 
846
Straightforward.
847
848
 StructureDescription(G) 
849
This method uses a combination of techniques to obtain some basic
850
information on the structure of an rcwa group. The returned
851
description reflects the way the group has been built (DirectProduct,
852
WreathProduct, etc.).
853
854
 f+g 
855
Pointwise addition of affine mappings.
856
857
 String(obj) 
858
Trivial.
859
860
 Support(G) 
861
Straightforward.
862
863
 Trajectory(f,n,...) 
864
Iterated application of an rcwa mapping. In the methods computing
865
accumulated coefficients, additionally composition of affine mappings.
866
867
 TransitionGraph(f,m) 
868
Straightforward -- just check a sufficiently long interval.
869
870
 TransitionMatrix(f,m) 
871
Evaluation of the given expression.
872
873
 TransposedClasses(g) 
874
Trivial.
875
876
 View(f) 
877
Trivial.
878
879
 WreathProduct(G,P) 
880
Uses DirectProduct to embed the NrMovedPoints(P)th direct power of G,
881
and RcwaMapping, Part (d) to embed the finite permutation group P.
882
883
 WreathProduct(G,Z) 
884
Restricts G to the residue class 3(4), and encodes the generator of Z
885
as τ_0(2),1(2) ⋅ τ_0(2),1(4). It is used that the images of 3(4) under
886
powers of this mapping are pairwise disjoint residue classes.
887
888
 Zero(f) 
889
Trivial.
890
891
892