Skip to content

feat(Algebra/Homology): the homology functor is accessible - #43980

Open
joelriou wants to merge 13 commits into
leanprover-community:masterfrom
joelriou:homology-accessible
Open

joelriou wants to merge 13 commits into
leanprover-community:masterfrom
joelriou:homology-accessible

Conversation

@joelriou

@joelriou joelriou commented Sep 19, 2026

Copy link
Copy Markdown
Contributor

If C is a Grothendieck abelian category, we show that the homology functors (from the categories of short complexes or homological complexes in C) preserve filtered colimits.


Open in Gitpod

@joelriou joelriou added WIP Work in progress t-category-theory Category theory labels Sep 19, 2026
@github-actions github-actions Bot added the large-import Automatically added label for PRs with a significant increase in transitive imports label Sep 19, 2026
@github-actions

github-actions Bot commented Sep 19, 2026

Copy link
Copy Markdown

PR summary 340ac40e90

Import changes exceeding 2%

% File
+16.04% Mathlib.CategoryTheory.ObjectProperty.FunctorCategory.PreservesLimits

Import changes for modified files

Dependency changes

File Base Count Head Count Change
Mathlib.CategoryTheory.ObjectProperty.FunctorCategory.PreservesLimits 1016 1179 +163 (+16.04%)
Import changes for all files
Files Import difference
86 files Mathlib.Algebra.Category.ModuleCat.LeftResolution Mathlib.Algebra.Homology.AlternatingConst Mathlib.Algebra.Homology.BifunctorHomotopy Mathlib.Algebra.Homology.BifunctorShift Mathlib.Algebra.Homology.CochainComplexOpposite Mathlib.Algebra.Homology.Embedding.Connect Mathlib.Algebra.Homology.Embedding.ExtendHomology Mathlib.Algebra.Homology.Embedding.ExtendHomotopy Mathlib.Algebra.Homology.Embedding.Extend Mathlib.Algebra.Homology.Embedding.HomEquiv Mathlib.Algebra.Homology.Embedding.IsSupported Mathlib.Algebra.Homology.Embedding.RestrictionHomology Mathlib.Algebra.Homology.Embedding.Splitting Mathlib.Algebra.Homology.Embedding.StupidTrunc Mathlib.Algebra.Homology.Embedding.TruncGEHomology Mathlib.Algebra.Homology.Embedding.TruncGE Mathlib.Algebra.Homology.Embedding.TruncLE Mathlib.Algebra.Homology.EulerCharacteristic Mathlib.Algebra.Homology.Functor Mathlib.Algebra.Homology.HomotopyCategory.HomComplexCohomology Mathlib.Algebra.Homology.HomotopyCategory.HomComplexInduction Mathlib.Algebra.Homology.HomotopyCategory.HomComplexShift Mathlib.Algebra.Homology.HomotopyCategory.HomComplexSingle Mathlib.Algebra.Homology.HomotopyCategory.HomComplex Mathlib.Algebra.Homology.HomotopyCategory.ShiftSequence Mathlib.Algebra.Homology.HomotopyCategory.Shift Mathlib.Algebra.Homology.HomotopyCategory.SingleFunctors Mathlib.Algebra.Homology.HomotopyCategory Mathlib.Algebra.Homology.Homotopy Mathlib.Algebra.Homology.LeftResolution.Basic Mathlib.Algebra.Homology.LeftResolution.Reduced Mathlib.Algebra.Homology.LeftResolution.Transport Mathlib.Algebra.Homology.LocalCohomology Mathlib.Algebra.Homology.Opposite Mathlib.Algebra.Homology.QuasiIso Mathlib.Algebra.Homology.Refinements Mathlib.Algebra.Homology.ShortComplex.HomologicalComplex Mathlib.Algebra.Homology.SingleHomology Mathlib.Algebra.Homology.SpectralObject.FirstPage Mathlib.Algebra.Homology.SpectralObject.SpectralSequence Mathlib.Algebra.Homology.SpectralSequence.Basic Mathlib.Algebra.Homology.TotalComplexShift Mathlib.AlgebraicTopology.DoldKan.Decomposition Mathlib.AlgebraicTopology.DoldKan.Degeneracies Mathlib.AlgebraicTopology.DoldKan.EquivalenceAdditive Mathlib.AlgebraicTopology.DoldKan.EquivalencePseudoabelian Mathlib.AlgebraicTopology.DoldKan.Equivalence Mathlib.AlgebraicTopology.DoldKan.Faces Mathlib.AlgebraicTopology.DoldKan.FunctorGamma Mathlib.AlgebraicTopology.DoldKan.FunctorN Mathlib.AlgebraicTopology.DoldKan.GammaCompN Mathlib.AlgebraicTopology.DoldKan.Homotopies Mathlib.AlgebraicTopology.DoldKan.HomotopyEquivalence Mathlib.AlgebraicTopology.DoldKan.NCompGamma Mathlib.AlgebraicTopology.DoldKan.NReflectsIso Mathlib.AlgebraicTopology.DoldKan.Normalized Mathlib.AlgebraicTopology.DoldKan.PInfty Mathlib.AlgebraicTopology.DoldKan.Projections Mathlib.AlgebraicTopology.DoldKan.SplitSimplicialObject Mathlib.AlgebraicTopology.ExtraDegeneracy Mathlib.AlgebraicTopology.SimplicialObject.ChainHomotopy Mathlib.AlgebraicTopology.SimplicialSet.Homology.Basic Mathlib.AlgebraicTopology.SimplicialSet.Homology.HomologyZero Mathlib.AlgebraicTopology.SimplicialSet.Homology.HomotopyInvariance Mathlib.AlgebraicTopology.SimplicialSet.Homology.MapHomologicalComplex Mathlib.AlgebraicTopology.SimplicialSet.Homology.Nondegenerate Mathlib.AlgebraicTopology.SingularHomology.Basic Mathlib.AlgebraicTopology.SingularHomology.HomologyZero Mathlib.AlgebraicTopology.SingularHomology.HomotopyInvarianceTopCat Mathlib.AlgebraicTopology.SingularHomology.HomotopyInvariance Mathlib.CategoryTheory.Abelian.Ext Mathlib.CategoryTheory.Abelian.Injective.Resolution Mathlib.CategoryTheory.Abelian.LeftDerived Mathlib.CategoryTheory.Abelian.Projective.Resolution Mathlib.CategoryTheory.Abelian.RightDerived Mathlib.CategoryTheory.Functor.ReflectsIso.Exact Mathlib.CategoryTheory.Limits.FormalCoproducts.ExtraDegeneracy Mathlib.CategoryTheory.Monoidal.Tor Mathlib.CategoryTheory.Preadditive.Injective.Resolution Mathlib.CategoryTheory.Preadditive.Projective.Resolution Mathlib.RepresentationTheory.Homological.ContCohomology.Basic Mathlib.RepresentationTheory.Homological.ContCohomology.Functoriality Mathlib.RepresentationTheory.Homological.ContCohomology.LowDegree Mathlib.RepresentationTheory.Homological.ContCohomology.Sha Mathlib.RepresentationTheory.Homological.FiniteCyclic Mathlib.RepresentationTheory.Homological.Resolution
1
Mathlib.CategoryTheory.Limits.Types.PreservesLimit Mathlib.CategoryTheory.ObjectProperty.FunctorCategory.PreservesLimits 163
Mathlib.Algebra.Homology.ShortComplex.HomologyCofork (new file) 611
Mathlib.CategoryTheory.Abelian.GrothendieckCategory.HomologyFunctorAccessible (new file) 1303

