application: topaz

The TOPology Application Zoo deals with abstract simplicial complexes. A complex is given as a list of facets. You can ask for its global properties (manifold recognition, homology groups, etc.), explore the local vertex environment (stars, links, etc.), and make a lot of constructions.

The visualization means are constrained, as they are mostly based on the GRAPH (1-skeleton) of a complex.

imports from: common, graph
uses: ideal

Objects

•

GeometricSimplicialComplex

A geometric simplicial complex, i.e., a simplicial complex with a geometric realization. Scalar is the numeric data type used for the coordinates.

derived from: SimplicialComplex
Type Parameters
 Scalar default: Rational

•

SimplicialComplex

An abstract simplicial complex represented by its facets.

•

Combinatorics

These methods capture combinatorial information of the object. Combinatorial properties only depend on combinatorial data of the object like, e.g., the face lattice.

•
BIPARTITE () → Bool

True if GRAPH is a bipartite.

Returns
 Bool
•
CONNECTED_COMPONENTS () → PowerSet<Int>

The connected components of the GRAPH, encoded as node sets.

Returns
 PowerSet
•
CONNECTIVITY () → Int

Node connectivity of the GRAPH, that is, the minimal number of nodes to be removed from the graph such that the result is disconnected.

Returns
 Int
•
DUAL_BIPARTITE () → Bool

True if DUAL_GRAPH is a bipartite.

Returns
 Bool
•
DUAL_CONNECTED_COMPONENTS () → PowerSet<Int>

The connected components of the DUAL_GRAPH, encoded as node sets.

Returns
 PowerSet
•
DUAL_CONNECTIVITY () → PowerSet<Int>

Node connectivity of the DUAL_GRAPH. Dual to CONNECTIVITY.

Returns
 PowerSet
•
DUAL_GRAPH_SIGNATURE () → Int

Difference of the black and white nodes if the DUAL_GRAPH is BIPARTITE. Otherwise -1.

Returns
 Int
•
DUAL_MAX_CLIQUES () → PowerSet<Int>

The maximal cliques of the DUAL_GRAPH, encoded as node sets.

Returns
 PowerSet
•
GRAPH_SIGNATURE () → Int

Difference of the black and white nodes if the GRAPH is BIPARTITE. Otherwise -1.

Returns
 Int
•
labeled_vertices (label ...) → Set<Int>

Find the vertices by given labels.

Parameters
 String label ... vertex labels
Returns
 Set vertex indices
•
MAX_CLIQUES () → PowerSet<Int>

The maximal cliques of the GRAPH, encoded as node sets.

Returns
 PowerSet
•
VERTEX_DEGREES () → Array<Int>

Degrees of the vertices in the GRAPH.

Returns
 Array
•

Topology

The following methods compute topological invariants.

•

Visualization

These methods are for visualization.

•
VISUAL () → Visual::SimplicialComplex

Visualizes the complex.

If G_DIM < 4, the GRAPH and the facets are visualized using the COORDINATES.

Otherwise, the spring embedder and the GRAPH are used to produce coordinates for the visualization.

If JavaView is used to visualize the complex, all faces of one facet build a geometry in the jvx-file, so you may use Method -> Effect -> Explode Group of Geometries in the JavaView menu.

Options
 Bool mixed_graph use the MIXED_GRAPH for the spring embedder Int seed random seed value for the string embedder option list: Visual::Polygon::decorations option list: Visual::Graph::decorations
Returns
 Visual::SimplicialComplex
•
VISUAL_DUAL_GRAPH () → Visual::SimplicialComplex

Uses the spring embedder to visualize the DUAL_GRAPH.

Options
 Int seed random seed value for the string embedder option list: Visual::Graph::decorations
Returns
 Visual::SimplicialComplex
•
VISUAL_FACE_LATTICE () → Visual::SimplicialComplexLattice

Visualize the HASSE_DIAGRAM of a simplicial complex as a multi-layer graph.

Options
 Int seed random seed value for the node placement option list: Visual::Lattice::decorations
Returns
 Visual::SimplicialComplexLattice
•
VISUAL_GRAPH () → Visual::SimplicialComplex

