@@ -8,8 +8,8 @@ import category_theory.limits.shapes.zero
8
8
/-!
9
9
# Kernels and cokernels
10
10
11
- In a category with zero morphisms, the kernel of a morphism `f : X ⟶ Y` is the equalizer of `f`
12
- and `0 : X ⟶ Y`. (Similarly the cokernel is the coequalizer.)
11
+ In a category with zero morphisms, the kernel of a morphism `f : X ⟶ Y` is
12
+ the equalizer of `f` and `0 : X ⟶ Y`. (Similarly the cokernel is the coequalizer.)
13
13
14
14
The basic definitions are
15
15
* `kernel : (X ⟶ Y) → C`
@@ -177,21 +177,21 @@ def kernel.lift' {W : C} (k : W ⟶ X) (h : k ≫ f = 0) : {l : W ⟶ kernel f /
177
177
⟨kernel.lift f k h, kernel.lift_ι _ _ _⟩
178
178
179
179
/-- Every kernel of the zero morphism is an isomorphism -/
180
- instance kernel.ι_zero_is_iso [has_kernel ( 0 : X ⟶ Y)] :
180
+ instance kernel.ι_zero_is_iso :
181
181
is_iso (kernel.ι (0 : X ⟶ Y)) :=
182
182
equalizer.ι_of_self _
183
183
184
184
lemma eq_zero_of_epi_kernel [epi (kernel.ι f)] : f = 0 :=
185
185
(cancel_epi (kernel.ι f)).1 (by simp)
186
186
187
187
/-- The kernel of a zero morphism is isomorphic to the source. -/
188
- def kernel_zero_iso_source [has_kernel ( 0 : X ⟶ Y)] : kernel (0 : X ⟶ Y) ≅ X :=
188
+ def kernel_zero_iso_source : kernel (0 : X ⟶ Y) ≅ X :=
189
189
equalizer.iso_source_of_self 0
190
190
191
- @[simp] lemma kernel_zero_iso_source_hom [has_kernel ( 0 : X ⟶ Y)] :
191
+ @[simp] lemma kernel_zero_iso_source_hom :
192
192
kernel_zero_iso_source.hom = kernel.ι (0 : X ⟶ Y) := rfl
193
193
194
- @[simp] lemma kernel_zero_iso_source_inv [has_kernel ( 0 : X ⟶ Y)] :
194
+ @[simp] lemma kernel_zero_iso_source_inv :
195
195
kernel_zero_iso_source.inv = kernel.lift (0 : X ⟶ Y) (𝟙 X) (by simp) := rfl
196
196
197
197
/-- If two morphisms are known to be equal, then their kernels are isomorphic. -/
@@ -328,7 +328,7 @@ section
328
328
variables (X Y)
329
329
330
330
/-- The kernel morphism of a zero morphism is an isomorphism -/
331
- def kernel.ι_of_zero [has_kernel ( 0 : X ⟶ Y)] : is_iso (kernel.ι (0 : X ⟶ Y)) :=
331
+ def kernel.ι_of_zero : is_iso (kernel.ι (0 : X ⟶ Y)) :=
332
332
equalizer.ι_of_self _
333
333
334
334
end
@@ -436,21 +436,21 @@ def cokernel.desc' {W : C} (k : Y ⟶ W) (h : f ≫ k = 0) :
436
436
⟨cokernel.desc f k h, cokernel.π_desc _ _ _⟩
437
437
438
438
/-- The cokernel of the zero morphism is an isomorphism -/
439
- instance cokernel.π_zero_is_iso [has_colimit (parallel_pair ( 0 : X ⟶ Y) 0 )] :
439
+ instance cokernel.π_zero_is_iso :
440
440
is_iso (cokernel.π (0 : X ⟶ Y)) :=
441
441
coequalizer.π_of_self _
442
442
443
443
lemma eq_zero_of_mono_cokernel [mono (cokernel.π f)] : f = 0 :=
444
444
(cancel_mono (cokernel.π f)).1 (by simp)
445
445
446
446
/-- The cokernel of a zero morphism is isomorphic to the target. -/
447
- def cokernel_zero_iso_target [has_cokernel ( 0 : X ⟶ Y)] : cokernel (0 : X ⟶ Y) ≅ Y :=
447
+ def cokernel_zero_iso_target : cokernel (0 : X ⟶ Y) ≅ Y :=
448
448
coequalizer.iso_target_of_self 0
449
449
450
- @[simp] lemma cokernel_zero_iso_target_hom [has_cokernel ( 0 : X ⟶ Y)] :
450
+ @[simp] lemma cokernel_zero_iso_target_hom :
451
451
cokernel_zero_iso_target.hom = cokernel.desc (0 : X ⟶ Y) (𝟙 Y) (by simp) := rfl
452
452
453
- @[simp] lemma cokernel_zero_iso_target_inv [has_cokernel ( 0 : X ⟶ Y)] :
453
+ @[simp] lemma cokernel_zero_iso_target_inv :
454
454
cokernel_zero_iso_target.inv = cokernel.π (0 : X ⟶ Y) := rfl
455
455
456
456
/-- If two morphisms are known to be equal, then their cokernels are isomorphic. -/
@@ -580,7 +580,7 @@ section
580
580
variables (X Y)
581
581
582
582
/-- The cokernel of a zero morphism is an isomorphism -/
583
- def cokernel.π_of_zero [has_cokernel ( 0 : X ⟶ Y)] :
583
+ def cokernel.π_of_zero :
584
584
is_iso (cokernel.π (0 : X ⟶ Y)) :=
585
585
coequalizer.π_of_self _
586
586
@@ -646,11 +646,11 @@ variables (C : Type u) [category.{v} C]
646
646
647
647
variables [has_zero_morphisms C]
648
648
649
- /-- `has_kernels` represents a choice of kernel for every morphism -/
649
+ /-- `has_kernels` represents the existence of kernels for every morphism. -/
650
650
class has_kernels : Prop :=
651
651
(has_limit : Π {X Y : C} (f : X ⟶ Y), has_kernel f)
652
652
653
- /-- `has_cokernels` represents a choice of cokernel for every morphism -/
653
+ /-- `has_cokernels` represents the existence of cokernels for every morphism. -/
654
654
class has_cokernels : Prop :=
655
655
(has_colimit : Π {X Y : C} (f : X ⟶ Y), has_cokernel f)
656
656
0 commit comments