ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- CategoryTheory.Functor.mapBicone_π
@[simps]
def mapBicone {f : J → C} (b : Bicone f) : Bicone (F.obj ∘ f) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) [F.PreservesZeroMorphisms] {J : Type w₁} {f : J → C} (b : CategoryTheory.Limits.Bicone f) (j : J)
Goal: (F.mapBicone b).π j = F.map (b.π j)
-- CategoryTheory.Functor.mapBicone_ι
@[simps]
def mapBicone {f : J → C} (b : Bicone f) : Bicone (F.obj ∘ f) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) [F.PreservesZeroMorphisms] {J : Type w₁} {f : J → C} (b : CategoryTheory.Limits.Bicone f) (j : J)
Goal: (F.mapBicone b).ι j = F.map (b.ι j)
-- CategoryTheory.Functor.mapBicone_pt
@[simps]
def mapBicone {f : J → C} (b : Bicone f) : Bicone (F.obj ∘ f) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) [F.PreservesZeroMorphisms] {J : Type w₁} {f : J → C} (b : CategoryTheory.Limits.Bicone f)
Goal: (F.mapBicone b).pt = F.obj b.pt
-- CategoryTheory.Functor.mapBicone_whisker
theorem mapBicone_whisker {K : Type w₂} {g : K ≃ J} {f : J → C} (c : Bicone f) :
    F.mapBicone (c.whisker g) = (F.mapBicone c).whisker g 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) [F.PreservesZeroMorphisms] {J : Type w₁} {K : Type w₂} {g : K ≃ J} {f : J → C} (c : CategoryTheory.Limits.Bicone f)
Goal: F.mapBicone (c.whisker g) = (F.mapBicone c).whisker g
-- CategoryTheory.Functor.mapBinaryBicone_inl
@[simps!]
def mapBinaryBicone {X Y : C} (b : BinaryBicone X Y) : BinaryBicone (F.obj X) (F.obj Y) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) [F.PreservesZeroMorphisms] {X Y : C} (b : CategoryTheory.Limits.BinaryBicone X Y)
Goal: (F.mapBinaryBicone b).inl = F.map b.inl
-- CategoryTheory.Functor.mapBinaryBicone_snd
@[simps!]
def mapBinaryBicone {X Y : C} (b : BinaryBicone X Y) : BinaryBicone (F.obj X) (F.obj Y) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) [F.PreservesZeroMorphisms] {X Y : C} (b : CategoryTheory.Limits.BinaryBicone X Y)
Goal: (F.mapBinaryBicone b).snd = F.map b.snd
-- CategoryTheory.Functor.mapBinaryBicone_fst
@[simps!]
def mapBinaryBicone {X Y : C} (b : BinaryBicone X Y) : BinaryBicone (F.obj X) (F.obj Y) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) [F.PreservesZeroMorphisms] {X Y : C} (b : CategoryTheory.Limits.BinaryBicone X Y)
Goal: (F.mapBinaryBicone b).fst = F.map b.fst
-- CategoryTheory.Functor.mapBinaryBicone_inr
@[simps!]
def mapBinaryBicone {X Y : C} (b : BinaryBicone X Y) : BinaryBicone (F.obj X) (F.obj Y) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) [F.PreservesZeroMorphisms] {X Y : C} (b : CategoryTheory.Limits.BinaryBicone X Y)
Goal: (F.mapBinaryBicone b).inr = F.map b.inr
-- CategoryTheory.Functor.mapBinaryBicone_pt
@[simps!]
def mapBinaryBicone {X Y : C} (b : BinaryBicone X Y) : BinaryBicone (F.obj X) (F.obj Y) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) [F.PreservesZeroMorphisms] {X Y : C} (b : CategoryTheory.Limits.BinaryBicone X Y)
Goal: (F.mapBinaryBicone b).pt = F.obj b.pt
-- CategoryTheory.Functor.biproductComparison_π
@[reassoc (attr := simp)]
theorem biproductComparison_π (j : J) :
    biproductComparison F f ≫ biproduct.π _ j = F.map (biproduct.π f j) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] {J : Type w₁} (F : C ⥤ D) (f : J → C) [CategoryTheory.Limits.HasBiproduct f] [CategoryTheory.Limits.HasBiproduct (F.obj ∘ f)] (j : J)
