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
<!-- ## zxz.xml RCWA documentation Stefan Kohl ## -->
4
<!-- ## ## -->
5
<!-- #################################################################### -->
6
7
<Chapter Label="ch:ZxZ">
8
<Heading>
9
Residue-Class-Wise Affine Mappings, Groups and Monoids over <M>&ZZ;^2</M>
10
</Heading>
11
12
<Ignore Remark="set screen width to 75, for the example tester">
13
<Example>
14
<![CDATA[
15
gap> SizeScreen([75,24]);;
16
]]>
17
</Example>
18
</Ignore>
19
20
This chapter describes how to compute with residue-class-wise affine mappings
21
of&nbsp;<M>&ZZ;^2</M> and with groups and monoids formed by them. <P/>
22
23
The rings on which we have defined residue-class-wise affine mappings so
24
far have all been principal ideal domains, and it has been crucial that all
25
nontrivial principal ideals had finite index. However, the rings
26
<M>&ZZ;^d</M>, <M>d > 1</M> are not principal ideal domains. Furthermore,
27
their principal ideals have infinite index. Therefore as moduli of
28
residue-class-wise affine mappings we can only use lattices of full rank,
29
for these are precisely the ideals of <M>&ZZ;^d</M> of finite index.
30
However, on the other hand we can also be more permissive and look at
31
<M>&ZZ;^d</M> not as a ring, but rather as a free &ZZ;-module.
32
The consequence of this is that then an affine mapping of <M>&ZZ;^d</M>
33
is not just given by <M>v \mapsto (av+b)/c</M> for some
34
<M>a, b, c \in &ZZ;^d</M>, but rather by <M>v \mapsto (vA+b)/c</M>,
35
where <M>A \in &ZZ;^{d \times d}</M>. Also for technical reasons concerning
36
the implementation in &GAP;, looking at <M>&ZZ;^d</M> as a free &ZZ;-module
37
is preferable -- in &GAP;, <C>Integers^d</C> is not a ring, and
38
multiplying lists of integers means forming their scalar product.
39
40
<!-- #################################################################### -->
41
42
<Section Label="sec:DefinitionOfRcwaMappingsOfZxZ">
43
<Heading>
44
The definition of residue-class-wise affine mappings of <M>&ZZ;^d</M>
45
</Heading>
46
47
<Index Key="rcwa mapping" Subkey="of Z x Z, definition">rcwa mapping</Index>
48
49
Let <M>d \in &NN;</M>. We call a mapping <M>f: &ZZ;^d \rightarrow &ZZ;^d</M>
50
<E>residue-class-wise affine</E> if there is a lattice <M>L = &ZZ;^d M</M>
51
where <M>M \in &ZZ;^{d \times d}</M> is a matrix of full rank, such that the
52
restrictions of <M>f</M> to the residue classes <M>r + L \in &ZZ;^d/L</M>
53
are all affine.
54
This means that for any residue class <M>r + L \in &ZZ;^d/L</M>,
55
there is a matrix <M>A_{r+L} \in &ZZ;^{d \times d}</M>, a vector
56
<M>b_{r+L} \in &ZZ;^d</M> and a positive integer <M>c_{r+L}</M>
57
such that the restriction of&nbsp;<M>f</M> to <M>r + L</M> is given by
58
<M>f|_{r + L}: \ r + L \ \rightarrow \ &ZZ;^d, \ \
59
v \ \mapsto \ (v \cdot A_{r+L} + b_{r+L})/c_{r+L}</M>.
60
For reasons of uniqueness, we assume that <M>L</M> is chosen maximal with
61
respect to inclusion, and that no prime factor of <M>c_{r+L}</M> divides all
62
coefficients of <M>A_{r+L}</M> and&nbsp;<M>b_{r+L}</M>. <P/>
63
64
<Index Key="rcwa mapping" Subkey="modulus">rcwa mapping</Index>
65
<Index Key="rcwa mapping" Subkey="class-wise translating">
66
rcwa mapping
67
</Index>
68
<Index Key="class-wise translating" Subkey="definition">
69
class-wise translating
70
</Index>
71
<Index Key="prime set" Subkey="definition">prime set</Index>
72
73
We call the lattice <M>L</M> the <E>modulus</E> of <M>f</M>,
74
written Mod(<M>f</M>).
75
Further we define the <E>prime set</E> of&nbsp;<M>f</M> as the set of
76
all primes which divide the determinant of at least one of the coefficients
77
<M>A_{r+L}</M> or which divide the determinant of&nbsp;<M>M</M>, and
78
we call the mapping&nbsp;<M>f</M> <E>class-wise translating</E> if all
79
coefficients&nbsp;<M>A_{r+L}</M> are identity matrices and all
80
coefficients&nbsp;<M>c_{r+L}</M> are equal to&nbsp;1. <P/>
81
82
For the sake of simplicity, we identify a lattice with the Hermite normal
83
form of the matrix by whose rows it is spanned.
84
85
</Section>
86
87
<!-- #################################################################### -->
88
89
<Section Label="sec:EnteringRcwaMappingsOfZxZ">
90
<Heading>
91
Entering residue-class-wise affine mappings of <M>&ZZ;^2</M>
92
</Heading>
93
94
Residue-class-wise affine mappings of <M>&ZZ;^2</M> can be entered
95
using the general constructor
96
<Ref Meth="RcwaMapping" Label="by ring, modulus and list of coefficients"/>
97
or the more specialized functions
98
<Ref Func="ClassTransposition" Label="r1, m1, r2, m2"/>,
99
<Ref Func="ClassRotation" Label="cl, u"/> and
100
<Ref Func="ClassShift" Label="cl"/>. The arguments differ only slightly.
101
102
<ManSection>
103
<Heading>
104
RcwaMapping (the general constructor; methods for <M>&ZZ;^2</M>)
105
</Heading>
106
<Meth Name="RcwaMapping" Arg="R, L, coeffs"
107
Label="by ring = Z x Z, modulus and coefficients"/>
108
<Meth Name="RcwaMapping" Arg="P1, P2"
109
Label="by two partitions of Z x Z into residue classes"/>
110
<Meth Name="RcwaMapping" Arg="cycles"
111
Label="of Z x Z, by residue class cycles"/>
112
<Meth Name="RcwaMapping" Arg="f, g"
113
Label="of Z x Z, by projections to coordinates"/>
114
<Returns> an rcwa mapping of <M>&ZZ;^2</M>. </Returns>
115
<Description>
116
The above methods return
117
<List>
118
<Mark>(a)</Mark>
119
<Item>
120
the rcwa mapping of <C><A>R</A> = Integers^2</C>
121
with modulus&nbsp;<A>L</A> and coefficients <A>coeffs</A>,
122
</Item>
123
<Mark>(b)</Mark>
124
<Item>
125
an rcwa permutation which induces a bijection between
126
the partitions <A>P1</A> and <A>P2</A> of&nbsp;<M>&ZZ;^2</M>
127
into residue classes and which is affine on the elements
128
of <A>P1</A>,
129
</Item>
130
<Mark>(c)</Mark>
131
<Item>
132
an rcwa permutation with <Q>residue class cycles</Q> given
133
by a list <A>cycles</A> of lists of pairwise disjoint residue classes
134
of&nbsp;<M>&ZZ;^2</M> each of which it permutes cyclically, and
135
</Item>
136
<Mark>(d)</Mark>
137
<Item>
138
the rcwa mapping of&nbsp;<M>&ZZ;^2</M> whose projections to the
139
coordinates are given by <A>f</A> and&nbsp;<A>g</A>,
140
</Item>
141
</List>
142
respectively. <P/>
143
144
The modulus of an rcwa mapping of <M>&ZZ;^2</M> is a lattice of full
145
rank. It is represented by a matrix <A>L</A> in Hermite normal form,
146
whose rows are the spanning vectors. <P/>
147
148
A coefficient list for an rcwa mapping of <M>&ZZ;^2</M> with
149
modulus&nbsp;<A>L</A> consists of <M>|\det(<A>L</A>)|</M> coefficient
150
triples <C>[</C><M>A_{r+&ZZ;^2<A>L</A>}</M>, <M>b_{r+&ZZ;^2<A>L</A>}</M>,
151
<M>c_{r+&ZZ;^2<A>L</A>}</M><C>]</C>.
152
The entries <M>A_{r+&ZZ;^2<A>L</A>}</M> are <M>2 \times 2</M> integer
153
matrices, the <M>b_{r+&ZZ;^2<A>L</A>}</M> are elements of <M>&ZZ;^2</M>,
154
i.e. lists of two integers, and the <M>c_{r+&ZZ;^2<A>L</A>}</M> are
155
integers.
156
The ordering of the coefficient triples is determined by the ordering of
157
the representatives of the residue classes <M>r+&ZZ;^2<A>L</A></M> in
158
the sorted list returned by <C>AllResidues(Integers^2,<A>L</A>)</C>. <P/>
159
160
The methods for the operation <C>RcwaMapping</C> perform a number of
161
argument checks, which can be skipped by using <C>RcwaMappingNC</C>
162
instead. <P/>
163
164
Last but not least, regarding Method&nbsp;(d) it should be mentioned
165
that only very special rcwa mappings of&nbsp;<M>&ZZ;^2</M> have
166
projections to coordinates.
167
<Example>
168
<![CDATA[
169
gap> R := Integers^2;;
170
gap> twice := RcwaMapping(R,[[1,0],[0,1]],
171
> [[[[2,0],[0,2]],[0,0],1]]); # method (a)
172
Rcwa mapping of Z^2: (m,n) -> (2m,2n)
173
gap> [4,5]^twice;
174
[ 8, 10 ]
175
gap> twice1 := RcwaMapping(R,[[1,0],[0,1]],
176
> [[[[2,0],[0,1]],[0,0],1]]); # method (a)
177
Rcwa mapping of Z^2: (m,n) -> (2m,n)
178
gap> [4,5]^twice1;
179
[ 8, 5 ]
180
gap> Image(twice1);
181
(0,0)+(2,0)Z+(0,1)Z
182
gap> hyperbolic := RcwaMapping(R,[[1,0],[0,2]],
183
> [[[[4,0],[0,1]],[0, 0],2],
184
> [[[4,0],[0,1]],[2,-1],2]]); # method (a)
185
<rcwa mapping of Z^2 with modulus (1,0)Z+(0,2)Z>
186
gap> IsBijective(hyperbolic);
187
true
188
gap> Display(hyperbolic);
189
190
Rcwa permutation of Z^2 with modulus (1,0)Z+(0,2)Z
191
192
/
193
| (2m,n/2) if (m,n) in (0,0)+(1,0)Z+(0,2)Z
194
(m,n) |-> < (2m+1,(n-1)/2) if (m,n) in (0,1)+(1,0)Z+(0,2)Z
195
|
196
\
197
198
gap> Trajectory(hyperbolic,[0,10000],20);
199
[ [ 0, 10000 ], [ 0, 5000 ], [ 0, 2500 ], [ 0, 1250 ], [ 0, 625 ],
200
[ 1, 312 ], [ 2, 156 ], [ 4, 78 ], [ 8, 39 ], [ 17, 19 ], [ 35, 9 ],
201
[ 71, 4 ], [ 142, 2 ], [ 284, 1 ], [ 569, 0 ], [ 1138, 0 ],
202
[ 2276, 0 ], [ 4552, 0 ], [ 9104, 0 ], [ 18208, 0 ] ]
203
gap> P1 := AllResidueClassesModulo(R,[[2,1],[0,2]]);
204
[ (0,0)+(2,1)Z+(0,2)Z, (0,1)+(2,1)Z+(0,2)Z, (1,0)+(2,1)Z+(0,2)Z,
205
(1,1)+(2,1)Z+(0,2)Z ]
206
gap> P2 := AllResidueClassesModulo(R,[[1,0],[0,4]]);
207
[ (0,0)+(1,0)Z+(0,4)Z, (0,1)+(1,0)Z+(0,4)Z, (0,2)+(1,0)Z+(0,4)Z,
208
(0,3)+(1,0)Z+(0,4)Z ]
209
gap> g := RcwaMapping(P1,P2); # method (b)
210
<rcwa permutation of Z^2 with modulus (2,1)Z+(0,2)Z>
211
gap> P1^g = P2;
212
true
213
gap> Display(g:AsTable);
214
215
Rcwa permutation of Z^2 with modulus (2,1)Z+(0,2)Z
216
217
[m,n] mod (2,1)Z+(0,2)Z | Image of [m,n]
218
-----------------------------+-------------------------------------------
219
[0,0] | [m/2,-m+2n]
220
[0,1] | [m/2,-m+2n-1]
221
[1,0] | [(m-1)/2,-m+2n+3]
222
[1,1] | [(m-1)/2,-m+2n+2]
223
224
gap> classes := List([[[0,0],[[2,1],[0,2]]],[[1,0],[[2,1],[0,4]]],
225
> [[1,1],[[4,2],[0,4]]]],ResidueClass);
226
[ (0,0)+(2,1)Z+(0,2)Z, (1,0)+(2,1)Z+(0,4)Z, (1,1)+(4,2)Z+(0,4)Z ]
227
gap> g := RcwaMapping([classes]); # method (c)
228
<rcwa permutation of Z^2 with modulus (4,2)Z+(0,4)Z, of order 3>
229
gap> Permutation(g,classes);
230
(1,2,3)
231
gap> Support(g);
232
(0,0)+(2,1)Z+(0,2)Z U (1,0)+(2,1)Z+(0,4)Z U (1,1)+(4,2)Z+(0,4)Z
233
gap> Display(g);
234
235
Rcwa permutation of Z^2 with modulus (4,2)Z+(0,4)Z, of order 3
236
237
/
238
| (m+1,(-m+4n)/2) if (m,n) in (0,0)+(2,1)Z+(0,2)Z
239
| (2m-1,(m+2n+1)/2) if (m,n) in (1,0)+(2,1)Z+(0,4)Z
240
(m,n) |-> < ((m-1)/2,(n-1)/2) if (m,n) in (1,1)+(4,2)Z+(0,4)Z
241
| (m,n) otherwise
242
|
243
\
244
245
gap> g := RcwaMapping(ClassTransposition(0,2,1,2),
246
> ClassReflection(0,2)); # method (d)
247
<rcwa mapping of Z^2 with modulus (2,0)Z+(0,2)Z>
248
gap> Display(g);
249
250
Rcwa mapping of Z^2 with modulus (2,0)Z+(0,2)Z
251
252
/
253
| (m+1,-n) if (m,n) in (0,0)+(2,0)Z+(0,2)Z
254
| (m+1,n) if (m,n) in (0,1)+(2,0)Z+(0,2)Z
255
(m,n) |-> < (m-1,-n) if (m,n) in (1,0)+(2,0)Z+(0,2)Z
256
| (m-1,n) if (m,n) in (1,1)+(2,0)Z+(0,2)Z
257
|
258
\
259
260
gap> g^2;
261
IdentityMapping( ( Integers^2 ) )
262
gap> List(ProjectionsToCoordinates(g),Factorization);
263
[ [ ( 0(2), 1(2) ) ], [ ClassReflection( 0(2) ) ] ]
264
]]>
265
</Example>
266
</Description>
267
</ManSection>
268
269
<ManSection>
270
<Heading> ClassTransposition (for <M>&ZZ;^2</M>) </Heading>
271
<Func Name="ClassTransposition" Arg="r1, L1, r2, L2"
272
Label="r1, L1, r2, L2 (for Z x Z)"/>
273
<Func Name="ClassTransposition" Arg="cl1, cl2"
274
Label="cl1, cl2 (for Z x Z)"/>
275
<Returns>
276
the class transposition <M>\tau_{r_1+&ZZ;^2L_1,r_2+&ZZ;^2L_2}</M>.
277
</Returns>
278
<Description>
279
Let <M>d \in &NN;</M>, and let <M>L_1, L_2 \in &ZZ;^{d \times d}</M> be
280
matrices of full rank which are in Hermite normal form. Further let
281
<M>r_1 + &ZZ;^d L_1</M> and <M>r_2 + &ZZ;^d L_2</M> be disjoint residue
282
classes, and assume that the representatives <M>r_1</M> and <M>r_2</M>
283
are reduced modulo&nbsp;<M>&ZZ;^d L_1</M> and&nbsp;<M>&ZZ;^d L_2</M>,
284
respectively. Then we define the <E>class transposition</E>
285
<M>\tau_{r_1+&ZZ;^d L_1, r_2+&ZZ;^d L_2} \in {\rm Sym}(&ZZ;^d)</M> as the
286
involution which interchanges <M>r_1 + k L_1</M> and <M>r_2 + k L_2</M>
287
for all <M>k \in &ZZ;^d</M>. <P/>
288
289
The class transposition <M>\tau_{r_1+&ZZ;^d L_1, r_2+&ZZ;^d L_2}</M>
290
interchanges the residue classes <M>r_1+&ZZ;^d L_1</M> and
291
<M>r_2+&ZZ;^d L_2</M>, and fixes the complement of their union pointwise.
292
The set of all class transpositions of&nbsp;<M>&ZZ;^d</M> generates the
293
simple group CT(<M>&ZZ;^d</M>) (cf.&nbsp;<Cite Key="Kohl13"/>). <P/>
294
295
<Index Key="TransposedClasses"
296
Subkey="of a class transposition of Z x Z">
297
<C>TransposedClasses</C>
298
</Index>
299
300
In the four-argument form, the arguments <A>r1</A>, <A>L1</A>,
301
<A>r2</A> and&nbsp;<A>L2</A> stand for <M>r_1</M>, <M>L_1</M>,
302
<M>r_2</M> and&nbsp;<M>L_2</M>, respectively.
303
In the two-argument form, the arguments <A>cl1</A> and&nbsp;<A>cl2</A>
304
stand for the residue classes <M>r_1+&ZZ;^2 L_1</M>
305
and&nbsp;<M>r_2+&ZZ;^2 L_2</M>, respectively.
306
Enclosing the argument list in list brackets is permitted.
307
The residue classes <M>r_1+&ZZ;^2 L_1</M> and <M>r_2+&ZZ;^2 L_2</M>
308
are stored as an attribute <C>TransposedClasses</C>. <P/>
309
310
<Index Key="SplittedClassTransposition"
311
Subkey="for a class transposition of Z x Z">
312
<C>SplittedClassTransposition</C>
313
</Index>
314
315
There is also a method for <C>SplittedClassTransposition</C> available
316
for class transpositions of <M>&ZZ;^2</M>. This method takes as first
317
argument the class transposition, and as second argument a list of
318
two integers. These integers are the numbers of parts into which the
319
class transposition is to be sliced in each dimension. Note that the
320
product of the returned class transpositions is not always equal to
321
the class transposition passed as first argument. However this equality
322
holds if the first entry of the second argument is&nbsp;1. <P/>
323
<Example>
324
<![CDATA[
325
gap> ct := ClassTransposition([0,0],[[2,1],[0,2]],[1,0],[[2,1],[0,4]]);
326
( (0,0)+(2,1)Z+(0,2)Z, (1,0)+(2,1)Z+(0,4)Z )
327
gap> Display(ct);
328
329
Rcwa permutation of Z^2 with modulus (2,1)Z+(0,4)Z, of order 2
330
331
/
332
| (m+1,(-m+4n)/2) if (m,n) in (0,0)+(2,1)Z+(0,2)Z
333
(m,n) |-> < (m-1,(m+2n-1)/4) if (m,n) in (1,0)+(2,1)Z+(0,4)Z
334
| (m,n) otherwise
335
\
336
337
gap> TransposedClasses(ct);
338
[ (0,0)+(2,1)Z+(0,2)Z, (1,0)+(2,1)Z+(0,4)Z ]
339
gap> ct = ClassTransposition(last);
340
true
341
gap> SplittedClassTransposition(ct,[1,2]);
342
[ ( (0,0)+(2,1)Z+(0,4)Z, (1,0)+(2,1)Z+(0,8)Z ),
343
( (0,2)+(2,1)Z+(0,4)Z, (1,4)+(2,1)Z+(0,8)Z ) ]
344
gap> Product(last) = ct;
345
true
346
gap> SplittedClassTransposition(ct,[2,1]);
347
[ ( (0,0)+(4,0)Z+(0,2)Z, (1,0)+(4,2)Z+(0,4)Z ),
348
( (2,1)+(4,0)Z+(0,2)Z, (3,1)+(4,2)Z+(0,4)Z ) ]
349
gap> Product(last) = ct;
350
false
351
]]>
352
</Example>
353
</Description>
354
</ManSection>
355
356
<ManSection>
357
<Heading> ClassRotation (for <M>&ZZ;^2</M>) </Heading>
358
<Func Name="ClassRotation" Arg="r, L, u" Label="r, L, u; for Z x Z"/>
359
<Func Name="ClassRotation" Arg="cl, u" Label="cl, u; for Z x Z"/>
360
<Returns> the class rotation <M>\rho_{r(m),u}</M>. </Returns>
361
<Description>
362
Let <M>d \in &NN;</M>. Given a residue class <M>r+&ZZ;^dL</M>
363
and a matrix <M>u \in {\rm GL}(d,&ZZ;)</M>, the <E>class rotation</E>
364
<M>\rho_{r+&ZZ;^dL,u}</M> is the rcwa mapping which maps
365
<M>v \in r+&ZZ;^dL</M> to <M>vu + r(1-u)</M>
366
and which fixes <M>&ZZ;^d \setminus r+&ZZ;^dL</M> pointwise.
367
368
<Index Key="RotationFactor" Subkey="of a class rotation of Z x Z">
369
<C>RotationFactor</C>
370
</Index>
371
372
In the two-argument form, the argument&nbsp;<A>cl</A> stands for the
373
residue class&nbsp;<M>r+&ZZ;^dL</M>. Enclosing the argument list in list
374
brackets is permitted. The argument <A>u</A> is stored as an attribute
375
<C>RotationFactor</C>.
376
<Example>
377
<![CDATA[
378
gap> interchange := ClassRotation([0,0],[[1,0],[0,1]],[[0,1],[1,0]]);
379
ClassRotation( Z^2, [ [ 0, 1 ], [ 1, 0 ] ] )
380
gap> Display(interchange);
381
Rcwa permutation of Z^2: (m,n) -> (n,m)
382
gap> classes := AllResidueClassesModulo(Integers^2,[[2,1],[0,3]]);
383
[ (0,0)+(2,1)Z+(0,3)Z, (0,1)+(2,1)Z+(0,3)Z, (0,2)+(2,1)Z+(0,3)Z,
384
(1,0)+(2,1)Z+(0,3)Z, (1,1)+(2,1)Z+(0,3)Z, (1,2)+(2,1)Z+(0,3)Z ]
385
gap> transvection := ClassRotation(classes[5],[[1,1],[0,1]]);
386
ClassRotation((1,1)+(2,1)Z+(0,3)Z,[[1,1],[0,1]])
387
gap> Display(transvection);
388
389
Tame rcwa permutation of Z^2 with modulus (2,1)Z+(0,3)Z, of order infinity
390
391
/
392
| (m,(3m+2n-3)/2) if (m,n) in (1,1)+(2,1)Z+(0,3)Z
393
(m,n) |-> < (m,n) otherwise
394
|
395
\
396
]]>
397
</Example>
398
</Description>
399
</ManSection>
400
401
<ManSection>
402
<Heading> ClassShift (for <M>&ZZ;^2</M>) </Heading>
403
<Func Name="ClassShift" Arg="r, L, k" Label="r, L, k; for Z x Z"/>
404
<Func Name="ClassShift" Arg="cl, k" Label="cl, k; for Z x Z"/>
405
<Returns> the class shift <M>\nu_{r+&ZZ;^dL,k}</M>. </Returns>
406
<Description>
407
Let <M>d \in &NN;</M>. Given a residue class <M>r+&ZZ;^dL</M> and
408
an integer <M>k \in \{1, \dots, d\}</M>, the <E>class shift</E>
409
<M>\nu_{r+&ZZ;^dL,k}</M> is the rcwa mapping which maps
410
<M>v \in r+&ZZ;^dL</M> to <M>v + L_k</M> and which fixes
411
<M>&ZZ;^d \setminus r+&ZZ;^dL</M> pointwise.
412
Here <M>L_k</M> denotes the <M>k</M>th row of&nbsp;<M>L</M>. <P/>
413
414
In the two-argument form, the argument&nbsp;<A>cl</A> stands for the
415
residue class&nbsp;<M>r+&ZZ;^dL</M>. Enclosing the argument list in
416
list brackets is permitted.
417
<Example>
418
<![CDATA[
419
gap> shift1 := ClassShift([0,0],[[1,0],[0,1]],1);
420
ClassShift( Z^2, 1 )
421
gap> Display(shift1);
422
Tame rcwa permutation of Z^2: (m,n) -> (m+1,n)
423
gap> s := ClassShift(ResidueClass([1,1],[[2,1],[0,2]]),2);
424
ClassShift((1,1)+(2,1)Z+(0,2)Z,2)
425
gap> Display(s);
426
427
Tame rcwa permutation of Z^2 with modulus (2,1)Z+(0,2)Z, of order infinity
428
429
/
430
| (m,n+2) if (m,n) in (1,1)+(2,1)Z+(0,2)Z
431
(m,n) |-> < (m,n) if (m,n) in (0,0)+(2,0)Z+(0,1)Z U
432
| (1,0)+(2,1)Z+(0,2)Z
433
\
434
]]>
435
</Example>
436
</Description>
437
</ManSection>
438
439
<Index Key="IsClassTransposition" Subkey="for an rcwa mapping of Z x Z">
440
<C>IsClassTransposition</C>
441
</Index>
442
<Index Key="IsClassRotation" Subkey="for an rcwa mapping of Z x Z">
443
<C>IsClassRotation</C>
444
</Index>
445
<Index Key="IsClassShift" Subkey="for an rcwa mapping of Z x Z">
446
<C>IsClassShift</C>
447
</Index>
448
449
As for other rings, class transpositions, class rotations and
450
class shifts of&nbsp;<M>&ZZ;^2</M> have the distinguishing properties
451
<C>IsClassTransposition</C>, <C>IsClassRotation</C>
452
and <C>IsClassShift</C>.
453
454
</Section>
455
456
<!-- #################################################################### -->
457
458
<Section Label="sec:MethodsForRcwaMappingsOfZxZ">
459
<Heading>
460
Methods for residue-class-wise affine mappings of <M>&ZZ;^2</M>
461
</Heading>
462
463
There are methods available for rcwa mappings of <M>&ZZ;^2</M> for the
464
following general operations:
465
466
<Index Key="View" Subkey="for an rcwa mapping of Z x Z">
467
<C>View</C>
468
</Index>
469
<Index Key="Display" Subkey="for an rcwa mapping of Z x Z">
470
<C>Display</C>
471
</Index>
472
<Index Key="Print" Subkey="for an rcwa mapping of Z x Z">
473
<C>Print</C>
474
</Index>
475
<Index Key="String" Subkey="for an rcwa mapping of Z x Z">
476
<C>String</C>
477
</Index>
478
<Index Key="LaTeXStringRcwaMapping" Subkey="for an rcwa mapping of Z x Z">
479
<C>LaTeXStringRcwaMapping</C>
480
</Index>
481
<Index Key="LaTeXAndXDVI" Subkey="for an rcwa mapping of Z x Z">
482
<C>LaTeXAndXDVI</C>
483
</Index>
484
<Index Key="Modulus" Subkey="of an rcwa mapping of Z x Z">
485
<C>Modulus</C>
486
</Index>
487
<Index Key="Coefficients" Subkey="of an rcwa mapping of Z x Z">
488
<C>Coefficients</C>
489
</Index>
490
<Index Key="Support" Subkey="of an rcwa mapping of Z x Z">
491
<C>Support</C>
492
</Index>
493
<Index Key="MovedPoints" Subkey="of an rcwa mapping of Z x Z">
494
<C>MovedPoints</C>
495
</Index>
496
<Index Key="Order" Subkey="of an rcwa mapping of Z x Z">
497
<C>Order</C>
498
</Index>
499
<Index Key="Multiplier" Subkey="of an rcwa mapping of Z x Z">
500
<C>Multiplier</C>
501
</Index>
502
<Index Key="Divisor" Subkey="of an rcwa mapping of Z x Z">
503
<C>Divisor</C>
504
</Index>
505
<Index Key="PrimeSet" Subkey="of an rcwa mapping of Z x Z">
506
<C>PrimeSet</C>
507
</Index>
508
<Index Key="One" Subkey="for an rcwa mapping of Z x Z">
509
<C>One</C>
510
</Index>
511
<Index Key="Zero" Subkey="for an rcwa mapping of Z x Z">
512
<C>Zero</C>
513
</Index>
514
<Index Key="IsInjective" Subkey="for an rcwa mapping of Z x Z">
515
<C>IsInjective</C>
516
</Index>
517
<Index Key="IsSurjective" Subkey="for an rcwa mapping of Z x Z">
518
<C>IsSurjective</C>
519
</Index>
520
<Index Key="IsBijective" Subkey="for an rcwa mapping of Z x Z">
521
<C>IsBijective</C>
522
</Index>
523
<Index Key="IsTame" Subkey="for an rcwa mapping of Z x Z">
524
<C>IsTame</C>
525
</Index>
526
<Index Key="IsIntegral" Subkey="for an rcwa mapping of Z x Z">
527
<C>IsIntegral</C>
528
</Index>
529
<Index Key="IsBalanced" Subkey="for an rcwa mapping of Z x Z">
530
<C>IsBalanced</C>
531
</Index>
532
<Index Key="IsClassWiseOrderPreserving"
533
Subkey="for an rcwa mapping of Z x Z">
534
<C>IsClassWiseOrderPreserving</C>
535
</Index>
536
<Index Key="IsOne" Subkey="for an rcwa mapping of Z x Z">
537
<C>IsOne</C>
538
</Index>
539
<Index Key="IsZero" Subkey="for an rcwa mapping of Z x Z">
540
<C>IsZero</C>
541
</Index>
542
<Index Key="Trajectory" Subkey="for rcwa mappings of Z x Z">
543
<C>Trajectory</C>
544
</Index>
545
<Index Key="ShortCycles"
546
Subkey="for rcwa perm. of Z x Z, set of points and max. length">
547
<C>ShortCycles</C>
548
</Index>
549
<Index Key="Multpk" Subkey="for rcwa mapping of Z x Z, prime and exponent">
550
<C>Multpk</C>
551
</Index>
552
<Index Key="ClassWiseOrderPreservingOn" Subkey="for rcwa mappings of Z x Z">
553
<C>ClassWiseOrderPreservingOn</C>
554
</Index>
555
<Index Key="ClassWiseOrderReversingOn" Subkey="for rcwa mappings of Z x Z">
556
<C>ClassWiseOrderReversingOn</C>
557
</Index>
558
<Index Key="ClassWiseConstantOn" Subkey="for rcwa mappings of Z x Z">
559
<C>ClassWiseConstantOn</C>
560
</Index>
561
562
<List>
563
<Mark> Output </Mark>
564
<Item>
565
<C>View</C>, <C>Display</C>, <C>Print</C>, <C>String</C>,
566
<C>LaTeXStringRcwaMapping</C>, <C>LaTeXAndXDVI</C>.
567
</Item>
568
<Mark> Access to components </Mark>
569
<Item> <C>Modulus</C>, <C>Coefficients</C>. </Item>
570
<Mark> Attributes </Mark>
571
<Item>
572
<C>Support</C> / <C>MovedPoints</C>, <C>Order</C>,
573
<C>Multiplier</C>, <C>Divisor</C>, <C>PrimeSet</C>,
574
<C>One</C>, <C>Zero</C>.
575
</Item>
576
<Mark> Properties </Mark>
577
<Item>
578
<C>IsInjective</C>, <C>IsSurjective</C>, <C>IsBijective</C>,
579
<C>IsTame</C>, <C>IsIntegral</C>, <C>IsBalanced</C>,
580
<C>IsClassWiseOrderPreserving</C>, <C>IsOne</C>, <C>IsZero</C>.
581
</Item>
582
<Mark> Action on <M>&ZZ;^d</M> </Mark>
583
<Item>
584
<C>^</C> (for points / finite sets / residue class unions),
585
<C>Trajectory</C>, <C>ShortCycles</C>, <C>Multpk</C>,
586
<C>ClassWiseOrderPreservingOn</C>, <C>ClassWiseOrderReversingOn</C>,
587
<C>ClassWiseConstantOn</C>.
588
</Item>
589
<Mark> Arithmetical operations </Mark>
590
<Item>
591
<C>=</C>, <C>*</C> (multiplication / composition and multiplication
592
by a <M>2 \times 2</M> matrix or an integer),
593
<C>^</C> (exponentiation and conjugation), <C>Inverse</C>,
594
<C>+</C> (addition of a constant).
595
</Item>
596
</List>
597
598
The above operations are documented either in the &GAP; Reference Manual
599
or earlier in this manual. The operations which are special for rcwa mappings
600
of&nbsp;<M>&ZZ;^2</M> are described in the sequel. <P/>
601
602
<ManSection>
603
<Attr Name="ProjectionsToCoordinates" Arg="f"
604
Label="for an rcwa mapping of Z x Z"/>
605
<Returns>
606
the projections of the rcwa mapping <A>f</A> of <M>&ZZ;^2</M> to the
607
coordinates if such projections exist, and <C>fail</C> otherwise.
608
</Returns>
609
<Description>
610
An rcwa mapping can be projected to the first / second coordinate if and
611
only if the first / second coordinate of the image of a point depends
612
only on the first / second coordinate of the preimage. Note that this is
613
a very strong and restrictive condition.
614
<Example>
615
<![CDATA[
616
gap> f := RcwaMapping(ClassTransposition(0,2,1,2),ClassReflection(0,2));;
617
gap> Display(f);
618
619
Rcwa mapping of Z^2 with modulus (2,0)Z+(0,2)Z
620
621
/
622
| (m+1,-n) if (m,n) in (0,0)+(2,0)Z+(0,2)Z
623
| (m+1,n) if (m,n) in (0,1)+(2,0)Z+(0,2)Z
624
(m,n) |-> < (m-1,-n) if (m,n) in (1,0)+(2,0)Z+(0,2)Z
625
| (m-1,n) if (m,n) in (1,1)+(2,0)Z+(0,2)Z
626
|
627
\
628
629
gap> List(ProjectionsToCoordinates(f),Factorization);
630
[ [ ( 0(2), 1(2) ) ], [ ClassReflection( 0(2) ) ] ]
631
]]>
632
</Example>
633
</Description>
634
</ManSection>
635
636
</Section>
637
638
<!-- #################################################################### -->
639
640
<Section Label="sec:MethodsForRcwaGroupsOverZxZ">
641
<Heading>
642
Methods for residue-class-wise affine groups and -monoids over <M>&ZZ;^2</M>
643
</Heading>
644
645
<Index Key="Rcwa"
646
Subkey="the monoid formed by all rcwa permutations of Z x Z">
647
<C>Rcwa</C>
648
</Index>
649
<Index Key="RCWA"
650
Subkey="the group formed by all rcwa permutations of Z x Z">
651
<C>RCWA</C>
652
</Index>
653
<Index Key="CT"
654
Subkey="the group generated by all class transpositions of Z x Z">
655
<C>CT</C>
656
</Index>
657
658
Residue-class-wise affine groups over <M>&ZZ;^2</M> can be entered by
659
<C>Group</C>, <C>GroupByGenerators</C> and <C>GroupWithGenerators</C>,
660
like any groups in &GAP;. Likewise, residue-class-wise affine monoids over
661
<M>&ZZ;^2</M> can be entered by <C>Monoid</C> and <C>MonoidByGenerators</C>.
662
The groups RCWA(<M>&ZZ;^2</M>) and CT(<M>&ZZ;^2</M>) are entered
663
as <C>RCWA(Integers^2)</C> and <C>CT(Integers^2)</C>, respectively.
664
The monoid Rcwa(<M>&ZZ;^2</M>) is entered as <C>Rcwa(Integers^2)</C>. <P/>
665
666
<Index Key="Size" Subkey="for an rcwa group over Z x Z">
667
<C>Size</C>
668
</Index>
669
<Index Key="IsIntegral" Subkey="for an rcwa group over Z x Z">
670
<C>IsIntegral</C>
671
</Index>
672
<Index Key="IsClassWiseTranslating" Subkey="for an rcwa group over Z x Z">
673
<C>IsClassWiseTranslating</C>
674
</Index>
675
<Index Key="IsTame" Subkey="for an rcwa group over Z x Z">
676
<C>IsTame</C>
677
</Index>
678
<Index Key="Modulus" Subkey="of an rcwa group over Z x Z">
679
<C>Modulus</C>
680
</Index>
681
<Index Key="Multiplier" Subkey="of an rcwa group over Z x Z">
682
<C>Multiplier</C>
683
</Index>
684
<Index Key="Divisor" Subkey="of an rcwa group over Z x Z">
685
<C>Divisor</C>
686
</Index>
687
688
There are methods provided for the operations <C>Size</C>,
689
<C>IsIntegral</C>, <C>IsClassWiseTranslating</C>, <C>IsTame</C>,
690
<C>Modulus</C>, <C>Multiplier</C> and <C>Divisor</C>. <P/>
691
692
There are methods for <Ref Attr="IsomorphismRcwaGroup"
693
Label="for a group, over a given ring"/> which embed the groups SL(2,&ZZ;)
694
and GL(2,&ZZ;) into RCWA(<M>&ZZ;^2</M>) in such a way that the support
695
of the image is a specified residue class:
696
697
<ManSection>
698
<Heading>
699
IsomorphismRcwaGroup (Embeddings of SL(2,&ZZ;) and GL(2,&ZZ;))
700
</Heading>
701
<Attr Name="IsomorphismRcwaGroup"
702
Arg="sl2z, cl" Label="for SL(2,Z) and a residue class"/>
703
<Attr Name="IsomorphismRcwaGroup"
704
Arg="gl2z, cl" Label="for GL(2,Z) and a residue class"/>
705
<Returns>
706
a monomorphism from <A>sl2z</A> respectively <A>gl2z</A>
707
to&nbsp;RCWA(<M>&ZZ;^2</M>), such that the support of the image
708
is the residue class&nbsp;<A>cl</A> and the generators
709
are affine on&nbsp;<A>cl</A>.
710
</Returns>
711
<Description>
712
<Example>
713
<![CDATA[
714
gap> sl := SL(2,Integers);
715
SL(2,Integers)
716
gap> phi := IsomorphismRcwaGroup(sl,ResidueClass([1,0],[[2,2],[0,3]]));
717
[ [ [ 0, 1 ], [ -1, 0 ] ], [ [ 1, 1 ], [ 0, 1 ] ] ] ->
718
[ ClassRotation((1,0)+(2,2)Z+(0,3)Z,[[0,1],[-1,0]]),
719
ClassRotation((1,0)+(2,2)Z+(0,3)Z,[[1,1],[0,1]]) ]
720
gap> Support(Image(phi));
721
(1,0)+(2,2)Z+(0,3)Z
722
gap> gl := GL(2,Integers);
723
GL(2,Integers)
724
gap> phi := IsomorphismRcwaGroup(gl,ResidueClass([1,0],[[2,2],[0,3]]));
725
[ [ [ 0, 1 ], [ 1, 0 ] ], [ [ -1, 0 ], [ 0, 1 ] ],
726
[ [ 1, 1 ], [ 0, 1 ] ] ] ->
727
[ ClassRotation((1,0)+(2,2)Z+(0,3)Z,[[0,1],[1,0]]),
728
ClassRotation((1,0)+(2,2)Z+(0,3)Z,[[-1,0],[0,1]]),
729
ClassRotation((1,0)+(2,2)Z+(0,3)Z,[[1,1],[0,1]]) ]
730
gap> [[-47,-37],[61,48]]^phi;
731
ClassRotation((1,0)+(2,2)Z+(0,3)Z,[[-47,-37],[61,48]])
732
gap> Display(last:AsTable);
733
734
Rcwa permutation of Z^2 with modulus (2,2)Z+(0,3)Z, of order 6
735
736
[m,n] mod (2,2)Z+(0,3)Z | Image of [m,n]
737
-----------------------------+-------------------------------------------
738
[0,0] [0,1] [0,2] [1,1] |
739
[1,2] | [m,n]
740
[1,0] | [(-263m+122n+266)/3,(-1147m+532n+1147)/6]
741
]]>
742
</Example>
743
</Description>
744
</ManSection>
745
746
<Index Key="DrawOrbitPicture" Subkey="for rcwa groups over Z x Z">
747
<C>DrawOrbitPicture</C>
748
</Index>
749
750
The function <Ref Func="DrawOrbitPicture"
751
Label="G, p0, bound, h, w, colored, palette, filename"/>
752
can also be used to depict orbits under the action of rcwa groups
753
over&nbsp;<M>&ZZ;^2</M>. Further there is a function which depicts
754
residue class unions of&nbsp;<M>&ZZ;^2</M> and partitions
755
of&nbsp;<M>&ZZ;^2</M> into such:
756
757
<ManSection>
758
<Heading> DrawGrid </Heading>
759
<Func Name="DrawGrid"
760
Arg="U, yrange, xrange, filename"
761
Label="U, yrange, xrange, filename"/>
762
<Func Name="DrawGrid"
763
Arg="P, yrange, xrange, filename"
764
Label="P, yrange, xrange, filename"/>
765
<Returns>
766
nothing.
767
</Returns>
768
<Description>
769
This function depicts the residue class union <A>U</A>
770
of&nbsp;<M>&ZZ;^2</M> or the partition&nbsp;<A>P</A>
771
of&nbsp;<M>&ZZ;^2</M> into residue class unions, respectively.
772
The arguments <A>yrange</A> and <A>xrange</A> are the coordinate
773
ranges of the rectangular snippet to be drawn, and the argument
774
<A>filename</A> is the name, i.e. the full path name,
775
of the output file. If the first argument is a residue class union,
776
the output picture is black-and-white, where black pixels represent
777
members of&nbsp;<A>U</A> and white pixels represent non-members.
778
If the first argument is a partition of&nbsp;<M>&ZZ;^2</M> into residue
779
class unions, the produced picture is colored, and different colors are
780
used to denote membership in different parts.
781
</Description>
782
</ManSection>
783
784
</Section>
785
786
<!-- #################################################################### -->
787
788
</Chapter>
789
790
<!-- #################################################################### -->
791
792