Uses the spring embedder to visualize the GRAPH.

Options
 Int seed random seed value for the string embedder option list: Visual::Graph::decorations
Returns
 Visual::SimplicialComplex
•
VISUAL_MIXED_GRAPH ()

Uses the spring embedder to visualize the MIXED_GRAPH.

Options
 Int seed random seed value for the string embedder option list: Visual::Graph::decorations

•

Visual::SimplicialComplex

Visualization of the simplicial complex.

User Methods of Visual::SimplicialComplex

•
FACES (PROPERTY_NAME)

Add faces with optional different graphical attributes.

Parameters
 String PROPERTY_NAME or [ Faces ]
Options
 option list: Visual::Polygon::decorations
•
MORSE_MATCHING ()

Add the MORSE_MATCHING to the visualization of the SimplicialComplex.

Options
 option list: Visual::Graph::decorations
•
SUBCOMPLEX (PROPERTY_NAME)

Add a subcomplex with optional different graphical attributes.

Parameters
 String PROPERTY_NAME or [ Facets ]
Options
 option list: Visual::Polygon::decorations option list: Visual::Graph::decorations option list: Visual::PointSet::decorations
•

Visual::SimplicialComplexLattice

Visualization of the HASSE_DIAGRAM of a simplicial complex as a multi-layer graph.

User Methods of Visual::SimplicialComplexLattice

•
FACES (faces)

Add distinguished faces with different graphical attributes NodeColor and NodeStyle.

Parameters
 Array faces (to be changed in the near future)
Options
 option list: Visual::Lattice::decorations
•
SUBCOMPLEX (property)

Add a subcomplex with different graphical attributes.

Parameters
 String property name of the subcomplex property (to be changed in the near future)
Options
 option list: Visual::Lattice::decorations

User Functions

•

Comparing

These functions compare two SimplicialComplex

•
find_facet_vertex_permutations (complex1, complex2) → Pair<Array<Int>, Array<int>>

Find the permutations of facets and vertices which maps the first complex to the second one. The facet permutation is the first component of the return value. If the complexes are not isomorphic, an exception is thrown.

Parameters
 SimplicialComplex complex1 SimplicialComplex complex2
Returns
 Pair, Array>

Example:
• To print the vertex permutation that maps the 3-simplex to its mirror image, type this:`> \$p = find_facet_vertex_permutations(simplex(3),scale(simplex(3),-1));``> print \$p->first;`` 3 2 1 0`
•
isomorphic (complex1, complex2) → Bool

Determine whether two given complexes are combinatorially isomorphic. The problem is reduced to graph isomorphism of the vertex-facet incidence graphs.

Parameters
 SimplicialComplex complex1 SimplicialComplex complex2
Returns
 Bool
•
pl_homeomorphic (complex1, complex2) → Bool

Tries to determine whether two complexes are pl-homeomorphic by using bistellar flips and a simulated annealing strategy.

You may specify the maximal number of rounds, how often the system may relax before heating up and how much heat should be applied. The function stops computing, once the size of the triangulation has not decreased for rounds iterations. If the abs flag is set, the function stops after rounds iterations regardless of when the last improvement took place. Additionally, you may set the threshold min_n_facets for the number of facets when the simplification ought to stop. Default is d+2 in the CLOSED_PSEUDO_MANIFOLD case and 1 otherwise.

If you want to influence the distribution of the dimension of the moves when warming up you may do so by specifying a distribution. The number of values in distribution determines the dimensions used for heating up. The heating and relaxing parameters decrease dynamically unless the constant flag is set. The function prohibits to execute the reversed move of a move directly after the move itself unless the allow_rev_move flag is set. Setting the allow_rev_move flag might help solve a particular resilient problem.

If you are interested in how the process is coming along, try the verbose option. It specifies after how many rounds the current best result is displayed.

The obj determines the objective function used for the optimization. If obj is set to 0, the function searches for the triangulation with the lexicographically smallest f-vector, if obj is set to 1, the function searches for the triangulation with the reversed-lexicographically smallest f-vector and if obj is set to 2 the sum of the f-vector entries is used. The default is 1.