Goal: F.biproductComparison f ≫ CategoryTheory.Limits.biproduct.π (F.obj ∘ f) j =
  F.map (CategoryTheory.Limits.biproduct.π f j)
-- CategoryTheory.Functor.ι_biproductComparison'
@[reassoc (attr := simp)]
theorem ι_biproductComparison' (j : J) :
    biproduct.ι _ j ≫ biproductComparison' F f = F.map (biproduct.ι f j) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] {J : Type w₁} (F : C ⥤ D) (f : J → C) [CategoryTheory.Limits.HasBiproduct f] [CategoryTheory.Limits.HasBiproduct (F.obj ∘ f)] (j : J)
Goal: CategoryTheory.Limits.biproduct.ι (F.obj ∘ f) j ≫ F.biproductComparison' f =
  F.map (CategoryTheory.Limits.biproduct.ι f j)
-- CategoryTheory.Functor.biproductComparison'_comp_biproductComparison
@[reassoc (attr := simp)]
theorem biproductComparison'_comp_biproductComparison :
    biproductComparison' F f ≫ biproductComparison F f = 𝟙 (⨁ F.obj ∘ f) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] {J : Type w₁} (F : C ⥤ D) (f : J → C) [CategoryTheory.Limits.HasBiproduct f] [CategoryTheory.Limits.HasBiproduct (F.obj ∘ f)] [F.PreservesZeroMorphisms]
Goal: F.biproductComparison' f ≫ F.biproductComparison f = 𝟙 (⨁ F.obj ∘ f)
-- CategoryTheory.Functor.splitEpiBiproductComparison_section_
@[simps]
def splitEpiBiproductComparison : SplitEpi (biproductComparison F f) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] {J : Type w₁} (F : C ⥤ D) (f : J → C) [CategoryTheory.Limits.HasBiproduct f] [CategoryTheory.Limits.HasBiproduct (F.obj ∘ f)] [F.PreservesZeroMorphisms]
Goal: (F.splitEpiBiproductComparison f).section_ = F.biproductComparison' f
-- CategoryTheory.Functor.splitMonoBiproductComparison'_retraction
@[simps]
def splitMonoBiproductComparison' : SplitMono (biproductComparison' F f) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] {J : Type w₁} (F : C ⥤ D) (f : J → C) [CategoryTheory.Limits.HasBiproduct f] [CategoryTheory.Limits.HasBiproduct (F.obj ∘ f)] [F.PreservesZeroMorphisms]
Goal: (F.splitMonoBiproductComparison' f).retraction = F.biproductComparison f
-- CategoryTheory.Functor.mapBiproduct_hom
theorem mapBiproduct_hom :
    haveI : HasBiproduct fun j => F.obj (f j) := hasBiproduct_of_preserves F f
    (mapBiproduct F f).hom = biproduct.lift fun j => F.map (biproduct.π f j) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] {J : Type w₁} (F : C ⥤ D) (f : J → C) [CategoryTheory.Limits.HasBiproduct f] [F.PreservesZeroMorphisms] [CategoryTheory.Limits.PreservesBiproduct f F]
Goal: (F.mapBiproduct f).hom = CategoryTheory.Limits.biproduct.lift fun j => F.map (CategoryTheory.Limits.biproduct.π f j)
-- CategoryTheory.Functor.mapBiproduct_inv
theorem mapBiproduct_inv :
    haveI : HasBiproduct fun j => F.obj (f j) := hasBiproduct_of_preserves F f
    (mapBiproduct F f).inv = biproduct.desc fun j => F.map (biproduct.ι f j) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] {J : Type w₁} (F : C ⥤ D) (f : J → C) [CategoryTheory.Limits.HasBiproduct f] [F.PreservesZeroMorphisms] [CategoryTheory.Limits.PreservesBiproduct f F]
