ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- CategoryTheory.Limits.biproduct.lift_map
@[reassoc (attr := simp)]
theorem biproduct.lift_map {f g : J → C} [HasBiproduct f] [HasBiproduct g] {P : C}
    (k : ∀ j, P ⟶ f j) (p : ∀ j, f j ⟶ g j) :
    biproduct.lift k ≫ biproduct.map p = biproduct.lift fun j => k j ≫ p j 
Arguments: {J : Type w} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {f g : J → C} [CategoryTheory.Limits.HasBiproduct f] [CategoryTheory.Limits.HasBiproduct g] {P : C} (k : (j : J) → P ⟶ f j) (p : (j : J) → f j ⟶ g j)
Goal: CategoryTheory.Limits.biproduct.lift k ≫ CategoryTheory.Limits.biproduct.map p =
  CategoryTheory.Limits.biproduct.lift fun j => k j ≫ p j
-- CategoryTheory.Limits.biproduct.mapIso_inv
@[simps]
def biproduct.mapIso {f g : J → C} [HasBiproduct f] [HasBiproduct g] (p : ∀ b, f b ≅ g b) :
    ⨁ f ≅ ⨁ g 
Arguments: {J : Type w} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {f g : J → C} [CategoryTheory.Limits.HasBiproduct f] [CategoryTheory.Limits.HasBiproduct g] (p : (b : J) → f b ≅ g b)
Goal: (CategoryTheory.Limits.biproduct.mapIso p).inv = CategoryTheory.Limits.biproduct.map fun b => (p b).inv
-- CategoryTheory.Limits.biproduct.mapIso_hom
@[simps]
def biproduct.mapIso {f g : J → C} [HasBiproduct f] [HasBiproduct g] (p : ∀ b, f b ≅ g b) :
    ⨁ f ≅ ⨁ g 
Arguments: {J : Type w} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {f g : J → C} [CategoryTheory.Limits.HasBiproduct f] [CategoryTheory.Limits.HasBiproduct g] (p : (b : J) → f b ≅ g b)
Goal: (CategoryTheory.Limits.biproduct.mapIso p).hom = CategoryTheory.Limits.biproduct.map fun b => (p b).hom
-- CategoryTheory.Limits.biproduct.whiskerEquiv_hom
@[simps]
def biproduct.whiskerEquiv {f : J → C} {g : K → C} (e : J ≃ K) (w : ∀ j, g (e j) ≅ f j)
    [HasBiproduct f] [HasBiproduct g] : ⨁ f ≅ ⨁ g 
Arguments: {J : Type w} {K : Type u_1} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {f : J → C} {g : K → C} (e : J ≃ K) (w : (j : J) → g (e j) ≅ f j) [CategoryTheory.Limits.HasBiproduct f] [CategoryTheory.Limits.HasBiproduct g]
Goal: (CategoryTheory.Limits.biproduct.whiskerEquiv e w).hom =
  CategoryTheory.Limits.biproduct.desc fun j => (w j).inv ≫ CategoryTheory.Limits.biproduct.ι g (e j)
-- CategoryTheory.Limits.biproduct.whiskerEquiv_inv
@[simps]
def biproduct.whiskerEquiv {f : J → C} {g : K → C} (e : J ≃ K) (w : ∀ j, g (e j) ≅ f j)
    [HasBiproduct f] [HasBiproduct g] : ⨁ f ≅ ⨁ g 
Arguments: {J : Type w} {K : Type u_1} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {f : J → C} {g : K → C} (e : J ≃ K) (w : (j : J) → g (e j) ≅ f j) [CategoryTheory.Limits.HasBiproduct f] [CategoryTheory.Limits.HasBiproduct g]
Goal: (CategoryTheory.Limits.biproduct.whiskerEquiv e w).inv =
  CategoryTheory.Limits.biproduct.desc fun k =>
    CategoryTheory.eqToHom ⋯ ≫ (w (e.symm k)).hom ≫ CategoryTheory.Limits.biproduct.ι f (e.symm k)