Parameters
 SimplicialComplex complex1 SimplicialComplex complex2
Options
 Int rounds Bool abs Int obj Int relax Int heat Bool constant Bool allow_rev_move Int min_n_facets Int verbose Int seed Bool quiet Array distribution
Returns
 Bool
•

Other

Special purpose functions.

•
is_generalized_shelling (FaceList) → Bool

Check if a given sequence of faces of a simplicial complex is a generalized shelling.

Parameters
 Array FaceList
Options
 Bool verbose
Returns
 Bool
•
is_vertex_decomposition (complex, vertices) → Bool

Check whether a given ordered subset of the vertex set is a vertex decomposition. Works for 1-, 2- and 3-manifolds only!

Parameters
 SimplicialComplex complex Array vertices shedding vertices
Options
 Bool verbose
Returns
 Bool
•
mixed_graph (complex)

Produces the mixed graph of a complex.

Parameters
 SimplicialComplex complex
Options
 Float edge_weight
•
morse_matching (complex) → EdgeMap

Compute a Morse matching. Two heuristics are implemented:

(1) A simple greedy algorithm:
The arcs are visited in lexicographical order, i.e.:
we proceed by levels from top to bottom,
visit the faces in each dimension in lexicographical order,
and visited the faces covered by these faces in lexicographical order.
This heuristic is used by default and with heuristic => 1.
(2) A Morse matching can be improved by canceling critical cells
along unique alternating paths, see function
processAlternatingPaths() in file morse_matching_tools.h .
This idea is due to Robin Forman:
Morse Theory for Cell-Complexes,
Advances in Math., 134 (1998), pp. 90-145.
This heuristic is used by default and with heuristic => 2.

The default setting is to use both, i.e., to run the greedy algorithm and then improve the result by the canceling algorithm.

Morse matchings for the bottom level can be found optimally by spanning tree techniques. This can be enabled by the option levels => 1. If the complex is a pseudo-manifold the same can be done for the top level (option levels => 2). By specifying option levels => 0, both levels can be computed by spanning trees. For 2-dim pseudo-manifolds this computes an optimal Morse matching.

Parameters
 SimplicialComplex complex given by its Hasse diagram
Options
 Int heuristic (1=greedy, 2=cancel, 0=both (default)) Int levels (1=bottom, 2=top, 0=both (default))
Returns
 EdgeMap matching a labelling of the edges of the Hasse diagram with integer values, where 1 means that the edge is in the matching
•
morse_matching_size (complex) → Int

Compute the number of edges in a Morse matching.

Parameters
 SimplicialComplex complex a complex with a Morse matching
Returns
 Int the number of edges in the matching.
•
poset_by_inclusion (P) → Graph<Directed>

Construct the inclusion poset from a given container. The elements of the container are interpreted as sets. They define a poset by inclusion. The function returns this poset encoded as a directed graph. The direction is towards to larger sets. All relations are encoded, not only the covering relations. For details see Assarf, Joswig & Pfeifle: Webs of stars or how to triangulate sums of polytopes, to appear

Parameters
 Array P
Returns
 Graph
•
random_discrete_morse (complex) → Map< Array<Int>, Int >

Implementation of random discrete Morse algorithms by Lutz and Benedetti Returns a map of the number of occurrences of different reduction results indexed by the corresponding discrete Morse vectors (containing the number of critical cells per dimension)

Parameters
 SimplicialComplex complex
Options
 Int rounds Run for r rounds Int seed Set seed number for random number generator Int strategy Set strategy=>0 (default) for random-random: uniformly random selecting of a face to collapse or as critical face Set strategy=>1 for random-lex-first: uniformly random relabeling of vertices, then selecting lexicographically first face for collapse or as a critical face Set strategy=>2 for random-lex-last: uniformly random relabeling of vertices, then selecting lexicographically last face for collapse or as a critical face Int verbose v Prints message after running every v rounds Array try_until_reached Used together with rounds=>r; When try_until_reached=>[a,...,b], runs for r rounds or until [a,...,b] is found Array try_until_exception Used together with rounds=>r; When try_until_exception=>[a,...,b], runs for r rounds or until anything other than [a,...,b] is found String save_collapsed Save all facets that remain after initial collapse to an XML file of a Simplicial Complex. Rounds that have Morse vector [1,0,...,0] or [1,0,...,0,1] will save nothing. Filename must have quotation marks: save_collapsed=>"path/to/filename". The XML files are saved as "path/to/filename_currentround.top".