Goal: (F.mapBiproduct f).inv = CategoryTheory.Limits.biproduct.desc fun j => F.map (CategoryTheory.Limits.biproduct.ι f j)
-- CategoryTheory.Functor.biprodComparison_fst
@[reassoc (attr := simp)]
theorem biprodComparison_fst : biprodComparison F X Y ≫ biprod.fst = F.map biprod.fst 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) (X Y : C) [CategoryTheory.Limits.HasBinaryBiproduct X Y] [CategoryTheory.Limits.HasBinaryBiproduct (F.obj X) (F.obj Y)]
Goal: F.biprodComparison X Y ≫ CategoryTheory.Limits.biprod.fst = F.map CategoryTheory.Limits.biprod.fst
-- CategoryTheory.Functor.biprodComparison_snd
@[reassoc (attr := simp)]
theorem biprodComparison_snd : biprodComparison F X Y ≫ biprod.snd = F.map biprod.snd 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) (X Y : C) [CategoryTheory.Limits.HasBinaryBiproduct X Y] [CategoryTheory.Limits.HasBinaryBiproduct (F.obj X) (F.obj Y)]
Goal: F.biprodComparison X Y ≫ CategoryTheory.Limits.biprod.snd = F.map CategoryTheory.Limits.biprod.snd
-- CategoryTheory.Functor.inl_biprodComparison'
@[reassoc (attr := simp)]
theorem inl_biprodComparison' : biprod.inl ≫ biprodComparison' F X Y = F.map biprod.inl 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) (X Y : C) [CategoryTheory.Limits.HasBinaryBiproduct X Y] [CategoryTheory.Limits.HasBinaryBiproduct (F.obj X) (F.obj Y)]
Goal: CategoryTheory.Limits.biprod.inl ≫ F.biprodComparison' X Y = F.map CategoryTheory.Limits.biprod.inl
-- CategoryTheory.Functor.inr_biprodComparison'
@[reassoc (attr := simp)]
theorem inr_biprodComparison' : biprod.inr ≫ biprodComparison' F X Y = F.map biprod.inr 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) (X Y : C) [CategoryTheory.Limits.HasBinaryBiproduct X Y] [CategoryTheory.Limits.HasBinaryBiproduct (F.obj X) (F.obj Y)]
Goal: CategoryTheory.Limits.biprod.inr ≫ F.biprodComparison' X Y = F.map CategoryTheory.Limits.biprod.inr
-- CategoryTheory.Functor.biprodComparison'_comp_biprodComparison
@[reassoc (attr := simp)]
theorem biprodComparison'_comp_biprodComparison :
    biprodComparison' F X Y ≫ biprodComparison F X Y = 𝟙 (F.obj X ⊞ F.obj Y) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) (X Y : C) [CategoryTheory.Limits.HasBinaryBiproduct X Y] [CategoryTheory.Limits.HasBinaryBiproduct (F.obj X) (F.obj Y)] [F.PreservesZeroMorphisms]
Goal: F.biprodComparison' X Y ≫ F.biprodComparison X Y = 𝟙 (F.obj X ⊞ F.obj Y)
-- CategoryTheory.Functor.splitEpiBiprodComparison_section_
@[simps]
def splitEpiBiprodComparison : SplitEpi (biprodComparison F X Y) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) (X Y : C) [CategoryTheory.Limits.HasBinaryBiproduct X Y] [CategoryTheory.Limits.HasBinaryBiproduct (F.obj X) (F.obj Y)] [F.PreservesZeroMorphisms]
Goal: (F.splitEpiBiprodComparison X Y).section_ = F.biprodComparison' X Y
-- CategoryTheory.Functor.splitMonoBiprodComparison'_retraction
@[simps]
def splitMonoBiprodComparison' : SplitMono (biprodComparison' F X Y) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) (X Y : C) [CategoryTheory.Limits.HasBinaryBiproduct X Y] [CategoryTheory.Limits.HasBinaryBiproduct (F.obj X) (F.obj Y)] [F.PreservesZeroMorphisms]
Goal: (F.splitMonoBiprodComparison' X Y).retraction = F.biprodComparison X Y
-- CategoryTheory.Functor.mapBiprod_hom
theorem mapBiprod_hom : (mapBiprod F X Y).hom = biprod.lift (F.map biprod.fst) (F.map biprod.snd) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) (X Y : C) [CategoryTheory.Limits.HasBinaryBiproduct X Y] [F.PreservesZeroMorphisms] [CategoryTheory.Limits.PreservesBinaryBiproduct X Y F]
Goal: (F.mapBiprod X Y).hom =
  CategoryTheory.Limits.biprod.lift (F.map CategoryTheory.Limits.biprod.fst) (F.map CategoryTheory.Limits.biprod.snd)