-- CategoryTheory.Limits.biproduct.whiskerEquiv_hom_eq_lift
lemma biproduct.whiskerEquiv_hom_eq_lift {f : J → C} {g : K → C} (e : J ≃ K)
    (w : ∀ j, g (e j) ≅ f j) [HasBiproduct f] [HasBiproduct g] :
    (biproduct.whiskerEquiv e w).hom =
      biproduct.lift fun k => biproduct.π f (e.symm k) ≫ (w _).inv ≫ eqToHom (by simp) 
Arguments: {J : Type w} {K : Type u_1} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {f : J → C} {g : K → C} (e : J ≃ K) (w : (j : J) → g (e j) ≅ f j) [CategoryTheory.Limits.HasBiproduct f] [CategoryTheory.Limits.HasBiproduct g]
Goal: (CategoryTheory.Limits.biproduct.whiskerEquiv e w).hom =
  CategoryTheory.Limits.biproduct.lift fun k =>
    CategoryTheory.Limits.biproduct.π f (e.symm k) ≫ (w (e.symm k)).inv ≫ CategoryTheory.eqToHom ⋯
-- CategoryTheory.Limits.biproduct.whiskerEquiv_inv_eq_lift
lemma biproduct.whiskerEquiv_inv_eq_lift {f : J → C} {g : K → C} (e : J ≃ K)
    (w : ∀ j, g (e j) ≅ f j) [HasBiproduct f] [HasBiproduct g] :
    (biproduct.whiskerEquiv e w).inv =
      biproduct.lift fun j => biproduct.π g (e j) ≫ (w j).hom 
Arguments: {J : Type w} {K : Type u_1} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {f : J → C} {g : K → C} (e : J ≃ K) (w : (j : J) → g (e j) ≅ f j) [CategoryTheory.Limits.HasBiproduct f] [CategoryTheory.Limits.HasBiproduct g]
Goal: (CategoryTheory.Limits.biproduct.whiskerEquiv e w).inv =
  CategoryTheory.Limits.biproduct.lift fun j => CategoryTheory.Limits.biproduct.π g (e j) ≫ (w j).hom
-- CategoryTheory.Limits.biproductBiproductIso_inv
@[simps]
def biproductBiproductIso {ι} (f : ι → Type*) (g : (i : ι) → (f i) → C)
    [∀ i, HasBiproduct (g i)] [HasBiproduct fun i => ⨁ g i] :
    (⨁ fun i => ⨁ g i) ≅ (⨁ fun p : Σ i, f i => g p.1 p.2) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {ι : Type u_3} (f : ι → Type u_2) (g : (i : ι) → f i → C) [∀ (i : ι), CategoryTheory.Limits.HasBiproduct (g i)] [CategoryTheory.Limits.HasBiproduct fun i => ⨁ g i]
Goal: (CategoryTheory.Limits.biproductBiproductIso f g).inv =
  CategoryTheory.Limits.biproduct.lift fun i =>
    CategoryTheory.Limits.biproduct.lift fun x => CategoryTheory.Limits.biproduct.π (fun p => g p.fst p.snd) ⟨i, x⟩
-- CategoryTheory.Limits.biproductBiproductIso_hom
@[simps]
def biproductBiproductIso {ι} (f : ι → Type*) (g : (i : ι) → (f i) → C)
    [∀ i, HasBiproduct (g i)] [HasBiproduct fun i => ⨁ g i] :
    (⨁ fun i => ⨁ g i) ≅ (⨁ fun p : Σ i, f i => g p.1 p.2) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {ι : Type u_3} (f : ι → Type u_2) (g : (i : ι) → f i → C) [∀ (i : ι), CategoryTheory.Limits.HasBiproduct (g i)] [CategoryTheory.Limits.HasBiproduct fun i => ⨁ g i]
Goal: (CategoryTheory.Limits.biproductBiproductIso f g).hom =
  CategoryTheory.Limits.biproduct.lift fun x =>
    match x with
    | ⟨i, x⟩ => CategoryTheory.Limits.biproduct.π (fun i => ⨁ g i) i ≫ CategoryTheory.Limits.biproduct.π (g i) x
-- CategoryTheory.Limits.biproduct.fromSubtype_π
@[reassoc (attr := simp)]
theorem biproduct.fromSubtype_π [DecidablePred p] (j : J) :
    biproduct.fromSubtype f p ≫ biproduct.π f j =
      if h : p j then biproduct.π (Subtype.restrict p f) ⟨j, h⟩ else 0 
