ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- CategoryTheory.Limits.BinaryBicone.ofColimitCocone_snd
@[simps]
def BinaryBicone.ofColimitCocone {X Y : C} {t : Cocone (pair X Y)} (ht : IsColimit t) :
    BinaryBicone X Y 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {t : CategoryTheory.Limits.Cocone (CategoryTheory.Limits.pair X Y)} (ht : CategoryTheory.Limits.IsColimit t)
Goal: (CategoryTheory.Limits.BinaryBicone.ofColimitCocone ht).snd = ht.desc (CategoryTheory.Limits.BinaryCofan.mk 0 (𝟙 Y))
-- CategoryTheory.Limits.BinaryBicone.ofColimitCocone_inr
@[simps]
def BinaryBicone.ofColimitCocone {X Y : C} {t : Cocone (pair X Y)} (ht : IsColimit t) :
    BinaryBicone X Y 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {t : CategoryTheory.Limits.Cocone (CategoryTheory.Limits.pair X Y)} (ht : CategoryTheory.Limits.IsColimit t)
Goal: (CategoryTheory.Limits.BinaryBicone.ofColimitCocone ht).inr = t.ι.app { as := CategoryTheory.Limits.WalkingPair.right }
-- CategoryTheory.Limits.BinaryBicone.ofColimitCocone_fst
@[simps]
def BinaryBicone.ofColimitCocone {X Y : C} {t : Cocone (pair X Y)} (ht : IsColimit t) :
    BinaryBicone X Y 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {t : CategoryTheory.Limits.Cocone (CategoryTheory.Limits.pair X Y)} (ht : CategoryTheory.Limits.IsColimit t)
Goal: (CategoryTheory.Limits.BinaryBicone.ofColimitCocone ht).fst = ht.desc (CategoryTheory.Limits.BinaryCofan.mk (𝟙 X) 0)
-- CategoryTheory.Limits.BinaryBicone.ofColimitCocone_inl
@[simps]
def BinaryBicone.ofColimitCocone {X Y : C} {t : Cocone (pair X Y)} (ht : IsColimit t) :
    BinaryBicone X Y 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {t : CategoryTheory.Limits.Cocone (CategoryTheory.Limits.pair X Y)} (ht : CategoryTheory.Limits.IsColimit t)
Goal: (CategoryTheory.Limits.BinaryBicone.ofColimitCocone ht).inl = t.ι.app { as := CategoryTheory.Limits.WalkingPair.left }
-- CategoryTheory.Limits.fst_of_isColimit
theorem fst_of_isColimit {X Y : C} {t : BinaryBicone X Y} (ht : IsColimit t.toCocone) :
    t.fst = ht.desc (BinaryCofan.mk (𝟙 X) 0) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {t : CategoryTheory.Limits.BinaryBicone X Y} (ht : CategoryTheory.Limits.IsColimit t.toCocone)
Goal: t.fst = ht.desc (CategoryTheory.Limits.BinaryCofan.mk (𝟙 X) 0)
-- CategoryTheory.Limits.snd_of_isColimit
theorem snd_of_isColimit {X Y : C} {t : BinaryBicone X Y} (ht : IsColimit t.toCocone) :
    t.snd = ht.desc (BinaryCofan.mk 0 (𝟙 Y)) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {t : CategoryTheory.Limits.BinaryBicone X Y} (ht : CategoryTheory.Limits.IsColimit t.toCocone)
Goal: t.snd = ht.desc (CategoryTheory.Limits.BinaryCofan.mk 0 (𝟙 Y))
-- CategoryTheory.Limits.HasBinaryBiproduct.of_hasBinaryCoproduct
theorem HasBinaryBiproduct.of_hasBinaryCoproduct (X Y : C) [HasBinaryCoproduct X Y] :
    HasBinaryBiproduct X Y 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] (X Y : C) [CategoryTheory.Limits.HasBinaryCoproduct X Y]
Goal: CategoryTheory.Limits.HasBinaryBiproduct X Y
-- CategoryTheory.Limits.HasBinaryBiproducts.of_hasBinaryCoproducts
theorem HasBinaryBiproducts.of_hasBinaryCoproducts [HasBinaryCoproducts C] :
    HasBinaryBiproducts C 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasBinaryCoproducts C]