-- CategoryTheory.Functor.mapBiprod_inv
theorem mapBiprod_inv : (mapBiprod F X Y).inv = biprod.desc (F.map biprod.inl) (F.map biprod.inr) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) (X Y : C) [CategoryTheory.Limits.HasBinaryBiproduct X Y] [F.PreservesZeroMorphisms] [CategoryTheory.Limits.PreservesBinaryBiproduct X Y F]
Goal: (F.mapBiprod X Y).inv =
  CategoryTheory.Limits.biprod.desc (F.map CategoryTheory.Limits.biprod.inl) (F.map CategoryTheory.Limits.biprod.inr)
-- CategoryTheory.Limits.biproduct.map_lift_mapBiprod
theorem biproduct.map_lift_mapBiprod (g : ∀ j, W ⟶ f j) :
    -- Porting note: twice we need haveI to tell Lean about hasBiproduct_of_preserves F f
    haveI : HasBiproduct fun j => F.obj (f j) := hasBiproduct_of_preserves F f
    F.map (biproduct.lift g) ≫ (F.mapBiproduct f).hom = biproduct.lift fun j => F.map (g j) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) [F.PreservesZeroMorphisms] {J : Type w₁} (f : J → C) [CategoryTheory.Limits.HasBiproduct f] [CategoryTheory.Limits.PreservesBiproduct f F] {W : C} (g : (j : J) → W ⟶ f j)
Goal: F.map (CategoryTheory.Limits.biproduct.lift g) ≫ (F.mapBiproduct f).hom =
  CategoryTheory.Limits.biproduct.lift fun j => F.map (g j)
-- CategoryTheory.Limits.biproduct.mapBiproduct_inv_map_desc
theorem biproduct.mapBiproduct_inv_map_desc (g : ∀ j, f j ⟶ W) :
    -- Porting note: twice we need haveI to tell Lean about hasBiproduct_of_preserves F f
    haveI : HasBiproduct fun j => F.obj (f j) := hasBiproduct_of_preserves F f
    (F.mapBiproduct f).inv ≫ F.map (biproduct.desc g) = biproduct.desc fun j => F.map (g j) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) [F.PreservesZeroMorphisms] {J : Type w₁} (f : J → C) [CategoryTheory.Limits.HasBiproduct f] [CategoryTheory.Limits.PreservesBiproduct f F] {W : C} (g : (j : J) → f j ⟶ W)
Goal: (F.mapBiproduct f).inv ≫ F.map (CategoryTheory.Limits.biproduct.desc g) =
  CategoryTheory.Limits.biproduct.desc fun j => F.map (g j)
-- CategoryTheory.Limits.biproduct.mapBiproduct_hom_desc
theorem biproduct.mapBiproduct_hom_desc (g : ∀ j, f j ⟶ W) :
    ((F.mapBiproduct f).hom ≫ biproduct.desc fun j => F.map (g j)) = F.map (biproduct.desc g) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) [F.PreservesZeroMorphisms] {J : Type w₁} (f : J → C) [CategoryTheory.Limits.HasBiproduct f] [CategoryTheory.Limits.PreservesBiproduct f F] {W : C} (g : (j : J) → f j ⟶ W)
Goal: ((F.mapBiproduct f).hom ≫ CategoryTheory.Limits.biproduct.desc fun j => F.map (g j)) =
  F.map (CategoryTheory.Limits.biproduct.desc g)
-- CategoryTheory.Limits.biprod.map_lift_mapBiprod
theorem biprod.map_lift_mapBiprod (f : W ⟶ X) (g : W ⟶ Y) :
    F.map (biprod.lift f g) ≫ (F.mapBiprod X Y).hom = biprod.lift (F.map f) (F.map g) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) [F.PreservesZeroMorphisms] (X Y : C) [CategoryTheory.Limits.HasBinaryBiproduct X Y] [CategoryTheory.Limits.PreservesBinaryBiproduct X Y F] {W : C} (f : W ⟶ X) (g : W ⟶ Y)
