File: chap10.txt

package info (click to toggle)
gap-hap 1.74%2Bds-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 58,664 kB
  • sloc: xml: 16,678; sh: 197; javascript: 155; makefile: 121; ansic: 47; perl: 24
file content (398 lines) | stat: -rw-r--r-- 20,946 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
  
  10 Chain Complexes
  
  HAP  uses  implementations  of chain complexes of free K-modules for each of
  the rings K = Z, K = Q, K = F_p with p a prime number, K = ZG, K = F_pG with
  G a group. The implemented chain complexes have the form
  
  C_n  stackreld_n⟶  C_n-1 stackreld_n-1}⟶ ⋯ stackreld_2⟶ C_1 stackreld_1⟶ C_0
  stackreld_0⟶ 0 .
  
  Such  a  complex  is said to have length n and the rank of the free K-module
  C_k is referred to as the dimenion of the complex in degree k.
  
  For  the  case  K  =  ZG  (resp.  K  = F_pG) the main focus is on free chain
  complexes that are exact at each degree k, i.e. im(d_k+1)= ker(d_k), for 0 <
  k < n and with C_0/ im(d_1) ≅ Z (resp. C_0/ im(d_1) ≅ F_p). We refer to such
  a  chain complex as a resolution of length  n even though d_n will typically
  not  be  injective.  More  correct  terminology  would refer to such a chain
  complex as the first n degrees of a free resolution.
  
  The  following  sections  illustrate  some constructions of chain complexes.
  Constructions for resolutions are described in the next chapter 11.
  
  
  10.1 Chain complex of a simplicial complex and simplicial pair
  
  The  following  example  constructs the Quillen simplicial complex Q=mathcal
  A_p(G)  for  p=2  and  G=A_8;  this  is  the  order  complex of the poset of
  non-trivial  elementary  2-subgroups of G. The chain complex C_∗ = C_∗(Q) is
  then  computed  and seen to have the same number of free generators as Q has
  simplices.  (To  ensure  indexing of subcomplexes is consistent with that of
  the large complex it is best to work with vertices represented as integers.)
  
    Example  
    gap> Q:=QuillenComplex(AlternatingGroup(8),2);
    Simplicial complex of dimension 3.
    
    gap> C:=ChainComplex(Q);
    Chain complex of length 3 in characteristic 0 . 
    
    gap> Size(Q);
    55015
    gap> Size(C);
    55015
    
  
  
  Next  the  simplicial  complex  Q  is  converted  to  one whose vertices are
  represented  by integers and a contactible subcomplex L < Q is computed. The
  chain  complex  D_∗=C_∗(Q,L) of the simplicial pair (Q,L) is constructed and
  seen to have the correct size.
  
    Example  
    gap> Q:=IntegerSimplicialComplex(Q);
    Simplicial complex of dimension 3.
    
    gap> L:=ContractibleSubcomplex(Q);
    Simplicial complex of dimension 3.
    
    gap> D:=ChainComplexOfPair(Q,L);
    Chain complex of length 3 in characteristic 0 . 
    
    gap> Size(D)=Size(Q)-Size(L);
    true
    gap> Size(D);
    670
    gap>
    
  
  
  The  next  commands  produce  a  smalled  chain  complex  B_∗ chain homotopy
  equivalent to D_∗ and compute the homology H_k(Q, Z) ≅ H_k(B_∗) for k=1,2,3.
  
    Example  
    gap> B:=ContractedComplex(D);
    Chain complex of length 3 in characteristic 0 . 
    
    gap> Size(B);
    64
    gap> Homology(B,1);
    [  ]
    gap> Homology(B,2);
    [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
    gap> Homology(B,3);
    [  ]
    
  
  
  
  10.2 Chain complex of a cubical complex and cubical pair
  
  The following example reads in the digital image
  
  as  a  2-dimensional pure cubical complex M and constructs the chain complex
  C_∗=C_∗(M).
  
    Example  
    gap> K:=ReadImageAsPureCubicalComplex(file,400);
    Pure cubical complex of dimension 2.
    
    gap> C:=ChainComplex(K);
    Chain complex of length 2 in characteristic 0 . 
    
    gap> Size(C); 
    173243
    
  
  
  Next  an  acyclic  pure  cubical  subcomplex L < M is computed and the chain
  complex D_∗=C_∗(M,L) of the pair is constructed.
  
    Example  
    gap> L:=AcyclicSubcomplexOfPureCubicalComplex(K);
    Pure cubical complex of dimension 2.
    
    gap> D:=ChainComplexOfPair(K,L);
    Chain complex of length 2 in characteristic 0 . 
    
    gap> Size(D);
    618
    
  
  
  Finally  the  chain complex D_∗ is simplified to a homotopy equivalent chain
  complex B_∗ and the homology H_1(M, Z) ≅ H_1(B_∗) is computed.
  
    Example  
    gap> B:=ContractedComplex(D);
    Chain complex of length 2 in characteristic 0 . 
    
    gap> Size(B);
    20
    gap> Homology(B,1);
    [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
    
  
  
  
  10.3 Chain complex of a regular CW-complex
  
  The  next  example  constructs a 15-dimensional regular CW-complex Y that is
  homotopy equivalent to the 2-dimensional torus.
  
    Example  
    gap> Circle:=PureCubicalComplex([[1,1,1,1,1],[1,1,0,1,1],[1,1,1,1,1]]);
    Pure cubical complex of dimension 2.
    
    gap> Torus:=DirectProductOfPureCubicalComplexes(Circle,Circle);
    Pure cubical complex of dimension 4.
    
    gap> CTorus:=CechComplexOfPureCubicalComplex(Torus);
    Simplicial complex of dimension 15.
    
    gap> Y:=RegularCWComplex(CTorus);
    Regular CW-complex of dimension 15
    
  
  
  Next the cellular chain complex C_∗=C_∗(Y) is constructed. Also, a minimally
  generated  chain  complex  D_∗=C_∗(Y')  of a non-regular CW-complex Y'≃ Y is
  constructed.
  
    Example  
    gap> C:=ChainComplexOfRegularCWComplex(Y);
    Chain complex of length 15 in characteristic 0 . 
    
    gap> Size(C);
    1172776
    
    gap> D:=ChainComplex(Y);
    Chain complex of length 15 in characteristic 0 . 
    
    gap> Size(D);
    4
    
  
  
  
  10.4 Chain Maps of simplicial and regular CW maps
  
  The  next  example  realizes  the  complement  of the first prime knot on 11
  crossings  as a pure permutahedral complex. The complement is converted to a
  regular CW-complex Y and the boundary inclusion f: ∂ Y ↪ Y is constructed as
  a  map  of  regular  CW-complexes.  Then the induced chain map F: C_∗(∂ Y) ↪
  C_∗(Y)  is  constructed. Finally the homology homomorphism H_1(F): H_1(C_∗(∂
  Y)) → H_1(C_∗(Y)) is computed.
  
    Example  
    gap> K:=PurePermutahedralKnot(11,1);;
    gap> M:=PureComplexComplement(K);
    Pure permutahedral complex of dimension 3.
    
    gap> Y:=RegularCWComplex(M);
    Regular CW-complex of dimension 3
    
    gap> f:=BoundaryMap(Y);
    Map of regular CW-complexes
    
    gap> F:=ChainMap(f);
    Chain Map between complexes of length 2 . 
    
    gap> H:=Homology(F,1);
    [ g1, g2 ] -> [ g1^-1, g1^-1 ]
    
    gap> Kernel(H);
    Pcp-group with orders [ 0 ]
    
  
  
  The  command  ChainMap(f)  can  be  used to construct the chain map C_∗(K) →
  C_∗(K') induced by a map f: K→ K' of simplicial complexes.
  
  
  10.5 Constructions for chain complexes
  
  It is straightforward to implement basic constructions on chain complexes. A
  few constructions are illustrated in the following example.
  
    Example  
    gap> res:=ResolutionFiniteGroup(SymmetricGroup(5),5);;
    gap> C:=TensorWithIntegers(res);
    Chain complex of length 5 in characteristic 0 . 
    
    gap> D:=ContractedComplex(C);#A chain homotopic complex
    Chain complex of length 5 in characteristic 0 . 
    gap> List([0..5],C!.dimension);
    [ 1, 4, 10, 20, 35, 56 ]
    gap> List([0..5],D!.dimension);
    [ 1, 1, 2, 4, 6, 38 ]
    
    gap> CxC:=TensorProduct(C,C);
    Chain complex of length 10 in characteristic 0 . 
    
    gap> SC:=SuspendedChainComplex(C);
    Chain complex of length 6 in characteristic 0 . 
    
    gap> RC:=ReducedSuspendedChainComplex(C);
    Chain complex of length 6 in characteristic 0 .
    
    gap> PC:=PathObjectForChainComplex(C);
    Chain complex of length 5 in characteristic 0 .
    
    gap> dualC:=HomToIntegers(C);
    Cochain complex of length 5 in characteristic 0 .
    
    gap> Cxp:=TensorWithIntegersModP(C,5);
    Chain complex of length 5 in characteristic 5 .
    
    gap> CxQ:=TensorWithRationals(C); #The quirky -1/2 denotes rationals
    Chain complex of length 5 in characteristic -1/2 .
    
  
  
  
  10.6 Filtered chain complexes
  
  A  sequence  of  inclusions of chain complexes C_0,∗ ≤ C_1,∗ ≤ ⋯ ≤ C_T-1,∗ ≤
  C_T,∗  in  which  the  preferred  basis  of  C_k-1,ℓ is the beginning of the
  preferred  basis  of  C_k,ℓ  is  referred  to  as  a filtered chain complex.
  Filtered  chain  complexes  give  rise  to  spectral  sequences  such as the
  equivariant  spectral  sequence  of  a  G-CW-complex  with subgroup H < G. A
  particular  case  is  the  Lyndon-Hochschild-Serre spectral sequence for the
  homology of a group extension N ↣ G ↠ Q with E^2_p,q=H_p(Q,H_q(N, Z)).
  
  The  following  commands construct the filtered chain complex underlying the
  Lyndon-Hochschild-Serre  spectral  sequence for the dihedral group G=D_32 of
  order 64 and its centre N=Z(G).
  
    Example  
    gap> G:=DihedralGroup(64);;
    gap> N:=Center(G);;
    gap> R:=ResolutionNormalSeries([G,N],3);;
    gap> C:=FilteredTensorWithIntegersModP(R,2);
    Chain complex of length 3 in characteristic 2 .
    
  
  
  The differentials d^r_p,q in a given page E^r of the spectral sequence arise
  from the induced homology homomorphisms ι^s,t_ℓ: H_ℓ(C_s,∗) → H_ℓ(C_t,∗) for
  s≤ t. Textbooks traditionally picture the differential in E^r as an array of
  sloping  arrows  with  non-zero  groups  E^r_p,q≠  0 represented by dots. An
  alternative  representation of this information is as a barcode (of the sort
  used  in  Topological  Data  Analysis).  The  homomorphisms  ι^∗,∗_2  in the
  example, with coefficients converted to mod 2, are pictured by the bar code
  
  which was produced by the following commands.
  
    Example  
    gap> p:=2;;k:=2;;
    gap> P:=PersistentHomologyOfFilteredChainComplex(C,k,p);;
    gap> BarCodeDisplay(P);
    
  
  
  Let  us view a barcode as a graph with vertices arranged in columns. We then
  refer  to  a connected component of this graph as a bar. Let us say that any
  bar  with  a  vertex in the final (right-hand) column is of length ∞. Let us
  define  the  length  of  any  other  bar  to be r-1 where r is the number of
  vertices  in  the bar. Theorem 3.1 in [RHM+13] implies that the differential
  d^r_p,q=0  for  p+q=k  if  and  only  if  there is no bar of length r in the
  barcode  arising  in  this  way  for  any  degree k homology barcode. So the
  following commands demonstrate that d^r=0 for r≥ 2 at least for k≤ 7.
  
    Example  
    gap> for k in [1..7] do
    > R:=ResolutionNormalSeries([G,N],k+1);;
    > C:=FilteredTensorWithIntegersModP(R,2);
    > P:=PersistentHomologyOfFilteredChainComplex(C,k,2);;
    > BarCodeDisplay(P);
    > od;
    
  
  
  
  10.7 Sparse chain complexes
  
  Boundary  homomorphisms  in all of the above examples of chain complexes are
  represented by matrices. In cases where the matrices are large and have many
  zero entries it is better to use sparse matrices.
  
  The following commands demonstrate the conversion of the matrix
  
  A=(beginarrayccc 0 &2 &0 -3 &0 & 0 0 & 0 &4 endarray)
  
  to sparse form, and vice-versa.
  
    Example  
    gap> A:=[[0,2,0],[-3,0,0],[0,0,4]];;
    gap> S:=SparseMat(A);
    Sparse matrix with 3 rows and 3 columns in characteristic 0
    
    gap> NamesOfComponents(S);
    [ "mat", "characteristic", "rows", "cols" ]
    gap> S!.mat;
    [ [ [ 2, 2 ] ], [ [ 1, -3 ] ], [ [ 3, 4 ] ] ]
    
    gap> B:=SparseMattoMat(S);
    [ [ 0, 2, 0 ], [ -3, 0, 0 ], [ 0, 0, 4 ] ]
    
  
  
  To  illustrate the use of sparse chain complexes we consider the data points
  represented in the following digital image.
  
  The  following  commands  read in this image as a 2-dimensional pure cubical
  complex  and  store the Euclidean coordinates of the black pixels in a list.
  Then  200 points are selected at random from this list and used to construct
  a  200×  200  symmetric  matrix  S  whose entries are the Euclidean distance
  between the sample data points.
  
    Example  
    gap> file:=HapFile("data500.png");;
    gap> M:=ReadImageAsPureCubicalComplex(file,400);;
    gap> A:=M!.binaryArray;;
    gap> data:=[];;
    gap> for i in [1..Length(A)] do
    > for j in [1..Length(A[1])] do
    > if A[i][j]=1 then Add(data,[i,j]); fi;
    > od;
    > od;
    gap> sample:=List([1..200],i->Random(data));;
    gap> S:=VectorsToSymmetricMatrix(sample,EuclideanApproximatedMetric);;
    
  
  
  The  symmetric  distance  matrix  S  is  next  converted to a filtered chain
  complex  arising  from  a  filtered  simplicial  complex (using the standard
  persistent homology pipeline).
  
    Example  
    gap> G:=SymmetricMatrixToFilteredGraph(S,10,100);; 
    #Filtration length T=10, distances greater than 100 discarded.
    gap> N:=SimplicialNerveOfFilteredGraph(G,2);;
    gap> C:=SparseFilteredChainComplexOfFilteredSimplicialComplex(N);;
    Filtered sparse chain complex of length 2 in characteristic 0 .
    
  
  
  Next,  the  induced homology homomorphisms in degrees 1 and 2, with rational
  coefficients, are computed and displayed a barcodes.
  
    Example  
    gap> P0:=PersistentHomologyOfFilteredSparseChainComplex(C,0);;
    gap> P1:=PersistentHomologyOfFilteredSparseChainComplex(C,1);;
    gap> BarCodeCompactDisplay(P0);
    
  
  
    Example  
    gap> BarCodeCompactDisplay(P1);
    
  
  
  The  barcodes are consistent with the data points having been sampled from a
  space with the homotopy type of an annulus.