Returns
 Map< Array, Int >
•
stabbing_order (P) → graph::Graph<Directed>

Determine the stabbing partial order of a simplicial ball with respect to the origin. The origin may be a vertex or not. For details see Assarf, Joswig & Pfeifle: Webs of stars or how to triangulate sums of polytopes, to appear

Parameters
 GeometricSimplicialComplex P
Returns
 graph::Graph
•
stanley_reisner (complex) → ideal::Ideal

Creates the Stanley-Reisner ideal of a simplicial complex. Optional ring parameter is required to have precisely as many variables as C has vertices.

Parameters
 SimplicialComplex complex
Options
 Ring ring
Returns
 ideal::Ideal
•
star_of_zero (C) → Set<Set<Int>>

Find the facets of the star of the origin in the simplicial complex. The origin may be a vertex or not. For details see Assarf, Joswig & Pfeifle: Webs of stars or how to triangulate sums of polytopes, to appear

Parameters
 GeometricSimplicialComplex C
Returns
 Set>
•
star_shaped_balls (P) → Array<Set<Set>>

Enumerate all balls formed by the simplices of a geometric simplicial complex that are strictly star-shaped with respect to the origin. The origin may be a vertex or not. For details see Assarf, Joswig & Pfeifle: Webs of stars or how to triangulate sums of polytopes, to appear

Parameters
 GeometricSimplicialComplex P
Returns
 Array>
•
stiefel_whitney (facets) → Array<PowerSet<Int>>

Computes Stiefel-Whitney classes of mod 2 Euler space (in particular, closed manifold). Use option verbose to show regular pairs and cycles. A narrower dimension range of interest can be specified. Negative values are treated as co-dimension - 1

Parameters
 Array> facets the facets of the simplicial complex
Options
 Int high_dim Int low_dim Bool verbose
Returns
 Array>
•

Producing a new simplicial complex from others

These functions construct a new SimplicialComplex from other objects of the same type.

•
alexander_dual (complex) → SimplicialComplex

Computes the Alexander dual complex, that is, the complements of all non-faces. The vertex labels are preserved unless the nol flag is specified.

Parameters
 SimplicialComplex complex
Options
 Bool nol
Returns
 SimplicialComplex
•
barycentric_subdivision (complex) → SimplicialComplex

Computes the barycentric subdivision of complex.

Parameters
 SimplicialComplex complex
Options
 String pin_hasse_section default: HASSE_DIAGRAM String label_section default: VERTEX_LABELS String coord_section default: VERTICES Bool geometric_realization set to 1 to obtain a GeometricSimplicialComplex, default: 0
Returns
 SimplicialComplex
•
bistellar_simplification (complex) → SimplicialComplex

Heuristic for simplifying the triangulation of the given manifold without changing its PL-type. The function uses bistellar flips and a simulated annealing strategy.

You may specify the maximal number of rounds, how often the system may relax before heating up and how much heat should be applied. The function stops computing, once the size of the triangulation has not decreased for rounds iterations. If the abs flag is set, the function stops after rounds iterations regardless of when the last improvement took place. Additionally, you may set the threshold min_n_facets for the number of facets when the simplification ought to stop. Default is d+2 in the CLOSED_PSEUDO_MANIFOLD case and 1 otherwise.

If you want to influence the distribution of the dimension of the moves when warming up you may do so by specifying a distribution. The number of values in distribution determines the dimensions used for heating up. The heating and relaxing parameters decrease dynamically unless the constant flag is set. The function prohibits to execute the reversed move of a move directly after the move itself unless the allow_rev_move flag is set. Setting the allow_rev_move flag might help solve a particular resilient problem.

If you are interested in how the process is coming along, try the verbose option. It specifies after how many rounds the current best result is displayed.