Goal: F.map (CategoryTheory.Limits.biprod.lift f g) ≫ (F.mapBiprod X Y).hom =
  CategoryTheory.Limits.biprod.lift (F.map f) (F.map g)
-- CategoryTheory.Limits.biprod.lift_mapBiprod
theorem biprod.lift_mapBiprod (f : W ⟶ X) (g : W ⟶ Y) :
    biprod.lift (F.map f) (F.map g) ≫ (F.mapBiprod X Y).inv = F.map (biprod.lift f g) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) [F.PreservesZeroMorphisms] (X Y : C) [CategoryTheory.Limits.HasBinaryBiproduct X Y] [CategoryTheory.Limits.PreservesBinaryBiproduct X Y F] {W : C} (f : W ⟶ X) (g : W ⟶ Y)
Goal: CategoryTheory.Limits.biprod.lift (F.map f) (F.map g) ≫ (F.mapBiprod X Y).inv =
  F.map (CategoryTheory.Limits.biprod.lift f g)
-- CategoryTheory.Limits.biprod.mapBiprod_inv_map_desc
theorem biprod.mapBiprod_inv_map_desc (f : X ⟶ W) (g : Y ⟶ W) :
    (F.mapBiprod X Y).inv ≫ F.map (biprod.desc f g) = biprod.desc (F.map f) (F.map g) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) [F.PreservesZeroMorphisms] (X Y : C) [CategoryTheory.Limits.HasBinaryBiproduct X Y] [CategoryTheory.Limits.PreservesBinaryBiproduct X Y F] {W : C} (f : X ⟶ W) (g : Y ⟶ W)
Goal: (F.mapBiprod X Y).inv ≫ F.map (CategoryTheory.Limits.biprod.desc f g) =
  CategoryTheory.Limits.biprod.desc (F.map f) (F.map g)
-- CategoryTheory.Limits.biprod.mapBiprod_hom_desc
theorem biprod.mapBiprod_hom_desc (f : X ⟶ W) (g : Y ⟶ W) :
    (F.mapBiprod X Y).hom ≫ biprod.desc (F.map f) (F.map g) = F.map (biprod.desc f g) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasZeroMorphisms D] (F : C ⥤ D) [F.PreservesZeroMorphisms] (X Y : C) [CategoryTheory.Limits.HasBinaryBiproduct X Y] [CategoryTheory.Limits.PreservesBinaryBiproduct X Y F] {W : C} (f : X ⟶ W) (g : Y ⟶ W)
Goal: (F.mapBiprod X Y).hom ≫ CategoryTheory.Limits.biprod.desc (F.map f) (F.map g) =
  F.map (CategoryTheory.Limits.biprod.desc f g)
-- CategoryTheory.Over.epi_left_of_epi
theorem epi_left_of_epi [HasPushouts C] {f g : Over X} (h : f ⟶ g) [Epi h] : Epi h.left 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} [CategoryTheory.Limits.HasPushouts C] {f g : CategoryTheory.Over X} (h : f ⟶ g) [CategoryTheory.Epi h]
Goal: CategoryTheory.Epi h.left
-- CategoryTheory.Over.epi_iff_epi_left
theorem epi_iff_epi_left [HasPushouts C] {f g : Over X} (h : f ⟶ g) : Epi h ↔ Epi h.left 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} [CategoryTheory.Limits.HasPushouts C] {f g : CategoryTheory.Over X} (h : f ⟶ g)
Goal: CategoryTheory.Epi h ↔ CategoryTheory.Epi h.left
-- CategoryTheory.Under.mono_right_of_mono
theorem mono_right_of_mono [HasPullbacks C] {f g : Under X} (h : f ⟶ g) [Mono h] : Mono h.right 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} [CategoryTheory.Limits.HasPullbacks C] {f g : CategoryTheory.Under X} (h : f ⟶ g) [CategoryTheory.Mono h]
Goal: CategoryTheory.Mono h.right
-- CategoryTheory.Under.mono_iff_mono_right
theorem mono_iff_mono_right [HasPullbacks C] {f g : Under X} (h : f ⟶ g) : Mono h ↔ Mono h.right 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} [CategoryTheory.Limits.HasPullbacks C] {f g : CategoryTheory.Under X} (h : f ⟶ g)
Goal: CategoryTheory.Mono h ↔ CategoryTheory.Mono h.right
-- CategoryTheory.Limits.WalkingPair.swap_apply_left
@[simp]
theorem WalkingPair.swap_apply_left : WalkingPair.swap left = right 
Goal: CategoryTheory.Limits.WalkingPair.swap CategoryTheory.Limits.WalkingPair.left = CategoryTheory.Limits.WalkingPair.right
-- CategoryTheory.Limits.WalkingPair.swap_apply_right
@[simp]
theorem WalkingPair.swap_apply_right : WalkingPair.swap right = left 
Goal: CategoryTheory.Limits.WalkingPair.swap CategoryTheory.Limits.WalkingPair.right = CategoryTheory.Limits.WalkingPair.left
-- CategoryTheory.Limits.WalkingPair.swap_symm_apply_tt
@[simp]
theorem WalkingPair.swap_symm_apply_tt : WalkingPair.swap.symm left = right 
Goal: CategoryTheory.Limits.WalkingPair.swap.symm CategoryTheory.Limits.WalkingPair.left =
  CategoryTheory.Limits.WalkingPair.right