Arguments: {J : Type w} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (f : J → C) [CategoryTheory.Limits.HasBiproduct f] (p : J → Prop) [CategoryTheory.Limits.HasBiproduct (Subtype.restrict p f)] [DecidablePred p] (j : J)
Goal: CategoryTheory.Limits.biproduct.fromSubtype f p ≫ CategoryTheory.Limits.biproduct.π f j =
  if h : p j then CategoryTheory.Limits.biproduct.π (Subtype.restrict p f) ⟨j, h⟩ else 0
-- CategoryTheory.Limits.biproduct.fromSubtype_eq_lift
theorem biproduct.fromSubtype_eq_lift [DecidablePred p] :
    biproduct.fromSubtype f p =
      biproduct.lift fun j => if h : p j then biproduct.π (Subtype.restrict p f) ⟨j, h⟩ else 0 
Arguments: {J : Type w} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (f : J → C) [CategoryTheory.Limits.HasBiproduct f] (p : J → Prop) [CategoryTheory.Limits.HasBiproduct (Subtype.restrict p f)] [DecidablePred p]
Goal: CategoryTheory.Limits.biproduct.fromSubtype f p =
  CategoryTheory.Limits.biproduct.lift fun j =>
    if h : p j then CategoryTheory.Limits.biproduct.π (Subtype.restrict p f) ⟨j, h⟩ else 0
-- CategoryTheory.Limits.biproduct.fromSubtype_π_subtype
@[reassoc] -- Porting note: both version solved using simp
theorem biproduct.fromSubtype_π_subtype (j : Subtype p) :
    biproduct.fromSubtype f p ≫ biproduct.π f j = biproduct.π (Subtype.restrict p f) j 
Arguments: {J : Type w} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (f : J → C) [CategoryTheory.Limits.HasBiproduct f] (p : J → Prop) [CategoryTheory.Limits.HasBiproduct (Subtype.restrict p f)] (j : Subtype p)
Goal: CategoryTheory.Limits.biproduct.fromSubtype f p ≫ CategoryTheory.Limits.biproduct.π f ↑j =
  CategoryTheory.Limits.biproduct.π (Subtype.restrict p f) j
-- CategoryTheory.Limits.biproduct.toSubtype_π
@[reassoc (attr := simp)]
theorem biproduct.toSubtype_π (j : Subtype p) :
    biproduct.toSubtype f p ≫ biproduct.π (Subtype.restrict p f) j = biproduct.π f j 
Arguments: {J : Type w} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (f : J → C) [CategoryTheory.Limits.HasBiproduct f] (p : J → Prop) [CategoryTheory.Limits.HasBiproduct (Subtype.restrict p f)] (j : Subtype p)
Goal: CategoryTheory.Limits.biproduct.toSubtype f p ≫ CategoryTheory.Limits.biproduct.π (Subtype.restrict p f) j =
  CategoryTheory.Limits.biproduct.π f ↑j
-- CategoryTheory.Limits.biproduct.ι_toSubtype
@[reassoc (attr := simp)]
theorem biproduct.ι_toSubtype [DecidablePred p] (j : J) :
    biproduct.ι f j ≫ biproduct.toSubtype f p =
      if h : p j then biproduct.ι (Subtype.restrict p f) ⟨j, h⟩ else 0 
Arguments: {J : Type w} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (f : J → C) [CategoryTheory.Limits.HasBiproduct f] (p : J → Prop) [CategoryTheory.Limits.HasBiproduct (Subtype.restrict p f)] [DecidablePred p] (j : J)
Goal: CategoryTheory.Limits.biproduct.ι f j ≫ CategoryTheory.Limits.biproduct.toSubtype f p =
  if h : p j then CategoryTheory.Limits.biproduct.ι (Subtype.restrict p f) ⟨j, h⟩ else 0
-- CategoryTheory.Limits.biproduct.toSubtype_eq_desc
theorem biproduct.toSubtype_eq_desc [DecidablePred p] :
    biproduct.toSubtype f p =
      biproduct.desc fun j => if h : p j then biproduct.ι (Subtype.restrict p f) ⟨j, h⟩ else 0 