The obj determines the objective function used for the optimization. If obj is set to 0, the function searches for the triangulation with the lexicographically smallest f-vector, if obj is set to any other value the sum of the f-vector entries is used. The default is 1.

Parameters
 SimplicialComplex complex
Options
 Int rounds Bool abs Int obj Int relax Int heat Bool constant Bool allow_rev_move Int min_n_facets Int verbose Int seed Bool quiet Array distribution
Returns
 SimplicialComplex
•
bs2quotient (P, complex) → SimplicialComplex

Create a simplicial complex from a simplicial subdivision of a given complex by identifying vertices on the boundary of the original complex according to a group that acts on vertices.

Contained in extension `bundled:group`.
Parameters
 polytope::Polytope P the underlying polytope SimplicialComplex complex a sufficiently fine subdivision of P, for example the second barycentric subdivision
Returns
 SimplicialComplex
•
colored_ball_from_colored_sphere (complex) → SimplicialComplex

Extends the triangulation and coloring of a k-colored (d-1)-sphere to a max{k,d+1}-colored triangulation of a d-ball. The colors are integer numbers.

The old vertex labels are preserved unless the no_labels flag is specified. The new vertices get labeled `new_i` (i=0, 1, 2, ...). If a new label is not unique, `_j` is added for the smallest integer j which makes the label unique.

Contained in extension `bundled:local`.
Parameters
 SimplicialComplex complex
Options
 Bool no_lables
Returns
 SimplicialComplex
•
cone (complex, k) → SimplicialComplex

Produce the k-cone over a given simplicial complex.

Parameters
 SimplicialComplex complex Int k default is 1
Options
 Array apex_labels labels of the apex vertices. Default labels have the form `apex_0, apex_1, ...`. In the case the input complex has already vertex labels of this kind, the duplicates are avoided. Bool nol don't generate any vertex labels.
Returns
 SimplicialComplex
•
connected_sum (complex1, complex2, f1, f2) → SimplicialComplex

Compute the connected sum of two complexes.

Parameters f_1 and f_2// specify which facet of the first and second complex correspondingly are glued together. Default is the 0-th facet of both.

The vertices in the selected facets are identified with each other according to their order in the facet (that is, in icreasing index order). The option permutation allows to get an alternative identification. It should specify a permutation of the vertices of the second facet.

The vertices of the new complex get the original labels with `_1` or `_2` appended, according to the input complex they came from. If you set the no_labels flag, the label generation will be omitted.

Parameters
 SimplicialComplex complex1 SimplicialComplex complex2 Int f1 default: 0 Int f2 default: 0
Options
 Array permutation Bool no_lables
Returns
 SimplicialComplex
•
covering_relations (P) → Graph<Directed>

Construct the covering relations of a poset

Parameters
 Graph P
Returns
 Graph
•
deletion (complex, face) → SimplicialComplex

Remove the given face and all the faces containing it.

Parameters
 SimplicialComplex complex Set face specified by vertex indices. Please use labeled_vertices if you want to specify the face by vertex labels.
Options
 Bool no_labels do not write vertex labels.
Returns
 SimplicialComplex
•
disjoint_union (complex1, complex2) → SimplicialComplex

Produce the disjoint union of the two given complexes.

Parameters
 SimplicialComplex complex1 SimplicialComplex complex2
Options
 Bool labels creates VERTEX_LABELS. The vertex labels are built from the original labels with a suffix `_1` or `_2` appended.
Returns
 SimplicialComplex
•
edge_contraction (complex) → SimplicialComplex

Heuristic for simplifying the triangulation of the given manifold without changing its PL-type. Choosing a random order of the vertices, the function tries to contract all incident edges.

Parameters
 SimplicialComplex complex
Options
 Int seed
Returns
 SimplicialComplex
•
foldable_prism (complex) → GeometricSimplicialComplex

Produce a prism over a given SimplicialComplex.

Parameters
 GeometricSimplicialComplex complex
Options
 Bool geometric_realization
Returns
 GeometricSimplicialComplex
•
hom_poset (P, Q) → Graph<Directed>