-- CategoryTheory.Limits.WalkingPair.swap_symm_apply_ff
@[simp]
theorem WalkingPair.swap_symm_apply_ff : WalkingPair.swap.symm right = left 
Goal: CategoryTheory.Limits.WalkingPair.swap.symm CategoryTheory.Limits.WalkingPair.right =
  CategoryTheory.Limits.WalkingPair.left
-- CategoryTheory.Limits.WalkingPair.equivBool_apply_left
@[simp]
theorem WalkingPair.equivBool_apply_left : WalkingPair.equivBool left = true 
Goal: CategoryTheory.Limits.WalkingPair.equivBool CategoryTheory.Limits.WalkingPair.left = true
-- CategoryTheory.Limits.WalkingPair.equivBool_apply_right
@[simp]
theorem WalkingPair.equivBool_apply_right : WalkingPair.equivBool right = false 
Goal: CategoryTheory.Limits.WalkingPair.equivBool CategoryTheory.Limits.WalkingPair.right = false
-- CategoryTheory.Limits.WalkingPair.equivBool_symm_apply_true
@[simp]
theorem WalkingPair.equivBool_symm_apply_true : WalkingPair.equivBool.symm true = left 
Goal: CategoryTheory.Limits.WalkingPair.equivBool.symm true = CategoryTheory.Limits.WalkingPair.left
-- CategoryTheory.Limits.WalkingPair.equivBool_symm_apply_false
@[simp]
theorem WalkingPair.equivBool_symm_apply_false : WalkingPair.equivBool.symm false = right 
Goal: CategoryTheory.Limits.WalkingPair.equivBool.symm false = CategoryTheory.Limits.WalkingPair.right
-- CategoryTheory.Limits.pairFunction_left
@[simp]
theorem pairFunction_left (X Y : C) : pairFunction X Y left = X 
Arguments: {C : Type u} (X Y : C)
Goal: CategoryTheory.Limits.pairFunction X Y CategoryTheory.Limits.WalkingPair.left = X
-- CategoryTheory.Limits.pairFunction_right
@[simp]
theorem pairFunction_right (X Y : C) : pairFunction X Y right = Y 
Arguments: {C : Type u} (X Y : C)
Goal: CategoryTheory.Limits.pairFunction X Y CategoryTheory.Limits.WalkingPair.right = Y
-- CategoryTheory.Limits.pair_obj_left
@[simp]
theorem pair_obj_left (X Y : C) : (pair X Y).obj ⟨left⟩ = X 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (X Y : C)
Goal: (CategoryTheory.Limits.pair X Y).obj { as := CategoryTheory.Limits.WalkingPair.left } = X
-- CategoryTheory.Limits.pair_obj_right
@[simp]
theorem pair_obj_right (X Y : C) : (pair X Y).obj ⟨right⟩ = Y 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (X Y : C)
Goal: (CategoryTheory.Limits.pair X Y).obj { as := CategoryTheory.Limits.WalkingPair.right } = Y