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

1034946 views
1
2
8 (Co-)Homology of simplicial complexes
3
4
By default, simpcomp uses an algorithm based on discrete Morse theory (see
5
Chapter 12, SCHomology (7.3-9)) for its homology computations. However, some
6
additional (co-)homology related functionality cannot be realised using this
7
algorithm. For this, simpcomp contains an additional (co-)homology algorithm
8
(cf. SCHomologyInternal (8.1-5)), which will be presented in this chapter.
9
10
Furthermore, whenever possible simpcomp makes use of the GAP package
11
''homology'' [DHSW11], for an alternative method to calculate homology
12
groups (cf. SCHomologyClassic (6.9-31)) which sometimes is much faster than
13
the built-in discrete Morse theory algorithm.
14
15
16
8.1 Homology computation
17
18
Apart from calculating boundaries of simplices, boundary matrices or the
19
simplicial homology of a given complex, simpcomp is also able to compute a
20
basis of the homology groups.
21
22
8.1-1 SCBoundaryOperatorMatrix
23
24
SCBoundaryOperatorMatrix( complex, k )  method
25
Returns: a rectangular matrix upon success, fail otherwise.
26
27
Calculates the matrix of the boundary operator ∂_k+1 of a simplicial complex
28
complex. Note that each column contains the boundaries of a k+1-simplex as a
29
list of oriented k-simplices and that the matrix is stored as a list of row
30
vectors (as usual in GAP).
31
32
 Example 
33
 gap> c:=SCFromFacets([[1,2,3],[1,2,6],[1,3,5],[1,4,5],[1,4,6],\
34
 [2,3,4],[2,4,5],[2,5,6],[3,4,6],[3,5,6]]);;
35
 gap> mat:=SCBoundaryOperatorMatrix(c,1);
36
 [ [ 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], 
37
 [ -1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 ], 
38
 [ 0, -1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 1, 0, 0, 0 ], 
39
 [ 0, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, 0, 1, 1, 0 ], 
40
 [ 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, -1, 0, 1 ], 
41
 [ 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, -1, -1 ] ]
42
 
43

44
45
8.1-2 SCBoundarySimplex
46
47
SCBoundarySimplex( simplex, orientation )  function
48
Returns: a list upon success, fail otherwise.
49
50
Calculates the boundary of a given simplex. If the flag orientation is set
51
to true, the function returns the boundary as a list of oriented simplices
52
of the form [ ORIENTATION, SIMPLEX ], where ORIENTATION is either +1 or -1
53
and a value of +1 means that SIMPLEX is positively oriented and a value of
54
-1 that SIMPLEX is negatively oriented. If orientation is set to false, an
55
unoriented list of simplices is returned.
56
57
 Example 
58
 gap> SCBoundarySimplex([1..5],true);
59
 [ [ -1, [ 2, 3, 4, 5 ] ], [ 1, [ 1, 3, 4, 5 ] ], [ -1, [ 1, 2, 4, 5 ] ], 
60
 [ 1, [ 1, 2, 3, 5 ] ], [ -1, [ 1, 2, 3, 4 ] ] ]
61
 gap> SCBoundarySimplex([1..5],false);
62
 [ [ 2, 3, 4, 5 ], [ 1, 3, 4, 5 ], [ 1, 2, 4, 5 ], [ 1, 2, 3, 5 ], 
63
 [ 1, 2, 3, 4 ] ]
64
 
65

66
67
8.1-3 SCHomologyBasis
68
69
SCHomologyBasis( complex, k )  method
70
Returns: a list of pairs of the form [ integer, list of linear combinations
71
of simplices ] upon success, fail otherwise.
72
73
Calculates a set of basis elements for the k-dimensional homology group
74
(with integer coefficients) of a simplicial complex complex. The entries of
75
the returned list are of the form [ MODULUS, [ BASEELM1, BASEELM2, ...] ],
76
where the value MODULUS is 1 for the basis elements of the free part of the
77
k-th homology group and q≥ 2 for the basis elements of the q-torsion part.
78
In contrast to the function SCHomologyBasisAsSimplices (8.1-4) the basis
79
elements are stored as lists of coefficient-index pairs referring to the
80
simplices of the complex, i.e. a basis element of the form [ [ λ_1, i],
81
[λ_2, j], dots ] dots encodes the linear combination of simplices of the
82
form λ_1*∆_1+λ_2*∆_2 with ∆_1=SCSkel(complex,k)[i], ∆_2=SCSkel(complex,k)[j]
83
and so on.
84
85
 Example 
