GAP (simpcomp) - Chapter 7: Functions and operations for SCNormalSurface

Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Bib Ind
[Top of Book] [Contents] [Previous Chapter] [Next Chapter]

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

### 7 Functions and operations for `SCNormalSurface`

#### 7.1 Creating an `SCNormalSurface` object

This section contains functions to construct discrete normal surfaces that are slicings from a list of 2-dimensional facets (triangles and quadrilaterals) or combinatorial 3-manifolds.

For a very short introduction to the theory of discrete normal surfaces and slicings see Section 2.4 and Section 2.5, for an introduction to the GAP object type `SCNormalSurface` see 5.4, for more information see the article [Spr11b].

##### 7.1-1 SCNSEmpty

`‣ SCNSEmpty`( ) | ( function )

Returns: discrete normal surface of type `SCNormalSurface` upon success, `fail` otherwise.

Generates an empty complex (of dimension -1), i. e. an object of type `SCNormalSurface` with empty facet list.

     gap> SCNSEmpty();
     [NormalSurface

      Properties known: Dim, FacetsEx, Name, Vertices.

      Name="empty normal surface"
      Dim=-1

     /NormalSurface]

##### 7.1-2 SCNSFromFacets

`‣ SCNSFromFacets`( facets ) | ( method )

Returns: discrete normal surface of type `SCNormalSurface` upon success, `fail` otherwise.

Constructor for a discrete normal surface from a facet list, see `SCFromFacets` (6.1-1) for details.

     gap> sl:=SCNSFromFacets([[1,2,3],[1,2,4,5],[1,3,4,6],[2,3,5,6],[4,5,6]]);
     [NormalSurface

      Properties known: Dim, FacetsEx, Name, Vertices.

      Name="unnamed complex 86"
      Dim=2

     /NormalSurface]

##### 7.1-3 SCNS

`‣ SCNS`( facets ) | ( method )

Returns: discrete normal surface of type `SCNormalSurface` upon success, `fail` otherwise.

Internally calls `SCNSFromFacets` (7.1-2).

     gap> sl:=SCNS([[1,2,3],[1,2,4,5],[1,3,4,6],[2,3,5,6],[4,5,6]]);
     [NormalSurface

      Properties known: Dim, FacetsEx, Name, Vertices.

      Name="unnamed complex 87"
      Dim=2

     /NormalSurface]

##### 7.1-4 SCNSSlicing

`‣ SCNSSlicing`( complex, slicing ) | ( function )

Returns: discrete normal surface of type `SCNormalSurface` upon success, `fail` otherwise.