Goal: CategoryTheory.Limits.HasBinaryBiproducts C
-- CategoryTheory.Limits.biprod.total
@[simp]
theorem biprod.total : biprod.fst ≫ biprod.inl + biprod.snd ≫ biprod.inr = 𝟙 (X ⊞ Y) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} [CategoryTheory.Limits.HasBinaryBiproduct X Y]
Goal: CategoryTheory.Limits.biprod.fst ≫ CategoryTheory.Limits.biprod.inl +
    CategoryTheory.Limits.biprod.snd ≫ CategoryTheory.Limits.biprod.inr =
  𝟙 (X ⊞ Y)
-- CategoryTheory.Limits.biprod.lift_eq
theorem biprod.lift_eq {T : C} {f : T ⟶ X} {g : T ⟶ Y} :
    biprod.lift f g = f ≫ biprod.inl + g ≫ biprod.inr 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} [CategoryTheory.Limits.HasBinaryBiproduct X Y] {T : C} {f : T ⟶ X} {g : T ⟶ Y}
Goal: CategoryTheory.Limits.biprod.lift f g = f ≫ CategoryTheory.Limits.biprod.inl + g ≫ CategoryTheory.Limits.biprod.inr
-- CategoryTheory.Limits.biprod.desc_eq
theorem biprod.desc_eq {T : C} {f : X ⟶ T} {g : Y ⟶ T} :
    biprod.desc f g = biprod.fst ≫ f + biprod.snd ≫ g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} [CategoryTheory.Limits.HasBinaryBiproduct X Y] {T : C} {f : X ⟶ T} {g : Y ⟶ T}
Goal: CategoryTheory.Limits.biprod.desc f g = CategoryTheory.Limits.biprod.fst ≫ f + CategoryTheory.Limits.biprod.snd ≫ g
-- CategoryTheory.Limits.biprod.lift_desc
@[reassoc (attr := simp)]
theorem biprod.lift_desc {T U : C} {f : T ⟶ X} {g : T ⟶ Y} {h : X ⟶ U} {i : Y ⟶ U} :
    biprod.lift f g ≫ biprod.desc h i = f ≫ h + g ≫ i 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} [CategoryTheory.Limits.HasBinaryBiproduct X Y] {T U : C} {f : T ⟶ X} {g : T ⟶ Y} {h : X ⟶ U} {i : Y ⟶ U}
Goal: CategoryTheory.Limits.biprod.lift f g ≫ CategoryTheory.Limits.biprod.desc h i = f ≫ h + g ≫ i
-- CategoryTheory.Limits.biprod.map_eq
theorem biprod.map_eq [HasBinaryBiproducts C] {W X Y Z : C} {f : W ⟶ Y} {g : X ⟶ Z} :
    biprod.map f g = biprod.fst ≫ f ≫ biprod.inl + biprod.snd ≫ g ≫ biprod.inr 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasBinaryBiproducts C] {W X Y Z : C} {f : W ⟶ Y} {g : X ⟶ Z}
Goal: CategoryTheory.Limits.biprod.map f g =
  CategoryTheory.Limits.biprod.fst ≫ f ≫ CategoryTheory.Limits.biprod.inl +
    CategoryTheory.Limits.biprod.snd ≫ g ≫ CategoryTheory.Limits.biprod.inr
-- CategoryTheory.Limits.binaryBiconeOfIsSplitMonoOfCokernel_pt
@[simps]
def binaryBiconeOfIsSplitMonoOfCokernel {X Y : C} {f : X ⟶ Y} [IsSplitMono f] {c : CokernelCofork f}
    (i : IsColimit c) : BinaryBicone X c.pt 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.IsSplitMono f] {c : CategoryTheory.Limits.CokernelCofork f} (i : CategoryTheory.Limits.IsColimit c)
Goal: (CategoryTheory.Limits.binaryBiconeOfIsSplitMonoOfCokernel i).pt = Y
-- CategoryTheory.Limits.binaryBiconeOfIsSplitMonoOfCokernel_fst
@[simps]
def binaryBiconeOfIsSplitMonoOfCokernel {X Y : C} {f : X ⟶ Y} [IsSplitMono f] {c : CokernelCofork f}
    (i : IsColimit c) : BinaryBicone X c.pt 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.IsSplitMono f] {c : CategoryTheory.Limits.CokernelCofork f} (i : CategoryTheory.Limits.IsColimit c)
