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.

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.

`‣ 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 ] ]

`‣ 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 ] ]

`‣ 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"); [ [ 590, "(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 ] ] ] ]

`‣ 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"); [ [ 590, "(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 ] ] ] ] ]

`‣ 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, [ ] ] ]

**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.

`‣ 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 Properties known: Dim, FacetsEx, Name, Vertices. Name="unnamed complex 2" Dim=2 /SimplicialComplex] 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 ] ]

`‣ 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 Properties known: Dim, FacetsEx, Name, Vertices. Name="unnamed complex 4" Dim=2 /SimplicialComplex] gap> SCCohomology(c); [ [ 1, [ ] ], [ 0, [ ] ], [ 0, [ 2 ] ] ]

`‣ 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)"); [ [ 563, "SU(3)/SO(3) (VT)" ], [ 7276, "SU(3)/SO(3) (VT)" ], [ 7418, "SU(3)/SO(3) (VT)" ], [ 7419, "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 ] ] ] ]

`‣ 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)"); [ [ 563, "SU(3)/SO(3) (VT)" ], [ 7276, "SU(3)/SO(3) (VT)" ], [ 7418, "SU(3)/SO(3) (VT)" ], [ 7419, "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 ] ] ] ] ]

`‣ 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"); [ [ 7648, "K3_16" ], [ 7649, "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 ] ] ]

`‣ 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 (`complex`M) 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 (`complex`M).

gap> SCLib.SearchByName("CP^2"); [ [ 16, "CP^2 (VT)" ], [ 99, "CP^2#-CP^2" ], [ 100, "CP^2#CP^2" ], [ 400, "CP^2#(S^2xS^2)" ], [ 2486, "Gaifullin CP^2" ], [ 4401, "(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 ] ]

`‣ 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"); [ [ 59, "S^2xS^2" ], [ 134, "S^2xS^2 (VT)" ], [ 135, "S^2xS^2 (VT)" ], [ 136, "S^2xS^2 (VT)" ], [ 137, "(S^2xS^2)#(S^2xS^2)" ], [ 360, "(S^2xS^2)#(S^2xS^2) (VT)" ], [ 361, "(S^2xS^2)#(S^2xS^2) (VT)" ], [ 400, "CP^2#(S^2xS^2)" ] ] gap> c:=SCLib.Load(last[1][1]);; gap> SCIntersectionFormParity(c); 0 gap> SCLib.SearchByName("CP^2"); [ [ 16, "CP^2 (VT)" ], [ 99, "CP^2#-CP^2" ], [ 100, "CP^2#CP^2" ], [ 400, "CP^2#(S^2xS^2)" ], [ 2486, "Gaifullin CP^2" ], [ 4401, "(S^3~S^1)#(CP^2)^{#5} (VT)" ] ] gap> c:=SCLib.Load(last[1][1]);; gap> SCIntersectionFormParity(c); 1

`‣ 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"); [ [ 16, "CP^2 (VT)" ], [ 99, "CP^2#-CP^2" ], [ 100, "CP^2#CP^2" ], [ 400, "CP^2#(S^2xS^2)" ], [ 2486, "Gaifullin CP^2" ], [ 4401, "(S^3~S^1)#(CP^2)^{#5} (VT)" ] ] 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

`‣ 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"); [ [ 16, "CP^2 (VT)" ], [ 99, "CP^2#-CP^2" ], [ 100, "CP^2#CP^2" ], [ 400, "CP^2#(S^2xS^2)" ], [ 2486, "Gaifullin CP^2" ], [ 4401, "(S^3~S^1)#(CP^2)^{#5} (VT)" ] ] 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 Properties known: Dim, FacetsEx, Name, Vertices. Name="CP^2 (VT)#+-CP^2 (VT)" Dim=4 /SimplicialComplex] gap> SCIntersectionFormSignature(d); [ 2, 2, 0 ] gap> d:=SCConnectedSumMinus(c,c);; gap> SCIntersectionFormSignature(d); [ 2, 1, 1 ]

generated by GAPDoc2HTML