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

562574 views
1
<?xml version="1.0" encoding="UTF-8"?>
2
<!DOCTYPE Book SYSTEM "gapdoc.dtd">
3
4
<Book Name="HAPprog">
5
6
<TitlePage>
7
8
<Title><Package>Hap Programming</Package> &ndash; An experimental framework
9
for objectifying the data structures of Hap</Title>
10
11
<Version>( development version of
12
<#Include SYSTEM "today.ver">
13
)
14
</Version>
15
<Author>Marc Röder
16
<Email>marc.roeder(at)nuigalway.ie</Email>
17
</Author>
18
19
<Abstract>
20
This extension does not change the behaviour of Hap and is fully
21
backwards-compatible. It is not a part of Hap and there is no guarantee that
22
it will at any point be supported by Hap. Use at your own risk.
23
</Abstract>
24
25
<Address>
26
Marc Röder, Department of Mathematics, NUI Galway, Irleland
27
</Address>
28
29
<Acknowledgements>
30
This work was supported by Marie Curie Grant No. MTKD-CT-2006-042685
31
</Acknowledgements>
32
33
<Copyright>&copyright; 2007 Marc Röder. <P/>
34
35
This package is distributed under the terms of the GNU General
36
Public License version 2 or later (at your convenience). See the file
37
<File>LICENSE.txt</File> or
38
<URL>http://www.gnu.org/copyleft/gpl.html</URL>
39
40
</Copyright>
41
</TitlePage>
42
43
<TableOfContents/>
44
45
46
<Body>
47
<Chapter Label="hapresolution"><Heading>Resolutions in Hap</Heading>
48
49
This document is only concerned with the representation of resolutions in
50
Hap. Note that it is not a part of Hap. The framework provided here is just an
51
extension of Hap data types used in HAPcryst and HAPprime.
52
<P />
53
From now on, let <M>G</M> be a group and <M>\dots \to M_n\to M_{n-1}\to\dots\to M_1\to M_0\to Z</M> be a
54
resolution with free <M>ZG</M> modules <M>M_i</M>.
55
56
<P/>
57
The elements of the modules <M>M_i</M> can be represented in different
58
ways. This is what makes different representations for resolutions
59
desirable. First, we will look at the standard representation
60
(<C>HapResolutionRep</C>) as it is defined in Hap. After that, we will present
61
another representation for infinite groups.
62
Note that all non-standard representations must be sub-representations of the
63
standard representation to ensure compatibility with Hap.
64
65
66
67
68
<Section Label="hapresolutionrep"><Heading>The Standard Representation <K>HapResolutionRep</K></Heading>
69
70
For every <M>M_i</M> we fix a basis and number its elements. Furthermore, it is
71
assumed that we have a (partial) enumeration of the group of a resolution.
72
In practice this is done by generating a lookup table on the fly.
73
<P/>
74
75
In standard representation, the elements of the modules <M>M_k</M> are
76
represented by lists -"words"- of pairs of integers. A letter <C>[i,g]</C> of
77
such a word consists of the number of a basis element <C>i</C> or <C>-i</C> for
78
its additive inverse and a number
79
<M>g</M> representing a group element.
80
<P/>
81
82
A <C>HapResolution</C> in <C>HapResolutionRep</C> representation is a component
83
object with the components
84
85
<List>
86
<Item><C>group</C>, a group of arbitrary type.</Item>
87
88
<Item><C>elts</C>, a (partial) list of (possibly duplicate) elements in G. This
89
list provides the "enumeration" of the group. Note that there are
90
functions in Hap which assume that <C>elts[1]</C> is the identity element of G.
91
</Item>
92
93
<Item><C>appendToElts(g)</C> a function that appends the group element
94
<C>g</C> to <C>.elts</C>. This is not documented in Hap 1.8.6 but seems to
95
be required for infinite groups. This requirement might vanish in some later
96
version of Hap [G. Ellis, private communication].
97
</Item>
98
99
<Item><C>dimension(k)</C>, a function which returns the ZG-rank of the Module
100
<M>M_k</M></Item>
101
102
<Item><C>boundary(k,j)</C>, a function which returns the image in <M>M_{k-1}</M>
103
of the <M>j</M>th free generator of <M>M_k</M>. Note that negative <M>j</M> are
104
valid as input as well. In this case the additive inverse of the boundary of
105
the <M>j</M>th generator is returned</Item>
106
107
<Item><C>homotopy(k,[i,g])</C> a function which returns the image in
108
<M>M_{k+1}</M>, under a contracting homotopy <M>M_k \to M_{k+1}</M>, of the
109
element <C>[[i,g]]</C> in <M>M_k</M>. The value of this might be <K>fail</K>.
110
However, currently (version 1.8.4) some Hap functions assume that
111
<C>homotopy</C> is a function without testing.</Item>
112
113
<Item><C>properties</C>, a list of pairs <C>["name","value"]</C> "name" is a
114
string and value is anything (boolean, number, string...). Every
115
<C>HapResolution</C> (regardless of representation) has to have
116
<C>["type","resolution"]</C>, <C>["length",length]</C> where <C>length</C> is
117
the length of the resolution and <C>["characteristic",char]</C>. Currently (Hap
118
1.8.6), <C>length</C> must not be <K>infinity</K>.
119
The values of these properties can be tested using the Hap function
120
<C>EvaluateProperty(resolution,propertyname)</C>.</Item>
121
122
</List>
123
124
Note that making <C>HapResolution</C>s immutable will make the <C>.elts</C>
125
component immutable. As this lookup table might change during calculations,
126
we do not recommend using immutable resolutions (in any representation).
127
</Section>
128
129
<Section Label="largegrouprep"><Heading>The <K>HapLargeGroupResolutionRep</K> Representation</Heading>
130
131
In this sub-representation of the standard representation, the module elements
132
in this resolution are lists of groupring elements.
133
So the lookup table <C>.elts</C> is not used as long as no conversion to
134
standard representation takes place.
135
In addition to the components of a <K>HapResolution</K>, a resolution in large
136
group representation has the following components:
137
138
<List>
139
<Item><C>boundary2(resolution,term,gen)</C>, a function that returns the
140
boundary of the <A>gen</A>th generator of the <A>term</A>th module.</Item>
141
<Item><C>groupring</C> the group ring of the resolution <A>resolution</A>.</Item>
142
<Item><C>dimension2(resolution,term)</C> a function that returns the dimension
143
of the <A>term</A>th module of the resolution <A>resolution</A>.</Item>
144
</List>
145
The effort of having two versions of <C>boundary</C> and <C>dimension</C> is
146
necessary to keep the structure compatible with the usual Hap resolution.
147
</Section>
148
149
</Chapter>
150
151
152
153
<!-- ================================================== -->
154
155
156
<Chapter><Heading>Accessing and Manipulating Resolutions</Heading>
157
158
159
<Section><Heading>Representation-Independent Access Methods</Heading>
160
161
All methods listed below take a <C>HapResolution</C> in any representation. If
162
the other arguments are compatible with the representation of the resolution,
163
the returned value will be in the form defined by this representation. If the
164
other arguments are in a different representation, &GAP;s method selection is
165
used via <C>TryNextMethod()</C> to find an applicable method (a suitable representation).
166
<P/>
167
168
The idea behind this is that the results of computations have the same form as
169
the input. And as all representations are sub-representations of the
170
<C>HapResolutionRep</C> representation, input which is compatible with the
171
<C>HapResolutionRep</C> representation is always valid.
172
<P/>
173
174
Every new representation must support the functions of this section.
175
176
<ManSection>
177
<Meth Name="StrongestValidRepresentationForLetter" Arg="resolution term
178
letter"/>
179
<Returns>filter</Returns>
180
<Description>
181
Finds the sub-representation of <C>HapResolutionRep</C> for which
182
<A>letter</A> is a valid letter of the <A>term</A>th module of
183
<A>resolution</A>. Note that <A>resolution</A> automatically is in some
184
sub-representation of <C>HapResolutionRep</C>.This is mainly meant for
185
debugging.
186
</Description>
187
</ManSection>
188
189
190
<ManSection>
191
<Meth Name="StrongestValidRepresentationForWord" Arg="resolution term
192
word"/>
193
<Returns>filter</Returns>
194
<Description>
195
Finds the sub-representation of <C>HapResolutionRep</C> for which
196
<A>word</A> is a valid word of the <A>term</A>th module of
197
<A>resolution</A>. Note that <A>resolution</A> automatically is in some
198
sub-representation of <C>HapResolutionRep</C>. This is mainly meant for
199
debugging.
200
</Description>
201
</ManSection>
202
203
204
<ManSection>
205
<Meth Name="PositionInGroupOfResolution" Arg="resolution g" />
206
<Meth Name="PositionInGroupOfResolutionNC" Arg="resolution g"/>
207
<Returns>positive integer</Returns>
208
<Description>
209
This returns the position of the group element <A>g</A> in the enumeration
210
of the group of <A>resolution</A>. The NC version does not check if <A>g</A>
211
really is an element of the group of <A>resolution</A>.
212
</Description>
213
</ManSection>
214
215
216
<ManSection>
217
<Meth Name="IsValidGroupInt" Arg="resolution n"/>
218
<Returns>boolean</Returns>
219
<Description>
220
Returns true if the <A>n</A>th element of the group of <A>resolution</A> is known.
221
</Description>
222
</ManSection>
223
224
<ManSection>
225
<Meth Name="GroupElementFromPosition" Arg="resolution n"/>
226
<Returns>group element or <K>fail</K></Returns>
227
<Description>
228
Returns <A>n</A>th element of the group of <A>resolution</A>. If the
229
<A>n</A>th element is not known, <K>fail</K> is returned.
230
</Description>
231
</ManSection>
232
233
234
<ManSection>
235
<Meth Name="MultiplyGroupElts" Arg="resolution x y"/>
236
<Returns>positive integer or group element, depending on the type of <A>x</A> and <A>y</A></Returns>
237
<Description>
238
If <C>x</C> and <C>y</C> are given in standard representation (i.e. as
239
integers), this returns the position of the product of the group elements
240
represented by the positive integers <A>x</A> and <A>x</A>.
241
<P/>
242
If <C>x</C> and <C>y</C> are given in any other representation, the returned
243
group element will also be represented in this way.
244
</Description>
245
</ManSection>
246
247
248
<ManSection>
249
<Meth Name="MultiplyFreeZGLetterWithGroupElt" Arg="resolution letter g"/>
250
<Returns>A letter</Returns>
251
<Description>
252
Multiplies the letter <A>letter</A> with the group element <A>g</A> and
253
returns the result. If <A>resolution</A> is in standard representation,
254
<A>g</A> has to be an integer and <A>letter</A> has to be a pair of
255
integer. If <A>resolution</A> is in any other representation, <A>letter</A>
256
and <A>g</A> can be in a form compatible with that representation or in the
257
standard form (in the latter case, the returned value will also have
258
standard form).
259
</Description>
260
</ManSection>
261
262
263
<ManSection>
264
<Meth Name="MultiplyFreeZGWordWithGroupElt" Arg="resolution word g"/>
265
<Returns>A word</Returns>
266
<Description>
267
Multiplies the word <A>word</A> with the group element <A>g</A> and
268
returns the result. If <A>resolution</A> is in standard representation,
269
<A>g</A> has to be an integer and <A>word</A> has to be a list of pairs of
270
integers. If <A>resolution</A> is in any other representation, <A>word</A>
271
and <A>g</A> can be in a form compatible with that representation or in the
272
standard form (in the latter case, the returned value will also have
273
standard form).
274
</Description>
275
</ManSection>
276
277
278
<ManSection>
279
<Meth Name="BoundaryOfFreeZGLetter" Arg="resolution term letter"/>
280
<Returns>free ZG word (in the same representation as <A>letter</A>)</Returns>
281
<Description>
282
Calculates the boundary of the letter (word of length 1) <A>letter</A> of
283
the <A>term</A>th module of <A>resolution</A>.
284
<P/>
285
The returned value is a word of the <A>term</A>-1st module and comes in the
286
same representation as <A>letter</A>.
287
</Description>
288
</ManSection>
289
290
291
<ManSection>
292
<Meth Name="BoundaryOfFreeZGWord" Arg="resolution term word"/>
293
<Returns>free ZG word (in the same representation as <A>letter</A>)</Returns>
294
<Description>
295
Calculates the boundary of the word <A>word</A> of
296
the <A>term</A>th module of <A>resolution</A>.
297
<P/>
298
The returned value is a word of the <A>term</A>-1st module and comes in the
299
same representation as <A>word</A>.
300
</Description>
301
</ManSection>
302
303
304
</Section>
305
306
307
<Section><Heading>Converting Between Representations</Heading>
308
309
Four methods are provided to convert letters and words from standard
310
representation to any other representation and back again.
311
312
<ManSection>
313
<Meth Name="ConvertStandardLetter" Arg="resolution term letter"/>
314
<Meth Name="ConvertStandardLetterNC" Arg="resolution term letter"/>
315
<Returns>letter in the representation of <A>resolution</A></Returns>
316
<Description>
317
Converts the letter <A>letter</A> in standard representation to the
318
representation of <A>resolution</A>. The NC version does not check whether
319
<A>letter</A> really is a letter in standard representation.
320
</Description>
321
</ManSection>
322
323
324
<ManSection>
325
<Meth Name="ConvertStandardWord" Arg="resolution term word"/>
326
<Meth Name="ConvertStandardWordNC" Arg="resolution term word"/>
327
<Returns>word in the representation of <A>resolution</A></Returns>
328
<Description>
329
Converts the word <A>word</A> in standard representation to the
330
representation of <A>resolution</A>. The NC version does not check whether
331
<A>word</A> is a valid word in standard representation.
332
</Description>
333
</ManSection>
334
335
336
<ManSection>
337
<Meth Name="ConvertLetterToStandardRep" Arg="resolution term letter"/>
338
<Meth Name="ConvertLetterToStandardRepNC" Arg="resolution term letter"/>
339
<Returns>letter in standard representation</Returns>
340
<Description>
341
Converts the letter <A>letter</A> in the representation of <A>resolution</A>
342
to the standard representation. The NC version does not check whether
343
<A>letter</A> is a valid letter of <A>resolution</A>.
344
</Description>
345
</ManSection>
346
347
<ManSection>
348
<Meth Name="ConvertWordToStandardRep" Arg="resolution term word"/>
349
<Meth Name="ConvertWordToStandardRepNC" Arg="resolution term word"/>
350
<Returns>word in standard representation</Returns>
351
<Description>
352
Converts the word <A>word</A> in the representation of <A>resolution</A>
353
to the standard representation. The NC version does not check whether
354
<A>word</A> is a valid word of <A>resolution</A>.
355
</Description>
356
</ManSection>
357
358
359
</Section>
360
361
362
<Section><Heading>Special Methods for <K>HapResolutionRep</K></Heading>
363
364
Some methods explicitely require the input to be in the standard
365
representation (<A>HapResolutionRep</A>). Two of these test if a word/letter is
366
really in standard representation, the other ones are non-check versions of the
367
universal methods.
368
369
<ManSection>
370
<Meth Name="IsFreeZGLetter" Arg="resolution term letter"/>
371
<Returns>boolean</Returns>
372
<Description>
373
Checks if <A>letter</A> is an valid letter (word of length 1) in standard
374
representation of the <A>term</A>th module of <A>resolution</A>.
375
</Description>
376
</ManSection>
377
378
379
<ManSection>
380
<Meth Name="IsFreeZGWord" Arg="resolution term word"/>
381
<Returns>boolean</Returns>
382
<Description>
383
Check if <A>word</A> is a valid word in large standard representation of the
384
<A>term</A>th module in <A>resolution</A>.
385
</Description>
386
</ManSection>
387
388
389
<ManSection>
390
<Meth Name="MultiplyGroupEltsNC" Arg="resolution x y"/>
391
<Returns>positive integer</Returns>
392
<Description>
393
Given positive integers <C>x</C> and <C>y</C>, this returns the position of
394
the product of the group elements represented by the positive integers
395
<A>x</A> and <A>x</A>. This assumes that all input is in standard
396
representation and does not check the input.
397
</Description>
398
</ManSection>
399
400
401
<ManSection>
402
<Meth Name="MultiplyFreeZGLetterWithGroupEltNC" Arg="resolution letter g"/>
403
<Returns>A letter in standard representation</Returns>
404
<Description>
405
Multiplies the letter <A>letter</A> with the group element represented by
406
the positive integer <A>g</A> and
407
returns the result. The input is assumed to be in <A>HapResolutionRep</A>
408
and is not checked.
409
</Description>
410
</ManSection>
411
412
413
<ManSection>
414
<Meth Name="MultiplyFreeZGWordWithGroupEltNC" Arg="resolution word g"/>
415
<Returns>A letter in standard representation</Returns>
416
<Description>
417
Multiplies the word <A>word</A> with the group element represented by
418
the positive integer <A>g</A> and
419
returns the result. The input is assumed to be in <A>HapResolutionRep</A>
420
and is not checked.
421
</Description>
422
</ManSection>
423
424
425
<ManSection>
426
<Meth Name="BoundaryOfFreeZGLetterNC" Arg="resolution term letter"/>
427
<Returns>free ZG word in standard representation</Returns>
428
<Description>
429
Calculates the boundary of the letter (word of length 1) <A>letter</A> of
430
the <A>term</A>th module of <A>resolution</A>.
431
The input is assumed to be in standard representation and not checked.
432
</Description>
433
</ManSection>
434
435
436
437
<ManSection>
438
<Meth Name="BoundaryOfFreeZGWordNC" Arg="resolution term word"/>
439
<Returns>free ZG word in standard representation</Returns>
440
<Description>
441
Calculates the boundary of the word <A>word</A> of
442
the <A>term</A>th module of <A>resolution</A>.
443
The input is assumed to be in standard representation and not checked.
444
</Description>
445
</ManSection>
446
447
448
</Section>
449
450
<#Include SYSTEM "./resolutionAccess_GroupRing.xml">
451
452
</Chapter>
453
454
<Chapter><Heading>Contracting Homotopies</Heading>
455
456
<#Include SYSTEM "./contraction.xml">
457
</Chapter>
458
459
</Body>
460
</Book>
461