Zulip Chat Archive
Stream: new members
Topic: How to find universal properties?
Jujian Zhang (Dec 01 2021 at 12:35):
I am familiarizing myself with category_theory
part of library. I am lost on how to find various universal properties of categorical constructions. For example, the universal property of kernel:
import category_theory.abelian.basic
open category_theory
open category_theory.abelian
open category_theory.limits
open_locale zero_object
variables {𝒞 : Type*} [category 𝒞] [abelian 𝒞]
variables {A B K' : 𝒞} {f : A ⟶ B} {ι' : K' ⟶ A}
variables (eq_zero : ι' ≫ f = 0)
example : ∃!(u : K' ≅ kernel f), (u.hom ≫ kernel.ι f = ι') := sorry
Johan Commelin (Dec 01 2021 at 12:38):
Your K'
isn't going to be isomorphic to the kernel in general. You need more conditions for that.
Johan Commelin (Dec 01 2021 at 12:38):
But you can get a morphism
Johan Commelin (Dec 01 2021 at 12:39):
There should be a kernel.lift
Jujian Zhang (Dec 01 2021 at 13:08):
I thought this is the universal property of kernels. I copied it from Wikipedia.
David Wärn (Dec 01 2021 at 13:18):
It's usually a good idea to have a look at the file where the construction is defined, in this case file#category_theory/limits/shapes/kernels. The docstring at the top explains the API.
What you posted can be called "the universal property of kernels" (except as Johan pointed out, K' ≅ kernel f
should read K' ⟶ kernel f
), but note that there are usually a couple different equivalent ways of stating a universal property. Mathlib's kernel API is divided into more components: docs#category_theory.limits.kernel.lift will give you the function u
, kernel.lift_ι
gives you its defining property, and I believe there should be an instance saying that kernel.ι
is mono which gives you uniqueness.
Last updated: Dec 20 2023 at 11:08 UTC