GAP (simpcomp) - Chapter 8: (Co-)Homology of simplicial complexes

Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Bib Ind
[Top of Book] [Contents] [Previous Chapter] [Next Chapter]

[MathJax on]

8 (Co-)Homology of simplicial complexes
8.1 Homology computation
8.1-1 SCBoundaryOperatorMatrix
8.1-2 SCBoundarySimplex
8.1-3 SCHomologyBasis
8.1-4 SCHomologyBasisAsSimplices
8.1-5 SCHomologyInternal
8.2 Cohomology computation
8.2-1 SCCoboundaryOperatorMatrix
8.2-2 SCCohomology
8.2-3 SCCohomologyBasis
8.2-4 SCCohomologyBasisAsSimplices
8.2-5 SCCupProduct
8.2-6 SCIntersectionForm
8.2-7 SCIntersectionFormParity
8.2-8 SCIntersectionFormDimensionality
8.2-9 SCIntersectionFormSignature

### 8 (Co-)Homology of simplicial complexes

By default, simpcomp uses an algorithm based on discrete Morse theory (see Chapter 12, `SCHomology` (7.3-9)) for its homology computations. However, some additional (co-)homology related functionality cannot be realised using this algorithm. For this, simpcomp contains an additional (co-)homology algorithm (cf. `SCHomologyInternal` (8.1-5)), which will be presented in this chapter.

Furthermore, whenever possible simpcomp makes use of the GAP package ''homology'' [DHSW11], for an alternative method to calculate homology groups (cf. `SCHomologyClassic` (6.9-31)) which sometimes is much faster than the built-in discrete Morse theory algorithm.

#### 8.1 Homology computation

Apart from calculating boundaries of simplices, boundary matrices or the simplicial homology of a given complex, simpcomp is also able to compute a basis of the homology groups.

##### 8.1-1 SCBoundaryOperatorMatrix

`‣ SCBoundaryOperatorMatrix`( complex, k ) | ( method )

Returns: a rectangular matrix upon success, `fail` otherwise.

