simpcomp A GAP toolbox for simplicial complexes Version 2.1.7 September 2017 Felix Effenberger Jonathan Spreer Felix Effenberger Email: mailto:felix.effenberger@mis.mpg.de Address: Max Planck Institute for Mathematics in the Sciences Inselstr. 22 D-04103 Leipzig, Germany Jonathan Spreer Email: mailto:j.spreer@uq.edu.au Address: University of Queensland School of Mathematics and Physics Brisbane QLD 4072 Australia ------------------------------------------------------- Abstract simpcomp is an extension (a so called package) to GAP for working with simplicial complexes in the context of combinatorial topology. The package enables the user to compute numerous properties of (abstract) simplicial complexes (such as the f-, g- and h-vectors, the face lattice, the fundamental group, the automorphism group, (co-)homology with explicit basis computation, etc.). It provides functions to generate simplicial complexes from facet lists, orbit representatives or difference cycles. Moreover, a variety of infinite series of combinatorial manifolds and pseudomanifolds (such as the simplex, the cross polytope, transitive handle bodies and sphere bundles, etc.) is given and it is possible to create new complexes from existing ones (links and stars, connected sums, simplicial cartesian products, handle additions, bistellar flips, etc.). simpcomp ships with an extensive library of known triangulations of manifolds and a census of all combinatorial 3-manifolds with transitive cyclic symmetry up to 22 vertices. Furthermore, it provides the user with the possibility to create own complex libraries. In addition, functions related to slicings and polyhedral Morse theory as well as a combinatorial version of algebraic blowups and the possibility to resolve isolated singularities of 4-manifolds are implemented. simpcomp caches computed properties of a simplicial complex, thus avoiding unnecessary computations, internally handles the vertex labeling of the complexes and insures the consistency of a simplicial complex throughout all operations. If possible, simpcomp makes use of the GAP package homology [DHSW11] for its homology computation but also provides the user with own (co-)homology algorithms. For automorphism group computation the GAP package GRAPE [Soi12] is used, which in turn uses the program nauty by Brendan McKay [MP14]. An internal automorphism group calculation algorithm is used as fallback if the GRAPE package is not available. ------------------------------------------------------- Copyright © 2017 Felix Effenberger and Jonathan Spreer. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation, see http://www.fsf.org/licensing/licenses/fdl.html for a copy. simpcomp is free software. The code of simpcomp is released under the GPL version 2 or later (at your preference). For the text of the GPL see the file COPYING in the simpcomp directory or http://www.gnu.org/licenses/. ------------------------------------------------------- Acknowledgements A few functions of simpcomp are based on code from other authors. The bistellar flips implementation, the algorithm to collapse bounded simplicial complexes as well as the classification algorithm for transitive triangulations is based upon work of Frank Lutz (see [Lut03] and the GAP programs BISTELLAR and MANIFOLD_VT from [ManifoldPage]). Some functions were carried over from the homology package by Dumas et al. [DHSW11] -- these functions are marked in the documentation and the source code. The internal (co-)homology algorithms were implemented by Armin Weiss. Most of the complexes in the simplicial complex library are taken from the "Manifold Page" by Frank Lutz [ManifoldPage]. The authors acknowledge support by the Deutsche Forschungsgemeinschaft (DFG): simpcomp has been developed within the DFG projects Ku 1203/5-2 and Ku 1203/5-3. ------------------------------------------------------- Contents (simpcomp) 1 Introduction 1.1 What is new 1.2 simpcomp benefits 1.3 How to save time reading this document 1.4 Organization of this document 1.5 How to assure simpcomp works correctly 1.6 Controlling simpcomp log messages 1.7 How to cite simpcomp 2 Theoretical foundations 2.1 Polytopes and polytopal complexes 2.2 Simplices and simplicial complexes 2.3 From geometry to combinatorics 2.4 Discrete Normal surfaces 2.5 Polyhedral Morse theory and slicings 2.6 Discrete Morse theory 2.7 Tightness and tight triangulations 2.8 Simplicial blowups 3 The new GAP object types of simpcomp 3.1 Accessing properties of a SCPolyhedralComplex object 4 Functions and operations for the GAP object type SCPolyhedralComplex 4.1 Computing properties of objects of type SCPolyhedralComplex 4.1-1 SCFacets 4.1-2 SCFacetsEx 4.1-3 SCVertices 4.1-4 SCVerticesEx 4.2 Vertex labelings and label operations 4.2-1 SCLabelMax 4.2-2 SCLabelMin 4.2-3 SCLabels 4.2-4 SCName 4.2-5 SCReference 4.2-6 SCRelabel 4.2-7 SCRelabelStandard 4.2-8 SCRelabelTransposition 4.2-9 SCRename 4.2-10 SCSetReference 4.2-11 SCUnlabelFace 4.3 Operations on objects of type SCPolyhedralComplex 4.3-1 SCAntiStar 4.3-2 SCLink 4.3-3 SCLinks 4.3-4 SCStar 4.3-5 SCStars 5 The GAP object types SCSimplicialComplex and SCNormalSurface 5.1 The object type SCSimplicialComplex 5.1-1 SCIsSimplicialComplex 5.1-2 SCCopy 5.1-3 ShallowCopy (SCSimplicialComplex) 5.1-4 SCPropertiesDropped 5.2 Overloaded operators of SCSimplicialComplex 5.2-1 Operation + (SCSimplicialComplex, Integer) 5.2-2 Operation - (SCSimplicialComplex, Integer) 5.2-3 Operation mod (SCSimplicialComplex, Integer) 5.2-4 Operation ^ (SCSimplicialComplex, Integer) 5.2-5 Operation + (SCSimplicialComplex, SCSimplicialComplex) 5.2-6 Operation - (SCSimplicialComplex, SCSimplicialComplex) 5.2-7 Operation * (SCSimplicialComplex, SCSimplicialComplex) 5.2-8 Operation = (SCSimplicialComplex, SCSimplicialComplex) 5.3 SCSimplicialComplex as a subtype of Set 5.3-1 Operation Union (SCSimplicialComplex, SCSimplicialComplex) 5.3-2 Operation Difference (SCSimplicialComplex, SCSimplicialComplex) 5.3-3 Operation Intersection (SCSimplicialComplex, SCSimplicialComplex) 5.3-4 Size (SCSimplicialComplex) 5.3-5 Length (SCSimplicialComplex) 5.3-6 Operation [] (SCSimplicialComplex) 5.3-7 Iterator (SCSimplicialComplex) 5.4 The object type SCNormalSurface 5.5 Overloaded operators of SCNormalSurface 5.5-1 Operation + (SCNormalSurface, Integer) 5.5-2 Operation - (SCNormalSurface, Integer) 5.5-3 Operation mod (SCNormalSurface, Integer) 5.6 SCNormalSurface as a subtype of Set 5.6-1 Operation Union (SCNormalSurface, SCNormalSurface) 6 Functions and operations for SCSimplicialComplex 6.1 Creating an SCSimplicialComplex object from a facet list 6.1-1 SCFromFacets 6.1-2 SC 6.1-3 SCFromDifferenceCycles 6.1-4 SCFromGenerators 6.2 Isomorphism signatures 6.2-1 SCExportToString 6.2-2 SCExportIsoSig 6.2-3 SCFromIsoSig 6.3 Generating some standard triangulations 6.3-1 SCBdCyclicPolytope 6.3-2 SCBdSimplex 6.3-3 SCEmpty 6.3-4 SCSimplex 6.3-5 SCSeriesTorus 6.3-6 SCSurface 6.3-7 SCFVectorBdCrossPolytope 6.3-8 SCFVectorBdCyclicPolytope 6.3-9 SCFVectorBdSimplex 6.4 Generating infinite series of transitive triangulations 6.4-1 SCSeriesAGL 6.4-2 SCSeriesBrehmKuehnelTorus 6.4-3 SCSeriesBdHandleBody 6.4-4 SCSeriesBid 6.4-5 SCSeriesC2n 6.4-6 SCSeriesConnectedSum 6.4-7 SCSeriesCSTSurface 6.4-8 SCSeriesD2n 6.4-9 SCSeriesHandleBody 6.4-10 SCSeriesHomologySphere 6.4-11 SCSeriesK 6.4-12 SCSeriesKu 6.4-13 SCSeriesL 6.4-14 SCSeriesLe 6.4-15 SCSeriesLensSpace 6.4-16 SCSeriesPrimeTorus 6.4-17 SCSeriesSeifertFibredSpace 6.4-18 SCSeriesS2xS2 6.5 A census of regular and chiral maps 6.5-1 SCChiralMap 6.5-2 SCChiralMaps 6.5-3 SCChiralTori 6.5-4 SCNrChiralTori 6.5-5 SCNrRegularTorus 6.5-6 SCRegularMap 6.5-7 SCRegularMaps 6.5-8 SCRegularTorus 6.5-9 SCSeriesSymmetricTorus 6.6 Generating new complexes from old 6.6-1 SCCartesianPower 6.6-2 SCCartesianProduct 6.6-3 SCConnectedComponents 6.6-4 SCConnectedProduct 6.6-5 SCConnectedSum 6.6-6 SCConnectedSumMinus 6.6-7 SCDifferenceCycleCompress 6.6-8 SCDifferenceCycleExpand 6.6-9 SCStronglyConnectedComponents 6.7 Simplicial complexes from transitive permutation groups 6.7-1 SCsFromGroupExt 6.7-2 SCsFromGroupByTransitivity 6.8 The classification of cyclic combinatorial 3-manifolds 6.8-1 SCNrCyclic3Mflds 6.8-2 SCCyclic3MfldTopTypes 6.8-3 SCCyclic3Mfld 6.8-4 SCCyclic3MfldByType 6.8-5 SCCyclic3MfldListOfGivenType 6.9 Computing properties of simplicial complexes 6.9-1 SCAltshulerSteinberg 6.9-2 SCAutomorphismGroup 6.9-3 SCAutomorphismGroupInternal 6.9-4 SCAutomorphismGroupSize 6.9-5 SCAutomorphismGroupStructure 6.9-6 SCAutomorphismGroupTransitivity 6.9-7 SCBoundary 6.9-8 SCDehnSommervilleCheck 6.9-9 SCDehnSommervilleMatrix 6.9-10 SCDifferenceCycles 6.9-11 SCDim 6.9-12 SCDualGraph 6.9-13 SCEulerCharacteristic 6.9-14 SCFVector 6.9-15 SCFaceLattice 6.9-16 SCFaceLatticeEx 6.9-17 SCFaces 6.9-18 SCFacesEx 6.9-19 SCFacets 6.9-20 SCFacetsEx 6.9-21 SCFpBettiNumbers 6.9-22 SCFundamentalGroup 6.9-23 SCGVector 6.9-24 SCGenerators 6.9-25 SCGeneratorsEx 6.9-26 SCHVector 6.9-27 SCHasBoundary 6.9-28 SCHasInterior 6.9-29 SCHeegaardSplittingSmallGenus 6.9-30 SCHeegaardSplitting 6.9-31 SCHomologyClassic 6.9-32 SCIncidences 6.9-33 SCIncidencesEx 6.9-34 SCInterior 6.9-35 SCIsCentrallySymmetric 6.9-36 SCIsConnected 6.9-37 SCIsEmpty 6.9-38 SCIsEulerianManifold 6.9-39 SCIsFlag 6.9-40 SCIsHeegaardSplitting 6.9-41 SCIsHomologySphere 6.9-42 SCIsInKd 6.9-43 SCIsKNeighborly 6.9-44 SCIsOrientable 6.9-45 SCIsPseudoManifold 6.9-46 SCIsPure 6.9-47 SCIsShellable 6.9-48 SCIsStronglyConnected 6.9-49 SCMinimalNonFaces 6.9-50 SCMinimalNonFacesEx 6.9-51 SCNeighborliness 6.9-52 SCNumFaces 6.9-53 SCOrientation 6.9-54 SCSkel 6.9-55 SCSkelEx 6.9-56 SCSpanningTree 6.10 Operations on simplicial complexes 6.10-1 SCAlexanderDual 6.10-2 SCClose 6.10-3 SCCone 6.10-4 SCDeletedJoin 6.10-5 SCDifference 6.10-6 SCFillSphere 6.10-7 SCHandleAddition 6.10-8 SCIntersection 6.10-9 SCIsIsomorphic 6.10-10 SCIsSubcomplex 6.10-11 SCIsomorphism 6.10-12 SCIsomorphismEx 6.10-13 SCJoin 6.10-14 SCNeighbors 6.10-15 SCNeighborsEx 6.10-16 SCShelling 6.10-17 SCShellingExt 6.10-18 SCShellings 6.10-19 SCSpan 6.10-20 SCSuspension 6.10-21 SCUnion 6.10-22 SCVertexIdentification 6.10-23 SCWedge 7 Functions and operations for SCNormalSurface 7.1 Creating an SCNormalSurface object 7.1-1 SCNSEmpty 7.1-2 SCNSFromFacets 7.1-3 SCNS 7.1-4 SCNSSlicing 7.2 Generating new objects from discrete normal surfaces 7.2-1 SCCopy 7.2-2 SCNSTriangulation 7.3 Properties of SCNormalSurface objects 7.3-1 SCConnectedComponents 7.3-2 SCDim 7.3-3 SCEulerCharacteristic 7.3-4 SCFVector 7.3-5 SCFaceLattice 7.3-6 SCFaceLatticeEx 7.3-7 SCFpBettiNumbers 7.3-8 SCGenus 7.3-9 SCHomology 7.3-10 SCIsConnected 7.3-11 SCIsEmpty 7.3-12 SCIsOrientable 7.3-13 SCSkel 7.3-14 SCSkelEx 7.3-15 SCTopologicalType 7.3-16 SCUnion 8 (Co-)Homology of simplicial complexes 8.1 Homology computation 8.1-1 SCBoundaryOperatorMatrix 8.1-2 SCBoundarySimplex 8.1-3 SCHomologyBasis 8.1-4 SCHomologyBasisAsSimplices 8.1-5 SCHomologyInternal 8.2 Cohomology computation 8.2-1 SCCoboundaryOperatorMatrix 8.2-2 SCCohomology 8.2-3 SCCohomologyBasis 8.2-4 SCCohomologyBasisAsSimplices 8.2-5 SCCupProduct 8.2-6 SCIntersectionForm 8.2-7 SCIntersectionFormParity 8.2-8 SCIntersectionFormDimensionality 8.2-9 SCIntersectionFormSignature 9 Bistellar flips 9.1 Theory 9.2 Functions for bistellar flips 9.2-1 SCBistellarOptions 9.2-2 SCEquivalent 9.2-3 SCExamineComplexBistellar 9.2-4 SCIntFunc.SCChooseMove 9.2-5 SCIsKStackedSphere 9.2-6 SCBistellarIsManifold 9.2-7 SCIsMovableComplex 9.2-8 SCMove 9.2-9 SCMoves 9.2-10 SCRMoves 9.2-11 SCRandomize 9.2-12 SCReduceAsSubcomplex 9.2-13 SCReduceComplex 9.2-14 SCReduceComplexEx 9.2-15 SCReduceComplexFast 10 Simplicial blowups 10.1 Theory 10.2 Functions related to simplicial blowups 10.2-1 SCBlowup 10.2-2 SCMappingCylinder 11 Polyhedral Morse theory 11.1 Polyhedral Morse theory related functions 11.1-1 SCIsTight 11.1-2 SCMorseIsPerfect 11.1-3 SCSlicing 11.1-4 SCMorseMultiplicityVector 11.1-5 SCMorseNumberOfCriticalPoints 12 Forman's discrete Morse theory 12.1 Functions using discrete Morse theory 12.1-1 SCCollapseGreedy 12.1-2 SCCollapseLex 12.1-3 SCCollapseRevLex 12.1-4 SCHasseDiagram 12.1-5 SCMorseEngstroem 12.1-6 SCMorseRandom 12.1-7 SCMorseRandomLex 12.1-8 SCMorseRandomRevLex 12.1-9 SCMorseSpec 12.1-10 SCMorseUST 12.1-11 SCSpanningTreeRandom 12.1-12 SCHomology 12.1-13 SCHomologyEx 12.1-14 SCIsSimplyConnected 12.1-15 SCIsSimplyConnectedEx 12.1-16 SCIsSphere 12.1-17 SCIsManifold 12.1-18 SCIsManifoldEx 13 Library and I/O 13.1 Simplicial complex library 13.1-1 SCIsLibRepository 13.1-2 SCLib 13.1-3 SCLibAdd 13.1-4 SCLibAllComplexes 13.1-5 SCLibDelete 13.1-6 SCLibDetermineTopologicalType 13.1-7 SCLibFlush 13.1-8 SCLibInit 13.1-9 SCLibIsLoaded 13.1-10 SCLibSearchByAttribute 13.1-11 SCLibSearchByName 13.1-12 SCLibSize 13.1-13 SCLibUpdate 13.1-14 SCLibStatus 13.2 simpcomp input / output functions 13.2-1 SCLoad 13.2-2 SCLoadXML 13.2-3 SCSave 13.2-4 SCSaveXML 13.2-5 SCExportMacaulay2 13.2-6 SCExportPolymake 13.2-7 SCImportPolymake 13.2-8 SCExportLatexTable 13.2-9 SCExportJavaView 13.2-10 SCExportPolymake 13.2-11 SCExportSnapPy 14 Interfaces to other software packages 14.1 Interface to the GAP-package homalg 14.1-1 SCHomalgBoundaryMatrices 14.1-2 SCHomalgCoboundaryMatrices 14.1-3 SCHomalgHomology 14.1-4 SCHomalgHomologyBasis 14.1-5 SCHomalgCohomology 14.1-6 SCHomalgCohomologyBasis 15 Miscellaneous functions 15.1 simpcomp logging 15.1-1 SCInfoLevel 15.2 Email notification system 15.2-1 SCMailClearPending 15.2-2 SCMailIsEnabled 15.2-3 SCMailIsPending 15.2-4 SCMailSend 15.2-5 SCMailSendPending 15.2-6 SCMailSetAddress 15.2-7 SCMailSetEnabled 15.2-8 SCMailSetMinInterval 15.3 Testing the functionality of simpcomp 15.3-1 SCRunTest 16 Property handlers 16.1 Property handlers of SCPolyhedralComplex 16.2 Property handlers of SCSimplicialComplex 16.3 Property handlers of SCNormalSurface 16.4 Property handlers of SCLibRepository 17 A demo session with simpcomp 17.1 Creating a SCSimplicialComplex object 17.2 Working with a SCSimplicialComplex object 17.3 Calculating properties of a SCSimplicialComplex object 17.4 Creating new complexes from a SCSimplicialComplex object 17.5 Homology related calculations 17.6 Bistellar flips 17.7 Simplicial blowups 17.8 Discrete normal surfaces and slicings 18 simpcomp internals 18.1 The GAP object type SCPropertyObject 18.1-1 SCProperties 18.1-2 SCPropertiesFlush 18.1-3 SCPropertiesManaged 18.1-4 SCPropertiesNames 18.1-5 SCPropertiesTmp 18.1-6 SCPropertiesTmpNames 18.1-7 SCPropertyByName 18.1-8 SCPropertyDrop 18.1-9 SCPropertyHandlersSet 18.1-10 SCPropertySet 18.1-11 SCPropertySetMutable 18.1-12 SCPropertyTmpByName 18.1-13 SCPropertyTmpDrop 18.1-14 SCPropertyTmpSet 18.2 Example of a common attribute 18.3 Writing a method for an attribute