Arguments: {J : Type w} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (f : J → C) [CategoryTheory.Limits.HasBiproduct f] (p : J → Prop) [CategoryTheory.Limits.HasBiproduct (Subtype.restrict p f)] [DecidablePred p]
Goal: CategoryTheory.Limits.biproduct.toSubtype f p =
  CategoryTheory.Limits.biproduct.desc fun j =>
    if h : p j then CategoryTheory.Limits.biproduct.ι (Subtype.restrict p f) ⟨j, h⟩ else 0
-- CategoryTheory.Limits.biproduct.ι_toSubtype_subtype
@[reassoc] -- Porting note (#10618): simp can prove both versions
theorem biproduct.ι_toSubtype_subtype (j : Subtype p) :
    biproduct.ι f j ≫ biproduct.toSubtype f p = biproduct.ι (Subtype.restrict p f) j 
Arguments: {J : Type w} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (f : J → C) [CategoryTheory.Limits.HasBiproduct f] (p : J → Prop) [CategoryTheory.Limits.HasBiproduct (Subtype.restrict p f)] (j : Subtype p)
Goal: CategoryTheory.Limits.biproduct.ι f ↑j ≫ CategoryTheory.Limits.biproduct.toSubtype f p =
  CategoryTheory.Limits.biproduct.ι (Subtype.restrict p f) j
-- CategoryTheory.Limits.biproduct.ι_fromSubtype
@[reassoc (attr := simp)]
theorem biproduct.ι_fromSubtype (j : Subtype p) :
    biproduct.ι (Subtype.restrict p f) j ≫ biproduct.fromSubtype f p = biproduct.ι f j 
Arguments: {J : Type w} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (f : J → C) [CategoryTheory.Limits.HasBiproduct f] (p : J → Prop) [CategoryTheory.Limits.HasBiproduct (Subtype.restrict p f)] (j : Subtype p)
Goal: CategoryTheory.Limits.biproduct.ι (Subtype.restrict p f) j ≫ CategoryTheory.Limits.biproduct.fromSubtype f p =
  CategoryTheory.Limits.biproduct.ι f ↑j
-- CategoryTheory.Limits.biproduct.fromSubtype_toSubtype
@[reassoc (attr := simp)]
theorem biproduct.fromSubtype_toSubtype :
    biproduct.fromSubtype f p ≫ biproduct.toSubtype f p = 𝟙 (⨁ Subtype.restrict p f) 
Arguments: {J : Type w} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (f : J → C) [CategoryTheory.Limits.HasBiproduct f] (p : J → Prop) [CategoryTheory.Limits.HasBiproduct (Subtype.restrict p f)]
Goal: CategoryTheory.Limits.biproduct.fromSubtype f p ≫ CategoryTheory.Limits.biproduct.toSubtype f p =
  𝟙 (⨁ Subtype.restrict p f)
-- CategoryTheory.Limits.biproduct.toSubtype_fromSubtype
@[reassoc (attr := simp)]
theorem biproduct.toSubtype_fromSubtype [DecidablePred p] :
    biproduct.toSubtype f p ≫ biproduct.fromSubtype f p =
      biproduct.map fun j => if p j then 𝟙 (f j) else 0 
Arguments: {J : Type w} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (f : J → C) [CategoryTheory.Limits.HasBiproduct f] (p : J → Prop) [CategoryTheory.Limits.HasBiproduct (Subtype.restrict p f)] [DecidablePred p]
Goal: CategoryTheory.Limits.biproduct.toSubtype f p ≫ CategoryTheory.Limits.biproduct.fromSubtype f p =
  CategoryTheory.Limits.biproduct.map fun j => if p j then 𝟙 (f j) else 0
-- CategoryTheory.Limits.kernelBiproductπIso_hom
@[simps!]
def kernelBiproductπIso : kernel (biproduct.π f i) ≅ ⨁ Subtype.restrict (fun j => j ≠ i) f 
Arguments: {J : Type w} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (f : J → C) (i : J) [CategoryTheory.Limits.HasBiproduct f] [CategoryTheory.Limits.HasBiproduct (Subtype.restrict (fun j => j ≠ i) f)]
Goal: (CategoryTheory.Limits.kernelBiproductπIso f i).hom =
  (CategoryTheory.Limits.biproduct.isLimitFromSubtype f i).lift
    (CategoryTheory.Limits.limit.cone (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.biproduct.π f i) 0))