Goal: (CategoryTheory.Limits.binaryBiconeOfIsSplitMonoOfCokernel i).fst = CategoryTheory.retraction f
-- CategoryTheory.Limits.binaryBiconeOfIsSplitMonoOfCokernel_inr
@[simps]
def binaryBiconeOfIsSplitMonoOfCokernel {X Y : C} {f : X ⟶ Y} [IsSplitMono f] {c : CokernelCofork f}
    (i : IsColimit c) : BinaryBicone X c.pt 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.IsSplitMono f] {c : CategoryTheory.Limits.CokernelCofork f} (i : CategoryTheory.Limits.IsColimit c)
Goal: (CategoryTheory.Limits.binaryBiconeOfIsSplitMonoOfCokernel i).inr =
  let c' := CategoryTheory.Limits.CokernelCofork.ofπ (CategoryTheory.Limits.Cofork.π c) ⋯;
  let i' := CategoryTheory.Limits.isCokernelEpiComp i (CategoryTheory.retraction f) ⋯;
  let i'' := CategoryTheory.Preadditive.isColimitCoforkOfCokernelCofork i';
  (CategoryTheory.Limits.splitEpiOfIdempotentOfIsColimitCofork C ⋯ i'').section_
-- CategoryTheory.Limits.binaryBiconeOfIsSplitMonoOfCokernel_snd
@[simps]
def binaryBiconeOfIsSplitMonoOfCokernel {X Y : C} {f : X ⟶ Y} [IsSplitMono f] {c : CokernelCofork f}
    (i : IsColimit c) : BinaryBicone X c.pt 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.IsSplitMono f] {c : CategoryTheory.Limits.CokernelCofork f} (i : CategoryTheory.Limits.IsColimit c)
Goal: (CategoryTheory.Limits.binaryBiconeOfIsSplitMonoOfCokernel i).snd = CategoryTheory.Limits.Cofork.π c
-- CategoryTheory.Limits.binaryBiconeOfIsSplitMonoOfCokernel_inl
@[simps]
def binaryBiconeOfIsSplitMonoOfCokernel {X Y : C} {f : X ⟶ Y} [IsSplitMono f] {c : CokernelCofork f}
    (i : IsColimit c) : BinaryBicone X c.pt 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.IsSplitMono f] {c : CategoryTheory.Limits.CokernelCofork f} (i : CategoryTheory.Limits.IsColimit c)
Goal: (CategoryTheory.Limits.binaryBiconeOfIsSplitMonoOfCokernel i).inl = f
-- CategoryTheory.Limits.binaryBiconeOfIsSplitEpiOfKernel_pt
@[simps]
def binaryBiconeOfIsSplitEpiOfKernel {X Y : C} {f : X ⟶ Y} [IsSplitEpi f] {c : KernelFork f}
    (i : IsLimit c) : BinaryBicone c.pt Y 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.IsSplitEpi f] {c : CategoryTheory.Limits.KernelFork f} (i : CategoryTheory.Limits.IsLimit c)
Goal: (CategoryTheory.Limits.binaryBiconeOfIsSplitEpiOfKernel i).pt = X
-- CategoryTheory.Limits.binaryBiconeOfIsSplitEpiOfKernel_inr
@[simps]
def binaryBiconeOfIsSplitEpiOfKernel {X Y : C} {f : X ⟶ Y} [IsSplitEpi f] {c : KernelFork f}
    (i : IsLimit c) : BinaryBicone c.pt Y 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.IsSplitEpi f] {c : CategoryTheory.Limits.KernelFork f} (i : CategoryTheory.Limits.IsLimit c)
Goal: (CategoryTheory.Limits.binaryBiconeOfIsSplitEpiOfKernel i).inr = CategoryTheory.section_ f
-- CategoryTheory.Limits.binaryBiconeOfIsSplitEpiOfKernel_snd
@[simps]
def binaryBiconeOfIsSplitEpiOfKernel {X Y : C} {f : X ⟶ Y} [IsSplitEpi f] {c : KernelFork f}
    (i : IsLimit c) : BinaryBicone c.pt Y 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.IsSplitEpi f] {c : CategoryTheory.Limits.KernelFork f} (i : CategoryTheory.Limits.IsLimit c)
