ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- CategoryTheory.HomOrthogonal.matrixDecomposition_comp
theorem matrixDecomposition_comp (o : HomOrthogonal s) {α β γ : Type} [Finite α] [Fintype β]
    [Finite γ] {f : α → ι} {g : β → ι} {h : γ → ι} (z : (⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b))
    (w : (⨁ fun b => s (g b)) ⟶ ⨁ fun c => s (h c)) (i : ι) :
    o.matrixDecomposition (z ≫ w) i = o.matrixDecomposition w i * o.matrixDecomposition z i 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {ι : Type u_1} {s : ι → C} [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasFiniteBiproducts C] (o : CategoryTheory.HomOrthogonal s) {α β γ : Type} [Finite α] [Fintype β] [Finite γ] {f : α → ι} {g : β → ι} {h : γ → ι} (z : (⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b)) (w : (⨁ fun b => s (g b)) ⟶ ⨁ fun c => s (h c)) (i : ι)
Goal: o.matrixDecomposition (CategoryTheory.CategoryStruct.comp z w) i = o.matrixDecomposition w i * o.matrixDecomposition z i
-- CategoryTheory.HomOrthogonal.matrixDecompositionLinearEquiv_symm_apply
@[simps]
noncomputable def matrixDecompositionLinearEquiv (o : HomOrthogonal s) {α β : Type} [Finite α]
    [Finite β] {f : α → ι} {g : β → ι} :
    ((⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b)) ≃ₗ[R]
      ∀ i : ι, Matrix (g ⁻¹' {i}) (f ⁻¹' {i}) (End (s i)) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {ι : Type u_1} {s : ι → C} [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasFiniteBiproducts C] {R : Type u_2} [Semiring R] [CategoryTheory.Linear R C] (o : CategoryTheory.HomOrthogonal s) {α β : Type} [Finite α] [Finite β] {f : α → ι} {g : β → ι}
Goal: ∀ (a : (i : ι) → Matrix (↑(g ⁻¹' {i})) (↑(f ⁻¹' {i})) (CategoryTheory.End (s i))),
  o.matrixDecompositionLinearEquiv.symm a = o.matrixDecompositionAddEquiv.invFun a
-- CategoryTheory.HomOrthogonal.matrixDecompositionLinearEquiv_apply
@[simps]
noncomputable def matrixDecompositionLinearEquiv (o : HomOrthogonal s) {α β : Type} [Finite α]
    [Finite β] {f : α → ι} {g : β → ι} :
    ((⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b)) ≃ₗ[R]
      ∀ i : ι, Matrix (g ⁻¹' {i}) (f ⁻¹' {i}) (End (s i)) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {ι : Type u_1} {s : ι → C} [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasFiniteBiproducts C] {R : Type u_2} [Semiring R] [CategoryTheory.Linear R C] (o : CategoryTheory.HomOrthogonal s) {α β : Type} [Finite α] [Finite β] {f : α → ι} {g : β → ι}
Goal: ∀ (a : (⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b)) (i : ι),
  o.matrixDecompositionLinearEquiv a i = o.matrixDecompositionAddEquiv.toFun a i
-- CategoryTheory.HomOrthogonal.equiv_of_iso
theorem equiv_of_iso (o : HomOrthogonal s) {α β : Type} [Finite α] [Finite β] {f : α → ι}
    {g : β → ι} (i : (⨁ fun a => s (f a)) ≅ ⨁ fun b => s (g b)) :
    ∃ e : α ≃ β, ∀ a, g (e a) = f a 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {ι : Type u_1} {s : ι → C} [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasFiniteBiproducts C] [∀ (i : ι), InvariantBasisNumber (CategoryTheory.End (s i))] (o : CategoryTheory.HomOrthogonal s) {α β : Type} [Finite α] [Finite β] {f : α → ι} {g : β → ι} (i : (⨁ fun a => s (f a)) ≅ ⨁ fun b => s (g b))
Goal: ∃ e, ∀ (a : α), g (e a) = f a
-- CategoryTheory.Preadditive.isSeparating_iff
theorem Preadditive.isSeparating_iff (𝒢 : Set C) :
    IsSeparating 𝒢 ↔ ∀ ⦃X Y : C⦄ (f : X ⟶ Y), (∀ G ∈ 𝒢, ∀ (h : G ⟶ X), h ≫ f = 0) → f = 0 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] (𝒢 : Set C)
