Simplicial complexes #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
In this file, we define simplicial complexes in π
-modules. A simplicial complex is a collection
of simplices closed by inclusion (of vertices) and intersection (of underlying sets).
We model them by a downward-closed set of affine independent finite sets whose convex hulls "glue nicely", each finite set and its convex hull corresponding respectively to the vertices and the underlying set of a simplex.
Main declarations #
simplicial_complex π E
: A simplicial complex in theπ
-moduleE
.simplicial_complex.vertices
: The zero dimensional faces of a simplicial complex.simplicial_complex.facets
: The maximal faces of a simplicial complex.
Notation #
s β K
means that s
is a face of K
.
K β€ L
means that the faces of K
are faces of L
.
Implementation notes #
"glue nicely" usually means that the intersection of two faces (as sets in the ambient space) is a
face. Given that we store the vertices, not the faces, this would be a bit awkward to spell.
Instead, simplicial_complex.inter_subset_convex_hull
is an equivalent condition which works on the
vertices.
TODO #
Simplicial complexes can be generalized to affine spaces once convex_hull
has been ported.
- faces : set (finset E)
- not_empty_mem : β β self.faces
- indep : β {s : finset E}, s β self.faces β affine_independent π coe
- down_closed : β {s t : finset E}, s β self.faces β t β s β t β β β t β self.faces
- inter_subset_convex_hull : β {s t : finset E}, s β self.faces β t β self.faces β β(convex_hull π) βs β© β(convex_hull π) βt β β(convex_hull π) (βs β© βt)
A simplicial complex in a π
-module is a collection of simplices which glue nicely together.
Note that the textbook meaning of "glue nicely" is given in
geometry.simplicial_complex.disjoint_or_exists_inter_eq_convex_hull
. It is mostly useless, as
geometry.simplicial_complex.convex_hull_inter_convex_hull
is enough for all purposes.
Instances for geometry.simplicial_complex
A finset
belongs to a simplicial_complex
if it's a face of it.
Equations
- geometry.simplicial_complex.has_mem = {mem := Ξ» (s : finset E) (K : geometry.simplicial_complex π E), s β K.faces}
The underlying space of a simplicial complex is the union of its faces.
The conclusion is the usual meaning of "glue nicely" in textbooks. It turns out to be quite
unusable, as it's about faces as sets in space rather than simplices. Further, additional structure
on π
means the only choice of u
is s β© t
(but it's hard to prove).
Construct a simplicial complex by removing the empty face for you.
Equations
- geometry.simplicial_complex.of_erase faces indep down_closed inter_subset_convex_hull = {faces := faces \ {β }, not_empty_mem := _, indep := _, down_closed := _, inter_subset_convex_hull := _}
Construct a simplicial complex as a subset of a given simplicial complex.
Equations
- K.of_subcomplex faces subset down_closed = {faces := faces, not_empty_mem := _, indep := _, down_closed := _, inter_subset_convex_hull := _}
Vertices #
The vertices of a simplicial complex are its zero dimensional faces.
A face is a subset of another one iff its vertices are.
Facets #
A facet of a simplicial complex is a maximal face.
The semilattice of simplicial complexes #
K β€ L
means that K.faces β L.faces
.
The complex consisting of only the faces present in both of its arguments.
Equations
- geometry.simplicial_complex.has_inf π E = {inf := Ξ» (K L : geometry.simplicial_complex π E), {faces := K.faces β© L.faces, not_empty_mem := _, indep := _, down_closed := _, inter_subset_convex_hull := _}}
Equations
- geometry.simplicial_complex.semilattice_inf π E = {inf := has_inf.inf (geometry.simplicial_complex.has_inf π E), le := partial_order.le (partial_order.lift geometry.simplicial_complex.faces _), lt := partial_order.lt (partial_order.lift geometry.simplicial_complex.faces _), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, inf_le_left := _, inf_le_right := _, le_inf := _}
Equations
- geometry.simplicial_complex.has_bot π E = {bot := {faces := β , not_empty_mem := _, indep := _, down_closed := _, inter_subset_convex_hull := _}}
Equations
- geometry.simplicial_complex.inhabited π E = {default := β₯}