86
 gap> SCLib.SearchByName("(S^2xS^1)#RP^3");
87
 [ [ 590, "(S^2xS^1)#RP^3" ] ]
88
 gap> c:=SCLib.Load(last[1][1]);;
89
 gap> SCHomologyBasis(c,1);
90
 [ [ 1, [ [ 1, 12 ], [ -1, 7 ], [ 1, 1 ] ] ], 
91
 [ 2, [ [ 1, 68 ], [ -1, 69 ], [ -1, 71 ], [ 2, 72 ], [ -2, 73 ] ] ] ]
92
 
93

94
95
8.1-4 SCHomologyBasisAsSimplices
96
97
SCHomologyBasisAsSimplices( complex, k )  method
98
Returns: a list of pairs of the form [ integer, list of linear combinations
99
of simplices ] upon success, fail otherwise.
100
101
Calculates a set of basis elements for the k-dimensional homology group
102
(with integer coefficients) of a simplicial complex complex. The entries of
103
the returned list are of the form [ MODULUS, [ BASEELM1, BASEELM2, ...] ],
104
where the value MODULUS is 1 for the basis elements of the free part of the
105
k-th homology group and q≥ 2 for the basis elements of the q-torsion part.
106
In contrast to the function SCHomologyBasis (8.1-3) the basis elements are
107
stored as lists of coefficient-simplex pairs, i.e. a basis element of the
108
form [ [ λ_1, ∆_1], [λ_2, ∆_2], dots ] encodes the linear combination of
109
simplices of the form λ_1*∆_1+λ_2*∆_2 + dots.
110
111
 Example 
112
 gap> SCLib.SearchByName("(S^2xS^1)#RP^3");
113
 [ [ 590, "(S^2xS^1)#RP^3" ] ]
114
 gap> c:=SCLib.Load(last[1][1]);;
115
 gap> SCHomologyBasisAsSimplices(c,1);
116
 [ [ 1, [ [ 1, [ 2, 8 ] ], [ -1, [ 1, 8 ] ], [ 1, [ 1, 2 ] ] ] ], 
117
 [ 2, 
118
 [ [ 1, [ 11, 12 ] ], [ -1, [ 11, 13 ] ], [ -1, [ 12, 13 ] ], 
119
 [ 2, [ 12, 14 ] ], [ -2, [ 13, 14 ] ] ] ] ]
120
 
121

122
123
8.1-5 SCHomologyInternal
124
125
SCHomologyInternal( complex )  function
126
Returns: a list of pairs of the form [ integer, list ] upon success, fail
127
otherwise.
128
129
This function computes the reduced simplicial homology with integer
130
coefficients of a given simplicial complex complex with integer
131
coefficients. It uses the algorithm described in [DKT08].
132
133
The output is a list of homology groups of the form [H_0,....,H_d], where d
134
is the dimension of complex. The format of the homology groups H_i is given
135
in terms of their maximal cyclic subgroups, i.e. a homology group H_i≅ Z^f +
136
Z / t_1 Z × dots × Z / t_n Z is returned in form of a list [ f,
137
[t_1,...,t_n] ], where f is the (integer) free part of H_i and t_i denotes
138
the torsion parts of H_i ordered in weakly incresing size. See also
139
SCHomology (7.3-9) and SCHomologyClassic (6.9-31).
140
141
 Example 
142
 gap> c:=SCSurface(1,false);;
143
 gap> SCHomologyInternal(c);
144
 [ [ 0, [ ] ], [ 0, [ 2 ] ], [ 0, [ ] ] ]
145
 
146

147
148
149
8.2 Cohomology computation
150
151
simpcomp can also compute the cohomology groups of simplicial complexes,
152
bases of these cohomology groups, the cup product of two cocycles and the
153
intersection form of (orientable) 4-manifolds.
154
155
8.2-1 SCCoboundaryOperatorMatrix
156
157
SCCoboundaryOperatorMatrix( complex, k )  method
158
Returns: a rectangular matrix upon success, fail otherwise.
159
160
Calculates the matrix of the coboundary operator d^k+1 as a list of row
161
vectors.
162
163
 Example 
