GAP (simpcomp) - Chapter 4: Functions and operations for the GAP object type SCPolyhedralComplex

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]

[MathJax off]

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

### 4 Functions and operations for the GAP object type `SCPolyhedralComplex`

In the following all operations for the GAP object type `SCPolyhedralComplex` are listed. I. e. for the following operations only one method is implemented to deal with all geometric objects derived from this object type.

#### 4.1 Computing properties of objects of type `SCPolyhedralComplex`

The following functions compute basic properties of objects of type `SCPolyhedralComplex` (and thus also of objects of type `SCSimplicialComplex` and `SCNormalSurface`). None of these functions alter the complex. All properties are returned as immutable objects (this ensures data consistency of the cached properties of a simplicial complex). Use `ShallowCopy` or the internal simpcomp function `SCIntFunc.DeepCopy` to get a mutable copy.

Note: every object is internally stored with the standard vertex labeling from \(1\) to \(n\) and a maptable to restore the original vertex labeling. Thus, we have to relabel some of the complex properties (facets, etc...) whenever we want to return them to the user. As a consequence, some of the functions exist twice, one of them with the appendix "Ex". These functions return the standard labeling whereas the other ones relabel the result to the original labeling.

##### 4.1-1 SCFacets

`‣ SCFacets`( complex ) | ( method )

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

Returns the facets of a simplicial complex in the original vertex labeling.

     gap> c:=SC([[2,3],[3,4],[4,2]]);;
     gap> SCFacets(c);
     [ [ 2, 3 ], [ 2, 4 ], [ 3, 4 ] ]

##### 4.1-2 SCFacetsEx

`‣ SCFacetsEx`( complex ) | ( method )

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

Returns the facets of a simplicial complex as they are stored, i. e. with standard vertex labeling from 1 to n.

     gap> c:=SC([[2,3],[3,4],[4,2]]);;
     gap> SCFacetsEx(c);
     [ [ 1, 2 ], [ 1, 3 ], [ 2, 3 ] ]

##### 4.1-3 SCVertices

`‣ SCVertices`( complex ) | ( method )

Returns: a list of vertex labels of complex upon success, `fail` otherwise.

Returns the vertex labels of a simplicial complex complex.

     gap> sphere:=SC([["x",45,[1,1]],["x",45,["b",3]],["x",[1,1],
       ["b",3]],[45,[1,1],["b",3]]]);;
     gap> SCVerticesEx(sphere);
     [ 1 .. 4 ]
     gap> SCVertices(sphere);
     [ 45, [ 1, 1 ], "x", [ "b", 3 ] ]

##### 4.1-4 SCVerticesEx

`‣ SCVerticesEx`( complex ) | ( method )

Returns: \([ 1, \ldots , n ]\) upon success, `fail` otherwise.

Returns \(\left[1, \ldots , n \right]\), where \(n\) is the number of vertices of a simplicial complex complex.

     gap> c:=SC([[1,4,5],[4,9,8],[12,13,14,15,16,17]]);;
     gap> SCVerticesEx(c);
     [ 1 .. 11 ]

#### 4.2 Vertex labelings and label operations

This section focuses on functions operating on the labels of a complex such as the name or the vertex labeling.

Internally, simpcomp uses the standard labeling \([1, \ldots , n]\). It is recommended to use simple vertex labels like integers and, whenever possible, the standard labeling, see also `SCRelabelStandard` (4.2-7).

##### 4.2-1 SCLabelMax

`‣ SCLabelMax`( complex ) | ( method )

Returns: vertex label of complex (an integer, a short list, a character, a short string) upon success, `fail` otherwise.

The maximum over all vertex labels is determined by the GAP function `MaximumList`.

     gap> c:=SCBdSimplex(3);;
     gap> SCRelabel(c,[10,100,100000,3500]);;
     gap> SCLabelMax(c);
     100000

     gap> c:=SCBdSimplex(3);;
     gap> SCRelabel(c,["a","bbb",5,[1,1]]);;
     gap> SCLabelMax(c);
     "bbb"

##### 4.2-2 SCLabelMin

`‣ SCLabelMin`( complex ) | ( method )

Returns: vertex label of complex (an integer, a short list, a character, a short string) upon success, `fail` otherwise.