Goal: CategoryTheory.IsSeparating 𝒢 ↔ ∀ ⦃X Y : C⦄ (f : X ⟶ Y), (∀ G ∈ 𝒢, ∀ (h : G ⟶ X), h ≫ f = 0) → f = 0
-- CategoryTheory.Preadditive.isCoseparating_iff
theorem Preadditive.isCoseparating_iff (𝒢 : Set C) :
    IsCoseparating 𝒢 ↔ ∀ ⦃X Y : C⦄ (f : X ⟶ Y), (∀ G ∈ 𝒢, ∀ (h : Y ⟶ G), f ≫ h = 0) → f = 0 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] (𝒢 : Set C)
Goal: CategoryTheory.IsCoseparating 𝒢 ↔ ∀ ⦃X Y : C⦄ (f : X ⟶ Y), (∀ G ∈ 𝒢, ∀ (h : Y ⟶ G), f ≫ h = 0) → f = 0
-- CategoryTheory.Preadditive.isSeparator_iff
theorem Preadditive.isSeparator_iff (G : C) :
    IsSeparator G ↔ ∀ ⦃X Y : C⦄ (f : X ⟶ Y), (∀ h : G ⟶ X, h ≫ f = 0) → f = 0 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] (G : C)
Goal: CategoryTheory.IsSeparator G ↔ ∀ ⦃X Y : C⦄ (f : X ⟶ Y), (∀ (h : G ⟶ X), h ≫ f = 0) → f = 0
-- CategoryTheory.Preadditive.isCoseparator_iff
theorem Preadditive.isCoseparator_iff (G : C) :
    IsCoseparator G ↔ ∀ ⦃X Y : C⦄ (f : X ⟶ Y), (∀ h : Y ⟶ G, f ≫ h = 0) → f = 0 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] (G : C)
Goal: CategoryTheory.IsCoseparator G ↔ ∀ ⦃X Y : C⦄ (f : X ⟶ Y), (∀ (h : Y ⟶ G), f ≫ h = 0) → f = 0
-- CategoryTheory.isSeparator_iff_faithful_preadditiveCoyoneda
theorem isSeparator_iff_faithful_preadditiveCoyoneda (G : C) :
    IsSeparator G ↔ (preadditiveCoyoneda.obj (op G)).Faithful 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] (G : C)
Goal: CategoryTheory.IsSeparator G ↔ (CategoryTheory.preadditiveCoyoneda.obj (Opposite.op G)).Faithful
-- CategoryTheory.isSeparator_iff_faithful_preadditiveCoyonedaObj
theorem isSeparator_iff_faithful_preadditiveCoyonedaObj (G : C) :
    IsSeparator G ↔ (preadditiveCoyonedaObj (op G)).Faithful 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] (G : C)
Goal: CategoryTheory.IsSeparator G ↔ (CategoryTheory.preadditiveCoyonedaObj (Opposite.op G)).Faithful
-- CategoryTheory.isCoseparator_iff_faithful_preadditiveYoneda
theorem isCoseparator_iff_faithful_preadditiveYoneda (G : C) :
    IsCoseparator G ↔ (preadditiveYoneda.obj G).Faithful 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] (G : C)
Goal: CategoryTheory.IsCoseparator G ↔ (CategoryTheory.preadditiveYoneda.obj G).Faithful
-- CategoryTheory.isCoseparator_iff_faithful_preadditiveYonedaObj
theorem isCoseparator_iff_faithful_preadditiveYonedaObj (G : C) :
    IsCoseparator G ↔ (preadditiveYonedaObj G).Faithful 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] (G : C)