164
 gap> c:=SCFromFacets([[1,2,3],[1,2,6],[1,3,5],[1,4,5],[1,4,6],\
165
 [2,3,4],[2,4,5],[2,5,6],[3,4,6],[3,5,6]]);
166
 > [SimplicialComplex
167
 
168
 Properties known: Dim, FacetsEx, Name, Vertices.
169
 
170
 Name="unnamed complex 2"
171
 Dim=2
172
 
173
 /SimplicialComplex]
174
 gap> mat:=SCCoboundaryOperatorMatrix(c,1);
175
 [ [ -1, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], 
176
 [ -1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0 ], 
177
 [ 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0 ], 
178
 [ 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0 ], 
179
 [ 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 ], 
180
 [ 0, 0, 0, 0, 0, -1, 1, 0, 0, -1, 0, 0, 0, 0, 0 ], 
181
 [ 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, -1, 0, 0 ], 
182
 [ 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -1 ], 
183
 [ 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, -1, 0 ], 
184
 [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, -1 ] ]
185
 
186

187
188
8.2-2 SCCohomology
189
190
SCCohomology( complex )  method
191
Returns: a list of pairs of the form [ integer, list ] upon success, fail
192
otherwise.
193
194
This function computes the simplicial cohomology groups of a given
195
simplicial complex complex with integer coefficients. It uses the algorithm
196
described in [DKT08].
197
198
The output is a list of cohomology groups of the form [H^0,....,H^d], where
199
d is the dimension of complex. The format of the cohomology groups H^i is
200
given in terms of their maximal cyclic subgroups, i.e. a cohomology group
201
H^i≅ Z^f + Z / t_1 Z × dots × Z / t_n Z is returned in form of a list [ f,
202
[t_1,...,t_n] ], where f is the (integer) free part of H^i and t_i denotes
203
the torsion parts of H^i ordered in weakly increasing size.
204
205
 Example 
206
 gap> c:=SCFromFacets([[1,2,3],[1,2,6],[1,3,5],[1,4,5],[1,4,6],
207
 [2,3,4],[2,4,5],[2,5,6],[3,4,6],[3,5,6]]);
208
 > [SimplicialComplex
209
 
210
 Properties known: Dim, FacetsEx, Name, Vertices.
211
 
212
 Name="unnamed complex 4"
213
 Dim=2
214
 
215
 /SimplicialComplex]
216
 gap> SCCohomology(c);
217
 [ [ 1, [ ] ], [ 0, [ ] ], [ 0, [ 2 ] ] ]
218
 
219

220
221
8.2-3 SCCohomologyBasis
222
223
SCCohomologyBasis( complex, k )  method
224
Returns: a list of pairs of the form [ integer, list of linear combinations
225
of simplices ] upon success, fail otherwise.
226
227
Calculates a set of basis elements for the k-dimensional cohomology group
228
(with integer coefficients) of a simplicial complex complex. The entries of
229
the returned list are of the form [ MODULUS, [ BASEELM1, BASEELM2, ...] ],
230
where the value MODULUS is 1 for the basis elements of the free part of the
231
k-th homology group and q≥ 2 for the basis elements of the q-torsion part.
232
In contrast to the function SCCohomologyBasisAsSimplices (8.2-4) the basis
233
elements are stored as lists of coefficient-index pairs referring to the
234
linear forms dual to the simplices in the k-th cochain complex of complex,
235
i.e. a basis element of the form [ [ λ_1, i], [λ_2, j], dots ] dots encodes
236
the linear combination of simplices (or their dual linear forms in the
237
corresponding cochain complex) of the form λ_1*∆_1+λ_2*∆_2 with
238
∆_1=SCSkel(complex,k)[i], ∆_2=SCSkel(complex,k)[j] and so on.
239
240
 Example 
241
 gap> SCLib.SearchByName("SU(3)/SO(3)"); 
