Skip to content

feat(Analysis/Convex/SimplicialComplex): add AbstractSimplicialComplex + constructions#33364

Open
BoltonBailey wants to merge 51 commits intoleanprover-community:masterfrom
BoltonBailey:affineIndependent-simplicial-complex
Open

feat(Analysis/Convex/SimplicialComplex): add AbstractSimplicialComplex + constructions#33364
BoltonBailey wants to merge 51 commits intoleanprover-community:masterfrom
BoltonBailey:affineIndependent-simplicial-complex

Conversation

@BoltonBailey
Copy link
Collaborator

@BoltonBailey BoltonBailey commented Dec 29, 2025

This adds the concept of abstract simplicial complex (and refactors SimplicialComplex in terms of it).

It also adds constructions that makes it easy to define a simplicial complex for any index family of points which is downward closed and which is affinely independent. I also include a construction of (abstract and geometric) simplicial complexes associated with a SimpleGraph, where vertices become 0-faces and edges become 1-faces, which could be useful later in defining the topological notion of a graph embedding.

Co-authored-by: Claude Opus 4.5


Open in Gitpod

@github-actions github-actions bot added t-analysis Analysis (normed *, calculus) large-import Automatically added label for PRs with a significant increase in transitive imports labels Dec 29, 2025
@github-actions
Copy link

github-actions bot commented Dec 29, 2025

PR summary 738faa5527

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference
Mathlib.Analysis.Convex.SimplicialComplex.Basic 1
Mathlib.AlgebraicTopology.SimplicialComplex.Basic (new file) 1056
Mathlib.Analysis.Convex.SimplicialComplex.AffineIndependentUnion (new file) 1133

Declarations diff

+ AbstractSimplicialComplex
+ LinearIndependent.affineIndependent
+ PreAbstractSimplicialComplex
+ PreAbstractSimplicialComplex.toAbstractSimplicialComplex
+ PreAbstractSimplicialComplex.toAbstractSimplicialComplex_union_singleton
+ instance : Bot (AbstractSimplicialComplex ι)
+ instance : Bot (PreAbstractSimplicialComplex ι)
+ instance : CompleteLattice (AbstractSimplicialComplex ι)
+ instance : CompleteLattice (PreAbstractSimplicialComplex ι)
+ instance : CompleteSemilatticeInf (AbstractSimplicialComplex ι)
+ instance : CompleteSemilatticeInf (PreAbstractSimplicialComplex ι)
+ instance : CompleteSemilatticeSup (AbstractSimplicialComplex ι)
+ instance : CompleteSemilatticeSup (PreAbstractSimplicialComplex ι)
+ instance : InfSet (AbstractSimplicialComplex ι)
+ instance : InfSet (PreAbstractSimplicialComplex ι)
+ instance : LE (AbstractSimplicialComplex ι)
+ instance : LE (PreAbstractSimplicialComplex ι)
+ instance : LT (AbstractSimplicialComplex ι)
+ instance : LT (PreAbstractSimplicialComplex ι)
+ instance : Max (AbstractSimplicialComplex ι)
+ instance : Max (PreAbstractSimplicialComplex ι)
+ instance : Min (AbstractSimplicialComplex ι)
+ instance : Min (PreAbstractSimplicialComplex ι)
+ instance : PartialOrder (AbstractSimplicialComplex ι)
+ instance : PartialOrder (PreAbstractSimplicialComplex ι)
+ instance : SetLike (AbstractSimplicialComplex ι) (Finset ι)
+ instance : SetLike (PreAbstractSimplicialComplex ι) (Finset ι)
+ instance : SupSet (AbstractSimplicialComplex ι)
+ instance : SupSet (PreAbstractSimplicialComplex ι)
+ instance : Top (AbstractSimplicialComplex ι)
+ instance : Top (PreAbstractSimplicialComplex ι)
+ map
+ ofAffineIndependent
+ onFinsupp
+ toFinset_ne_empty
+ toPreAbstractSimplicialComplex_injective
+ toPreAbstractSimplicialComplex_le_iff
+ toPreAbstractSimplicialComplex_lt_iff
+ top_toPreAbstractSimplicialComplex
++ ofSimpleGraph

You can run this locally as follows
## summary with just the declaration names:
./scripts/declarations_diff.sh <optional_commit>

## more verbose report:
./scripts/declarations_diff.sh long <optional_commit>

The doc-module for scripts/declarations_diff.sh contains some details about this script.


No changes to technical debt.

You can run this locally as

./scripts/technical-debt-metrics.sh pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

@BoltonBailey BoltonBailey added the WIP Work in progress label Dec 29, 2025
@github-actions github-actions bot removed the large-import Automatically added label for PRs with a significant increase in transitive imports label Dec 29, 2025
@BoltonBailey BoltonBailey added awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. and removed WIP Work in progress labels Dec 29, 2025
@BoltonBailey BoltonBailey added the WIP Work in progress label Dec 29, 2025
@github-actions github-actions bot removed the awaiting-CI This PR does not pass CI yet. This label is automatically removed once it does. label Dec 29, 2025
@BoltonBailey BoltonBailey removed the WIP Work in progress label Dec 29, 2025
@BoltonBailey BoltonBailey added the WIP Work in progress label Dec 29, 2025
@github-actions github-actions bot added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Dec 29, 2025
@github-actions github-actions bot removed the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Dec 30, 2025
@BoltonBailey BoltonBailey changed the title feat(Analysis/Convex/SimplicialComplex): add constructions when union is affinely independent feat(Analysis/Convex/SimplicialComplex): add AbstractSimplicialComplex + constructions Dec 30, 2025
@BoltonBailey BoltonBailey added WIP Work in progress and removed WIP Work in progress awaiting-author A reviewer has asked the author a question or requested changes. labels Feb 11, 2026
@BoltonBailey
Copy link
Collaborator Author

Here's a thread to discuss the definition change possibility, other than that, I am fine with this either awaiting that or going ahead on its own and letting the refactor happen later
#mathlib4 > Definition of Simplicial Complex

@BoltonBailey BoltonBailey added awaiting-zulip There is a Zulip discussion; the author should await and report/implement the decision reached there and removed WIP Work in progress labels Feb 11, 2026
@mathlib-dependent-issues mathlib-dependent-issues bot added blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) and removed blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) labels Feb 13, 2026
@mathlib-dependent-issues
Copy link

This PR/issue depends on:

@mathlib-merge-conflicts
Copy link

This pull request has conflicts, please merge master and resolve them.

@mathlib-merge-conflicts mathlib-merge-conflicts bot added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Feb 13, 2026
@github-actions github-actions bot removed the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Feb 13, 2026
@BoltonBailey
Copy link
Collaborator Author

Ok, I changed it to use IsRelLowerSet, the predicate not the structure, so that the field is still named faces rather than carrier, which seems appropriate to me, let me know if I should do something different.

@BoltonBailey BoltonBailey removed the awaiting-zulip There is a Zulip discussion; the author should await and report/implement the decision reached there label Feb 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

t-algebraic-topology Algebraic topology t-analysis Analysis (normed *, calculus)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants