Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
f78f389
wip
joelriou Feb 24, 2025
1809cad
wip
joelriou Feb 24, 2025
e4e391c
wip
joelriou Feb 24, 2025
75adabd
wip
joelriou Feb 24, 2025
b137963
feat(CategoryTheory): kernel and cokernel of a composition
joelriou Feb 24, 2025
b95405d
Merge remote-tracking branch 'origin/kernel-cokernel-comp' into jriou…
joelriou Feb 24, 2025
07add15
wip
joelriou Feb 25, 2025
1e91204
feat(CategoryTheory/Abelian): Serre classes
joelriou Feb 25, 2025
d7bf1da
reference
joelriou Feb 25, 2025
4b40703
refactor(CategoryTheory): introduce ObjectProperty
joelriou Feb 25, 2025
20a379a
added todo
joelriou Feb 25, 2025
9bd0572
fix deprecated aliases
joelriou Feb 25, 2025
d50d3c8
removed blank line
joelriou Feb 25, 2025
f0f7d64
Merge remote-tracking branch 'origin/jriou-object-property' into jrio…
joelriou Feb 25, 2025
c0418fa
refactor
joelriou Feb 25, 2025
a202128
fixing Mathlib.lean
joelriou Feb 25, 2025
58fae96
fixing name
joelriou Feb 25, 2025
2554ce4
fixing lint
joelriou Feb 25, 2025
303f425
Merge remote-tracking branch 'origin/jriou-object-property' into jrio…
joelriou Feb 25, 2025
7bf0d49
wip
joelriou Feb 25, 2025
4ad77b2
Merge remote-tracking branch 'origin/jriou-serre-class-definition' in…
joelriou Feb 25, 2025
7b6f9bd
wip
joelriou Feb 25, 2025
c87f261
wip
joelriou Feb 25, 2025
8f5925f
wip
joelriou Feb 25, 2025
e716dc2
wip
joelriou Feb 26, 2025
092a6df
Merge remote-tracking branch 'origin' into jriou-serre-class
joelriou Feb 26, 2025
e9ae5e9
wip
joelriou Feb 26, 2025
2a656f1
Merge remote-tracking branch 'origin' into jriou-serre-class
joelriou Mar 9, 2025
18249e0
wip
joelriou Mar 9, 2025
8d15ddd
wip
joelriou Mar 9, 2025
b8193d0
Merge remote-tracking branch 'upstream/jriou-serre-class' into serre-…
joelriou Jan 24, 2026
86bf02e
wip
joelriou Jan 24, 2026
e5b1ca5
wip
joelriou Jan 24, 2026
237054f
wip
joelriou Jan 24, 2026
6a18cdd
wip
joelriou Jan 24, 2026
6b9112c
wip
joelriou Jan 24, 2026
f2bfa6c
wip
joelriou Jan 24, 2026
ea0297b
wip
joelriou Jan 25, 2026
7f376a4
wip
joelriou Jan 25, 2026
6d8310e
wip
joelriou Jan 25, 2026
a89c2ce
wip
joelriou Jan 25, 2026
56788ee
wip
joelriou Jan 25, 2026
c1be2b5
wip
joelriou Jan 25, 2026
12bf57d
wip
joelriou Jan 25, 2026
02ed251
wip
joelriou Jan 25, 2026
3c1c9e0
wip
joelriou Jan 26, 2026
f8e430c
Merge remote-tracking branch 'origin/master' into serre-class-localiz…
joelriou Jan 27, 2026
239b284
removed unnecessary code
joelriou Jan 27, 2026
e7b9633
moved code
joelriou Jan 27, 2026
1ad59db
wip
joelriou Jan 27, 2026
45a034c
wip
joelriou Jan 27, 2026
7ec3d6b
wip
joelriou Jan 27, 2026
75313fa
fix
joelriou Jan 27, 2026
3846bb8
stacks annotation
joelriou Jan 27, 2026
114e59c
Merge remote-tracking branch 'origin/master' into serre-class-localiz…
joelriou Jan 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Mathlib.lean
Original file line number Diff line number Diff line change
Expand Up @@ -2280,6 +2280,7 @@ public import Mathlib.CategoryTheory.Abelian.Refinements
public import Mathlib.CategoryTheory.Abelian.RightDerived
public import Mathlib.CategoryTheory.Abelian.SerreClass.Basic
public import Mathlib.CategoryTheory.Abelian.SerreClass.Bousfield
public import Mathlib.CategoryTheory.Abelian.SerreClass.Localization
public import Mathlib.CategoryTheory.Abelian.SerreClass.MorphismProperty
public import Mathlib.CategoryTheory.Abelian.Subobject
public import Mathlib.CategoryTheory.Abelian.Transfer
Expand Down
7 changes: 7 additions & 0 deletions Mathlib/CategoryTheory/Abelian/Basic.lean
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ public import Mathlib.CategoryTheory.Preadditive.Biproducts
public import Mathlib.CategoryTheory.Limits.Preserves.Shapes.Kernels
public import Mathlib.CategoryTheory.Limits.Shapes.Images
public import Mathlib.CategoryTheory.Limits.Constructions.LimitsOfProductsAndEqualizers
public import Mathlib.CategoryTheory.MorphismProperty.Limits
public import Mathlib.CategoryTheory.Abelian.NonPreadditive

