  
  [1X10 [33X[0;0YSimplicial blowups[133X[101X
  
  
  [1X10.1 [33X[0;0YTheory[133X[101X
  
  [33X[0;0YIn this chapter functions are provided to perform simplicial blowups as well
  as   the   resolution   of   isolated  singularities  of  certain  types  of
  combinatorial  [22X4[122X-manifolds.  As  of  today  singularities  where the link is
  homeomorphic  to  [22XRP^3[122X, [22XS^2 × S^1[122X, [22XS^2 dtimes S^1[122X and the lens spaces [22XL(k,1)[122X
  are  supported.  In  addition,  the program provides the possibility to hand
  over  additional  types  of  mapping  cylinders  to  cover  other  types  of
  singularities.[133X
  
  [33X[0;0YPlease  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 [22XRP^3[122X), a lot of
  blowups  have  already  been  successful.  For  a very short introduction to
  simplicial blowups see [14X2.8[114X, for further information see [SK11].[133X
  
  
  [1X10.2 [33X[0;0YFunctions related to simplicial blowups[133X[101X
  
  [1X10.2-1 SCBlowup[101X
  
  [33X[1;0Y[29X[2XSCBlowup[102X( [3Xpseudomanifold[103X, [3Xsingularity[103X[, [3XmappingCyl[103X] ) [32X property[133X
  [6XReturns:[106X  [33X[0;10Ysimplicial  complex of type [10XSCSimplicialComplex[110X upon success, [9Xfail[109X
            otherwise.[133X
  
  [33X[0;0YIf   [10Xsingularity[110X   is   an   ordinary   double   point  of  a  combinatorial
  [22X4[122X-pseudomanifold  [3Xpseudomanifold[103X  (lk([10Xsingularity[110X[22X)  =  RP^3[122X)  the  blowup of
  [10Xpseudomanifold[110X  at  [10Xsingularity[110X  is computed. If it is a singularity of type
  [22XS^2  ×  S^1[122X,  [22XS^2  dtimes  S^1[122X or [22XL(k,1)[122X, [22Xk ≤ 4[122X, the canonical resolution of
  [10Xsingularity[110X  is  computed using the bounded complexes provided in the source
  code below.[133X
  
  [33X[0;0YIf  the optional argument [10XmappingCyl[110X of type [10XSCIsSimplicialComplex[110X is given,
  this complex will be used to to resolve the singularity [10Xsingularity[110X.[133X
  
  [33X[0;0YNote 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.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X gap> SCLib.SearchByName("Kummer variety");[128X[104X
    [4X[28X [ [ 519, "4-dimensional Kummer variety (VT)" ] ][128X[104X
    [4X[28X gap> c:=SCLib.Load(last[1][1]);;                [128X[104X
    [4X[28X gap> d:= SCBlowup(c,1);[128X[104X
    [4X[28X #I  SCBlowup: checking if singularity is a combinatorial manifold...[128X[104X
    [4X[28X #I  SCBlowup: ...true[128X[104X
    [4X[28X #I  SCBlowup: checking type of singularity...[128X[104X
    [4X[28X #I  SCReduceComplexEx: complexes are bistellarly equivalent.[128X[104X
    [4X[28X #I  SCBlowup: ...ordinary double point (supported type).[128X[104X
    [4X[28X #I  SCBlowup: starting blowup...[128X[104X
    [4X[28X #I  SCBlowup: map boundaries...[128X[104X
    [4X[28X #I  SCBlowup: boundaries not isomorphic, initializing bistellar moves...[128X[104X
    [4X[28X #I  SCBlowup: found complex with smaller boundary: f = [ 15, 74, 118, 59 ].[128X[104X
    [4X[28X #I  SCBlowup: found complex with smaller boundary: f = [ 14, 70, 112, 56 ].[128X[104X
    [4X[28X #I  SCBlowup: found complex with smaller boundary: f = [ 14, 69, 110, 55 ].[128X[104X
    [4X[28X #I  SCBlowup: found complex with smaller boundary: f = [ 14, 68, 108, 54 ].[128X[104X
    [4X[28X #I  SCBlowup: found complex with smaller boundary: f = [ 13, 65, 104, 52 ].[128X[104X
    [4X[28X #I  SCBlowup: found complex with smaller boundary: f = [ 13, 64, 102, 51 ].[128X[104X
    [4X[28X #I  SCBlowup: found complex with smaller boundary: f = [ 13, 63, 100, 50 ].[128X[104X
    [4X[28X #I  SCBlowup: found complex with smaller boundary: f = [ 13, 62, 98, 49 ].[128X[104X
    [4X[28X #I  SCBlowup: found complex with smaller boundary: f = [ 13, 61, 96, 48 ].[128X[104X
    [4X[28X #I  SCBlowup: found complex with smaller boundary: f = [ 12, 57, 90, 45 ].[128X[104X
    [4X[28X #I  SCBlowup: found complex with smaller boundary: f = [ 12, 56, 88, 44 ].[128X[104X
    [4X[28X #I  SCBlowup: found complex with smaller boundary: f = [ 12, 55, 86, 43 ].[128X[104X
    [4X[28X #I  SCBlowup: found complex with smaller boundary: f = [ 11, 51, 80, 40 ].[128X[104X
    [4X[28X #I  SCBlowup: found complex with isomorphic boundaries.[128X[104X
    [4X[28X #I  SCBlowup: ...boundaries mapped succesfully.[128X[104X
    [4X[28X #I  SCBlowup: build complex...[128X[104X
    [4X[28X #I  SCBlowup: ...done.[128X[104X
    [4X[28X #I  SCBlowup: ...blowup completed.[128X[104X
    [4X[28X #I  SCBlowup: You may now want to reduce the complex via 'SCReduceComplex'.[128X[104X
    [4X[28X <SimplicialComplex: unnamed complex 2735 \ star([ 1 ]) in unnamed complex 2735\[128X[104X
    [4X[28X  cup unnamed complex 2739 cup unnamed complex 2737 | dim = 4 | n = 39>[128X[104X
    [4X[28X [128X[104X
  [4X[32X[104X
  
  [4X[32X  Example  [32X[104X
    [4X[28X gap> # resolving the singularities of a 4 dimensional Kummer variety[128X[104X
    [4X[28X gap> SCLib.SearchByName("Kummer variety");[128X[104X
    [4X[28X [ [ 519, "4-dimensional Kummer variety (VT)" ] ][128X[104X
    [4X[28X gap> c:=SCLib.Load(last[1][1]);;[128X[104X
    [4X[28X gap> for i in [1..16] do[128X[104X
    [4X[28X        for j in SCLabels(c) do [128X[104X
    [4X[28X          lk:=SCLink(c,j);[128X[104X
    [4X[28X          if lk.Homology = [[0],[0],[0],[1]] then continue; fi; [128X[104X
    [4X[28X          singularity := j; break;[128X[104X
    [4X[28X        od;[128X[104X
    [4X[28X        c:=SCBlowup(c,singularity); [128X[104X
    [4X[28X      od;[128X[104X
    [4X[28X gap> d.IsManifold;[128X[104X
    [4X[28X true[128X[104X
    [4X[28X gap> d.Homology;[128X[104X
    [4X[28X [ [ 0, [ ] ], [ 0, [ ] ], [ 22, [ ] ], [ 0, [ ] ], [ 1, [ ] ] ][128X[104X
    [4X[28X [128X[104X
  [4X[32X[104X
  
  [1X10.2-2 SCMappingCylinder[101X
  
  [33X[1;0Y[29X[2XSCMappingCylinder[102X( [3Xk[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ysimplicial  complex of type [10XSCSimplicialComplex[110X upon success, [9Xfail[109X
            otherwise.[133X
  
  [33X[0;0YGenerates  a  bounded  version  of  [22XCP^2[122X (a so-called mapping cylinder for a
  simplicial blowup, compare [SK11]) with boundary [22XL([122X[10Xk[110X[22X,1)[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X gap> mapCyl:=SCMappingCylinder(3);;[128X[104X
    [4X[28X gap> mapCyl.Homology;              [128X[104X
    [4X[28X [ [ 0, [  ] ], [ 0, [  ] ], [ 1, [  ] ], [ 0, [  ] ], [ 0, [  ] ] ][128X[104X
    [4X[28X gap> l31:=SCBoundary(mapCyl);;[128X[104X
    [4X[28X gap> l31.Homology;[128X[104X
    [4X[28X [ [ 0, [  ] ], [ 0, [ 3 ] ], [ 0, [  ] ], [ 1, [  ] ] ][128X[104X
    [4X[28X [128X[104X
  [4X[32X[104X
  