Goal: (CategoryTheory.Limits.binaryBiconeOfIsSplitEpiOfKernel i).snd = f
-- CategoryTheory.Limits.binaryBiconeOfIsSplitEpiOfKernel_inl
@[simps]
def binaryBiconeOfIsSplitEpiOfKernel {X Y : C} {f : X ⟶ Y} [IsSplitEpi f] {c : KernelFork f}
    (i : IsLimit c) : BinaryBicone c.pt Y 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.IsSplitEpi f] {c : CategoryTheory.Limits.KernelFork f} (i : CategoryTheory.Limits.IsLimit c)
Goal: (CategoryTheory.Limits.binaryBiconeOfIsSplitEpiOfKernel i).inl = CategoryTheory.Limits.Fork.ι c
-- CategoryTheory.Limits.binaryBiconeOfIsSplitEpiOfKernel_fst
@[simps]
def binaryBiconeOfIsSplitEpiOfKernel {X Y : C} {f : X ⟶ Y} [IsSplitEpi f] {c : KernelFork f}
    (i : IsLimit c) : BinaryBicone c.pt Y 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.IsSplitEpi f] {c : CategoryTheory.Limits.KernelFork f} (i : CategoryTheory.Limits.IsLimit c)
Goal: (CategoryTheory.Limits.binaryBiconeOfIsSplitEpiOfKernel i).fst =
  let c' := CategoryTheory.Limits.KernelFork.ofι (CategoryTheory.Limits.Fork.ι c) ⋯;
  let i' := CategoryTheory.Limits.isKernelCompMono i (CategoryTheory.section_ f) ⋯;
  let i'' := CategoryTheory.Preadditive.isLimitForkOfKernelFork i';
  (CategoryTheory.Limits.splitMonoOfIdempotentOfIsLimitFork C ⋯ i'').retraction
-- CategoryTheory.Limits.biprod.add_eq_lift_id_desc
theorem biprod.add_eq_lift_id_desc [HasBinaryBiproduct X X] :
    f + g = biprod.lift (𝟙 X) (𝟙 X) ≫ biprod.desc f g 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} (f g : X ⟶ Y) [CategoryTheory.Limits.HasBinaryBiproduct X X]
Goal: f + g = CategoryTheory.Limits.biprod.lift (𝟙 X) (𝟙 X) ≫ CategoryTheory.Limits.biprod.desc f g
-- CategoryTheory.Limits.biprod.add_eq_lift_desc_id
theorem biprod.add_eq_lift_desc_id [HasBinaryBiproduct Y Y] :
    f + g = biprod.lift f g ≫ biprod.desc (𝟙 Y) (𝟙 Y) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {X Y : C} (f g : X ⟶ Y) [CategoryTheory.Limits.HasBinaryBiproduct Y Y]
Goal: f + g = CategoryTheory.Limits.biprod.lift f g ≫ CategoryTheory.Limits.biprod.desc (𝟙 Y) (𝟙 Y)
-- CategoryTheory.Biprod.inl_ofComponents
@[simp]
theorem Biprod.inl_ofComponents :
    biprod.inl ≫ Biprod.ofComponents f₁₁ f₁₂ f₂₁ f₂₂ = f₁₁ ≫ biprod.inl + f₁₂ ≫ biprod.inr 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasBinaryBiproducts C] {X₁ X₂ Y₁ Y₂ : C} (f₁₁ : X₁ ⟶ Y₁) (f₁₂ : X₁ ⟶ Y₂) (f₂₁ : X₂ ⟶ Y₁) (f₂₂ : X₂ ⟶ Y₂)
Goal: CategoryTheory.Limits.biprod.inl ≫ CategoryTheory.Biprod.ofComponents f₁₁ f₁₂ f₂₁ f₂₂ =
  f₁₁ ≫ CategoryTheory.Limits.biprod.inl + f₁₂ ≫ CategoryTheory.Limits.biprod.inr
-- CategoryTheory.Biprod.inr_ofComponents
@[simp]
theorem Biprod.inr_ofComponents :
    biprod.inr ≫ Biprod.ofComponents f₁₁ f₁₂ f₂₁ f₂₂ = f₂₁ ≫ biprod.inl + f₂₂ ≫ biprod.inr 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasBinaryBiproducts C] {X₁ X₂ Y₁ Y₂ : C} (f₁₁ : X₁ ⟶ Y₁) (f₁₂ : X₁ ⟶ Y₂) (f₂₁ : X₂ ⟶ Y₁) (f₂₂ : X₂ ⟶ Y₂)
Goal: CategoryTheory.Limits.biprod.inr ≫ CategoryTheory.Biprod.ofComponents f₁₁ f₁₂ f₂₁ f₂₂ =
  f₂₁ ≫ CategoryTheory.Limits.biprod.inl + f₂₂ ≫ CategoryTheory.Limits.biprod.inr
-- CategoryTheory.Biprod.ofComponents_fst
@[simp]
theorem Biprod.ofComponents_fst :
    Biprod.ofComponents f₁₁ f₁₂ f₂₁ f₂₂ ≫ biprod.fst = biprod.fst ≫ f₁₁ + biprod.snd ≫ f₂₁ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasBinaryBiproducts C] {X₁ X₂ Y₁ Y₂ : C} (f₁₁ : X₁ ⟶ Y₁) (f₁₂ : X₁ ⟶ Y₂) (f₂₁ : X₂ ⟶ Y₁) (f₂₂ : X₂ ⟶ Y₂)
Goal: CategoryTheory.Biprod.ofComponents f₁₁ f₁₂ f₂₁ f₂₂ ≫ CategoryTheory.Limits.biprod.fst =
  CategoryTheory.Limits.biprod.fst ≫ f₁₁ + CategoryTheory.Limits.biprod.snd ≫ f₂₁
-- CategoryTheory.Biprod.ofComponents_snd
@[simp]
theorem Biprod.ofComponents_snd :
    Biprod.ofComponents f₁₁ f₁₂ f₂₁ f₂₂ ≫ biprod.snd = biprod.fst ≫ f₁₂ + biprod.snd ≫ f₂₂ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasBinaryBiproducts C] {X₁ X₂ Y₁ Y₂ : C} (f₁₁ : X₁ ⟶ Y₁) (f₁₂ : X₁ ⟶ Y₂) (f₂₁ : X₂ ⟶ Y₁) (f₂₂ : X₂ ⟶ Y₂)
Goal: CategoryTheory.Biprod.ofComponents f₁₁ f₁₂ f₂₁ f₂₂ ≫ CategoryTheory.Limits.biprod.snd =
  CategoryTheory.Limits.biprod.fst ≫ f₁₂ + CategoryTheory.Limits.biprod.snd ≫ f₂₂
-- CategoryTheory.Biprod.ofComponents_eq
@[simp]
theorem Biprod.ofComponents_eq (f : X₁ ⊞ X₂ ⟶ Y₁ ⊞ Y₂) :
    Biprod.ofComponents (biprod.inl ≫ f ≫ biprod.fst) (biprod.inl ≫ f ≫ biprod.snd)
        (biprod.inr ≫ f ≫ biprod.fst) (biprod.inr ≫ f ≫ biprod.snd) =
      f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasBinaryBiproducts C] {X₁ X₂ Y₁ Y₂ : C} (f : X₁ ⊞ X₂ ⟶ Y₁ ⊞ Y₂)
Goal: CategoryTheory.Biprod.ofComponents (CategoryTheory.Limits.biprod.inl ≫ f ≫ CategoryTheory.Limits.biprod.fst)
    (CategoryTheory.Limits.biprod.inl ≫ f ≫ CategoryTheory.Limits.biprod.snd)
    (CategoryTheory.Limits.biprod.inr ≫ f ≫ CategoryTheory.Limits.biprod.fst)
    (CategoryTheory.Limits.biprod.inr ≫ f ≫ CategoryTheory.Limits.biprod.snd) =
  f