Construct the poset of order preserving maps from one poset to another

Parameters
 Graph P Graph Q
Returns
 Graph
•
hom_poset (homs, Q) → Graph<Directed>

Construct the poset of order preserving maps from one poset to another

Parameters
 Set> homs Graph Q
Returns
 Graph
•
h_induced_quotient (C, vertices) → SimplicialComplex

Let C be the given simplicial and A the subcomplex induced by the given vertices. Then this function produces a simplicial complex homotopy equivalent to C mod A by adding the cone over A with apex a to C. The label of the apex my be specified via the option apex.

Parameters
 SimplicialComplex C Set vertices
Options
 Bool no_labels tells the client not to write any labels. String apex
Returns
 SimplicialComplex
•
induced_subcomplex (complex, vertices) → SimplicialComplex

Produce the subcomplex consisting of all faces which are contained in the given set of vertices.

Parameters
 SimplicialComplex complex Set vertices
Options
 Bool no_label tells the client not to create any labels. Bool geom_real tells the client to inherit the COORDINATES.
Returns
 SimplicialComplex
•
iterated_barycentric_subdivision (complex, k) → SimplicialComplex

Computes the k-th barycentric subdivision of complex by iteratively calling barycentric_subdivision.

Parameters
 SimplicialComplex complex Int k
Options
 String pin_hasse_section default: HASSE_DIAGRAM String label_section default: VERTEX_LABELS String coord_section default: VERTICES Bool geometric_realization set to 1 to obtain a GeometricSimplicialComplex, default: 0
Returns
 SimplicialComplex
•
join_complexes (complex1, complex2) → SimplicialComplex

Creates the join of complex1 and complex2.

Parameters
 SimplicialComplex complex1 SimplicialComplex complex2
Options
 Bool labels creates VERTEX_LABELS. The vertex labels are built from the original labels with a suffix `_1` or `_2` appended.
Returns
 SimplicialComplex
•
k_skeleton (complex, k) → SimplicialComplex

Produce the k-skeleton.

Parameters
 SimplicialComplex complex Int k
Options
 Bool vertex_labels whether to create VERTEX_LABELS
Returns
 SimplicialComplex
•
k_skeleton (complex, k) → GeometricSimplicialComplex

Produce the k-skeleton.

Parameters
 GeometricSimplicialComplex complex Int k
Options
 Bool vertex_labels whether to create VERTEX_LABELS
Returns
 GeometricSimplicialComplex
• link_complex (complex, face) → SimplicialComplex
•
poset_homomorphisms (P, Q) → Set<Array<Int>>

Enumerate all order preserving maps from one poset to another

Parameters
 Graph P Graph Q
Options
 Array prescribed_map A vector of length P.nodes() with those images in Q that should be fixed. Negative entries will be enumerated over.
Returns
 Set>
•
simplicial_product (complex1, complex2) → SimplicialComplex

Computes the simplicial product of two complexes. Vertex orderings may be given as options.

Parameters
 SimplicialComplex complex1 SimplicialComplex complex2
Options
 Array vertex_order1 Array vertex_order2 Bool geometric_realization default 0 Bool color_cons Bool no_labels
Returns
 SimplicialComplex
•
simplicial_product <Scalar> (complex1, complex2) → GeometricSimplicialComplex<Scalar>

Computes the simplicial product of two complexes. Vertex orderings may be given as options.

Type Parameters
 Scalar
Parameters
 GeometricSimplicialComplex complex1 GeometricSimplicialComplex complex2
Options
 Array vertex_order1 Array vertex_order2 Bool geometric_realization default 1 Bool color_cons Bool no_labels
Returns
 GeometricSimplicialComplex
•
star (complex, face) → SimplicialComplex

Produce the star of the face of the complex.

Parameters
 SimplicialComplex complex Set face
Options
 Bool labels creates VERTEX_LABELS.
Returns
 SimplicialComplex
•
star_deletion (complex, face) → SimplicialComplex

Remove the star of a given face.

Parameters
 SimplicialComplex complex Set face specified by vertex indices. Please use labeled_vertices if you want to specify the face by vertex labels.