242
 [ [ 563, "SU(3)/SO(3) (VT)" ], [ 7276, "SU(3)/SO(3) (VT)" ], 
243
 [ 7418, "SU(3)/SO(3) (VT)" ], [ 7419, "SU(3)/SO(3) (VT)" ] ]
244
 gap> c:=SCLib.Load(last[1][1]);;
245
 gap> SCCohomologyBasis(c,3); 
246
 [ [ 2, [ [ -9, 259 ], [ 9, 262 ], [ 9, 263 ], [ -9, 270 ], [ 9, 271 ], 
247
 [ -9, 273 ], [ -9, 274 ], [ -18, 275 ], [ -9, 276 ], [ 9, 278 ], 
248
 [ -9, 279 ], [ -9, 280 ], [ 3, 283 ], [ -3, 285 ], [ 3, 289 ], 
249
 [ -3, 294 ], [ 3, 310 ], [ -3, 313 ], [ 3, 316 ], [ -1, 317 ], 
250
 [ -6, 318 ], [ 3, 319 ], [ -6, 320 ], [ 6, 321 ], [ 1, 322 ], 
251
 [ 3, 325 ], [ -1, 328 ], [ 6, 330 ], [ -2, 331 ], [ 12, 332 ], 
252
 [ 7, 333 ], [ -5, 334 ], [ 1, 345 ], [ 3, 355 ], [ -9, 357 ], 
253
 [ 9, 358 ], [ 1, 363 ], [ 12, 365 ], [ -9, 366 ], [ -3, 370 ], 
254
 [ -1, 371 ], [ -3, 372 ], [ 8, 373 ], [ -1, 374 ], [ 6, 375 ], 
255
 [ 9, 376 ], [ 3, 377 ], [ 1, 380 ], [ 3, 383 ], [ -8, 385 ], 
256
 [ -9, 386 ], [ -9, 388 ], [ -18, 404 ], [ 9, 410 ], [ -9, 425 ], 
257
 [ -18, 426 ], [ -9, 427 ], [ 9, 428 ], [ -9, 429 ], [ 3, 433 ], 
258
 [ -3, 435 ], [ -9, 437 ], [ 10, 442 ], [ 12, 445 ], [ 1, 447 ], 
259
 [ -19, 448 ], [ 2, 449 ], [ -1, 450 ], [ -9, 451 ], [ 3, 453 ], 
260
 [ 1, 455 ], [ 1, 457 ], [ -11, 458 ], [ -9, 459 ], [ 9, 461 ], 
261
 [ 9, 462 ], [ -9, 468 ], [ 9, 469 ], [ -18, 471 ], [ -9, 472 ], 
262
 [ 9, 474 ], [ -9, 475 ], [ 9, 488 ], [ 9, 495 ], [ -9, 500 ], 
263
 [ -3, 504 ], [ 9, 505 ], [ 9, 512 ], [ 9, 515 ], [ 6, 519 ], 
264
 [ 18, 521 ], [ -15, 523 ], [ 9, 524 ], [ -3, 525 ], [ 18, 527 ], 
265
 [ -18, 528 ], [ 6, 529 ], [ 6, 531 ], [ 12, 532 ] ] ] ]
266
 
267

268
269
8.2-4 SCCohomologyBasisAsSimplices
270
271
SCCohomologyBasisAsSimplices( complex, k )  method
272
Returns: a list of pars of the form [ integer, linear combination of
273
simplices ] upon success, fail otherwise.
274
275
Calculates a set of basis elements for the k-dimensional cohomology group
276
(with integer coefficients) of a simplicial complex complex. The entries of
277
the returned list are of the form [ MODULUS, [ BASEELM1, BASEELM2, ...] ],
278
where the value MODULUS is 1 for the basis elements of the free part of the
279
k-th homology group and q≥ 2 for the basis elements of the q-torsion part.
280
In contrast to the function SCCohomologyBasis (8.2-3) the basis elements are
281
stored as lists of coefficient-simplex pairs referring to the linear forms
282
dual to the simplices in the k-th cochain complex of complex, i.e. a basis
283
element of the form [ [ λ_1, ∆_i], [λ_2, ∆_j], dots ] dots encodes the
284
linear combination of simplices (or their dual linear forms in the
285
corresponding cochain complex) of the form λ_1*∆_1+λ_2*∆_2 + dots.
286
287
 Example 