-- CategoryTheory.Biprod.ofComponents_comp
@[simp]
theorem Biprod.ofComponents_comp {X₁ X₂ Y₁ Y₂ Z₁ Z₂ : C} (f₁₁ : X₁ ⟶ Y₁) (f₁₂ : X₁ ⟶ Y₂)
    (f₂₁ : X₂ ⟶ Y₁) (f₂₂ : X₂ ⟶ Y₂) (g₁₁ : Y₁ ⟶ Z₁) (g₁₂ : Y₁ ⟶ Z₂) (g₂₁ : Y₂ ⟶ Z₁)
    (g₂₂ : Y₂ ⟶ Z₂) :
    Biprod.ofComponents f₁₁ f₁₂ f₂₁ f₂₂ ≫ Biprod.ofComponents g₁₁ g₁₂ g₂₁ g₂₂ =
      Biprod.ofComponents (f₁₁ ≫ g₁₁ + f₁₂ ≫ g₂₁) (f₁₁ ≫ g₁₂ + f₁₂ ≫ g₂₂) (f₂₁ ≫ g₁₁ + f₂₂ ≫ g₂₁)
        (f₂₁ ≫ g₁₂ + f₂₂ ≫ g₂₂) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasBinaryBiproducts C] {X₁ X₂ Y₁ Y₂ Z₁ Z₂ : C} (f₁₁ : X₁ ⟶ Y₁) (f₁₂ : X₁ ⟶ Y₂) (f₂₁ : X₂ ⟶ Y₁) (f₂₂ : X₂ ⟶ Y₂) (g₁₁ : Y₁ ⟶ Z₁) (g₁₂ : Y₁ ⟶ Z₂) (g₂₁ : Y₂ ⟶ Z₁) (g₂₂ : Y₂ ⟶ Z₂)
Goal: CategoryTheory.Biprod.ofComponents f₁₁ f₁₂ f₂₁ f₂₂ ≫ CategoryTheory.Biprod.ofComponents g₁₁ g₁₂ g₂₁ g₂₂ =
  CategoryTheory.Biprod.ofComponents (f₁₁ ≫ g₁₁ + f₁₂ ≫ g₂₁) (f₁₁ ≫ g₁₂ + f₁₂ ≫ g₂₂) (f₂₁ ≫ g₁₁ + f₂₂ ≫ g₂₁)
    (f₂₁ ≫ g₁₂ + f₂₂ ≫ g₂₂)
-- CategoryTheory.Biprod.unipotentUpper_inv
@[simps]
def Biprod.unipotentUpper {X₁ X₂ : C} (r : X₁ ⟶ X₂) : X₁ ⊞ X₂ ≅ X₁ ⊞ X₂ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasBinaryBiproducts C] {X₁ X₂ : C} (r : X₁ ⟶ X₂)
Goal: (CategoryTheory.Biprod.unipotentUpper r).inv = CategoryTheory.Biprod.ofComponents (𝟙 X₁) (-r) 0 (𝟙 X₂)
-- CategoryTheory.Biprod.unipotentUpper_hom
@[simps]
def Biprod.unipotentUpper {X₁ X₂ : C} (r : X₁ ⟶ X₂) : X₁ ⊞ X₂ ≅ X₁ ⊞ X₂ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasBinaryBiproducts C] {X₁ X₂ : C} (r : X₁ ⟶ X₂)
Goal: (CategoryTheory.Biprod.unipotentUpper r).hom = CategoryTheory.Biprod.ofComponents (𝟙 X₁) r 0 (𝟙 X₂)
-- CategoryTheory.Biprod.unipotentLower_inv
@[simps]
def Biprod.unipotentLower {X₁ X₂ : C} (r : X₂ ⟶ X₁) : X₁ ⊞ X₂ ≅ X₁ ⊞ X₂ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasBinaryBiproducts C] {X₁ X₂ : C} (r : X₂ ⟶ X₁)
Goal: (CategoryTheory.Biprod.unipotentLower r).inv = CategoryTheory.Biprod.ofComponents (𝟙 X₁) 0 (-r) (𝟙 X₂)
-- CategoryTheory.Biprod.unipotentLower_hom
@[simps]
def Biprod.unipotentLower {X₁ X₂ : C} (r : X₂ ⟶ X₁) : X₁ ⊞ X₂ ≅ X₁ ⊞ X₂ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasBinaryBiproducts C] {X₁ X₂ : C} (r : X₂ ⟶ X₁)
Goal: (CategoryTheory.Biprod.unipotentLower r).hom = CategoryTheory.Biprod.ofComponents (𝟙 X₁) 0 r (𝟙 X₂)
-- CategoryTheory.Biprod.column_nonzero_of_iso
theorem Biprod.column_nonzero_of_iso {W X Y Z : C} (f : W ⊞ X ⟶ Y ⊞ Z) [IsIso f] :
    𝟙 W = 0 ∨ biprod.inl ≫ f ≫ biprod.fst ≠ 0 ∨ biprod.inl ≫ f ≫ biprod.snd ≠ 0 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasBinaryBiproducts C] {W X Y Z : C} (f : W ⊞ X ⟶ Y ⊞ Z) [CategoryTheory.IsIso f]