Computes a slicing defined by a partition slicing of the set of vertices of the 3-dimensional combinatorial pseudomanifold complex. In particular, slicing has to be a pair of lists of vertex labels and has to contain all vertex labels of complex.

     gap> SCLib.SearchByAttribute("F=[ 10, 35, 50, 25 ]");
     [ [ 19, "S^3 (VT)" ] ]
     gap> c:=SCLib.Load(last[1][1]);;
     gap> sl:=SCNSSlicing(c,[[1..5],[6..10]]);
     [NormalSurface

      Properties known: ConnectedComponents, Dim, EulerCharacteristic, FVector, Fac\
     etsEx, Genus, IsConnected, IsOrientable, NSTriangulation, Name, TopologicalTyp\
     e, Vertices.

      Name="slicing [ [ 1, 2, 3, 4, 5 ], [ 6, 7, 8, 9, 10 ] ] of S^3 (VT)"
      Dim=2
      FVector=[ 17, 36, 12, 9 ]
      EulerCharacteristic=2
      IsOrientable=true
      TopologicalType="S^2"

     /NormalSurface]
     gap> sl.Facets;
     [ [ [ 1, 6 ], [ 1, 8 ], [ 1, 9 ] ], [ [ 1, 6 ], [ 1, 8 ], [ 3, 6 ], [ 3, 8 ] ]
         , [ [ 1, 6 ], [ 1, 9 ], [ 4, 6 ], [ 4, 9 ] ],
       [ [ 1, 6 ], [ 3, 6 ], [ 4, 6 ] ], [ [ 1, 8 ], [ 1, 9 ], [ 1, 10 ] ],
       [ [ 1, 8 ], [ 1, 10 ], [ 3, 8 ], [ 3, 10 ] ],
       [ [ 1, 9 ], [ 1, 10 ], [ 2, 9 ], [ 2, 10 ] ],
       [ [ 1, 9 ], [ 2, 9 ], [ 4, 9 ] ], [ [ 1, 10 ], [ 2, 10 ], [ 3, 10 ] ],
       [ [ 2, 7 ], [ 2, 9 ], [ 2, 10 ] ],
       [ [ 2, 7 ], [ 2, 9 ], [ 4, 7 ], [ 4, 9 ] ],
       [ [ 2, 7 ], [ 2, 10 ], [ 5, 7 ], [ 5, 10 ] ],
       [ [ 2, 7 ], [ 4, 7 ], [ 5, 7 ] ], [ [ 2, 10 ], [ 3, 10 ], [ 5, 10 ] ],
       [ [ 3, 6 ], [ 3, 8 ], [ 5, 6 ], [ 5, 8 ] ], [ [ 3, 6 ], [ 4, 6 ], [ 5, 6 ] ]
         , [ [ 3, 8 ], [ 3, 10 ], [ 5, 8 ], [ 5, 10 ] ],
       [ [ 4, 6 ], [ 4, 7 ], [ 4, 9 ] ], [ [ 4, 6 ], [ 4, 7 ], [ 5, 6 ], [ 5, 7 ] ]
         , [ [ 5, 6 ], [ 5, 7 ], [ 5, 8 ] ], [ [ 5, 7 ], [ 5, 8 ], [ 5, 10 ] ] ]
     gap> sl:=SCNSSlicing(c,[[1,3,5,7,9],[2,4,6,8,10]]);
     [NormalSurface

      Properties known: ConnectedComponents, Dim, EulerCharacteristic, FVector, Fac\
     etsEx, Genus, IsConnected, IsOrientable, NSTriangulation, Name, TopologicalTyp\
     e, Vertices.

      Name="slicing [ [ 1, 3, 5, 7, 9 ], [ 2, 4, 6, 8, 10 ] ] of S^3 (VT)"
      Dim=2
      FVector=[ 25, 50, 0, 25 ]
      EulerCharacteristic=0
      IsOrientable=true
      TopologicalType="T^2"

     /NormalSurface]
     gap> sl.Facets;
     [ [ [ 1, 2 ], [ 1, 4 ], [ 3, 2 ], [ 3, 4 ] ],
       [ [ 1, 2 ], [ 1, 4 ], [ 9, 2 ], [ 9, 4 ] ],
       [ [ 1, 2 ], [ 1, 10 ], [ 3, 2 ], [ 3, 10 ] ],
       [ [ 1, 2 ], [ 1, 10 ], [ 9, 2 ], [ 9, 10 ] ],
       [ [ 1, 4 ], [ 1, 6 ], [ 3, 4 ], [ 3, 6 ] ],
       [ [ 1, 4 ], [ 1, 6 ], [ 9, 4 ], [ 9, 6 ] ],
       [ [ 1, 6 ], [ 1, 8 ], [ 3, 6 ], [ 3, 8 ] ],
       [ [ 1, 6 ], [ 1, 8 ], [ 9, 6 ], [ 9, 8 ] ],
       [ [ 1, 8 ], [ 1, 10 ], [ 3, 8 ], [ 3, 10 ] ],
       [ [ 1, 8 ], [ 1, 10 ], [ 9, 8 ], [ 9, 10 ] ],
       [ [ 3, 2 ], [ 3, 4 ], [ 5, 2 ], [ 5, 4 ] ],
       [ [ 3, 2 ], [ 3, 10 ], [ 5, 2 ], [ 5, 10 ] ],
       [ [ 3, 4 ], [ 3, 6 ], [ 5, 4 ], [ 5, 6 ] ],
       [ [ 3, 6 ], [ 3, 8 ], [ 5, 6 ], [ 5, 8 ] ],
       [ [ 3, 8 ], [ 3, 10 ], [ 5, 8 ], [ 5, 10 ] ],
       [ [ 5, 2 ], [ 5, 4 ], [ 7, 2 ], [ 7, 4 ] ],
       [ [ 5, 2 ], [ 5, 10 ], [ 7, 2 ], [ 7, 10 ] ],
       [ [ 5, 4 ], [ 5, 6 ], [ 7, 4 ], [ 7, 6 ] ],
       [ [ 5, 6 ], [ 5, 8 ], [ 7, 6 ], [ 7, 8 ] ],
       [ [ 5, 8 ], [ 5, 10 ], [ 7, 8 ], [ 7, 10 ] ],
       [ [ 7, 2 ], [ 7, 4 ], [ 9, 2 ], [ 9, 4 ] ],
       [ [ 7, 2 ], [ 7, 10 ], [ 9, 2 ], [ 9, 10 ] ],
       [ [ 7, 4 ], [ 7, 6 ], [ 9, 4 ], [ 9, 6 ] ],
       [ [ 7, 6 ], [ 7, 8 ], [ 9, 6 ], [ 9, 8 ] ],
       [ [ 7, 8 ], [ 7, 10 ], [ 9, 8 ], [ 9, 10 ] ] ]