Calculates the matrix of the boundary operator ∂_k+1 of a simplicial complex complex. Note that each column contains the boundaries of a k+1-simplex as a list of oriented k-simplices and that the matrix is stored as a list of row vectors (as usual in GAP).

     gap> c:=SCFromFacets([[1,2,3],[1,2,6],[1,3,5],[1,4,5],[1,4,6],\
                           [2,3,4],[2,4,5],[2,5,6],[3,4,6],[3,5,6]]);;
     gap> mat:=SCBoundaryOperatorMatrix(c,1);
     [ [ 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
       [ -1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 ],
       [ 0, -1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 1, 0, 0, 0 ],
       [ 0, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, 0, 1, 1, 0 ],
       [ 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, -1, 0, 1 ],
       [ 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, -1, -1 ] ]

##### 8.1-2 SCBoundarySimplex

`‣ SCBoundarySimplex`( simplex, orientation ) | ( function )

Returns: a list upon success, `fail` otherwise.

Calculates the boundary of a given simplex. If the flag orientation is set to `true`, the function returns the boundary as a list of oriented simplices of the form [ ORIENTATION, SIMPLEX ], where ORIENTATION is either +1 or -1 and a value of +1 means that SIMPLEX is positively oriented and a value of -1 that SIMPLEX is negatively oriented. If orientation is set to `false`, an unoriented list of simplices is returned.

     gap> SCBoundarySimplex([1..5],true);
     [ [ -1, [ 2, 3, 4, 5 ] ], [ 1, [ 1, 3, 4, 5 ] ], [ -1, [ 1, 2, 4, 5 ] ],
       [ 1, [ 1, 2, 3, 5 ] ], [ -1, [ 1, 2, 3, 4 ] ] ]
     gap> SCBoundarySimplex([1..5],false);
     [ [ 2, 3, 4, 5 ], [ 1, 3, 4, 5 ], [ 1, 2, 4, 5 ], [ 1, 2, 3, 5 ],
       [ 1, 2, 3, 4 ] ]

##### 8.1-3 SCHomologyBasis

`‣ SCHomologyBasis`( complex, k ) | ( method )

Returns: a list of pairs of the form `[ integer, list of linear combinations of simplices ]` upon success, `fail` otherwise.

Calculates a set of basis elements for the k-dimensional homology group (with integer coefficients) of a simplicial complex complex. The entries of the returned list are of the form [ MODULUS, [ BASEELM1, BASEELM2, ...] ], where the value MODULUS is 1 for the basis elements of the free part of the k-th homology group and q≥ 2 for the basis elements of the q-torsion part. In contrast to the function `SCHomologyBasisAsSimplices` (8.1-4) the basis elements are stored as lists of coefficient-index pairs referring to the simplices of the complex, i.e. a basis element of the form [ [ λ_1, i], [λ_2, j], dots ] dots encodes the linear combination of simplices of the form λ_1*∆_1+λ_2*∆_2 with ∆_1=`SCSkel(complex,k)[i]`, ∆_2=`SCSkel(complex,k)[j]` and so on.

     gap> SCLib.SearchByName("(S^2xS^1)#RP^3");
     [ [ 237, "(S^2xS^1)#RP^3" ] ]
     gap> c:=SCLib.Load(last[1][1]);;
     gap> SCHomologyBasis(c,1);
     [ [ 1, [ [ 1, 12 ], [ -1, 7 ], [ 1, 1 ] ] ],
       [ 2, [ [ 1, 68 ], [ -1, 69 ], [ -1, 71 ], [ 2, 72 ], [ -2, 73 ] ] ] ]

##### 8.1-4 SCHomologyBasisAsSimplices

`‣ SCHomologyBasisAsSimplices`( complex, k ) | ( method )

Returns: a list of pairs of the form `[ integer, list of linear combinations of simplices ]` upon success, `fail` otherwise.

Calculates a set of basis elements for the k-dimensional homology group (with integer coefficients) of a simplicial complex complex. The entries of the returned list are of the form [ MODULUS, [ BASEELM1, BASEELM2, ...] ], where the value MODULUS is 1 for the basis elements of the free part of the k-th homology group and q≥ 2 for the basis elements of the q-torsion part. In contrast to the function `SCHomologyBasis` (8.1-3) the basis elements are stored as lists of coefficient-simplex pairs, i.e. a basis element of the form [ [ λ_1, ∆_1], [λ_2, ∆_2], dots ] encodes the linear combination of simplices of the form λ_1*∆_1+λ_2*∆_2 + dots.

     gap> SCLib.SearchByName("(S^2xS^1)#RP^3");
     [ [ 237, "(S^2xS^1)#RP^3" ] ]
     gap> c:=SCLib.Load(last[1][1]);;
     gap> SCHomologyBasisAsSimplices(c,1);
     [ [ 1, [ [ 1, [ 2, 8 ] ], [ -1, [ 1, 8 ] ], [ 1, [ 1, 2 ] ] ] ],
       [ 2,
           [ [ 1, [ 11, 12 ] ], [ -1, [ 11, 13 ] ], [ -1, [ 12, 13 ] ],
               [ 2, [ 12, 14 ] ], [ -2, [ 13, 14 ] ] ] ] ]

##### 8.1-5 SCHomologyInternal

`‣ SCHomologyInternal`( complex ) | ( function )

Returns: a list of pairs of the form `[ integer, list ]` upon success, `fail` otherwise.

This function computes the reduced simplicial homology with integer coefficients of a given simplicial complex complex with integer coefficients. It uses the algorithm described in [DKT08].

The output is a list of homology groups of the form [H_0,....,H_d], where d is the dimension of complex. The format of the homology groups H_i is given in terms of their maximal cyclic subgroups, i.e. a homology group H_i≅ Z^f + Z / t_1 Z × dots × Z / t_n Z is returned in form of a list [ f, [t_1,...,t_n] ], where f is the (integer) free part of H_i and t_i denotes the torsion parts of H_i ordered in weakly incresing size. See also `SCHomology` (7.3-9) and `SCHomologyClassic` (6.9-31).

     gap> c:=SCSurface(1,false);;
     gap> SCHomologyInternal(c);
     [ [ 0, [  ] ], [ 0, [ 2 ] ], [ 0, [  ] ] ]

#### 8.2 Cohomology computation

simpcomp can also compute the cohomology groups of simplicial complexes, bases of these cohomology groups, the cup product of two cocycles and the intersection form of (orientable) 4-manifolds.

##### 8.2-1 SCCoboundaryOperatorMatrix

`‣ SCCoboundaryOperatorMatrix`( complex, k ) | ( method )

Returns: a rectangular matrix upon success, `fail` otherwise.

Calculates the matrix of the coboundary operator d^k+1 as a list of row vectors.

     gap> c:=SCFromFacets([[1,2,3],[1,2,6],[1,3,5],[1,4,5],[1,4,6],\
                           [2,3,4],[2,4,5],[2,5,6],[3,4,6],[3,5,6]]);
     > <SimplicialComplex: unnamed complex 2 | dim = 2 | n = 6>
     gap> mat:=SCCoboundaryOperatorMatrix(c,1);
     [ [ -1, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
       [ -1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0 ],
       [ 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0 ],
       [ 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0 ],
       [ 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0 ],
       [ 0, 0, 0, 0, 0, -1, 1, 0, 0, -1, 0, 0, 0, 0, 0 ],
       [ 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, -1, 0, 0 ],
       [ 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, -1 ],
       [ 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, -1, 0 ],
       [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 1, 0, 0, -1 ] ]

##### 8.2-2 SCCohomology

`‣ SCCohomology`( complex ) | ( method )

Returns: a list of pairs of the form `[ integer, list ]` upon success, `fail` otherwise.

This function computes the simplicial cohomology groups of a given simplicial complex complex with integer coefficients. It uses the algorithm described in [DKT08].

The output is a list of cohomology groups of the form [H^0,....,H^d], where d is the dimension of complex. The format of the cohomology groups H^i is given in terms of their maximal cyclic subgroups, i.e. a cohomology group H^i≅ Z^f + Z / t_1 Z × dots × Z / t_n Z is returned in form of a list [ f, [t_1,...,t_n] ], where f is the (integer) free part of H^i and t_i denotes the torsion parts of H^i ordered in weakly increasing size.

     gap> c:=SCFromFacets([[1,2,3],[1,2,6],[1,3,5],[1,4,5],[1,4,6],
                           [2,3,4],[2,4,5],[2,5,6],[3,4,6],[3,5,6]]);
     > <SimplicialComplex: unnamed complex 4 | dim = 2 | n = 6>
     gap> SCCohomology(c);
     [ [ 1, [  ] ], [ 0, [  ] ], [ 0, [ 2 ] ] ]

##### 8.2-3 SCCohomologyBasis

`‣ SCCohomologyBasis`( complex, k ) | ( method )

Returns: a list of pairs of the form `[ integer, list of linear combinations of simplices ]` upon success, `fail` otherwise.

Calculates a set of basis elements for the k-dimensional cohomology group (with integer coefficients) of a simplicial complex complex. The entries of the returned list are of the form [ MODULUS, [ BASEELM1, BASEELM2, ...] ], where the value MODULUS is 1 for the basis elements of the free part of the k-th homology group and q≥ 2 for the basis elements of the q-torsion part. In contrast to the function `SCCohomologyBasisAsSimplices` (8.2-4) the basis elements are stored as lists of coefficient-index pairs referring to the linear forms dual to the simplices in the k-th cochain complex of complex, i.e. a basis element of the form [ [ λ_1, i], [λ_2, j], dots ] dots encodes the linear combination of simplices (or their dual linear forms in the corresponding cochain complex) of the form λ_1*∆_1+λ_2*∆_2 with ∆_1=`SCSkel(complex,k)[i]`, ∆_2=`SCSkel(complex,k)[j]` and so on.

     gap> SCLib.SearchByName("SU(3)/SO(3)");
     [ [ 219, "SU(3)/SO(3) (VT)" ], [ 477, "SU(3)/SO(3) (VT)" ],
       [ 484, "SU(3)/SO(3) (VT)" ], [ 486, "SU(3)/SO(3) (VT)" ] ]
     gap> c:=SCLib.Load(last[1][1]);;
     gap> SCCohomologyBasis(c,3);
     [ [ 2, [ [ -9, 259 ], [ 9, 262 ], [ 9, 263 ], [ -9, 270 ], [ 9, 271 ],
               [ -9, 273 ], [ -9, 274 ], [ -18, 275 ], [ -9, 276 ], [ 9, 278 ],
               [ -9, 279 ], [ -9, 280 ], [ 3, 283 ], [ -3, 285 ], [ 3, 289 ],
               [ -3, 294 ], [ 3, 310 ], [ -3, 313 ], [ 3, 316 ], [ -1, 317 ],
               [ -6, 318 ], [ 3, 319 ], [ -6, 320 ], [ 6, 321 ], [ 1, 322 ],
               [ 3, 325 ], [ -1, 328 ], [ 6, 330 ], [ -2, 331 ], [ 12, 332 ],
               [ 7, 333 ], [ -5, 334 ], [ 1, 345 ], [ 3, 355 ], [ -9, 357 ],
               [ 9, 358 ], [ 1, 363 ], [ 12, 365 ], [ -9, 366 ], [ -3, 370 ],
               [ -1, 371 ], [ -3, 372 ], [ 8, 373 ], [ -1, 374 ], [ 6, 375 ],
               [ 9, 376 ], [ 3, 377 ], [ 1, 380 ], [ 3, 383 ], [ -8, 385 ],
               [ -9, 386 ], [ -9, 388 ], [ -18, 404 ], [ 9, 410 ], [ -9, 425 ],
               [ -18, 426 ], [ -9, 427 ], [ 9, 428 ], [ -9, 429 ], [ 3, 433 ],
               [ -3, 435 ], [ -9, 437 ], [ 10, 442 ], [ 12, 445 ], [ 1, 447 ],
               [ -19, 448 ], [ 2, 449 ], [ -1, 450 ], [ -9, 451 ], [ 3, 453 ],
               [ 1, 455 ], [ 1, 457 ], [ -11, 458 ], [ -9, 459 ], [ 9, 461 ],
               [ 9, 462 ], [ -9, 468 ], [ 9, 469 ], [ -18, 471 ], [ -9, 472 ],
               [ 9, 474 ], [ -9, 475 ], [ 9, 488 ], [ 9, 495 ], [ -9, 500 ],
               [ -3, 504 ], [ 9, 505 ], [ 9, 512 ], [ 9, 515 ], [ 6, 519 ],
               [ 18, 521 ], [ -15, 523 ], [ 9, 524 ], [ -3, 525 ], [ 18, 527 ],
               [ -18, 528 ], [ 6, 529 ], [ 6, 531 ], [ 12, 532 ] ] ] ]

##### 8.2-4 SCCohomologyBasisAsSimplices

`‣ SCCohomologyBasisAsSimplices`( complex, k ) | ( method )

Returns: a list of pars of the form `[ integer, linear combination of simplices ]` upon success, `fail` otherwise.

Calculates a set of basis elements for the k-dimensional cohomology group (with integer coefficients) of a simplicial complex complex. The entries of the returned list are of the form [ MODULUS, [ BASEELM1, BASEELM2, ...] ], where the value MODULUS is 1 for the basis elements of the free part of the k-th homology group and q≥ 2 for the basis elements of the q-torsion part. In contrast to the function `SCCohomologyBasis` (8.2-3) the basis elements are stored as lists of coefficient-simplex pairs referring to the linear forms dual to the simplices in the k-th cochain complex of complex, i.e. a basis element of the form [ [ λ_1, ∆_i], [λ_2, ∆_j], dots ] dots encodes the linear combination of simplices (or their dual linear forms in the corresponding cochain complex) of the form λ_1*∆_1+λ_2*∆_2 + dots.

     gap> SCLib.SearchByName("SU(3)/SO(3)");
     [ [ 219, "SU(3)/SO(3) (VT)" ], [ 477, "SU(3)/SO(3) (VT)" ],
       [ 484, "SU(3)/SO(3) (VT)" ], [ 486, "SU(3)/SO(3) (VT)" ] ]
     gap> c:=SCLib.Load(last[1][1]);;
     gap> SCCohomologyBasisAsSimplices(c,3);
     [ [ 2,
           [ [ -9, [ 2, 7, 8, 9 ] ], [ 9, [ 2, 7, 8, 12 ] ],
               [ 9, [ 2, 7, 8, 13 ] ], [ -9, [ 2, 7, 11, 12 ] ],
               [ 9, [ 2, 7, 11, 13 ] ], [ -9, [ 2, 8, 9, 10 ] ],
               [ -9, [ 2, 8, 9, 11 ] ], [ -18, [ 2, 8, 9, 12 ] ],
               [ -9, [ 2, 8, 9, 13 ] ], [ 9, [ 2, 8, 10, 12 ] ],
               [ -9, [ 2, 8, 10, 13 ] ], [ -9, [ 2, 8, 11, 12 ] ],
               [ 3, [ 2, 9, 10, 12 ] ], [ -3, [ 2, 9, 11, 12 ] ],
               [ 3, [ 3, 4, 5, 7 ] ], [ -3, [ 3, 4, 5, 12 ] ],
               [ 3, [ 3, 4, 10, 12 ] ], [ -3, [ 3, 5, 6, 7 ] ],
               [ 3, [ 3, 5, 6, 11 ] ], [ -1, [ 3, 5, 6, 13 ] ],
               [ -6, [ 3, 5, 7, 8 ] ], [ 3, [ 3, 5, 7, 10 ] ],
               [ -6, [ 3, 5, 7, 11 ] ], [ 6, [ 3, 5, 7, 12 ] ],
               [ 1, [ 3, 5, 7, 13 ] ], [ 3, [ 3, 5, 8, 12 ] ],
               [ -1, [ 3, 5, 9, 13 ] ], [ 6, [ 3, 5, 10, 12 ] ],
               [ -2, [ 3, 5, 10, 13 ] ], [ 12, [ 3, 5, 11, 12 ] ],
               [ 7, [ 3, 5, 11, 13 ] ], [ -5, [ 3, 5, 12, 13 ] ],
               [ 1, [ 3, 6, 9, 13 ] ], [ 3, [ 3, 7, 10, 12 ] ],
               [ -9, [ 3, 7, 11, 12 ] ], [ 9, [ 3, 7, 11, 13 ] ],
               [ 1, [ 3, 8, 9, 13 ] ], [ 12, [ 3, 8, 10, 12 ] ],
               [ -9, [ 3, 8, 10, 13 ] ], [ -3, [ 3, 9, 10, 12 ] ],
               [ -1, [ 3, 9, 10, 13 ] ], [ -3, [ 3, 9, 11, 12 ] ],
               [ 8, [ 3, 9, 11, 13 ] ], [ -1, [ 3, 9, 12, 13 ] ],
               [ 6, [ 3, 10, 11, 12 ] ], [ 9, [ 3, 10, 11, 13 ] ],
               [ 3, [ 3, 10, 12, 13 ] ], [ 1, [ 4, 5, 6, 8 ] ],
               [ 3, [ 4, 5, 6, 11 ] ], [ -8, [ 4, 5, 6, 13 ] ],
               [ -9, [ 4, 5, 7, 8 ] ], [ -9, [ 4, 5, 7, 11 ] ],
               [ -18, [ 4, 6, 8, 9 ] ], [ 9, [ 4, 6, 9, 13 ] ],
               [ -9, [ 4, 8, 9, 10 ] ], [ -18, [ 4, 8, 9, 12 ] ],
               [ -9, [ 4, 8, 9, 13 ] ], [ 9, [ 4, 8, 10, 12 ] ],
               [ -9, [ 4, 8, 10, 13 ] ], [ 3, [ 4, 9, 10, 12 ] ],
               [ -3, [ 4, 9, 11, 12 ] ], [ -9, [ 4, 9, 12, 13 ] ],
               [ 10, [ 5, 6, 7, 8 ] ], [ 12, [ 5, 6, 7, 11 ] ],
               [ 1, [ 5, 6, 7, 13 ] ], [ -19, [ 5, 6, 8, 9 ] ],
               [ 2, [ 5, 6, 8, 11 ] ], [ -1, [ 5, 6, 8, 12 ] ],
               [ -9, [ 5, 6, 8, 13 ] ], [ 3, [ 5, 6, 9, 11 ] ],
               [ 1, [ 5, 6, 9, 13 ] ], [ 1, [ 5, 6, 10, 13 ] ],
               [ -11, [ 5, 6, 11, 13 ] ], [ -9, [ 5, 7, 8, 9 ] ],
               [ 9, [ 5, 7, 8, 12 ] ], [ 9, [ 5, 7, 8, 13 ] ],
               [ -9, [ 5, 7, 11, 12 ] ], [ 9, [ 5, 7, 11, 13 ] ],
               [ -18, [ 5, 8, 9, 12 ] ], [ -9, [ 5, 8, 9, 13 ] ],
               [ 9, [ 5, 8, 10, 12 ] ], [ -9, [ 5, 8, 11, 12 ] ],
               [ 9, [ 6, 7, 8, 13 ] ], [ 9, [ 6, 7, 11, 13 ] ],
               [ -9, [ 6, 8, 10, 13 ] ], [ -3, [ 6, 9, 11, 12 ] ],
               [ 9, [ 6, 9, 11, 13 ] ], [ 9, [ 7, 8, 9, 13 ] ],
               [ 9, [ 7, 8, 11, 12 ] ], [ 6, [ 7, 9, 11, 12 ] ],
               [ 18, [ 7, 11, 12, 13 ] ], [ -15, [ 8, 9, 10, 12 ] ],
               [ 9, [ 8, 9, 10, 13 ] ], [ -3, [ 8, 9, 11, 12 ] ],
               [ 18, [ 8, 10, 11, 12 ] ], [ -18, [ 8, 10, 12, 13 ] ],
               [ 6, [ 9, 10, 11, 12 ] ], [ 6, [ 9, 10, 12, 13 ] ],
               [ 12, [ 9, 11, 12, 13 ] ] ] ] ]

##### 8.2-5 SCCupProduct

`‣ SCCupProduct`( complex, cocycle1, cocycle2 ) | ( function )

Returns: a list of pairs of the form `[ ORIENTATION, SIMPLEX ]` upon success, `fail` otherwise.

The cup product is a method of adjoining two cocycles of degree p and q to form a composite cocycle of degree p + q. It endows the cohomology groups of a simplicial complex with the structure of a ring.

The construction of the cup product starts with a product of cochains: if cocycle1 is a p-cochain and cocylce2 is a q-cochain of a simplicial complex complex (given as list of oriented p- (q-)simplices), then

cocycle1 ⌣ cocycle2(σ) =cocycle1(σ ∘ ι_0,1, ... p) ⋅ cocycle2(σ ∘ ι_p, p+1 ,..., p + q)

where σ is a p + q-simplex and ι_S, S ⊂ {0,1,...,p+q } is the canonical embedding of the simplex spanned by S into the (p + q)-standard simplex.

σ ∘ ι_0,1, ..., p is called the p-th front face and σ ∘ ι_p, p+1, ..., p + q is the q-th back face of σ, respectively.

Note that this function only computes the cup product in the case that complex is an orientable weak pseudomanifold of dimension 2k and p = q = k. Furthermore, complex must be given in standard labeling, with sorted facet list and cocylce1 and cocylce2 must be given in simplex notation and labeled accordingly. Note that the latter condition is usually fulfilled in case the cocycles were computed using `SCCohomologyBasisAsSimplices` (8.2-4).

     gap> SCLib.SearchByName("K3");
     [ [ 520, "K3_16" ], [ 539, "K3_17" ] ]
     gap> c:=SCLib.Load(last[1][1]);;
     gap> basis:=SCCohomologyBasisAsSimplices(c,2);;
     gap> SCCupProduct(c,basis[1][2],basis[1][2]);
     [ [ 1, [ 1, 2, 4, 7, 11 ] ], [ 1, [ 2, 3, 4, 5, 9 ] ] ]
     gap> SCCupProduct(c,basis[1][2],basis[2][2]);
     [ [ -1, [ 1, 2, 4, 7, 11 ] ], [ -1, [ 1, 2, 4, 7, 15 ] ],
       [ -1, [ 2, 3, 4, 5, 9 ] ] ]

##### 8.2-6 SCIntersectionForm

`‣ SCIntersectionForm`( complex ) | ( method )

Returns: a square matrix of integer values upon success, `fail` otherwise.

For 2k-dimensional orientable manifolds M the cup product (see `SCCupProduct` (8.2-5)) defines a bilinear form

H^k ( M ) ×H^k ( M ) ->H^2k (M), (a,b) ↦ a ∪ b

called the intersection form of M. This function returns the intersection form of an orientable combinatorial 2k-manifold complex in form of a matrix `mat` with respect to the basis of H^k (complexM) computed by `SCCohomologyBasisAsSimplices` (8.2-4). The matrix entry `mat[i][j]` equals the intersection number of the `i`-th base element with the `j`-th base element of H^k (complexM).

     gap> SCLib.SearchByName("CP^2");
     [ [ 16, "CP^2 (VT)" ], [ 96, "CP^2#-CP^2" ], [ 97, "CP^2#CP^2" ],
       [ 185, "CP^2#(S^2xS^2)" ], [ 397, "Gaifullin CP^2" ],
       [ 457, "(S^3~S^1)#(CP^2)^{#5} (VT)" ] ]
     gap> c:=SCLib.Load(last[1][1]);;
     gap> c1:=SCConnectedSum(c,c);;
     gap> c2:=SCConnectedSumMinus(c,c);;
     gap> q1:=SCIntersectionForm(c1);;
     gap> q2:=SCIntersectionForm(c2);;
     gap> PrintArray(q1);
     [ [  1,  0 ],
       [  0,  1 ] ]
     gap> PrintArray(q2);
     [ [   1,   0 ],
       [   0,  -1 ] ]

##### 8.2-7 SCIntersectionFormParity

`‣ SCIntersectionFormParity`( complex ) | ( method )

Returns: `0` or `1` upon success, `fail` otherwise.

Computes the parity of the intersection form of a combinatorial manifold complex (see `SCIntersectionForm` (8.2-6)). If the intersection for is even (i. e. all diagonal entries are even numbers) `0` is returned, otherwise `1` is returned.

     gap> SCLib.SearchByName("S^2xS^2");;
     gap> c:=SCLib.Load(last[1][1]);;
     gap> SCIntersectionFormParity(c);
     0
     gap> SCLib.SearchByName("CP^2");;
     gap> c:=SCLib.Load(last[1][1]);;
     gap> SCIntersectionFormParity(c);
     1

##### 8.2-8 SCIntersectionFormDimensionality

`‣ SCIntersectionFormDimensionality`( complex ) | ( method )

Returns: an integer upon success, `fail` otherwise.

Returns the dimensionality of the intersection form of a combinatorial manifold complex, i. e. the length of a minimal generating set of H^k (M) (where 2k is the dimension of complex). See `SCIntersectionForm` (8.2-6) for further details.

     gap> SCLib.SearchByName("CP^2");;
     gap> c:=SCLib.Load(last[1][1]);;
     gap> SCIntersectionFormParity(c);
     1
     gap> SCCohomology(c);
     [ [ 1, [  ] ], [ 0, [  ] ], [ 1, [  ] ], [ 0, [  ] ], [ 1, [  ] ] ]
     gap> SCIntersectionFormDimensionality(c);
     1
     gap> d:=SCConnectedProduct(c,10);;
     gap> SCIntersectionFormDimensionality(d);
     10

##### 8.2-9 SCIntersectionFormSignature

`‣ SCIntersectionFormSignature`( complex ) | ( method )

Returns: a triple of integers upon success, `fail` otherwise.

Computes the dimensionality (see `SCIntersectionFormDimensionality` (8.2-8)) and the signature of the intersection form of a combinatorial manifold complex as a 3-tuple that contains the dimensionality in the first entry and the number of positive / negative eigenvalues in the second and third entry. See `SCIntersectionForm` (8.2-6) for further details.

Internally calls the GAP-functions `Matrix_CharacteristicPolynomialSameField` and `CoefficientsOfLaurentPolynomial` to compute the number of positive / negative eigenvalues of the intersection form.

     gap> SCLib.SearchByName("CP^2");;
     gap> c:=SCLib.Load(last[1][1]);;
     gap> SCIntersectionFormParity(c);
     1
     gap> SCCohomology(c);
     [ [ 1, [  ] ], [ 0, [  ] ], [ 1, [  ] ], [ 0, [  ] ], [ 1, [  ] ] ]
     gap> SCIntersectionFormSignature(c);
     [ 1, 0, 1 ]
     gap> d:=SCConnectedSum(c,c);
     <SimplicialComplex: CP^2 (VT)#+-CP^2 (VT) | dim = 4 | n = 13>
     gap> SCIntersectionFormSignature(d);
     [ 2, 2, 0 ]
     gap> d:=SCConnectedSumMinus(c,c);;
     gap> SCIntersectionFormSignature(d);
     [ 2, 1, 1 ]

[Top of Book] [Contents] [Previous Chapter] [Next Chapter]
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Bib Ind

generated by GAPDoc2HTML