288
 gap> SCLib.SearchByName("SU(3)/SO(3)"); 
289
 [ [ 563, "SU(3)/SO(3) (VT)" ], [ 7276, "SU(3)/SO(3) (VT)" ], 
290
 [ 7418, "SU(3)/SO(3) (VT)" ], [ 7419, "SU(3)/SO(3) (VT)" ] ]
291
 gap> c:=SCLib.Load(last[1][1]);;
292
 gap> SCCohomologyBasisAsSimplices(c,3);
293
 [ [ 2, 
294
 [ [ -9, [ 2, 7, 8, 9 ] ], [ 9, [ 2, 7, 8, 12 ] ], 
295
 [ 9, [ 2, 7, 8, 13 ] ], [ -9, [ 2, 7, 11, 12 ] ], 
296
 [ 9, [ 2, 7, 11, 13 ] ], [ -9, [ 2, 8, 9, 10 ] ], 
297
 [ -9, [ 2, 8, 9, 11 ] ], [ -18, [ 2, 8, 9, 12 ] ], 
298
 [ -9, [ 2, 8, 9, 13 ] ], [ 9, [ 2, 8, 10, 12 ] ], 
299
 [ -9, [ 2, 8, 10, 13 ] ], [ -9, [ 2, 8, 11, 12 ] ], 
300
 [ 3, [ 2, 9, 10, 12 ] ], [ -3, [ 2, 9, 11, 12 ] ], 
301
 [ 3, [ 3, 4, 5, 7 ] ], [ -3, [ 3, 4, 5, 12 ] ], 
302
 [ 3, [ 3, 4, 10, 12 ] ], [ -3, [ 3, 5, 6, 7 ] ], 
303
 [ 3, [ 3, 5, 6, 11 ] ], [ -1, [ 3, 5, 6, 13 ] ], 
304
 [ -6, [ 3, 5, 7, 8 ] ], [ 3, [ 3, 5, 7, 10 ] ], 
305
 [ -6, [ 3, 5, 7, 11 ] ], [ 6, [ 3, 5, 7, 12 ] ], 
306
 [ 1, [ 3, 5, 7, 13 ] ], [ 3, [ 3, 5, 8, 12 ] ], 
307
 [ -1, [ 3, 5, 9, 13 ] ], [ 6, [ 3, 5, 10, 12 ] ], 
308
 [ -2, [ 3, 5, 10, 13 ] ], [ 12, [ 3, 5, 11, 12 ] ], 
309
 [ 7, [ 3, 5, 11, 13 ] ], [ -5, [ 3, 5, 12, 13 ] ], 
310
 [ 1, [ 3, 6, 9, 13 ] ], [ 3, [ 3, 7, 10, 12 ] ], 
311
 [ -9, [ 3, 7, 11, 12 ] ], [ 9, [ 3, 7, 11, 13 ] ], 
312
 [ 1, [ 3, 8, 9, 13 ] ], [ 12, [ 3, 8, 10, 12 ] ], 
313
 [ -9, [ 3, 8, 10, 13 ] ], [ -3, [ 3, 9, 10, 12 ] ], 
314
 [ -1, [ 3, 9, 10, 13 ] ], [ -3, [ 3, 9, 11, 12 ] ], 
315
 [ 8, [ 3, 9, 11, 13 ] ], [ -1, [ 3, 9, 12, 13 ] ], 
316
 [ 6, [ 3, 10, 11, 12 ] ], [ 9, [ 3, 10, 11, 13 ] ], 
317
 [ 3, [ 3, 10, 12, 13 ] ], [ 1, [ 4, 5, 6, 8 ] ], 
318
 [ 3, [ 4, 5, 6, 11 ] ], [ -8, [ 4, 5, 6, 13 ] ], 
319
 [ -9, [ 4, 5, 7, 8 ] ], [ -9, [ 4, 5, 7, 11 ] ], 
320
 [ -18, [ 4, 6, 8, 9 ] ], [ 9, [ 4, 6, 9, 13 ] ], 
321
 [ -9, [ 4, 8, 9, 10 ] ], [ -18, [ 4, 8, 9, 12 ] ], 
322
 [ -9, [ 4, 8, 9, 13 ] ], [ 9, [ 4, 8, 10, 12 ] ], 
323
 [ -9, [ 4, 8, 10, 13 ] ], [ 3, [ 4, 9, 10, 12 ] ], 
324
 [ -3, [ 4, 9, 11, 12 ] ], [ -9, [ 4, 9, 12, 13 ] ], 
325
 [ 10, [ 5, 6, 7, 8 ] ], [ 12, [ 5, 6, 7, 11 ] ], 
326
 [ 1, [ 5, 6, 7, 13 ] ], [ -19, [ 5, 6, 8, 9 ] ], 
327
 [ 2, [ 5, 6, 8, 11 ] ], [ -1, [ 5, 6, 8, 12 ] ], 
328
 [ -9, [ 5, 6, 8, 13 ] ], [ 3, [ 5, 6, 9, 11 ] ], 
329
 [ 1, [ 5, 6, 9, 13 ] ], [ 1, [ 5, 6, 10, 13 ] ], 
330
 [ -11, [ 5, 6, 11, 13 ] ], [ -9, [ 5, 7, 8, 9 ] ], 
331
 [ 9, [ 5, 7, 8, 12 ] ], [ 9, [ 5, 7, 8, 13 ] ], 
332
 [ -9, [ 5, 7, 11, 12 ] ], [ 9, [ 5, 7, 11, 13 ] ], 
333
 [ -18, [ 5, 8, 9, 12 ] ], [ -9, [ 5, 8, 9, 13 ] ], 
334
 [ 9, [ 5, 8, 10, 12 ] ], [ -9, [ 5, 8, 11, 12 ] ], 
335
 [ 9, [ 6, 7, 8, 13 ] ], [ 9, [ 6, 7, 11, 13 ] ], 
336
 [ -9, [ 6, 8, 10, 13 ] ], [ -3, [ 6, 9, 11, 12 ] ], 
337
 [ 9, [ 6, 9, 11, 13 ] ], [ 9, [ 7, 8, 9, 13 ] ], 
338
 [ 9, [ 7, 8, 11, 12 ] ], [ 6, [ 7, 9, 11, 12 ] ], 
339
 [ 18, [ 7, 11, 12, 13 ] ], [ -15, [ 8, 9, 10, 12 ] ], 
340
 [ 9, [ 8, 9, 10, 13 ] ], [ -3, [ 8, 9, 11, 12 ] ], 
341
 [ 18, [ 8, 10, 11, 12 ] ], [ -18, [ 8, 10, 12, 13 ] ], 
342
 [ 6, [ 9, 10, 11, 12 ] ], [ 6, [ 9, 10, 12, 13 ] ], 
343
 [ 12, [ 9, 11, 12, 13 ] ] ] ] ]
