<h3>8 <span class="Heading">(Co-)Homology of simplicial complexes</span></h3>
<p>By default, <strong class="pkg">simpcomp</strong> uses an algorithm based on discrete Morse theory (see Chapter <a href="chap12.html#X7E9FD84F822A58D6"><span class="RefLink">12</span></a>, <code class="func">SCHomology</code> (<a href="chap7.html#X78D66254858CE901"><span class="RefLink">7.3-9</span></a>)) for its homology computations. However, some additional (co-)homology related functionality cannot be realised using this algorithm. For this, <strong class="pkg">simpcomp</strong> contains an additional (co-)homology algorithm (cf. <code class="func">SCHomologyInternal</code> (<a href="chap8.html#X858989CE797A8366"><span class="RefLink">8.1-5</span></a>)), which will be presented in this chapter.</p>
<p>Furthermore, whenever possible <strong class="pkg">simpcomp</strong> makes use of the <strongclass="pkg">GAP</strong> package ''homology'' <a href="chapBib.html#biBDumas04Homology">[DHSW11]</a>, for an alternative method to calculate homology groups (cf. <code class="func">SCHomologyClassic</code> (<a href="chap6.html#X864978877E7D4DA0"><span class="RefLink">6.9-31</span></a>)) which sometimes is much faster than the built-in discrete Morse theory algorithm.</p>
<p>Apart from calculating boundaries of simplices, boundary matrices or the simplicial homology of a given complex, <strong class="pkg">simpcomp</strong> is also able to compute a basis of the homology groups.</p>
<p>Calculates the matrix of the boundary operator <span class="SimpleMath">∂_<var class="Arg">k+1</var></span> of a simplicial complex <var class="Arg">complex</var>. Note that each column contains the boundaries of a <var class="Arg">k</var><span class="SimpleMath">+1</span>-simplex as a list of oriented <var class="Arg">k</var>-simplices and that the matrix is stored as a list of row vectors (as usual in GAP).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SCBoundarySimplex</code>( <var class="Arg">simplex</var>, <var class="Arg">orientation</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a list upon success, <code class="keyw">fail</code> otherwise.</p>
<p>Calculates the boundary of a given <var class="Arg">simplex</var>. If the flag <var class="Arg">orientation</var> is set to <code class="keyw">true</code>, 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 <var class="Arg">orientation</var> is set to <code class="keyw">false</code>, an unoriented list of simplices is returned.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SCHomologyBasis</code>( <var class="Arg">complex</var>, <var class="Arg">k</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a list of pairs of the form <code class="code">[ integer, list of linear combinations of simplices ]</code> upon success, <code class="keyw">fail</code> otherwise.</p>
<p>Calculates a set of basis elements for the <var class="Arg">k</var>-dimensional homology group (with integer coefficients) of a simplicial complex <var class="Arg">complex</var>. 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 <var class="Arg">k</var>-th homology group and <span class="SimpleMath">q≥ 2</span> for the basis elements of the <span class="SimpleMath">q</span>-torsion part. In contrast to the function <code class="func">SCHomologyBasisAsSimplices</code> (<a href="chap8.html#X7C569D9A7868C697"><span class="RefLink">8.1-4</span></a>) 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 <span class="SimpleMath">[ [ λ_1, i], [λ_2, j], dots ] dots</span> encodes the linear combination of simplices of the form <span class="SimpleMath">λ_1*∆_1+λ_2*∆_2</span> with <span class="SimpleMath">∆_1</span>=<code class="code">SCSkel(complex,k)[i]</code>, <span class="SimpleMath">∆_2</span>=<code class="code">SCSkel(complex,k)[j]</code> and so on.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SCHomologyBasisAsSimplices</code>( <var class="Arg">complex</var>, <var class="Arg">k</var> )</td><tdclass="tdright">( method )</td></tr></table></div>
<p>Returns: a list of pairs of the form <code class="code">[ integer, list of linear combinations of simplices ]</code> upon success, <code class="keyw">fail</code> otherwise.</p>
<p>Calculates a set of basis elements for the <var class="Arg">k</var>-dimensional homology group (with integer coefficients) of a simplicial complex <var class="Arg">complex</var>. 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 <var class="Arg">k</var>-th homology group and <span class="SimpleMath">q≥ 2</span> for the basis elements of the <span class="SimpleMath">q</span>-torsion part. In contrast to the function <code class="func">SCHomologyBasis</code> (<a href="chap8.html#X7F9B47A97F5FA005"><span class="RefLink">8.1-3</span></a>) the basis elements are stored as lists of coefficient-simplex pairs, i.e. a basis element of the form <span class="SimpleMath">[ [ λ_1, ∆_1], [λ_2, ∆_2], dots ]</span> encodes the linear combination of simplices of the form <span class="SimpleMath">λ_1*∆_1+λ_2*∆_2 + dots</span>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SCHomologyInternal</code>( <var class="Arg">complex</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a list of pairs of the form <code class="code">[ integer, list ]</code> upon success, <code class="keyw">fail</code> otherwise.</p>
<p>This function computes the reduced simplicial homology with integer coefficients of a given simplicial complex <var class="Arg">complex</var> with integer coefficients. It uses the algorithm described in <a href="chapBib.html#biBDesbrun08DiscDiffFormCompModel">[DKT08]</a>.</p>
<p>The output is a list of homology groups of the form <span class="SimpleMath">[H_0,....,H_d]</span>, where <span class="SimpleMath">d</span> is the dimension of <var class="Arg">complex</var>. The format of the homology groups <span class="SimpleMath">H_i</span> is given in terms of their maximal cyclic subgroups, i.e. a homology group <span class="SimpleMath">H_i≅ Z^f + Z / t_1 Z × dots × Z / t_n Z</span> is returned in form of a list <span class="SimpleMath">[ f, [t_1,...,t_n] ]</span>, where <span class="SimpleMath">f</span> is the (integer) free part of <span class="SimpleMath">H_i</span> and <span class="SimpleMath">t_i</span> denotes the torsion parts of <span class="SimpleMath">H_i</span> ordered in weakly incresing size. See also <code class="func">SCHomology</code> (<a href="chap7.html#X78D66254858CE901"><span class="RefLink">7.3-9</span></a>) and <code class="func">SCHomologyClassic</code> (<a href="chap6.html#X864978877E7D4DA0"><span class="RefLink">6.9-31</span></a>).</p>
<p><strong class="pkg">simpcomp</strong> 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.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SCCohomology</code>( <var class="Arg">complex</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a list of pairs of the form <code class="code">[ integer, list ]</code> upon success, <code class="keyw">fail</code> otherwise.</p>
<p>This function computes the simplicial cohomology groups of a given simplicial complex <var class="Arg">complex</var> with integer coefficients. It uses the algorithm described in <a href="chapBib.html#biBDesbrun08DiscDiffFormCompModel">[DKT08]</a>.</p>
<p>The output is a list of cohomology groups of the form <span class="SimpleMath">[H^0,....,H^d]</span>, where <span class="SimpleMath">d</span> is the dimension of <var class="Arg">complex</var>. The format of the cohomology groups <span class="SimpleMath">H^i</span> is given in terms of their maximal cyclic subgroups, i.e. a cohomology group <span class="SimpleMath">H^i≅ Z^f + Z / t_1 Z × dots × Z / t_n Z</span> is returned in form of a list <span class="SimpleMath">[ f, [t_1,...,t_n] ]</span>, where <span class="SimpleMath">f</span> is the (integer) free part of <span class="SimpleMath">H^i</span> and <span class="SimpleMath">t_i</span> denotes the torsion parts of <span class="SimpleMath">H^i</span> ordered in weakly increasing size.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SCCohomologyBasis</code>( <var class="Arg">complex</var>, <var class="Arg">k</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a list of pairs of the form <code class="code">[ integer, list of linear combinations of simplices ]</code> upon success, <code class="keyw">fail</code> otherwise.</p>
<p>Calculates a set of basis elements for the <var class="Arg">k</var>-dimensional cohomology group (with integer coefficients) of a simplicial complex <var class="Arg">complex</var>. 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 <var class="Arg">k</var>-th homology group and <span class="SimpleMath">q≥ 2</span> for the basis elements of the <span class="SimpleMath">q</span>-torsion part. In contrast to the function <code class="func">SCCohomologyBasisAsSimplices</code> (<a href="chap8.html#X7A5047E57E150716"><span class="RefLink">8.2-4</span></a>) the basis elements are stored as lists of coefficient-index pairs referring to the linear forms dual to the simplices in the <span class="SimpleMath">k</span>-th cochain complex of <var class="Arg">complex</var>, i.e. a basis element of the form <span class="SimpleMath">[ [ λ_1, i], [λ_2, j], dots ] dots</span> encodes the linear combination of simplices (or their dual linear forms in the corresponding cochain complex) of the form <span class="SimpleMath">λ_1*∆_1+λ_2*∆_2</span> with <span class="SimpleMath">∆_1</span>=<code class="code">SCSkel(complex,k)[i]</code>, <span class="SimpleMath">∆_2</span>=<code class="code">SCSkel(complex,k)[j]</code> and so on.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SCCohomologyBasisAsSimplices</code>( <var class="Arg">complex</var>, <var class="Arg">k</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a list of pars of the form <code class="code">[ integer, linear combination of simplices ]</code> upon success, <code class="keyw">fail</code> otherwise.</p>
<p>Calculates a set of basis elements for the <var class="Arg">k</var>-dimensional cohomology group (with integer coefficients) of a simplicial complex <var class="Arg">complex</var>. 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 <var class="Arg">k</var>-th homology group and <span class="SimpleMath">q≥ 2</span> for the basis elements of the <span class="SimpleMath">q</span>-torsion part. In contrast to the function <code class="func">SCCohomologyBasis</code> (<a href="chap8.html#X85910A6B824D63A4"><span class="RefLink">8.2-3</span></a>) the basis elements are stored as lists of coefficient-simplex pairs referring to the linear forms dual to the simplices in the <span class="SimpleMath">k</span>-th cochain complex of <var class="Arg">complex</var>, i.e. a basis element of the form <span class="SimpleMath">[ [ λ_1, ∆_i], [λ_2, ∆_j], dots ] dots</span> encodes the linear combination of simplices (or their dual linear forms in the corresponding cochain complex) of the form <span class="SimpleMath">λ_1*∆_1+λ_2*∆_2 + dots</span>.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SCCupProduct</code>( <var class="Arg">complex</var>, <var class="Arg">cocycle1</var>, <var class="Arg">cocycle2</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: a list of pairs of the form <code class="code">[ ORIENTATION, SIMPLEX ]</code> upon success, <code class="keyw">fail</code> otherwise.</p>
<p>The cup product is a method of adjoining two cocycles of degree <span class="SimpleMath">p</span> and <span class="SimpleMath">q</span> to form a composite cocycle of degree <span class="SimpleMath">p + q</span>. It endows the cohomology groups of a simplicial complex with the structure of a ring.</p>
<p>The construction of the cup product starts with a product of cochains: if <var class="Arg">cocycle1</var> is a p-cochain and <var class="Arg">cocylce2</var> is a q-cochain of a simplicial complex <var class="Arg">complex</var> (given as list of oriented p- (q-)simplices), then</p>
<p>where <span class="SimpleMath">σ</span> is a <span class="SimpleMath">p + q</span>-simplex and <span class="SimpleMath">ι_S</span>, <span class="SimpleMath">S ⊂ {0,1,...,p+q }</span> is the canonical embedding of the simplex spanned by <span class="SimpleMath">S</span> into the <span class="SimpleMath">(p + q)</span>-standard simplex.</p>
<p><span class="SimpleMath">σ ∘ ι_0,1, ..., p</span> is called the <span class="SimpleMath">p</span>-thfront face and <span class="SimpleMath">σ ∘ ι_p, p+1, ..., p + q</span> is the <span class="SimpleMath">q</span>-th back face of <span class="SimpleMath">σ</span>, respectively.</p>
<p>Note that this function only computes the cup product in the case that <var class="Arg">complex</var> is an orientable weak pseudomanifold of dimension <span class="SimpleMath">2k</span> and <span class="SimpleMath">p = q = k</span>. Furthermore, <var class="Arg">complex</var> must be given in standard labeling, with sorted facet list and <var class="Arg">cocylce1</var> and <var class="Arg">cocylce2</var> must be given in simplex notation and labeled accordingly. Note that the latter condition is usually fulfilled in case the cocycles were computed using <code class="func">SCCohomologyBasisAsSimplices</code> (<a href="chap8.html#X7A5047E57E150716"><span class="RefLink">8.2-4</span></a>).</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SCIntersectionForm</code>( <var class="Arg">complex</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a square matrix of integer values upon success, <code class="keyw">fail</code> otherwise.</p>
<p>For <span class="SimpleMath">2k</span>-dimensional orientable manifolds <span class="SimpleMath">M</span> the cup product (see <code class="func">SCCupProduct</code> (<a href="chap8.html#X7A9137847BF96DF3"><span class="RefLink">8.2-5</span></a>)) defines a bilinear form</p>
<p>H<span class="SimpleMath">^k ( M ) ×</span>H<span class="SimpleMath">^k ( M ) -></span>H<span class="SimpleMath">^2k (M), (a,b) ↦ a ∪ b</span></p>
<p>called the intersection form of <span class="SimpleMath">M</span>. This function returns the intersection form of an orientable combinatorial <span class="SimpleMath">2k</span>-manifold <var class="Arg">complex</var> in form of a matrix <code class="code">mat</code> with respect to the basis of H<span class="SimpleMath">^k (</span><var class="Arg">complex</var>M<span class="SimpleMath">)</span> computed by <code class="func">SCCohomologyBasisAsSimplices</code> (<a href="chap8.html#X7A5047E57E150716"><span class="RefLink">8.2-4</span></a>). The matrix entry <code class="code">mat[i][j]</code> equals the intersection number of the <code class="code">i</code>-thbaseelement with the <code class="code">j</code>-thbase element of H<span class="SimpleMath">^k (</span><var class="Arg">complex</var>M<span class="SimpleMath">)</span>.</p>
<p>Computes the parity of the intersection form of a combinatorial manifold <var class="Arg">complex</var> (see <code class="func">SCIntersectionForm</code> (<a href="chap8.html#X835E7016826D14A8"><span class="RefLink">8.2-6</span></a>)). If the intersection for is even (i. e. all diagonal entries are even numbers) <code class="code">0</code> is returned, otherwise <code class="code">1</code> is returned.</p>
<p>Returns the dimensionality of the intersection form of a combinatorial manifold <var class="Arg">complex</var>, i. e. the length of a minimal generating set of H<span class="SimpleMath">^k (M)</span> (where <span class="SimpleMath">2k</span> is the dimension of <var class="Arg">complex</var>). See <code class="func">SCIntersectionForm</code> (<a href="chap8.html#X835E7016826D14A8"><span class="RefLink">8.2-6</span></a>) for further details.</p>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ SCIntersectionFormSignature</code>( <var class="Arg">complex</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a triple of integers upon success, <code class="keyw">fail</code> otherwise.</p>
<p>Computes the dimensionality (see <code class="func">SCIntersectionFormDimensionality</code> (<a href="chap8.html#X7B5F948B84F5E316"><span class="RefLink">8.2-8</span></a>)) and the signature of the intersection form of a combinatorial manifold <var class="Arg">complex</var> as a <span class="SimpleMath">3</span>-tuple that contains the dimensionality in the first entry and the number of positive / negative eigenvalues in the second and third entry. See <code class="func">SCIntersectionForm</code> (<a href="chap8.html#X835E7016826D14A8"><span class="RefLink">8.2-6</span></a>) for further details.</p>
<p>Internally calls the <strong class="pkg">GAP</strong>-functions <code class="code">Matrix_CharacteristicPolynomialSameField</code> and <code class="code">CoefficientsOfLaurentPolynomial</code> to compute the number of positive / negative eigenvalues of the intersection form.</p>
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.