#### 7.2 Generating new objects from discrete normal surfaces

simpcomp provides the possibility to copy and / or triangulate normal surfaces. Note that other constructions like the connected sum or the cartesian product do not make sense for (embedded) normal surfaces in general.

##### 7.2-1 SCCopy

`‣ SCCopy`( complex ) | ( method )

Returns: discrete normal surface of type `SCNormalSurface` upon success, `fail` otherwise.

Copies a GAP object of type `SCNormalSurface` (cf. `SCCopy`).

     gap> sl:=SCNSSlicing(SCBdSimplex(4),[[1],[2..5]]);
     [NormalSurface

      Properties known: ConnectedComponents, Dim, EulerCharacteristic, FVector, Fac\
     etsEx, Genus, IsConnected, IsOrientable, NSTriangulation, Name, TopologicalTyp\
     e, Vertices.

      Name="slicing [ [ 1 ], [ 2, 3, 4, 5 ] ] of S^3_5"
      Dim=2
      FVector=[ 4, 6, 4 ]
      EulerCharacteristic=2
      IsOrientable=true
      TopologicalType="S^2"

     /NormalSurface]
     gap> sl_2:=SCCopy(sl);
     [NormalSurface

      Properties known: ConnectedComponents, Dim, EulerCharacteristic, FVector, Fac\
     etsEx, Genus, IsConnected, IsOrientable, NSTriangulation, Name, TopologicalTyp\
     e, Vertices.

      Name="slicing [ [ 1 ], [ 2, 3, 4, 5 ] ] of S^3_5"
      Dim=2
      FVector=[ 4, 6, 4 ]
      EulerCharacteristic=2
      IsOrientable=true
      TopologicalType="S^2"

     /NormalSurface]
     gap> IsIdenticalObj(sl,sl_2);
     false

##### 7.2-2 SCNSTriangulation

`‣ SCNSTriangulation`( sl ) | ( method )

Returns: simplicial complex of type `SCSimplicialComplex` upon success, `fail` otherwise.

Computes a simplicial subdivision of a slicing sl without introducing new vertices. The subdivision is stored as a property of sl and thus is returned as an immutable object. Note that symmetry may be lost during the computation.

     gap> SCLib.SearchByAttribute("F=[ 10, 35, 50, 25 ]");
     [ [ 19, "S^3 (VT)" ] ]
     gap> c:=SCLib.Load(last[1][1]);;
     gap> sl:=SCNSSlicing(c,[[1,3,5,7,9],[2,4,6,8,10]]);;
     gap> sl.F;
     [ 25, 50, 0, 25 ]
     gap> sc:=SCNSTriangulation(sl);;
     gap> sc.F;
     [ 25, 75, 50 ]