Goal: 𝟙 W = 0 ∨
  CategoryTheory.Limits.biprod.inl ≫ f ≫ CategoryTheory.Limits.biprod.fst ≠ 0 ∨
    CategoryTheory.Limits.biprod.inl ≫ f ≫ CategoryTheory.Limits.biprod.snd ≠ 0
-- CategoryTheory.Biproduct.column_nonzero_of_iso'
theorem Biproduct.column_nonzero_of_iso' {σ τ : Type} [Finite τ] {S : σ → C} [HasBiproduct S]
    {T : τ → C} [HasBiproduct T] (s : σ) (f : ⨁ S ⟶ ⨁ T) [IsIso f] :
    (∀ t : τ, biproduct.ι S s ≫ f ≫ biproduct.π T t = 0) → 𝟙 (S s) = 0 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] {σ τ : Type} [Finite τ] {S : σ → C} [CategoryTheory.Limits.HasBiproduct S] {T : τ → C} [CategoryTheory.Limits.HasBiproduct T] (s : σ) (f : ⨁ S ⟶ ⨁ T) [CategoryTheory.IsIso f]
Goal: (∀ (t : τ), CategoryTheory.Limits.biproduct.ι S s ≫ f ≫ CategoryTheory.Limits.biproduct.π T t = 0) → 𝟙 (S s) = 0
-- CategoryTheory.IsFiltered.iff_nonempty_limit
theorem IsFiltered.iff_nonempty_limit : IsFiltered C ↔
    ∀ {J : Type v} [SmallCategory J] [FinCategory J] (F : J ⥤ C),
      ∃ (X : C), Nonempty (limit (F.op ⋙ yoneda.obj X)) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C]
Goal: CategoryTheory.IsFiltered C ↔
  ∀ {J : Type v} [inst : CategoryTheory.SmallCategory J] [inst_1 : CategoryTheory.FinCategory J] (F : J ⥤ C),
    ∃ X, Nonempty (CategoryTheory.Limits.limit (F.op ⋙ CategoryTheory.yoneda.obj X))
-- CategoryTheory.IsCofiltered.iff_nonempty_limit
theorem IsCofiltered.iff_nonempty_limit : IsCofiltered C ↔
    ∀ {J : Type v} [SmallCategory J] [FinCategory J] (F : J ⥤ C),
      ∃ (X : C), Nonempty (limit (F ⋙ coyoneda.obj (op X))) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C]
Goal: CategoryTheory.IsCofiltered C ↔
  ∀ {J : Type v} [inst : CategoryTheory.SmallCategory J] [inst_1 : CategoryTheory.FinCategory J] (F : J ⥤ C),
    ∃ X, Nonempty (CategoryTheory.Limits.limit (F ⋙ CategoryTheory.coyoneda.obj (Opposite.op X)))