344
 
345

346
347
8.2-5 SCCupProduct
348
349
SCCupProduct( complex, cocycle1, cocycle2 )  function
350
Returns: a list of pairs of the form [ ORIENTATION, SIMPLEX ] upon success,
351
fail otherwise.
352
353
The cup product is a method of adjoining two cocycles of degree p and q to
354
form a composite cocycle of degree p + q. It endows the cohomology groups of
355
a simplicial complex with the structure of a ring.
356
357
The construction of the cup product starts with a product of cochains: if
358
cocycle1 is a p-cochain and cocylce2 is a q-cochain of a simplicial complex
359
complex (given as list of oriented p- (q-)simplices), then
360
361
cocycle1 ⌣ cocycle2(σ) =cocycle1(σ ∘ ι_0,1, ... p) ⋅ cocycle2(σ ∘ ι_p, p+1
362
,..., p + q)
363
364
where σ is a p + q-simplex and ι_S, S ⊂ {0,1,...,p+q } is the canonical
365
embedding of the simplex spanned by S into the (p + q)-standard simplex.
366
367
σ ∘ ι_0,1, ..., p is called the p-th front face and σ ∘ ι_p, p+1, ..., p + q
368
is the q-th back face of σ, respectively.
369
370
Note that this function only computes the cup product in the case that
371
complex is an orientable weak pseudomanifold of dimension 2k and p = q = k.
372
Furthermore, complex must be given in standard labeling, with sorted facet
373
list and cocylce1 and cocylce2 must be given in simplex notation and labeled
374
accordingly. Note that the latter condition is usually fulfilled in case the
375
cocycles were computed using SCCohomologyBasisAsSimplices (8.2-4).
376
377
 Example 