Options
 Bool no_labels do not write vertex labels.
Returns
 SimplicialComplex
•
stellar_subdivision (complex, faces) → SimplicialComplex

Computes the complex obtained by stellar subdivision of the given faces of the complex.

Parameters
 SimplicialComplex complex Array> faces
Options
 Bool no_labels Bool geometric_realization default 0
Returns
 SimplicialComplex
•
stellar_subdivision (complex, face) → SimplicialComplex

Computes the complex obtained by stellar subdivision of the given face of the complex.

Parameters
 SimplicialComplex complex Set face
Options
 Bool no_labels Bool geometric_realization default 0
Returns
 SimplicialComplex
•
sum_triangulation (P, Q, WebOfStars) → GeometricSimplicialComplex

Produce a specific sum-triangulation of two given triangulations. and a WebOfStars. There are P-sum-triangulations and Q-sum-triangulations. If the image of the star of the origin of P is empty then we have a Q-sum-triangulation; otherwise it is a P-sum-triangulation. For details see Assarf, Joswig & Pfeifle: Webs of stars or how to triangulate sums of polytopes, to appear

Parameters
 GeometricSimplicialComplex P first complex GeometricSimplicialComplex Q second complex IncidenceMatrix WebOfStars Every row corresponds to a full dimensional simplex in P and every column to a full dimensional simplex in Q.
Options
 Bool origin_first decides if the origin should be the first point in the resulting complex. Default=0
Returns
 GeometricSimplicialComplex
•
suspension (complex, k) → SimplicialComplex

Produce the k-suspension over a given simplicial complex.

Parameters
 SimplicialComplex complex Int k default value is 1
Options
 Array labels for the apices. By default apices are labeled with `apex_0+`, `apex_0-`, `apex_1+`, etc. If one of the specified labels already exists, a unique one is made by appending `_i` where i is some small number. Bool nol do not produce any labels.
Returns
 SimplicialComplex
•
triang_neighborhood (complex, width)

Create a triangulated tubular neighborhood of a pure 2-complex. If the complex is a link with the property that each vertex and its two neighbours are in general position after projection to the x,y-plane, then one might specify a rational number width to tell the client to compute COORDINATES of the triangulated tubular neighborhood. If the width/ is chosen too large, the computed realization will be self intersecting. If each connected component of the link has an even number of facets, then the following holds: An edge of the resulting complex is contained in an odd number of facets iff it corresponds to one of the edges of the link.

Contained in extension `bundled:local`.
Parameters
 SimplicialComplex complex Rational width default: 0
•
union (complex1, complex2) → SimplicialComplex

Produce the union of the two given complexes, identifying vertices with equal labels.

Parameters
 SimplicialComplex complex1 SimplicialComplex complex2
Options
 Bool labels creates VERTEX_LABELS.
Returns
 SimplicialComplex
•
web_of_stars (poset_hom, star_shaped_balls, triang) → IncidenceMatrix

Produce a web of stars from two given triangulations and a map between them.

Parameters
 Array poset_hom the poset homomorphism from stabbing order to star-shaped balls Array>> star_shaped_balls the collection of star-shaped balls of T Array> triang the facets of the underlying triangulation of Q
Returns
 IncidenceMatrix WebOfStars Every row corresponds to a full dimensional simplex in P and every column to a full dimensional simplex in Q.
•

Producing a simplicial complex from other objects

These functions construct a new SimplicialComplex from other objects.

•
clique_complex (graph) → SimplicialComplex

Produce the clique complex of a given graph. If no_labels is set to 1, the labels are not copied.

Parameters
 Graph graph
Options
 Bool no_labels
Returns
 SimplicialComplex
•
independence_complex (matroid) → SimplicialComplex

Produce the independence complex of a given matroid. If no_labels is set to 1, the labels are not copied.

Parameters
 matroid::Matroid matroid
Options
 Bool no_labels
Returns
 SimplicialComplex
•

Producing from scratch

With these clients you can create special examples of simplicial complexes and complexes belonging to parameterized families.

•
ball (d) → GeometricSimplicialComplex

A d-dimensional ball, realized as the d-simplex.