-- CategoryTheory.Limits.kernelBiproductπIso_inv
@[simps!]
def kernelBiproductπIso : kernel (biproduct.π f i) ≅ ⨁ Subtype.restrict (fun j => j ≠ i) f 
Arguments: {J : Type w} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (f : J → C) (i : J) [CategoryTheory.Limits.HasBiproduct f] [CategoryTheory.Limits.HasBiproduct (Subtype.restrict (fun j => j ≠ i) f)]
Goal: (CategoryTheory.Limits.kernelBiproductπIso f i).inv =
  CategoryTheory.Limits.limit.lift (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.biproduct.π f i) 0)
    (CategoryTheory.Limits.KernelFork.ofι (CategoryTheory.Limits.biproduct.fromSubtype f fun j => ¬j = i) ⋯)
-- CategoryTheory.Limits.cokernelBiproductιIso_inv
@[simps!]
def cokernelBiproductιIso : cokernel (biproduct.ι f i) ≅ ⨁ Subtype.restrict (fun j => j ≠ i) f 
Arguments: {J : Type w} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (f : J → C) (i : J) [CategoryTheory.Limits.HasBiproduct f] [CategoryTheory.Limits.HasBiproduct (Subtype.restrict (fun j => j ≠ i) f)]
Goal: (CategoryTheory.Limits.cokernelBiproductιIso f i).inv =
  (CategoryTheory.Limits.biproduct.isColimitToSubtype f i).desc
    (CategoryTheory.Limits.colimit.cocone
      (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.biproduct.ι f i) 0))
-- CategoryTheory.Limits.cokernelBiproductιIso_hom
@[simps!]
def cokernelBiproductιIso : cokernel (biproduct.ι f i) ≅ ⨁ Subtype.restrict (fun j => j ≠ i) f 
Arguments: {J : Type w} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] (f : J → C) (i : J) [CategoryTheory.Limits.HasBiproduct f] [CategoryTheory.Limits.HasBiproduct (Subtype.restrict (fun j => j ≠ i) f)]
Goal: (CategoryTheory.Limits.cokernelBiproductιIso f i).hom =
  CategoryTheory.Limits.colimit.desc (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.biproduct.ι f i) 0)
    (CategoryTheory.Limits.CokernelCofork.ofπ (CategoryTheory.Limits.biproduct.toSubtype f fun j => ¬j = i) ⋯)
-- CategoryTheory.Limits.kernelForkBiproductToSubtype_isLimit
@[simps]
def kernelForkBiproductToSubtype (p : Set K) :
    LimitCone (parallelPair (biproduct.toSubtype f p) 0) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {K : Type} [Finite K] [CategoryTheory.Limits.HasFiniteBiproducts C] (f : K → C) (p : Set K)
Goal: (CategoryTheory.Limits.kernelForkBiproductToSubtype f p).isLimit =
  CategoryTheory.Limits.KernelFork.IsLimit.ofι (CategoryTheory.Limits.biproduct.fromSubtype f pᶜ) ⋯
    (fun {W} g x => g ≫ CategoryTheory.Limits.biproduct.toSubtype f pᶜ) ⋯ ⋯
-- CategoryTheory.Limits.kernelForkBiproductToSubtype_cone
@[simps]
def kernelForkBiproductToSubtype (p : Set K) :
    LimitCone (parallelPair (biproduct.toSubtype f p) 0) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {K : Type} [Finite K] [CategoryTheory.Limits.HasFiniteBiproducts C] (f : K → C) (p : Set K)
Goal: (CategoryTheory.Limits.kernelForkBiproductToSubtype f p).cone =
  CategoryTheory.Limits.KernelFork.ofι (CategoryTheory.Limits.biproduct.fromSubtype f pᶜ) ⋯
-- CategoryTheory.Limits.kernelBiproductToSubtypeIso_hom
@[simps!]
def kernelBiproductToSubtypeIso (p : Set K) :
    kernel (biproduct.toSubtype f p) ≅ ⨁ Subtype.restrict pᶜ f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {K : Type} [Finite K] [CategoryTheory.Limits.HasFiniteBiproducts C] (f : K → C) (p : Set K)