378
 gap> SCLib.SearchByName("K3");
379
 [ [ 7648, "K3_16" ], [ 7649, "K3_17" ] ]
380
 gap> c:=SCLib.Load(last[1][1]);; 
381
 gap> basis:=SCCohomologyBasisAsSimplices(c,2);;
382
 gap> SCCupProduct(c,basis[1][2],basis[1][2]);
383
 [ [ 1, [ 1, 2, 4, 7, 11 ] ], [ 1, [ 2, 3, 4, 5, 9 ] ] ]
384
 gap> SCCupProduct(c,basis[1][2],basis[2][2]);
385
 [ [ -1, [ 1, 2, 4, 7, 11 ] ], [ -1, [ 1, 2, 4, 7, 15 ] ], 
386
 [ -1, [ 2, 3, 4, 5, 9 ] ] ]
387
 
388

389
390
8.2-6 SCIntersectionForm
391
392
SCIntersectionForm( complex )  method
393
Returns: a square matrix of integer values upon success, fail otherwise.
394
395
For 2k-dimensional orientable manifolds M the cup product (see SCCupProduct
396
(8.2-5)) defines a bilinear form
397
398
H^k ( M ) ×H^k ( M ) ->H^2k (M), (a,b) ↦ a ∪ b
399
400
called the intersection form of M. This function returns the intersection
401
form of an orientable combinatorial 2k-manifold complex in form of a matrix
402
mat with respect to the basis of H^k (complexM) computed by
403
SCCohomologyBasisAsSimplices (8.2-4). The matrix entry mat[i][j] equals the
404
intersection number of the i-th base element with the j-th base element of
405
H^k (complexM).
406
407
 Example 
408
 gap> SCLib.SearchByName("CP^2"); 
409
 [ [ 16, "CP^2 (VT)" ], [ 99, "CP^2#-CP^2" ], [ 100, "CP^2#CP^2" ], 
410
 [ 400, "CP^2#(S^2xS^2)" ], [ 2486, "Gaifullin CP^2" ], 
411
 [ 4401, "(S^3~S^1)#(CP^2)^{#5} (VT)" ] ]
412
 gap> c:=SCLib.Load(last[1][1]);; 
413
 gap> c1:=SCConnectedSum(c,c);;
414
 gap> c2:=SCConnectedSumMinus(c,c);;
415
 gap> q1:=SCIntersectionForm(c1);;
416
 gap> q2:=SCIntersectionForm(c2);;
417
 gap> PrintArray(q1);
418
 [ [ 1, 0 ],
419
 [ 0, 1 ] ]
420
 gap> PrintArray(q2);
421
 [ [ 1, 0 ],
422
 [ 0, -1 ] ]
423
 
424

425
426
8.2-7 SCIntersectionFormParity
427
428
SCIntersectionFormParity( complex )  method
429
Returns: 0 or 1 upon success, fail otherwise.
430
431
Computes the parity of the intersection form of a combinatorial manifold
432
complex (see SCIntersectionForm (8.2-6)). If the intersection for is even
433
(i. e. all diagonal entries are even numbers) 0 is returned, otherwise 1 is
434
returned.
435
436
 Example 
437
 gap> SCLib.SearchByName("S^2xS^2");
438
 [ [ 59, "S^2xS^2" ], [ 134, "S^2xS^2 (VT)" ], [ 135, "S^2xS^2 (VT)" ], 
439
 [ 136, "S^2xS^2 (VT)" ], [ 137, "(S^2xS^2)#(S^2xS^2)" ], 
440
 [ 360, "(S^2xS^2)#(S^2xS^2) (VT)" ], [ 361, "(S^2xS^2)#(S^2xS^2) (VT)" ], 
441
 [ 400, "CP^2#(S^2xS^2)" ] ]
442
 gap> c:=SCLib.Load(last[1][1]);; 
443
 gap> SCIntersectionFormParity(c);
444
 0
445
 gap> SCLib.SearchByName("CP^2"); 
