The module supports creation of simplicial complexes from lists of faces, as well as a few preprogrammed complex types. Furthermore, several standard techniques for modifying and recombining simplicial complexes are available.
Constructs an abstract simplicial complex with the faces in the list f. The argument should be a sequence of sets. There is no requirement on the type of the elements in the face sets, however several of the constructions require the sets to have integer entries. See Normalization for automated renumbering of the face set elements.
> sc := SimplicialComplex([{1,2,3},{1,2,4},{1,3,4},{2,3,4},{1,5},{2,5}]);We can view the facets (faces not included in any other faces) of the complex, or by giving the :Maximal output flag, we can view all faces.
> sc; Simplicial complex [ { 2, 3, 4 }, { 1, 2, 3 }, { 1, 2, 4 }, { 2, 5 }, { 1, 5 }, { 1, 3, 4 } ] > sc:Maximal; Simplicial complex { , { 4 }, { 2, 3, 4 }, { 2, 3 }, { 3, 4 }, { 1, 3 }, { 3 }, { 1 }, { 1, 4 }, { 1, 2, 3 }, { 2 }, { 1, 2 }, { 1, 2, 4 }, { 2, 5 }, { 1, 5 }, { 5 }, { 2, 4 }, { 1, 3, 4 } }
Constructs a 1-dimensional simplicial complex isomorphic to the graph G.
Constructs a simplicial complex with an n-simplex for each n-clique in the graph G.
Returns the dimension of the highest dimensional face of the simplicial complex X. Note that there is a difference between degrees and dimensions of faces. A face is said to have degree n if there are n elements in the face as a set, and it is said to have dimension n if there are n + 1 elements in the face as a set.
> Dimension(sc); 2
Returns the faces of one degree d of the simplicial complex X. Recall that the degree of a face is the number of elements in the face as a set, and one more than the dimension of the face.The order of faces returned for each degree is also the correspondence between faces and the basis of the corresponding module in a chain complex constructed from the simplicial complex.
If the complex does not possess any faces of the requested degree, an empty sequence is returned.
> Faces(sc,2); [ { 2, 3 }, { 3, 4 }, { 1, 3 }, { 1, 4 }, { 1, 2 }, { 2, 5 }, { 1, 5 }, { 2, 4 } ] > Faces(sc,5); []
Returns the facets of the simplicial complex X. The facets of a simplicial complex are the faces that are not themselves subsets of another face. This is what the normal printing mode for a simplicial complex outputs.
> Facets(sc); [ { 2, 3, 4 }, { 1, 2, 3 }, { 1, 2, 4 }, { 2, 5 }, { 1, 5 }, { 1, 3, 4 } ] > sc; Simplicial complex [ { 2, 3, 4 }, { 1, 2, 3 }, { 1, 2, 4 }, { 2, 5 }, { 1, 5 }, { 1, 3, 4 } ]
Relabels the points (elements of the face sets) of the simplicial complex X using 1, 2, 3, ... . This ensures that the simplicial complex is built on subsets of the integers, which is a prerequisite for several functions handling simplicial complexes. We call a simplicial complex on subsets of the integers normalized in this handbook.Note the two calling signatures of this function. The first signature copies the simplicial complex and returns a new complex with the desired modification, whereas the second signature modifies the complex in place.
Shifts all integer points in the normalized simplicial complex X by an offset given by n.
Note the two calling signatures of this function. The first signature copies the simplicial complex and returns a new complex with the desired modification, whereas the second signature modifies the complex in place.
> cpx := Boundary(SimplicialComplex([{"a","b","c"}])); > cpx; Simplicial complex [ { c, a }, { c, b }, { b, a } ] > Normalization(~cpx); > cpx; Simplicial complex [ { 1, 3 }, { 2, 3 }, { 1, 2 } ] > Shift(~cpx,-2); > cpx; Simplicial complex [ { -1, 1 }, { 0, 1 }, { -1, 0 } ]
Returns the simplicial complex generated by all simplexes that lie in the boundary of the simplicial complex X. This can be used to easily acquire a simplicial complex representing the n-sphere.
> Boundary(sc); Simplicial complex [ { 2, 3 }, { 3, 4 }, { 1, 3 }, { 1, 4 }, { 1, 2 }, { 5 }, { 2, 4 } ] > sph4 := Boundary(SimplicialComplex([{1,2,3,4,5,6}])); > sph4; Simplicial complex [ { 1, 2, 3, 5, 6 }, { 2, 3, 4, 5, 6 }, { 1, 3, 4, 5, 6 }, { 1, 2, 3, 4, 5 }, { 1, 2, 4, 5, 6 }, { 1, 2, 3, 4, 6 } ]
Returns the topological sum, or disjoint union, of two simplicial complexes. Requires both complexes to be normalized using Normalization.
> sph2 := Boundary(SimplicialComplex([{1,2,3}])); > sph2 + sph2; Simplicial complex [ { 4, 6 }, { 2, 3 }, { 4, 5 }, { 5, 6 }, { 1, 3 }, { 1, 2 } ]
Compares two simplicial complexes. Will not try to find an isomorphism, rather does the comparison by ensuring that the points are in the same universe and then doing a set comparison on the set of faces.
> sc eq Shift(sc,2); false > sc eq Shift(Shift(sc,2),-2); trueFurthermore, isomorphic complexes with different labels will not be equal.
> circ1 := Boundary(SimplicialComplex([{1,2,3}])); > circ2 := Boundary(SimplicialComplex([{"a","b","c"}])); > circ1 eq circ2; false
Returns the cartesian product of two simplicial complexes. This will work on any complexes, since the new points will be pairs of points from the component complexes.
> Product(circ1,circ2); Simplicial complex [ { <3, b>, <1, b>, <3, c> }, { <1, c>, <3, c>, <1, a> }, { <2, a>, <3, b>, <3, a> }, { <3, b>, <1, b>, <1, a> }, { <1, b>, <2, b>, <2, c> }, { <2, a>, <3, c>, <3, a> }, { <1, c>, <1, b>, <3, c> }, { <3, c>, <2, b>, <2, c> }, { <1, c>, <1, b>, <2, c> }, { <3, c>, <3, a>, <1, a> }, { <2, a>, <3, c>, <2, c> }, { <3, b>, <3, a>, <1, a> }, { <2, a>, <1, a>, <2, b> }, { <2, a>, <1, a>, <2, c> }, { <1, c>, <1, a>, <2, c> }, { <3, b>, <3, c>, <2, b> }, { <1, b>, <1, a>, <2, b> }, { <2, a>, <3, b>, <2, b> } ]If we want something less unwieldy -- especially after repeated cartesian products -- we can always normalize the resulting complexes.
> line := SimplicialComplex([{1,2}]); > square := Product(line,line); > cube1 := Product(square,line); > cube2 := Product(line,square); > cube1 eq cube2; false > Normalization(cube1) eq Normalization(cube2); false > cube1; Simplicial complex [ { <<1, 2>, 1>, <<1, 2>, 2>, <<1, 1>, 1>, <<2, 2>, 2> }, { <<2, 1>, 1>, <<2, 2>, 1>, <<1, 1>, 1>, <<2, 2>, 2> }, { <<1, 2>, 2>, <<1, 1>, 1>, <<1, 1>, 2>, <<2, 2>, 2> }, { <<1, 2>, 1>, <<2, 2>, 1>, <<1, 1>, 1>, <<2, 2>, 2> }, { <<1, 1>, 1>, <<1, 1>, 2>, <<2, 1>, 2>, <<2, 2>, 2> }, { <<2, 1>, 1>, <<1, 1>, 1>, <<2, 1>, 2>, <<2, 2>, 2> } ] > Normalization(cube1); Simplicial complex [ { 3, 4, 5, 8 }, { 4, 5, 6, 8 }, { 1, 3, 4, 5 }, { 2, 4, 5, 7 }, { 1, 2, 4, 5 }, { 4, 5, 6, 7 } ]
Constructs the join of two simplicial complexes. The join of two simplicial complexes is defined as the complex generated by faces on the form {x1, ..., xr, y1, ..., ys} for {x1, ..., xr}∈S and {y1, ..., ys}∈T. Requires both simplicial complexes to be normalized.
> SimplicialComplex([{1,2}]) * SimplicialComplex([{1,2}]); Simplicial complex [ { 1, 2, 3, 4 } ]
Adds either a single simplex s expressed as a set or a sequence of simplexes to a simplicial complex. The functional versions of the function call return a new complex with the added simplices included, and the procedural change the complex in place.
Removes a face f and all faces containing f from a simplicial complex X. If f is not a face of X, then X is returned unchanged.Note the two calling signatures of this function. The first signature copies the simplicial complex and returns a new complex with the desired modification, whereas the second signature modifies the complex in place.
In the simplicial complex X, identify all points identified by pairs in the sequence e.The sequence e should be a sequence of pairs of elements of the face sets of X. The identification will eliminate the first component of each pair, replacing it with the second component wherever it occurs in X.
Note the two calling signatures of this function. The first signature copies the simplicial complex and returns a new complex with the desired modification, whereas the second signature modifies the complex in place.
> circ := SimplicialComplex([{1,2},{2,3},{3,1}]); > torus := Product(circ,circ); > Normalization(~torus); > torus; Simplicial complex [ { 2, 3, 6 }, { 1, 2, 9 }, { 2, 6, 8 }, { 4, 7, 8 }, { 3, 5, 9 }, { 4, 6, 7 }, { 1, 8, 9 }, { 1, 4, 8 }, { 6, 8, 9 }, { 2, 7, 8 }, { 2, 3, 9 }, { 5, 6, 9 }, { 1, 3, 5 }, { 1, 4, 6 }, { 3, 6, 7 }, { 1, 5, 6 }, { 1, 2, 7 }, { 1, 3, 7 } ] > oneholetorus := Prune(torus,{1,2,7}); > twoholetorus := Prune(Prune(torus,{1,2,7}),{6,8,9}); > threetori := oneholetorus + twoholetorus + oneholetorus; > threetorus := Glue(threetori,[<1,10>,<2,11>,<7,16>,<15,19>,<17,20>,<18,25>]);
Note that we find the glue data by considering that the maximal point in the original torus had number 9, so for the second added torus, all points will be shifted by 9 and in the third all points will be shifted by 18. Thus, the excised facets {1, 2, 7} and {6, 8, 9} turn into {10, 11, 16} and {15, 17, 18}, and the excised facet {1, 2, 7} in the third torus turns into {19, 20, 25}.
Constructs the barycentric subdivision of the simplicial complex X. Abstractly, this is a simplicial complex whose faces are chains X1 ⊂ ... ⊂Xn of faces from X. The new complex has more faces but the same homotopy type as the old complex.
Returns the q-skeleton of the simplicial complex X. This is the complex consisting of all faces of X of dimension at most q.
Constructs a graph isomorphic, as a graph, to the 1-skeleton of the simplicial complex X.
Constructs a cone over the simplicial complex X. The cone is generated by all faces of the complex, with an additional vertex included into each face. Any cone is acyclic, in other words all homology groups vanish. Requires a normalized simplicial complex.
Constructs the suspension, or double cone, over the normalized simplicial complex X. The suspension has the added property that all the homology groups occur in it, shifted up by one dimension.
> circ := Boundary(SimplicialComplex([{1,2,3}])); > Cone(circ); Simplicial complex [ { 1, 3, 4 }, { 2, 3, 4 }, { 1, 2, 4 } ] > Suspension(circ); Simplicial complex [ { 1, 3, 5 }, { 1, 3, 4 }, { 1, 2, 5 }, { 2, 3, 4 }, { 1, 2, 4 }, { 2, 3, 5 } ]
Returns the n-dimensional simplex as a simplicial complex.
Returns a simplicial complex triangulating the n-sphere.
Returns a triangulation of the Klein bottle as an abstract simplicial complex.
Returns a triangulation of a torus as an abstract simplicial complex.
Returns a triangulation of a cylinder as an abstract simplicial complex.
Returns a triangulation of the Moebius strip as an abstract simplicial complex.
Constructs the lens space L(p, 1). This has a 1-dimensional homology generator of order p.
Constructs a triangulation of the projective plane.
Examples for the usage of LensSpace and SimplicialProjectivePlane will be given in Section Homology Computation on homology computation.