Goal: (CategoryTheory.Limits.kernelBiproductToSubtypeIso f p).hom =
  (CategoryTheory.Limits.KernelFork.IsLimit.ofι (CategoryTheory.Limits.biproduct.fromSubtype f pᶜ) ⋯
        (fun {W} g x => g ≫ CategoryTheory.Limits.biproduct.toSubtype f pᶜ) ⋯ ⋯).lift
    (CategoryTheory.Limits.limit.cone
      (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.biproduct.toSubtype f p) 0))
-- CategoryTheory.Limits.kernelBiproductToSubtypeIso_inv
@[simps!]
def kernelBiproductToSubtypeIso (p : Set K) :
    kernel (biproduct.toSubtype f p) ≅ ⨁ Subtype.restrict pᶜ f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {K : Type} [Finite K] [CategoryTheory.Limits.HasFiniteBiproducts C] (f : K → C) (p : Set K)
Goal: (CategoryTheory.Limits.kernelBiproductToSubtypeIso f p).inv =
  CategoryTheory.Limits.limit.lift
    (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.biproduct.toSubtype f p) 0)
    (CategoryTheory.Limits.KernelFork.ofι (CategoryTheory.Limits.biproduct.fromSubtype f pᶜ) ⋯)
-- CategoryTheory.Limits.cokernelCoforkBiproductFromSubtype_isColimit
@[simps]
def cokernelCoforkBiproductFromSubtype (p : Set K) :
    ColimitCocone (parallelPair (biproduct.fromSubtype f p) 0) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {K : Type} [Finite K] [CategoryTheory.Limits.HasFiniteBiproducts C] (f : K → C) (p : Set K)
Goal: (CategoryTheory.Limits.cokernelCoforkBiproductFromSubtype f p).isColimit =
  CategoryTheory.Limits.CokernelCofork.IsColimit.ofπ (CategoryTheory.Limits.biproduct.toSubtype f pᶜ) ⋯
    (fun {W} g x => CategoryTheory.Limits.biproduct.fromSubtype f pᶜ ≫ g) ⋯ ⋯
-- CategoryTheory.Limits.cokernelCoforkBiproductFromSubtype_cocone
@[simps]
def cokernelCoforkBiproductFromSubtype (p : Set K) :
    ColimitCocone (parallelPair (biproduct.fromSubtype f p) 0) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {K : Type} [Finite K] [CategoryTheory.Limits.HasFiniteBiproducts C] (f : K → C) (p : Set K)
Goal: (CategoryTheory.Limits.cokernelCoforkBiproductFromSubtype f p).cocone =
  CategoryTheory.Limits.CokernelCofork.ofπ (CategoryTheory.Limits.biproduct.toSubtype f pᶜ) ⋯
-- CategoryTheory.Limits.cokernelBiproductFromSubtypeIso_inv
@[simps!]
def cokernelBiproductFromSubtypeIso (p : Set K) :
    cokernel (biproduct.fromSubtype f p) ≅ ⨁ Subtype.restrict pᶜ f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {K : Type} [Finite K] [CategoryTheory.Limits.HasFiniteBiproducts C] (f : K → C) (p : Set K)
Goal: (CategoryTheory.Limits.cokernelBiproductFromSubtypeIso f p).inv =
  (CategoryTheory.Limits.CokernelCofork.IsColimit.ofπ (CategoryTheory.Limits.biproduct.toSubtype f pᶜ) ⋯
        (fun {W} g x => CategoryTheory.Limits.biproduct.fromSubtype f pᶜ ≫ g) ⋯ ⋯).desc
    (CategoryTheory.Limits.colimit.cocone
      (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.biproduct.fromSubtype f p) 0))
-- CategoryTheory.Limits.cokernelBiproductFromSubtypeIso_hom
@[simps!]
def cokernelBiproductFromSubtypeIso (p : Set K) :
    cokernel (biproduct.fromSubtype f p) ≅ ⨁ Subtype.restrict pᶜ f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {K : Type} [Finite K] [CategoryTheory.Limits.HasFiniteBiproducts C] (f : K → C) (p : Set K)