Goal: CategoryTheory.IsCoseparator G ↔ (CategoryTheory.preadditiveYonedaObj G).Faithful
-- CategoryTheory.Preadditive.add_comp
class Preadditive where
  homGroup : ∀ P Q : C, AddCommGroup (P ⟶ Q) := by infer_instance
  add_comp : ∀ (P Q R : C) (f f' : P ⟶ Q) (g : Q ⟶ R), (f + f') ≫ g = f ≫ g + f' ≫ g := by
    aesop_cat
  comp_add : ∀ (P Q R : C) (f : P ⟶ Q) (g g' : Q ⟶ R), f ≫ (g + g') = f ≫ g + f ≫ g' := by
    aesop_cat
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [self : CategoryTheory.Preadditive C] (P Q R : C) (f f' : P ⟶ Q) (g : Q ⟶ R)
Goal: (f + f') ≫ g = f ≫ g + f' ≫ g
-- CategoryTheory.Preadditive.comp_add
class Preadditive where
  homGroup : ∀ P Q : C, AddCommGroup (P ⟶ Q) := by infer_instance
  add_comp : ∀ (P Q R : C) (f f' : P ⟶ Q) (g : Q ⟶ R), (f + f') ≫ g = f ≫ g + f' ≫ g := by
    aesop_cat
  comp_add : ∀ (P Q R : C) (f : P ⟶ Q) (g g' : Q ⟶ R), f ≫ (g + g') = f ≫ g + f ≫ g' := by
    aesop_cat
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [self : CategoryTheory.Preadditive C] (P Q R : C) (f : P ⟶ Q) (g g' : Q ⟶ R)
Goal: f ≫ (g + g') = f ≫ g + f ≫ g'
-- CategoryTheory.Preadditive.sub_comp
@[reassoc, simp]
theorem sub_comp : (f - f') ≫ g = f ≫ g - f' ≫ g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {P Q R : C} (f f' : P ⟶ Q) (g : Q ⟶ R)
Goal: (f - f') ≫ g = f ≫ g - f' ≫ g
-- CategoryTheory.Preadditive.comp_sub
@[reassoc, simp]
theorem comp_sub : f ≫ (g - g') = f ≫ g - f ≫ g' 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {P Q R : C} (f : P ⟶ Q) (g g' : Q ⟶ R)
Goal: f ≫ (g - g') = f ≫ g - f ≫ g'
-- CategoryTheory.Preadditive.neg_comp
@[reassoc, simp]
theorem neg_comp : (-f) ≫ g = -f ≫ g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {P Q R : C} (f : P ⟶ Q) (g : Q ⟶ R)
Goal: (-f) ≫ g = -f ≫ g
-- CategoryTheory.Preadditive.comp_neg
@[reassoc, simp]
theorem comp_neg : f ≫ (-g) = -f ≫ g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {P Q R : C} (f : P ⟶ Q) (g : Q ⟶ R)
Goal: f ≫ (-g) = -f ≫ g
-- CategoryTheory.Preadditive.neg_comp_neg
@[reassoc]
theorem neg_comp_neg : (-f) ≫ (-g) = f ≫ g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {P Q R : C} (f : P ⟶ Q) (g : Q ⟶ R)
Goal: (-f) ≫ (-g) = f ≫ g
-- CategoryTheory.Preadditive.nsmul_comp
theorem nsmul_comp (n : ℕ) : (n • f) ≫ g = n • f ≫ g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {P Q R : C} (f : P ⟶ Q) (g : Q ⟶ R) (n : ℕ)
Goal: (n • f) ≫ g = n • f ≫ g
-- CategoryTheory.Preadditive.comp_nsmul
theorem comp_nsmul (n : ℕ) : f ≫ (n • g) = n • f ≫ g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {P Q R : C} (f : P ⟶ Q) (g : Q ⟶ R) (n : ℕ)
Goal: f ≫ (n • g) = n • f ≫ g
-- CategoryTheory.Preadditive.zsmul_comp
theorem zsmul_comp (n : ℤ) : (n • f) ≫ g = n • f ≫ g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {P Q R : C} (f : P ⟶ Q) (g : Q ⟶ R) (n : ℤ)
Goal: (n • f) ≫ g = n • f ≫ g
-- CategoryTheory.Preadditive.comp_zsmul
theorem comp_zsmul (n : ℤ) : f ≫ (n • g) = n • f ≫ g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {P Q R : C} (f : P ⟶ Q) (g : Q ⟶ R) (n : ℤ)
Goal: f ≫ (n • g) = n • f ≫ g
-- CategoryTheory.Preadditive.comp_sum
@[reassoc]
theorem comp_sum {P Q R : C} {J : Type*} (s : Finset J) (f : P ⟶ Q) (g : J → (Q ⟶ R)) :
    (f ≫ ∑ j ∈ s, g j) = ∑ j ∈ s, f ≫ g j 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {P Q R : C} {J : Type u_1} (s : Finset J) (f : P ⟶ Q) (g : J → (Q ⟶ R))
Goal: f ≫ ∑ j ∈ s, g j = ∑ j ∈ s, f ≫ g j
-- CategoryTheory.Preadditive.sum_comp
@[reassoc]
theorem sum_comp {P Q R : C} {J : Type*} (s : Finset J) (f : J → (P ⟶ Q)) (g : Q ⟶ R) :
    (∑ j ∈ s, f j) ≫ g = ∑ j ∈ s, f j ≫ g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {P Q R : C} {J : Type u_1} (s : Finset J) (f : J → (P ⟶ Q)) (g : Q ⟶ R)
Goal: (∑ j ∈ s, f j) ≫ g = ∑ j ∈ s, f j ≫ g
-- CategoryTheory.Preadditive.mono_of_cancel_zero
theorem mono_of_cancel_zero {Q R : C} (f : Q ⟶ R) (h : ∀ {P : C} (g : P ⟶ Q), g ≫ f = 0 → g = 0) :
    Mono f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {Q R : C} (f : Q ⟶ R) (h : ∀ {P : C} (g : P ⟶ Q), g ≫ f = 0 → g = 0)
Goal: CategoryTheory.Mono f
-- CategoryTheory.Preadditive.mono_iff_cancel_zero
theorem mono_iff_cancel_zero {Q R : C} (f : Q ⟶ R) :
    Mono f ↔ ∀ (P : C) (g : P ⟶ Q), g ≫ f = 0 → g = 0 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {Q R : C} (f : Q ⟶ R)
Goal: CategoryTheory.Mono f ↔ ∀ (P : C) (g : P ⟶ Q), g ≫ f = 0 → g = 0
-- CategoryTheory.Preadditive.mono_of_kernel_zero
theorem mono_of_kernel_zero {X Y : C} {f : X ⟶ Y} [HasLimit (parallelPair f 0)]
    (w : kernel.ι f = 0) : Mono f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasLimit (CategoryTheory.Limits.parallelPair f 0)] (w : CategoryTheory.Limits.kernel.ι f = 0)
Goal: CategoryTheory.Mono f
-- CategoryTheory.Preadditive.mono_of_isZero_kernel'
lemma mono_of_isZero_kernel' {X Y : C} {f : X ⟶ Y} (c : KernelFork f) (hc : IsLimit c)
    (h : IsZero c.pt) : Mono f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f : X ⟶ Y} (c : CategoryTheory.Limits.KernelFork f) (hc : CategoryTheory.Limits.IsLimit c) (h : CategoryTheory.Limits.IsZero c.pt)
Goal: CategoryTheory.Mono f
-- CategoryTheory.Preadditive.mono_of_isZero_kernel
lemma mono_of_isZero_kernel {X Y : C} (f : X ⟶ Y) [HasKernel f] (h : IsZero (kernel f)) :
    Mono f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] (h : CategoryTheory.Limits.IsZero (CategoryTheory.Limits.kernel f))
Goal: CategoryTheory.Mono f
-- CategoryTheory.Preadditive.epi_of_cancel_zero
theorem epi_of_cancel_zero {P Q : C} (f : P ⟶ Q) (h : ∀ {R : C} (g : Q ⟶ R), f ≫ g = 0 → g = 0) :
    Epi f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {P Q : C} (f : P ⟶ Q) (h : ∀ {R : C} (g : Q ⟶ R), f ≫ g = 0 → g = 0)
Goal: CategoryTheory.Epi f
-- CategoryTheory.Preadditive.epi_iff_cancel_zero
theorem epi_iff_cancel_zero {P Q : C} (f : P ⟶ Q) :
    Epi f ↔ ∀ (R : C) (g : Q ⟶ R), f ≫ g = 0 → g = 0 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {P Q : C} (f : P ⟶ Q)
Goal: CategoryTheory.Epi f ↔ ∀ (R : C) (g : Q ⟶ R), f ≫ g = 0 → g = 0
-- CategoryTheory.Preadditive.epi_of_cokernel_zero
theorem epi_of_cokernel_zero {X Y : C} {f : X ⟶ Y} [HasColimit (parallelPair f 0)]
    (w : cokernel.π f = 0) : Epi f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasColimit (CategoryTheory.Limits.parallelPair f 0)] (w : CategoryTheory.Limits.cokernel.π f = 0)
Goal: CategoryTheory.Epi f
-- CategoryTheory.Preadditive.epi_of_isZero_cokernel'
lemma epi_of_isZero_cokernel' {X Y : C} {f : X ⟶ Y} (c : CokernelCofork f) (hc : IsColimit c)
    (h : IsZero c.pt) : Epi f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f : X ⟶ Y} (c : CategoryTheory.Limits.CokernelCofork f) (hc : CategoryTheory.Limits.IsColimit c) (h : CategoryTheory.Limits.IsZero c.pt)
Goal: CategoryTheory.Epi f
-- CategoryTheory.Preadditive.epi_of_isZero_cokernel
lemma epi_of_isZero_cokernel {X Y : C} (f : X ⟶ Y) [HasCokernel f] (h : IsZero (cokernel f)) :
    Epi f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasCokernel f] (h : CategoryTheory.Limits.IsZero (CategoryTheory.Limits.cokernel f))
Goal: CategoryTheory.Epi f
-- CategoryTheory.Preadditive.IsIso.comp_left_eq_zero
@[simp]
theorem comp_left_eq_zero [IsIso f] : f ≫ g = 0 ↔ g = 0 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {P Q R : C} (f : P ⟶ Q) (g : Q ⟶ R) [CategoryTheory.IsIso f]
Goal: f ≫ g = 0 ↔ g = 0
-- CategoryTheory.Preadditive.IsIso.comp_right_eq_zero
@[simp]
theorem comp_right_eq_zero [IsIso g] : f ≫ g = 0 ↔ f = 0 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {P Q R : C} (f : P ⟶ Q) (g : Q ⟶ R) [CategoryTheory.IsIso g]
Goal: f ≫ g = 0 ↔ f = 0
-- CategoryTheory.Preadditive.mono_of_kernel_iso_zero
theorem mono_of_kernel_iso_zero {X Y : C} {f : X ⟶ Y} [HasLimit (parallelPair f 0)]
    (w : kernel f ≅ 0) : Mono f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasZeroObject C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasLimit (CategoryTheory.Limits.parallelPair f 0)] (w : CategoryTheory.Limits.kernel f ≅ 0)
Goal: CategoryTheory.Mono f
-- CategoryTheory.Preadditive.epi_of_cokernel_iso_zero
theorem epi_of_cokernel_iso_zero {X Y : C} {f : X ⟶ Y} [HasColimit (parallelPair f 0)]
    (w : cokernel f ≅ 0) : Epi f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasZeroObject C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasColimit (CategoryTheory.Limits.parallelPair f 0)] (w : CategoryTheory.Limits.cokernel f ≅ 0)
Goal: CategoryTheory.Epi f
-- CategoryTheory.Preadditive.forkOfKernelFork_pt
@[simps! pt]
def forkOfKernelFork (c : KernelFork (f - g)) : Fork f g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f g : X ⟶ Y} (c : CategoryTheory.Limits.KernelFork (f - g))
Goal: (CategoryTheory.Preadditive.forkOfKernelFork c).pt = c.pt
-- CategoryTheory.Preadditive.forkOfKernelFork_ι
@[simp]
theorem forkOfKernelFork_ι (c : KernelFork (f - g)) : (forkOfKernelFork c).ι = c.ι 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f g : X ⟶ Y} (c : CategoryTheory.Limits.KernelFork (f - g))
Goal: (CategoryTheory.Preadditive.forkOfKernelFork c).ι = CategoryTheory.Limits.Fork.ι c
-- CategoryTheory.Preadditive.kernelForkOfFork_ι
@[simp]
theorem kernelForkOfFork_ι (c : Fork f g) : (kernelForkOfFork c).ι = c.ι 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f g : X ⟶ Y} (c : CategoryTheory.Limits.Fork f g)
Goal: CategoryTheory.Limits.Fork.ι (CategoryTheory.Preadditive.kernelForkOfFork c) = c.ι
-- CategoryTheory.Preadditive.kernelForkOfFork_ofι
@[simp]
theorem kernelForkOfFork_ofι {P : C} (ι : P ⟶ X) (w : ι ≫ f = ι ≫ g) :
    kernelForkOfFork (Fork.ofι ι w) = KernelFork.ofι ι (by simp [w]) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f g : X ⟶ Y} {P : C} (ι : P ⟶ X) (w : ι ≫ f = ι ≫ g)