-- CategoryTheory.Limits.HasCofilteredLimitsOfSize.HasLimitsOfShape
@[pp_with_univ]
class HasCofilteredLimitsOfSize : Prop where
    HasLimitsOfShape : ∀ (I : Type w) [Category.{w'} I] [IsCofiltered I], HasLimitsOfShape I C
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [self : CategoryTheory.Limits.HasCofilteredLimitsOfSize.{w', w, v, u} C] (I : Type w) [CategoryTheory.Category.{w', w} I] [CategoryTheory.IsCofiltered I]
Goal: CategoryTheory.Limits.HasLimitsOfShape I C
-- CategoryTheory.Limits.HasFilteredColimitsOfSize.HasColimitsOfShape
@[pp_with_univ]
class HasFilteredColimitsOfSize : Prop where
    HasColimitsOfShape : ∀ (I : Type w) [Category.{w'} I] [IsFiltered I], HasColimitsOfShape I C
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [self : CategoryTheory.Limits.HasFilteredColimitsOfSize.{w', w, v, u} C] (I : Type w) [CategoryTheory.Category.{w', w} I] [CategoryTheory.IsFiltered I]
Goal: CategoryTheory.Limits.HasColimitsOfShape I C
-- CategoryTheory.Limits.CompleteLattice.finite_limit_eq_finset_univ_inf
theorem finite_limit_eq_finset_univ_inf [SemilatticeInf α] [OrderTop α] (F : J ⥤ α) :
    limit F = Finset.univ.inf F.obj 
Arguments: {α : Type u} {J : Type w} [CategoryTheory.SmallCategory J] [CategoryTheory.FinCategory J] [SemilatticeInf α] [OrderTop α] (F : J ⥤ α)
Goal: CategoryTheory.Limits.limit F = Finset.univ.inf F.obj
-- CategoryTheory.Limits.CompleteLattice.finite_colimit_eq_finset_univ_sup
theorem finite_colimit_eq_finset_univ_sup [SemilatticeSup α] [OrderBot α] (F : J ⥤ α) :
    colimit F = Finset.univ.sup F.obj 
Arguments: {α : Type u} {J : Type w} [CategoryTheory.SmallCategory J] [CategoryTheory.FinCategory J] [SemilatticeSup α] [OrderBot α] (F : J ⥤ α)
Goal: CategoryTheory.Limits.colimit F = Finset.univ.sup F.obj
-- CategoryTheory.Limits.CompleteLattice.finite_product_eq_finset_inf
theorem finite_product_eq_finset_inf [SemilatticeInf α] [OrderTop α] {ι : Type u} [Fintype ι]
    (f : ι → α) : ∏ᶜ f = Fintype.elems.inf f 
Arguments: {α : Type u} [SemilatticeInf α] [OrderTop α] {ι : Type u} [Fintype ι] (f : ι → α)
Goal: ∏ᶜ f = Fintype.elems.inf f
-- CategoryTheory.Limits.CompleteLattice.finite_coproduct_eq_finset_sup
theorem finite_coproduct_eq_finset_sup [SemilatticeSup α] [OrderBot α] {ι : Type u} [Fintype ι]
    (f : ι → α) : ∐ f = Fintype.elems.sup f 
Arguments: {α : Type u} [SemilatticeSup α] [OrderBot α] {ι : Type u} [Fintype ι] (f : ι → α)
Goal: ∐ f = Fintype.elems.sup f
-- CategoryTheory.Limits.CompleteLattice.prod_eq_inf
@[simp]
theorem prod_eq_inf [SemilatticeInf α] [OrderTop α] (x y : α) : Limits.prod x y = x ⊓ y 
Arguments: {α : Type u} [SemilatticeInf α] [OrderTop α] (x y : α)
Goal: (x ⨯ y) = x ⊓ y
-- CategoryTheory.Limits.CompleteLattice.coprod_eq_sup
@[simp]
theorem coprod_eq_sup [SemilatticeSup α] [OrderBot α] (x y : α) : Limits.coprod x y = x ⊔ y 
Arguments: {α : Type u} [SemilatticeSup α] [OrderBot α] (x y : α)
Goal: (x ⨿ y) = x ⊔ y
-- CategoryTheory.Limits.CompleteLattice.pullback_eq_inf
@[simp]
theorem pullback_eq_inf [SemilatticeInf α] [OrderTop α] {x y z : α} (f : x ⟶ z) (g : y ⟶ z) :
    pullback f g = x ⊓ y 
Arguments: {α : Type u} [SemilatticeInf α] [OrderTop α] {x y z : α} (f : x ⟶ z) (g : y ⟶ z)
Goal: CategoryTheory.Limits.pullback f g = x ⊓ y
-- CategoryTheory.Limits.CompleteLattice.pushout_eq_sup
@[simp]
theorem pushout_eq_sup [SemilatticeSup α] [OrderBot α] (x y z : α) (f : z ⟶ x) (g : z ⟶ y) :
    pushout f g = x ⊔ y 
Arguments: {α : Type u} [SemilatticeSup α] [OrderBot α] (x y z : α) (f : z ⟶ x) (g : z ⟶ y)
Goal: CategoryTheory.Limits.pushout f g = x ⊔ y