#### 7.3 Properties of `SCNormalSurface` objects

Although some properties of a discrete normal surface can be computed by using the functions for simplicial complexes, there is a variety of properties needing specially designed functions. See below for a list.

##### 7.3-1 SCConnectedComponents

`‣ SCConnectedComponents`( complex ) | ( method )

Returns: a list of simplicial complexes of type `SCNormalSurface` upon success, `fail` otherwise.

Computes all connected components of an arbitrary normal surface.

     gap> sl:=SCNSSlicing(SCBdCrossPolytope(4),[[1,2],[3..8]]);
     [NormalSurface

      Properties known: ConnectedComponents, Dim, EulerCharacteristic, FVector, Fac\
     etsEx, IsConnected, IsOrientable, NSTriangulation, Name, TopologicalType, Vert\
     ices.

      Name="slicing [ [ 1, 2 ], [ 3, 4, 5, 6, 7, 8 ] ] of Bd(\beta^4)"
      Dim=2
      FVector=[ 12, 24, 16 ]
      EulerCharacteristic=4
      IsOrientable=true
      TopologicalType="S^2 U S^2"

     /NormalSurface]
     gap> cc:=SCConnectedComponents(sl);
     [ [NormalSurface

          Properties known: Dim, EulerCharacteristic, FVector, FacetsEx, Genus, IsC\
     onnected, IsOrientable, NSTriangulation, Name, TopologicalType, Vertices.

          Name="unnamed complex 302_cc_#1"
          Dim=2
          FVector=[ 6, 12, 8 ]
          EulerCharacteristic=2
          IsOrientable=true
          TopologicalType="S^2"

         /NormalSurface], [NormalSurface

          Properties known: Dim, EulerCharacteristic, FVector, FacetsEx, Genus, IsC\
     onnected, IsOrientable, NSTriangulation, Name, TopologicalType, Vertices.

          Name="unnamed complex 302_cc_#2"
          Dim=2
          FVector=[ 6, 12, 8 ]
          EulerCharacteristic=2
          IsOrientable=true
          TopologicalType="S^2"

         /NormalSurface] ]

##### 7.3-2 SCDim

`‣ SCDim`( sl ) | ( method )

Returns: an integer upon success, `fail` otherwise.

Computes the dimension of a discrete normal surface (which is always 2 if the slicing sl is not empty).

     gap> sl:=SCNSEmpty();;
     gap> SCDim(sl);
     -1
     gap> sl:=SCNSFromFacets([[1,2,3],[1,2,4,5],[1,3,4,6],[2,3,5,6],[4,5,6]]);;
     gap> SCDim(sl);
     2

##### 7.3-3 SCEulerCharacteristic

`‣ SCEulerCharacteristic`( sl ) | ( method )

Returns: an integer upon success, `fail` otherwise.

Computes the Euler characteristic of a discrete normal surface sl, cf. `SCEulerCharacteristic`.

     gap> list:=SCLib.SearchByName("S^2xS^1");;
     gap> c:=SCLib.Load(list[1][1]);;
     gap> sl:=SCNSSlicing(c,[[1..5],[6..10]]);;
     gap> SCEulerCharacteristic(sl);
     4

##### 7.3-4 SCFVector

`‣ SCFVector`( sl ) | ( method )

Returns: a 1, 3 or 4 tuple of (non-negative) integer values upon success, `fail` otherwise.

Computes the f-vector of a discrete normal surface, i. e. the number of vertices, edges, triangles and quadrilaterals of sl, cf. `SCFVector`.

     gap> list:=SCLib.SearchByName("S^2xS^1");;
     gap> c:=SCLib.Load(list[1][1]);;
     gap> sl:=SCNSSlicing(c,[[1..5],[6..10]]);;
     gap> SCFVector(sl);
     [ 20, 40, 16, 8 ]

##### 7.3-5 SCFaceLattice

`‣ SCFaceLattice`( complex ) | ( method )

Returns: a list of facet lists upon success, `fail` otherwise.