Goal: CategoryTheory.Preadditive.kernelForkOfFork (CategoryTheory.Limits.Fork.ofι ι w) =
  CategoryTheory.Limits.KernelFork.ofι ι ⋯
-- CategoryTheory.Preadditive.isLimitForkOfKernelFork_lift
@[simp]
theorem isLimitForkOfKernelFork_lift {c : KernelFork (f - g)} (i : IsLimit c) (s : Fork f g) :
    (isLimitForkOfKernelFork i).lift s = i.lift (kernelForkOfFork s) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f g : X ⟶ Y} {c : CategoryTheory.Limits.KernelFork (f - g)} (i : CategoryTheory.Limits.IsLimit c) (s : CategoryTheory.Limits.Fork f g)
Goal: (CategoryTheory.Preadditive.isLimitForkOfKernelFork i).lift s = i.lift (CategoryTheory.Preadditive.kernelForkOfFork s)
-- CategoryTheory.Preadditive.hasEqualizer_of_hasKernel
theorem hasEqualizer_of_hasKernel [HasKernel (f - g)] : HasEqualizer f g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} (f g : X ⟶ Y) [CategoryTheory.Limits.HasKernel (f - g)]
Goal: CategoryTheory.Limits.HasEqualizer f g
-- CategoryTheory.Preadditive.hasKernel_of_hasEqualizer
theorem hasKernel_of_hasEqualizer [HasEqualizer f g] : HasKernel (f - g) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} (f g : X ⟶ Y) [CategoryTheory.Limits.HasEqualizer f g]
Goal: CategoryTheory.Limits.HasKernel (f - g)
-- CategoryTheory.Preadditive.coforkOfCokernelCofork_pt
@[simps! pt]
def coforkOfCokernelCofork (c : CokernelCofork (f - g)) : Cofork f g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f g : X ⟶ Y} (c : CategoryTheory.Limits.CokernelCofork (f - g))
Goal: (CategoryTheory.Preadditive.coforkOfCokernelCofork c).pt = c.pt
-- CategoryTheory.Preadditive.coforkOfCokernelCofork_π
@[simp]
theorem coforkOfCokernelCofork_π (c : CokernelCofork (f - g)) :
    (coforkOfCokernelCofork c).π = c.π 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f g : X ⟶ Y} (c : CategoryTheory.Limits.CokernelCofork (f - g))
