Equalizers as pullbacks of products #
Also see CategoryTheory.Limits.Constructions.Equalizers for very similar results.
theorem CategoryTheory.Limits.isPullback_equalizer_prod {C : Type u} [Category.{v, u} C] {X Y : C} (f g : X ⟶ Y) [HasEqualizer f g] [HasBinaryProduct Y Y] :
IsPullback (equalizer.ι f g) (CategoryStruct.comp (equalizer.ι f g) f) (prod.lift f g)
(prod.lift (CategoryStruct.id Y) (CategoryStruct.id Y))
The equalizer of f g : X ⟶ Y is the pullback of the diagonal map Y ⟶ Y × Y
along the map (f, g) : X ⟶ Y × Y.
theorem CategoryTheory.Limits.isPushout_coequalizer_coprod {C : Type u} [Category.{v, u} C] {X Y : C} (f g : X ⟶ Y) [HasCoequalizer f g] [HasBinaryCoproduct X X] :
IsPushout (coprod.desc f g) (coprod.desc (CategoryStruct.id X) (CategoryStruct.id X)) (coequalizer.π f g)
(CategoryStruct.comp f (coequalizer.π f g))
The coequalizer of f g : X ⟶ Y is the pushout of the diagonal map X ⨿ X ⟶ X
along the map (f, g) : X ⨿ X ⟶ Y.
noncomputable def CategoryTheory.Limits.equalizerPullbackMapIso {C : Type u} [Category.{v, u} C] [HasEqualizers C] [HasPullbacks C] {X Y S T : C} {f g : X ⟶ Y} {s : X ⟶ S} {t : Y ⟶ S} (hf : CategoryStruct.comp f t = s) (hg : CategoryStruct.comp g t = s) (v : T ⟶ S) :
equalizer (pullback.map s v t v f (CategoryStruct.id T) (CategoryStruct.id S) ⋯ ⋯)
(pullback.map s v t v g (CategoryStruct.id T) (CategoryStruct.id S) ⋯ ⋯) ≅ pullback (equalizer.ι f g) (pullback.fst s v)
The natural isomorphism eq(f ×[S] T, g ×[S] T) ≅ eq(f, g) ×[S] T.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem CategoryTheory.Limits.equalizerPullbackMapIso_hom_fst {C : Type u} [Category.{v, u} C] [HasEqualizers C] [HasPullbacks C] {X Y S T : C} {f g : X ⟶ Y} {s : X ⟶ S} {t : Y ⟶ S} (hf : CategoryStruct.comp f t = s) (hg : CategoryStruct.comp g t = s) (v : T ⟶ S) :
CategoryStruct.comp (equalizerPullbackMapIso hf hg v).hom
(CategoryStruct.comp (pullback.fst (equalizer.ι f g) (pullback.fst s v)) (equalizer.ι f g)) = CategoryStruct.comp
(equalizer.ι (pullback.map s v t v f (CategoryStruct.id T) (CategoryStruct.id S) ⋯ ⋯)
(pullback.map s v t v g (CategoryStruct.id T) (CategoryStruct.id S) ⋯ ⋯))
(pullback.fst s v)
@[simp]
theorem CategoryTheory.Limits.equalizerPullbackMapIso_hom_fst_assoc {C : Type u} [Category.{v, u} C] [HasEqualizers C] [HasPullbacks C] {X Y S T : C} {f g : X ⟶ Y} {s : X ⟶ S} {t : Y ⟶ S} (hf : CategoryStruct.comp f t = s) (hg : CategoryStruct.comp g t = s) (v : T ⟶ S) {Z : C} (h : X ⟶ Z) :
CategoryStruct.comp (equalizerPullbackMapIso hf hg v).hom
(CategoryStruct.comp (pullback.fst (equalizer.ι f g) (pullback.fst s v))
(CategoryStruct.comp (equalizer.ι f g) h)) = CategoryStruct.comp
(equalizer.ι (pullback.map s v t v f (CategoryStruct.id T) (CategoryStruct.id S) ⋯ ⋯)
(pullback.map s v t v g (CategoryStruct.id T) (CategoryStruct.id S) ⋯ ⋯))
(CategoryStruct.comp (pullback.fst s v) h)
@[simp]
theorem CategoryTheory.Limits.equalizerPullbackMapIso_hom_snd {C : Type u} [Category.{v, u} C] [HasEqualizers C] [HasPullbacks C] {X Y S T : C} {f g : X ⟶ Y} {s : X ⟶ S} {t : Y ⟶ S} (hf : CategoryStruct.comp f t = s) (hg : CategoryStruct.comp g t = s) (v : T ⟶ S) :
CategoryStruct.comp (equalizerPullbackMapIso hf hg v).hom (pullback.snd (equalizer.ι f g) (pullback.fst s v)) = equalizer.ι (pullback.map s v t v f (CategoryStruct.id T) (CategoryStruct.id S) ⋯ ⋯)
(pullback.map s v t v g (CategoryStruct.id T) (CategoryStruct.id S) ⋯ ⋯)
@[simp]
theorem CategoryTheory.Limits.equalizerPullbackMapIso_hom_snd_assoc {C : Type u} [Category.{v, u} C] [HasEqualizers C] [HasPullbacks C] {X Y S T : C} {f g : X ⟶ Y} {s : X ⟶ S} {t : Y ⟶ S} (hf : CategoryStruct.comp f t = s) (hg : CategoryStruct.comp g t = s) (v : T ⟶ S) {Z : C} (h : pullback s v ⟶ Z) :
CategoryStruct.comp (equalizerPullbackMapIso hf hg v).hom
(CategoryStruct.comp (pullback.snd (equalizer.ι f g) (pullback.fst s v)) h) = CategoryStruct.comp
(equalizer.ι (pullback.map s v t v f (CategoryStruct.id T) (CategoryStruct.id S) ⋯ ⋯)
(pullback.map s v t v g (CategoryStruct.id T) (CategoryStruct.id S) ⋯ ⋯))
h
@[simp]
theorem CategoryTheory.Limits.equalizerPullbackMapIso_inv_ι_fst {C : Type u} [Category.{v, u} C] [HasEqualizers C] [HasPullbacks C] {X Y S T : C} {f g : X ⟶ Y} {s : X ⟶ S} {t : Y ⟶ S} (hf : CategoryStruct.comp f t = s) (hg : CategoryStruct.comp g t = s) (v : T ⟶ S) :
CategoryStruct.comp (equalizerPullbackMapIso hf hg v).inv
(CategoryStruct.comp
(equalizer.ι (pullback.map s v t v f (CategoryStruct.id T) (CategoryStruct.id S) ⋯ ⋯)
(pullback.map s v t v g (CategoryStruct.id T) (CategoryStruct.id S) ⋯ ⋯))
(pullback.fst s v)) = CategoryStruct.comp (pullback.fst (equalizer.ι f g) (pullback.fst s v)) (equalizer.ι f g)
@[simp]
theorem CategoryTheory.Limits.equalizerPullbackMapIso_inv_ι_fst_assoc {C : Type u} [Category.{v, u} C] [HasEqualizers C] [HasPullbacks C] {X Y S T : C} {f g : X ⟶ Y} {s : X ⟶ S} {t : Y ⟶ S} (hf : CategoryStruct.comp f t = s) (hg : CategoryStruct.comp g t = s) (v : T ⟶ S) {Z : C} (h : X ⟶ Z) :
CategoryStruct.comp (equalizerPullbackMapIso hf hg v).inv
(CategoryStruct.comp
(equalizer.ι (pullback.map s v t v f (CategoryStruct.id T) (CategoryStruct.id S) ⋯ ⋯)
(pullback.map s v t v g (CategoryStruct.id T) (CategoryStruct.id S) ⋯ ⋯))
(CategoryStruct.comp (pullback.fst s v) h)) = CategoryStruct.comp (pullback.fst (equalizer.ι f g) (pullback.fst s v)) (CategoryStruct.comp (equalizer.ι f g) h)
@[simp]
theorem CategoryTheory.Limits.equalizerPullbackMapIso_inv_ι_snd {C : Type u} [Category.{v, u} C] [HasEqualizers C] [HasPullbacks C] {X Y S T : C} {f g : X ⟶ Y} {s : X ⟶ S} {t : Y ⟶ S} (hf : CategoryStruct.comp f t = s) (hg : CategoryStruct.comp g t = s) (v : T ⟶ S) :
CategoryStruct.comp (equalizerPullbackMapIso hf hg v).inv
(CategoryStruct.comp
(equalizer.ι (pullback.map s v t v f (CategoryStruct.id T) (CategoryStruct.id S) ⋯ ⋯)
(pullback.map s v t v g (CategoryStruct.id T) (CategoryStruct.id S) ⋯ ⋯))
(pullback.snd s v)) = CategoryStruct.comp (pullback.snd (equalizer.ι f g) (pullback.fst s v)) (pullback.snd s v)
@[simp]
theorem CategoryTheory.Limits.equalizerPullbackMapIso_inv_ι_snd_assoc {C : Type u} [Category.{v, u} C] [HasEqualizers C] [HasPullbacks C] {X Y S T : C} {f g : X ⟶ Y} {s : X ⟶ S} {t : Y ⟶ S} (hf : CategoryStruct.comp f t = s) (hg : CategoryStruct.comp g t = s) (v : T ⟶ S) {Z : C} (h : T ⟶ Z) :
CategoryStruct.comp (equalizerPullbackMapIso hf hg v).inv
(CategoryStruct.comp
(equalizer.ι (pullback.map s v t v f (CategoryStruct.id T) (CategoryStruct.id S) ⋯ ⋯)
(pullback.map s v t v g (CategoryStruct.id T) (CategoryStruct.id S) ⋯ ⋯))
(CategoryStruct.comp (pullback.snd s v) h)) = CategoryStruct.comp (pullback.snd (equalizer.ι f g) (pullback.fst s v)) (CategoryStruct.comp (pullback.snd s v) h)