Goal: (CategoryTheory.Limits.cokernelBiproductFromSubtypeIso f p).hom =
  CategoryTheory.Limits.colimit.desc
    (CategoryTheory.Limits.parallelPair (CategoryTheory.Limits.biproduct.fromSubtype f p) 0)
    (CategoryTheory.Limits.CokernelCofork.ofπ (CategoryTheory.Limits.biproduct.toSubtype f pᶜ) ⋯)
-- CategoryTheory.Limits.biproduct.matrix_π
@[reassoc (attr := simp)]
theorem biproduct.matrix_π (m : ∀ j k, f j ⟶ g k) (k : K) :
    biproduct.matrix m ≫ biproduct.π g k = biproduct.desc fun j => m j k 
Arguments: {J : Type} [Finite J] {K : Type} [Finite K] {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasFiniteBiproducts C] {f : J → C} {g : K → C} (m : (j : J) → (k : K) → f j ⟶ g k) (k : K)
Goal: CategoryTheory.Limits.biproduct.matrix m ≫ CategoryTheory.Limits.biproduct.π g k =
  CategoryTheory.Limits.biproduct.desc fun j => m j k
-- CategoryTheory.Limits.biproduct.ι_matrix
@[reassoc (attr := simp)]
theorem biproduct.ι_matrix (m : ∀ j k, f j ⟶ g k) (j : J) :
    biproduct.ι f j ≫ biproduct.matrix m = biproduct.lift fun k => m j k 
Arguments: {J : Type} [Finite J] {K : Type} [Finite K] {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasFiniteBiproducts C] {f : J → C} {g : K → C} (m : (j : J) → (k : K) → f j ⟶ g k) (j : J)
Goal: CategoryTheory.Limits.biproduct.ι f j ≫ CategoryTheory.Limits.biproduct.matrix m =
  CategoryTheory.Limits.biproduct.lift fun k => m j k
-- CategoryTheory.Limits.biproduct.matrix_components
@[simp]
theorem biproduct.matrix_components (m : ∀ j k, f j ⟶ g k) (j : J) (k : K) :
    biproduct.components (biproduct.matrix m) j k = m j k 
Arguments: {J : Type} [Finite J] {K : Type} [Finite K] {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasFiniteBiproducts C] {f : J → C} {g : K → C} (m : (j : J) → (k : K) → f j ⟶ g k) (j : J) (k : K)
Goal: CategoryTheory.Limits.biproduct.components (CategoryTheory.Limits.biproduct.matrix m) j k = m j k
-- CategoryTheory.Limits.biproduct.components_matrix
@[simp]
theorem biproduct.components_matrix (m : ⨁ f ⟶ ⨁ g) :
    (biproduct.matrix fun j k => biproduct.components m j k) = m 
Arguments: {J : Type} [Finite J] {K : Type} [Finite K] {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasFiniteBiproducts C] {f : J → C} {g : K → C} (m : ⨁ f ⟶ ⨁ g)
Goal: (CategoryTheory.Limits.biproduct.matrix fun j k => CategoryTheory.Limits.biproduct.components m j k) = m
-- CategoryTheory.Limits.biproduct.matrixEquiv_symm_apply
@[simps]
def biproduct.matrixEquiv : (⨁ f ⟶ ⨁ g) ≃ ∀ j k, f j ⟶ g k 
Arguments: {J : Type} [Finite J] {K : Type} [Finite K] {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasFiniteBiproducts C] {f : J → C} {g : K → C} (m : (j : J) → (k : K) → f j ⟶ g k)
Goal: CategoryTheory.Limits.biproduct.matrixEquiv.symm m = CategoryTheory.Limits.biproduct.matrix m
-- CategoryTheory.Limits.biproduct.matrixEquiv_apply
@[simps]
def biproduct.matrixEquiv : (⨁ f ⟶ ⨁ g) ≃ ∀ j k, f j ⟶ g k 
Arguments: {J : Type} [Finite J] {K : Type} [Finite K] {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasFiniteBiproducts C] {f : J → C} {g : K → C} (m : ⨁ f ⟶ ⨁ g) (j : J) (k : K)
Goal: CategoryTheory.Limits.biproduct.matrixEquiv m j k = CategoryTheory.Limits.biproduct.components m j k