Goal: (CategoryTheory.Preadditive.coforkOfCokernelCofork c).π = CategoryTheory.Limits.Cofork.π c
-- CategoryTheory.Preadditive.cokernelCoforkOfCofork_π
@[simp]
theorem cokernelCoforkOfCofork_π (c : Cofork f g) : (cokernelCoforkOfCofork c).π = c.π 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f g : X ⟶ Y} (c : CategoryTheory.Limits.Cofork f g)
Goal: CategoryTheory.Limits.Cofork.π (CategoryTheory.Preadditive.cokernelCoforkOfCofork c) = c.π
-- CategoryTheory.Preadditive.cokernelCoforkOfCofork_ofπ
@[simp]
theorem cokernelCoforkOfCofork_ofπ {P : C} (π : Y ⟶ P) (w : f ≫ π = g ≫ π) :
    cokernelCoforkOfCofork (Cofork.ofπ π w) = CokernelCofork.ofπ π (by simp [w]) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f g : X ⟶ Y} {P : C} (π : Y ⟶ P) (w : f ≫ π = g ≫ π)
Goal: CategoryTheory.Preadditive.cokernelCoforkOfCofork (CategoryTheory.Limits.Cofork.ofπ π w) =
  CategoryTheory.Limits.CokernelCofork.ofπ π ⋯