/-!
Expand Down Expand Up @@ -790,6 +791,12 @@ theorem mono_inl_of_factor_thru_epi_mono_factorization (f : X ⟶ Y) (g : X ⟶

end MonoPushout

instance : (MorphismProperty.monomorphisms C).IsStableUnderCobaseChange :=
.mk' (fun _ _ _ _ _ _ (_ : Mono _) ↦ inferInstanceAs (Mono _))

instance : (MorphismProperty.epimorphisms C).IsStableUnderBaseChange :=
.mk' (fun _ _ _ _ _ _ (_ : Epi _) ↦ inferInstanceAs (Epi _))

end CategoryTheory.Abelian

namespace CategoryTheory.NonPreadditiveAbelian
Expand Down
545 changes: 545 additions & 0 deletions Mathlib/CategoryTheory/Abelian/SerreClass/Localization.lean

Large diffs are not rendered by default.

47 changes: 47 additions & 0 deletions Mathlib/CategoryTheory/Abelian/SerreClass/MorphismProperty.lean
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,14 @@ Authors: Joël Riou
-/
module

public import Mathlib.Algebra.Homology.Square
public import Mathlib.CategoryTheory.Abelian.SerreClass.Basic
public import Mathlib.CategoryTheory.Abelian.CommSq
public import Mathlib.CategoryTheory.Abelian.DiagramLemmas.KernelCokernelComp
public import Mathlib.CategoryTheory.Limits.Shapes.Pullback.IsPullback.Kernels
public import Mathlib.CategoryTheory.MorphismProperty.Composition
public import Mathlib.CategoryTheory.MorphismProperty.Retract
public import Mathlib.CategoryTheory.MorphismProperty.Limits
public import Mathlib.CategoryTheory.MorphismProperty.IsInvertedBy

/-!
Expand Down Expand Up @@ -85,6 +89,16 @@ lemma epiModSerre_of_epi {X Y : C} (f : X ⟶ Y) [Epi f] :
P.epiModSerre f :=
P.epimorphisms_le_epiModSerre f (epimorphisms.infer_property f)

@[simp]
lemma epiModSerre_zero_iff (X Y : C) :
P.epiModSerre (0 : X ⟶ Y) ↔ P Y :=
P.prop_iff_of_iso cokernelZeroIsoTarget

@[simp]
lemma monoModSerre_zero_iff (X Y : C) :
P.monoModSerre (0 : X ⟶ Y) ↔ P X :=
P.prop_iff_of_iso kernelZeroIsoSource

lemma isoModSerre_iff {X Y : C} (f : X ⟶ Y) :
P.isoModSerre f ↔ P.monoModSerre f ∧ P.epiModSerre f := Iff.rfl

Expand All @@ -108,6 +122,11 @@ lemma isoModSerre_of_epi {X Y : C} (f : X ⟶ Y) [Epi f] (hf : P.monoModSerre f)
P.isoModSerre f := by
rwa [isoModSerre_iff_of_epi]

@[simp]
lemma isoModSerre_zero_iff (X Y : C) :
P.isoModSerre (0 : X ⟶ Y) ↔ P X ∧ P Y := by
simp [isoModSerre_iff]

lemma isomorphisms_le_isoModSerre : isomorphisms C ≤ P.isoModSerre :=
fun _ _ f (_ : IsIso f) ↦ ⟨P.monoModSerre_of_mono f, P.epiModSerre_of_epi f⟩

Expand Down Expand Up @@ -169,6 +188,34 @@ lemma isoModSerre_isInvertedBy_iff (F : C ⥤ D)
(cokernelIsCokernel f)).map F).epi_f (((hF _ h₂).eq_of_tgt _ _))
exact isIso_of_mono_of_epi (F.map f)

instance : P.monoModSerre.IsStableUnderBaseChange where
of_isPullback sq h :=
have := isIso_kernel_map_of_isPullback sq.flip
P.prop_of_iso (asIso (kernel.map _ _ _ _ sq.w.symm)).symm h