The minimum over all vertex labels is determined by the GAP function `MinimumList`.

     gap> c:=SCBdSimplex(3);;
     gap> SCRelabel(c,[10,100,100000,3500]);;
     gap> SCLabelMin(c);
     10

     gap> c:=SCBdSimplex(3);;
     gap> SCRelabel(c,["a","bbb",5,[1,1]]);;
     gap> SCLabelMin(c);
     5

##### 4.2-3 SCLabels

`‣ SCLabels`( complex ) | ( method )

Returns: a list of vertex labels of complex (a list of integers, short lists, characters, short strings, ...) upon success, `fail` otherwise.

Returns the vertex labels of complex as a list. This is a synonym of `SCVertices` (4.1-3).

     gap> c:=SCFromFacets(Combinations(["a","b","c","d"],3));;
     gap> SCLabels(c);
     [ "a", "b", "c", "d" ]

##### 4.2-4 SCName

`‣ SCName`( complex ) | ( operation )

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

Returns the name of a simplicial complex complex.

     gap> c:=SCBdSimplex(5);;
     gap> SCName(c);
     "S^4_6"

     gap> c:=SC([[1,2],[2,3],[3,1]]);;
     gap> SCName(c);
     "unnamed complex 2"

##### 4.2-5 SCReference

`‣ SCReference`( complex ) | ( operation )

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

Returns a literature reference of a polyhedral complex complex.

     gap> c:=SCLib.Load(253);;
     gap> SCReference(c);
     "manifold_2_14_4_2 in F.H.Lutz: 'The Manifold Page', http://www.math.tu-berlin\
     .de/diskregeom/stellar/,\r\nF.H.Lutz: 'Triangulated manifolds with few vertice\
     s and vertex-transitive group actions', Doctoral Thesis TU Berlin 1999, Shaker\
     -Verlag, Aachen 1999"
     gap> c:=SC([[1,2],[2,3],[3,1]]);;
     gap> SCReference(c);
     #I  SCReference: complex lacks reference.
     fail

##### 4.2-6 SCRelabel

`‣ SCRelabel`( complex, maptable ) | ( method )

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

maptable has to be a list of length \(n\) where \(n\) is the number of vertices of complex. The function maps the \(i\)-th entry of maptable to the \(i\)-th entry of the current vertex labels. If complex has the standard vertex labeling \([1, \ldots , n]\) the vertex label \(i\) is mapped to maptable[i].

Note that the elements of maptable must admit a total ordering. Hence, following Section 4.11 of the GAP manual, they must be members of one of the following families: rationals `IsRat`, cyclotomics `IsCyclotomic`, finite field elements `IsFFE`, permutations `IsPerm`, booleans `IsBool`, characters `IsChar` and lists (strings) `IsList`.