Parameters
 Int d dimension
Returns
 GeometricSimplicialComplex
•
complex_projective_plane () → SimplicialComplex

The complex projective plane with the vertex-minimal triangulation by Kühnel and Brehm.

Returns
 SimplicialComplex
•
cube_complex ()

Produces a triangulated pile of hypercubes: Each cube is split into d! tetrahedra, and the tetrahedra are all grouped around one of the diagonal axes of the cube. DOC_FIXME args: x_1, ... , x_d

•
klein_bottle () → SimplicialComplex

The Klein bottle.

Returns
 SimplicialComplex
•
rand_knot (n_edges) → SimplicialComplex

Produce a random knot (or link) as a polygonal closed curve in 3-space. The knot (or each connected component of the link) has n_edges edges.

The vertices are uniformly distributed in [-1,1]3, unless the on_sphere option is set. In the latter case the vertices are uniformly distributed on the 3-sphere. Alternatively the brownian option produces a knot by connecting the ends of a simulated brownian motion.

Parameters
 Int n_edges
Options
 Int n_comp number of components, default is 1. Bool on_sphere Bool brownian Int seed
Returns
 SimplicialComplex
•
real_projective_plane () → SimplicialComplex

The real projective plane with its unique minimal triangulation on six vertices.

Returns
 SimplicialComplex
•
simplex (d) → SimplicialComplex

A simplex of dimension d.

Parameters
 Int d dimension
Returns
 SimplicialComplex
•
sphere (d) → GeometricSimplicialComplex

The d-dimensional sphere, realized as the boundary of the (d+1)-simplex.

Parameters
 Int d dimension
Returns
 GeometricSimplicialComplex
•
surface (g) → SimplicialComplex

Produce a surface of genus g. For g >= 0 the client produces an orientable surface, otherwise it produces a non-orientable one.

Parameters
 Int g genus
Returns
 SimplicialComplex
•
torus () → SimplicialComplex

The Császár Torus. Geometric realization by Frank Lutz, Electronic Geometry Model No. 2001.02.069

Returns
 SimplicialComplex
•
unknot (m, n) → GeometricSimplicialComplex

Produces a triangulated 3-sphere with the particularly NASTY embedding of the unknot in its 1-skeleton. The parameters m >= 2 and n >= 1 determine how entangled the unknot is. eps determines the COORDINATES.

Parameters
 Int m Int n
Options
 Rational eps
Returns
 GeometricSimplicialComplex
•

Producing other objects

Functions producing big objects which are not contained in application topaz.

•

Topology

The following functions compute topological invariants.

•
cap_product (complex)

Compute and print all cap products of cohomology and homology cycles.

Parameters
 SimplicialComplex complex
•
homology (complex, co)

Calculate the (co-)homology groups of a simplicial complex.

Parameters
 Array> complex Bool co set to true for cohomology
Options
 Int dim_low narrows the dimension range of interest, with negative values being treated as co-dimensions Int dim_high see dim_low
•
homology_and_cycles (complex, co)

Calculate the (co-)homology groups and cycle representatives of a simplicial complex.

Parameters
 Array> complex Bool co set to true for cohomology
Options
 Int dim_low narrows the dimension range of interest, with negative values being treated as co-dimensions Int dim_high see dim_low

Property Types

•

Topology

The following property_types are topological invariants.

•
CycleGroup <Scalar>

A group is encoded as a pair of an integer matrix and a vector of faces. The elements of the group can be obtained by symbolic multiplication of both.

Access methods: coeff delivers the integer matrix, faces the vector of faces.

Type Parameters
 Scalar integer type of matrix elements
•
HomologyGroup

A group is encoded as a sequence ( { (t1 m1) ... (tn mn) } f) of non-negative integers, with t1 > t2 > ... > tn > 1, plus an extra non-negative integer f.

The group is isomorphic to (Z/t1)m1 × ... × (Z/tn)mn × Zf, where Z0 is the trivial group.

Access methods: torsion delivers the list of Z-groups, betti_number the number f.

•
IntersectionForm

TODO: explain the meaning of the fields: parity, positive, negative