In this chapter functions are provided to perform simplicial blowups as well as the resolution of isolated singularities of certain types of combinatorial 4-manifolds. As of today singularities where the link is homeomorphic to RP^3, S^2 × S^1, S^2 dtimes S^1 and the lens spaces L(k,1) are supported. In addition, the program provides the possibility to hand over additional types of mapping cylinders to cover other types of singularities.

Please note that the program is based on a heuristic algorithm using bistellar moves. Hence, the search for a suitable sequence of bistellar moves to perform the blowup does not always terminate. However, especially in the case of ordinary double points (singularities of type RP^3), a lot of blowups have already been successful. For a very short introduction to simplicial blowups see 2.8, for further information see [SK11].

`‣ SCBlowup` ( pseudomanifold, singularity[, mappingCyl] ) | ( property ) |

Returns: simplicial complex of type `SCSimplicialComplex`

upon success, `fail`

otherwise.

If `singularity`

is an ordinary double point of a combinatorial 4-pseudomanifold `pseudomanifold` (lk(`singularity`

) = RP^3) the blowup of `pseudomanifold`

at `singularity`

is computed. If it is a singularity of type S^2 × S^1, S^2 dtimes S^1 or L(k,1), k ≤ 4, the canonical resolution of `singularity`

is computed using the bounded complexes provided in the source code below.

If the optional argument `mappingCyl`

of type `SCIsSimplicialComplex`

is given, this complex will be used to to resolve the singularity `singularity`

.

Note that bistellar moves do not necessarily preserve any orientation. Thus, the orientation of the blowup has to be checked in order to verify which type of blowup was performed. Normally, repeated computation results in both versions.

gap> SCLib.SearchByName("Kummer variety"); [ [ 7493, "4-dimensional Kummer variety (VT)" ] ] gap> c:=SCLib.Load(last[1][1]);; gap> d:= SCBlowup(c,1); #I SCBlowup: checking if singularity is a combinatorial manifold... #I SCBlowup: ...true #I SCBlowup: checking type of singularity... #I SCReduceComplexEx: complexes are bistellarly equivalent. #I SCBlowup: ...ordinary double point (supported type). #I SCBlowup: starting blowup... #I SCBlowup: map boundaries... #I SCBlowup: boundaries not isomorphic, initializing bistellar moves... #I SCBlowup: found complex with smaller boundary: f = [ 15, 74, 118, 59 ]. #I SCBlowup: found complex with smaller boundary: f = [ 14, 70, 112, 56 ]. #I SCBlowup: found complex with smaller boundary: f = [ 14, 69, 110, 55 ]. #I SCBlowup: found complex with smaller boundary: f = [ 14, 68, 108, 54 ]. #I SCBlowup: found complex with smaller boundary: f = [ 13, 65, 104, 52 ]. #I SCBlowup: found complex with smaller boundary: f = [ 13, 64, 102, 51 ]. #I SCBlowup: found complex with smaller boundary: f = [ 13, 63, 100, 50 ]. #I SCBlowup: found complex with smaller boundary: f = [ 13, 62, 98, 49 ]. #I SCBlowup: found complex with smaller boundary: f = [ 13, 61, 96, 48 ]. #I SCBlowup: found complex with smaller boundary: f = [ 12, 57, 90, 45 ]. #I SCBlowup: found complex with smaller boundary: f = [ 12, 56, 88, 44 ]. #I SCBlowup: found complex with smaller boundary: f = [ 12, 55, 86, 43 ]. #I SCBlowup: found complex with smaller boundary: f = [ 11, 51, 80, 40 ]. #I SCBlowup: found complex with isomorphic boundaries. #I SCBlowup: ...boundaries mapped succesfully. #I SCBlowup: build complex... #I SCBlowup: ...done. #I SCBlowup: ...blowup completed. #I SCBlowup: You may now want to reduce the complex via 'SCReduceComplex'. [SimplicialComplex Properties known: Dim, FacetsEx, Name, Vertices. Name="unnamed complex 2735 \ star([ 1 ]) in unnamed complex 2735 cup unnamed \ complex 2739 cup unnamed complex 2737" Dim=4 /SimplicialComplex]

gap> # resolving the singularities of a 4 dimensional Kummer variety gap> SCLib.SearchByName("Kummer variety"); [ [ 7488, "4-dimensional Kummer variety (VT)" ] ] gap> c:=SCLib.Load(last[1][1]);; gap> for i in [1..16] do for j in SCLabels(c) do lk:=SCLink(c,j); if lk.Homology = [[0],[0],[0],[1]] then continue; fi; singularity := j; break; od; c:=SCBlowup(c,singularity); od; gap> d.IsManifold; true gap> d.Homology; [ [ 0, [ ] ], [ 0, [ ] ], [ 22, [ ] ], [ 0, [ ] ], [ 1, [ ] ] ]

`‣ SCMappingCylinder` ( k ) | ( function ) |

Returns: simplicial complex of type `SCSimplicialComplex`

upon success, `fail`

otherwise.

Generates a bounded version of CP^2 (a so-called mapping cylinder for a simplicial blowup, compare [SK11]) with boundary L(`k`

,1).

gap> mapCyl:=SCMappingCylinder(3);; gap> mapCyl.Homology; [ [ 0, [ ] ], [ 0, [ ] ], [ 1, [ ] ], [ 0, [ ] ], [ 0, [ ] ] ] gap> l31:=SCBoundary(mapCyl);; gap> l31.Homology; [ [ 0, [ ] ], [ 0, [ 3 ] ], [ 0, [ ] ], [ 1, [ ] ] ]

generated by GAPDoc2HTML