Computes the face lattice of a discrete normal surface sl in the original labeling. Triangles and quadrilaterals are stored separately (cf. `SCSkel` (6.9-54)).

     gap> c:=SCBdSimplex(4);;
     gap> sl:=SCNSSlicing(c,[[1,2],[3..5]]);;
     gap> SCFaceLattice(sl);
     [ [ [ [ 1, 3 ] ], [ [ 1, 4 ] ], [ [ 1, 5 ] ], [ [ 2, 3 ] ], [ [ 2, 4 ] ],
           [ [ 2, 5 ] ] ],
       [ [ [ 1, 3 ], [ 1, 4 ] ], [ [ 1, 3 ], [ 1, 5 ] ], [ [ 1, 3 ], [ 2, 3 ] ],
           [ [ 1, 4 ], [ 1, 5 ] ], [ [ 1, 4 ], [ 2, 4 ] ], [ [ 1, 5 ], [ 2, 5 ] ],
           [ [ 2, 3 ], [ 2, 4 ] ], [ [ 2, 3 ], [ 2, 5 ] ], [ [ 2, 4 ], [ 2, 5 ] ] ]
         , [ [ [ 1, 3 ], [ 1, 4 ], [ 1, 5 ] ], [ [ 2, 3 ], [ 2, 4 ], [ 2, 5 ] ] ],
       [ [ [ 1, 3 ], [ 1, 4 ], [ 2, 3 ], [ 2, 4 ] ],
           [ [ 1, 3 ], [ 1, 5 ], [ 2, 3 ], [ 2, 5 ] ],
           [ [ 1, 4 ], [ 1, 5 ], [ 2, 4 ], [ 2, 5 ] ] ] ]
     gap> sl.F;
     [ 6, 9, 2, 3 ]

##### 7.3-6 SCFaceLatticeEx

`‣ SCFaceLatticeEx`( complex ) | ( method )

Returns: a list of face lists upon success, `fail` otherwise.

Computes the face lattice of a discrete normal surface sl in the standard labeling. Triangles and quadrilaterals are stored separately (cf. `SCSkelEx` (6.9-55)).

     gap> c:=SCBdSimplex(4);;
     gap> sl:=SCNSSlicing(c,[[1,2],[3..5]]);;
     gap> SCFaceLatticeEx(sl);
     [ [ [ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ], [ 6 ] ],
       [ [ 1, 2 ], [ 1, 3 ], [ 1, 4 ], [ 2, 3 ], [ 2, 5 ], [ 3, 6 ], [ 4, 5 ],
           [ 4, 6 ], [ 5, 6 ] ], [ [ 1, 2, 3 ], [ 4, 5, 6 ] ],
       [ [ 1, 2, 4, 5 ], [ 1, 3, 4, 6 ], [ 2, 3, 5, 6 ] ] ]
     gap> sl.F;
     [ 6, 9, 2, 3 ]

##### 7.3-7 SCFpBettiNumbers

`‣ SCFpBettiNumbers`( sl, p ) | ( method )

Returns: a list of non-negative integers upon success, `fail` otherwise.

Computes the Betti numbers modulo p of a slicing sl. Internally, sl is triangulated (using `SCNSTriangulation` (7.2-2)) and the Betti numbers are computed via `SCFpBettiNumbers` using the triangulation.

     gap> SCLib.SearchByName("(S^2xS^1)#20");
     [ [ 7617, "(S^2xS^1)#20" ] ]
     gap> c:=SCLib.Load(last[1][1]);;
     gap> c.F;
     [ 27, 298, 542, 271 ]
     gap> sl:=SCNSSlicing(c,[[1..13],[14..27]]);;
     gap> SCFpBettiNumbers(sl,2);
     [ 2, 14, 2 ]

##### 7.3-8 SCGenus

`‣ SCGenus`( sl ) | ( method )

Returns: a non-negative integer upon success, `fail` otherwise.

