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: group, ideal

Objects

User Functions

  •  

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

    •  
      n_poset_homomorphisms (P, Q) → Int

      Count all order preserving maps from one poset to another. They are in fact enumerated, but only the count is kept track of using constant memory.

      Parameters
      Graph<Directed>P
      Graph<Directed>Q
      Options
      Array<Int>prescribed_map
      A vector of length P.nodes() with those images in Q that should be fixed. Negative entries will be enumerated over.
      Returns
      Int
  •  

    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.

    •  
      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
      SimplicialComplexcomplex1
      SimplicialComplexcomplex2
      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
      SimplicialComplexcomplex1
      SimplicialComplexcomplex2
      Options
      Introunds
      Boolabs
      Intobj
      Intrelax
      Intheat
      Boolconstant
      Boolallow_rev_move
      Intmin_n_facets
      Intverbose
      Intseed
      Boolquiet
      Array<Int>distribution
      Returns
      Bool
  •  

    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<Set>FaceList
      Options
      Boolverbose
      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
      SimplicialComplexcomplex
      Array<Int>vertices
      shedding vertices
      Options
      Boolverbose
      Returns
      Bool
    •  
      mixed_graph (complex)

      Produces the mixed graph of a complex.

      Parameters
      SimplicialComplexcomplex
      Options
      Floatedge_weight
    •  
      persistent_homology <MatrixType> (F, i, p, k) → Pair<SparseMatrix<Coeff>, List< Pair<Coeff, SparseMatrix<Coeff> > > >

      Given a Filtration and three indices i,p and k, this computes the p-persistent k-th homology group of the i-th frame of the filtration for coefficients from any PID. Returns a basis for the free part and a list of torsion coefficients with bases.

      Type Parameters
      MatrixType
      type of boundary matrices
      Parameters
      Filtration<MatrixType>F
      Inti
      the filtration frame
      Intp
      the number of frames to consider
      Intk
      the dimension in which to compute
      Returns
      Pair<SparseMatrix<Coeff>, List< Pair<Coeff, SparseMatrix<Coeff> > > >
    •  
      persistent_homology <MatrixType> (F) → Array<List<Pair<int, int> > >

      Given a Filtration, this computes its persistence barcodes in all dimension, using the algorithm described in the 2005 paper 'Computing Persistent Homology' by Afra Zomorodian and Gunnar Carlsson. It only works for field coefficients.

      Type Parameters
      MatrixType
      type of the boundary matrices
      Parameters
      Filtration<MatrixType>F
      Returns
      Array<List<Pair<int, int> > >
    •  
      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<T>P
      Returns
      Graph<Directed>
    •  
      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
      SimplicialComplexcomplex
      Options
      Introunds
      Run for r rounds
      Intseed
      Set seed number for random number generator
      Intstrategy
      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
      Intverbose
      v Prints message after running every v rounds
      Array<Int>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<Int>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
      Stringsave_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>, 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

    •  
      stanley_reisner (complex) → ideal::Ideal

      Creates the Stanley-Reisner ideal of a simplicial complex.

      Parameters
      SimplicialComplexcomplex
      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

    •  
      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

    •  
      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<Set<Int>>facets
      the facets of the simplicial complex
      Options
      Inthigh_dim
      Intlow_dim
      Boolverbose
      Returns
      Array<PowerSet<Int>>
    •  
      vietoris_rips_filtration <Coeff> (D, deg, step_size, k) → Filtration<SparseMatrix<Coeff, NonSymmetric> >

      Constructs the k-skeleton of the Vietrois Rips filtration of a point set. The set is passed as its so-called "distance matrix", whose (i,j)-entry is the distance between point i and j. This matrix can e.g. be computed using the distance_matrix function. The other inputs are an integer array containing the degree of each point, the desired distance step size between frames, and the dimension up to which to compute the skeleton. Redundant points will appear as seperate vertices of the complex. Setting k to |S| will compute the entire VR-Complex for each frame.

      Type Parameters
      Coeff
      desired coefficient type of the filtration
      Parameters
      MatrixD
      the "distance matrix" of the point set (can be upper triangular)
      Array<Int>deg
      the degrees of input points
      Floatstep_size
      Intk
      dimension of the resulting filtration
      Returns
      Filtration<SparseMatrix<Coeff, NonSymmetric> >
  •  

    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 no_labels flag is specified.

      Parameters
      SimplicialComplexcomplex
      Options
      Boolno_labels
      Do not create VERTEX_LABELS. default: 0
      Returns
      SimplicialComplex
    •  
      barycentric_subdivision (complex) → SimplicialComplex

      Computes the barycentric subdivision of complex.

      Parameters
      SimplicialComplexcomplex
      Options
      Stringpin_hasse_section
      default: HASSE_DIAGRAM
      Stringlabel_section
      default: VERTEX_LABELS
      Stringcoord_section
      default: VERTICES
      Boolgeometric_realization
      set to 1 to obtain a GeometricSimplicialComplex, default: 0
      Returns
      SimplicialComplex

      Example:
      • To subdivide a triangle into six new triangles, do this:> $b = barycentric_subdivision(simplex(2));
    •  
      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
      SimplicialComplexcomplex
      Options
      Introunds
      Boolabs
      Intobj
      Intrelax
      Intheat
      Boolconstant
      Boolallow_rev_move
      Intmin_n_facets
      Intverbose
      Intseed
      Boolquiet
      Array<Int>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.

      Parameters
      polytope::PolytopeP
      the underlying polytope
      SimplicialComplexcomplex
      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 local.
      Parameters
      SimplicialComplexcomplex
      Options
      Boolno_lables
      Returns
      SimplicialComplex
    •  
      cone (complex, k) → SimplicialComplex

      Produce the k-cone over a given simplicial complex.

      Parameters
      SimplicialComplexcomplex
      Intk
      default is 1
      Options
      Array<String>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.
      Boolno_labels
      Do not create VERTEX_LABELS. default: 0
      Returns
      SimplicialComplex

      Example:
      • The following creates the cone with two apices over the triangle, with custom apex labels. The resulting complex is the 4-simplex.> $c = cone(simplex(2),2,apex_labels=>['foo','bar']);> print $c->FACETS; {0 1 2 3 4}> print $c->VERTEX_LABELS; 0 1 2 foo bar
    •  
      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 glueing facet iteself is not included in the connected sum. 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
      SimplicialComplexcomplex1
      SimplicialComplexcomplex2
      Intf1
      default: 0
      Intf2
      default: 0
      Options
      Array<Int>permutation
      Boolno_labels
      Returns
      SimplicialComplex

      Example:
      • Glueing together two tori to make a genus 2 double torus, rotating the second one clockwise:> $cs = connected_sum(torus(),torus(),permutation=>[1,2,0]);> print $cs->SURFACE.','.$cs->GENUS; 1,2
    •  
      covering_relations (P) → Graph<Directed>

      Construct the covering relations of a poset

    •  
      deletion (complex, face) → SimplicialComplex

      Remove the given face and all the faces containing it.

      Parameters
      SimplicialComplexcomplex
      Set<Int>face
      specified by vertex indices. Please use labeled_vertices if you want to specify the face by vertex labels.
      Options
      Boolno_labels
      Do not create VERTEX_LABELS. default: 0
      Returns
      SimplicialComplex
    •  
      disjoint_union (complex1, complex2) → SimplicialComplex

      Produce the disjoint union of the two given complexes.

      Parameters
      SimplicialComplexcomplex1
      SimplicialComplexcomplex2
      Options
      Boolno_labels
      Do not create VERTEX_LABELS. default: 0 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
      SimplicialComplexcomplex
      Options
      Intseed
      Returns
      SimplicialComplex
    •  
      foldable_prism (complex) → GeometricSimplicialComplex

      Produce a prism over a given SimplicialComplex.

      Parameters
      GeometricSimplicialComplexcomplex
      Options
      Boolgeometric_realization
      Returns
      GeometricSimplicialComplex
    •  
      hom_poset (P, Q) → Graph<Directed>

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

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

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

    •  
      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
      SimplicialComplexC
      Set<Int>vertices
      Options
      Boolno_labels
      Do not create VERTEX_LABELS. default: 0
      Stringapex
      Returns
      SimplicialComplex
    •  
      induced_subcomplex (complex, vertices) → SimplicialComplex

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

      Parameters
      SimplicialComplexcomplex
      Set<Int>vertices
      Options
      Boolno_labels
      Do not create VERTEX_LABELS. default: 0
      Boolgeom_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
      SimplicialComplexcomplex
      Intk
      Options
      Stringpin_hasse_section
      default: HASSE_DIAGRAM
      Stringlabel_section
      default: VERTEX_LABELS
      Stringcoord_section
      default: VERTICES
      Boolgeometric_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
      SimplicialComplexcomplex1
      SimplicialComplexcomplex2
      Options
      Boolno_labels
      Do not create VERTEX_LABELS. default: 0 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
      SimplicialComplexcomplex
      Intk
      Options
      Boolno_labels
      Do not create VERTEX_LABELS. default: 0
      Returns
      SimplicialComplex
    •  
      k_skeleton (complex, k) → GeometricSimplicialComplex

      Produce the k-skeleton.

      Parameters
      GeometricSimplicialComplexcomplex
      Intk
      Options
      Boolno_labels
      Do not create VERTEX_LABELS. default: 0
      Returns
      GeometricSimplicialComplex
    • link_complex (complex, face) → SimplicialComplex
    •  
      poset_homomorphisms (P, Q) → Array<Array<Int>>

      Enumerate all order preserving maps from one poset to another

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

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

      Parameters
      SimplicialComplexcomplex1
      SimplicialComplexcomplex2
      Options
      Array<Int>vertex_order1
      Array<Int>vertex_order2
      Boolgeometric_realization
      default 0
      Boolcolor_cons
      Boolno_labels
      Do not create VERTEX_LABELS. default: 0
      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
      GeometricSimplicialComplexcomplex1
      GeometricSimplicialComplexcomplex2
      Options
      Array<Int>vertex_order1
      Array<Int>vertex_order2
      Boolgeometric_realization
      default 1
      Boolcolor_cons
      Boolno_labels
      Do not create VERTEX_LABELS. default: 0
      Returns
      GeometricSimplicialComplex<Scalar>
    •  
      star (complex, face) → SimplicialComplex

      Produce the star of the face of the complex.

      Parameters
      SimplicialComplexcomplex
      Set<int>face
      Options
      Boolno_labels
      Do not create VERTEX_LABELS. default: 0
      Returns
      SimplicialComplex
    •  
      star_deletion (complex, face) → SimplicialComplex

      Remove the star of a given face.

      Parameters
      SimplicialComplexcomplex
      Set<Int>face
      specified by vertex indices. Please use labeled_vertices if you want to specify the face by vertex labels.
      Options
      Boolno_labels
      Do not create VERTEX_LABELS. default: 0
      Returns
      SimplicialComplex
    •  
      stellar_subdivision (complex, faces) → SimplicialComplex

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

      Parameters
      SimplicialComplexcomplex
      Array<Set<Int>>faces
      Options
      Boolno_labels
      Do not create VERTEX_LABELS. default: 0
      Boolgeometric_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
      SimplicialComplexcomplex
      Set<Int>face
      Options
      Boolno_labels
      Do not create VERTEX_LABELS. default: 0
      Boolgeometric_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
      GeometricSimplicialComplexP
      first complex
      GeometricSimplicialComplexQ
      second complex
      IncidenceMatrixWebOfStars
      Every row corresponds to a full dimensional simplex in P and every column to a full dimensional simplex in Q.
      Options
      Boolorigin_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
      SimplicialComplexcomplex
      Intk
      default value is 1
      Options
      Array<String>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.
      Boolno_labels
      Do not create VERTEX_LABELS. default: 0
      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 local.
      Parameters
      SimplicialComplexcomplex
      Rationalwidth
      default: 0
    •  
      union (complex1, complex2) → SimplicialComplex

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

      Parameters
      SimplicialComplexcomplex1
      SimplicialComplexcomplex2
      Options
      Boolno_labels
      Do not create VERTEX_LABELS. default: 0
      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<Int>poset_hom
      the poset homomorphism from stabbing order to star-shaped balls
      Array<Set<Set<Int>>>star_shaped_balls
      the collection of star-shaped balls of T
      Array<Set<Int>>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.
  •  

    These functions construct a new SimplicialComplex from other objects.

    •  
      clique_complex (graph) → SimplicialComplex

      Produce the clique complex of a given graph, that is, the simplicial complex that has an n-dimensional facet for each n+1-clique. If no_labels is set to 1, the labels are not copied.

      Parameters
      Graphgraph
      Options
      Boolno_labels
      Do not create VERTEX_LABELS. default: 0
      Returns
      SimplicialComplex

      Example:
      • Create the clique complex of a simple graph with one 3-clique and one 2-clique, not creating labels.> $g = graph_from_edges([[0,1],[0,2],[1,2],[2,3]]);> $c = clique_complex($g,no_labels=>1);> print $c->FACETS; {0 1 2} {2 3}
    •  
      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::Matroidmatroid
      Options
      Boolno_labels
      Do not create VERTEX_LABELS. default: 0
      Returns
      SimplicialComplex
    •  
      vietoris_rips_complex (D, delta) → SimplicialComplex

      Computes the Vietoris Rips complex of a point set. The set is passed as its so-called "distance matrix", whose (i,j)-entry is the distance between point i and j. This matrix can e.g. be computed using the distance_matrix function. The points corresponding to vertices of a common simplex will all have a distance less than delta from each other.

      Parameters
      MatrixD
      the "distance matrix" of the point set (can be upper triangular)
      Rationaldelta
      Returns
      SimplicialComplex
  •  

    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
      Intd
      dimension
      Returns
      GeometricSimplicialComplex

      Example:
      • The following produces the 3-ball and stores it in the variable $b:> $b = ball(3); You can print the facets of the resulting simplicial complex like so:> print $b->FACETS; {0 1 2 3}
    •  
      complex_projective_plane () → SimplicialComplex

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


      Example:
      • Construct the complex projective plane, store it in the variable $p2c, and print its homology group.> $p2c = complex_projective_plane();> print $p2c->HOMOLOGY; ({} 0) ({} 0) ({} 1) ({} 0) ({} 1)
    •  
      cube_complex (x_1) → GeometricSimplicialComplex<Rational>

      Produces a triangulated pile of hypercubes, arranged in a d-dimensional array. Each cube is split into d! tetrahedra, and the tetrahedra are all grouped around one of the diagonal axes of the cube.

      Parameters
      Intx_1
      ,...,x_d specifying the shape of the pile: d is the dimension of the cubes to be stacked, and the stack will be x_1 by x_2 by ... by x_d cubes.
      Returns
      GeometricSimplicialComplex<Rational>

      Example:
      • Arrange four triangulated 3-cubes to form a big 2 by 2 cube:> $cc = cube_complex(2,2,2);> print $cc->description; 2x2x2 Pile of 3-dimensional triangulated cubes.
    •  
      klein_bottle () → SimplicialComplex

      The Klein bottle.

    •  
      multi_associahedron_sphere (n, k) → SimplicialComplex

      Produce the simplicial sphere //Δ(n,k) of (k+1)-crossing free multitriangulations of an n-gon P, along with the group action on the diagonals induced from D_{2n}. Δ(n,k) is the simplicial complex on the set of relevant diagonals of P whose faces are those sets of diagonals such that no k+1 of them mutually cross. A diagonal is relevant if it leaves k or more vertices of P on both sides. (Any diagonal having less than k vertices on one side trivially cannot participate in a (k+1)-crossing, so is irrelevant. The corresponding complex on all// diagonals is therefore the simplicial join of this one with the simplex of irrelevant diagonals.)

      Jakob Jonsson, "Generalized triangulations and diagonal-free subsets of stack polyominoes",
      J. Combin. Theory Ser. A, 112(1):117–142, 2005

      Delta(n,k) is known to be a k-neighborly vertex-decomposable sphere of dimension kν-1, where the parameter ν=n-2k-1 measures the complexity of this construction. For ν=0, the complex is a point; for ν=1 a k-simplex; for ν=2 the boundary of a cyclic polytope. Setting k=1 yields the boundary of the simplicial associahedron. The list of (k+1)-crossings in the n-gon is included as the attachment K_PLUS_1_CROSSINGS. It can also be obtained as the property MINIMAL_NON_FACES, but this requires the HASSE_DIAGRAM to be computed.

      Parameters
      Intn
      the number of vertices of the polygon
      Intk
      the number of diagonals that are allowed to mutually cross
      Options
      Boolno_facets
      don't calculate the facets (for large examples)? Default 0
      Boolno_crossings
      don't calculate the crossings? Default 0
      Returns
      SimplicialComplex

      Examples:
      • The f-vector of Δ(9,3) is that of a neighborly polytope, since ν=2:> print multi_associahedron_sphere(9,3)->F_VECTOR; 9 36 84 117 90 30
      • The option no_facets=>1 still leaves useful information:> $s = multi_associahedron_sphere(8,2, no_facets=>1);> print $s->VERTEX_LABELS; (0 3) (1 4) (2 5) (3 6) (4 7) (0 5) (1 6) (2 7) (0 4) (1 5) (2 6) (3 7)> print $s->GROUP->PERMUTATION_ACTION->GENERATORS; 7 0 1 2 3 4 5 6 11 8 9 10 4 3 2 1 0 7 6 5 11 10 9 8> print $s->get_attachment("K_PLUS_1_CROSSINGS")->size(); 28
    •  
      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
      Intn_edges
      Options
      Intn_comp
      number of components, default is 1.
      Boolon_sphere
      Boolbrownian
      Intseed
      Returns
      SimplicialComplex
    •  
      real_projective_plane () → SimplicialComplex

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

    •  
      simplex (d) → SimplicialComplex

      A simplex of dimension d.

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

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

      Parameters
      Intd
      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
      Intg
      genus
      Returns
      SimplicialComplex
    •  
      torus () → SimplicialComplex

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

    •  
      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
      Intm
      Intn
      Options
      Rationaleps
      Returns
      GeometricSimplicialComplex
  •  

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

  •  

    The following functions compute topological invariants.

    •  
      betti_numbers <Coeff> (C) → Array<Int>

      Calculate the betti numbers of a general chain complex over a field.

      Type Parameters
      Coeff
      The coefficient field type for homology computation. Defaults to Rational
      Parameters
      ChainComplexC
      Returns
      Array<Int>
      containing the i-th betti number at entry i

      Example:
      • The following constructs a simple chain complex with only one non-empty differential:> $cc = new ChainComplex(new Array<SparseMatrix<Integer>>([[[2,0]]])); You can print its betti numbers like this:> print betti_numbers($cc); 1 0
    •  
      betti_numbers <Coeff> (S) → Array<Int>

      Calculate the reduced betti numbers of a simplicial complex over a field.

      Type Parameters
      Coeff
      The coefficient field type for homology computation. Defaults to Rational
      Parameters
      SimplicialComplexS
      Returns
      Array<Int>
      containing the i-th betti number at entry i

      Example:
      • To print the betti numbers for the torus, do this:> $t = torus();> print betti_numbers($t); 0 2 1
    •  
      cap_product (cocycles, cycles) → Pair<CycleGroup<E>,Map<Pair<Int,Int>,Int>>

      Compute all cap products of cohomology and homology cycles in two given groups.


      Example:
      • The following stores all cap products of the cocycles and cycles of the homology group of the oriented surface of genus 1 in the variable $cp.> $s = surface(1);> $cp = cap_product($s->COCYCLES->[1],$s->CYCLES->[1]);
    •  
      homology (complex, co)

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

      Parameters
      Array<Set<int>>complex
      Boolco
      set to true for cohomology
      Options
      Intdim_low
      narrows the dimension range of interest, with negative values being treated as co-dimensions
      Intdim_high
      see dim_low
    •  
      homology (CC, co) → Array<HomologyGroup<Integer>>

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

      Parameters
      ChainComplexCC
      The chain complex for which to compute homology.
      Boolco
      set to true for cohomology
      Options
      Intdim_low
      narrows the dimension range of interest, with negative values being treated as co-dimensions
      Intdim_high
      see dim_low
      Returns
      Array<HomologyGroup<Integer>>

      Example:
      • To construct a small chain complex with only one non-zero differential:> $cc = new ChainComplex(new Array<SparseMatrix<Integer>>([[[2,0]]])); This prints its homology groups.> print homology($cc,0); ({(2 1)} 1) ({} 0) The output means that the zeroth homology group has 2-torsion with multiplicity one, and betti number one. The first homology group is empty.
    •  
      homology_and_cycles (complex, co)

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

      Parameters
      Array<Set<int>>complex
      Boolco
      set to true for cohomology
      Options
      Intdim_low
      narrows the dimension range of interest, with negative values being treated as co-dimensions
      Intdim_high
      see dim_low
    •  
      homology_and_cycles (CC, co) → Array<Pair<HomologyGroup, SparseMatrix>>

      Calculate the (co-)homology groups and __cycle coefficient matrices_ of a chain complex.

      Parameters
      ChainComplex<SparseMatrix<Integer>>CC
      The chain complex for which to compute homology.
      Boolco
      set to true for cohomology
      Options
      Intdim_low
      narrows the dimension range of interest, with negative values being treated as co-dimensions
      Intdim_high
      see dim_low
      Returns
      Array<Pair<HomologyGroup, SparseMatrix>>
      For each dimension, contains the homology group and corresponding cycle group coefficient matrix where each row of the matrix represents a generator, column indices referring to indices of the chain group elements involved.

      Example:
      • To construct a small chain complex with only one non-zero differential:> $cc = new ChainComplex(new Array<SparseMatrix<Integer>>([[[2,0]]])); This prints its homology groups and corresponding generators.> print homology_and_cycles($cc,0); (({(2 1)} 1) <1 0 0 1 > ) (({} 0) <> ) The output means that the zeroth homology group has 2-torsion with multiplicity one generated by the first elemen of the chain group, and free part of rank one generated by the second element. The first homology group is empty.

