category_theory.limits.preserves.shapes.biproducts
⟷
Mathlib.CategoryTheory.Limits.Preserves.Shapes.Biproducts
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -286,7 +286,10 @@ variable [PreservesZeroMorphisms F]
the biproduct, see `preserves_biproduct_of_mono_biproduct_comparison`. -/
@[simp, reassoc]
theorem biproductComparison'_comp_biproductComparison :
- biproductComparison' F f ≫ biproductComparison F f = 𝟙 (⨁ F.obj ∘ f) := by classical
+ biproductComparison' F f ≫ biproductComparison F f = 𝟙 (⨁ F.obj ∘ f) := by
+ classical
+ ext
+ simp [biproduct.ι_π, ← functor.map_comp, eq_to_hom_map]
#align category_theory.functor.biproduct_comparison'_comp_biproduct_comparison CategoryTheory.Functor.biproductComparison'_comp_biproductComparison
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -286,10 +286,7 @@ variable [PreservesZeroMorphisms F]
the biproduct, see `preserves_biproduct_of_mono_biproduct_comparison`. -/
@[simp, reassoc]
theorem biproductComparison'_comp_biproductComparison :
- biproductComparison' F f ≫ biproductComparison F f = 𝟙 (⨁ F.obj ∘ f) := by
- classical
- ext
- simp [biproduct.ι_π, ← functor.map_comp, eq_to_hom_map]
+ biproductComparison' F f ≫ biproductComparison F f = 𝟙 (⨁ F.obj ∘ f) := by classical
#align category_theory.functor.biproduct_comparison'_comp_biproduct_comparison CategoryTheory.Functor.biproductComparison'_comp_biproductComparison
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,8 +3,8 @@ Copyright (c) 2022 Markus Himmel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Markus Himmel
-/
-import Mathbin.CategoryTheory.Limits.Shapes.Biproducts
-import Mathbin.CategoryTheory.Limits.Preserves.Shapes.Zero
+import CategoryTheory.Limits.Shapes.Biproducts
+import CategoryTheory.Limits.Preserves.Shapes.Zero
#align_import category_theory.limits.preserves.shapes.biproducts from "leanprover-community/mathlib"@"69c6a5a12d8a2b159f20933e60115a4f2de62b58"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,15 +2,12 @@
Copyright (c) 2022 Markus Himmel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Markus Himmel
-
-! This file was ported from Lean 3 source module category_theory.limits.preserves.shapes.biproducts
-! leanprover-community/mathlib commit 69c6a5a12d8a2b159f20933e60115a4f2de62b58
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.CategoryTheory.Limits.Shapes.Biproducts
import Mathbin.CategoryTheory.Limits.Preserves.Shapes.Zero
+#align_import category_theory.limits.preserves.shapes.biproducts from "leanprover-community/mathlib"@"69c6a5a12d8a2b159f20933e60115a4f2de62b58"
+
/-!
# Preservation of biproducts
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -55,6 +55,7 @@ section Bicone
variable {J : Type w₁}
+#print CategoryTheory.Functor.mapBicone /-
/-- The image of a bicone under a functor. -/
@[simps]
def mapBicone {f : J → C} (b : Bicone f) : Bicone (F.obj ∘ f)
@@ -69,6 +70,7 @@ def mapBicone {f : J → C} (b : Bicone f) : Bicone (F.obj ∘ f)
simp only [bicone_ι_π_self, CategoryTheory.Functor.map_id, eq_to_hom_refl]
· rw [bicone_ι_π_ne _ h, F.map_zero]
#align category_theory.functor.map_bicone CategoryTheory.Functor.mapBicone
+-/
#print CategoryTheory.Functor.mapBicone_whisker /-
theorem mapBicone_whisker {K : Type w₂} {g : K ≃ J} {f : J → C} (c : Bicone f) :
@@ -79,6 +81,7 @@ theorem mapBicone_whisker {K : Type w₂} {g : K ≃ J} {f : J → C} (c : Bicon
end Bicone
+#print CategoryTheory.Functor.mapBinaryBicone /-
/-- The image of a binary bicone under a functor. -/
@[simps]
def mapBinaryBicone {X Y : C} (b : BinaryBicone X Y) : BinaryBicone (F.obj X) (F.obj Y)
@@ -93,6 +96,7 @@ def mapBinaryBicone {X Y : C} (b : BinaryBicone X Y) : BinaryBicone (F.obj X) (F
inr_fst := by rw [← F.map_comp, b.inr_fst, F.map_zero]
inr_snd := by rw [← F.map_comp, b.inr_snd, F.map_id]
#align category_theory.functor.map_binary_bicone CategoryTheory.Functor.mapBinaryBicone
+-/
end Map
@@ -114,12 +118,14 @@ class PreservesBiproduct (f : J → C) (F : C ⥤ D) [PreservesZeroMorphisms F]
#align category_theory.limits.preserves_biproduct CategoryTheory.Limits.PreservesBiproduct
-/
+#print CategoryTheory.Limits.isBilimitOfPreserves /-
/-- A functor `F` preserves biproducts of `f` if `F` maps every bilimit bicone over `f` to a
bilimit bicone over `F.obj ∘ f`. -/
def isBilimitOfPreserves {f : J → C} (F : C ⥤ D) [PreservesZeroMorphisms F] [PreservesBiproduct f F]
{b : Bicone f} (hb : b.IsBilimit) : (F.mapBicone b).IsBilimit :=
PreservesBiproduct.preserves hb
#align category_theory.limits.is_bilimit_of_preserves CategoryTheory.Limits.isBilimitOfPreserves
+-/
variable (J)
@@ -184,6 +190,7 @@ class PreservesBinaryBiproduct (X Y : C) (F : C ⥤ D) [PreservesZeroMorphisms F
#align category_theory.limits.preserves_binary_biproduct CategoryTheory.Limits.PreservesBinaryBiproduct
-/
+#print CategoryTheory.Limits.isBinaryBilimitOfPreserves /-
/-- A functor `F` preserves binary biproducts of `X` and `Y` if `F` maps every bilimit bicone over
`X` and `Y` to a bilimit bicone over `F.obj X` and `F.obj Y`. -/
def isBinaryBilimitOfPreserves {X Y : C} (F : C ⥤ D) [PreservesZeroMorphisms F]
@@ -191,6 +198,7 @@ def isBinaryBilimitOfPreserves {X Y : C} (F : C ⥤ D) [PreservesZeroMorphisms F
(F.mapBinaryBicone b).IsBilimit :=
PreservesBinaryBiproduct.preserves hb
#align category_theory.limits.is_binary_bilimit_of_preserves CategoryTheory.Limits.isBinaryBilimitOfPreserves
+-/
#print CategoryTheory.Limits.PreservesBinaryBiproducts /-
/-- A functor `F` preserves binary biproducts if it preserves the binary biproduct of `X` and `Y`
@@ -242,32 +250,41 @@ section
variable [HasBiproduct (F.obj ∘ f)]
+#print CategoryTheory.Functor.biproductComparison /-
/-- As for products, any functor between categories with biproducts gives rise to a morphism
`F.obj (⨁ f) ⟶ ⨁ (F.obj ∘ f)`. -/
def biproductComparison : F.obj (⨁ f) ⟶ ⨁ F.obj ∘ f :=
biproduct.lift fun j => F.map (biproduct.π f j)
#align category_theory.functor.biproduct_comparison CategoryTheory.Functor.biproductComparison
+-/
+#print CategoryTheory.Functor.biproductComparison_π /-
@[simp, reassoc]
theorem biproductComparison_π (j : J) :
biproductComparison F f ≫ biproduct.π _ j = F.map (biproduct.π f j) :=
biproduct.lift_π _ _
#align category_theory.functor.biproduct_comparison_π CategoryTheory.Functor.biproductComparison_π
+-/
+#print CategoryTheory.Functor.biproductComparison' /-
/-- As for coproducts, any functor between categories with biproducts gives rise to a morphism
`⨁ (F.obj ∘ f) ⟶ F.obj (⨁ f)` -/
def biproductComparison' : ⨁ F.obj ∘ f ⟶ F.obj (⨁ f) :=
biproduct.desc fun j => F.map (biproduct.ι f j)
#align category_theory.functor.biproduct_comparison' CategoryTheory.Functor.biproductComparison'
+-/
+#print CategoryTheory.Functor.ι_biproductComparison' /-
@[simp, reassoc]
theorem ι_biproductComparison' (j : J) :
biproduct.ι _ j ≫ biproductComparison' F f = F.map (biproduct.ι f j) :=
biproduct.ι_desc _ _
#align category_theory.functor.ι_biproduct_comparison' CategoryTheory.Functor.ι_biproductComparison'
+-/
variable [PreservesZeroMorphisms F]
+#print CategoryTheory.Functor.biproductComparison'_comp_biproductComparison /-
/-- The composition in the opposite direction is equal to the identity if and only if `F` preserves
the biproduct, see `preserves_biproduct_of_mono_biproduct_comparison`. -/
@[simp, reassoc]
@@ -277,21 +294,26 @@ theorem biproductComparison'_comp_biproductComparison :
ext
simp [biproduct.ι_π, ← functor.map_comp, eq_to_hom_map]
#align category_theory.functor.biproduct_comparison'_comp_biproduct_comparison CategoryTheory.Functor.biproductComparison'_comp_biproductComparison
+-/
+#print CategoryTheory.Functor.splitEpiBiproductComparison /-
/-- `biproduct_comparison F f` is a split epimorphism. -/
@[simps]
def splitEpiBiproductComparison : SplitEpi (biproductComparison F f) :=
⟨biproductComparison' F f⟩
#align category_theory.functor.split_epi_biproduct_comparison CategoryTheory.Functor.splitEpiBiproductComparison
+-/
instance : IsSplitEpi (biproductComparison F f) :=
IsSplitEpi.mk' (splitEpiBiproductComparison F f)
+#print CategoryTheory.Functor.splitMonoBiproductComparison' /-
/-- `biproduct_comparison' F f` is a split monomorphism. -/
@[simps]
def splitMonoBiproductComparison' : SplitMono (biproductComparison' F f) :=
⟨biproductComparison F f⟩
#align category_theory.functor.split_mono_biproduct_comparison' CategoryTheory.Functor.splitMonoBiproductComparison'
+-/
instance : IsSplitMono (biproductComparison' F f) :=
IsSplitMono.mk' (splitMonoBiproductComparison' F f)
@@ -300,28 +322,36 @@ end
variable [PreservesZeroMorphisms F] [PreservesBiproduct f F]
+#print CategoryTheory.Functor.hasBiproduct_of_preserves /-
instance hasBiproduct_of_preserves : HasBiproduct (F.obj ∘ f) :=
HasBiproduct.mk
{ Bicone := F.mapBicone (biproduct.bicone f)
IsBilimit := PreservesBiproduct.preserves (biproduct.isBilimit _) }
#align category_theory.functor.has_biproduct_of_preserves CategoryTheory.Functor.hasBiproduct_of_preserves
+-/
+#print CategoryTheory.Functor.mapBiproduct /-
/-- If `F` preserves a biproduct, we get a definitionally nice isomorphism
`F.obj (⨁ f) ≅ ⨁ (F.obj ∘ f)`. -/
@[simp]
def mapBiproduct : F.obj (⨁ f) ≅ ⨁ F.obj ∘ f :=
biproduct.uniqueUpToIso _ (PreservesBiproduct.preserves (biproduct.isBilimit _))
#align category_theory.functor.map_biproduct CategoryTheory.Functor.mapBiproduct
+-/
+#print CategoryTheory.Functor.mapBiproduct_hom /-
theorem mapBiproduct_hom :
(mapBiproduct F f).hom = biproduct.lift fun j => F.map (biproduct.π f j) :=
rfl
#align category_theory.functor.map_biproduct_hom CategoryTheory.Functor.mapBiproduct_hom
+-/
+#print CategoryTheory.Functor.mapBiproduct_inv /-
theorem mapBiproduct_inv :
(mapBiproduct F f).inv = biproduct.desc fun j => F.map (biproduct.ι f j) :=
rfl
#align category_theory.functor.map_biproduct_inv CategoryTheory.Functor.mapBiproduct_inv
+-/
end Bicone
@@ -331,40 +361,53 @@ section
variable [HasBinaryBiproduct (F.obj X) (F.obj Y)]
+#print CategoryTheory.Functor.biprodComparison /-
/-- As for products, any functor between categories with binary biproducts gives rise to a
morphism `F.obj (X ⊞ Y) ⟶ F.obj X ⊞ F.obj Y`. -/
def biprodComparison : F.obj (X ⊞ Y) ⟶ F.obj X ⊞ F.obj Y :=
biprod.lift (F.map biprod.fst) (F.map biprod.snd)
#align category_theory.functor.biprod_comparison CategoryTheory.Functor.biprodComparison
+-/
+#print CategoryTheory.Functor.biprodComparison_fst /-
@[simp, reassoc]
theorem biprodComparison_fst : biprodComparison F X Y ≫ biprod.fst = F.map biprod.fst :=
biprod.lift_fst _ _
#align category_theory.functor.biprod_comparison_fst CategoryTheory.Functor.biprodComparison_fst
+-/
+#print CategoryTheory.Functor.biprodComparison_snd /-
@[simp, reassoc]
theorem biprodComparison_snd : biprodComparison F X Y ≫ biprod.snd = F.map biprod.snd :=
biprod.lift_snd _ _
#align category_theory.functor.biprod_comparison_snd CategoryTheory.Functor.biprodComparison_snd
+-/
+#print CategoryTheory.Functor.biprodComparison' /-
/-- As for coproducts, any functor between categories with binary biproducts gives rise to a
morphism `F.obj X ⊞ F.obj Y ⟶ F.obj (X ⊞ Y)`. -/
def biprodComparison' : F.obj X ⊞ F.obj Y ⟶ F.obj (X ⊞ Y) :=
biprod.desc (F.map biprod.inl) (F.map biprod.inr)
#align category_theory.functor.biprod_comparison' CategoryTheory.Functor.biprodComparison'
+-/
+#print CategoryTheory.Functor.inl_biprodComparison' /-
@[simp, reassoc]
theorem inl_biprodComparison' : biprod.inl ≫ biprodComparison' F X Y = F.map biprod.inl :=
biprod.inl_desc _ _
#align category_theory.functor.inl_biprod_comparison' CategoryTheory.Functor.inl_biprodComparison'
+-/
+#print CategoryTheory.Functor.inr_biprodComparison' /-
@[simp, reassoc]
theorem inr_biprodComparison' : biprod.inr ≫ biprodComparison' F X Y = F.map biprod.inr :=
biprod.inr_desc _ _
#align category_theory.functor.inr_biprod_comparison' CategoryTheory.Functor.inr_biprodComparison'
+-/
variable [PreservesZeroMorphisms F]
+#print CategoryTheory.Functor.biprodComparison'_comp_biprodComparison /-
/-- The composition in the opposite direction is equal to the identity if and only if `F` preserves
the biproduct, see `preserves_binary_biproduct_of_mono_biprod_comparison`. -/
@[simp, reassoc]
@@ -372,21 +415,26 @@ theorem biprodComparison'_comp_biprodComparison :
biprodComparison' F X Y ≫ biprodComparison F X Y = 𝟙 (F.obj X ⊞ F.obj Y) := by
ext <;> simp [← functor.map_comp]
#align category_theory.functor.biprod_comparison'_comp_biprod_comparison CategoryTheory.Functor.biprodComparison'_comp_biprodComparison
+-/
+#print CategoryTheory.Functor.splitEpiBiprodComparison /-
/-- `biprod_comparison F X Y` is a split epi. -/
@[simps]
def splitEpiBiprodComparison : SplitEpi (biprodComparison F X Y) :=
⟨biprodComparison' F X Y⟩
#align category_theory.functor.split_epi_biprod_comparison CategoryTheory.Functor.splitEpiBiprodComparison
+-/
instance : IsSplitEpi (biprodComparison F X Y) :=
IsSplitEpi.mk' (splitEpiBiprodComparison F X Y)
+#print CategoryTheory.Functor.splitMonoBiprodComparison' /-
/-- `biprod_comparison' F X Y` is a split mono. -/
@[simps]
def splitMonoBiprodComparison' : SplitMono (biprodComparison' F X Y) :=
⟨biprodComparison F X Y⟩
#align category_theory.functor.split_mono_biprod_comparison' CategoryTheory.Functor.splitMonoBiprodComparison'
+-/
instance : IsSplitMono (biprodComparison' F X Y) :=
IsSplitMono.mk' (splitMonoBiprodComparison' F X Y)
@@ -395,26 +443,34 @@ end
variable [PreservesZeroMorphisms F] [PreservesBinaryBiproduct X Y F]
+#print CategoryTheory.Functor.hasBinaryBiproduct_of_preserves /-
instance hasBinaryBiproduct_of_preserves : HasBinaryBiproduct (F.obj X) (F.obj Y) :=
HasBinaryBiproduct.mk
{ Bicone := F.mapBinaryBicone (BinaryBiproduct.bicone X Y)
IsBilimit := PreservesBinaryBiproduct.preserves (BinaryBiproduct.isBilimit _ _) }
#align category_theory.functor.has_binary_biproduct_of_preserves CategoryTheory.Functor.hasBinaryBiproduct_of_preserves
+-/
+#print CategoryTheory.Functor.mapBiprod /-
/-- If `F` preserves a binary biproduct, we get a definitionally nice isomorphism
`F.obj (X ⊞ Y) ≅ F.obj X ⊞ F.obj Y`. -/
@[simp]
def mapBiprod : F.obj (X ⊞ Y) ≅ F.obj X ⊞ F.obj Y :=
biprod.uniqueUpToIso _ _ (PreservesBinaryBiproduct.preserves (BinaryBiproduct.isBilimit _ _))
#align category_theory.functor.map_biprod CategoryTheory.Functor.mapBiprod
+-/
+#print CategoryTheory.Functor.mapBiprod_hom /-
theorem mapBiprod_hom : (mapBiprod F X Y).hom = biprod.lift (F.map biprod.fst) (F.map biprod.snd) :=
rfl
#align category_theory.functor.map_biprod_hom CategoryTheory.Functor.mapBiprod_hom
+-/
+#print CategoryTheory.Functor.mapBiprod_inv /-
theorem mapBiprod_inv : (mapBiprod F X Y).inv = biprod.desc (F.map biprod.inl) (F.map biprod.inr) :=
rfl
#align category_theory.functor.map_biprod_inv CategoryTheory.Functor.mapBiprod_inv
+-/
end Functor
@@ -426,20 +482,26 @@ section Bicone
variable {J : Type w₁} (f : J → C) [HasBiproduct f] [PreservesBiproduct f F] {W : C}
+#print CategoryTheory.Limits.biproduct.map_lift_mapBiprod /-
theorem biproduct.map_lift_mapBiprod (g : ∀ j, W ⟶ f j) :
F.map (biproduct.lift g) ≫ (F.mapBiproduct f).hom = biproduct.lift fun j => F.map (g j) := by
ext; simp [← F.map_comp]
#align category_theory.limits.biproduct.map_lift_map_biprod CategoryTheory.Limits.biproduct.map_lift_mapBiprod
+-/
+#print CategoryTheory.Limits.biproduct.mapBiproduct_inv_map_desc /-
theorem biproduct.mapBiproduct_inv_map_desc (g : ∀ j, f j ⟶ W) :
(F.mapBiproduct f).inv ≫ F.map (biproduct.desc g) = biproduct.desc fun j => F.map (g j) := by
ext; simp [← F.map_comp]
#align category_theory.limits.biproduct.map_biproduct_inv_map_desc CategoryTheory.Limits.biproduct.mapBiproduct_inv_map_desc
+-/
+#print 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) := by
rw [← biproduct.map_biproduct_inv_map_desc, iso.hom_inv_id_assoc]
#align category_theory.limits.biproduct.map_biproduct_hom_desc CategoryTheory.Limits.biproduct.mapBiproduct_hom_desc
+-/
end Bicone
@@ -447,25 +509,33 @@ section BinaryBicone
variable (X Y : C) [HasBinaryBiproduct X Y] [PreservesBinaryBiproduct X Y F] {W : C}
+#print 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) := by
ext <;> simp [← F.map_comp]
#align category_theory.limits.biprod.map_lift_map_biprod CategoryTheory.Limits.biprod.map_lift_mapBiprod
+-/
+#print 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) := by
rw [← biprod.map_lift_map_biprod, category.assoc, iso.hom_inv_id, category.comp_id]
#align category_theory.limits.biprod.lift_map_biprod CategoryTheory.Limits.biprod.lift_mapBiprod
+-/
+#print 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) := by
ext <;> simp [← F.map_comp]
#align category_theory.limits.biprod.map_biprod_inv_map_desc CategoryTheory.Limits.biprod.mapBiprod_inv_map_desc
+-/
+#print 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) := by
rw [← biprod.map_biprod_inv_map_desc, iso.hom_inv_id_assoc]
#align category_theory.limits.biprod.map_biprod_hom_desc CategoryTheory.Limits.biprod.mapBiprod_hom_desc
+-/
end BinaryBicone
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -274,8 +274,8 @@ variable [PreservesZeroMorphisms F]
theorem biproductComparison'_comp_biproductComparison :
biproductComparison' F f ≫ biproductComparison F f = 𝟙 (⨁ F.obj ∘ f) := by
classical
- ext
- simp [biproduct.ι_π, ← functor.map_comp, eq_to_hom_map]
+ ext
+ simp [biproduct.ι_π, ← functor.map_comp, eq_to_hom_map]
#align category_theory.functor.biproduct_comparison'_comp_biproduct_comparison CategoryTheory.Functor.biproductComparison'_comp_biproductComparison
/-- `biproduct_comparison F f` is a split epimorphism. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -55,12 +55,6 @@ section Bicone
variable {J : Type w₁}
-/- warning: category_theory.functor.map_bicone -> CategoryTheory.Functor.mapBicone is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] {J : Type.{u1}} {f : J -> C}, (CategoryTheory.Limits.Bicone.{u1, u2, u4} J C _inst_1 _inst_3 f) -> (CategoryTheory.Limits.Bicone.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f))
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] {J : Type.{u1}} {f : J -> C}, (CategoryTheory.Limits.Bicone.{u1, u2, u4} J C _inst_1 _inst_3 f) -> (CategoryTheory.Limits.Bicone.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_bicone CategoryTheory.Functor.mapBiconeₓ'. -/
/-- The image of a bicone under a functor. -/
@[simps]
def mapBicone {f : J → C} (b : Bicone f) : Bicone (F.obj ∘ f)
@@ -85,12 +79,6 @@ theorem mapBicone_whisker {K : Type w₂} {g : K ≃ J} {f : J → C} (c : Bicon
end Bicone
-/- warning: category_theory.functor.map_binary_bicone -> CategoryTheory.Functor.mapBinaryBicone is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] {X : C} {Y : C}, (CategoryTheory.Limits.BinaryBicone.{u1, u3} C _inst_1 _inst_3 X Y) -> (CategoryTheory.Limits.BinaryBicone.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] {X : C} {Y : C}, (CategoryTheory.Limits.BinaryBicone.{u1, u3} C _inst_1 _inst_3 X Y) -> (CategoryTheory.Limits.BinaryBicone.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_binary_bicone CategoryTheory.Functor.mapBinaryBiconeₓ'. -/
/-- The image of a binary bicone under a functor. -/
@[simps]
def mapBinaryBicone {X Y : C} (b : BinaryBicone X Y) : BinaryBicone (F.obj X) (F.obj Y)
@@ -126,12 +114,6 @@ class PreservesBiproduct (f : J → C) (F : C ⥤ D) [PreservesZeroMorphisms F]
#align category_theory.limits.preserves_biproduct CategoryTheory.Limits.PreservesBiproduct
-/
-/- warning: category_theory.limits.is_bilimit_of_preserves -> CategoryTheory.Limits.isBilimitOfPreserves is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} {f : J -> C} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_6 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_5] {b : CategoryTheory.Limits.Bicone.{u1, u2, u4} J C _inst_1 _inst_3 f}, (CategoryTheory.Limits.Bicone.IsBilimit.{u1, u2, u4} J C _inst_1 _inst_3 f b) -> (CategoryTheory.Limits.Bicone.IsBilimit.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.mapBicone.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F _inst_5 J f b))
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} {f : J -> C} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_6 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_5] {b : CategoryTheory.Limits.Bicone.{u1, u2, u4} J C _inst_1 _inst_3 f}, (CategoryTheory.Limits.Bicone.IsBilimit.{u1, u2, u4} J C _inst_1 _inst_3 f b) -> (CategoryTheory.Limits.Bicone.IsBilimit.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.mapBicone.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F _inst_5 J f b))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.is_bilimit_of_preserves CategoryTheory.Limits.isBilimitOfPreservesₓ'. -/
/-- A functor `F` preserves biproducts of `f` if `F` maps every bilimit bicone over `f` to a
bilimit bicone over `F.obj ∘ f`. -/
def isBilimitOfPreserves {f : J → C} (F : C ⥤ D) [PreservesZeroMorphisms F] [PreservesBiproduct f F]
@@ -202,12 +184,6 @@ class PreservesBinaryBiproduct (X Y : C) (F : C ⥤ D) [PreservesZeroMorphisms F
#align category_theory.limits.preserves_binary_biproduct CategoryTheory.Limits.PreservesBinaryBiproduct
-/
-/- warning: category_theory.limits.is_binary_bilimit_of_preserves -> CategoryTheory.Limits.isBinaryBilimitOfPreserves is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] {X : C} {Y : C} (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_6 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_5] {b : CategoryTheory.Limits.BinaryBicone.{u1, u3} C _inst_1 _inst_3 X Y}, (CategoryTheory.Limits.BinaryBicone.IsBilimit.{u1, u3} C _inst_1 _inst_3 X Y b) -> (CategoryTheory.Limits.BinaryBicone.IsBilimit.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.mapBinaryBicone.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F _inst_5 X Y b))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] {X : C} {Y : C} (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_6 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_5] {b : CategoryTheory.Limits.BinaryBicone.{u1, u3} C _inst_1 _inst_3 X Y}, (CategoryTheory.Limits.BinaryBicone.IsBilimit.{u1, u3} C _inst_1 _inst_3 X Y b) -> (CategoryTheory.Limits.BinaryBicone.IsBilimit.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.mapBinaryBicone.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F _inst_5 X Y b))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.is_binary_bilimit_of_preserves CategoryTheory.Limits.isBinaryBilimitOfPreservesₓ'. -/
/-- A functor `F` preserves binary biproducts of `X` and `Y` if `F` maps every bilimit bicone over
`X` and `Y` to a bilimit bicone over `F.obj X` and `F.obj Y`. -/
def isBinaryBilimitOfPreserves {X Y : C} (F : C ⥤ D) [PreservesZeroMorphisms F]
@@ -266,48 +242,24 @@ section
variable [HasBiproduct (F.obj ∘ f)]
-/- warning: category_theory.functor.biproduct_comparison -> CategoryTheory.Functor.biproductComparison is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f)], Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6)
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f)], Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6)
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.biproduct_comparison CategoryTheory.Functor.biproductComparisonₓ'. -/
/-- As for products, any functor between categories with biproducts gives rise to a morphism
`F.obj (⨁ f) ⟶ ⨁ (F.obj ∘ f)`. -/
def biproductComparison : F.obj (⨁ f) ⟶ ⨁ F.obj ∘ f :=
biproduct.lift fun j => F.map (biproduct.π f j)
#align category_theory.functor.biproduct_comparison CategoryTheory.Functor.biproductComparison
-/- warning: category_theory.functor.biproduct_comparison_π -> CategoryTheory.Functor.biproductComparison_π is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f)] (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f j)) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6) (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f j) (CategoryTheory.Functor.biproductComparison.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6) (CategoryTheory.Limits.biproduct.π.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6 j)) (CategoryTheory.Functor.map.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5) (f j) (CategoryTheory.Limits.biproduct.π.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5 j))
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f)] (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f j)) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6) (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f j) (CategoryTheory.Functor.biproductComparison.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6) (CategoryTheory.Limits.biproduct.π.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6 j)) (Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5) (f j) (CategoryTheory.Limits.biproduct.π.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5 j))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.biproduct_comparison_π CategoryTheory.Functor.biproductComparison_πₓ'. -/
@[simp, reassoc]
theorem biproductComparison_π (j : J) :
biproductComparison F f ≫ biproduct.π _ j = F.map (biproduct.π f j) :=
biproduct.lift_π _ _
#align category_theory.functor.biproduct_comparison_π CategoryTheory.Functor.biproductComparison_π
-/- warning: category_theory.functor.biproduct_comparison' -> CategoryTheory.Functor.biproductComparison' is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f)], Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5))
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f)], Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.biproduct_comparison' CategoryTheory.Functor.biproductComparison'ₓ'. -/
/-- As for coproducts, any functor between categories with biproducts gives rise to a morphism
`⨁ (F.obj ∘ f) ⟶ F.obj (⨁ f)` -/
def biproductComparison' : ⨁ F.obj ∘ f ⟶ F.obj (⨁ f) :=
biproduct.desc fun j => F.map (biproduct.ι f j)
#align category_theory.functor.biproduct_comparison' CategoryTheory.Functor.biproductComparison'
-/- warning: category_theory.functor.ι_biproduct_comparison' -> CategoryTheory.Functor.ι_biproductComparison' is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f)] (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f j) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5))) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f j) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.ι.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6 j) (CategoryTheory.Functor.biproductComparison'.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6)) (CategoryTheory.Functor.map.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (f j) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5) (CategoryTheory.Limits.biproduct.ι.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5 j))
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f)] (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f j) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5))) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f j) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.ι.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6 j) (CategoryTheory.Functor.biproductComparison'.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6)) (Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (f j) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5) (CategoryTheory.Limits.biproduct.ι.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5 j))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.ι_biproduct_comparison' CategoryTheory.Functor.ι_biproductComparison'ₓ'. -/
@[simp, reassoc]
theorem ι_biproductComparison' (j : J) :
biproduct.ι _ j ≫ biproductComparison' F f = F.map (biproduct.ι f j) :=
@@ -316,12 +268,6 @@ theorem ι_biproductComparison' (j : J) :
variable [PreservesZeroMorphisms F]
-/- warning: category_theory.functor.biproduct_comparison'_comp_biproduct_comparison -> CategoryTheory.Functor.biproductComparison'_comp_biproductComparison is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F], Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6)) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6) (CategoryTheory.Functor.biproductComparison'.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6) (CategoryTheory.Functor.biproductComparison.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6)) (CategoryTheory.CategoryStruct.id.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6))
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F], Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6)) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6) (CategoryTheory.Functor.biproductComparison'.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6) (CategoryTheory.Functor.biproductComparison.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6)) (CategoryTheory.CategoryStruct.id.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.biproduct_comparison'_comp_biproduct_comparison CategoryTheory.Functor.biproductComparison'_comp_biproductComparisonₓ'. -/
/-- The composition in the opposite direction is equal to the identity if and only if `F` preserves
the biproduct, see `preserves_biproduct_of_mono_biproduct_comparison`. -/
@[simp, reassoc]
@@ -332,12 +278,6 @@ theorem biproductComparison'_comp_biproductComparison :
simp [biproduct.ι_π, ← functor.map_comp, eq_to_hom_map]
#align category_theory.functor.biproduct_comparison'_comp_biproduct_comparison CategoryTheory.Functor.biproductComparison'_comp_biproductComparison
-/- warning: category_theory.functor.split_epi_biproduct_comparison -> CategoryTheory.Functor.splitEpiBiproductComparison is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F], CategoryTheory.SplitEpi.{u3, u5} D _inst_2 (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6) (CategoryTheory.Functor.biproductComparison.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6)
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F], CategoryTheory.SplitEpi.{u3, u5} D _inst_2 (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6) (CategoryTheory.Functor.biproductComparison.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6)
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.split_epi_biproduct_comparison CategoryTheory.Functor.splitEpiBiproductComparisonₓ'. -/
/-- `biproduct_comparison F f` is a split epimorphism. -/
@[simps]
def splitEpiBiproductComparison : SplitEpi (biproductComparison F f) :=
@@ -347,12 +287,6 @@ def splitEpiBiproductComparison : SplitEpi (biproductComparison F f) :=
instance : IsSplitEpi (biproductComparison F f) :=
IsSplitEpi.mk' (splitEpiBiproductComparison F f)
-/- warning: category_theory.functor.split_mono_biproduct_comparison' -> CategoryTheory.Functor.splitMonoBiproductComparison' is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F], CategoryTheory.SplitMono.{u3, u5} D _inst_2 (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Functor.biproductComparison'.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6)
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F], CategoryTheory.SplitMono.{u3, u5} D _inst_2 (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Functor.biproductComparison'.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6)
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.split_mono_biproduct_comparison' CategoryTheory.Functor.splitMonoBiproductComparison'ₓ'. -/
/-- `biproduct_comparison' F f` is a split monomorphism. -/
@[simps]
def splitMonoBiproductComparison' : SplitMono (biproductComparison' F f) :=
@@ -366,24 +300,12 @@ end
variable [PreservesZeroMorphisms F] [PreservesBiproduct f F]
-/- warning: category_theory.functor.has_biproduct_of_preserves -> CategoryTheory.Functor.hasBiproduct_of_preserves is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_6], CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f)
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_6], CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f)
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.has_biproduct_of_preserves CategoryTheory.Functor.hasBiproduct_of_preservesₓ'. -/
instance hasBiproduct_of_preserves : HasBiproduct (F.obj ∘ f) :=
HasBiproduct.mk
{ Bicone := F.mapBicone (biproduct.bicone f)
IsBilimit := PreservesBiproduct.preserves (biproduct.isBilimit _) }
#align category_theory.functor.has_biproduct_of_preserves CategoryTheory.Functor.hasBiproduct_of_preserves
-/- warning: category_theory.functor.map_biproduct -> CategoryTheory.Functor.mapBiproduct is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_6], CategoryTheory.Iso.{u3, u5} D _inst_2 (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7))
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_6], CategoryTheory.Iso.{u3, u5} D _inst_2 (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_biproduct CategoryTheory.Functor.mapBiproductₓ'. -/
/-- If `F` preserves a biproduct, we get a definitionally nice isomorphism
`F.obj (⨁ f) ≅ ⨁ (F.obj ∘ f)`. -/
@[simp]
@@ -391,23 +313,11 @@ def mapBiproduct : F.obj (⨁ f) ≅ ⨁ F.obj ∘ f :=
biproduct.uniqueUpToIso _ (PreservesBiproduct.preserves (biproduct.isBilimit _))
#align category_theory.functor.map_biproduct CategoryTheory.Functor.mapBiproduct
-/- warning: category_theory.functor.map_biproduct_hom -> CategoryTheory.Functor.mapBiproduct_hom is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_6], Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7))) (CategoryTheory.Iso.hom.{u3, u5} D _inst_2 (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7)) (CategoryTheory.Functor.mapBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7)) (CategoryTheory.Limits.biproduct.lift.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (fun (j : J) => CategoryTheory.Functor.map.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5) (f j) (CategoryTheory.Limits.biproduct.π.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5 j)))
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_6], Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7))) (CategoryTheory.Iso.hom.{u3, u5} D _inst_2 (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7)) (CategoryTheory.Functor.mapBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7)) (CategoryTheory.Limits.biproduct.lift.{u1, u3, u5} J D _inst_2 _inst_4 (fun (j : J) => Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (f j)) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (fun (j : J) => Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5) (f j) (CategoryTheory.Limits.biproduct.π.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5 j)))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_biproduct_hom CategoryTheory.Functor.mapBiproduct_homₓ'. -/
theorem mapBiproduct_hom :
(mapBiproduct F f).hom = biproduct.lift fun j => F.map (biproduct.π f j) :=
rfl
#align category_theory.functor.map_biproduct_hom CategoryTheory.Functor.mapBiproduct_hom
-/- warning: category_theory.functor.map_biproduct_inv -> CategoryTheory.Functor.mapBiproduct_inv is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_6], Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5))) (CategoryTheory.Iso.inv.{u3, u5} D _inst_2 (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7)) (CategoryTheory.Functor.mapBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7)) (CategoryTheory.Limits.biproduct.desc.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (fun (j : J) => CategoryTheory.Functor.map.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (f j) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5) (CategoryTheory.Limits.biproduct.ι.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5 j)))
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_6], Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5))) (CategoryTheory.Iso.inv.{u3, u5} D _inst_2 (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7)) (CategoryTheory.Functor.mapBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7)) (CategoryTheory.Limits.biproduct.desc.{u1, u3, u5} J D _inst_2 _inst_4 (fun (j : J) => Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (f j)) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (fun (j : J) => Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (f j) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5) (CategoryTheory.Limits.biproduct.ι.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5 j)))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_biproduct_inv CategoryTheory.Functor.mapBiproduct_invₓ'. -/
theorem mapBiproduct_inv :
(mapBiproduct F f).inv = biproduct.desc fun j => F.map (biproduct.ι f j) :=
rfl
@@ -421,69 +331,33 @@ section
variable [HasBinaryBiproduct (F.obj X) (F.obj Y)]
-/- warning: category_theory.functor.biprod_comparison -> CategoryTheory.Functor.biprodComparison is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)], Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6)
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)], Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6)
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.biprod_comparison CategoryTheory.Functor.biprodComparisonₓ'. -/
/-- As for products, any functor between categories with binary biproducts gives rise to a
morphism `F.obj (X ⊞ Y) ⟶ F.obj X ⊞ F.obj Y`. -/
def biprodComparison : F.obj (X ⊞ Y) ⟶ F.obj X ⊞ F.obj Y :=
biprod.lift (F.map biprod.fst) (F.map biprod.snd)
#align category_theory.functor.biprod_comparison CategoryTheory.Functor.biprodComparison
-/- warning: category_theory.functor.biprod_comparison_fst -> CategoryTheory.Functor.biprodComparison_fst is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.biprodComparison.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6) (CategoryTheory.Limits.biprod.fst.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) X (CategoryTheory.Limits.biprod.fst.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (CategoryTheory.Functor.biprodComparison.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6) (CategoryTheory.Limits.biprod.fst.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) X (CategoryTheory.Limits.biprod.fst.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.biprod_comparison_fst CategoryTheory.Functor.biprodComparison_fstₓ'. -/
@[simp, reassoc]
theorem biprodComparison_fst : biprodComparison F X Y ≫ biprod.fst = F.map biprod.fst :=
biprod.lift_fst _ _
#align category_theory.functor.biprod_comparison_fst CategoryTheory.Functor.biprodComparison_fst
-/- warning: category_theory.functor.biprod_comparison_snd -> CategoryTheory.Functor.biprodComparison_snd is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.biprodComparison.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6) (CategoryTheory.Limits.biprod.snd.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) Y (CategoryTheory.Limits.biprod.snd.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.biprodComparison.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6) (CategoryTheory.Limits.biprod.snd.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) Y (CategoryTheory.Limits.biprod.snd.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.biprod_comparison_snd CategoryTheory.Functor.biprodComparison_sndₓ'. -/
@[simp, reassoc]
theorem biprodComparison_snd : biprodComparison F X Y ≫ biprod.snd = F.map biprod.snd :=
biprod.lift_snd _ _
#align category_theory.functor.biprod_comparison_snd CategoryTheory.Functor.biprodComparison_snd
-/- warning: category_theory.functor.biprod_comparison' -> CategoryTheory.Functor.biprodComparison' is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)], Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)], Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.biprod_comparison' CategoryTheory.Functor.biprodComparison'ₓ'. -/
/-- As for coproducts, any functor between categories with binary biproducts gives rise to a
morphism `F.obj X ⊞ F.obj Y ⟶ F.obj (X ⊞ Y)`. -/
def biprodComparison' : F.obj X ⊞ F.obj Y ⟶ F.obj (X ⊞ Y) :=
biprod.desc (F.map biprod.inl) (F.map biprod.inr)
#align category_theory.functor.biprod_comparison' CategoryTheory.Functor.biprodComparison'
-/- warning: category_theory.functor.inl_biprod_comparison' -> CategoryTheory.Functor.inl_biprodComparison' is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.inl.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.biprodComparison'.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) (CategoryTheory.Limits.biprod.inl.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.inl.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (CategoryTheory.Functor.biprodComparison'.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) (CategoryTheory.Limits.biprod.inl.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.inl_biprod_comparison' CategoryTheory.Functor.inl_biprodComparison'ₓ'. -/
@[simp, reassoc]
theorem inl_biprodComparison' : biprod.inl ≫ biprodComparison' F X Y = F.map biprod.inl :=
biprod.inl_desc _ _
#align category_theory.functor.inl_biprod_comparison' CategoryTheory.Functor.inl_biprodComparison'
-/- warning: category_theory.functor.inr_biprod_comparison' -> CategoryTheory.Functor.inr_biprodComparison' is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.inr.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.biprodComparison'.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) (CategoryTheory.Limits.biprod.inr.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.inr.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (CategoryTheory.Functor.biprodComparison'.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) (CategoryTheory.Limits.biprod.inr.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.inr_biprod_comparison' CategoryTheory.Functor.inr_biprodComparison'ₓ'. -/
@[simp, reassoc]
theorem inr_biprodComparison' : biprod.inr ≫ biprodComparison' F X Y = F.map biprod.inr :=
biprod.inr_desc _ _
@@ -491,12 +365,6 @@ theorem inr_biprodComparison' : biprod.inr ≫ biprodComparison' F X Y = F.map b
variable [PreservesZeroMorphisms F]
-/- warning: category_theory.functor.biprod_comparison'_comp_biprod_comparison -> CategoryTheory.Functor.biprodComparison'_comp_biprodComparison is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.biprodComparison'.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6) (CategoryTheory.Functor.biprodComparison.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)) (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (CategoryTheory.Functor.biprodComparison'.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6) (CategoryTheory.Functor.biprodComparison.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)) (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.biprod_comparison'_comp_biprod_comparison CategoryTheory.Functor.biprodComparison'_comp_biprodComparisonₓ'. -/
/-- The composition in the opposite direction is equal to the identity if and only if `F` preserves
the biproduct, see `preserves_binary_biproduct_of_mono_biprod_comparison`. -/
@[simp, reassoc]
@@ -505,12 +373,6 @@ theorem biprodComparison'_comp_biprodComparison :
ext <;> simp [← functor.map_comp]
#align category_theory.functor.biprod_comparison'_comp_biprod_comparison CategoryTheory.Functor.biprodComparison'_comp_biprodComparison
-/- warning: category_theory.functor.split_epi_biprod_comparison -> CategoryTheory.Functor.splitEpiBiprodComparison is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F], CategoryTheory.SplitEpi.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.biprodComparison.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F], CategoryTheory.SplitEpi.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (CategoryTheory.Functor.biprodComparison.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.split_epi_biprod_comparison CategoryTheory.Functor.splitEpiBiprodComparisonₓ'. -/
/-- `biprod_comparison F X Y` is a split epi. -/
@[simps]
def splitEpiBiprodComparison : SplitEpi (biprodComparison F X Y) :=
@@ -520,12 +382,6 @@ def splitEpiBiprodComparison : SplitEpi (biprodComparison F X Y) :=
instance : IsSplitEpi (biprodComparison F X Y) :=
IsSplitEpi.mk' (splitEpiBiprodComparison F X Y)
-/- warning: category_theory.functor.split_mono_biprod_comparison' -> CategoryTheory.Functor.splitMonoBiprodComparison' is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F], CategoryTheory.SplitMono.{u2, u4} D _inst_2 (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Functor.biprodComparison'.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F], CategoryTheory.SplitMono.{u2, u4} D _inst_2 (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Functor.biprodComparison'.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.split_mono_biprod_comparison' CategoryTheory.Functor.splitMonoBiprodComparison'ₓ'. -/
/-- `biprod_comparison' F X Y` is a split mono. -/
@[simps]
def splitMonoBiprodComparison' : SplitMono (biprodComparison' F X Y) :=
@@ -539,24 +395,12 @@ end
variable [PreservesZeroMorphisms F] [PreservesBinaryBiproduct X Y F]
-/- warning: category_theory.functor.has_binary_biproduct_of_preserves -> CategoryTheory.Functor.hasBinaryBiproduct_of_preserves is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_6], CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_6], CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.has_binary_biproduct_of_preserves CategoryTheory.Functor.hasBinaryBiproduct_of_preservesₓ'. -/
instance hasBinaryBiproduct_of_preserves : HasBinaryBiproduct (F.obj X) (F.obj Y) :=
HasBinaryBiproduct.mk
{ Bicone := F.mapBinaryBicone (BinaryBiproduct.bicone X Y)
IsBilimit := PreservesBinaryBiproduct.preserves (BinaryBiproduct.isBilimit _ _) }
#align category_theory.functor.has_binary_biproduct_of_preserves CategoryTheory.Functor.hasBinaryBiproduct_of_preserves
-/- warning: category_theory.functor.map_biprod -> CategoryTheory.Functor.mapBiprod is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_6], CategoryTheory.Iso.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_6], CategoryTheory.Iso.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_biprod CategoryTheory.Functor.mapBiprodₓ'. -/
/-- If `F` preserves a binary biproduct, we get a definitionally nice isomorphism
`F.obj (X ⊞ Y) ≅ F.obj X ⊞ F.obj Y`. -/
@[simp]
@@ -564,22 +408,10 @@ def mapBiprod : F.obj (X ⊞ Y) ≅ F.obj X ⊞ F.obj Y :=
biprod.uniqueUpToIso _ _ (PreservesBinaryBiproduct.preserves (BinaryBiproduct.isBilimit _ _))
#align category_theory.functor.map_biprod CategoryTheory.Functor.mapBiprod
-/- warning: category_theory.functor.map_biprod_hom -> CategoryTheory.Functor.mapBiprod_hom is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_6], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7))) (CategoryTheory.Iso.hom.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7)) (CategoryTheory.Limits.biprod.lift.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) X (CategoryTheory.Limits.biprod.fst.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) Y (CategoryTheory.Limits.biprod.snd.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_6], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7))) (CategoryTheory.Iso.hom.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7)) (CategoryTheory.Limits.biprod.lift.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) X (CategoryTheory.Limits.biprod.fst.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) Y (CategoryTheory.Limits.biprod.snd.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_biprod_hom CategoryTheory.Functor.mapBiprod_homₓ'. -/
theorem mapBiprod_hom : (mapBiprod F X Y).hom = biprod.lift (F.map biprod.fst) (F.map biprod.snd) :=
rfl
#align category_theory.functor.map_biprod_hom CategoryTheory.Functor.mapBiprod_hom
-/- warning: category_theory.functor.map_biprod_inv -> CategoryTheory.Functor.mapBiprod_inv is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_6], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))) (CategoryTheory.Iso.inv.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7)) (CategoryTheory.Limits.biprod.desc.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) (CategoryTheory.Limits.biprod.inl.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) (CategoryTheory.Limits.biprod.inr.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_6], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))) (CategoryTheory.Iso.inv.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7)) (CategoryTheory.Limits.biprod.desc.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) (CategoryTheory.Limits.biprod.inl.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) (CategoryTheory.Limits.biprod.inr.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_biprod_inv CategoryTheory.Functor.mapBiprod_invₓ'. -/
theorem mapBiprod_inv : (mapBiprod F X Y).inv = biprod.desc (F.map biprod.inl) (F.map biprod.inr) :=
rfl
#align category_theory.functor.map_biprod_inv CategoryTheory.Functor.mapBiprod_inv
@@ -594,25 +426,16 @@ section Bicone
variable {J : Type w₁} (f : J → C) [HasBiproduct f] [PreservesBiproduct f F] {W : C}
-/- warning: category_theory.limits.biproduct.map_lift_map_biprod -> CategoryTheory.Limits.biproduct.map_lift_mapBiprod is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.biproduct.map_lift_map_biprod CategoryTheory.Limits.biproduct.map_lift_mapBiprodₓ'. -/
theorem biproduct.map_lift_mapBiprod (g : ∀ j, W ⟶ f j) :
F.map (biproduct.lift g) ≫ (F.mapBiproduct f).hom = biproduct.lift fun j => F.map (g j) := by
ext; simp [← F.map_comp]
#align category_theory.limits.biproduct.map_lift_map_biprod CategoryTheory.Limits.biproduct.map_lift_mapBiprod
-/- warning: category_theory.limits.biproduct.map_biproduct_inv_map_desc -> CategoryTheory.Limits.biproduct.mapBiproduct_inv_map_desc is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.biproduct.map_biproduct_inv_map_desc CategoryTheory.Limits.biproduct.mapBiproduct_inv_map_descₓ'. -/
theorem biproduct.mapBiproduct_inv_map_desc (g : ∀ j, f j ⟶ W) :
(F.mapBiproduct f).inv ≫ F.map (biproduct.desc g) = biproduct.desc fun j => F.map (g j) := by
ext; simp [← F.map_comp]
#align category_theory.limits.biproduct.map_biproduct_inv_map_desc CategoryTheory.Limits.biproduct.mapBiproduct_inv_map_desc
-/- warning: category_theory.limits.biproduct.map_biproduct_hom_desc -> CategoryTheory.Limits.biproduct.mapBiproduct_hom_desc is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.biproduct.map_biproduct_hom_desc 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) := by
rw [← biproduct.map_biproduct_inv_map_desc, iso.hom_inv_id_assoc]
@@ -624,33 +447,21 @@ section BinaryBicone
variable (X Y : C) [HasBinaryBiproduct X Y] [PreservesBinaryBiproduct X Y F] {W : C}
-/- warning: category_theory.limits.biprod.map_lift_map_biprod -> CategoryTheory.Limits.biprod.map_lift_mapBiprod is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.biprod.map_lift_map_biprod 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) := by
ext <;> simp [← F.map_comp]
#align category_theory.limits.biprod.map_lift_map_biprod CategoryTheory.Limits.biprod.map_lift_mapBiprod
-/- warning: category_theory.limits.biprod.lift_map_biprod -> CategoryTheory.Limits.biprod.lift_mapBiprod is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.biprod.lift_map_biprod 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) := by
rw [← biprod.map_lift_map_biprod, category.assoc, iso.hom_inv_id, category.comp_id]
#align category_theory.limits.biprod.lift_map_biprod CategoryTheory.Limits.biprod.lift_mapBiprod
-/- warning: category_theory.limits.biprod.map_biprod_inv_map_desc -> CategoryTheory.Limits.biprod.mapBiprod_inv_map_desc is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.biprod.map_biprod_inv_map_desc 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) := by
ext <;> simp [← F.map_comp]
#align category_theory.limits.biprod.map_biprod_inv_map_desc CategoryTheory.Limits.biprod.mapBiprod_inv_map_desc
-/- warning: category_theory.limits.biprod.map_biprod_hom_desc -> CategoryTheory.Limits.biprod.mapBiprod_hom_desc is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.biprod.map_biprod_hom_desc 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) := by
rw [← biprod.map_biprod_inv_map_desc, iso.hom_inv_id_assoc]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -233,16 +233,12 @@ def preservesBinaryBiproductOfPreservesBiproduct (F : C ⥤ D) [PreservesZeroMor
IsLimit.ofIsoLimit
((IsLimit.postcomposeHomEquiv (diagram_iso_pair _) _).symm
(isBilimitOfPreserves F (b.toBiconeIsBilimit.symm hb)).IsLimit) <|
- Cones.ext (Iso.refl _) fun j => by
- rcases j with ⟨⟨⟩⟩
- tidy
+ Cones.ext (Iso.refl _) fun j => by rcases j with ⟨⟨⟩⟩; tidy
IsColimit :=
IsColimit.ofIsoColimit
((IsColimit.precomposeInvEquiv (diagram_iso_pair _) _).symm
(isBilimitOfPreserves F (b.toBiconeIsBilimit.symm hb)).IsColimit) <|
- Cocones.ext (Iso.refl _) fun j => by
- rcases j with ⟨⟨⟩⟩
- tidy }
+ Cocones.ext (Iso.refl _) fun j => by rcases j with ⟨⟨⟩⟩; tidy }
#align category_theory.limits.preserves_binary_biproduct_of_preserves_biproduct CategoryTheory.Limits.preservesBinaryBiproductOfPreservesBiproduct
-/
@@ -602,20 +598,16 @@ variable {J : Type w₁} (f : J → C) [HasBiproduct f] [PreservesBiproduct f F]
<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.limits.biproduct.map_lift_map_biprod CategoryTheory.Limits.biproduct.map_lift_mapBiprodₓ'. -/
theorem biproduct.map_lift_mapBiprod (g : ∀ j, W ⟶ f j) :
- F.map (biproduct.lift g) ≫ (F.mapBiproduct f).hom = biproduct.lift fun j => F.map (g j) :=
- by
- ext
- simp [← F.map_comp]
+ F.map (biproduct.lift g) ≫ (F.mapBiproduct f).hom = biproduct.lift fun j => F.map (g j) := by
+ ext; simp [← F.map_comp]
#align category_theory.limits.biproduct.map_lift_map_biprod CategoryTheory.Limits.biproduct.map_lift_mapBiprod
/- warning: category_theory.limits.biproduct.map_biproduct_inv_map_desc -> CategoryTheory.Limits.biproduct.mapBiproduct_inv_map_desc is a dubious translation:
<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.limits.biproduct.map_biproduct_inv_map_desc CategoryTheory.Limits.biproduct.mapBiproduct_inv_map_descₓ'. -/
theorem biproduct.mapBiproduct_inv_map_desc (g : ∀ j, f j ⟶ W) :
- (F.mapBiproduct f).inv ≫ F.map (biproduct.desc g) = biproduct.desc fun j => F.map (g j) :=
- by
- ext
- simp [← F.map_comp]
+ (F.mapBiproduct f).inv ≫ F.map (biproduct.desc g) = biproduct.desc fun j => F.map (g j) := by
+ ext; simp [← F.map_comp]
#align category_theory.limits.biproduct.map_biproduct_inv_map_desc CategoryTheory.Limits.biproduct.mapBiproduct_inv_map_desc
/- warning: category_theory.limits.biproduct.map_biproduct_hom_desc -> CategoryTheory.Limits.biproduct.mapBiproduct_hom_desc is a dubious translation:
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -599,10 +599,7 @@ section Bicone
variable {J : Type w₁} (f : J → C) [HasBiproduct f] [PreservesBiproduct f F] {W : C}
/- warning: category_theory.limits.biproduct.map_lift_map_biprod -> CategoryTheory.Limits.biproduct.map_lift_mapBiprod is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] {J : Type.{u1}} (f : J -> C) [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_5] {W : C} (g : forall (j : J), Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) W (f j)), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7))) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 (fun (j : J) => f j) _inst_6)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.map.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 (fun (j : J) => f j) _inst_6) (CategoryTheory.Limits.biproduct.lift.{u1, u2, u4} J C _inst_1 _inst_3 (fun (j : J) => f j) _inst_6 W g)) (CategoryTheory.Iso.hom.{u3, u5} D _inst_2 (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7))) (CategoryTheory.Limits.biproduct.lift.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W) (fun (j : J) => CategoryTheory.Functor.map.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W (f j) (g j)))
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] {J : Type.{u1}} (f : J -> C) [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_5] {W : C} (g : forall (j : J), Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) W (f j)), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7))) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 (fun (j : J) => f j) _inst_6)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 (fun (j : J) => f j) _inst_6) (CategoryTheory.Limits.biproduct.lift.{u1, u2, u4} J C _inst_1 _inst_3 (fun (j : J) => f j) _inst_6 W g)) (CategoryTheory.Iso.hom.{u3, u5} D _inst_2 (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7))) (CategoryTheory.Limits.biproduct.lift.{u1, u3, u5} J D _inst_2 _inst_4 (fun (j : J) => Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (f j)) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W) (fun (j : J) => Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W (f j) (g j)))
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.limits.biproduct.map_lift_map_biprod CategoryTheory.Limits.biproduct.map_lift_mapBiprodₓ'. -/
theorem biproduct.map_lift_mapBiprod (g : ∀ j, W ⟶ f j) :
F.map (biproduct.lift g) ≫ (F.mapBiproduct f).hom = biproduct.lift fun j => F.map (g j) :=
@@ -612,10 +609,7 @@ theorem biproduct.map_lift_mapBiprod (g : ∀ j, W ⟶ f j) :
#align category_theory.limits.biproduct.map_lift_map_biprod CategoryTheory.Limits.biproduct.map_lift_mapBiprod
/- warning: category_theory.limits.biproduct.map_biproduct_inv_map_desc -> CategoryTheory.Limits.biproduct.mapBiproduct_inv_map_desc is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] {J : Type.{u1}} (f : J -> C) [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_5] {W : C} (g : forall (j : J), Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) (f j) W), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W)) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W) (CategoryTheory.Iso.inv.{u3, u5} D _inst_2 (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.map.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6) W (CategoryTheory.Limits.biproduct.desc.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6 W g))) (CategoryTheory.Limits.biproduct.desc.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W) (fun (j : J) => CategoryTheory.Functor.map.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (f j) W (g j)))
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] {J : Type.{u1}} (f : J -> C) [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_5] {W : C} (g : forall (j : J), Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) (f j) W), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W)) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W) (CategoryTheory.Iso.inv.{u3, u5} D _inst_2 (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6) W (CategoryTheory.Limits.biproduct.desc.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6 W g))) (CategoryTheory.Limits.biproduct.desc.{u1, u3, u5} J D _inst_2 _inst_4 (fun (j : J) => Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (f j)) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W) (fun (j : J) => Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (f j) W (g j)))
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.limits.biproduct.map_biproduct_inv_map_desc CategoryTheory.Limits.biproduct.mapBiproduct_inv_map_descₓ'. -/
theorem biproduct.mapBiproduct_inv_map_desc (g : ∀ j, f j ⟶ W) :
(F.mapBiproduct f).inv ≫ F.map (biproduct.desc g) = biproduct.desc fun j => F.map (g j) :=
@@ -625,10 +619,7 @@ theorem biproduct.mapBiproduct_inv_map_desc (g : ∀ j, f j ⟶ W) :
#align category_theory.limits.biproduct.map_biproduct_inv_map_desc CategoryTheory.Limits.biproduct.mapBiproduct_inv_map_desc
/- warning: category_theory.limits.biproduct.map_biproduct_hom_desc -> CategoryTheory.Limits.biproduct.mapBiproduct_hom_desc is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] {J : Type.{u1}} (f : J -> C) [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_5] {W : C} (g : forall (j : J), Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) (f j) W), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W)) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W) (CategoryTheory.Iso.hom.{u3, u5} D _inst_2 (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Limits.biproduct.desc.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W) (fun (j : J) => CategoryTheory.Functor.map.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (f j) W (g j)))) (CategoryTheory.Functor.map.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6) W (CategoryTheory.Limits.biproduct.desc.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6 W g))
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] {J : Type.{u1}} (f : J -> C) [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_5] {W : C} (g : forall (j : J), Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) (f j) W), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W)) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W) (CategoryTheory.Iso.hom.{u3, u5} D _inst_2 (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Limits.biproduct.desc.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W) (fun (j : J) => Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (f j) W (g j)))) (Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 (fun (b : J) => f b) _inst_6) W (CategoryTheory.Limits.biproduct.desc.{u1, u2, u4} J C _inst_1 _inst_3 (fun (b : J) => f b) _inst_6 W g))
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.limits.biproduct.map_biproduct_hom_desc 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) := by
@@ -642,10 +633,7 @@ section BinaryBicone
variable (X Y : C) [HasBinaryBiproduct X Y] [PreservesBinaryBiproduct X Y F] {W : C}
/- warning: category_theory.limits.biprod.map_lift_map_biprod -> CategoryTheory.Limits.biprod.map_lift_mapBiprod is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] (X : C) (Y : C) [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_5] {W : C} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) W X) (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) W Y), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6) (CategoryTheory.Limits.biprod.lift.{u1, u3} C _inst_1 _inst_3 W X Y _inst_6 f g)) (CategoryTheory.Iso.hom.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7))) (CategoryTheory.Limits.biprod.lift.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W X f) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W Y g))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] (X : C) (Y : C) [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_5] {W : C} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) W X) (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) W Y), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6) (CategoryTheory.Limits.biprod.lift.{u1, u3} C _inst_1 _inst_3 W X Y _inst_6 f g)) (CategoryTheory.Iso.hom.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7))) (CategoryTheory.Limits.biprod.lift.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W X f) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W Y g))
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.limits.biprod.map_lift_map_biprod 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) := by
@@ -653,10 +641,7 @@ theorem biprod.map_lift_mapBiprod (f : W ⟶ X) (g : W ⟶ Y) :
#align category_theory.limits.biprod.map_lift_map_biprod CategoryTheory.Limits.biprod.map_lift_mapBiprod
/- warning: category_theory.limits.biprod.lift_map_biprod -> CategoryTheory.Limits.biprod.lift_mapBiprod is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] (X : C) (Y : C) [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_5] {W : C} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) W X) (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) W Y), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.lift.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W X f) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W Y g)) (CategoryTheory.Iso.inv.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7))) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6) (CategoryTheory.Limits.biprod.lift.{u1, u3} C _inst_1 _inst_3 W X Y _inst_6 f g))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] (X : C) (Y : C) [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_5] {W : C} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) W X) (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) W Y), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.lift.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W X f) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W Y g)) (CategoryTheory.Iso.inv.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7))) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6) (CategoryTheory.Limits.biprod.lift.{u1, u3} C _inst_1 _inst_3 W X Y _inst_6 f g))
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.limits.biprod.lift_map_biprod 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) := by
@@ -664,10 +649,7 @@ theorem biprod.lift_mapBiprod (f : W ⟶ X) (g : W ⟶ Y) :
#align category_theory.limits.biprod.lift_map_biprod CategoryTheory.Limits.biprod.lift_mapBiprod
/- warning: category_theory.limits.biprod.map_biprod_inv_map_desc -> CategoryTheory.Limits.biprod.mapBiprod_inv_map_desc is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] (X : C) (Y : C) [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_5] {W : C} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) X W) (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Y W), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W) (CategoryTheory.Iso.inv.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6) W (CategoryTheory.Limits.biprod.desc.{u1, u3} C _inst_1 _inst_3 W X Y _inst_6 f g))) (CategoryTheory.Limits.biprod.desc.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X W f) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y W g))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] (X : C) (Y : C) [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_5] {W : C} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) X W) (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Y W), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W) (CategoryTheory.Iso.inv.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6) W (CategoryTheory.Limits.biprod.desc.{u1, u3} C _inst_1 _inst_3 W X Y _inst_6 f g))) (CategoryTheory.Limits.biprod.desc.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X W f) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y W g))
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.limits.biprod.map_biprod_inv_map_desc 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) := by
@@ -675,10 +657,7 @@ theorem biprod.mapBiprod_inv_map_desc (f : X ⟶ W) (g : Y ⟶ W) :
#align category_theory.limits.biprod.map_biprod_inv_map_desc CategoryTheory.Limits.biprod.mapBiprod_inv_map_desc
/- warning: category_theory.limits.biprod.map_biprod_hom_desc -> CategoryTheory.Limits.biprod.mapBiprod_hom_desc is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] (X : C) (Y : C) [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_5] {W : C} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) X W) (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Y W), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W) (CategoryTheory.Iso.hom.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Limits.biprod.desc.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X W f) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y W g))) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6) W (CategoryTheory.Limits.biprod.desc.{u1, u3} C _inst_1 _inst_3 W X Y _inst_6 f g))
-but is expected to have type
- forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] (X : C) (Y : C) [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_5] {W : C} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) X W) (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Y W), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W) (CategoryTheory.Iso.hom.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Limits.biprod.desc.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X W f) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y W g))) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6) W (CategoryTheory.Limits.biprod.desc.{u1, u3} C _inst_1 _inst_3 W X Y _inst_6 f g))
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.limits.biprod.map_biprod_hom_desc 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) := by
mathlib commit https://github.com/leanprover-community/mathlib/commit/75e7fca56381d056096ce5d05e938f63a6567828
@@ -288,7 +288,7 @@ lean 3 declaration is
but is expected to have type
forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f)] (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f j)) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6) (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f j) (CategoryTheory.Functor.biproductComparison.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6) (CategoryTheory.Limits.biproduct.π.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6 j)) (Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5) (f j) (CategoryTheory.Limits.biproduct.π.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5 j))
Case conversion may be inaccurate. Consider using '#align category_theory.functor.biproduct_comparison_π CategoryTheory.Functor.biproductComparison_πₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
theorem biproductComparison_π (j : J) :
biproductComparison F f ≫ biproduct.π _ j = F.map (biproduct.π f j) :=
biproduct.lift_π _ _
@@ -312,7 +312,7 @@ lean 3 declaration is
but is expected to have type
forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f)] (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f j) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5))) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f j) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.ι.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6 j) (CategoryTheory.Functor.biproductComparison'.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6)) (Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (f j) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5) (CategoryTheory.Limits.biproduct.ι.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5 j))
Case conversion may be inaccurate. Consider using '#align category_theory.functor.ι_biproduct_comparison' CategoryTheory.Functor.ι_biproductComparison'ₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
theorem ι_biproductComparison' (j : J) :
biproduct.ι _ j ≫ biproductComparison' F f = F.map (biproduct.ι f j) :=
biproduct.ι_desc _ _
@@ -328,7 +328,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align category_theory.functor.biproduct_comparison'_comp_biproduct_comparison CategoryTheory.Functor.biproductComparison'_comp_biproductComparisonₓ'. -/
/-- The composition in the opposite direction is equal to the identity if and only if `F` preserves
the biproduct, see `preserves_biproduct_of_mono_biproduct_comparison`. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
theorem biproductComparison'_comp_biproductComparison :
biproductComparison' F f ≫ biproductComparison F f = 𝟙 (⨁ F.obj ∘ f) := by
classical
@@ -443,7 +443,7 @@ lean 3 declaration is
but is expected to have type
forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (CategoryTheory.Functor.biprodComparison.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6) (CategoryTheory.Limits.biprod.fst.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) X (CategoryTheory.Limits.biprod.fst.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
Case conversion may be inaccurate. Consider using '#align category_theory.functor.biprod_comparison_fst CategoryTheory.Functor.biprodComparison_fstₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
theorem biprodComparison_fst : biprodComparison F X Y ≫ biprod.fst = F.map biprod.fst :=
biprod.lift_fst _ _
#align category_theory.functor.biprod_comparison_fst CategoryTheory.Functor.biprodComparison_fst
@@ -454,7 +454,7 @@ lean 3 declaration is
but is expected to have type
forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.biprodComparison.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6) (CategoryTheory.Limits.biprod.snd.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) Y (CategoryTheory.Limits.biprod.snd.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
Case conversion may be inaccurate. Consider using '#align category_theory.functor.biprod_comparison_snd CategoryTheory.Functor.biprodComparison_sndₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
theorem biprodComparison_snd : biprodComparison F X Y ≫ biprod.snd = F.map biprod.snd :=
biprod.lift_snd _ _
#align category_theory.functor.biprod_comparison_snd CategoryTheory.Functor.biprodComparison_snd
@@ -477,7 +477,7 @@ lean 3 declaration is
but is expected to have type
forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.inl.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (CategoryTheory.Functor.biprodComparison'.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) (CategoryTheory.Limits.biprod.inl.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
Case conversion may be inaccurate. Consider using '#align category_theory.functor.inl_biprod_comparison' CategoryTheory.Functor.inl_biprodComparison'ₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
theorem inl_biprodComparison' : biprod.inl ≫ biprodComparison' F X Y = F.map biprod.inl :=
biprod.inl_desc _ _
#align category_theory.functor.inl_biprod_comparison' CategoryTheory.Functor.inl_biprodComparison'
@@ -488,7 +488,7 @@ lean 3 declaration is
but is expected to have type
forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.inr.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (CategoryTheory.Functor.biprodComparison'.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) (CategoryTheory.Limits.biprod.inr.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
Case conversion may be inaccurate. Consider using '#align category_theory.functor.inr_biprod_comparison' CategoryTheory.Functor.inr_biprodComparison'ₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
theorem inr_biprodComparison' : biprod.inr ≫ biprodComparison' F X Y = F.map biprod.inr :=
biprod.inr_desc _ _
#align category_theory.functor.inr_biprod_comparison' CategoryTheory.Functor.inr_biprodComparison'
@@ -503,7 +503,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align category_theory.functor.biprod_comparison'_comp_biprod_comparison CategoryTheory.Functor.biprodComparison'_comp_biprodComparisonₓ'. -/
/-- The composition in the opposite direction is equal to the identity if and only if `F` preserves
the biproduct, see `preserves_binary_biproduct_of_mono_biprod_comparison`. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
theorem biprodComparison'_comp_biprodComparison :
biprodComparison' F X Y ≫ biprodComparison F X Y = 𝟙 (F.obj X ⊞ F.obj Y) := by
ext <;> simp [← functor.map_comp]
mathlib commit https://github.com/leanprover-community/mathlib/commit/09079525fd01b3dda35e96adaa08d2f943e1648c
@@ -149,7 +149,7 @@ class PreservesBiproductsOfShape (F : C ⥤ D) [PreservesZeroMorphisms F] where
#align category_theory.limits.preserves_biproducts_of_shape CategoryTheory.Limits.PreservesBiproductsOfShape
-/
-attribute [instance] preserves_biproducts_of_shape.preserves
+attribute [instance 100] preserves_biproducts_of_shape.preserves
end Bicone
@@ -161,7 +161,7 @@ class PreservesFiniteBiproducts (F : C ⥤ D) [PreservesZeroMorphisms F] where
#align category_theory.limits.preserves_finite_biproducts CategoryTheory.Limits.PreservesFiniteBiproducts
-/
-attribute [instance] preserves_finite_biproducts.preserves
+attribute [instance 100] preserves_finite_biproducts.preserves
#print CategoryTheory.Limits.PreservesBiproducts /-
/-- A functor `F` preserves biproducts if it preserves biproducts of any shape `J` of size `w`.
@@ -172,7 +172,7 @@ class PreservesBiproducts (F : C ⥤ D) [PreservesZeroMorphisms F] where
#align category_theory.limits.preserves_biproducts CategoryTheory.Limits.PreservesBiproducts
-/
-attribute [instance] preserves_biproducts.preserves
+attribute [instance 100] preserves_biproducts.preserves
#print CategoryTheory.Limits.preservesBiproductsShrink /-
/-- Preserving biproducts at a bigger universe level implies preserving biproducts at a
@@ -254,7 +254,7 @@ def preservesBinaryBiproductsOfPreservesBiproducts (F : C ⥤ D) [PreservesZeroM
#align category_theory.limits.preserves_binary_biproducts_of_preserves_biproducts CategoryTheory.Limits.preservesBinaryBiproductsOfPreservesBiproducts
-/
-attribute [instance] preserves_binary_biproducts.preserves
+attribute [instance 100] preserves_binary_biproducts.preserves
end Limits
mathlib commit https://github.com/leanprover-community/mathlib/commit/2196ab363eb097c008d4497125e0dde23fb36db2
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Markus Himmel
! This file was ported from Lean 3 source module category_theory.limits.preserves.shapes.biproducts
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
+! leanprover-community/mathlib commit 69c6a5a12d8a2b159f20933e60115a4f2de62b58
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -14,6 +14,9 @@ import Mathbin.CategoryTheory.Limits.Preserves.Shapes.Zero
/-!
# Preservation of biproducts
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
We define the image of a (binary) bicone under a functor that preserves zero morphisms and define
classes `preserves_biproduct` and `preserves_binary_biproduct`. We then
mathlib commit https://github.com/leanprover-community/mathlib/commit/38f16f960f5006c6c0c2bac7b0aba5273188f4e5
@@ -52,6 +52,12 @@ section Bicone
variable {J : Type w₁}
+/- warning: category_theory.functor.map_bicone -> CategoryTheory.Functor.mapBicone is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] {J : Type.{u1}} {f : J -> C}, (CategoryTheory.Limits.Bicone.{u1, u2, u4} J C _inst_1 _inst_3 f) -> (CategoryTheory.Limits.Bicone.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f))
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] {J : Type.{u1}} {f : J -> C}, (CategoryTheory.Limits.Bicone.{u1, u2, u4} J C _inst_1 _inst_3 f) -> (CategoryTheory.Limits.Bicone.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_bicone CategoryTheory.Functor.mapBiconeₓ'. -/
/-- The image of a bicone under a functor. -/
@[simps]
def mapBicone {f : J → C} (b : Bicone f) : Bicone (F.obj ∘ f)
@@ -67,13 +73,21 @@ def mapBicone {f : J → C} (b : Bicone f) : Bicone (F.obj ∘ f)
· rw [bicone_ι_π_ne _ h, F.map_zero]
#align category_theory.functor.map_bicone CategoryTheory.Functor.mapBicone
+#print 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 :=
rfl
#align category_theory.functor.map_bicone_whisker CategoryTheory.Functor.mapBicone_whisker
+-/
end Bicone
+/- warning: category_theory.functor.map_binary_bicone -> CategoryTheory.Functor.mapBinaryBicone is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] {X : C} {Y : C}, (CategoryTheory.Limits.BinaryBicone.{u1, u3} C _inst_1 _inst_3 X Y) -> (CategoryTheory.Limits.BinaryBicone.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] {X : C} {Y : C}, (CategoryTheory.Limits.BinaryBicone.{u1, u3} C _inst_1 _inst_3 X Y) -> (CategoryTheory.Limits.BinaryBicone.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_binary_bicone CategoryTheory.Functor.mapBinaryBiconeₓ'. -/
/-- The image of a binary bicone under a functor. -/
@[simps]
def mapBinaryBicone {X Y : C} (b : BinaryBicone X Y) : BinaryBicone (F.obj X) (F.obj Y)
@@ -83,10 +97,10 @@ def mapBinaryBicone {X Y : C} (b : BinaryBicone X Y) : BinaryBicone (F.obj X) (F
snd := F.map b.snd
inl := F.map b.inl
inr := F.map b.inr
- inl_fst' := by rw [← F.map_comp, b.inl_fst, F.map_id]
- inl_snd' := by rw [← F.map_comp, b.inl_snd, F.map_zero]
- inr_fst' := by rw [← F.map_comp, b.inr_fst, F.map_zero]
- inr_snd' := by rw [← F.map_comp, b.inr_snd, F.map_id]
+ inl_fst := by rw [← F.map_comp, b.inl_fst, F.map_id]
+ inl_snd := by rw [← F.map_comp, b.inl_snd, F.map_zero]
+ inr_fst := by rw [← F.map_comp, b.inr_fst, F.map_zero]
+ inr_snd := by rw [← F.map_comp, b.inr_snd, F.map_id]
#align category_theory.functor.map_binary_bicone CategoryTheory.Functor.mapBinaryBicone
end Map
@@ -101,12 +115,20 @@ section Bicone
variable {J : Type w₁} {K : Type w₂}
+#print CategoryTheory.Limits.PreservesBiproduct /-
/-- A functor `F` preserves biproducts of `f` if `F` maps every bilimit bicone over `f` to a
bilimit bicone over `F.obj ∘ f`. -/
class PreservesBiproduct (f : J → C) (F : C ⥤ D) [PreservesZeroMorphisms F] where
preserves : ∀ {b : Bicone f}, b.IsBilimit → (F.mapBicone b).IsBilimit
#align category_theory.limits.preserves_biproduct CategoryTheory.Limits.PreservesBiproduct
+-/
+/- warning: category_theory.limits.is_bilimit_of_preserves -> CategoryTheory.Limits.isBilimitOfPreserves is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} {f : J -> C} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_6 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_5] {b : CategoryTheory.Limits.Bicone.{u1, u2, u4} J C _inst_1 _inst_3 f}, (CategoryTheory.Limits.Bicone.IsBilimit.{u1, u2, u4} J C _inst_1 _inst_3 f b) -> (CategoryTheory.Limits.Bicone.IsBilimit.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.mapBicone.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F _inst_5 J f b))
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} {f : J -> C} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_6 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_5] {b : CategoryTheory.Limits.Bicone.{u1, u2, u4} J C _inst_1 _inst_3 f}, (CategoryTheory.Limits.Bicone.IsBilimit.{u1, u2, u4} J C _inst_1 _inst_3 f b) -> (CategoryTheory.Limits.Bicone.IsBilimit.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.mapBicone.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F _inst_5 J f b))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.is_bilimit_of_preserves CategoryTheory.Limits.isBilimitOfPreservesₓ'. -/
/-- A functor `F` preserves biproducts of `f` if `F` maps every bilimit bicone over `f` to a
bilimit bicone over `F.obj ∘ f`. -/
def isBilimitOfPreserves {f : J → C} (F : C ⥤ D) [PreservesZeroMorphisms F] [PreservesBiproduct f F]
@@ -116,33 +138,40 @@ def isBilimitOfPreserves {f : J → C} (F : C ⥤ D) [PreservesZeroMorphisms F]
variable (J)
+#print CategoryTheory.Limits.PreservesBiproductsOfShape /-
/-- A functor `F` preserves biproducts of shape `J` if it preserves biproducts of `f` for every
`f : J → C`. -/
class PreservesBiproductsOfShape (F : C ⥤ D) [PreservesZeroMorphisms F] where
preserves : ∀ {f : J → C}, PreservesBiproduct f F
#align category_theory.limits.preserves_biproducts_of_shape CategoryTheory.Limits.PreservesBiproductsOfShape
+-/
attribute [instance] preserves_biproducts_of_shape.preserves
end Bicone
+#print CategoryTheory.Limits.PreservesFiniteBiproducts /-
/-- A functor `F` preserves finite biproducts if it preserves biproducts of shape `J` whenever
`J` is a fintype. -/
class PreservesFiniteBiproducts (F : C ⥤ D) [PreservesZeroMorphisms F] where
preserves : ∀ {J : Type} [Fintype J], PreservesBiproductsOfShape J F
#align category_theory.limits.preserves_finite_biproducts CategoryTheory.Limits.PreservesFiniteBiproducts
+-/
attribute [instance] preserves_finite_biproducts.preserves
+#print CategoryTheory.Limits.PreservesBiproducts /-
/-- A functor `F` preserves biproducts if it preserves biproducts of any shape `J` of size `w`.
The usual notion of preservation of biproducts is recovered by choosing `w` to be the universe
of the morphisms of `C`. -/
class PreservesBiproducts (F : C ⥤ D) [PreservesZeroMorphisms F] where
preserves : ∀ {J : Type w₁}, PreservesBiproductsOfShape J F
#align category_theory.limits.preserves_biproducts CategoryTheory.Limits.PreservesBiproducts
+-/
attribute [instance] preserves_biproducts.preserves
+#print CategoryTheory.Limits.preservesBiproductsShrink /-
/-- Preserving biproducts at a bigger universe level implies preserving biproducts at a
smaller universe level. -/
def preservesBiproductsShrink (F : C ⥤ D) [PreservesZeroMorphisms F]
@@ -153,18 +182,29 @@ def preservesBiproductsShrink (F : C ⥤ D) [PreservesZeroMorphisms F]
((F.mapBicone b).whiskerIsBilimitIff _).toFun
(isBilimitOfPreserves F ((b.whiskerIsBilimitIff Equiv.ulift.{w₂}).invFun ib))⟩⟩⟩
#align category_theory.limits.preserves_biproducts_shrink CategoryTheory.Limits.preservesBiproductsShrink
+-/
+#print CategoryTheory.Limits.preservesFiniteBiproductsOfPreservesBiproducts /-
instance (priority := 100) preservesFiniteBiproductsOfPreservesBiproducts (F : C ⥤ D)
[PreservesZeroMorphisms F] [PreservesBiproducts.{w₁} F] : PreservesFiniteBiproducts F
where preserves J _ := by letI := preservesBiproductsShrink.{0} F <;> infer_instance
#align category_theory.limits.preserves_finite_biproducts_of_preserves_biproducts CategoryTheory.Limits.preservesFiniteBiproductsOfPreservesBiproducts
+-/
+#print CategoryTheory.Limits.PreservesBinaryBiproduct /-
/-- A functor `F` preserves binary biproducts of `X` and `Y` if `F` maps every bilimit bicone over
`X` and `Y` to a bilimit bicone over `F.obj X` and `F.obj Y`. -/
class PreservesBinaryBiproduct (X Y : C) (F : C ⥤ D) [PreservesZeroMorphisms F] where
preserves : ∀ {b : BinaryBicone X Y}, b.IsBilimit → (F.mapBinaryBicone b).IsBilimit
#align category_theory.limits.preserves_binary_biproduct CategoryTheory.Limits.PreservesBinaryBiproduct
+-/
+/- warning: category_theory.limits.is_binary_bilimit_of_preserves -> CategoryTheory.Limits.isBinaryBilimitOfPreserves is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] {X : C} {Y : C} (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_6 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_5] {b : CategoryTheory.Limits.BinaryBicone.{u1, u3} C _inst_1 _inst_3 X Y}, (CategoryTheory.Limits.BinaryBicone.IsBilimit.{u1, u3} C _inst_1 _inst_3 X Y b) -> (CategoryTheory.Limits.BinaryBicone.IsBilimit.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.mapBinaryBicone.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F _inst_5 X Y b))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] {X : C} {Y : C} (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_6 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_5] {b : CategoryTheory.Limits.BinaryBicone.{u1, u3} C _inst_1 _inst_3 X Y}, (CategoryTheory.Limits.BinaryBicone.IsBilimit.{u1, u3} C _inst_1 _inst_3 X Y b) -> (CategoryTheory.Limits.BinaryBicone.IsBilimit.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.mapBinaryBicone.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F _inst_5 X Y b))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.is_binary_bilimit_of_preserves CategoryTheory.Limits.isBinaryBilimitOfPreservesₓ'. -/
/-- A functor `F` preserves binary biproducts of `X` and `Y` if `F` maps every bilimit bicone over
`X` and `Y` to a bilimit bicone over `F.obj X` and `F.obj Y`. -/
def isBinaryBilimitOfPreserves {X Y : C} (F : C ⥤ D) [PreservesZeroMorphisms F]
@@ -173,12 +213,15 @@ def isBinaryBilimitOfPreserves {X Y : C} (F : C ⥤ D) [PreservesZeroMorphisms F
PreservesBinaryBiproduct.preserves hb
#align category_theory.limits.is_binary_bilimit_of_preserves CategoryTheory.Limits.isBinaryBilimitOfPreserves
+#print CategoryTheory.Limits.PreservesBinaryBiproducts /-
/-- A functor `F` preserves binary biproducts if it preserves the binary biproduct of `X` and `Y`
for all `X` and `Y`. -/
class PreservesBinaryBiproducts (F : C ⥤ D) [PreservesZeroMorphisms F] where
preserves : ∀ {X Y : C}, PreservesBinaryBiproduct X Y F := by infer_instance
#align category_theory.limits.preserves_binary_biproducts CategoryTheory.Limits.PreservesBinaryBiproducts
+-/
+#print CategoryTheory.Limits.preservesBinaryBiproductOfPreservesBiproduct /-
/-- A functor that preserves biproducts of a pair preserves binary biproducts. -/
def preservesBinaryBiproductOfPreservesBiproduct (F : C ⥤ D) [PreservesZeroMorphisms F] (X Y : C)
[PreservesBiproduct (pairFunction X Y) F] : PreservesBinaryBiproduct X Y F
@@ -198,12 +241,15 @@ def preservesBinaryBiproductOfPreservesBiproduct (F : C ⥤ D) [PreservesZeroMor
rcases j with ⟨⟨⟩⟩
tidy }
#align category_theory.limits.preserves_binary_biproduct_of_preserves_biproduct CategoryTheory.Limits.preservesBinaryBiproductOfPreservesBiproduct
+-/
+#print CategoryTheory.Limits.preservesBinaryBiproductsOfPreservesBiproducts /-
/-- A functor that preserves biproducts of a pair preserves binary biproducts. -/
def preservesBinaryBiproductsOfPreservesBiproducts (F : C ⥤ D) [PreservesZeroMorphisms F]
[PreservesBiproductsOfShape WalkingPair F] : PreservesBinaryBiproducts F
where preserves X Y := preservesBinaryBiproductOfPreservesBiproduct F X Y
#align category_theory.limits.preserves_binary_biproducts_of_preserves_biproducts CategoryTheory.Limits.preservesBinaryBiproductsOfPreservesBiproducts
+-/
attribute [instance] preserves_binary_biproducts.preserves
@@ -221,24 +267,48 @@ section
variable [HasBiproduct (F.obj ∘ f)]
+/- warning: category_theory.functor.biproduct_comparison -> CategoryTheory.Functor.biproductComparison is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f)], Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6)
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f)], Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6)
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.biproduct_comparison CategoryTheory.Functor.biproductComparisonₓ'. -/
/-- As for products, any functor between categories with biproducts gives rise to a morphism
`F.obj (⨁ f) ⟶ ⨁ (F.obj ∘ f)`. -/
def biproductComparison : F.obj (⨁ f) ⟶ ⨁ F.obj ∘ f :=
biproduct.lift fun j => F.map (biproduct.π f j)
#align category_theory.functor.biproduct_comparison CategoryTheory.Functor.biproductComparison
+/- warning: category_theory.functor.biproduct_comparison_π -> CategoryTheory.Functor.biproductComparison_π is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f)] (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f j)) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6) (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f j) (CategoryTheory.Functor.biproductComparison.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6) (CategoryTheory.Limits.biproduct.π.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6 j)) (CategoryTheory.Functor.map.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5) (f j) (CategoryTheory.Limits.biproduct.π.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5 j))
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f)] (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f j)) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6) (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f j) (CategoryTheory.Functor.biproductComparison.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6) (CategoryTheory.Limits.biproduct.π.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6 j)) (Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5) (f j) (CategoryTheory.Limits.biproduct.π.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5 j))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.biproduct_comparison_π CategoryTheory.Functor.biproductComparison_πₓ'. -/
@[simp, reassoc.1]
theorem biproductComparison_π (j : J) :
biproductComparison F f ≫ biproduct.π _ j = F.map (biproduct.π f j) :=
biproduct.lift_π _ _
#align category_theory.functor.biproduct_comparison_π CategoryTheory.Functor.biproductComparison_π
+/- warning: category_theory.functor.biproduct_comparison' -> CategoryTheory.Functor.biproductComparison' is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f)], Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5))
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f)], Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.biproduct_comparison' CategoryTheory.Functor.biproductComparison'ₓ'. -/
/-- As for coproducts, any functor between categories with biproducts gives rise to a morphism
`⨁ (F.obj ∘ f) ⟶ F.obj (⨁ f)` -/
def biproductComparison' : ⨁ F.obj ∘ f ⟶ F.obj (⨁ f) :=
biproduct.desc fun j => F.map (biproduct.ι f j)
#align category_theory.functor.biproduct_comparison' CategoryTheory.Functor.biproductComparison'
+/- warning: category_theory.functor.ι_biproduct_comparison' -> CategoryTheory.Functor.ι_biproductComparison' is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f)] (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f j) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5))) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f j) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.ι.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6 j) (CategoryTheory.Functor.biproductComparison'.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6)) (CategoryTheory.Functor.map.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (f j) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5) (CategoryTheory.Limits.biproduct.ι.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5 j))
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f)] (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f j) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5))) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f j) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.ι.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6 j) (CategoryTheory.Functor.biproductComparison'.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6)) (Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (f j) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5) (CategoryTheory.Limits.biproduct.ι.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5 j))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.ι_biproduct_comparison' CategoryTheory.Functor.ι_biproductComparison'ₓ'. -/
@[simp, reassoc.1]
theorem ι_biproductComparison' (j : J) :
biproduct.ι _ j ≫ biproductComparison' F f = F.map (biproduct.ι f j) :=
@@ -247,6 +317,12 @@ theorem ι_biproductComparison' (j : J) :
variable [PreservesZeroMorphisms F]
+/- warning: category_theory.functor.biproduct_comparison'_comp_biproduct_comparison -> CategoryTheory.Functor.biproductComparison'_comp_biproductComparison is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F], Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6)) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6) (CategoryTheory.Functor.biproductComparison'.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6) (CategoryTheory.Functor.biproductComparison.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6)) (CategoryTheory.CategoryStruct.id.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6))
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F], Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6)) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6) (CategoryTheory.Functor.biproductComparison'.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6) (CategoryTheory.Functor.biproductComparison.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6)) (CategoryTheory.CategoryStruct.id.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.biproduct_comparison'_comp_biproduct_comparison CategoryTheory.Functor.biproductComparison'_comp_biproductComparisonₓ'. -/
/-- The composition in the opposite direction is equal to the identity if and only if `F` preserves
the biproduct, see `preserves_biproduct_of_mono_biproduct_comparison`. -/
@[simp, reassoc.1]
@@ -257,6 +333,12 @@ theorem biproductComparison'_comp_biproductComparison :
simp [biproduct.ι_π, ← functor.map_comp, eq_to_hom_map]
#align category_theory.functor.biproduct_comparison'_comp_biproduct_comparison CategoryTheory.Functor.biproductComparison'_comp_biproductComparison
+/- warning: category_theory.functor.split_epi_biproduct_comparison -> CategoryTheory.Functor.splitEpiBiproductComparison is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F], CategoryTheory.SplitEpi.{u3, u5} D _inst_2 (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6) (CategoryTheory.Functor.biproductComparison.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6)
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F], CategoryTheory.SplitEpi.{u3, u5} D _inst_2 (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6) (CategoryTheory.Functor.biproductComparison.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6)
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.split_epi_biproduct_comparison CategoryTheory.Functor.splitEpiBiproductComparisonₓ'. -/
/-- `biproduct_comparison F f` is a split epimorphism. -/
@[simps]
def splitEpiBiproductComparison : SplitEpi (biproductComparison F f) :=
@@ -266,6 +348,12 @@ def splitEpiBiproductComparison : SplitEpi (biproductComparison F f) :=
instance : IsSplitEpi (biproductComparison F f) :=
IsSplitEpi.mk' (splitEpiBiproductComparison F f)
+/- warning: category_theory.functor.split_mono_biproduct_comparison' -> CategoryTheory.Functor.splitMonoBiproductComparison' is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F], CategoryTheory.SplitMono.{u3, u5} D _inst_2 (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) _inst_6) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Functor.biproductComparison'.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6)
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F], CategoryTheory.SplitMono.{u3, u5} D _inst_2 (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) _inst_6) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Functor.biproductComparison'.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6)
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.split_mono_biproduct_comparison' CategoryTheory.Functor.splitMonoBiproductComparison'ₓ'. -/
/-- `biproduct_comparison' F f` is a split monomorphism. -/
@[simps]
def splitMonoBiproductComparison' : SplitMono (biproductComparison' F f) :=
@@ -279,24 +367,48 @@ end
variable [PreservesZeroMorphisms F] [PreservesBiproduct f F]
+/- warning: category_theory.functor.has_biproduct_of_preserves -> CategoryTheory.Functor.hasBiproduct_of_preserves is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_6], CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f)
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_6], CategoryTheory.Limits.HasBiproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f)
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.has_biproduct_of_preserves CategoryTheory.Functor.hasBiproduct_of_preservesₓ'. -/
instance hasBiproduct_of_preserves : HasBiproduct (F.obj ∘ f) :=
HasBiproduct.mk
- { Bicone := F.mapBicone (Biproduct.bicone f)
- IsBilimit := PreservesBiproduct.preserves (Biproduct.isBilimit _) }
+ { Bicone := F.mapBicone (biproduct.bicone f)
+ IsBilimit := PreservesBiproduct.preserves (biproduct.isBilimit _) }
#align category_theory.functor.has_biproduct_of_preserves CategoryTheory.Functor.hasBiproduct_of_preserves
+/- warning: category_theory.functor.map_biproduct -> CategoryTheory.Functor.mapBiproduct is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_6], CategoryTheory.Iso.{u3, u5} D _inst_2 (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7))
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_6], CategoryTheory.Iso.{u3, u5} D _inst_2 (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_biproduct CategoryTheory.Functor.mapBiproductₓ'. -/
/-- If `F` preserves a biproduct, we get a definitionally nice isomorphism
`F.obj (⨁ f) ≅ ⨁ (F.obj ∘ f)`. -/
@[simp]
def mapBiproduct : F.obj (⨁ f) ≅ ⨁ F.obj ∘ f :=
- biproduct.uniqueUpToIso _ (PreservesBiproduct.preserves (Biproduct.isBilimit _))
+ biproduct.uniqueUpToIso _ (PreservesBiproduct.preserves (biproduct.isBilimit _))
#align category_theory.functor.map_biproduct CategoryTheory.Functor.mapBiproduct
+/- warning: category_theory.functor.map_biproduct_hom -> CategoryTheory.Functor.mapBiproduct_hom is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_6], Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7))) (CategoryTheory.Iso.hom.{u3, u5} D _inst_2 (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7)) (CategoryTheory.Functor.mapBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7)) (CategoryTheory.Limits.biproduct.lift.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (fun (j : J) => CategoryTheory.Functor.map.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5) (f j) (CategoryTheory.Limits.biproduct.π.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5 j)))
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_6], Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7))) (CategoryTheory.Iso.hom.{u3, u5} D _inst_2 (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7)) (CategoryTheory.Functor.mapBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7)) (CategoryTheory.Limits.biproduct.lift.{u1, u3, u5} J D _inst_2 _inst_4 (fun (j : J) => Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (f j)) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (fun (j : J) => Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5) (f j) (CategoryTheory.Limits.biproduct.π.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5 j)))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_biproduct_hom CategoryTheory.Functor.mapBiproduct_homₓ'. -/
theorem mapBiproduct_hom :
(mapBiproduct F f).hom = biproduct.lift fun j => F.map (biproduct.π f j) :=
rfl
#align category_theory.functor.map_biproduct_hom CategoryTheory.Functor.mapBiproduct_hom
+/- warning: category_theory.functor.map_biproduct_inv -> CategoryTheory.Functor.mapBiproduct_inv is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_6], Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5))) (CategoryTheory.Iso.inv.{u3, u5} D _inst_2 (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7)) (CategoryTheory.Functor.mapBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7)) (CategoryTheory.Limits.biproduct.desc.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (fun (j : J) => CategoryTheory.Functor.map.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (f j) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5) (CategoryTheory.Limits.biproduct.ι.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5 j)))
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] {J : Type.{u1}} (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) (f : J -> C) [_inst_5 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_6], Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5))) (CategoryTheory.Iso.inv.{u3, u5} D _inst_2 (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7)) (CategoryTheory.Functor.mapBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7)) (CategoryTheory.Limits.biproduct.desc.{u1, u3, u5} J D _inst_2 _inst_4 (fun (j : J) => Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (f j)) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_5 _inst_6 _inst_7) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5)) (fun (j : J) => Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (f j) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5) (CategoryTheory.Limits.biproduct.ι.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_5 j)))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_biproduct_inv CategoryTheory.Functor.mapBiproduct_invₓ'. -/
theorem mapBiproduct_inv :
(mapBiproduct F f).inv = biproduct.desc fun j => F.map (biproduct.ι f j) :=
rfl
@@ -310,33 +422,69 @@ section
variable [HasBinaryBiproduct (F.obj X) (F.obj Y)]
+/- warning: category_theory.functor.biprod_comparison -> CategoryTheory.Functor.biprodComparison is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)], Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6)
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)], Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6)
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.biprod_comparison CategoryTheory.Functor.biprodComparisonₓ'. -/
/-- As for products, any functor between categories with binary biproducts gives rise to a
morphism `F.obj (X ⊞ Y) ⟶ F.obj X ⊞ F.obj Y`. -/
def biprodComparison : F.obj (X ⊞ Y) ⟶ F.obj X ⊞ F.obj Y :=
biprod.lift (F.map biprod.fst) (F.map biprod.snd)
#align category_theory.functor.biprod_comparison CategoryTheory.Functor.biprodComparison
+/- warning: category_theory.functor.biprod_comparison_fst -> CategoryTheory.Functor.biprodComparison_fst is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.biprodComparison.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6) (CategoryTheory.Limits.biprod.fst.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) X (CategoryTheory.Limits.biprod.fst.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (CategoryTheory.Functor.biprodComparison.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6) (CategoryTheory.Limits.biprod.fst.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) X (CategoryTheory.Limits.biprod.fst.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.biprod_comparison_fst CategoryTheory.Functor.biprodComparison_fstₓ'. -/
@[simp, reassoc.1]
theorem biprodComparison_fst : biprodComparison F X Y ≫ biprod.fst = F.map biprod.fst :=
biprod.lift_fst _ _
#align category_theory.functor.biprod_comparison_fst CategoryTheory.Functor.biprodComparison_fst
+/- warning: category_theory.functor.biprod_comparison_snd -> CategoryTheory.Functor.biprodComparison_snd is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.biprodComparison.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6) (CategoryTheory.Limits.biprod.snd.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) Y (CategoryTheory.Limits.biprod.snd.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.biprodComparison.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6) (CategoryTheory.Limits.biprod.snd.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) Y (CategoryTheory.Limits.biprod.snd.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.biprod_comparison_snd CategoryTheory.Functor.biprodComparison_sndₓ'. -/
@[simp, reassoc.1]
theorem biprodComparison_snd : biprodComparison F X Y ≫ biprod.snd = F.map biprod.snd :=
biprod.lift_snd _ _
#align category_theory.functor.biprod_comparison_snd CategoryTheory.Functor.biprodComparison_snd
+/- warning: category_theory.functor.biprod_comparison' -> CategoryTheory.Functor.biprodComparison' is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)], Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)], Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.biprod_comparison' CategoryTheory.Functor.biprodComparison'ₓ'. -/
/-- As for coproducts, any functor between categories with binary biproducts gives rise to a
morphism `F.obj X ⊞ F.obj Y ⟶ F.obj (X ⊞ Y)`. -/
def biprodComparison' : F.obj X ⊞ F.obj Y ⟶ F.obj (X ⊞ Y) :=
biprod.desc (F.map biprod.inl) (F.map biprod.inr)
#align category_theory.functor.biprod_comparison' CategoryTheory.Functor.biprodComparison'
+/- warning: category_theory.functor.inl_biprod_comparison' -> CategoryTheory.Functor.inl_biprodComparison' is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.inl.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.biprodComparison'.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) (CategoryTheory.Limits.biprod.inl.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.inl.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (CategoryTheory.Functor.biprodComparison'.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) (CategoryTheory.Limits.biprod.inl.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.inl_biprod_comparison' CategoryTheory.Functor.inl_biprodComparison'ₓ'. -/
@[simp, reassoc.1]
theorem inl_biprodComparison' : biprod.inl ≫ biprodComparison' F X Y = F.map biprod.inl :=
biprod.inl_desc _ _
#align category_theory.functor.inl_biprod_comparison' CategoryTheory.Functor.inl_biprodComparison'
+/- warning: category_theory.functor.inr_biprod_comparison' -> CategoryTheory.Functor.inr_biprodComparison' is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.inr.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.biprodComparison'.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) (CategoryTheory.Limits.biprod.inr.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.inr.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (CategoryTheory.Functor.biprodComparison'.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) (CategoryTheory.Limits.biprod.inr.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.inr_biprod_comparison' CategoryTheory.Functor.inr_biprodComparison'ₓ'. -/
@[simp, reassoc.1]
theorem inr_biprodComparison' : biprod.inr ≫ biprodComparison' F X Y = F.map biprod.inr :=
biprod.inr_desc _ _
@@ -344,6 +492,12 @@ theorem inr_biprodComparison' : biprod.inr ≫ biprodComparison' F X Y = F.map b
variable [PreservesZeroMorphisms F]
+/- warning: category_theory.functor.biprod_comparison'_comp_biprod_comparison -> CategoryTheory.Functor.biprodComparison'_comp_biprodComparison is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.biprodComparison'.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6) (CategoryTheory.Functor.biprodComparison.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)) (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (CategoryTheory.Functor.biprodComparison'.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6) (CategoryTheory.Functor.biprodComparison.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)) (CategoryTheory.CategoryStruct.id.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.biprod_comparison'_comp_biprod_comparison CategoryTheory.Functor.biprodComparison'_comp_biprodComparisonₓ'. -/
/-- The composition in the opposite direction is equal to the identity if and only if `F` preserves
the biproduct, see `preserves_binary_biproduct_of_mono_biprod_comparison`. -/
@[simp, reassoc.1]
@@ -352,6 +506,12 @@ theorem biprodComparison'_comp_biprodComparison :
ext <;> simp [← functor.map_comp]
#align category_theory.functor.biprod_comparison'_comp_biprod_comparison CategoryTheory.Functor.biprodComparison'_comp_biprodComparison
+/- warning: category_theory.functor.split_epi_biprod_comparison -> CategoryTheory.Functor.splitEpiBiprodComparison is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F], CategoryTheory.SplitEpi.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.biprodComparison.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F], CategoryTheory.SplitEpi.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (CategoryTheory.Functor.biprodComparison.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.split_epi_biprod_comparison CategoryTheory.Functor.splitEpiBiprodComparisonₓ'. -/
/-- `biprod_comparison F X Y` is a split epi. -/
@[simps]
def splitEpiBiprodComparison : SplitEpi (biprodComparison F X Y) :=
@@ -361,6 +521,12 @@ def splitEpiBiprodComparison : SplitEpi (biprodComparison F X Y) :=
instance : IsSplitEpi (biprodComparison F X Y) :=
IsSplitEpi.mk' (splitEpiBiprodComparison F X Y)
+/- warning: category_theory.functor.split_mono_biprod_comparison' -> CategoryTheory.Functor.splitMonoBiprodComparison' is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F], CategoryTheory.SplitMono.{u2, u4} D _inst_2 (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) _inst_6) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Functor.biprodComparison'.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)] [_inst_7 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F], CategoryTheory.SplitMono.{u2, u4} D _inst_2 (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) _inst_6) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Functor.biprodComparison'.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6)
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.split_mono_biprod_comparison' CategoryTheory.Functor.splitMonoBiprodComparison'ₓ'. -/
/-- `biprod_comparison' F X Y` is a split mono. -/
@[simps]
def splitMonoBiprodComparison' : SplitMono (biprodComparison' F X Y) :=
@@ -374,12 +540,24 @@ end
variable [PreservesZeroMorphisms F] [PreservesBinaryBiproduct X Y F]
+/- warning: category_theory.functor.has_binary_biproduct_of_preserves -> CategoryTheory.Functor.hasBinaryBiproduct_of_preserves is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_6], CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y)
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_6], CategoryTheory.Limits.HasBinaryBiproduct.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y)
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.has_binary_biproduct_of_preserves CategoryTheory.Functor.hasBinaryBiproduct_of_preservesₓ'. -/
instance hasBinaryBiproduct_of_preserves : HasBinaryBiproduct (F.obj X) (F.obj Y) :=
HasBinaryBiproduct.mk
{ Bicone := F.mapBinaryBicone (BinaryBiproduct.bicone X Y)
IsBilimit := PreservesBinaryBiproduct.preserves (BinaryBiproduct.isBilimit _ _) }
#align category_theory.functor.has_binary_biproduct_of_preserves CategoryTheory.Functor.hasBinaryBiproduct_of_preserves
+/- warning: category_theory.functor.map_biprod -> CategoryTheory.Functor.mapBiprod is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_6], CategoryTheory.Iso.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_6], CategoryTheory.Iso.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_biprod CategoryTheory.Functor.mapBiprodₓ'. -/
/-- If `F` preserves a binary biproduct, we get a definitionally nice isomorphism
`F.obj (X ⊞ Y) ≅ F.obj X ⊞ F.obj Y`. -/
@[simp]
@@ -387,10 +565,22 @@ def mapBiprod : F.obj (X ⊞ Y) ≅ F.obj X ⊞ F.obj Y :=
biprod.uniqueUpToIso _ _ (PreservesBinaryBiproduct.preserves (BinaryBiproduct.isBilimit _ _))
#align category_theory.functor.map_biprod CategoryTheory.Functor.mapBiprod
+/- warning: category_theory.functor.map_biprod_hom -> CategoryTheory.Functor.mapBiprod_hom is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_6], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7))) (CategoryTheory.Iso.hom.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7)) (CategoryTheory.Limits.biprod.lift.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) X (CategoryTheory.Limits.biprod.fst.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) Y (CategoryTheory.Limits.biprod.snd.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_6], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7))) (CategoryTheory.Iso.hom.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7)) (CategoryTheory.Limits.biprod.lift.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) X (CategoryTheory.Limits.biprod.fst.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) Y (CategoryTheory.Limits.biprod.snd.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_biprod_hom CategoryTheory.Functor.mapBiprod_homₓ'. -/
theorem mapBiprod_hom : (mapBiprod F X Y).hom = biprod.lift (F.map biprod.fst) (F.map biprod.snd) :=
rfl
#align category_theory.functor.map_biprod_hom CategoryTheory.Functor.mapBiprod_hom
+/- warning: category_theory.functor.map_biprod_inv -> CategoryTheory.Functor.mapBiprod_inv is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_6], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))) (CategoryTheory.Iso.inv.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7)) (CategoryTheory.Limits.biprod.desc.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) (CategoryTheory.Limits.biprod.inl.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) (CategoryTheory.Limits.biprod.inr.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (X : C) (Y : C) [_inst_5 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_6 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_6], Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5))) (CategoryTheory.Iso.inv.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7)) (CategoryTheory.Limits.biprod.desc.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_5 _inst_6 _inst_7) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) (CategoryTheory.Limits.biprod.inl.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_5) (CategoryTheory.Limits.biprod.inr.{u1, u3} C _inst_1 _inst_3 X Y _inst_5)))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_biprod_inv CategoryTheory.Functor.mapBiprod_invₓ'. -/
theorem mapBiprod_inv : (mapBiprod F X Y).inv = biprod.desc (F.map biprod.inl) (F.map biprod.inr) :=
rfl
#align category_theory.functor.map_biprod_inv CategoryTheory.Functor.mapBiprod_inv
@@ -405,13 +595,25 @@ section Bicone
variable {J : Type w₁} (f : J → C) [HasBiproduct f] [PreservesBiproduct f F] {W : C}
-theorem biproduct.map_lift_map_biprod (g : ∀ j, W ⟶ f j) :
+/- warning: category_theory.limits.biproduct.map_lift_map_biprod -> CategoryTheory.Limits.biproduct.map_lift_mapBiprod is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] {J : Type.{u1}} (f : J -> C) [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_5] {W : C} (g : forall (j : J), Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) W (f j)), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7))) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 (fun (j : J) => f j) _inst_6)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.map.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 (fun (j : J) => f j) _inst_6) (CategoryTheory.Limits.biproduct.lift.{u1, u2, u4} J C _inst_1 _inst_3 (fun (j : J) => f j) _inst_6 W g)) (CategoryTheory.Iso.hom.{u3, u5} D _inst_2 (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7))) (CategoryTheory.Limits.biproduct.lift.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W) (fun (j : J) => CategoryTheory.Functor.map.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W (f j) (g j)))
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] {J : Type.{u1}} (f : J -> C) [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_5] {W : C} (g : forall (j : J), Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) W (f j)), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7))) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 (fun (j : J) => f j) _inst_6)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 (fun (j : J) => f j) _inst_6) (CategoryTheory.Limits.biproduct.lift.{u1, u2, u4} J C _inst_1 _inst_3 (fun (j : J) => f j) _inst_6 W g)) (CategoryTheory.Iso.hom.{u3, u5} D _inst_2 (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7))) (CategoryTheory.Limits.biproduct.lift.{u1, u3, u5} J D _inst_2 _inst_4 (fun (j : J) => Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (f j)) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W) (fun (j : J) => Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W (f j) (g j)))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.biproduct.map_lift_map_biprod CategoryTheory.Limits.biproduct.map_lift_mapBiprodₓ'. -/
+theorem biproduct.map_lift_mapBiprod (g : ∀ j, W ⟶ f j) :
F.map (biproduct.lift g) ≫ (F.mapBiproduct f).hom = biproduct.lift fun j => F.map (g j) :=
by
ext
simp [← F.map_comp]
-#align category_theory.limits.biproduct.map_lift_map_biprod CategoryTheory.Limits.biproduct.map_lift_map_biprod
-
+#align category_theory.limits.biproduct.map_lift_map_biprod CategoryTheory.Limits.biproduct.map_lift_mapBiprod
+
+/- warning: category_theory.limits.biproduct.map_biproduct_inv_map_desc -> CategoryTheory.Limits.biproduct.mapBiproduct_inv_map_desc is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] {J : Type.{u1}} (f : J -> C) [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_5] {W : C} (g : forall (j : J), Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) (f j) W), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W)) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W) (CategoryTheory.Iso.inv.{u3, u5} D _inst_2 (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.map.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6) W (CategoryTheory.Limits.biproduct.desc.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6 W g))) (CategoryTheory.Limits.biproduct.desc.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W) (fun (j : J) => CategoryTheory.Functor.map.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (f j) W (g j)))
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] {J : Type.{u1}} (f : J -> C) [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_5] {W : C} (g : forall (j : J), Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) (f j) W), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W)) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W) (CategoryTheory.Iso.inv.{u3, u5} D _inst_2 (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6) W (CategoryTheory.Limits.biproduct.desc.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6 W g))) (CategoryTheory.Limits.biproduct.desc.{u1, u3, u5} J D _inst_2 _inst_4 (fun (j : J) => Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (f j)) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W) (fun (j : J) => Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (f j) W (g j)))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.biproduct.map_biproduct_inv_map_desc CategoryTheory.Limits.biproduct.mapBiproduct_inv_map_descₓ'. -/
theorem biproduct.mapBiproduct_inv_map_desc (g : ∀ j, f j ⟶ W) :
(F.mapBiproduct f).inv ≫ F.map (biproduct.desc g) = biproduct.desc fun j => F.map (g j) :=
by
@@ -419,6 +621,12 @@ theorem biproduct.mapBiproduct_inv_map_desc (g : ∀ j, f j ⟶ W) :
simp [← F.map_comp]
#align category_theory.limits.biproduct.map_biproduct_inv_map_desc CategoryTheory.Limits.biproduct.mapBiproduct_inv_map_desc
+/- warning: category_theory.limits.biproduct.map_biproduct_hom_desc -> CategoryTheory.Limits.biproduct.mapBiproduct_hom_desc is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] {J : Type.{u1}} (f : J -> C) [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_5] {W : C} (g : forall (j : J), Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) (f j) W), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W)) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W) (CategoryTheory.Iso.hom.{u3, u5} D _inst_2 (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Limits.biproduct.desc.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7) (CategoryTheory.Functor.obj.{u2, u3, u4, u5} C _inst_1 D _inst_2 F W) (fun (j : J) => CategoryTheory.Functor.map.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (f j) W (g j)))) (CategoryTheory.Functor.map.{u2, u3, u4, u5} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6) W (CategoryTheory.Limits.biproduct.desc.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6 W g))
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] {D : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u3, u5} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u3, u5} D _inst_2] (F : CategoryTheory.Functor.{u2, u3, u4, u5} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 F] {J : Type.{u1}} (f : J -> C) [_inst_6 : CategoryTheory.Limits.HasBiproduct.{u1, u2, u4} J C _inst_1 _inst_3 f] [_inst_7 : CategoryTheory.Limits.PreservesBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J f F _inst_5] {W : C} (g : forall (j : J), Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) (f j) W), Eq.{succ u3} (Quiver.Hom.{succ u3, u5} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W)) (CategoryTheory.CategoryStruct.comp.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W) (CategoryTheory.Iso.hom.{u3, u5} D _inst_2 (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 f _inst_6)) (CategoryTheory.Limits.biproduct.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiproduct.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7)) (CategoryTheory.Limits.biproduct.desc.{u1, u3, u5} J D _inst_2 _inst_4 (Function.comp.{succ u1, succ u4, succ u5} J C D (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F)) f) (CategoryTheory.Functor.hasBiproduct_of_preserves.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 _inst_3 _inst_4 J F f _inst_6 _inst_5 _inst_7) (Prefunctor.obj.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) W) (fun (j : J) => Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (f j) W (g j)))) (Prefunctor.map.{succ u2, succ u3, u4, u5} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u5} D (CategoryTheory.Category.toCategoryStruct.{u3, u5} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u3, u4, u5} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biproduct.{u1, u2, u4} J C _inst_1 _inst_3 (fun (b : J) => f b) _inst_6) W (CategoryTheory.Limits.biproduct.desc.{u1, u2, u4} J C _inst_1 _inst_3 (fun (b : J) => f b) _inst_6 W g))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.biproduct.map_biproduct_hom_desc 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) := by
rw [← biproduct.map_biproduct_inv_map_desc, iso.hom_inv_id_assoc]
@@ -430,21 +638,45 @@ section BinaryBicone
variable (X Y : C) [HasBinaryBiproduct X Y] [PreservesBinaryBiproduct X Y F] {W : C}
+/- warning: category_theory.limits.biprod.map_lift_map_biprod -> CategoryTheory.Limits.biprod.map_lift_mapBiprod is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] (X : C) (Y : C) [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_5] {W : C} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) W X) (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) W Y), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6) (CategoryTheory.Limits.biprod.lift.{u1, u3} C _inst_1 _inst_3 W X Y _inst_6 f g)) (CategoryTheory.Iso.hom.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7))) (CategoryTheory.Limits.biprod.lift.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W X f) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W Y g))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] (X : C) (Y : C) [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_5] {W : C} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) W X) (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) W Y), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6) (CategoryTheory.Limits.biprod.lift.{u1, u3} C _inst_1 _inst_3 W X Y _inst_6 f g)) (CategoryTheory.Iso.hom.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7))) (CategoryTheory.Limits.biprod.lift.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W X f) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W Y g))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.biprod.map_lift_map_biprod 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) := by
ext <;> simp [← F.map_comp]
#align category_theory.limits.biprod.map_lift_map_biprod CategoryTheory.Limits.biprod.map_lift_mapBiprod
+/- warning: category_theory.limits.biprod.lift_map_biprod -> CategoryTheory.Limits.biprod.lift_mapBiprod is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] (X : C) (Y : C) [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_5] {W : C} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) W X) (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) W Y), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.lift.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W X f) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W Y g)) (CategoryTheory.Iso.inv.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7))) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6) (CategoryTheory.Limits.biprod.lift.{u1, u3} C _inst_1 _inst_3 W X Y _inst_6 f g))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] (X : C) (Y : C) [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_5] {W : C} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) W X) (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) W Y), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6))) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.lift.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W X f) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W Y g)) (CategoryTheory.Iso.inv.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7))) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6) (CategoryTheory.Limits.biprod.lift.{u1, u3} C _inst_1 _inst_3 W X Y _inst_6 f g))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.biprod.lift_map_biprod 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) := by
rw [← biprod.map_lift_map_biprod, category.assoc, iso.hom_inv_id, category.comp_id]
#align category_theory.limits.biprod.lift_map_biprod CategoryTheory.Limits.biprod.lift_mapBiprod
+/- warning: category_theory.limits.biprod.map_biprod_inv_map_desc -> CategoryTheory.Limits.biprod.mapBiprod_inv_map_desc is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] (X : C) (Y : C) [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_5] {W : C} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) X W) (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Y W), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W) (CategoryTheory.Iso.inv.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6) W (CategoryTheory.Limits.biprod.desc.{u1, u3} C _inst_1 _inst_3 W X Y _inst_6 f g))) (CategoryTheory.Limits.biprod.desc.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X W f) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y W g))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] (X : C) (Y : C) [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_5] {W : C} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) X W) (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Y W), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W) (CategoryTheory.Iso.inv.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6) W (CategoryTheory.Limits.biprod.desc.{u1, u3} C _inst_1 _inst_3 W X Y _inst_6 f g))) (CategoryTheory.Limits.biprod.desc.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X W f) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y W g))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.biprod.map_biprod_inv_map_desc 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) := by
ext <;> simp [← F.map_comp]
#align category_theory.limits.biprod.map_biprod_inv_map_desc CategoryTheory.Limits.biprod.mapBiprod_inv_map_desc
+/- warning: category_theory.limits.biprod.map_biprod_hom_desc -> CategoryTheory.Limits.biprod.mapBiprod_hom_desc is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] (X : C) (Y : C) [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_5] {W : C} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) X W) (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Y W), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W) (CategoryTheory.Iso.hom.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Limits.biprod.desc.{u2, u4} D _inst_2 _inst_4 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F W) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X W f) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F Y W g))) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6) W (CategoryTheory.Limits.biprod.desc.{u1, u3} C _inst_1 _inst_3 W X Y _inst_6 f g))
+but is expected to have type
+ forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] [_inst_3 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u3} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u4} D _inst_2] (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) [_inst_5 : CategoryTheory.Functor.PreservesZeroMorphisms.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F] (X : C) (Y : C) [_inst_6 : CategoryTheory.Limits.HasBinaryBiproduct.{u1, u3} C _inst_1 _inst_3 X Y] [_inst_7 : CategoryTheory.Limits.PreservesBinaryBiproduct.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 X Y F _inst_5] {W : C} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) X W) (g : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) Y W), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W)) (CategoryTheory.CategoryStruct.comp.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W) (CategoryTheory.Iso.hom.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6)) (CategoryTheory.Limits.biprod.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Functor.mapBiprod.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7)) (CategoryTheory.Limits.biprod.desc.{u2, u4} D _inst_2 _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) W) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y) (CategoryTheory.Functor.hasBinaryBiproduct_of_preserves.{u1, u2, u3, u4} C _inst_1 D _inst_2 _inst_3 _inst_4 F X Y _inst_6 _inst_5 _inst_7) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X W f) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) Y W g))) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) (CategoryTheory.Limits.biprod.{u1, u3} C _inst_1 _inst_3 X Y _inst_6) W (CategoryTheory.Limits.biprod.desc.{u1, u3} C _inst_1 _inst_3 W X Y _inst_6 f g))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.biprod.map_biprod_hom_desc 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) := by
rw [← biprod.map_biprod_inv_map_desc, iso.hom_inv_id_assoc]
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -56,7 +56,7 @@ variable {J : Type w₁}
@[simps]
def mapBicone {f : J → C} (b : Bicone f) : Bicone (F.obj ∘ f)
where
- x := F.obj b.x
+ pt := F.obj b.pt
π j := F.map (b.π j)
ι j := F.map (b.ι j)
ι_π j j' := by
@@ -78,7 +78,7 @@ end Bicone
@[simps]
def mapBinaryBicone {X Y : C} (b : BinaryBicone X Y) : BinaryBicone (F.obj X) (F.obj Y)
where
- x := F.obj b.x
+ pt := F.obj b.pt
fst := F.map b.fst
snd := F.map b.snd
inl := F.map b.inl
mathlib commit https://github.com/leanprover-community/mathlib/commit/eb0cb4511aaef0da2462207b67358a0e1fe1e2ee
@@ -279,11 +279,11 @@ end
variable [PreservesZeroMorphisms F] [PreservesBiproduct f F]
-instance hasBiproductOfPreserves : HasBiproduct (F.obj ∘ f) :=
+instance hasBiproduct_of_preserves : HasBiproduct (F.obj ∘ f) :=
HasBiproduct.mk
{ Bicone := F.mapBicone (Biproduct.bicone f)
IsBilimit := PreservesBiproduct.preserves (Biproduct.isBilimit _) }
-#align category_theory.functor.has_biproduct_of_preserves CategoryTheory.Functor.hasBiproductOfPreserves
+#align category_theory.functor.has_biproduct_of_preserves CategoryTheory.Functor.hasBiproduct_of_preserves
/-- If `F` preserves a biproduct, we get a definitionally nice isomorphism
`F.obj (⨁ f) ≅ ⨁ (F.obj ∘ f)`. -/
@@ -374,11 +374,11 @@ end
variable [PreservesZeroMorphisms F] [PreservesBinaryBiproduct X Y F]
-instance hasBinaryBiproductOfPreserves : HasBinaryBiproduct (F.obj X) (F.obj Y) :=
+instance hasBinaryBiproduct_of_preserves : HasBinaryBiproduct (F.obj X) (F.obj Y) :=
HasBinaryBiproduct.mk
{ Bicone := F.mapBinaryBicone (BinaryBiproduct.bicone X Y)
IsBilimit := PreservesBinaryBiproduct.preserves (BinaryBiproduct.isBilimit _ _) }
-#align category_theory.functor.has_binary_biproduct_of_preserves CategoryTheory.Functor.hasBinaryBiproductOfPreserves
+#align category_theory.functor.has_binary_biproduct_of_preserves CategoryTheory.Functor.hasBinaryBiproduct_of_preserves
/-- If `F` preserves a binary biproduct, we get a definitionally nice isomorphism
`F.obj (X ⊞ Y) ≅ F.obj X ⊞ F.obj Y`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -71,17 +71,9 @@ theorem mapBicone_whisker {K : Type w₂} {g : K ≃ J} {f : J → C} (c : Bicon
end Bicone
/-- The image of a binary bicone under a functor. -/
-@[simps]
-def mapBinaryBicone {X Y : C} (b : BinaryBicone X Y) : BinaryBicone (F.obj X) (F.obj Y) where
- pt := F.obj b.pt
- fst := F.map b.fst
- snd := F.map b.snd
- inl := F.map b.inl
- inr := F.map b.inr
- inl_fst := by rw [← F.map_comp, b.inl_fst, F.map_id]
- inl_snd := by rw [← F.map_comp, b.inl_snd, F.map_zero]
- inr_fst := by rw [← F.map_comp, b.inr_fst, F.map_zero]
- inr_snd := by rw [← F.map_comp, b.inr_snd, F.map_id]
+@[simps!]
+def mapBinaryBicone {X Y : C} (b : BinaryBicone X Y) : BinaryBicone (F.obj X) (F.obj Y) :=
+ (BinaryBicones.functoriality _ _ F).obj b
#align category_theory.functor.map_binary_bicone CategoryTheory.Functor.mapBinaryBicone
end Map
This is the supremum of
along with some minor fixes from failures on nightly-testing as Mathlib master
is merged into it.
Note that some PRs for changes that are already compatible with the current toolchain and will be necessary have already been split out: #8380.
I am hopeful that in future we will be able to progressively merge adaptation PRs into a bump/v4.X.0
branch, so we never end up with a "big merge" like this. However one of these adaptation PRs (#8056) predates my new scheme for combined CI, and it wasn't possible to keep that PR viable in the meantime.
In particular this includes adjustments for the Lean PRs
We can get rid of all the
local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue [lean4#2220](https://github.com/leanprover/lean4/pull/2220)
macros across Mathlib (and in any projects that want to write natural number powers of reals).
Changes the default behaviour of simp
to (config := {decide := false})
. This makes simp
(and consequentially norm_num
) less powerful, but also more consistent, and less likely to blow up in long failures. This requires a variety of changes: changing some previously by simp
or norm_num
to decide
or rfl
, or adding (config := {decide := true})
.
This changed the behaviour of simp
so that simp [f]
will only unfold "fully applied" occurrences of f
. The old behaviour can be recovered with simp (config := { unfoldPartialApp := true })
. We may in future add a syntax for this, e.g. simp [!f]
; please provide feedback! In the meantime, we have made the following changes:
(config := { unfoldPartialApp := true })
in some places, to recover the old behaviour@[eqns]
to manually adjust the equation lemmas for a particular definition, recovering the old behaviour just for that definition. See #8371, where we do this for Function.comp
and Function.flip
.This change in Lean may require further changes down the line (e.g. adding the !f
syntax, and/or upstreaming the special treatment for Function.comp
and Function.flip
, and/or removing this special treatment). Please keep an open and skeptical mind about these changes!
Co-authored-by: leanprover-community-mathlib4-bot <leanprover-community-mathlib4-bot@users.noreply.github.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Mauricio Collares <mauricio@collares.org>
@@ -419,7 +419,7 @@ theorem biproduct.map_lift_mapBiprod (g : ∀ j, W ⟶ f j) :
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) := by
ext j
- dsimp only [Function.comp]
+ dsimp only [Function.comp_def]
haveI : HasBiproduct fun j => F.obj (f j) := hasBiproduct_of_preserves F f
simp only [mapBiproduct_hom, Category.assoc, biproduct.lift_π, ← F.map_comp]
#align category_theory.limits.biproduct.map_lift_map_biprod CategoryTheory.Limits.biproduct.map_lift_mapBiprod
@@ -429,7 +429,7 @@ theorem biproduct.mapBiproduct_inv_map_desc (g : ∀ j, f j ⟶ W) :
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) := by
ext j
- dsimp only [Function.comp]
+ dsimp only [Function.comp_def]
haveI : HasBiproduct fun j => F.obj (f j) := hasBiproduct_of_preserves F f
simp only [mapBiproduct_inv, ← Category.assoc, biproduct.ι_desc ,← F.map_comp]
#align category_theory.limits.biproduct.map_biproduct_inv_map_desc CategoryTheory.Limits.biproduct.mapBiproduct_inv_map_desc
@@ -188,8 +188,8 @@ attribute [inherit_doc PreservesBinaryBiproducts] PreservesBinaryBiproducts.pres
/-- A functor that preserves biproducts of a pair preserves binary biproducts. -/
def preservesBinaryBiproductOfPreservesBiproduct (F : C ⥤ D) [PreservesZeroMorphisms F] (X Y : C)
- [PreservesBiproduct (pairFunction X Y) F] : PreservesBinaryBiproduct X Y F
- where preserves {b} hb :=
+ [PreservesBiproduct (pairFunction X Y) F] : PreservesBinaryBiproduct X Y F where
+ preserves {b} hb :=
{ isLimit :=
IsLimit.ofIsoLimit
((IsLimit.postcomposeHomEquiv (diagramIsoPair _) _).symm
@@ -2,15 +2,12 @@
Copyright (c) 2022 Markus Himmel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Markus Himmel
-
-! This file was ported from Lean 3 source module category_theory.limits.preserves.shapes.biproducts
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.CategoryTheory.Limits.Shapes.Biproducts
import Mathlib.CategoryTheory.Limits.Preserves.Shapes.Zero
+#align_import category_theory.limits.preserves.shapes.biproducts from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
+
/-!
# Preservation of biproducts
Co-authored-by: Komyyy <pol_tta@outlook.jp> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com> Co-authored-by: Mario Carneiro <di.gama@gmail.com>
@@ -422,7 +422,7 @@ theorem biproduct.map_lift_mapBiprod (g : ∀ j, W ⟶ f j) :
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) := by
ext j
- dsimp [Function.comp]
+ dsimp only [Function.comp]
haveI : HasBiproduct fun j => F.obj (f j) := hasBiproduct_of_preserves F f
simp only [mapBiproduct_hom, Category.assoc, biproduct.lift_π, ← F.map_comp]
#align category_theory.limits.biproduct.map_lift_map_biprod CategoryTheory.Limits.biproduct.map_lift_mapBiprod
@@ -432,7 +432,7 @@ theorem biproduct.mapBiproduct_inv_map_desc (g : ∀ j, f j ⟶ W) :
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) := by
ext j
- dsimp [Function.comp]
+ dsimp only [Function.comp]
haveI : HasBiproduct fun j => F.obj (f j) := hasBiproduct_of_preserves F f
simp only [mapBiproduct_inv, ← Category.assoc, biproduct.ι_desc ,← F.map_comp]
#align category_theory.limits.biproduct.map_biproduct_inv_map_desc CategoryTheory.Limits.biproduct.mapBiproduct_inv_map_desc
@@ -421,7 +421,7 @@ 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) := by
- apply biproduct.hom_ext; intro j'
+ ext j
dsimp [Function.comp]
haveI : HasBiproduct fun j => F.obj (f j) := hasBiproduct_of_preserves F f
simp only [mapBiproduct_hom, Category.assoc, biproduct.lift_π, ← F.map_comp]
@@ -431,7 +431,7 @@ 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) := by
- apply biproduct.hom_ext'; intro j
+ ext j
dsimp [Function.comp]
haveI : HasBiproduct fun j => F.obj (f j) := hasBiproduct_of_preserves F f
simp only [mapBiproduct_inv, ← Category.assoc, biproduct.ι_desc ,← F.map_comp]
@@ -450,7 +450,7 @@ variable (X Y : C) [HasBinaryBiproduct X Y] [PreservesBinaryBiproduct X Y F] {W
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) := by
- apply biprod.hom_ext <;> simp [mapBiprod, ← F.map_comp]
+ ext <;> simp [mapBiprod, ← F.map_comp]
#align category_theory.limits.biprod.map_lift_map_biprod CategoryTheory.Limits.biprod.map_lift_mapBiprod
theorem biprod.lift_mapBiprod (f : W ⟶ X) (g : W ⟶ Y) :
@@ -460,7 +460,7 @@ theorem biprod.lift_mapBiprod (f : W ⟶ X) (g : W ⟶ Y) :
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) := by
- apply biprod.hom_ext' <;> simp [mapBiprod, ← F.map_comp]
+ ext <;> simp [mapBiprod, ← F.map_comp]
#align category_theory.limits.biprod.map_biprod_inv_map_desc CategoryTheory.Limits.biprod.mapBiprod_inv_map_desc
theorem biprod.mapBiprod_hom_desc (f : X ⟶ W) (g : Y ⟶ W) :
See discussion at https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/mathport.20drops.20priorities.20in.20.60attribute.20.5Binstance.5D.60. mathport
has been dropping the priorities on instances when using the attribute
command.
This PR adds back all the priorities, except for local attribute
, and instances involving coercions, which I didn't want to mess with.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -124,7 +124,7 @@ class PreservesBiproductsOfShape (F : C ⥤ D) [PreservesZeroMorphisms F] where
attribute [inherit_doc PreservesBiproductsOfShape] PreservesBiproductsOfShape.preserves
-attribute [instance] PreservesBiproductsOfShape.preserves
+attribute [instance 100] PreservesBiproductsOfShape.preserves
end Bicone
@@ -136,7 +136,7 @@ class PreservesFiniteBiproducts (F : C ⥤ D) [PreservesZeroMorphisms F] where
attribute [inherit_doc PreservesFiniteBiproducts] PreservesFiniteBiproducts.preserves
-attribute [instance] PreservesFiniteBiproducts.preserves
+attribute [instance 100] PreservesFiniteBiproducts.preserves
/-- A functor `F` preserves biproducts if it preserves biproducts of any shape `J` of size `w`.
The usual notion of preservation of biproducts is recovered by choosing `w` to be the universe
@@ -147,7 +147,7 @@ class PreservesBiproducts (F : C ⥤ D) [PreservesZeroMorphisms F] where
attribute [inherit_doc PreservesBiproducts] PreservesBiproducts.preserves
-attribute [instance] PreservesBiproducts.preserves
+attribute [instance 100] PreservesBiproducts.preserves
/-- Preserving biproducts at a bigger universe level implies preserving biproducts at a
smaller universe level. -/
@@ -213,7 +213,7 @@ def preservesBinaryBiproductsOfPreservesBiproducts (F : C ⥤ D) [PreservesZeroM
preserves {X} Y := preservesBinaryBiproductOfPreservesBiproduct F X Y
#align category_theory.limits.preserves_binary_biproducts_of_preserves_biproducts CategoryTheory.Limits.preservesBinaryBiproductsOfPreservesBiproducts
-attribute [instance] PreservesBinaryBiproducts.preserves
+attribute [instance 100] PreservesBinaryBiproducts.preserves
end Limits
vscode is already configured by .vscode/settings.json
to trim these on save. It's not clear how they've managed to stick around.
By doing this all in one PR now, it avoids getting random whitespace diffs in PRs later.
This was done with a regex search in vscode,
@@ -161,7 +161,7 @@ def preservesBiproductsShrink (F : C ⥤ D) [PreservesZeroMorphisms F]
#align category_theory.limits.preserves_biproducts_shrink CategoryTheory.Limits.preservesBiproductsShrink
instance (priority := 100) preservesFiniteBiproductsOfPreservesBiproducts (F : C ⥤ D)
- [PreservesZeroMorphisms F] [PreservesBiproducts.{w₁} F] : PreservesFiniteBiproducts F where
+ [PreservesZeroMorphisms F] [PreservesBiproducts.{w₁} F] : PreservesFiniteBiproducts F where
preserves {J} _ := by letI := preservesBiproductsShrink.{0} F; infer_instance
#align category_theory.limits.preserves_finite_biproducts_of_preserves_biproducts CategoryTheory.Limits.preservesFiniteBiproductsOfPreservesBiproducts
@@ -171,7 +171,7 @@ class PreservesBinaryBiproduct (X Y : C) (F : C ⥤ D) [PreservesZeroMorphisms F
preserves : ∀ {b : BinaryBicone X Y}, b.IsBilimit → (F.mapBinaryBicone b).IsBilimit
#align category_theory.limits.preserves_binary_biproduct CategoryTheory.Limits.PreservesBinaryBiproduct
-attribute [inherit_doc PreservesBinaryBiproduct] PreservesBinaryBiproduct.preserves
+attribute [inherit_doc PreservesBinaryBiproduct] PreservesBinaryBiproduct.preserves
/-- A functor `F` preserves binary biproducts of `X` and `Y` if `F` maps every bilimit bicone over
`X` and `Y` to a bilimit bicone over `F.obj X` and `F.obj Y`. -/
@@ -187,7 +187,7 @@ class PreservesBinaryBiproducts (F : C ⥤ D) [PreservesZeroMorphisms F] where
preserves : ∀ {X Y : C}, PreservesBinaryBiproduct X Y F := by infer_instance
#align category_theory.limits.preserves_binary_biproducts CategoryTheory.Limits.PreservesBinaryBiproducts
-attribute [inherit_doc PreservesBinaryBiproducts] PreservesBinaryBiproducts.preserves
+attribute [inherit_doc PreservesBinaryBiproducts] PreservesBinaryBiproducts.preserves
/-- A functor that preserves biproducts of a pair preserves binary biproducts. -/
def preservesBinaryBiproductOfPreservesBiproduct (F : C ⥤ D) [PreservesZeroMorphisms F] (X Y : C)
@@ -209,7 +209,7 @@ def preservesBinaryBiproductOfPreservesBiproduct (F : C ⥤ D) [PreservesZeroMor
/-- A functor that preserves biproducts of a pair preserves binary biproducts. -/
def preservesBinaryBiproductsOfPreservesBiproducts (F : C ⥤ D) [PreservesZeroMorphisms F]
- [PreservesBiproductsOfShape WalkingPair F] : PreservesBinaryBiproducts F where
+ [PreservesBiproductsOfShape WalkingPair F] : PreservesBinaryBiproducts F where
preserves {X} Y := preservesBinaryBiproductOfPreservesBiproduct F X Y
#align category_theory.limits.preserves_binary_biproducts_of_preserves_biproducts CategoryTheory.Limits.preservesBinaryBiproductsOfPreservesBiproducts
@@ -267,7 +267,7 @@ theorem biproductComparison'_comp_biproductComparison :
/-- `biproduct_comparison F f` is a split epimorphism. -/
@[simps]
-def splitEpiBiproductComparison : SplitEpi (biproductComparison F f) where
+def splitEpiBiproductComparison : SplitEpi (biproductComparison F f) where
section_ := biproductComparison' F f
id := by aesop
#align category_theory.functor.split_epi_biproduct_comparison CategoryTheory.Functor.splitEpiBiproductComparison
@@ -277,7 +277,7 @@ instance : IsSplitEpi (biproductComparison F f) :=
/-- `biproduct_comparison' F f` is a split monomorphism. -/
@[simps]
-def splitMonoBiproductComparison' : SplitMono (biproductComparison' F f) where
+def splitMonoBiproductComparison' : SplitMono (biproductComparison' F f) where
retraction := biproductComparison F f
id := by aesop
#align category_theory.functor.split_mono_biproduct_comparison' CategoryTheory.Functor.splitMonoBiproductComparison'
@@ -303,12 +303,12 @@ def mapBiproduct : F.obj (⨁ f) ≅ ⨁ F.obj ∘ f :=
#align category_theory.functor.map_biproduct CategoryTheory.Functor.mapBiproduct
theorem mapBiproduct_hom :
- haveI : HasBiproduct fun j => F.obj (f j) := hasBiproduct_of_preserves F f
+ 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) := rfl
#align category_theory.functor.map_biproduct_hom CategoryTheory.Functor.mapBiproduct_hom
theorem mapBiproduct_inv :
- haveI : HasBiproduct fun j => F.obj (f j) := hasBiproduct_of_preserves F f
+ 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) := rfl
#align category_theory.functor.map_biproduct_inv CategoryTheory.Functor.mapBiproduct_inv
@@ -366,7 +366,7 @@ theorem biprodComparison'_comp_biprodComparison :
@[simps]
def splitEpiBiprodComparison : SplitEpi (biprodComparison F X Y) where
section_ := biprodComparison' F X Y
- id := by aesop
+ id := by aesop
#align category_theory.functor.split_epi_biprod_comparison CategoryTheory.Functor.splitEpiBiprodComparison
instance : IsSplitEpi (biprodComparison F X Y) :=
@@ -421,10 +421,10 @@ 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) := by
- apply biproduct.hom_ext; intro j'
+ apply biproduct.hom_ext; intro j'
dsimp [Function.comp]
haveI : HasBiproduct fun j => F.obj (f j) := hasBiproduct_of_preserves F f
- simp only [mapBiproduct_hom, Category.assoc, biproduct.lift_π, ← F.map_comp]
+ simp only [mapBiproduct_hom, Category.assoc, biproduct.lift_π, ← F.map_comp]
#align category_theory.limits.biproduct.map_lift_map_biprod CategoryTheory.Limits.biproduct.map_lift_mapBiprod
theorem biproduct.mapBiproduct_inv_map_desc (g : ∀ j, f j ⟶ W) :
@@ -475,4 +475,3 @@ end Limits
end HasZeroMorphisms
end CategoryTheory
-
The unported dependencies are