446
 [ [ 16, "CP^2 (VT)" ], [ 99, "CP^2#-CP^2" ], [ 100, "CP^2#CP^2" ], 
447
 [ 400, "CP^2#(S^2xS^2)" ], [ 2486, "Gaifullin CP^2" ], 
448
 [ 4401, "(S^3~S^1)#(CP^2)^{#5} (VT)" ] ]
449
 gap> c:=SCLib.Load(last[1][1]);; 
450
 gap> SCIntersectionFormParity(c);
451
 1
452
 
453

454
455
8.2-8 SCIntersectionFormDimensionality
456
457
SCIntersectionFormDimensionality( complex )  method
458
Returns: an integer upon success, fail otherwise.
459
460
Returns the dimensionality of the intersection form of a combinatorial
461
manifold complex, i. e. the length of a minimal generating set of H^k (M)
462
(where 2k is the dimension of complex). See SCIntersectionForm (8.2-6) for
463
further details.
464
465
 Example 
466
 gap> SCLib.SearchByName("CP^2"); 
467
 [ [ 16, "CP^2 (VT)" ], [ 99, "CP^2#-CP^2" ], [ 100, "CP^2#CP^2" ], 
468
 [ 400, "CP^2#(S^2xS^2)" ], [ 2486, "Gaifullin CP^2" ], 
469
 [ 4401, "(S^3~S^1)#(CP^2)^{#5} (VT)" ] ]
470
 gap> c:=SCLib.Load(last[1][1]);; 
471
 gap> SCIntersectionFormParity(c);
472
 1
473
 gap> SCCohomology(c);
474
 [ [ 1, [ ] ], [ 0, [ ] ], [ 1, [ ] ], [ 0, [ ] ], [ 1, [ ] ] ]
475
 gap> SCIntersectionFormDimensionality(c);
476
 1
477
 gap> d:=SCConnectedProduct(c,10);;
478
 gap> SCIntersectionFormDimensionality(d);
479
 10
480
 
481

482
483
8.2-9 SCIntersectionFormSignature
484
485
SCIntersectionFormSignature( complex )  method
486
Returns: a triple of integers upon success, fail otherwise.
487
488
Computes the dimensionality (see SCIntersectionFormDimensionality (8.2-8))
489
and the signature of the intersection form of a combinatorial manifold
490
complex as a 3-tuple that contains the dimensionality in the first entry and
491
the number of positive / negative eigenvalues in the second and third entry.
492
See SCIntersectionForm (8.2-6) for further details.
493
494
Internally calls the GAP-functions Matrix_CharacteristicPolynomialSameField
495
and CoefficientsOfLaurentPolynomial to compute the number of positive /
496
negative eigenvalues of the intersection form.
497
498
 Example 
499
 gap> SCLib.SearchByName("CP^2"); 
500
 [ [ 16, "CP^2 (VT)" ], [ 99, "CP^2#-CP^2" ], [ 100, "CP^2#CP^2" ], 
501
 [ 400, "CP^2#(S^2xS^2)" ], [ 2486, "Gaifullin CP^2" ], 
502
 [ 4401, "(S^3~S^1)#(CP^2)^{#5} (VT)" ] ]
503
 gap> c:=SCLib.Load(last[1][1]);;
504
 gap> SCIntersectionFormParity(c);
505
 1
506
 gap> SCCohomology(c);
507
 [ [ 1, [ ] ], [ 0, [ ] ], [ 1, [ ] ], [ 0, [ ] ], [ 1, [ ] ] ]
508
 gap> SCIntersectionFormSignature(c);
509
 [ 1, 0, 1 ]
510
 gap> d:=SCConnectedSum(c,c); 
511
 [SimplicialComplex
512
 
513
 Properties known: Dim, FacetsEx, Name, Vertices.
514
 
515
 Name="CP^2 (VT)#+-CP^2 (VT)"
516
 Dim=4
517
 
518
 /SimplicialComplex]
519
 gap> SCIntersectionFormSignature(d);
520
 [ 2, 2, 0 ]
521
 gap> d:=SCConnectedSumMinus(c,c);;
522
 gap> SCIntersectionFormSignature(d);
523
 [ 2, 1, 1 ]
524
 
525

526
527
528