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

610956 views
1
<!-- #################################################################### -->
2
<!-- ## ## -->
3
<!-- ## algs.xml RCWA documentation Stefan Kohl ## -->
4
<!-- ## ## -->
5
<!-- #################################################################### -->
6
7
<Chapter Label="ch:algorithms">
8
<Heading>The Algorithms Implemented in RCWA</Heading>
9
10
This chapter lists brief descriptions of the algorithms and methods
11
implemented in this package. These descriptions are kept very informal and
12
terse, and some of them provide only rudimentary information. They are listed
13
in alphabetical order. The word <Q>trivial</Q> as a description means that
14
essentially nothing is done except of performing I/O operations, storing or
15
recalling one or several values or doing very basic computations, and
16
<Q>straightforward</Q> means that no sophisticated algorithm is used.
17
Note that <Q>trivial</Q> and <Q>straightforward</Q> are to be read
18
as <E>mathematically</E> trivial respectively straightforward, and that the
19
code of a function or method attributed in this way can still be reasonably
20
long and complicated. Longer and better descriptions of <E>some</E> of the
21
algorithms and methods can be found in&nbsp;<Cite Key="Kohl08b"/>.
22
23
<List>
24
25
<Mark>
26
<C>ActionOnRespectedPartition(<A>G</A>)</C>
27
</Mark>
28
<Item>
29
<Q>Straightforward</Q> after having computed a respected partition
30
by <C>RespectedPartition</C>.
31
</Item>
32
33
<Mark>
34
<C>AllElementsOfCTZWithGivenModulus(<A>m</A>)</C>
35
</Mark>
36
<Item>
37
This function first determines a list of all unordered partitions
38
<M>\mathcal{P}</M> of &ZZ; into <A>m</A> residue classes.
39
Then for any such partition <M>\mathcal{P}</M> it runs a loop
40
over the elements of the symmetric group of degree <A>m</A>.
41
For any <M>\sigma \in {\rm S}_m</M> and any partition <M>\mathcal{P}</M>
42
it constructs the element of <M>{\rm CT}(\mathbb{Z})</M> with modulus
43
dividing <M>m</M> which maps the ordered partition <M>\{0(m), 1(m),
44
\dots, m-1(m)\}</M> to the ordered partition obtained from
45
<M>\mathcal{P}</M> by permuting the residue classes with <M>\sigma</M>.
46
Finally it discards the elements whose modulus is a proper divisor
47
of <A>m</A>, and returns the <Q>rest</Q>.
48
</Item>
49
50
<Mark>
51
<C>Ball(<A>G</A>,<A>g</A>,<A>r</A>)</C>
52
</Mark>
53
<Item>
54
<Q>Straightforward</Q>.
55
</Item>
56
57
<Mark>
58
<C>Ball(<A>G</A>,<A>p</A>,<A>r</A>,<A>act</A>)</C>
59
</Mark>
60
<Item>
61
<Q>Straightforward</Q>.
62
</Item>
63
64
<Mark>
65
<C>ClassPairs(<A>m</A>)</C>
66
</Mark>
67
<Item>
68
Runs a loop over all 4-tuples of nonnegative integers less than <A>m</A>,
69
and filters by congruence criteria and ordering of the entries.
70
</Item>
71
72
<Mark>
73
<C>ClassReflection(<A>r</A>,<A>m</A>)</C>
74
</Mark>
75
<Item>
76
<Q>Trivial</Q>.
77
</Item>
78
79
<Mark>
80
<C>ClassRotation(<A>r</A>,<A>m</A>,<A>u</A>)</C>
81
</Mark>
82
<Item>
83
<Q>Trivial</Q>.
84
</Item>
85
86
<Mark>
87
<C>ClassShift(<A>r</A>,<A>m</A>)</C>
88
</Mark>
89
<Item>
90
<Q>Trivial</Q>.
91
</Item>
92
93
<Mark>
94
<C>ClassTransposition(<A>r1</A>,<A>m1</A>,<A>r2</A>,<A>m2</A>)</C>
95
</Mark>
96
<Item>
97
<Q>Trivial</Q>.
98
</Item>
99
100
<Mark>
101
<C>ClassWiseOrderPreservingOn(<A>f</A>)</C>, etc.
102
</Mark>
103
<Item>
104
Forms the union of the residue classes modulo the modulus
105
of&nbsp;<A>f</A> in whose corresponding coefficient triple
106
the first entry is positive, zero or negative, respectively.
107
</Item>
108
109
<Mark>
110
<C>Coefficients(<A>f</A>)</C>
111
</Mark>
112
<Item>
113
<Q>Trivial</Q>.
114
</Item>
115
116
<Mark>
117
<C>CommonRightInverse(<A>l</A>,<A>r</A>)</C>
118
</Mark>
119
<Item>
120
See <C>RightInverse</C>.
121
</Item>
122
123
<Mark>
124
<C>CT(<A>R</A>)</C>
125
</Mark>
126
<Item>
127
Attributes and properties are set according
128
to&nbsp;<Cite Key="Kohl09"/>.
129
</Item>
130
131
<Mark>
132
<C>CycleRepresentativesAndLengths(<A>g</A>,<A>S</A>)</C>
133
</Mark>
134
<Item>
135
<Q>Straightforward</Q>.
136
</Item>
137
138
<Mark>
139
<C>CyclesOnFiniteOrbit(<A>G</A>,<A>g</A>,<A>n</A>)</C>
140
</Mark>
141
<Item>
142
<Q>Straightforward</Q>.
143
</Item>
144
145
<Mark>
146
<C>DecreasingOn(<A>f</A>)</C>
147
</Mark>
148
<Item>
149
Forms the union of the residue classes which are determined by the
150
coefficients as indicated.
151
</Item>
152
153
<Mark>
154
<C>DerivedSubgroup(<A>G</A>)</C>
155
</Mark>
156
<Item>
157
No genuine method -- &GAP; Library methods already work for tame groups.
158
</Item>
159
160
<Mark>
161
<C>Determinant(<A>g</A>)</C>
162
</Mark>
163
<Item>
164
Evaluation of the given expression.
165
For the mathematical meaning (epimorphism!), see Theorem&nbsp;2.11.9
166
in&nbsp;<Cite Key="Kohl05"/>.
167
</Item>
168
169
<Mark>
170
<C>DifferencesList(<A>l</A>)</C>
171
</Mark>
172
<Item>
173
<Q>Trivial</Q>.
174
</Item>
175
176
<Mark>
177
<C>DirectProduct(<A>G1</A>,<A>G2</A>, ... )</C>
178
</Mark>
179
<Item>
180
Restricts the groups <A>G1</A>, <A>G2</A>, ...
181
to disjoint residue classes. See <C>Restriction</C>
182
and Corollary&nbsp;2.3.3 in&nbsp;<Cite Key="Kohl05"/>.
183
</Item>
184
185
<Mark>
186
<C>Display(<A>f</A>)</C>
187
</Mark>
188
<Item>
189
<Q>Trivial</Q>.
190
</Item>
191
192
<Mark>
193
<C>DistanceToNextSmallerPointInOrbit(<A>G</A>,<A>n</A>)</C>
194
</Mark>
195
<Item>
196
<Q>Straightforward</Q> -- computes balls of radius <M>r</M>
197
about <A>n</A> for <M>r = 1, 2, \dots</M> until a point smaller
198
than <M>n</M> is found.
199
</Item>
200
201
<Mark>
202
<C>Divisor(<A>f</A>)</C>
203
</Mark>
204
<Item>
205
Lcm of coefficients, as indicated.
206
</Item>
207
208
<Mark>
209
<C>DrawGrid(<A>U</A>,<A>range_y</A>,<A>range_x</A>,<A>filename</A>)</C>
210
</Mark>
211
<Item>
212
<Q>Straightforward</Q>.
213
</Item>
214
215
<Mark>
216
<C>DrawOrbitPicture</C>
217
</Mark>
218
<Item>
219
Compute spheres of radius <M>1, \dots, r</M> around the given point(s).
220
Choose the origin either in the lower left corner of the picture
221
(if all points lie in the first quadrant) or in the middle of the picture
222
(if they don't). Mark points of the ball with black pixels in case of
223
a monochrome picture. Choose colors from the given palette depending on
224
the distance from the starting points in case of a colored picture.
225
</Item>
226
227
<Mark>
228
<C>EpimorphismFromFpGroup(<A>G</A>,<A>r</A>)</C>
229
</Mark>
230
<Item>
231
Computes orders of elements in the ball of
232
radius&nbsp;<A>r</A> about&nbsp;1 in&nbsp;<A>G</A>,
233
and uses the corresponding relations if they affect
234
the abelian invariants of <A>G</A>, <A>G'</A>, <A>G''</A>, etc..
235
</Item>
236
237
<Mark>
238
<C>Exponent(<A>G</A>)</C>
239
</Mark>
240
<Item>
241
Check whether <A>G</A> is finite. If it is, then use the &GAP; Library
242
method, applied to <C>Image(IsomorphismPermGroup(<A>G</A>))</C>.
243
Check whether <A>G</A> is tame. If yes, return <C>infinity</C>.
244
If not, run a loop over <A>G</A> until finding an element of infinite
245
order. Once one is found, return <C>infinity</C>. <P/>
246
247
The final loop to find a non-torsion element can be left away under
248
the assumption that any finitely generated wild rcwa group has a wild
249
element. It looks likely that this holds, but currently the author does
250
not know a proof.
251
</Item>
252
253
<Mark>
254
<C>ExtRepOfObj(<A>f</A>)</C>
255
</Mark>
256
<Item>
257
<Q>Trivial</Q>.
258
</Item>
259
260
<Mark>
261
<C>FactorizationIntoCSCRCT(<A>g</A>)</C>, &nbsp;
262
<C>Factorization(<A>g</A>)</C>
263
</Mark>
264
<Item>
265
The method used here is rather sophisticated, and will likely
266
some time be published elsewhere. At the moment termination is not
267
guaranteed, but in case of termination the result is certain.
268
The strategy is roughly first to make the mapping class-wise
269
order-preserving and balanced, and then to remove all prime factors
270
from multiplier and divisor one after the other in decreasing order
271
by dividing by appropriate class transpositions.
272
The remaining integral mapping can be factored in a similar way
273
as a permutation of a finite set can be factored into transpositions.
274
</Item>
275
276
<Mark>
277
<C>FactorizationOnConnectedComponents(<A>f</A>,<A>m</A>)</C>
278
</Mark>
279
<Item>
280
Calls <Package>GRAPE</Package> to get the connected components of the
281
transition graph, and then computes a partition of the suitably
282
<Q>blown up</Q> coefficient list corresponding to the connected
283
components.
284
</Item>
285
286
<Mark>
287
<C>FixedPointsOfAffinePartialMappings(<A>f</A>)</C>
288
</Mark>
289
<Item>
290
<Q>Straightforward</Q>.
291
</Item>
292
293
<Mark>
294
<C>FixedResidueClasses(<A>g</A>,<A>maxmod</A>)</C>, &nbsp;
295
<C>FixedResidueClasses(<A>G</A>,<A>maxmod</A>)</C>
296
</Mark>
297
<Item>
298
Runs a loop over all moduli <M>m \leq</M> <A>maxmod</A>
299
and all residues <M>r</M> modulo these moduli,
300
and selects those residue classes <M>r(m)</M> which are
301
mapped to itself by <A>g</A>, respectively, by all generators
302
of <A>G</A>.
303
</Item>
304
305
<Mark>
306
<C>FloatQuotientsList(<A>l</A>)</C>
307
</Mark>
308
<Item>
309
<Q>Trivial</Q>.
310
</Item>
311
312
<Mark>
313
<C>GluckTaylorInvariant(<A>a</A>)</C>
314
</Mark>
315
<Item>
316
Evaluation of the given expression.
317
</Item>
318
319
<Mark>
320
<C>GroupByResidueClasses(<A>classes</A>)</C>
321
</Mark>
322
<Item>
323
Finds all pairs of residue classes in the list <A>classes</A>
324
which are disjoint, forms the corresponding class transpositions
325
and returns the group generated by them.
326
</Item>
327
328
<Mark>
329
<C>GuessedDivergence(<A>f</A>)</C>
330
</Mark>
331
<Item>
332
Numerical computation of the limit of some series, which seems to
333
converge <Q>often</Q>. Caution!!!
334
</Item>
335
336
<Mark>
337
<C>Image(<A>f</A>)</C>, &nbsp; <C>Image(<A>f</A>,<A>S</A>)</C>
338
</Mark>
339
<Item>
340
<Q>Straightforward</Q> if one can compute images of residue classes
341
under affine mappings and unite and intersect residue classes
342
(Chinese Remainder Theorem).
343
See Lemma&nbsp;1.2.1 in&nbsp;<Cite Key="Kohl05"/>.
344
</Item>
345
346
<Mark>
347
<C>ImageDensity(<A>f</A>)</C>
348
</Mark>
349
<Item>
350
Evaluation of the given expression.
351
</Item>
352
353
<Mark>
354
<C><A>g</A> in <A>G</A></C> (membership test for rcwa groups)
355
</Mark>
356
<Item>
357
Test whether the mapping <A>g</A> or its inverse is in the list of
358
generators of&nbsp;<A>G</A>. If it is, return <C>true</C>.
359
Test whether its prime set is a subset of the prime set of&nbsp;<A>G</A>.
360
If not, return <C>false</C>. Test whether the multiplier or the divisor
361
of&nbsp;<A>g</A> has a prime factor which does not divide the multiplier
362
of&nbsp;<A>G</A>. If yes, return <C>false</C>. Test if <A>G</A> is
363
class-wise order-preserving, and <A>g</A> is not. If so, return
364
<C>false</C>. Test if the sign of <A>g</A> is&nbsp;-1 and all generators
365
of&nbsp;<A>G</A> have sign&nbsp;1. If yes, return <C>false</C>.
366
Test if <A>G</A> is class-wise order-preserving, all generators
367
of&nbsp;<A>G</A> have determinant&nbsp;0 and <A>g</A> has
368
determinant&nbsp;<M>\neq 0</M>. If yes, return <C>false</C>.
369
Test whether the support of&nbsp;<A>g</A> is a subset of the support
370
of&nbsp;<A>G</A>. If not, return <C>false</C>.
371
Test whether <A>G</A> fixes the nonnegative integers setwise,
372
but&nbsp;<A>g</A> does not. If yes, return <C>false</C>. <P/>
373
374
If <A>G</A> is tame, proceed as follows:
375
Test whether the modulus of <A>g</A> divides the modulus of <A>G</A>.
376
If not, return <C>false</C>. Test whether <A>G</A> is finite and <A>g</A>
377
has infinite order. If so, return <C>false</C>. Test whether <A>g</A>
378
is tame. If not, return <C>false</C>.
379
Compute a respected partition <C>P</C> of <A>G</A> and the
380
finite permutation group <C>H</C> induced by <A>G</A> on it
381
(see <C>RespectedPartition</C>).
382
Check whether <A>g</A> permutes <C>P</C>. If not, return <C>false</C>.
383
Let <C>h</C> be the permutation induced by <A>g</A> on <C>P</C>.
384
Check whether <C>h</C> lies in <C>H</C>. If not, return <C>false</C>.
385
Compute an element <C>g1</C> of <A>G</A> which acts on&nbsp;<C>P</C>
386
like&nbsp;<A>g</A>. For this purpose, factor <A>h</A> into generators
387
of&nbsp;<C>H</C> using <C>PreImagesRepresentative</C>, and compute the
388
corresponding product of generators of&nbsp;<A>G</A>.
389
Let <C>k := g/g1</C>. The mapping <C>k</C> is always integral.
390
Compute the kernel&nbsp;<C>K</C> of the action of <A>G</A>
391
on&nbsp;<C>P</C> using <C>KernelOfActionOnRespectedPartition</C>. Check
392
whether <C>k</C> lies in&nbsp;<C>K</C>. This is done using the package
393
<Package>Polycyclic</Package>&nbsp;<Cite Key="Polycyclic"/>, and uses an
394
isomorphism from a supergroup of &nbsp;<C>K</C> which is isomorphic
395
to the <C>|P|</C>-fold direct product of the infinite dihedral group
396
and which always contains&nbsp;<C>k</C> to a polycyclically presented
397
group. If&nbsp;<C>k</C> lies in&nbsp;<C>K</C>, return <C>true</C>,
398
otherwise return <C>false</C>. <P/>
399
400
If <A>G</A> is not tame, proceed as follows:
401
Look for finite orbits of&nbsp;<A>G</A>. If some are found, test whether
402
<A>g</A> acts on them, and whether the induced permutations lie in
403
the permutation groups induced by&nbsp;<A>G</A>. If for one of the
404
examined orbits one of the latter two questions has a negative answer,
405
then return <C>false</C>.
406
Look for a positive integer&nbsp;<M>m</M> such that <A>g</A> does
407
not leave a partition of&nbsp;&ZZ; into unions of residue
408
classes (mod&nbsp;<M>m</M>) invariant which is fixed by&nbsp;<A>G</A>.
409
If successful, return <C>false</C>. If not, try to factor <A>g</A> into
410
generators of&nbsp;<A>G</A> using <C>PreImagesRepresentative</C>.
411
If successful, return <C>true</C>. If <A>g</A> is in <A>G</A>, this
412
terminates after a finite number of steps. Both run time and memory
413
requirements are exponential in the word length. If <A>g</A> is not
414
in <A>G</A> at this stage, the method runs into an infinite loop.
415
</Item>
416
417
<Mark>
418
<C><A>f</A> in <A>M</A></C> (membership test for rcwa monoids)
419
</Mark>
420
<Item>
421
Test whether the mapping <A>f</A> is in the list of generators
422
of&nbsp;<A>G</A>. If it is, return <C>true</C>.
423
Test whether the multiplier of <A>f</A> is zero, but all generators
424
of&nbsp;<A>M</A> have nonzero multiplier. If yes, return <C>false</C>.
425
Test if neither&nbsp;<A>f</A> nor any generator of&nbsp;<A>M</A>
426
has multiplier zero. If so, check whether the prime set of&nbsp;<A>f</A>
427
is a subset of the prime set of&nbsp;<A>M</A>, and whether the set of
428
prime factors of the multiplier of&nbsp;<A>f</A> is a subset of the union
429
of the sets of prime factors of the multipliers of the generators
430
of&nbsp;<A>M</A>. If one of these is not the case, return <C>false</C>.
431
Check whether the set of prime factors of the divisor
432
of&nbsp;<A>f</A> is a subset of the union of the sets of prime factors
433
of the divisors of the generators of&nbsp;<A>M</A>.
434
If not, return <C>false</C>.
435
If the underlying ring is &ZZ; or a semilocalization thereof,
436
then check whether <A>f</A> is not class-wise order-preserving,
437
but <A>M</A>&nbsp;is. If so, return <C>false</C>. <P/>
438
439
If <A>f</A> is not injective, but all generators of&nbsp;<A>M</A> are,
440
then return <C>false</C>.
441
If <A>f</A> is not surjective, but all generators of&nbsp;<A>M</A> are,
442
then return <C>false</C>.
443
If the support of&nbsp;<A>f</A> is not a subset of the support
444
of&nbsp;<A>M</A>, then return <C>false</C>.
445
If <A>f</A> is not sign-preserving, but <A>M</A> is,
446
then return <C>false</C>.
447
Check whether <A>M</A> is tame. If so, then return <C>false</C> provided
448
that one of the following three conditions hold: 1.&nbsp;The modulus
449
of&nbsp;<A>f</A> does not divide the modulus of&nbsp;<A>M</A>.
450
2.&nbsp;<A>f</A> is not tame. 3.&nbsp;<A>M</A> is finite, and <A>f</A>
451
is bijective and has infinite order.
452
If membership has still not been decided, use <C>ShortOrbits</C> to look
453
for finite orbits of&nbsp;<A>M</A>, and check whether <A>f</A> fixes all
454
of them setwise. If a finite orbit is found which <A>f</A> does not map
455
to itself, then return <C>false</C>. <P/>
456
457
Finally compute balls of increasing radius around&nbsp;1 until <A>f</A>
458
is found to lie in one of them. If that happens, return <C>true</C>.
459
If <A>f</A> is an element of&nbsp;<A>M</A>, this will eventually
460
terminate, but if at this stage <A>f</A> is not an element
461
of&nbsp;<A>M</A>, this will run into an infinite loop.
462
</Item>
463
464
<Mark>
465
<C><A>point</A> in <A>orbit</A></C> (membership test for orbits)
466
</Mark>
467
<Item>
468
Uses the equality test for orbits:
469
The orbit equality test computes balls of increasing radius around the
470
orbit representatives until they intersect non-trivially. Once they do so,
471
it returns <C>true</C>. If it finds that one or both of the orbits are
472
finite, it makes use of that information, and returns <C>false</C> if
473
appropriate. In between, i.e. after having computed balls to a certain
474
extent depending on the properties of the group, it chooses a suitable
475
modulus&nbsp;<M>m</M> and computes orbits (modulo&nbsp;<M>m</M>).
476
If the representatives of the orbits to be compared belong to different
477
orbits (mod&nbsp;<M>m</M>), it returns <C>false</C>. If this is not the
478
case although the orbits are different, the equality test runs into an
479
infinite loop.
480
</Item>
481
482
<Mark>
483
<C>IncreasingOn(<A>f</A>)</C>
484
</Mark>
485
<Item>
486
Forms the union of the residue classes which are determined by the
487
coefficients as indicated.
488
</Item>
489
490
<Mark>
491
<C>Index(<A>G</A>,<A>H</A>)</C>
492
</Mark>
493
<Item>
494
In general, i.e. if the underlying ring is not&nbsp;&ZZ;, proceed
495
as follows: If both groups <A>G</A> and&nbsp;<A>H</A> are finite,
496
return the quotient of their orders. If <A>G</A> is infinite,
497
but <A>H</A> is finite, return <C>infinity</C>. Otherwise return the
498
number of right cosets of <A>H</A> in&nbsp;<A>G</A>, computed by the
499
&GAP; Library function <C>RightCosets</C>. <P/>
500
501
If the underlying ring is&nbsp;&ZZ;, do additionally the
502
following before attempting to compute the list of right cosets:
503
If the group <A>G</A> is class-wise order-preserving, check whether one
504
of its generators has nonzero determinant, and whether all generators
505
of&nbsp;<A>H</A> have determinant&nbsp;zero.
506
If so, then return <C>infinity</C>.
507
Check whether <A>H</A> is tame, but <A>G</A> is not.
508
If so, then return <C>infinity</C>.
509
If <A>G</A> is tame, then check whether the rank of the largest free
510
abelian subgroup of the kernel of the action of <A>G</A> on a respected
511
partition is higher than the corresponding rank for&nbsp;<A>H</A>.
512
For this check, use <C>RankOfKernelOfActionOnRespectedPartition</C>.
513
If it is, then return <C>infinity</C>.
514
</Item>
515
516
<Mark>
517
<C>Induction(<A>g</A>,<A>f</A>)</C>
518
</Mark>
519
<Item>
520
Computes <C>f * g * RightInverse(<A>f</A>)</C>.
521
</Item>
522
523
<Mark>
524
<C>Induction(<A>G</A>,<A>f</A>)</C>
525
</Mark>
526
<Item>
527
Gets a set of generators by applying <C>Induction(<A>g</A>,<A>f</A>)</C>
528
to the generators <A>g</A> of&nbsp;<A>G</A>.
529
</Item>
530
531
<Mark>
532
<C>InjectiveAsMappingFrom(<A>f</A>)</C>
533
</Mark>
534
<Item>
535
The function starts with the entire source of <A>f</A> as <Q>preimage</Q>
536
<C>pre</C> and the empty set as <Q>image</Q>&nbsp;<C>im</C>.
537
It loops over the residue classes (mod&nbsp;<C>Mod(<A>f</A>)</C>).
538
For any such residue class <C>cl</C> the following is done: Firstly,
539
the image of <C>cl</C> under&nbsp;<A>f</A> is added to&nbsp;<C>im</C>.
540
Secondly, the intersection of the preimage of the intersection of the
541
image of <C>cl</C> under <A>f</A> and <C>im</C> under <A>f</A> and
542
<C>cl</C> is subtracted from&nbsp;<C>pre</C>.
543
</Item>
544
545
<Mark>
546
<C>IntegralConjugate(<A>f</A>)</C>, &nbsp;
547
<C>IntegralConjugate(<A>G</A>)</C>
548
</Mark>
549
<Item>
550
Uses the algorithm described in the proof of Theorem&nbsp;2.5.14
551
in&nbsp;<Cite Key="Kohl05"/>.
552
</Item>
553
554
<Mark>
555
<C>IntegralizingConjugator(<A>f</A>)</C>, &nbsp;
556
<C>IntegralizingConjugator(<A>G</A>)</C>
557
</Mark>
558
<Item>
559
Uses the algorithm described in the proof of Theorem&nbsp;2.5.14
560
in&nbsp;<Cite Key="Kohl05"/>.
561
</Item>
562
563
<Mark>
564
<C>Inverse(<A>f</A>)</C>
565
</Mark>
566
<Item>
567
Essentially inversion of affine mappings.
568
See Lemma&nbsp;1.3.1, Part&nbsp;(b) in&nbsp;<Cite Key="Kohl05"/>.
569
</Item>
570
571
<Mark>
572
<C>IsBalanced(<A>f</A>)</C>
573
</Mark>
574
<Item>
575
Checks whether the sets of prime factors of the multiplier and
576
the divisor of&nbsp;<A>f</A> are the same.
577
</Item>
578
579
<Mark>
580
<C>IsBijective(<A>f</A>)</C>
581
</Mark>
582
<Item>
583
<Q>Trivial</Q>, respectively, see <C>IsInjective</C> and
584
<C>IsSurjective</C>.
585
</Item>
586
587
<Mark>
588
<C>IsClassReflection(<A>g</A>)</C>
589
</Mark>
590
<Item>
591
Computes the support of&nbsp;<A>g</A>, and compares&nbsp;<A>g</A> with
592
the corresponding class reflection.
593
</Item>
594
595
<Mark>
596
<C>IsClassRotation(<A>g</A>)</C>
597
</Mark>
598
<Item>
599
Computes the support of&nbsp;<A>g</A>, extracts the possible rotation
600
factor from the coefficients and compares&nbsp;<A>g</A> with the
601
corresponding class rotation.
602
</Item>
603
604
<Mark>
605
<C>IsClassShift(<A>g</A>)</C>
606
</Mark>
607
<Item>
608
Computes the support of&nbsp;<A>g</A>, and compares&nbsp;<A>g</A> with
609
the corresponding class shift.
610
</Item>
611
612
<Mark>
613
<C>IsClassTransposition(<A>g</A>), &nbsp;
614
IsGeneralizedClassTransposition(<A>g</A>)</C>
615
</Mark>
616
<Item>
617
Computes the support of&nbsp;<A>g</A>, writes it as a disjoint union of
618
two residue classes and compares&nbsp;<A>g</A> with the class transposition
619
which interchanges them.
620
</Item>
621
622
<Mark>
623
<C>IsClassWiseOrderPreserving(<A>f</A>)</C>, &nbsp;
624
<C>IsClassWiseTranslating(<A>f</A>)</C>
625
</Mark>
626
<Item>
627
<Q>Trivial</Q>.
628
</Item>
629
630
<Mark>
631
<C>IsConjugate(RCWA(Integers),<A>f</A>,<A>g</A>)</C>
632
</Mark>
633
<Item>
634
Test whether <A>f</A> and <A>g</A> have the same order, and whether
635
either both or none of them is tame. If not, return <C>false</C>. <P/>
636
637
If the mappings are wild, use <C>ShortCycles</C> to search for finite
638
cycles not belonging to an infinite series, until their numbers for a
639
particular length differ. This may run into an infinite loop.
640
If it terminates, return <C>false</C>. <P/>
641
642
If the mappings are tame, use the method described in the proof of
643
Theorem&nbsp;2.5.14 in&nbsp;<Cite Key="Kohl05"/> to construct
644
integral conjugates of <A>f</A> and <A>g</A>. Then essentially use
645
the algorithm described in the proof of Theorem&nbsp;2.6.7
646
in&nbsp;<Cite Key="Kohl05"/> to compute <Q>standard representatives</Q>
647
of the conjugacy classes which the integral conjugates of <A>f</A>
648
and <A>g</A> belong to. Finally compare these standard representatives,
649
and return <C>true</C> if they are equal and <C>false</C> if not.
650
</Item>
651
652
<Mark>
653
<C>IsInjective(<A>f</A>)</C>
654
</Mark>
655
<Item>
656
See <C>Image</C>.
657
</Item>
658
659
<Mark>
660
<C>IsIntegral(<A>f</A>)</C>
661
</Mark>
662
<Item>
663
<Q>Trivial</Q>.
664
</Item>
665
666
<Mark>
667
<C>IsNaturalCT(<A>G</A>)</C>, &nbsp;
668
<C>IsNaturalRCWA(<A>G</A>)</C>
669
</Mark>
670
<Item>
671
Only checks a set flag.
672
</Item>
673
674
<Mark>
675
<C>IsomorphismMatrixGroup(<A>G</A>)</C>
676
</Mark>
677
<Item>
678
Uses the algorithm described in the proof of Theorem&nbsp;2.6.3
679
in&nbsp;<Cite Key="Kohl05"/>.
680
</Item>
681
682
<Mark>
683
<C>IsomorphismPermGroup(<A>G</A>)</C>
684
</Mark>
685
<Item>
686
If the group <A>G</A> is finite and class-wise order-preserving,
687
use <C>ActionOnRespectedPartition</C>.
688
If <A>G</A> is finite, but not class-wise order-preserving, compute
689
the action on the respected partition which is obtained by splitting
690
any residue class <M>r(m)</M> in <C>RespectedPartition(<A>G</A>)</C>
691
into three residue classes <M>r(3m), r+m(3m), r+2m(3m)</M>.
692
If <A>G</A> is infinite, there is no isomorphism to a finite
693
permutation group, thus return <C>fail</C>.
694
</Item>
695
696
<Mark>
697
<C>IsomorphismRcwaGroup(<A>G</A>)</C>
698
</Mark>
699
<Item>
700
The method for finite groups uses <C>RcwaMapping</C>, Part&nbsp;(d). <P/>
701
702
The method for free products of finite groups uses the Table-Tennis
703
Lemma (which is also known as <E>Ping-Pong Lemma</E>,
704
cf. e.g. Section&nbsp;II.B. in&nbsp;<Cite Key="LaHarpe00"/>).
705
It uses regular permutation representations of the factors
706
<M>G_r</M> (<M>r = 0, \dots ,m-1</M>) of the free product on residue
707
classes modulo <M>n_r := |G_r|</M>.
708
The basic idea is that since point stabilizers in regular permutation
709
groups are trivial, all non-identity elements map any of the permuted
710
residue classes into their complements.
711
To get into a situation where the Table-Tennis Lemma is applicable,
712
the method computes conjugates of the images of the mentioned permutation
713
representations under rcwa permutations <M>\sigma_r</M> which
714
satisfy <M>0(n_r)^{\sigma_r} = &ZZ; \setminus r(m)</M>. <P/>
715
716
The method for free groups uses an adaptation of the construction given
717
on page&nbsp;27 in&nbsp;<Cite Key="LaHarpe00"/> from PSL(2,&CC;) to
718
RCWA(&ZZ;). As an equivalent for the closed discs used there, the method
719
takes the residue classes modulo two times the rank of the free group.
720
</Item>
721
722
<Mark>
723
<C>IsOne(<A>f</A>)</C>
724
</Mark>
725
<Item>
726
<Q>Trivial</Q>.
727
</Item>
728
729
<Mark>
730
<C>IsPerfect(<A>G</A>)</C>
731
</Mark>
732
<Item>
733
If the group <A>G</A> is trivial, then return <C>true</C>.
734
Otherwise if it is abelian, then return <C>false</C>. <P/>
735
736
If the underlying ring is&nbsp;&ZZ;, then do the following:
737
If one of the generators of&nbsp;<A>G</A> has sign&nbsp;-1, then
738
return <C>false</C>. If&nbsp;<A>G</A> is class-wise order-preserving
739
and one of the generators has nonzero determinant, then return
740
<C>false</C>. <P/>
741
742
If <A>G</A> is wild, and perfectness has not been decided so far,
743
then give up. If <A>G</A> is finite, then check the image of
744
<C>IsomorphismPermGroup(<A>G</A>)</C> for perfectness, and return
745
<C>true</C> or <C>false</C> accordingly. <P/>
746
747
If the group&nbsp;<A>G</A> is tame and if it acts transitively
748
on its stored respected partition, then return <C>true</C> or
749
<C>false</C> depending on whether the finite permutation group
750
<C>ActionOnRespectedPartition(<A>G</A>)</C> is perfect or not.
751
If&nbsp;<A>G</A> does not act transitively on its stored respected
752
partition, then give up.
753
</Item>
754
755
<Mark>
756
<C>IsPrimeSwitch(<A>g</A>)</C>
757
</Mark>
758
<Item>
759
Checks whether the multiplier of&nbsp;<A>g</A> is an odd prime,
760
and compares <A>g</A> with the corresponding prime switch.
761
</Item>
762
763
<Mark>
764
<C>IsSignPreserving(<A>f</A>)</C>
765
</Mark>
766
<Item>
767
If <A>f</A> is not class-wise order-preserving, then return <C>false</C>.
768
Otherwise let <M>c \geq 1</M> be greater than or equal to the maximum of
769
the absolute values of the coefficients <M>b_{r(m)}</M> of the affine
770
partial mappings of&nbsp;<A>f</A>, and check whether
771
the minimum of the image of <M>\{0, \dots, c\}</M> under&nbsp;<A>f</A>
772
is nonnegative and whether the maximum of the image of
773
<M>\{-c, \dots, -1\}</M> under&nbsp;<A>f</A> is negative.
774
If both is the case, then return <C>true</C>, otherwise
775
return <C>false</C>.
776
</Item>
777
778
<Mark>
779
<C>IsSolvable(<A>G</A>)</C>
780
</Mark>
781
<Item>
782
If <A>G</A> is abelian, then return <C>true</C>.
783
If <A>G</A> is tame, then return <C>true</C> or <C>false</C> depending on
784
whether <C>ActionOnRespectedPartition(<A>G</A>)</C> is solvable or not.
785
If <A>G</A> is wild, then give up.
786
</Item>
787
788
<Mark>
789
<C>IsSubset(<A>G</A>,<A>H</A>)</C> (checking for a subgroup relation)
790
</Mark>
791
<Item>
792
Check whether the set of stored generators of&nbsp;<A>H</A> is a subset
793
of the set of stored generators of&nbsp;<A>G</A>. If so, return
794
<C>true</C>. Check whether the prime set of&nbsp;<A>H</A> is a subset
795
of the prime set of&nbsp;<A>G</A>. If not, return <C>false</C>.
796
Check whether the support of&nbsp;<A>H</A> is a subset
797
of the support of&nbsp;<A>G</A>. If not, return <C>false</C>.
798
Check whether <A>G</A> is tame, but <A>H</A> is wild.
799
If so, return <C>false</C>. <P/>
800
801
If <A>G</A> and <A>H</A> are both tame, then proceed as follows:
802
If the multiplier of <A>H</A> does not divide the multiplier
803
of&nbsp;<A>G</A>, then return <C>false</C>.
804
If <A>H</A> does not respect the stored respected partition
805
of&nbsp;<A>G</A>, then return <C>false</C>.
806
Check whether the finite permutation group induced by <A>H</A> on
807
<C>RespectedPartition(<A>G</A>)</C> is a subgroup of
808
<C>ActionOnRespectedPartition(<A>G</A>)</C>. If yes, return <C>true</C>.
809
Check whether the order of&nbsp;<A>H</A> is greater than the order
810
of&nbsp;<A>G</A>. If so, return <C>false</C>. <P/>
811
812
Finally use the membership test to check whether all generators
813
of&nbsp;<A>H</A> lie in&nbsp;<A>G</A>, and return <C>true</C> or
814
<C>false</C> accordingly.
815
</Item>
816
817
<Mark>
818
<C>IsSurjective(<A>f</A>)</C>
819
</Mark>
820
<Item>
821
See <C>Image</C>.
822
</Item>
823
824
<Mark>
825
<C>IsTame(<A>G</A>)</C>
826
</Mark>
827
<Item>
828
Checks whether the modulus of the group is nonzero.
829
</Item>
830
831
<Mark>
832
<C>IsTame(<A>f</A>)</C>
833
</Mark>
834
<Item>
835
Application of the criteria given in Corollary&nbsp;2.5.10
836
and&nbsp;2.5.12 and Theorem&nbsp;A.8 and&nbsp;A.11
837
in&nbsp;<Cite Key="Kohl05"/>, as well as of the criteria given
838
in&nbsp;<Cite Key="Kohl07b"/>.
839
840
The criterion <Q>surjective, but not injective means wild</Q>
841
(Theorem&nbsp;A.8 in&nbsp;<Cite Key="Kohl05"/>) is the subject
842
of&nbsp;<Cite Key="Kohl07a"/>.
843
844
The package <Package>GRAPE</Package> is needed for the application
845
of the criterion which says that an rcwa permutation is wild if
846
a transition graph has a weakly-connected component which is not
847
strongly-connected (cf. Theorem&nbsp;A.11 in&nbsp;<Cite Key="Kohl05"/>).
848
</Item>
849
850
<Mark>
851
<C>IsTransitive(<A>G</A>,Integers)</C>
852
</Mark>
853
<Item>
854
Look for finite orbits, using <C>ShortOrbits</C> on a couple of
855
intervals. If a finite orbit is found, return <C>false</C>.
856
Test if <A>G</A> is finite. If yes, return <C>false</C>. <P/>
857
858
Search for an element <C>g</C> and a residue class <M>r(m)</M>
859
such that the restriction of <C>g</C> to <M>r(m)</M> is given
860
by <M>n \mapsto n + m</M>. Then the cyclic group generated by <C>g</C>
861
acts transitively on <M>r(m)</M>. The element <C>g</C> is searched
862
among the generators of <A>G</A>, its powers, its commutators,
863
powers of its commutators and products of few different generators.
864
The search for such an element may run into an infinite loop,
865
as there is no guarantee that the group has a suitable element. <P/>
866
867
If suitable <C>g</C> and <M>r(m)</M> are found, proceed as follows: <P/>
868
869
Put <M>S := r(m)</M>. Put <M>S := S \cup S^g</M> for all generators
870
<M>g</M> of <A>G</A>, and repeat this until <M>S</M> remains constant.
871
This may run into an infinite loop. <P/>
872
873
If it terminates: If <M>S = &ZZ;</M>, return <C>true</C>,
874
otherwise return <C>false</C>.
875
</Item>
876
877
<Mark>
878
<C>IsTransitiveOnNonnegativeIntegersInSupport(<A>G</A>)</C>
879
</Mark>
880
<Item>
881
Computes balls about 1 with successively increasing radii,
882
and checks whether the union of the sets where the elements
883
of these balls are decreasing or shifting down equals the
884
support of <A>G</A>. If a positive answer is found,
885
transitivity on <Q>small</Q> points (nonnegative integers
886
less than an explicit bound) is verified.
887
</Item>
888
889
<Mark>
890
<C>IsZero(<A>f</A>)</C>
891
</Mark>
892
<Item>
893
<Q>Trivial</Q>.
894
</Item>
895
896
<Mark>
897
<C>KernelOfActionOnRespectedPartition(<A>G</A>)</C>
898
</Mark>
899
<Item>
900
First determine the abelian invariants of the kernel&nbsp;<C>K</C>.
901
For this, compute sufficiently many quotients of orders of
902
permutation groups induced by&nbsp;<A>G</A> on refinements of
903
the stored respected partition&nbsp;<C>P</C> by the order of the
904
permutation group induced by&nbsp;<A>G</A> on&nbsp;<C>P</C> itself.
905
Then use a random walk through the group <A>G</A>.
906
Compute powers of elements encountered along the way which
907
fix&nbsp;<C>P</C>.
908
Translate these kernel elements into elements of a polycyclically
909
presented group isomorphic to the <C>|P|</C>-fold direct product of
910
the infinite dihedral group (<C>K</C> certainly embeds into this group).
911
Use <Package>Polycyclic</Package>&nbsp;<Cite Key="Polycyclic"/>
912
to collect independent <Q>nice</Q> generators of&nbsp;<C>K</C>.
913
Proceed until the permutation groups induced by&nbsp;<C>K</C> on the
914
refined respected partitions all equal the initially stored quotients.
915
</Item>
916
917
<Mark>
918
<C>LargestSourcesOfAffineMappings(<A>f</A>)</C>
919
</Mark>
920
<Item>
921
Forms unions of residue classes modulo the modulus of the mapping,
922
whose corresponding coefficient triples are equal.
923
</Item>
924
925
<Mark>
926
<C>LaTeXStringRcwaMapping(<A>f</A>)</C>, &nbsp;
927
<C>LaTeXAndXDVI(<A>f</A>)</C>
928
</Mark>
929
<Item>
930
Collects residue classes those corresponding coefficient triples
931
are equal.
932
</Item>
933
934
<Mark>
935
<C>LikelyContractionCentre(<A>f</A>,<A>maxn</A>,<A>bound</A>)</C>
936
</Mark>
937
<Item>
938
Computes trajectories with starting values from a given interval, until
939
a cycle is reached. Aborts if the trajectory exceeds the prescribed
940
bound. Form the union of the detected cycles.
941
</Item>
942
943
<Mark>
944
<C>LoadDatabaseOf...()</C>, &nbsp; <C>LoadRCWAExamples()</C>
945
</Mark>
946
<Item>
947
<Q>Trivial</Q>. --
948
These functions do nothing more than reading in certain files.
949
</Item>
950
951
<Mark>
952
<C>LocalizedRcwaMapping(<A>f</A>,<A>p</A>)</C>
953
</Mark>
954
<Item>
955
<Q>Trivial</Q>.
956
</Item>
957
958
<Mark>
959
<C>Log2HTML(<A>logfilename</A>)</C>
960
</Mark>
961
<Item>
962
Straightforward string operations.
963
</Item>
964
965
<Mark>
966
<C>Loops(<A>f</A>)</C>
967
</Mark>
968
<Item>
969
Runs over the residue classes modulo the modulus of&nbsp;<A>f</A>,
970
and selects those of them which <A>f</A> does not map to themselves,
971
but which intersect non-trivially with their images under&nbsp;<A>f</A>.
972
</Item>
973
974
<Mark>
975
<C>MaximalShift(<A>f</A>)</C>
976
</Mark>
977
<Item>
978
<Q>Trivial</Q>.
979
</Item>
980
981
<Mark>
982
<C>MergerExtension(<A>G</A>,<A>points</A>,<A>point</A>)</C>
983
</Mark>
984
<Item>
985
As described in <Ref Oper="MergerExtension"
986
Label="for finite permutation groups"/>.
987
</Item>
988
989
<Mark>
990
<C>Mirrored(<A>g</A>)</C>, &nbsp; <C>Mirrored(<A>G</A>)</C>
991
</Mark>
992
<Item>
993
Conjugates with <M>n \mapsto -n - 1</M>, as indicated in the definition.
994
</Item>
995
996
<Mark>
997
<C>mKnot(<A>m</A>)</C>
998
</Mark>
999
<Item>
1000
<Q>Straightforward</Q>, following the definition given in
1001
<Cite Key="Keller99"/>.
1002
</Item>
1003
1004
<Mark>
1005
<C>Modulus(<A>G</A>)</C>
1006
</Mark>
1007
<Item>
1008
Searches for a wild element in the group.
1009
If unsuccessful, tries to construct a respected partition
1010
(see <C>RespectedPartition</C>).
1011
</Item>
1012
1013
<Mark>
1014
<C>Modulus(<A>f</A>)</C>
1015
</Mark>
1016
<Item>
1017
<Q>Trivial</Q>.
1018
</Item>
1019
1020
<Mark>
1021
<C>MovedPoints(<A>G</A>)</C>
1022
</Mark>
1023
<Item>
1024
Needs only forming unions of residue classes and determining
1025
fixed points of affine mappings.
1026
</Item>
1027
1028
<Mark>
1029
<C>Multiplier(<A>f</A>)</C>
1030
</Mark>
1031
<Item>
1032
Lcm of coefficients, as indicated.
1033
</Item>
1034
1035
<Mark>
1036
<C>Multpk(<A>f</A>,<A>p</A>,<A>k</A>)</C>
1037
</Mark>
1038
<Item>
1039
Forms the union of the residue classes modulo the modulus of the
1040
mapping, which are determined by the given divisibility criteria
1041
for the coefficients of the corresponding affine mapping.
1042
</Item>
1043
1044
<Mark>
1045
<C>NrClassPairs(<A>m</A>)</C>
1046
</Mark>
1047
<Item>
1048
Relatively straightforward. --
1049
Practical for values of <A>m</A> ranging up into the hundreds
1050
and corresponding counts of $10^9$ and more.
1051
</Item>
1052
1053
<Mark>
1054
<C>NrConjugacyClassesOfCTZOfOrder(<A>ord</A>)</C>,
1055
</Mark>
1056
<Item>
1057
Evaluation of the expression
1058
<C>Length(Filtered(Combinations(DivisorsInt(ord)),
1059
l -&gt; l &lt;&gt; [] and Lcm(l) = ord))</C>.
1060
</Item>
1061
1062
<Mark>
1063
<C>NrConjugacyClassesOfRCWAZOfOrder(<A>ord</A>)</C>
1064
</Mark>
1065
<Item>
1066
The class numbers are taken from Corollary&nbsp;2.7.1
1067
in&nbsp;<Cite Key="Kohl05"/>.
1068
</Item>
1069
1070
<Mark>
1071
<C>ObjByExtRep(<A>fam</A>,<A>l</A>)</C>
1072
</Mark>
1073
<Item>
1074
<Q>Trivial</Q>.
1075
</Item>
1076
1077
<Mark>
1078
<C>One(<A>f</A>)</C>, &nbsp; <C>One(<A>G</A>)</C>,
1079
</Mark>
1080
<Item>
1081
<Q>Trivial</Q>.
1082
</Item>
1083
1084
<Mark>
1085
<C>Orbit(<A>G</A>,<A>pnt</A>,<A>gens</A>,<A>acts</A>,<A>act</A>)</C>
1086
</Mark>
1087
<Item>
1088
Check if the orbit has length less than a certain bound.
1089
If so, then return it as a list.
1090
Otherwise test whether the group <A>G</A> is tame or wild. <P/>
1091
1092
If <A>G</A> is tame, then test whether <A>G</A> is finite.
1093
If yes, then compute the orbit by the &GAP; Library method.
1094
Otherwise proceed as follows:
1095
Compute a respected partition&nbsp;<M>\mathcal{P}</M> of&nbsp;<A>G</A>.
1096
Use&nbsp;<M>\mathcal{P}</M> to find a residue class&nbsp;<M>r(m)</M>
1097
which is a subset of the orbit to be computed. In general, <M>r(m)</M>
1098
will not be one of the residue classes in&nbsp;<M>\mathcal{P}</M>, but
1099
a subset of one of them.
1100
Put <M>\Omega := r(m)</M>. Unite the set&nbsp;<M>\Omega</M> with its
1101
images under all the generators of&nbsp;<A>G</A> and their inverses.
1102
Repeat that until <M>\Omega</M> does not change any more.
1103
Return&nbsp;<M>\Omega</M>. <P/>
1104
1105
If <A>G</A> is wild, then return an orbit object which stores the
1106
group&nbsp;<A>G</A>, the representative&nbsp;<A>rep</A> and the
1107
action&nbsp;<A>act</A>.
1108
</Item>
1109
1110
<Mark>
1111
<C>OrbitsModulo(<A>f</A>,<A>m</A>)</C>
1112
</Mark>
1113
<Item>
1114
Uses <Package>GRAPE</Package> to compute the connected
1115
components of the transition graph.
1116
</Item>
1117
1118
<Mark>
1119
<C>OrbitsModulo(<A>G</A>,<A>m</A>)</C>
1120
</Mark>
1121
<Item>
1122
<Q>Straightforward</Q>.
1123
</Item>
1124
1125
<Mark>
1126
<C>Order(<A>f</A>)</C>
1127
</Mark>
1128
<Item>
1129
Test for <C>IsTame</C>.
1130
If the mapping is not tame, then return <C>infinity</C>.
1131
Otherwise use Corollary&nbsp;2.5.10 in&nbsp;<Cite Key="Kohl05"/>.
1132
</Item>
1133
1134
<Mark>
1135
<C>PermutationOpNC(<A>sigma</A>,<A>P</A>,<A>act</A>)</C>
1136
</Mark>
1137
<Item>
1138
Several different methods for different types of arguments,
1139
which either provide straightforward optimizations via computing
1140
with coefficients directly, or just delegate to <C>PermutationOp</C>.
1141
</Item>
1142
1143
<Mark>
1144
<C>PreImage(<A>f</A>,<A>S</A>)</C>
1145
</Mark>
1146
<Item>
1147
See <C>Image</C>.
1148
</Item>
1149
1150
<Mark>
1151
<C>PreImagesRepresentative(<A>phi</A>,<A>g</A>)</C>, &nbsp;
1152
<C>PreImagesRepresentatives(<A>phi</A>,<A>g</A>)</C>
1153
</Mark>
1154
<Item>
1155
As described in the documentation of these methods.
1156
The underlying idea to successively compute two balls around&nbsp;1
1157
and&nbsp;<A>g</A> until they intersect non-trivially is standard
1158
in computational group theory. For rcwa groups it would mean wasting
1159
both memory and run time to actually compute group elements.
1160
Thus only images of tuples of points are computed and stored.
1161
</Item>
1162
1163
<Mark>
1164
<C>PrimeSet(<A>f</A>)</C>, &nbsp;
1165
<C>PrimeSet(<A>G</A>)</C>
1166
</Mark>
1167
<Item>
1168
<Q>Straightforward</Q>.
1169
</Item>
1170
1171
<Mark>
1172
<C>PrimeSwitch(<A>p</A>)</C>
1173
</Mark>
1174
<Item>
1175
Multiplication of rcwa mappings as indicated.
1176
</Item>
1177
1178
<Mark>
1179
<C>Print(<A>f</A>)</C>
1180
</Mark>
1181
<Item>
1182
<Q>Trivial</Q>.
1183
</Item>
1184
1185
<Mark>
1186
<C><A>f</A>*<A>g</A></C>
1187
</Mark>
1188
<Item>
1189
Essentially composition of affine mappings.
1190
See Lemma&nbsp;1.3.1, Part&nbsp;(a) in&nbsp;<Cite Key="Kohl05"/>.
1191
</Item>
1192
1193
<Mark>
1194
<C>ProjectionsToCoordinates(<A>f</A>)</C>
1195
</Mark>
1196
<Item>
1197
Straightforward coefficient operations.
1198
</Item>
1199
1200
<Mark>
1201
<C>ProjectionsToInvariantUnionsOfResidueClasses(<A>G</A>,<A>m</A>)</C>
1202
</Mark>
1203
<Item>
1204
Use <C>OrbitsModulo</C> to determine the supports of the images of the
1205
epimorphisms to be determined, and use <C>RestrictedPerm</C> to compute
1206
the images of the generators of&nbsp;<A>G</A> under these epimorphisms.
1207
</Item>
1208
1209
<Mark>
1210
<C>QuotientsList(<A>l</A>)</C>
1211
</Mark>
1212
<Item>
1213
<Q>Trivial</Q>.
1214
</Item>
1215
1216
<Mark>
1217
<C>Random(RCWA(Integers))</C>
1218
</Mark>
1219
<Item>
1220
Computes a product of <Q>randomly</Q> chosen class shifts,
1221
class reflections and class transpositions. This seems to
1222
be suitable for generating reasonably good examples.
1223
</Item>
1224
1225
<Mark>
1226
<C>RankOfKernelOfActionOnRespectedPartition(<A>G</A>)</C>
1227
</Mark>
1228
<Item>
1229
Performs the first part of the computations done by
1230
<C>KernelOfActionOnRespectedPartition</C>.
1231
</Item>
1232
1233
<Mark>
1234
<C>Rcwa(<A>R</A>)</C>
1235
</Mark>
1236
<Item>
1237
<Q>Trivial</Q>. --
1238
Attributes and properties set can be derived easily or hold
1239
by definition.
1240
</Item>
1241
1242
<Mark>
1243
<C>RCWA(<A>R</A>)</C>
1244
</Mark>
1245
<Item>
1246
Attributes and properties are set according to Theorem&nbsp;2.1.1,
1247
Theorem&nbsp;2.1.2, Corollary&nbsp;2.1.6 and Theorem&nbsp;2.12.8
1248
in&nbsp;<Cite Key="Kohl05"/>.
1249
</Item>
1250
1251
<Mark>
1252
<C>RCWABuildManual()</C>
1253
</Mark>
1254
<Item>
1255
Consists of a call to a function from the &GAPDoc; package.
1256
</Item>
1257
1258
<Mark>
1259
<C>RcwaGroupByPermGroup(<A>G</A>)</C>
1260
</Mark>
1261
<Item>
1262
Uses <C>RcwaMapping</C>, Part&nbsp;(d).
1263
</Item>
1264
1265
<Mark>
1266
<C>RCWAInfo(<A>n</A>)</C>
1267
</Mark>
1268
<Item>
1269
<Q>Trivial</Q>.
1270
</Item>
1271
1272
<Mark>
1273
<C>RcwaMapping</C>
1274
</Mark>
1275
<Item>
1276
(a)-(c): <Q>trivial</Q>,
1277
(d): <C>n&circum;perm - n</C> for determining the coefficients,
1278
(e): <Q>affine mappings by values at two given points</Q>,
1279
(f) and (g): <Q>trivial</Q>,
1280
(h) and (i): correspond to Lemma&nbsp;2.1.4 in&nbsp;<Cite Key="Kohl05"/>,
1281
(j): uses a simple parser for the permitted expressions.
1282
</Item>
1283
1284
<Mark>
1285
<C>RCWATestAll()</C>, &nbsp; <C>RCWATestInstall()</C>
1286
</Mark>
1287
<Item>
1288
Just read in files running / containing the tests.
1289
</Item>
1290
1291
<Mark>
1292
<C>RCWATestExamples()</C>
1293
</Mark>
1294
<Item>
1295
Runs the example tester from the &GAPDoc; package.
1296
</Item>
1297
1298
<Mark>
1299
<C>RepresentativeAction(<A>G</A>,<A>src</A>,<A>dest</A>,<A>act</A>)</C>,
1300
&nbsp; <C>RepresentativeActionPreImage</C>
1301
</Mark>
1302
<Item>
1303
As described in the documentation of these methods.
1304
The underlying idea to successively compute two balls around
1305
<A>src</A> and <A>dest</A> until they intersect non-trivially
1306
is standard in computational group theory. Words standing for
1307
products of generators of <A>G</A> are stored for every image
1308
of <A>src</A> or <A>dest</A>.
1309
</Item>
1310
1311
<Mark>
1312
<C>RepresentativeAction(RCWA(Integers),<A>P1</A>,<A>P2</A>)</C>
1313
</Mark>
1314
<Item>
1315
Arbitrary mapping: see Lemma&nbsp;2.1.4 in&nbsp;<Cite Key="Kohl05"/>.
1316
Tame mapping: see proof of Theorem&nbsp;2.8.9
1317
in&nbsp;<Cite Key="Kohl05"/>. The former is almost trivial, while the
1318
latter is a bit complicated and takes usually also much more time.
1319
</Item>
1320
1321
<Mark>
1322
<C>RepresentativeAction(RCWA(Integers),<A>f</A>,<A>g</A>)</C>
1323
</Mark>
1324
<Item>
1325
The algorithm used by <C>IsConjugate</C> constructs actually also
1326
an element <C>x</C> such that <C><A>f</A>&circum;x = <A>g</A></C>.
1327
</Item>
1328
1329
<Mark>
1330
<C>RespectedPartition(<A>f</A>)</C>, &nbsp;
1331
<C>RespectedPartition(<A>G</A>)</C>
1332
</Mark>
1333
<Item>
1334
There are presently two sophisticated algorithms implemented
1335
for finding respected partitions. One of them has evolved
1336
from the algorithm described in the proof of Theorem&nbsp;2.5.8
1337
in&nbsp;<Cite Key="Kohl05"/>. The other one starts with the
1338
coarsest partition of the base ring such that every generator
1339
of <A>G</A> is affine on every part. This partition is then
1340
refined successively until a respected partition is obtained.
1341
The refinement step is basically as follows: Take the images
1342
of the partition under all generators of <A>G</A>. This way one
1343
obtains as many further partitions of the base ring as there
1344
are generators of&nbsp;<A>G</A>. Then the <Q>new</Q> partition
1345
is the coarsest common refinement of all these partitions.
1346
</Item>
1347
1348
<Mark>
1349
<C>RespectsPartition(<A>G</A>,<A>P</A>)</C>
1350
</Mark>
1351
<Item>
1352
<Q>Straightforward</Q>.
1353
</Item>
1354
1355
<Mark>
1356
<C>RestrictedBall(<A>G</A>,<A>g</A>,<A>r</A>,<A>modulusbound</A>)</C>
1357
</Mark>
1358
<Item>
1359
<Q>Straightforward</Q>.
1360
</Item>
1361
1362
<Mark>
1363
<C>RestrictedPerm(<A>g</A>,<A>S</A>)</C>
1364
</Mark>
1365
<Item>
1366
<Q>Straightforward</Q>.
1367
</Item>
1368
1369
<Mark>
1370
<C>Restriction(<A>g</A>,<A>f</A>)</C>
1371
</Mark>
1372
<Item>
1373
Computes the action of <C>RightInverse(<A>f</A>) * g * f</C> on the
1374
image of&nbsp;<A>f</A>.
1375
</Item>
1376
1377
<Mark>
1378
<C>Restriction(<A>G</A>,<A>f</A>)</C>
1379
</Mark>
1380
<Item>
1381
Gets a set of generators by applying
1382
<C>Restriction(<A>g</A>,<A>f</A>)</C>
1383
to the generators <A>g</A> of&nbsp;<A>G</A>.
1384
</Item>
1385
1386
<Mark>
1387
<C>RightInverse(<A>f</A>)</C>
1388
</Mark>
1389
<Item>
1390
<Q>Straightforward</Q> if one knows how to compute images of residue
1391
classes under affine mappings, and how to compute inverses of
1392
affine mappings.
1393
</Item>
1394
1395
<Mark>
1396
<C>Root(<A>f</A>,<A>k</A>)</C>
1397
</Mark>
1398
<Item>
1399
If <A>f</A> is bijective, class-wise order-preserving and has
1400
finite order: <P/>
1401
1402
Find a conjugate of <A>f</A> which is a product of class transpositions.
1403
Slice cycles <M>\prod_{i=2}^l \tau_{r_1(m_1),r_i(m_i)}</M>
1404
of&nbsp;<A>f</A> a respected partition <M>\mathcal{P}</M> into cycles
1405
<M>\prod_{i=1}^l \prod_{j=0}^{k-1} \tau_{r_1(km_1),r_i+jm_i(km_i)}</M>
1406
of the <A>k</A>-fold
1407
length on the refined partition which one gets from <M>\mathcal{P}</M>
1408
by decomposing any <M>r_i(m_i) \in \mathcal{P}</M> into residue classes
1409
(mod&nbsp;<M>km_i</M>). Finally conjugate the resulting permutation
1410
back. <P/>
1411
1412
Other cases seem to be more difficult and are currently not covered.
1413
</Item>
1414
1415
<Mark>
1416
<C>RotationFactor(<A>g</A>)</C>
1417
</Mark>
1418
<Item>
1419
<Q>Trivial</Q>.
1420
</Item>
1421
1422
<Mark>
1423
<C>RunDemonstration(<A>filename</A>)</C>
1424
</Mark>
1425
<Item>
1426
<Q>Trivial</Q> -- only I/O operations.
1427
</Item>
1428
1429
<Mark>
1430
<C>SemilocalizedRcwaMapping(<A>f</A>,<A>pi</A>)</C>
1431
</Mark>
1432
<Item>
1433
<Q>Trivial</Q>.
1434
</Item>
1435
1436
<Mark>
1437
<C>ShiftsDownOn(<A>f</A>)</C>, &nbsp; <C>ShiftsUpOn(<A>f</A>)</C>
1438
</Mark>
1439
<Item>
1440
Straightforward coefficient- and residue class operations.
1441
</Item>
1442
1443
<Mark>
1444
<C>ShortCycles(<A>g</A>,<A>maxlng</A>)</C>
1445
</Mark>
1446
<Item>
1447
Looks for fixed points of affine partial mappings of powers
1448
of&nbsp;<A>g</A>.
1449
</Item>
1450
1451
<Mark>
1452
<C>ShortCycles(<A>g</A>,<A>S</A>,<A>maxlng</A>)</C>, &nbsp;
1453
<C>ShortCycles(<A>g</A>,<A>S</A>,<A>maxlng</A>,<A>maxn</A>)</C>
1454
</Mark>
1455
<Item>
1456
<Q>Straightforward</Q>.
1457
</Item>
1458
1459
<Mark>
1460
<C>ShortOrbits(<A>G</A>,<A>S</A>,<A>maxlng</A>)</C>, &nbsp;
1461
<C>ShortOrbits(<A>G</A>,<A>S</A>,<A>maxlng</A>,<A>maxn</A>)</C>
1462
</Mark>
1463
<Item>
1464
<Q>Straightforward</Q>.
1465
</Item>
1466
1467
<Mark>
1468
<C>ShortResidueClassCycles(<A>g</A>,<A>modulusbound</A>,<A>maxlng</A>)</C>
1469
</Mark>
1470
<Item>
1471
Different methods -- see source code in <F>pkg/rcwa/lib/rcwamap.gi</F>.
1472
</Item>
1473
1474
<Mark>
1475
<C>ShortResidueClassOrbits(<A>g</A>,<A>modulusbound</A>,<A>maxlng</A>)</C>
1476
</Mark>
1477
<Item>
1478
Different methods -- see source code in <F>pkg/rcwa/lib/rcwagrp.gi</F>.
1479
</Item>
1480
1481
<Mark>
1482
<C>Sign(<A>g</A>)</C>
1483
</Mark>
1484
<Item>
1485
Evaluation of the given expression.
1486
For the mathematical meaning (epimorphism!), see Theorem&nbsp;2.12.8
1487
in&nbsp;<Cite Key="Kohl05"/>.
1488
</Item>
1489
1490
<Mark>
1491
<C>Sinks(<A>f</A>)</C>
1492
</Mark>
1493
<Item>
1494
Computes the strongly connected components of the transition graph
1495
by the function
1496
<C>STRONGLY&uscore;CONNECTED&uscore;COMPONENTS&uscore;DIGRAPH</C>,
1497
and selects those which are proper subsets of their preimages and
1498
proper supersets of their images under&nbsp;<A>f</A>.
1499
</Item>
1500
1501
<Mark>
1502
<C>Size(<A>G</A>)</C> (order of an rcwa group)
1503
</Mark>
1504
<Item>
1505
Test whether one of the generators of the group&nbsp;<A>G</A> has
1506
infinite order. If so, return <C>infinity</C>.
1507
Test whether the group <A>G</A> is tame. If not, return <C>infinity</C>.
1508
Test whether <C>RankOfKernelOfActionOnRespectedPartition(<A>G</A>)</C>
1509
is nonzero. If so, return <C>infinity</C>.
1510
Otherwise if <A>G</A> is class-wise order-preserving, return the size
1511
of the permutation group induced on the stored respected partition.
1512
If <A>G</A> is not class-wise order-preserving, return the size
1513
of the permutation group induced on the refinement of the stored
1514
respected partition which is obtained by splitting each residue class
1515
into three residue classes with equal moduli.
1516
</Item>
1517
1518
<Mark>
1519
<C>Size(<A>M</A>)</C> (order of an rcwa monoid)
1520
</Mark>
1521
<Item>
1522
Check whether <A>M</A> is in fact an rcwa group. If so, use the method
1523
for rcwa groups instead. Check whether one of the generators
1524
of&nbsp;<A>M</A> is surjective, but not injective. If so, return
1525
<C>infinity</C>. Check whether for all generators&nbsp;<M>f</M>
1526
of&nbsp;<A>M</A>, the image of the union of the loops of&nbsp;<M>f</M>
1527
under&nbsp;<M>f</M> is finite. If not, return <C>infinity</C>.
1528
Check whether one of the generators of&nbsp;<A>M</A> is bijective and
1529
has infinite order. If so, return <C>infinity</C>.
1530
Check whether one of the generators of&nbsp;<A>M</A> is wild.
1531
If so, return <C>infinity</C>.
1532
Apply the above criteria to the elements of the ball of radius&nbsp;2
1533
around&nbsp;1, and return <C>infinity</C> if appropriate.
1534
Finally attempt to compute the list of elements of&nbsp;<A>M</A>.
1535
If this is successful, return the length of the resulting list.
1536
</Item>
1537
1538
<Mark>
1539
<C>SmallGeneratingSet(<A>G</A>)</C>
1540
</Mark>
1541
<Item>
1542
Eliminates generators <M>g</M> which can be found to be redundant
1543
<E>easily</E>, i.e. by checking whether the balls about 1 and <M>g</M>
1544
of some small radius <M>r</M> in the group generated by all generators
1545
of <A>G</A> except for <M>g</M> intersect nontrivially.
1546
</Item>
1547
1548
<Mark>
1549
<C>Sources(<A>f</A>)</C>
1550
</Mark>
1551
<Item>
1552
Computes the strongly connected components of the transition graph
1553
by the function
1554
<C>STRONGLY&uscore;CONNECTED&uscore;COMPONENTS&uscore;DIGRAPH</C>,
1555
and selects those which are proper supersets of their preimages and
1556
proper subsets of their images under&nbsp;<A>f</A>.
1557
</Item>
1558
1559
<Mark>
1560
<C>SparseRep(<A>f</A>)</C>, &nbsp; <C>StandardRep(<A>f</A>)</C>
1561
</Mark>
1562
<Item>
1563
Straightforward coefficient operations.
1564
</Item>
1565
1566
<Mark>
1567
<C>SplittedClassTransposition(<A>ct</A>,<A>k</A>)</C>
1568
</Mark>
1569
<Item>
1570
<Q>Straightforward</Q>.
1571
</Item>
1572
1573
<Mark>
1574
<C>StructureDescription(<A>G</A>)</C>
1575
</Mark>
1576
<Item>
1577
This method uses a combination of techniques to obtain some basic
1578
information on the structure of an rcwa group.
1579
The returned description reflects the way the group has been built
1580
(<C>DirectProduct</C>, <C>WreathProduct</C>, etc.).
1581
</Item>
1582
1583
<Mark>
1584
<C><A>f</A>+<A>g</A></C>
1585
</Mark>
1586
<Item>
1587
Pointwise addition of affine mappings.
1588
</Item>
1589
1590
<Mark>
1591
<C>String(<A>obj</A>)</C>
1592
</Mark>
1593
<Item>
1594
<Q>Trivial</Q>.
1595
</Item>
1596
1597
<Mark>
1598
<C>Support(<A>G</A>)</C>
1599
</Mark>
1600
<Item>
1601
<Q>Straightforward</Q>.
1602
</Item>
1603
1604
<Mark>
1605
<C>Trajectory(<A>f</A>,<A>n</A>,...)</C>
1606
</Mark>
1607
<Item>
1608
Iterated application of an rcwa mapping.
1609
In the methods computing <Q>accumulated coefficients</Q>,
1610
additionally composition of affine mappings.
1611
</Item>
1612
1613
<Mark>
1614
<C>TransitionGraph(<A>f</A>,<A>m</A>)</C>
1615
</Mark>
1616
<Item>
1617
<Q>Straightforward</Q> -- just check a sufficiently long interval.
1618
</Item>
1619
1620
<Mark>
1621
<C>TransitionMatrix(<A>f</A>,<A>m</A>)</C>
1622
</Mark>
1623
<Item>
1624
Evaluation of the given expression.
1625
</Item>
1626
1627
<Mark>
1628
<C>TransposedClasses(<A>g</A>)</C>
1629
</Mark>
1630
<Item>
1631
<Q>Trivial</Q>.
1632
</Item>
1633
1634
<Mark>
1635
<C>View(<A>f</A>)</C>
1636
</Mark>
1637
<Item>
1638
<Q>Trivial</Q>.
1639
</Item>
1640
1641
<Mark>
1642
<C>WreathProduct(<A>G</A>,<A>P</A>)</C>
1643
</Mark>
1644
<Item>
1645
Uses <C>DirectProduct</C> to embed the <C>NrMovedPoints(<A>P</A>)</C>th
1646
direct power of&nbsp;<A>G</A>, and <C>RcwaMapping</C>, Part&nbsp;(d)
1647
to embed the finite permutation group&nbsp;<A>P</A>.
1648
</Item>
1649
1650
<Mark>
1651
<C>WreathProduct(<A>G</A>,<A>Z</A>)</C>
1652
</Mark>
1653
<Item>
1654
Restricts <A>G</A> to the residue class&nbsp;3(4), and encodes the
1655
generator of&nbsp;<A>Z</A> as <M>\tau_{0(2),1(2)} \cdot
1656
\tau_{0(2),1(4)}</M>. It is used that the images of&nbsp;3(4) under
1657
powers of this mapping are pairwise disjoint residue classes.
1658
</Item>
1659
1660
<Mark>
1661
<C>Zero(<A>f</A>)</C>
1662
</Mark>
1663
<Item>
1664
<Q>Trivial</Q>.
1665
</Item>
1666
1667
</List>
1668
1669
</Chapter>
1670
1671
<!-- #################################################################### -->
1672
1673