instance : P.epiModSerre.IsStableUnderBaseChange where
of_isPullback sq h :=
have := Abelian.mono_cokernel_map_of_isPullback sq.flip
P.prop_of_mono (cokernel.map _ _ _ _ sq.w.symm) h

instance : P.isoModSerre.IsStableUnderBaseChange := by
dsimp [isoModSerre]
infer_instance

instance : P.monoModSerre.IsStableUnderCobaseChange where
of_isPushout sq h :=
have := Abelian.epi_kernel_map_of_isPushout sq.flip
P.prop_of_epi (kernel.map _ _ _ _ sq.w.symm) h

instance : P.epiModSerre.IsStableUnderCobaseChange where
of_isPushout sq h :=
have := isIso_cokernel_map_of_isPushout sq.flip
P.prop_of_iso (asIso (cokernel.map _ _ _ _ sq.w.symm)) h

instance : P.isoModSerre.IsStableUnderCobaseChange := by
dsimp [isoModSerre]
infer_instance

end ObjectProperty

end CategoryTheory
15 changes: 15 additions & 0 deletions Mathlib/CategoryTheory/Limits/ExactFunctor.lean
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Authors: Markus Himmel
module

public import Mathlib.CategoryTheory.Limits.Preserves.Finite
public import Mathlib.CategoryTheory.ObjectProperty.CompleteLattice

/-!
# Bundled exact functors
Expand Down Expand Up @@ -41,6 +42,11 @@ variable {C D} in
lemma leftExactFunctor_iff (F : C ⥤ D) :
leftExactFunctor C D F ↔ PreservesFiniteLimits F := Iff.rfl

instance : (leftExactFunctor C D).IsClosedUnderIsomorphisms where
of_iso e h := by
simp only [leftExactFunctor_iff] at h ⊢
exact preservesFiniteLimits_of_natIso e

/-- Bundled left-exact functors. -/
abbrev LeftExactFunctor := (leftExactFunctor C D).FullSubcategory

Expand All @@ -64,6 +70,11 @@ variable {C D} in
lemma rightExactFunctor_iff (F : C ⥤ D) :
rightExactFunctor C D F ↔ PreservesFiniteColimits F := Iff.rfl

instance : (rightExactFunctor C D).IsClosedUnderIsomorphisms where
of_iso e h := by
simp only [rightExactFunctor_iff] at h ⊢
exact preservesFiniteColimits_of_natIso e

/-- Bundled right-exact functors. -/
abbrev RightExactFunctor := (rightExactFunctor C D).FullSubcategory

Expand All @@ -87,6 +98,10 @@ variable {C D} in
lemma exactFunctor_iff (F : C ⥤ D) :
exactFunctor C D F ↔ PreservesFiniteLimits F ∧ PreservesFiniteColimits F := Iff.rfl

instance : (exactFunctor C D).IsClosedUnderIsomorphisms := by
dsimp [exactFunctor]
infer_instance

/-- Bundled exact functors. -/
abbrev ExactFunctor := (exactFunctor C D).FullSubcategory

Expand Down
3 changes: 3 additions & 0 deletions Mathlib/CategoryTheory/Localization/Construction.lean
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,9 @@ def objEquiv : C ≃ W.Localization where
rintro ⟨⟨X⟩⟩
rfl

instance : W.Q.EssSurj where
mem_essImage Y := ⟨(objEquiv W).symm Y, ⟨Iso.refl _⟩⟩

/-- A `MorphismProperty` in `W.Localization` is satisfied by all
morphisms in the localized category if it contains the image of the
morphisms in the original category, the inverses of the morphisms
Expand Down
7 changes: 7 additions & 0 deletions Mathlib/CategoryTheory/Localization/Predicate.lean
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,13 @@ lemma faithful_whiskeringLeft (L : C ⥤ D) (W) [L.IsLocalization W] (E : Type*)
((whiskeringLeft C D E).obj L).Faithful :=
inferInstanceAs (whiskeringLeftFunctor' L W E).Faithful

/-- The precomposition with a localization functor gives fully faithful functors. -/
def fullyFaithfulWhiskeringLeft (L : C ⥤ D) (W) [L.IsLocalization W] (E : Type*) [Category* E] :
((whiskeringLeft C D E).obj L).FullyFaithful := by
have := full_whiskeringLeft L W E
have := faithful_whiskeringLeft L W E
exact FullyFaithful.ofFullyFaithful _

variable {E}

theorem natTrans_ext (L : C ⥤ D) (W) [L.IsLocalization W] {F₁ F₂ : D ⥤ E} {τ τ' : F₁ ⟶ F₂}
Expand Down