Property Types

  •  

    The following property_types are topological invariants.

    •  
      Cell
      UNDOCUMENTED
    •  
      ChainComplex <MatrixType>

      A finite chain complex, represented as its boundary matrices. Check out the tutorial on the polymake homepage for examples on constructing ChainComplexes and computing their homology.

      Type Parameters
      MatrixType
      The type of the differential matrices. default: SparseMatrix<Integer>

      User Methods of ChainComplex

      •  
        boundary_matrix (d) → MatrixType

        Returns the d-boundary matrix of the chain complex.

        Parameters
        Intd
        Returns
        MatrixType
      •  
        dim () → Int

        Returns the number of non-empty modules in the complex.

        Returns
        Int
    •  
      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
    •  
      Filtration <MatrixType>

      A filtration of chain complexes.

      Type Parameters
      MatrixType

      User Methods of Filtration

      •  
        boundary_matrix (d, t)

        Returns the d-boundary matrix of the t-th frame of the filtration.

        Parameters
        Intd
        Intt
      •  
        cells () → Array<Cell>

        Returns the cells of the filtration, given as array of 3-tuples containing degree, dimension and boundary matrix row number of the cell.

      •  
        dim () → Int

        Returns the dimension of the maximal cells in the last frame of the filtration.

        Returns
        Int
      •  
        n_cells () → Int

        Returns the number of cells in the last frame of the filtration.

        Returns
        Int
      •  
        n_frames () → Int

        Returns the number of frames in of the filtration.

        Returns
        Int
    •  
      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

      Parity and signature of the intersection form of a closed oriented 4k-manifold. See INTERSECTION_FORM.