Computes the genus of a discrete normal surface sl.

     gap> SCLib.SearchByName("(S^2xS^1)#20");
     [ [ 7617, "(S^2xS^1)#20" ] ]
     gap> c:=SCLib.Load(last[1][1]);;
     gap> c.F;
     [ 27, 298, 542, 271 ]
     gap> sl:=SCNSSlicing(c,[[1..12],[13..27]]);;
     gap> SCIsConnected(sl);
     true
     gap> SCGenus(sl);
     7

##### 7.3-9 SCHomology

`‣ SCHomology`( sl ) | ( method )

Returns: a list of homology groups upon success, `fail` otherwise.

Computes the homology of a slicing sl. Internally, sl is triangulated (cf. `SCNSTriangulation` (7.2-2)) and simplicial homology is computed via `SCHomology` using the triangulation.

     gap> SCLib.SearchByName("(S^2xS^1)#20");
     [ [ 7617, "(S^2xS^1)#20" ] ]
     gap> c:=SCLib.Load(last[1][1]);;
     gap> c.F;
     [ 27, 298, 542, 271 ]
     gap> sl:=SCNSSlicing(c,[[1..12],[13..27]]);;
     gap> sl.Homology;
     [ [ 0, [  ] ], [ 14, [  ] ], [ 1, [  ] ] ]
     gap> sl:=SCNSSlicing(c,[[1..13],[14..27]]);;
     gap> sl.Homology;
     [ [ 1, [  ] ], [ 14, [  ] ], [ 2, [  ] ] ]

##### 7.3-10 SCIsConnected

`‣ SCIsConnected`( complex ) | ( method )

Returns: `true` or `false` upon success, `fail` otherwise.

Checks if a normal surface complex is connected.

     gap> list:=SCLib.SearchByAttribute("Dim=3 and F[1]=10");;
     gap> c:=SCLib.Load(list[1][1]);
     [SimplicialComplex

      Properties known: AltshulerSteinberg, AutomorphismGroup,
                        AutomorphismGroupSize, AutomorphismGroupStructure,
                        AutomorphismGroupTransitivity, ConnectedComponents,
                        Dim, DualGraph, EulerCharacteristic, FVector,
                        FacetsEx, GVector, GeneratorsEx, HVector,
                        HasBoundary, HasInterior, Homology, Interior,
                        IsCentrallySymmetric, IsConnected,
                        IsEulerianManifold, IsManifold, IsOrientable,
                        IsPseudoManifold, IsPure, IsStronglyConnected,
                        MinimalNonFacesEx, Name, Neighborliness,
                        NumFaces[], Orientation, Reference, SkelExs[],
                        Vertices.

      Name="S^3 (VT)"
      Dim=3
      AltshulerSteinberg=0
      AutomorphismGroupSize=200
      AutomorphismGroupStructure="(D10 x D10) : C2"
      AutomorphismGroupTransitivity=1
      EulerCharacteristic=0
      FVector=[ 10, 35, 50, 25 ]
      GVector=[ 5, 5 ]
      HVector=[ 6, 11, 6, 1 ]
      HasBoundary=false
      HasInterior=true
      Homology=[ [ 0, [ ] ], [ 0, [ ] ], [ 0, [ ] ], [ 1, [ ] ] ]
      IsCentrallySymmetric=false
      IsConnected=true
      IsEulerianManifold=true
      IsOrientable=true
      IsPseudoManifold=true
      IsPure=true
      IsStronglyConnected=true
      Neighborliness=1

     /SimplicialComplex]
     gap> sl:=SCNSSlicing(c,[[1..5],[6..10]]);
     [NormalSurface

      Properties known: ConnectedComponents, Dim, EulerCharacteristic, FVector, Fac\
     etsEx, Genus, IsConnected, IsOrientable, NSTriangulation, Name, TopologicalTyp\
     e, Vertices.

      Name="slicing [ [ 1, 2, 3, 4, 5 ], [ 6, 7, 8, 9, 10 ] ] of S^3 (VT)"
      Dim=2
      FVector=[ 17, 36, 12, 9 ]
      EulerCharacteristic=2
      IsOrientable=true
      TopologicalType="S^2"

     /NormalSurface]
     gap> SCIsConnected(sl);
     true

##### 7.3-11 SCIsEmpty

