Abstract simplicial complexes provide a combinatorial way to define topological spaces. By no means every topological space arises in this way, but this is a (most) natural choice in a computational setup.
A simplicial complexK on a vertex set V is a nonempty subset of 2V such that for each σ∈K and τ⊂σ we have τ∈K. Here V is usually [n]={1,2,…,n} for some n≥0.
General textbooks offering details on the theory include:
Construct an abstract simplicial complex from a set of faces. While arbitrary non-negative integers are allowed as vertices, they will be relabeled to consecutive integers starting at 1.
Examples
julia> K = simplicial_complex([[1,2,3],[2,3,4]])
Abstract simplicial complex of dimension 2 on 4 vertices
julia> G = complete_bipartite_graph(2,3)
Undirected graph with 5 nodes and the following edges:
(3, 1)(3, 2)(4, 1)(4, 2)(5, 1)(5, 2)
julia> K = simplicial_complex(G)
Abstract simplicial complex of dimension 1 on 5 vertices
Simplicial complex comprising the empty set only:
julia> empty = simplicial_complex(Vector{Set{Int}}([]))
Abstract simplicial complex of dimension -1 on 0 vertices
Heuristically check if the abstract simplicial complex K is a combinatorial sphere; see [JLLT22]. Note that this is undecidable in general. Return true if recognized as a sphere. Return false if not a sphere. Return nothing if heuristics unsuccessful.
Examples
julia> K = simplicial_complex([[1,2,3],[2,3,4]]);
julia> is_sphere(K)
false
Heuristically check if the abstract simplicial complex K is a combinatorial ball; see [JLLT22]. Note that this is undecidable in general. Return true if recognized as a ball. Return false if not a ball. Return nothing if heuristics unsuccessful.
Examples
julia> K = simplicial_complex([[1,2,3],[2,3,4]]);
julia> is_ball(K)
true
Check if the abstract simplicial complex K is a combinatorial manifold, possibly with boundary. Note that this is undecidable in general. Return true if recognized as a manifold. Return false if not a manifold. Return nothing if heuristics unsuccessful.
Let K be a simplicial complex on n vertices. The minimal non-faces of K generate a square-free monomial ideal, known as the Stanley-Reisner ideal of K. The quotient of the polynomial ring (in n variables, with integer coefficients) modulo that ideal is the Stanley-Reisner ring. For details see Chapter 5 of [BH09].
Return the Stanley-Reisner ring of the abstract simplicial complex K.
Examples
julia> K = simplicial_complex([[1,2,3],[2,3,4]]);
julia> stanley_reisner_ring(K)
(Quotient of multivariate polynomial ring by ideal (x1*x4), Map: multivariate polynomial ring -> quotient of multivariate polynomial ring)
Compute the connected sum of two abstract simplicial complexes. Parameters f1 and f2 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 increasing index order).
Examples
julia> K = torus();
julia> surface_genus_2 = connected_sum(K, K)
Abstract simplicial complex of dimension 2 on 11 vertices
julia> homology(surface_genus_2, 1)
Z^4
julia> is_manifold(surface_genus_2)
true
Given a simplicial complex K return its automorphism group as a PermGroup. The group can be returned as a subgroup of the permutation group of the vertices by passing :on_vertices to the action keyword argument or on the facets by passing :on_facets.
Examples
julia> K = simplicial_complex([[1, 2, 3], [2, 3, 4]])
Abstract simplicial complex of dimension 2 on 4 vertices
julia> automorphism_group(K)
Permutation group of degree 4
Objects of type SimplicialComplex can be saved to a file and loaded with the two methods save and load. The file is in JSON format and contains the underlying polymake object. In particular, such a file can be read by both polymake and OSCAR.
Settings
This document was generated with Documenter.jl version 1.12.0 on Friday 6 June 2025. Using Julia version 1.10.9.