Internally the property ``SCVertices'' of complex is replaced by maptable.

     gap> list:=SCLib.SearchByAttribute("F[1]=12");;
     gap> c:=SCLib.Load(list[1][1]);;
     gap> SCVertices(c);
     [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ]
     gap> SCRelabel(c,["a","b","c","d","e","f","g","h","i","j","k","l"]);
     true
     gap> SCLabels(c);
     [ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l" ]

##### 4.2-7 SCRelabelStandard

`‣ SCRelabelStandard`( complex ) | ( method )

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

Maps vertex labels \(v_1 , \ldots , v_n\) of complex to \([1 , \ldots , n]\). Internally the property "SCVertices" is replaced by \([1 , \ldots , n]\).

     gap> list:=SCLib.SearchByAttribute("F[1]=12");;
     gap> c:=SCLib.Load(list[1][1]);;
     gap> SCRelabel(c,[4..15]);
     true
     gap> SCVertices(c);
     [ 4 .. 15 ]
     gap> SCRelabelStandard(c);
     true
     gap> SCLabels(c);
     [ 1 .. 12 ]

##### 4.2-8 SCRelabelTransposition

`‣ SCRelabelTransposition`( complex, pair ) | ( method )

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

Permutes vertex labels of a single pair of vertices. pair has to be a list of length \(2\) and a sublist of the property ``SCVertices''.

The function is equivalent to `SCRelabel` (4.2-6) with maptable \(= [ SCVertices[1] , \ldots , SCVertices[j] , \ldots , SCVertices[i] , \dots , SCVertices[n]]\) if pair \(= [ SCVertices[j] , SCVertices[i]]\), \(j \leq i\), \(j \neq i\).

     gap> c:=SCBdSimplex(3);;
     gap> SCVertices(c);
     [ 1 .. 4 ]
     gap> SCRelabelTransposition(c,[1,2]);;
     gap> SCLabels(c);
     [ 2, 1, 3, 4 ]

##### 4.2-9 SCRename

`‣ SCRename`( complex, name ) | ( method )

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

Renames a polyhedral complex. The argument name has to be given in form of a string.

     gap> c:=SCBdSimplex(5);;
     gap> SCName(c);
     "S^4_6"
     gap> SCRename(c,"mySphere");
     true
     gap> SCName(c);
     "mySphere"

##### 4.2-10 SCSetReference

`‣ SCSetReference`( complex, ref ) | ( method )

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

Sets the literature reference of a polyhedral complex. The argument ref has to be given in form of a string.

     gap> c:=SCBdSimplex(5);;
     gap> SCReference(c);
     #I  SCReference: complex lacks reference.
     fail
     gap> SCSetReference(c,"my 5-sphere in my cool paper");
     true
     gap> SCReference(c);
     "my 5-sphere in my cool paper"

##### 4.2-11 SCUnlabelFace

`‣ SCUnlabelFace`( complex, face ) | ( method )

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

Computes the standard labeling of face in complex.

     gap> c:=SCBdSimplex(3);;
     gap> SCRelabel(c,["a","bbb",5,[1,1]]);;
     gap> SCUnlabelFace(c,["a","bbb",5]);
     [ 1, 2, 3 ]

#### 4.3 Operations on objects of type `SCPolyhedralComplex`

The following functions perform operations on objects of type `SCPolyhedralComplex` and all of its subtypes. Most of them return simplicial complexes. Thus, this section is closely related to the Sections 6.6 (for objects of type `SCSimplicialComplex`), ''Generate new complexes from old''. However, the data generated here is rather seen as an intrinsic attribute of the original complex and not as an independent complex.

##### 4.3-1 SCAntiStar

`‣ SCAntiStar`( complex, face ) | ( method )

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

Computes the anti star of face (a face given as a list of vertices or a scalar interpreted as vertex) in complex, i. e. the complement of face in complex.

     gap> SCLib.SearchByName("RP^2");
     [ [ 3, "RP^2 (VT)" ], [ 262, "RP^2xS^1" ] ]
     gap> rp2:=SCLib.Load(last[1][1]);;
     gap> SCVertices(rp2);
     [ 1, 2, 3, 4, 5, 6 ]
     gap> SCAntiStar(rp2,1);
     <SimplicialComplex: ast([ 1 ]) in RP^2 (VT) | dim = 2 | n = 5>
     gap> last.Facets;
     [ [ 2, 3, 4 ], [ 2, 4, 5 ], [ 2, 5, 6 ], [ 3, 4, 6 ], [ 3, 5, 6 ] ]

##### 4.3-2 SCLink

`‣ SCLink`( complex, face ) | ( method )

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

Computes the link of face (a face given as a list of vertices or a scalar interpreted as vertex) in a polyhedral complex complex, i. e. all facets containing face, reduced by face. if complex is pure, the resulting complex is of dimension dim(complex) - dim(face) \(-1\). If face is not a face of complex the empty complex is returned.

     gap> SCLib.SearchByName("RP^2");
     [ [ 3, "RP^2 (VT)" ], [ 262, "RP^2xS^1" ] ]
     gap> rp2:=SCLib.Load(last[1][1]);;
     gap> SCVertices(rp2);
     [ 1, 2, 3, 4, 5, 6 ]
     gap> SCLink(rp2,[1]);
     <SimplicialComplex: lk([ 1 ]) in RP^2 (VT) | dim = 1 | n = 5>
     gap> last.Facets;
     [ [ 2, 3 ], [ 2, 6 ], [ 3, 5 ], [ 4, 5 ], [ 4, 6 ] ]

##### 4.3-3 SCLinks

`‣ SCLinks`( complex, k ) | ( method )

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

Computes the link of all k-faces of the polyhedral complex complex and returns them as a list of simplicial complexes. Internally calls `SCLink` (4.3-2) for every k-face of complex.

     gap> c:=SCBdSimplex(4);;
     gap> SCLinks(c,0);
     [ <SimplicialComplex: lk([ 1 ]) in S^3_5 | dim = 2 | n = 4>,
       <SimplicialComplex: lk([ 2 ]) in S^3_5 | dim = 2 | n = 4>,
       <SimplicialComplex: lk([ 3 ]) in S^3_5 | dim = 2 | n = 4>,
       <SimplicialComplex: lk([ 4 ]) in S^3_5 | dim = 2 | n = 4>,
       <SimplicialComplex: lk([ 5 ]) in S^3_5 | dim = 2 | n = 4> ]
     gap> SCLinks(c,1);
     [ <SimplicialComplex: lk([ 1, 2 ]) in S^3_5 | dim = 1 | n = 3>,
       <SimplicialComplex: lk([ 1, 3 ]) in S^3_5 | dim = 1 | n = 3>,
       <SimplicialComplex: lk([ 1, 4 ]) in S^3_5 | dim = 1 | n = 3>,
       <SimplicialComplex: lk([ 1, 5 ]) in S^3_5 | dim = 1 | n = 3>,
       <SimplicialComplex: lk([ 2, 3 ]) in S^3_5 | dim = 1 | n = 3>,
       <SimplicialComplex: lk([ 2, 4 ]) in S^3_5 | dim = 1 | n = 3>,
       <SimplicialComplex: lk([ 2, 5 ]) in S^3_5 | dim = 1 | n = 3>,
       <SimplicialComplex: lk([ 3, 4 ]) in S^3_5 | dim = 1 | n = 3>,
       <SimplicialComplex: lk([ 3, 5 ]) in S^3_5 | dim = 1 | n = 3>,
       <SimplicialComplex: lk([ 4, 5 ]) in S^3_5 | dim = 1 | n = 3> ]

##### 4.3-4 SCStar

`‣ SCStar`( complex, face ) | ( method )

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

Computes the star of face (a face given as a list of vertices or a scalar interpreted as vertex) in a polyhedral complex complex, i. e. the set of facets of complex that contain face.

     gap> SCLib.SearchByName("RP^2");
     [ [ 3, "RP^2 (VT)" ], [ 262, "RP^2xS^1" ] ]
     gap> rp2:=SCLib.Load(last[1][1]);;
     gap> SCVertices(rp2);
     [ 1, 2, 3, 4, 5, 6 ]
     gap> SCStar(rp2,1);
     <SimplicialComplex: star([ 1 ]) in RP^2 (VT) | dim = 2 | n = 6>
     gap> last.Facets;
     [ [ 1, 2, 3 ], [ 1, 2, 6 ], [ 1, 3, 5 ], [ 1, 4, 5 ], [ 1, 4, 6 ] ]

##### 4.3-5 SCStars

`‣ SCStars`( complex, k ) | ( method )

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

Computes the star of all k-faces of the polyhedral complex complex and returns them as a list of simplicial complexes. Internally calls `SCStar` (4.3-4) for every k-face of complex.

     gap> SCLib.SearchByName("T^2"){[1..6]};
     [ [ 4, "T^2 (VT)" ], [ 5, "T^2 (VT)" ], [ 9, "T^2 (VT)" ], [ 10, "T^2 (VT)" ],
       [ 17, "T^2 (VT)" ], [ 20, "(T^2)#2" ] ]
     gap> torus:=SCLib.Load(last[1][1]);; # the minimal 7-vertex torus
     gap> SCStars(torus,0); # 7 2-discs as vertex stars
     [ <SimplicialComplex: star([ 1 ]) in T^2 (VT) | dim = 2 | n = 7>,
       <SimplicialComplex: star([ 2 ]) in T^2 (VT) | dim = 2 | n = 7>,
       <SimplicialComplex: star([ 3 ]) in T^2 (VT) | dim = 2 | n = 7>,
       <SimplicialComplex: star([ 4 ]) in T^2 (VT) | dim = 2 | n = 7>,
       <SimplicialComplex: star([ 5 ]) in T^2 (VT) | dim = 2 | n = 7>,
       <SimplicialComplex: star([ 6 ]) in T^2 (VT) | dim = 2 | n = 7>,
       <SimplicialComplex: star([ 7 ]) in T^2 (VT) | dim = 2 | n = 7> ]

[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