`‣ SCIsEmpty`( complex ) | ( method )

Returns: `true` or `false` upon success, `fail` otherwise.

Checks if a normal surface complex is the empty complex, i. e. a `SCNormalSurface` object with empty facet list.

     gap> sl:=SCNS([]);;
     gap> SCIsEmpty(sl);
     true

##### 7.3-12 SCIsOrientable

`‣ SCIsOrientable`( sl ) | ( method )

Returns: `true` or `false` upon success, `fail` otherwise.

Checks if a discrete normal surface sl is orientable.

     gap> c:=SCBdSimplex(4);;
     gap> sl:=SCNSSlicing(c,[[1,2],[3,4,5]]);
     [NormalSurface

      Properties known: ConnectedComponents, Dim, EulerCharacteristic, FVector, Fac\
     etsEx, Genus, IsConnected, IsOrientable, NSTriangulation, Name, TopologicalTyp\
     e, Vertices.

      Name="slicing [ [ 1, 2 ], [ 3, 4, 5 ] ] of S^3_5"
      Dim=2
      FVector=[ 6, 9, 2, 3 ]
      EulerCharacteristic=2
      IsOrientable=true
      TopologicalType="S^2"

     /NormalSurface]
     gap> SCIsOrientable(sl);
     true

##### 7.3-13 SCSkel

`‣ SCSkel`( sl, k ) | ( method )

Returns: a face list (of k+1tuples) or a list of face lists upon success, `fail` otherwise.

Computes all faces of cardinality k+1 in the original labeling: k = 0 computes the vertices, k = 1 computes the edges, k = 2 computes the triangles, k = 3 computes the quadrilaterals.

If k is a list (necessarily a sublist of `[ 0,1,2,3 ]`) all faces of all cardinalities contained in k are computed.

     gap> c:=SCBdSimplex(4);;
     gap> sl:=SCNSSlicing(c,[[1],[2..5]]);;
     gap> SCSkel(sl,1);
     [ [ [ 1, 2 ], [ 1, 3 ] ], [ [ 1, 2 ], [ 1, 4 ] ], [ [ 1, 2 ], [ 1, 5 ] ],
       [ [ 1, 3 ], [ 1, 4 ] ], [ [ 1, 3 ], [ 1, 5 ] ], [ [ 1, 4 ], [ 1, 5 ] ] ]

     gap> c:=SCBdSimplex(4);;
     gap> sl:=SCNSSlicing(c,[[1],[2..5]]);;
     gap> SCSkel(sl,3);
     [  ]
     gap> sl:=SCNSSlicing(c,[[1,2],[3..5]]);;
     gap> SCSkelEx(sl,3);
     [ [ 1, 2, 4, 5 ], [ 1, 3, 4, 6 ], [ 2, 3, 5, 6 ] ]

##### 7.3-14 SCSkelEx

`‣ SCSkelEx`( sl, k ) | ( method )

Returns: a face list (of k+1tuples) or a list of face lists upon success, `fail` otherwise.

Computes all faces of cardinality k+1 in the standard labeling: k = 0 computes the vertices, k = 1 computes the edges, k = 2 computes the triangles, k = 3 computes the quadrilaterals.

If k is a list (necessarily a sublist of `[ 0,1,2,3 ]`) all faces of all cardinalities contained in k are computed.

     gap> c:=SCBdSimplex(4);;
     gap> sl:=SCNSSlicing(c,[[1],[2..5]]);;
     gap> SCSkelEx(sl,1);
     [ [ 1, 2 ], [ 1, 3 ], [ 1, 4 ], [ 2, 3 ], [ 2, 4 ], [ 3, 4 ] ]

     gap> c:=SCBdSimplex(4);;
     gap> sl:=SCNSSlicing(c,[[1],[2..5]]);;
     gap> SCSkelEx(sl,3);
     [  ]
     gap> sl:=SCNSSlicing(c,[[1,2],[3..5]]);;
     gap> SCSkelEx(sl,3);
     [ [ 1, 2, 4, 5 ], [ 1, 3, 4, 6 ], [ 2, 3, 5, 6 ] ]

