Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 29b834d

Browse files
committed
feat(category_theory, algebra/category): AddCommGroup is well-powered (#7006)
1 parent 4e607eb commit 29b834d

3 files changed

Lines changed: 63 additions & 4 deletions

File tree

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/-
2+
Copyright (c) 2021 Markus Himmel. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Markus Himmel
5+
-/
6+
import algebra.category.Group.Z_Module_equivalence
7+
import algebra.category.Module.subobject
8+
9+
/-!
10+
# The category of abelian groups is well-powered
11+
-/
12+
13+
open category_theory
14+
15+
universe u
16+
17+
namespace AddCommGroup
18+
19+
instance well_powered_AddCommGroup : well_powered (AddCommGroup.{u}) :=
20+
well_powered_of_equiv (forget₂ (Module.{u} ℤ) AddCommGroup.{u}).as_equivalence
21+
22+
end AddCommGroup

src/category_theory/subobject/mono_over.lean

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,12 @@ lemma lift_comm (F : over Y ⥤ over X)
137137
lift F h ⋙ mono_over.forget X = mono_over.forget Y ⋙ F :=
138138
rfl
139139

140+
@[simp]
141+
lemma lift_obj_arrow {Y : D} (F : over Y ⥤ over X)
142+
(h : ∀ (f : mono_over Y), mono (F.obj ((mono_over.forget Y).obj f)).hom) (f : mono_over Y) :
143+
((lift F h).obj f).arrow = (F.obj ((forget Y).obj f)).hom :=
144+
rfl
145+
140146
/--
141147
Monomorphisms over an object `f : over A` in an over category
142148
are equivalent to monomorphisms over the source of `f`.
@@ -226,12 +232,26 @@ instance faithful_map (f : X ⟶ Y) [mono f] : faithful (map f) := {}.
226232
/--
227233
Isomorphic objects have equivalent `mono_over` categories.
228234
-/
229-
def map_iso {A B : C} (e : A ≅ B) : mono_over A ≌ mono_over B :=
235+
@[simps] def map_iso {A B : C} (e : A ≅ B) : mono_over A ≌ mono_over B :=
230236
{ functor := map e.hom,
231237
inverse := map e.inv,
232238
unit_iso := ((map_comp _ _).symm ≪≫ eq_to_iso (by simp) ≪≫ map_id).symm,
233239
counit_iso := ((map_comp _ _).symm ≪≫ eq_to_iso (by simp) ≪≫ map_id) }
234240

241+
section
242+
variables (X)
243+
244+
/-- An equivalence of categories `e` between `C` and `D` induces an equivalence between
245+
`mono_over X` and `mono_over (e.functor.obj X)` whenever `X` is an object of `C`. -/
246+
@[simps] def congr (e : C ≌ D) : mono_over X ≌ mono_over (e.functor.obj X) :=
247+
{ functor := lift (over.post e.functor) $ λ f, by { dsimp, apply_instance },
248+
inverse := (lift (over.post e.inverse) $ λ f, by { dsimp, apply_instance })
249+
⋙ (map_iso (e.unit_iso.symm.app X)).functor,
250+
unit_iso := nat_iso.of_components (λ Y, iso_mk (e.unit_iso.app Y) (by tidy)) (by tidy),
251+
counit_iso := nat_iso.of_components (λ Y, iso_mk (e.counit_iso.app Y) (by tidy)) (by tidy) }
252+
253+
end
254+
235255
section
236256
variable [has_pullbacks C]
237257

src/category_theory/subobject/well_powered.lean

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ and
2424
`equiv_shrink (subobject X) : subobject X ≃ shrink (subobject X)`.
2525
-/
2626

27-
universes v u
27+
universes v u₁ u₂
2828

2929
namespace category_theory
3030

31-
variables (C : Type u) [category.{v} C]
31+
variables (C : Type u) [category.{v} C]
3232

3333
/--
3434
A category (with morphisms in `Type v`) is well-powered if `subobject X` is `v`-small for every `X`.
@@ -43,7 +43,7 @@ instance small_subobject [well_powered C] (X : C) : small.{v} (subobject X) :=
4343
well_powered.subobject_small X
4444

4545
@[priority 100]
46-
instance well_powered_of_small_category (C : Type u) [small_category C] : well_powered C :=
46+
instance well_powered_of_small_category (C : Type u) [small_category C] : well_powered C :=
4747
{}
4848

4949
variables {C}
@@ -57,10 +57,27 @@ theorem well_powered_of_essentially_small_mono_over
5757
well_powered C :=
5858
{ subobject_small := λ X, (essentially_small_mono_over_iff_small_subobject X).mp (h X), }
5959

60+
section
6061
variables [well_powered C]
6162

6263
instance essentially_small_mono_over (X : C) :
6364
essentially_small.{v} (mono_over X) :=
6465
(essentially_small_mono_over_iff_small_subobject X).mpr (well_powered.subobject_small X)
6566

67+
end
68+
69+
section equivalence
70+
variables {D : Type u₂} [category.{v} D]
71+
72+
theorem well_powered_of_equiv (e : C ≌ D) [well_powered C] : well_powered D :=
73+
well_powered_of_essentially_small_mono_over $
74+
λ X, (essentially_small_congr (mono_over.congr X e.symm)).2 $ by apply_instance
75+
76+
/-- Being well-powered is preserved by equivalences, as long as the two categories involved have
77+
their morphisms in the same universe. -/
78+
theorem well_powered_congr (e : C ≌ D) : well_powered C ↔ well_powered D :=
79+
⟨λ i, by exactI well_powered_of_equiv e, λ i, by exactI well_powered_of_equiv e.symm⟩
80+
81+
end equivalence
82+
6683
end category_theory

0 commit comments

Comments
 (0)