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] 

8 (Co-)Homology of simplicial complexes
 8.1 Homology computation
 8.2 Cohomology computation

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