-- CategoryTheory.Preadditive.isColimitCoforkOfCokernelCofork_desc
@[simp]
theorem isColimitCoforkOfCokernelCofork_desc {c : CokernelCofork (f - g)} (i : IsColimit c)
    (s : Cofork f g) :
    (isColimitCoforkOfCokernelCofork i).desc s = i.desc (cokernelCoforkOfCofork s) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f g : X ⟶ Y} {c : CategoryTheory.Limits.CokernelCofork (f - g)} (i : CategoryTheory.Limits.IsColimit c) (s : CategoryTheory.Limits.Cofork f g)
Goal: (CategoryTheory.Preadditive.isColimitCoforkOfCokernelCofork i).desc s =
  i.desc (CategoryTheory.Preadditive.cokernelCoforkOfCofork s)
-- CategoryTheory.Preadditive.hasCoequalizer_of_hasCokernel
theorem hasCoequalizer_of_hasCokernel [HasCokernel (f - g)] : HasCoequalizer f g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} (f g : X ⟶ Y) [CategoryTheory.Limits.HasCokernel (f - g)]
Goal: CategoryTheory.Limits.HasCoequalizer f g
-- CategoryTheory.Preadditive.hasCokernel_of_hasCoequalizer
theorem hasCokernel_of_hasCoequalizer [HasCoequalizer f g] : HasCokernel (f - g) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} (f g : X ⟶ Y) [CategoryTheory.Limits.HasCoequalizer f g]
Goal: CategoryTheory.Limits.HasCokernel (f - g)
-- CategoryTheory.Preadditive.hasEqualizers_of_hasKernels
theorem hasEqualizers_of_hasKernels [HasKernels C] : HasEqualizers C 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasKernels C]
Goal: CategoryTheory.Limits.HasEqualizers C
-- CategoryTheory.Preadditive.hasCoequalizers_of_hasCokernels
theorem hasCoequalizers_of_hasCokernels [HasCokernels C] : HasCoequalizers C 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasCokernels C]
Goal: CategoryTheory.Limits.HasCoequalizers C
-- CategoryTheory.Preadditive.smul_iso_hom
@[simp]
lemma smul_iso_hom (a : Units ℤ) (e : X ≅ Y) : (a • e).hom = a • e.hom 
Arguments: {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] {X Y : C} (a : ℤˣ) (e : X ≅ Y)
Goal: (a • e).hom = a • e.hom
-- CategoryTheory.Preadditive.smul_iso_inv
@[simp]
lemma smul_iso_inv (a : Units ℤ) (e : X ≅ Y) : (a • e).inv = a⁻¹ • e.inv 
Arguments: {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] {X Y : C} (a : ℤˣ) (e : X ≅ Y)
Goal: (a • e).inv = a⁻¹ • e.inv
-- CategoryTheory.Preadditive.neg_iso_hom
@[simp]
lemma neg_iso_hom (e : X ≅ Y) : (-e).hom = -e.hom 
Arguments: {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] {X Y : C} (e : X ≅ Y)
Goal: (-e).hom = -e.hom
-- CategoryTheory.Preadditive.neg_iso_inv
@[simp]
lemma neg_iso_inv (e : X ≅ Y) : (-e).inv = -e.inv 
Arguments: {C : Type u_1} [CategoryTheory.Category.{u_2, u_1} C] [CategoryTheory.Preadditive C] {X Y : C} (e : X ≅ Y)
Goal: (-e).inv = -e.inv
-- CategoryTheory.Injective.factors
class Injective (J : C) : Prop where
  factors : ∀ {X Y : C} (g : X ⟶ J) (f : X ⟶ Y) [Mono f], ∃ h : Y ⟶ J, f ≫ h = g
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {J : C} [self : CategoryTheory.Injective J] {X Y : C} (g : X ⟶ J) (f : X ⟶ Y) [CategoryTheory.Mono f]
Goal: ∃ h, f ≫ h = g
-- CategoryTheory.Limits.IsZero.injective
lemma Limits.IsZero.injective {X : C} (h : IsZero X) : Injective X 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} (h : CategoryTheory.Limits.IsZero X)
Goal: CategoryTheory.Injective X
-- CategoryTheory.InjectivePresentation.mono
structure InjectivePresentation (X : C) where
  J : C
  injective : Injective J := by infer_instance
  f : X ⟶ J
  mono : Mono f := by infer_instance
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} (self : CategoryTheory.InjectivePresentation X)
Goal: CategoryTheory.Mono self.f