mathlib documentation

category_theory.limits.shapes.kernel_pair

Kernel pairs

This file defines what it means for a parallel pair of morphisms a b : R ⟶ X to be the kernel pair for a morphism f. Some properties of kernel pairs are given, namely allowing one to transfer between the kernel pair of f₁ ≫ f₂ to the kernel pair of f₁. It is also proved that if f is a coequalizer of some pair, and a,b is a kernel pair for f then it is a coequalizer of a,b.

Implementation

The definition is essentially just a wrapper for is_limit (pullback_cone.mk _ _ _), but the constructions given here are useful, yet awkward to present in that language, so a basic API is developed here.

TODO

structure category_theory.is_kernel_pair {C : Type u} [category_theory.category C] {R X Y : C} :
(X Y)(R X)(R X)Type (max u v)

is_kernel_pair f a b expresses that (a, b) is a kernel pair for f, i.e. a ≫ f = b ≫ f and the square R → X ↓ ↓ X → Y is a pullback square. This is essentially just a convenience wrapper over is_limit (pullback_cone.mk _ _ _).

@[instance]

The data expressing that (a, b) is a kernel pair is subsingleton.

If f is a monomorphism, then (𝟙 _, 𝟙 _) is a kernel pair for f.

Equations
def category_theory.is_kernel_pair.lift' {C : Type u} [category_theory.category C] {R X Y : C} {f : X Y} {a b : R X} {S : C} (k : category_theory.is_kernel_pair f a b) (p q : S X) :
p f = q f{t // t a = p t b = q}

Given a pair of morphisms p, q to X which factor through f, they factor through any kernel pair of f.

Equations
def category_theory.is_kernel_pair.cancel_right {C : Type u} [category_theory.category C] {R X Y Z : C} {a b : R X} {f₁ : X Y} {f₂ : Y Z} :
a f₁ = b f₁category_theory.is_kernel_pair (f₁ f₂) a bcategory_theory.is_kernel_pair f₁ a b

If (a,b) is a kernel pair for f₁ ≫ f₂ and a ≫ f₁ = b ≫ f₁, then (a,b) is a kernel pair for just f₁. That is, to show that (a,b) is a kernel pair for f₁ it suffices to only show the square commutes, rather than to additionally show it's a pullback.

Equations
def category_theory.is_kernel_pair.cancel_right_of_mono {C : Type u} [category_theory.category C] {R X Y Z : C} {a b : R X} {f₁ : X Y} {f₂ : Y Z} [category_theory.mono f₂] :

If (a,b) is a kernel pair for f₁ ≫ f₂ and f₂ is mono, then (a,b) is a kernel pair for just f₁. The converse of comp_of_mono.

Equations
def category_theory.is_kernel_pair.comp_of_mono {C : Type u} [category_theory.category C] {R X Y Z : C} {a b : R X} {f₁ : X Y} {f₂ : Y Z} [category_theory.mono f₂] :

If (a,b) is a kernel pair for f₁ and f₂ is mono, then (a,b) is a kernel pair for f₁ ≫ f₂. The converse of cancel_right_of_mono.

Equations