##### 7.3-15 SCTopologicalType

`‣ SCTopologicalType`( sl ) | ( method )

Returns: a string upon success, `fail` otherwise.

Determines the topological type of sl via the classification theorem for closed compact surfaces. If sl is not connected, the topological type of each connected component is computed.

     gap> SCLib.SearchByName("(S^2xS^1)#20");
     [ [ 7617, "(S^2xS^1)#20" ] ]
     gap> c:=SCLib.Load(last[1][1]);;
     gap> c.F;
     [ 27, 298, 542, 271 ]
     gap> for i in [1..26] do sl:=SCNSSlicing(c,[[1..i],[i+1..27]]); Print(sl.TopologicalType,"\n"); od;
     S^2
     S^2
     S^2
     S^2
     S^2 U S^2
     S^2 U S^2
     S^2
     (T^2)#3
     (T^2)#5
     (T^2)#4
     (T^2)#3
     (T^2)#7
     (T^2)#7 U S^2
     (T^2)#7 U S^2
     (T^2)#7 U S^2
     (T^2)#8 U S^2
     (T^2)#7 U S^2
     (T^2)#8
     (T^2)#6
     (T^2)#6
     (T^2)#5
     (T^2)#3
     (T^2)#2
     T^2
     S^2
     S^2

##### 7.3-16 SCUnion

`‣ SCUnion`( complex1, complex2 ) | ( method )

Returns: normal surface of type `SCNormalSurface` upon success, `fail` otherwise.

Forms the union of two normal surfaces complex1 and complex2 as the normal surface formed by the union of their facet sets. The two arguments are not altered. Note: for the union process the vertex labelings of the complexes are taken into account, see also `Operation Union (SCNormalSurface, SCNormalSurface)` (5.6-1). Facets occurring in both arguments are treated as one facet in the new complex.

     gap> list:=SCLib.SearchByAttribute("Dim=3 and F[1]=10");;
     gap> c:=SCLib.Load(list[1][1]);
     [SimplicialComplex

      Properties known: AltshulerSteinberg, AutomorphismGroup,
                        AutomorphismGroupSize, AutomorphismGroupStructure,
                        AutomorphismGroupTransitivity, ConnectedComponents,
                        Dim, DualGraph, EulerCharacteristic, FVector,
                        FacetsEx, GVector, GeneratorsEx, HVector,
                        HasBoundary, HasInterior, Homology, Interior,
                        IsCentrallySymmetric, IsConnected,
                        IsEulerianManifold, IsManifold, IsOrientable,
                        IsPseudoManifold, IsPure, IsStronglyConnected,
                        MinimalNonFacesEx, Name, Neighborliness,
                        NumFaces[], Orientation, Reference, SkelExs[],
                        Vertices.

      Name="S^3 (VT)"
      Dim=3
      AltshulerSteinberg=0
      AutomorphismGroupSize=200
      AutomorphismGroupStructure="(D10 x D10) : C2"
      AutomorphismGroupTransitivity=1
      EulerCharacteristic=0
      FVector=[ 10, 35, 50, 25 ]
      GVector=[ 5, 5 ]
      HVector=[ 6, 11, 6, 1 ]
      HasBoundary=false
      HasInterior=true
      Homology=[ [ 0, [ ] ], [ 0, [ ] ], [ 0, [ ] ], [ 1, [ ] ] ]
      IsCentrallySymmetric=false
      IsConnected=true
      IsEulerianManifold=true
      IsOrientable=true
      IsPseudoManifold=true
      IsPure=true
      IsStronglyConnected=true
      Neighborliness=1

     /SimplicialComplex]
     gap> sl1:=SCNSSlicing(c,[[1..5],[6..10]]);;
     gap> sl2:=sl1+10;;
     gap> sl3:=SCUnion(sl1,sl2);;
     gap> SCTopologicalType(sl3);
     "S^2 U S^2"

[Top of Book] [Contents] [Previous Chapter] [Next Chapter]
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Bib Ind

generated by GAPDoc2HTML