Declarations diff (regex)

+ colim.coconeFlip
+ colim.isColimitCoconeFlip
+ colimitLimToLimitColim
+ colimitLimToLimitColim_eq_colimit_desc
+ colimitLimToLimitColim_eq_limit_lift
+ cyclesFunctorFork
+ homologyFunctorCofork
+ homologyFunctorFork
+ homologyιNatTrans
+ homologyπNatTrans
+ instance (F : K ⥤ J) [HasColimitsOfShape K' C] :
+ instance (J : Type*) [Category* J] [HasColimitsOfShape J C] (i : ι) :
+ instance (J : Type*) [Category* J] [HasColimitsOfShape J C] (i j k : ι) :
+ instance (J : Type*) [Category* J] [HasLimitsOfShape J C] (i : ι) :
+ instance (J : Type*) [Category* J] [HasLimitsOfShape J C] (i j k : ι) :
+ instance (priority := low) [CategoryWithHomology C] : HasCokernels C
+ instance (priority := low) [CategoryWithHomology C] : HasKernels C
+ instance : Functor.IsCardinalAccessible.{w} (ShortComplex.cyclesFunctor C) .aleph0
+ instance : Functor.IsCardinalAccessible.{w} (ShortComplex.homologyFunctor C) .aleph0
+ instance : Functor.IsCardinalAccessible.{w} (ShortComplex.opcyclesFunctor C) .aleph0
+ instance : Functor.IsCardinalAccessible.{w} (cyclesFunctor C c i) .aleph0
+ instance : Functor.IsCardinalAccessible.{w} (homologyFunctor C c i) .aleph0
+ instance : Functor.IsCardinalAccessible.{w} (opcyclesFunctor C c i) .aleph0
+ instance : PreservesColimitsOfShape J (ShortComplex.cyclesFunctor C)
+ instance : PreservesColimitsOfShape J (ShortComplex.homologyFunctor C)
+ instance : PreservesColimitsOfShape J (ShortComplex.opcyclesFunctor C)
+ instance [HasColimitsOfShape K' C] :
+ instance [HasColimitsOfShape K' C] [HasExactColimitsOfShape K' C] [HasFiniteLimits C] :
+ instance [HasColimitsOfShape K' C] [HasLimitsOfShape K C]
+ instance [HasColimitsOfSize.{w₁, w₂} C] (i : ι) :
+ instance [HasColimitsOfSize.{w₁, w₂} C] (i j k : ι) :
+ instance [HasFiniteColimits C] :
+ instance [HasLimitsOfSize.{w₁, w₂} C] (i : ι) :
+ instance [HasLimitsOfSize.{w₁, w₂} C] (i j k : ι) :
+ instance {ι : Type*} (P : ι → ObjectProperty C) [∀ i, (P i).IsClosedUnderColimitsOfShape J] :
+ instance {ι : Type*} (P : ι → ObjectProperty C) [∀ i, (P i).IsClosedUnderLimitsOfShape J] :
+ isColimitHomologyFunctorCofork
+ isColimitOpcyclesFunctorCofork
+ isIso_colimitLimToLimitColim_iff_preservesColimit
+ isIso_colimitLimToLimitColim_iff_preservesLimit
+ isLimitCyclesFunctorFork
+ isLimitHomologyFunctorFork
+ lim.cone
+ lim.isLimitCone
+ opcyclesFunctorCofork
+ preservesColimit_flip_lim_iff_preservesLimit_colim
+ preservesColimit_lim_iff_preservesLimit_colim
+ preservesColimitsOfShape_lim_iff_preservesLimitsOfShape_colim
+ ι_colimitToLimit_π

You can run this locally as follows
## from your `mathlib4` directory:
git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci

## summary with just the declaration names:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh <optional_commit>

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

The doc-module for scripts/pr_summary/declarations_diff.sh in the mathlib-ci repository contains some details about this script.

Declarations diff (Lean)

Lean-aware diff — post-build, computed from the Lean environment (commit 340ac40).

  • +56 new declarations
  • −0 removed declarations
+CategoryTheory.Limits.colim.coconeFlip
+CategoryTheory.Limits.colim.coconeFlip_pt
+CategoryTheory.Limits.colim.coconeFlip_ι_app_app
+CategoryTheory.Limits.colim.isColimitCoconeFlip
+CategoryTheory.Limits.colimitLimToLimitColim
+CategoryTheory.Limits.colimitLimToLimitColim_eq_colimit_desc
+CategoryTheory.Limits.colimitLimToLimitColim_eq_limit_lift
+CategoryTheory.Limits.isIso_colimitLimToLimitColim_iff_preservesColimit
+CategoryTheory.Limits.isIso_colimitLimToLimitColim_iff_preservesLimit
+CategoryTheory.Limits.lim.cone
+CategoryTheory.Limits.lim.cone_pt
+CategoryTheory.Limits.lim.cone_π_app_app
+CategoryTheory.Limits.lim.isLimitCone
+CategoryTheory.Limits.preservesColimit_flip_lim_iff_preservesLimit_colim
+CategoryTheory.Limits.preservesColimit_lim_iff_preservesLimit_colim
+CategoryTheory.Limits.preservesColimitsOfShape_lim_iff_preservesLimitsOfShape_colim
+CategoryTheory.Limits.ι_colimitToLimit_π
+CategoryTheory.Limits.ι_colimitToLimit_π_assoc
+CategoryTheory.ObjectProperty.instIsClosedUnderColimitsOfShapeFunctorPreservesColimitOfHasColimitsOfShape
+CategoryTheory.ObjectProperty.instIsClosedUnderColimitsOfShapeFunctorPreservesColimitsOfShapeOfHasColimitsOfShape
+CategoryTheory.ObjectProperty.instIsClosedUnderColimitsOfShapeIInf
+CategoryTheory.ObjectProperty.instIsClosedUnderFiniteColimitsFunctorPreservesColimitsOfShapeOfHasFiniteColimits
+CategoryTheory.ObjectProperty.instIsClosedUnderFiniteLimitsFunctorPreservesColimitsOfShapeOfHasExactColimitsOfShapeOfHasFiniteLimits
+CategoryTheory.ObjectProperty.instIsClosedUnderLimitsOfShapeFunctorPreservesColimitsOfShapeOfHasLimitsOfShapeOfPreservesLimitsOfShapeColim
+CategoryTheory.ObjectProperty.instIsClosedUnderLimitsOfShapeIInf
+CategoryTheory.ShortComplex.cyclesFunctorFork
+CategoryTheory.ShortComplex.homologyFunctorCofork
+CategoryTheory.ShortComplex.homologyFunctorFork
+CategoryTheory.ShortComplex.homologyιNatTrans
+CategoryTheory.ShortComplex.homologyιNatTrans_app
+CategoryTheory.ShortComplex.homologyπNatTrans
+CategoryTheory.ShortComplex.homologyπNatTrans_app
+CategoryTheory.ShortComplex.instHasCokernelsOfCategoryWithHomology
+CategoryTheory.ShortComplex.instHasKernelsOfCategoryWithHomology
+CategoryTheory.ShortComplex.instIsCardinalAccessibleCyclesFunctorAleph0
+CategoryTheory.ShortComplex.instIsCardinalAccessibleHomologyFunctorAleph0
+CategoryTheory.ShortComplex.instIsCardinalAccessibleOpcyclesFunctorAleph0
+CategoryTheory.ShortComplex.instPreservesColimitsOfShapeCyclesFunctor
+CategoryTheory.ShortComplex.instPreservesColimitsOfShapeHomologyFunctor
+CategoryTheory.ShortComplex.instPreservesColimitsOfShapeOpcyclesFunctor
+CategoryTheory.ShortComplex.isColimitHomologyFunctorCofork
+CategoryTheory.ShortComplex.isColimitOpcyclesFunctorCofork
+CategoryTheory.ShortComplex.isLimitCyclesFunctorFork
+CategoryTheory.ShortComplex.isLimitHomologyFunctorFork
+CategoryTheory.ShortComplex.opcyclesFunctorCofork
+HomologicalComplex.instIsCardinalAccessibleCyclesFunctorAleph0
+HomologicalComplex.instIsCardinalAccessibleHomologyFunctorAleph0
+HomologicalComplex.instIsCardinalAccessibleOpcyclesFunctorAleph0
+HomologicalComplex.instPreservesColimitsOfShapeShortComplexShortComplexFunctor'OfHasColimitsOfShape
+HomologicalComplex.instPreservesColimitsOfShapeShortComplexShortComplexFunctorOfHasColimitsOfShape
+HomologicalComplex.instPreservesColimitsOfSizeShortComplexShortComplexFunctor'OfHasColimitsOfSize
+HomologicalComplex.instPreservesColimitsOfSizeShortComplexShortComplexFunctorOfHasColimitsOfSize
+HomologicalComplex.instPreservesLimitsOfShapeShortComplexShortComplexFunctor'OfHasLimitsOfShape
+HomologicalComplex.instPreservesLimitsOfShapeShortComplexShortComplexFunctorOfHasLimitsOfShape
+HomologicalComplex.instPreservesLimitsOfSizeShortComplexShortComplexFunctor'OfHasLimitsOfSize
+HomologicalComplex.instPreservesLimitsOfSizeShortComplexShortComplexFunctorOfHasLimitsOfSize

Increase in strong tech debt: (relative, absolute) = (1.39, 0.00)
Current number Change Type (strong)
backward.defeqAttrib.useBackward 4142 -1
backward.isDefEq.respectTransparency 4540 4
Increase in weak tech debt: (relative, absolute) = (1.00, 0.00)
Current number Change Type (weak)
exposed public sections 5060 1

Current commit 340ac40e90
Reference commit 2ed733ad3e

This script lives in the mathlib-ci repository. To run it locally, from your mathlib4 directory:

git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci
../mathlib-ci/scripts/reporting/technical-debt-metrics.py 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 Sep 19, 2026
@mathlib-dependent-issues

Copy link
Copy Markdown

This PR/issue depends on:

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) large-import Automatically added label for PRs with a significant increase in transitive imports t-category-theory Category theory WIP Work in progress

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant