Skip to content

feat(AlgebraicTopology): homology in degree 0#37630

Open
joelriou wants to merge 21 commits intoleanprover-community:masterfrom
joelriou:sset-homology-zero
Open

feat(AlgebraicTopology): homology in degree 0#37630
joelriou wants to merge 21 commits intoleanprover-community:masterfrom
joelriou:sset-homology-zero

Conversation

@joelriou
Copy link
Copy Markdown
Contributor

@joelriou joelriou commented Apr 4, 2026

In this PR, we compute the singular homology of a topological space in degree 0 in terms of its path connected components. This follows from a similar result for the homology of simplicial sets.

This is a rough draft.


Open in Gitpod

@joelriou joelriou added WIP Work in progress t-algebraic-topology Algebraic topology labels Apr 4, 2026
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 4, 2026

PR summary 35bf175a46

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference
5 files Mathlib.Algebra.Category.ModuleCat.Sheaf.Free Mathlib.Algebra.Category.ModuleCat.Sheaf.Generators Mathlib.Algebra.Category.ModuleCat.Sheaf.PullbackFree Mathlib.Algebra.Category.ModuleCat.Sheaf.Quasicoherent Mathlib.AlgebraicGeometry.Modules.Tilde
1
Mathlib.CategoryTheory.Limits.Preserves.SigmaConst (new file) 449
Mathlib.AlgebraicTopology.SimplicialSet.Nonempty (new file) 908
Mathlib.AlgebraicTopology.SimplicialSet.PiZero (new file) 912
Mathlib.AlgebraicTopology.SingularHomology.HomologyZero (new file) 1710

Declarations diff

+ Homeomorph.continousMap
+ IsConnected
+ IsPreconnected
+ Nonempty
+ Path
+ TopCat.stdSimplexHomeomorphI_symm_one
+ TopCat.stdSimplexHomeomorphI_symm_zero
+ TopCat.stdSimplexHomeomorphI_vertex_one
+ TopCat.stdSimplexHomeomorphI_vertex_zero
+ coforkπ₀
+ coforkπ₀Functor
+ evaluation
+ freeFunctorIsoSigmaConstObj
+ homology
+ instance (T : Type u) [Preorder T] [Nonempty T] : (nerve T).Nonempty
+ instance (n : SimplexCategory) : (stdSimplex.obj n).Nonempty
+ instance (n : SimplexCategoryᵒᵖ) [X.Nonempty] : Nonempty (X.obj n)
+ instance : Unique (stdSimplex ℝ (Fin (⦋0⦌.len + 1)))
+ instance [PathConnectedSpace X] : (toSSet.obj X).IsConnected := by
+ instance [PathConnectedSpace X] : IsIso (X.singularHomology₀ε R)
+ instance [PathConnectedSpace X] : Nonempty (ZerothHomotopy X)
+ instance [PathConnectedSpace X] : Subsingleton (ZerothHomotopy X)
+ instance [X.IsConnected] : IsIso (X.singularHomology₀ε R) := by
+ instance [X.IsConnected] : Nonempty (π₀ X) := ⟨π₀.mk (Classical.arbitrary _)⟩
+ instance [X.Nonempty] : Nonempty X.N := ⟨N.mk (n := 0) (Classical.arbitrary _) (by simp)⟩
+ instance [X.Nonempty] : Nonempty X.S := ⟨S.mk (dim := 0) (Classical.arbitrary _)⟩
+ instance {C : Type u} [Category.{v} C] [HasCoproducts.{w} C] (R : C) :
+ isColimitCoforkπ₀
+ isColimitCoforkπ₀Functor
+ isColimitCokernelCoforkSingularChainComplexDOneZero
+ isColimitSingularChainComplexXCofan
+ isConnected_iff
+ isConnected_iff_nonempty_unique
+ isInitialOfNotNonempty
+ mapπ₀
+ mapπ₀_comp_apply
+ mapπ₀_id_apply
+ mapπ₀_mk
+ mk_eq_mk_iff
+ nonempty_of_hom
+ notNonempty_iff_hasDimensionLT_zero
+ pathEquiv
+ singularChainComplex
+ singularChainComplexXCofan
+ singularChainComplex_hom_ext
+ singularHomologyData
+ singularHomology₀Iso_sigma_desc_id
+ toSSetObjEdgeEquiv
+ toSSetObjEdgeEquiv'
+ toSSetObjEquiv_naturality_apply
+ toSSetObjEquiv_symm_naturality
+ toSSetObjEquiv_δ_apply
+ toSSetObj₁Equiv
+ toSSetObj₁Equiv_apply_one
+ toSSetObj₁Equiv_apply_zero
+ toπ₀NatTrans
+ zerothHomotopyEquiv
+ δ_one_toSSetObj₁Equiv.symm
+ δ_zero_toSSetObj₁Equiv.symm
+ ιSingularChainComplex
+ ιSingularChainComplex_d
+ π₀
+ π₀.comp_fromSingularChainComplexXZero
+ π₀.d_fromSingularChainComplexXZero
+ π₀.fromSingularChainComplexXZero
+ π₀.nonempty_iff
+ π₀Functor
+ π₀Rel
++ lift
++ lift_mk
++ mk
++ mk_surjective
++ rec
++ singularHomology₀Iso
++ singularHomology₀ε
++ sound

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

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

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


Increase in tech debt: (relative, absolute) = (10.00, 0.00)
Current number Change Type
6926 10 backward.isDefEq.respectTransparency

Current commit 6c2c941c7a
Reference commit 35bf175a46

You can run this locally as

./scripts/reporting/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).

@mathlib-dependent-issues mathlib-dependent-issues bot added the blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) label Apr 4, 2026
@mathlib-dependent-issues
Copy link
Copy Markdown

mathlib-dependent-issues bot commented Apr 4, 2026

@github-actions github-actions bot added the large-import Automatically added label for PRs with a significant increase in transitive imports label Apr 4, 2026
@github-actions github-actions bot removed the large-import Automatically added label for PRs with a significant increase in transitive imports label Apr 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) t-algebraic-topology Algebraic topology WIP Work in progress

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant