category_theory.functor.curryingMathlib.CategoryTheory.Functor.Currying

This file has been ported!

Changes since the initial port

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.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -3,7 +3,7 @@ Copyright (c) 2017 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 -/
-import Mathbin.CategoryTheory.Products.Bifunctor
+import CategoryTheory.Products.Bifunctor
 
 #align_import category_theory.functor.currying from "leanprover-community/mathlib"@"e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b"
 
Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2017 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
-
-! This file was ported from Lean 3 source module category_theory.functor.currying
-! leanprover-community/mathlib commit e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.CategoryTheory.Products.Bifunctor
 
+#align_import category_theory.functor.currying from "leanprover-community/mathlib"@"e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b"
+
 /-!
 # Curry and uncurry, as functors.
 
Diff
@@ -87,6 +87,7 @@ def curry : (C × D ⥤ E) ⥤ C ⥤ D ⥤ E where
 #align category_theory.curry CategoryTheory.curry
 -/
 
+#print CategoryTheory.currying /-
 -- create projection simp lemmas even though this isn't a `{ .. }`.
 /-- The equivalence of functor categories given by currying/uncurrying.
 -/
@@ -101,19 +102,24 @@ def currying : C ⥤ D ⥤ E ≌ C × D ⥤ E :=
     (NatIso.ofComponents (fun F => NatIso.ofComponents (fun X => eqToIso (by simp)) (by tidy))
       (by tidy))
 #align category_theory.currying CategoryTheory.currying
+-/
 
+#print CategoryTheory.flipIsoCurrySwapUncurry /-
 /-- `F.flip` is isomorphic to uncurrying `F`, swapping the variables, and currying. -/
 @[simps]
 def flipIsoCurrySwapUncurry (F : C ⥤ D ⥤ E) : F.flip ≅ curry.obj (Prod.swap _ _ ⋙ uncurry.obj F) :=
   NatIso.ofComponents (fun d => NatIso.ofComponents (fun c => Iso.refl _) (by tidy)) (by tidy)
 #align category_theory.flip_iso_curry_swap_uncurry CategoryTheory.flipIsoCurrySwapUncurry
+-/
 
+#print CategoryTheory.uncurryObjFlip /-
 /-- The uncurrying of `F.flip` is isomorphic to
 swapping the factors followed by the uncurrying of `F`. -/
 @[simps]
 def uncurryObjFlip (F : C ⥤ D ⥤ E) : uncurry.obj F.flip ≅ Prod.swap _ _ ⋙ uncurry.obj F :=
   NatIso.ofComponents (fun p => Iso.refl _) (by tidy)
 #align category_theory.uncurry_obj_flip CategoryTheory.uncurryObjFlip
+-/
 
 variable (B C D E)
 
Diff
@@ -87,12 +87,6 @@ def curry : (C × D ⥤ E) ⥤ C ⥤ D ⥤ E where
 #align category_theory.curry CategoryTheory.curry
 -/
 
-/- warning: category_theory.currying -> CategoryTheory.currying is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u1, u4} C] {D : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} D] {E : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} E], CategoryTheory.Equivalence.{max u4 u5 u3, max (max u4 u5) u3, max u1 (max u5 u3) u4 u2 u3 u5 u6, max (max u1 u2) u3 (max u4 u5) u6} (CategoryTheory.Functor.{u1, max u5 u3, u4, max u2 u3 u5 u6} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)) (CategoryTheory.Functor.category.{u1, max u5 u3, u4, max u2 u3 u5 u6} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)) (CategoryTheory.Functor.{max u1 u2, u3, max u4 u5, u6} (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4) (CategoryTheory.Functor.category.{max u1 u2, u3, max u4 u5, u6} (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4)
-but is expected to have type
-  forall {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u1, u4} C] {D : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} D] {E : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} E], CategoryTheory.Equivalence.{max (max u4 u5) u3, max (max u4 u5) u3, max (max (max (max (max (max u6 u5) u3) u2) u4) u5 u3) u1, max (max (max u6 u5 u4) u3) u1 u2} (CategoryTheory.Functor.{u1, max u5 u3, u4, max (max (max u6 u5) u3) u2} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)) (CategoryTheory.Functor.{max u1 u2, u3, max u5 u4, u6} (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4) (CategoryTheory.Functor.category.{u1, max u5 u3, u4, max (max (max u5 u6) u2) u3} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)) (CategoryTheory.Functor.category.{max u1 u2, u3, max u4 u5, u6} (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4)
-Case conversion may be inaccurate. Consider using '#align category_theory.currying CategoryTheory.curryingₓ'. -/
 -- create projection simp lemmas even though this isn't a `{ .. }`.
 /-- The equivalence of functor categories given by currying/uncurrying.
 -/
@@ -108,18 +102,12 @@ def currying : C ⥤ D ⥤ E ≌ C × D ⥤ E :=
       (by tidy))
 #align category_theory.currying CategoryTheory.currying
 
-/- warning: category_theory.flip_iso_curry_swap_uncurry -> CategoryTheory.flipIsoCurrySwapUncurry is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.flip_iso_curry_swap_uncurry CategoryTheory.flipIsoCurrySwapUncurryₓ'. -/
 /-- `F.flip` is isomorphic to uncurrying `F`, swapping the variables, and currying. -/
 @[simps]
 def flipIsoCurrySwapUncurry (F : C ⥤ D ⥤ E) : F.flip ≅ curry.obj (Prod.swap _ _ ⋙ uncurry.obj F) :=
   NatIso.ofComponents (fun d => NatIso.ofComponents (fun c => Iso.refl _) (by tidy)) (by tidy)
 #align category_theory.flip_iso_curry_swap_uncurry CategoryTheory.flipIsoCurrySwapUncurry
 
-/- warning: category_theory.uncurry_obj_flip -> CategoryTheory.uncurryObjFlip is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.uncurry_obj_flip CategoryTheory.uncurryObjFlipₓ'. -/
 /-- The uncurrying of `F.flip` is isomorphic to
 swapping the factors followed by the uncurrying of `F`. -/
 @[simps]
Diff
@@ -109,10 +109,7 @@ def currying : C ⥤ D ⥤ E ≌ C × D ⥤ E :=
 #align category_theory.currying CategoryTheory.currying
 
 /- warning: category_theory.flip_iso_curry_swap_uncurry -> CategoryTheory.flipIsoCurrySwapUncurry is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u1, u4} C] {D : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} D] {E : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} E] (F : CategoryTheory.Functor.{u1, max u5 u3, u4, max u2 u3 u5 u6} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)), CategoryTheory.Iso.{max u5 u4 u3, max u2 (max u4 u3) u5 u1 u3 u4 u6} (CategoryTheory.Functor.{u2, max u4 u3, u5, max u1 u3 u4 u6} D _inst_3 (CategoryTheory.Functor.{u1, u3, u4, u6} C _inst_2 E _inst_4) (CategoryTheory.Functor.category.{u1, u3, u4, u6} C _inst_2 E _inst_4)) (CategoryTheory.Functor.category.{u2, max u4 u3, u5, max u1 u3 u4 u6} D _inst_3 (CategoryTheory.Functor.{u1, u3, u4, u6} C _inst_2 E _inst_4) (CategoryTheory.Functor.category.{u1, u3, u4, u6} C _inst_2 E _inst_4)) (CategoryTheory.Functor.flip.{u1, u2, u3, u4, u5, u6} C _inst_2 D _inst_3 E _inst_4 F) (CategoryTheory.Functor.obj.{max (max u5 u4) u3, max u5 u4 u3, max (max u2 u1) u3 (max u5 u4) u6, max u2 (max u4 u3) u5 u1 u3 u4 u6} (CategoryTheory.Functor.{max u2 u1, u3, max u5 u4, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) E _inst_4) (CategoryTheory.Functor.category.{max u2 u1, u3, max u5 u4, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) E _inst_4) (CategoryTheory.Functor.{u2, max u4 u3, u5, max u1 u3 u4 u6} D _inst_3 (CategoryTheory.Functor.{u1, u3, u4, u6} C _inst_2 E _inst_4) (CategoryTheory.Functor.category.{u1, u3, u4, u6} C _inst_2 E _inst_4)) (CategoryTheory.Functor.category.{u2, max u4 u3, u5, max u1 u3 u4 u6} D _inst_3 (CategoryTheory.Functor.{u1, u3, u4, u6} C _inst_2 E _inst_4) (CategoryTheory.Functor.category.{u1, u3, u4, u6} C _inst_2 E _inst_4)) (CategoryTheory.curry.{u2, u1, u3, u5, u4, u6} D _inst_3 C _inst_2 E _inst_4) (CategoryTheory.Functor.comp.{max u2 u1, max u1 u2, u3, max u5 u4, max u4 u5, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4 (CategoryTheory.Prod.swap.{u2, u1, u5, u4} D _inst_3 C _inst_2) (CategoryTheory.Functor.obj.{max u4 u5 u3, max (max u4 u5) u3, max u1 (max u5 u3) u4 u2 u3 u5 u6, max (max u1 u2) u3 (max u4 u5) u6} (CategoryTheory.Functor.{u1, max u5 u3, u4, max u2 u3 u5 u6} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)) (CategoryTheory.Functor.category.{u1, max u5 u3, u4, max u2 u3 u5 u6} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)) (CategoryTheory.Functor.{max u1 u2, u3, max u4 u5, u6} (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4) (CategoryTheory.Functor.category.{max u1 u2, u3, max u4 u5, u6} (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4) (CategoryTheory.uncurry.{u1, u2, u3, u4, u5, u6} C _inst_2 D _inst_3 E _inst_4) F)))
-but is expected to have type
-  forall {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u1, u4} C] {D : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} D] {E : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} E] (F : CategoryTheory.Functor.{u1, max u5 u3, u4, max (max (max u6 u5) u3) u2} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)), CategoryTheory.Iso.{max (max u4 u5) u3, max (max (max (max (max u4 u5) u6) u1) u2) u3} (CategoryTheory.Functor.{u2, max u4 u3, u5, max (max (max u6 u4) u3) u1} D _inst_3 (CategoryTheory.Functor.{u1, u3, u4, u6} C _inst_2 E _inst_4) (CategoryTheory.Functor.category.{u1, u3, u4, u6} C _inst_2 E _inst_4)) (CategoryTheory.Functor.category.{u2, max u4 u3, u5, max (max (max u4 u6) u1) u3} D _inst_3 (CategoryTheory.Functor.{u1, u3, u4, u6} C _inst_2 E _inst_4) (CategoryTheory.Functor.category.{u1, u3, u4, u6} C _inst_2 E _inst_4)) (CategoryTheory.Functor.flip.{u1, u2, u3, u4, u5, u6} C _inst_2 D _inst_3 E _inst_4 F) (Prefunctor.obj.{max (max (succ u4) (succ u5)) (succ u3), max (max (succ u4) (succ u5)) (succ u3), max (max (max (max (max u6 u4) u5) u3) u1) u2, max (max (max (max (max u6 u4) u5) u3) u1) u2} (CategoryTheory.Functor.{max u2 u1, u3, max u4 u5, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) E _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max (max u4 u5) u3, max (max (max (max (max u6 u4) u5) u3) u1) u2} (CategoryTheory.Functor.{max u2 u1, u3, max u4 u5, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) E _inst_4) (CategoryTheory.Category.toCategoryStruct.{max (max u4 u5) u3, max (max (max (max (max u6 u4) u5) u3) u1) u2} (CategoryTheory.Functor.{max u2 u1, u3, max u4 u5, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) E _inst_4) (CategoryTheory.Functor.category.{max u2 u1, u3, max u5 u4, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) E _inst_4))) (CategoryTheory.Functor.{u2, max u4 u3, u5, max (max (max u6 u4) u3) u1} D _inst_3 (CategoryTheory.Functor.{u1, u3, u4, u6} C _inst_2 E _inst_4) (CategoryTheory.Functor.category.{u1, u3, u4, u6} C _inst_2 E _inst_4)) (CategoryTheory.CategoryStruct.toQuiver.{max (max u4 u5) u3, max (max (max (max (max u6 u4) u5) u3) u1) u2} (CategoryTheory.Functor.{u2, max u4 u3, u5, max (max (max u6 u4) u3) u1} D _inst_3 (CategoryTheory.Functor.{u1, u3, u4, u6} C _inst_2 E _inst_4) (CategoryTheory.Functor.category.{u1, u3, u4, u6} C _inst_2 E _inst_4)) (CategoryTheory.Category.toCategoryStruct.{max (max u4 u5) u3, max (max (max (max (max u6 u4) u5) u3) u1) u2} (CategoryTheory.Functor.{u2, max u4 u3, u5, max (max (max u6 u4) u3) u1} D _inst_3 (CategoryTheory.Functor.{u1, u3, u4, u6} C _inst_2 E _inst_4) (CategoryTheory.Functor.category.{u1, u3, u4, u6} C _inst_2 E _inst_4)) (CategoryTheory.Functor.category.{u2, max u4 u3, u5, max (max (max u4 u6) u1) u3} D _inst_3 (CategoryTheory.Functor.{u1, u3, u4, u6} C _inst_2 E _inst_4) (CategoryTheory.Functor.category.{u1, u3, u4, u6} C _inst_2 E _inst_4)))) (CategoryTheory.Functor.toPrefunctor.{max (max u4 u5) u3, max (max u4 u5) u3, max (max (max (max (max u6 u4) u5) u3) u1) u2, max (max (max (max (max u6 u4) u5) u3) u1) u2} (CategoryTheory.Functor.{max u2 u1, u3, max u4 u5, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) E _inst_4) (CategoryTheory.Functor.category.{max u2 u1, u3, max u5 u4, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) E _inst_4) (CategoryTheory.Functor.{u2, max u4 u3, u5, max (max (max u6 u4) u3) u1} D _inst_3 (CategoryTheory.Functor.{u1, u3, u4, u6} C _inst_2 E _inst_4) (CategoryTheory.Functor.category.{u1, u3, u4, u6} C _inst_2 E _inst_4)) (CategoryTheory.Functor.category.{u2, max u4 u3, u5, max (max (max u4 u6) u1) u3} D _inst_3 (CategoryTheory.Functor.{u1, u3, u4, u6} C _inst_2 E _inst_4) (CategoryTheory.Functor.category.{u1, u3, u4, u6} C _inst_2 E _inst_4)) (CategoryTheory.curry.{u2, u1, u3, u5, u4, u6} D _inst_3 C _inst_2 E _inst_4)) (CategoryTheory.Functor.comp.{max u1 u2, max u1 u2, u3, max u4 u5, max u4 u5, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4 (CategoryTheory.Prod.swap.{u2, u1, u5, u4} D _inst_3 C _inst_2) (Prefunctor.obj.{max (max (succ u5) (succ u4)) (succ u3), max (max (succ u5) (succ u4)) (succ u3), max (max (max (max (max u6 u5) u4) u3) u2) u1, max (max (max (max (max u6 u5) u4) u3) u2) u1} (CategoryTheory.Functor.{u1, max u5 u3, u4, max (max (max u6 u5) u3) u2} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)) (CategoryTheory.CategoryStruct.toQuiver.{max (max u5 u4) u3, max (max (max (max (max u6 u5) u4) u3) u2) u1} (CategoryTheory.Functor.{u1, max u5 u3, u4, max (max (max u6 u5) u3) u2} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)) (CategoryTheory.Category.toCategoryStruct.{max (max u5 u4) u3, max (max (max (max (max u6 u5) u4) u3) u2) u1} (CategoryTheory.Functor.{u1, max u5 u3, u4, max (max (max u6 u5) u3) u2} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)) (CategoryTheory.Functor.category.{u1, max u5 u3, u4, max (max (max u5 u6) u2) u3} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)))) (CategoryTheory.Functor.{max u1 u2, u3, max u5 u4, u6} (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max (max u5 u4) u3, max (max (max (max (max u6 u5) u4) u3) u2) u1} (CategoryTheory.Functor.{max u1 u2, u3, max u5 u4, u6} (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4) (CategoryTheory.Category.toCategoryStruct.{max (max u5 u4) u3, max (max (max (max (max u6 u5) u4) u3) u2) u1} (CategoryTheory.Functor.{max u1 u2, u3, max u5 u4, u6} (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4) (CategoryTheory.Functor.category.{max u1 u2, u3, max u4 u5, u6} (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4))) (CategoryTheory.Functor.toPrefunctor.{max (max u5 u4) u3, max (max u5 u4) u3, max (max (max (max (max u6 u5) u4) u3) u2) u1, max (max (max (max (max u6 u5) u4) u3) u2) u1} (CategoryTheory.Functor.{u1, max u5 u3, u4, max (max (max u6 u5) u3) u2} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)) (CategoryTheory.Functor.category.{u1, max u5 u3, u4, max (max (max u5 u6) u2) u3} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)) (CategoryTheory.Functor.{max u1 u2, u3, max u5 u4, u6} (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4) (CategoryTheory.Functor.category.{max u1 u2, u3, max u4 u5, u6} (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4) (CategoryTheory.uncurry.{u1, u2, u3, u4, u5, u6} C _inst_2 D _inst_3 E _inst_4)) F)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.flip_iso_curry_swap_uncurry CategoryTheory.flipIsoCurrySwapUncurryₓ'. -/
 /-- `F.flip` is isomorphic to uncurrying `F`, swapping the variables, and currying. -/
 @[simps]
@@ -121,10 +118,7 @@ def flipIsoCurrySwapUncurry (F : C ⥤ D ⥤ E) : F.flip ≅ curry.obj (Prod.swa
 #align category_theory.flip_iso_curry_swap_uncurry CategoryTheory.flipIsoCurrySwapUncurry
 
 /- warning: category_theory.uncurry_obj_flip -> CategoryTheory.uncurryObjFlip is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u1, u4} C] {D : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} D] {E : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} E] (F : CategoryTheory.Functor.{u1, max u5 u3, u4, max u2 u3 u5 u6} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)), CategoryTheory.Iso.{max (max u5 u4) u3, max (max u2 u1) u3 (max u5 u4) u6} (CategoryTheory.Functor.{max u2 u1, u3, max u5 u4, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) E _inst_4) (CategoryTheory.Functor.category.{max u2 u1, u3, max u5 u4, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) E _inst_4) (CategoryTheory.Functor.obj.{max u5 u4 u3, max (max u5 u4) u3, max u2 (max u4 u3) u5 u1 u3 u4 u6, max (max u2 u1) u3 (max u5 u4) u6} (CategoryTheory.Functor.{u2, max u4 u3, u5, max u1 u3 u4 u6} D _inst_3 (CategoryTheory.Functor.{u1, u3, u4, u6} C _inst_2 E _inst_4) (CategoryTheory.Functor.category.{u1, u3, u4, u6} C _inst_2 E _inst_4)) (CategoryTheory.Functor.category.{u2, max u4 u3, u5, max u1 u3 u4 u6} D _inst_3 (CategoryTheory.Functor.{u1, u3, u4, u6} C _inst_2 E _inst_4) (CategoryTheory.Functor.category.{u1, u3, u4, u6} C _inst_2 E _inst_4)) (CategoryTheory.Functor.{max u2 u1, u3, max u5 u4, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) E _inst_4) (CategoryTheory.Functor.category.{max u2 u1, u3, max u5 u4, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) E _inst_4) (CategoryTheory.uncurry.{u2, u1, u3, u5, u4, u6} D _inst_3 C _inst_2 E _inst_4) (CategoryTheory.Functor.flip.{u1, u2, u3, u4, u5, u6} C _inst_2 D _inst_3 E _inst_4 F)) (CategoryTheory.Functor.comp.{max u2 u1, max u1 u2, u3, max u5 u4, max u4 u5, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4 (CategoryTheory.Prod.swap.{u2, u1, u5, u4} D _inst_3 C _inst_2) (CategoryTheory.Functor.obj.{max u4 u5 u3, max (max u4 u5) u3, max u1 (max u5 u3) u4 u2 u3 u5 u6, max (max u1 u2) u3 (max u4 u5) u6} (CategoryTheory.Functor.{u1, max u5 u3, u4, max u2 u3 u5 u6} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)) (CategoryTheory.Functor.category.{u1, max u5 u3, u4, max u2 u3 u5 u6} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)) (CategoryTheory.Functor.{max u1 u2, u3, max u4 u5, u6} (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4) (CategoryTheory.Functor.category.{max u1 u2, u3, max u4 u5, u6} (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4) (CategoryTheory.uncurry.{u1, u2, u3, u4, u5, u6} C _inst_2 D _inst_3 E _inst_4) F))
-but is expected to have type
-  forall {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u1, u4} C] {D : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} D] {E : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} E] (F : CategoryTheory.Functor.{u1, max u5 u3, u4, max (max (max u6 u5) u3) u2} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)), CategoryTheory.Iso.{max (max u4 u5) u3, max (max (max (max (max u6 u4) u5) u3) u1) u2} (CategoryTheory.Functor.{max u2 u1, u3, max u4 u5, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) E _inst_4) (CategoryTheory.Functor.category.{max u1 u2, u3, max u4 u5, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) E _inst_4) (Prefunctor.obj.{max (max (succ u4) (succ u5)) (succ u3), max (max (succ u4) (succ u5)) (succ u3), max (max (max (max (max u6 u4) u5) u3) u1) u2, max (max (max (max (max u6 u4) u5) u3) u1) u2} (CategoryTheory.Functor.{u2, max u4 u3, u5, max (max (max u6 u4) u3) u1} D _inst_3 (CategoryTheory.Functor.{u1, u3, u4, u6} C _inst_2 E _inst_4) (CategoryTheory.Functor.category.{u1, u3, u4, u6} C _inst_2 E _inst_4)) (CategoryTheory.CategoryStruct.toQuiver.{max (max u4 u5) u3, max (max (max (max (max u6 u4) u5) u3) u1) u2} (CategoryTheory.Functor.{u2, max u4 u3, u5, max (max (max u6 u4) u3) u1} D _inst_3 (CategoryTheory.Functor.{u1, u3, u4, u6} C _inst_2 E _inst_4) (CategoryTheory.Functor.category.{u1, u3, u4, u6} C _inst_2 E _inst_4)) (CategoryTheory.Category.toCategoryStruct.{max (max u4 u5) u3, max (max (max (max (max u6 u4) u5) u3) u1) u2} (CategoryTheory.Functor.{u2, max u4 u3, u5, max (max (max u6 u4) u3) u1} D _inst_3 (CategoryTheory.Functor.{u1, u3, u4, u6} C _inst_2 E _inst_4) (CategoryTheory.Functor.category.{u1, u3, u4, u6} C _inst_2 E _inst_4)) (CategoryTheory.Functor.category.{u2, max u4 u3, u5, max (max (max u4 u6) u1) u3} D _inst_3 (CategoryTheory.Functor.{u1, u3, u4, u6} C _inst_2 E _inst_4) (CategoryTheory.Functor.category.{u1, u3, u4, u6} C _inst_2 E _inst_4)))) (CategoryTheory.Functor.{max u2 u1, u3, max u4 u5, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) E _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max (max u4 u5) u3, max (max (max (max (max u6 u4) u5) u3) u1) u2} (CategoryTheory.Functor.{max u2 u1, u3, max u4 u5, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) E _inst_4) (CategoryTheory.Category.toCategoryStruct.{max (max u4 u5) u3, max (max (max (max (max u6 u4) u5) u3) u1) u2} (CategoryTheory.Functor.{max u2 u1, u3, max u4 u5, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) E _inst_4) (CategoryTheory.Functor.category.{max u2 u1, u3, max u5 u4, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) E _inst_4))) (CategoryTheory.Functor.toPrefunctor.{max (max u4 u5) u3, max (max u4 u5) u3, max (max (max (max (max u6 u4) u5) u3) u1) u2, max (max (max (max (max u6 u4) u5) u3) u1) u2} (CategoryTheory.Functor.{u2, max u4 u3, u5, max (max (max u6 u4) u3) u1} D _inst_3 (CategoryTheory.Functor.{u1, u3, u4, u6} C _inst_2 E _inst_4) (CategoryTheory.Functor.category.{u1, u3, u4, u6} C _inst_2 E _inst_4)) (CategoryTheory.Functor.category.{u2, max u4 u3, u5, max (max (max u4 u6) u1) u3} D _inst_3 (CategoryTheory.Functor.{u1, u3, u4, u6} C _inst_2 E _inst_4) (CategoryTheory.Functor.category.{u1, u3, u4, u6} C _inst_2 E _inst_4)) (CategoryTheory.Functor.{max u2 u1, u3, max u4 u5, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) E _inst_4) (CategoryTheory.Functor.category.{max u2 u1, u3, max u5 u4, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) E _inst_4) (CategoryTheory.uncurry.{u2, u1, u3, u5, u4, u6} D _inst_3 C _inst_2 E _inst_4)) (CategoryTheory.Functor.flip.{u1, u2, u3, u4, u5, u6} C _inst_2 D _inst_3 E _inst_4 F)) (CategoryTheory.Functor.comp.{max u1 u2, max u1 u2, u3, max u4 u5, max u4 u5, u6} (Prod.{u5, u4} D C) (CategoryTheory.prod.{u2, u1, u5, u4} D _inst_3 C _inst_2) (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4 (CategoryTheory.Prod.swap.{u2, u1, u5, u4} D _inst_3 C _inst_2) (Prefunctor.obj.{max (max (succ u5) (succ u4)) (succ u3), max (max (succ u5) (succ u4)) (succ u3), max (max (max (max (max u6 u5) u4) u3) u2) u1, max (max (max (max (max u6 u5) u4) u3) u2) u1} (CategoryTheory.Functor.{u1, max u5 u3, u4, max (max (max u6 u5) u3) u2} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)) (CategoryTheory.CategoryStruct.toQuiver.{max (max u5 u4) u3, max (max (max (max (max u6 u5) u4) u3) u2) u1} (CategoryTheory.Functor.{u1, max u5 u3, u4, max (max (max u6 u5) u3) u2} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)) (CategoryTheory.Category.toCategoryStruct.{max (max u5 u4) u3, max (max (max (max (max u6 u5) u4) u3) u2) u1} (CategoryTheory.Functor.{u1, max u5 u3, u4, max (max (max u6 u5) u3) u2} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)) (CategoryTheory.Functor.category.{u1, max u5 u3, u4, max (max (max u5 u6) u2) u3} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)))) (CategoryTheory.Functor.{max u1 u2, u3, max u5 u4, u6} (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max (max u5 u4) u3, max (max (max (max (max u6 u5) u4) u3) u2) u1} (CategoryTheory.Functor.{max u1 u2, u3, max u5 u4, u6} (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4) (CategoryTheory.Category.toCategoryStruct.{max (max u5 u4) u3, max (max (max (max (max u6 u5) u4) u3) u2) u1} (CategoryTheory.Functor.{max u1 u2, u3, max u5 u4, u6} (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4) (CategoryTheory.Functor.category.{max u1 u2, u3, max u4 u5, u6} (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4))) (CategoryTheory.Functor.toPrefunctor.{max (max u5 u4) u3, max (max u5 u4) u3, max (max (max (max (max u6 u5) u4) u3) u2) u1, max (max (max (max (max u6 u5) u4) u3) u2) u1} (CategoryTheory.Functor.{u1, max u5 u3, u4, max (max (max u6 u5) u3) u2} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)) (CategoryTheory.Functor.category.{u1, max u5 u3, u4, max (max (max u5 u6) u2) u3} C _inst_2 (CategoryTheory.Functor.{u2, u3, u5, u6} D _inst_3 E _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} D _inst_3 E _inst_4)) (CategoryTheory.Functor.{max u1 u2, u3, max u5 u4, u6} (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4) (CategoryTheory.Functor.category.{max u1 u2, u3, max u4 u5, u6} (Prod.{u4, u5} C D) (CategoryTheory.prod.{u1, u2, u4, u5} C _inst_2 D _inst_3) E _inst_4) (CategoryTheory.uncurry.{u1, u2, u3, u4, u5, u6} C _inst_2 D _inst_3 E _inst_4)) F))
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.uncurry_obj_flip CategoryTheory.uncurryObjFlipₓ'. -/
 /-- The uncurrying of `F.flip` is isomorphic to
 swapping the factors followed by the uncurrying of `F`. -/

Changes in mathlib4

mathlib3
mathlib4
chore: reduce imports (#9830)

This uses the improved shake script from #9772 to reduce imports across mathlib. The corresponding noshake.json file has been added to #9772.

Co-authored-by: Mario Carneiro <di.gama@gmail.com>

Diff
@@ -3,7 +3,7 @@ Copyright (c) 2017 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 -/
-import Mathlib.CategoryTheory.Products.Bifunctor
+import Mathlib.CategoryTheory.Products.Basic
 
 #align_import category_theory.functor.currying from "leanprover-community/mathlib"@"369525b73f229ccd76a6ec0e0e0bf2be57599768"
 
chore: space after (#8178)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -54,13 +54,13 @@ def curryObj (F : C × D ⥤ E) : C ⥤ D ⥤ E
   obj X :=
     { obj := fun Y => F.obj (X, Y)
       map := fun g => F.map (𝟙 X, g)
-      map_id := fun Y => by simp only [F.map_id]; rw [←prod_id]; exact F.map_id ⟨X,Y⟩
-      map_comp := fun f g => by simp [←F.map_comp]}
+      map_id := fun Y => by simp only [F.map_id]; rw [← prod_id]; exact F.map_id ⟨X,Y⟩
+      map_comp := fun f g => by simp [← F.map_comp]}
   map f :=
     { app := fun Y => F.map (f, 𝟙 Y)
-      naturality := fun {Y} {Y'} g => by simp [←F.map_comp] }
+      naturality := fun {Y} {Y'} g => by simp [← F.map_comp] }
   map_id := fun X => by ext Y; exact F.map_id _
-  map_comp := fun f g => by ext Y; dsimp; simp [←F.map_comp]
+  map_comp := fun f g => by ext Y; dsimp; simp [← F.map_comp]
 #align category_theory.curry_obj CategoryTheory.curryObj
 
 /-- The currying functor, taking a functor `(C × D) ⥤ E` and producing a functor `C ⥤ (D ⥤ E)`.
@@ -88,7 +88,7 @@ def currying : C ⥤ D ⥤ E ≌ C × D ⥤ E :=
     (NatIso.ofComponents fun F =>
         NatIso.ofComponents fun X => NatIso.ofComponents fun Y => Iso.refl _)
     (NatIso.ofComponents fun F => NatIso.ofComponents (fun X => eqToIso (by simp))
-      (by intros X Y f; cases X; cases Y; cases f; dsimp at *; rw [←F.map_comp]; simp))
+      (by intros X Y f; cases X; cases Y; cases f; dsimp at *; rw [← F.map_comp]; simp))
 #align category_theory.currying CategoryTheory.currying
 
 /-- `F.flip` is isomorphic to uncurrying `F`, swapping the variables, and currying. -/
feat(CategoryTheory): the localized category of a product category (#8516)

This PR develops the API for cartesian products of categories (natural isomorphisms, equivalences, morphism properties) in order to show that under simple assumptions, the localized category of a product of two categories identifies to a product of the localized categories.

Diff
@@ -19,10 +19,10 @@ and verify that they provide an equivalence of categories
 
 namespace CategoryTheory
 
-universe v₁ v₂ v₃ v₄ u₁ u₂ u₃ u₄
+universe v₁ v₂ v₃ v₄ v₅ u₁ u₂ u₃ u₄ u₅
 
 variable {B : Type u₁} [Category.{v₁} B] {C : Type u₂} [Category.{v₂} C] {D : Type u₃}
-  [Category.{v₃} D] {E : Type u₄} [Category.{v₄} E]
+  [Category.{v₃} D] {E : Type u₄} [Category.{v₄} E] {H : Type u₅} [Category.{v₅} H]
 
 /-- The uncurrying functor, taking a functor `C ⥤ (D ⥤ E)` and producing a functor `(C × D) ⥤ E`.
 -/
@@ -115,4 +115,44 @@ def whiskeringRight₂ : (C ⥤ D ⥤ E) ⥤ (B ⥤ C) ⥤ (B ⥤ D) ⥤ B ⥤ E
     whiskeringRight _ _ _ ⋙ (whiskeringLeft _ _ _).obj (prodFunctorToFunctorProd _ _ _) ⋙ curry
 #align category_theory.whiskering_right₂ CategoryTheory.whiskeringRight₂
 
+namespace Functor
+
+variable {B C D E}
+
+lemma uncurry_obj_curry_obj (F : B × C ⥤ D) : uncurry.obj (curry.obj F) = F :=
+  Functor.ext (by simp) (fun ⟨x₁, x₂⟩ ⟨y₁, y₂⟩ ⟨f₁, f₂⟩ => by
+    dsimp
+    simp only [← F.map_comp, Category.id_comp, Category.comp_id, prod_comp])
+
+lemma curry_obj_injective {F₁ F₂ : C × D ⥤ E} (h : curry.obj F₁ = curry.obj F₂) :
+    F₁ = F₂ := by
+  rw [← uncurry_obj_curry_obj F₁, ← uncurry_obj_curry_obj F₂, h]
+
+lemma curry_obj_uncurry_obj (F : B ⥤ C ⥤ D) : curry.obj (uncurry.obj F) = F :=
+  Functor.ext (fun _ => Functor.ext (by simp) (by simp)) (by aesop_cat)
+
+lemma uncurry_obj_injective {F₁ F₂ : B ⥤ C ⥤ D} (h : uncurry.obj F₁ = uncurry.obj F₂) :
+    F₁ = F₂ := by
+  rw [← curry_obj_uncurry_obj F₁, ← curry_obj_uncurry_obj F₂, h]
+
+lemma flip_flip (F : B ⥤ C ⥤ D) : F.flip.flip = F := rfl
+
+lemma flip_injective {F₁ F₂ : B ⥤ C ⥤ D} (h : F₁.flip = F₂.flip) :
+    F₁ = F₂ := by
+  rw [← flip_flip F₁, ← flip_flip F₂, h]
+
+lemma uncurry_obj_curry_obj_flip_flip (F₁ : B ⥤ C) (F₂ : D ⥤ E) (G : C × E ⥤ H) :
+    uncurry.obj (F₂ ⋙ (F₁ ⋙ curry.obj G).flip).flip = (F₁.prod F₂) ⋙ G :=
+  Functor.ext (by simp) (fun ⟨x₁, x₂⟩ ⟨y₁, y₂⟩ ⟨f₁, f₂⟩ => by
+    dsimp
+    simp only [Category.id_comp, Category.comp_id, ← G.map_comp, prod_comp])
+
+lemma uncurry_obj_curry_obj_flip_flip' (F₁ : B ⥤ C) (F₂ : D ⥤ E) (G : C × E ⥤ H) :
+    uncurry.obj (F₁ ⋙ (F₂ ⋙ (curry.obj G).flip).flip) = (F₁.prod F₂) ⋙ G :=
+  Functor.ext (by simp) (fun ⟨x₁, x₂⟩ ⟨y₁, y₂⟩ ⟨f₁, f₂⟩ => by
+    dsimp
+    simp only [Category.id_comp, Category.comp_id, ← G.map_comp, prod_comp])
+
+end Functor
+
 end CategoryTheory
chore: cleanup some spaces (#7484)

Purely cosmetic PR.

Diff
@@ -88,7 +88,7 @@ def currying : C ⥤ D ⥤ E ≌ C × D ⥤ E :=
     (NatIso.ofComponents fun F =>
         NatIso.ofComponents fun X => NatIso.ofComponents fun Y => Iso.refl _)
     (NatIso.ofComponents fun F => NatIso.ofComponents (fun X => eqToIso (by simp))
-      (by intros X Y f; cases X; cases Y; cases f; dsimp at *; rw [←F.map_comp]; simp ))
+      (by intros X Y f; cases X; cases Y; cases f; dsimp at *; rw [←F.map_comp]; simp))
 #align category_theory.currying CategoryTheory.currying
 
 /-- `F.flip` is isomorphic to uncurrying `F`, swapping the variables, and currying. -/
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2017 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
-
-! This file was ported from Lean 3 source module category_theory.functor.currying
-! leanprover-community/mathlib commit 369525b73f229ccd76a6ec0e0e0bf2be57599768
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.CategoryTheory.Products.Bifunctor
 
+#align_import category_theory.functor.currying from "leanprover-community/mathlib"@"369525b73f229ccd76a6ec0e0e0bf2be57599768"
+
 /-!
 # Curry and uncurry, as functors.
 
chore: cleanup whitespace (#5988)

Grepping for [^ .:{-] [^ :] and reviewing the results. Once I started I couldn't stop. :-)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -61,7 +61,7 @@ def curryObj (F : C × D ⥤ E) : C ⥤ D ⥤ E
       map_comp := fun f g => by simp [←F.map_comp]}
   map f :=
     { app := fun Y => F.map (f, 𝟙 Y)
-      naturality := fun {Y} {Y'} g => by simp [←F.map_comp]  }
+      naturality := fun {Y} {Y'} g => by simp [←F.map_comp] }
   map_id := fun X => by ext Y; exact F.map_id _
   map_comp := fun f g => by ext Y; dsimp; simp [←F.map_comp]
 #align category_theory.curry_obj CategoryTheory.curryObj
chore: review of automation in category theory (#4793)

Clean up of automation in the category theory library. Leaving out unnecessary proof steps, or fields done by aesop_cat, and making more use of available autoparameters.

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au>

Diff
@@ -88,28 +88,23 @@ def curry : (C × D ⥤ E) ⥤ C ⥤ D ⥤ E where
 @[simps!]
 def currying : C ⥤ D ⥤ E ≌ C × D ⥤ E :=
   Equivalence.mk uncurry curry
-    (NatIso.ofComponents
-      (fun F =>
-        NatIso.ofComponents (fun X => NatIso.ofComponents (fun Y => Iso.refl _) (by aesop_cat))
-          (by aesop_cat))
-      (by aesop_cat))
-    (NatIso.ofComponents (fun F => NatIso.ofComponents (fun X => eqToIso (by simp))
+    (NatIso.ofComponents fun F =>
+        NatIso.ofComponents fun X => NatIso.ofComponents fun Y => Iso.refl _)
+    (NatIso.ofComponents fun F => NatIso.ofComponents (fun X => eqToIso (by simp))
       (by intros X Y f; cases X; cases Y; cases f; dsimp at *; rw [←F.map_comp]; simp ))
-      (by aesop_cat))
 #align category_theory.currying CategoryTheory.currying
 
 /-- `F.flip` is isomorphic to uncurrying `F`, swapping the variables, and currying. -/
 @[simps!]
 def flipIsoCurrySwapUncurry (F : C ⥤ D ⥤ E) : F.flip ≅ curry.obj (Prod.swap _ _ ⋙ uncurry.obj F) :=
-  NatIso.ofComponents (fun d => NatIso.ofComponents (fun c => Iso.refl _)
-    (by aesop_cat)) (by aesop_cat)
+  NatIso.ofComponents fun d => NatIso.ofComponents fun c => Iso.refl _
 #align category_theory.flip_iso_curry_swap_uncurry CategoryTheory.flipIsoCurrySwapUncurry
 
 /-- The uncurrying of `F.flip` is isomorphic to
 swapping the factors followed by the uncurrying of `F`. -/
 @[simps!]
 def uncurryObjFlip (F : C ⥤ D ⥤ E) : uncurry.obj F.flip ≅ Prod.swap _ _ ⋙ uncurry.obj F :=
-  NatIso.ofComponents (fun p => Iso.refl _) (by aesop_cat)
+  NatIso.ofComponents fun p => Iso.refl _
 #align category_theory.uncurry_obj_flip CategoryTheory.uncurryObjFlip
 
 variable (B C D E)
chore: bye-bye, solo bys! (#3825)

This PR puts, with one exception, every single remaining by that lies all by itself on its own line to the previous line, thus matching the current behaviour of start-port.sh. The exception is when the by begins the second or later argument to a tuple or anonymous constructor; see https://github.com/leanprover-community/mathlib4/pull/3825#discussion_r1186702599.

Essentially this is s/\n *by$/ by/g, but with manual editing to satisfy the linter's max-100-char-line requirement. The Python style linter is also modified to catch these "isolated bys".

Diff
@@ -35,16 +35,14 @@ def uncurry : (C ⥤ D ⥤ E) ⥤ C × D ⥤ E
   obj F :=
     { obj := fun X => (F.obj X.1).obj X.2
       map := fun {X} {Y} f => (F.map f.1).app X.2 ≫ (F.obj Y.1).map f.2
-      map_comp := fun f g =>
-        by
+      map_comp := fun f g => by
         simp only [prod_comp_fst, prod_comp_snd, Functor.map_comp, NatTrans.comp_app,
           Category.assoc]
         slice_lhs 2 3 => rw [← NatTrans.naturality]
         rw [Category.assoc] }
   map T :=
     { app := fun X => (T.app X.1).app X.2
-      naturality := fun X Y f =>
-        by
+      naturality := fun X Y f => by
         simp only [prod_comp_fst, prod_comp_snd, Category.comp_id, Category.assoc, Functor.map_id,
           Functor.map_comp, NatTrans.id_app, NatTrans.comp_app]
         slice_lhs 2 3 => rw [NatTrans.naturality]
chore: strip trailing spaces in lean files (#2828)

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,

image

Diff
@@ -58,14 +58,14 @@ def curryObj (F : C × D ⥤ E) : C ⥤ D ⥤ E
     where
   obj X :=
     { obj := fun Y => F.obj (X, Y)
-      map := fun g => F.map (𝟙 X, g) 
+      map := fun g => F.map (𝟙 X, g)
       map_id := fun Y => by simp only [F.map_id]; rw [←prod_id]; exact F.map_id ⟨X,Y⟩
-      map_comp := fun f g => by simp [←F.map_comp]} 
-  map f := 
-    { app := fun Y => F.map (f, 𝟙 Y) 
+      map_comp := fun f g => by simp [←F.map_comp]}
+  map f :=
+    { app := fun Y => F.map (f, 𝟙 Y)
       naturality := fun {Y} {Y'} g => by simp [←F.map_comp]  }
-  map_id := fun X => by ext Y; exact F.map_id _  
-  map_comp := fun f g => by ext Y; dsimp; simp [←F.map_comp] 
+  map_id := fun X => by ext Y; exact F.map_id _
+  map_comp := fun f g => by ext Y; dsimp; simp [←F.map_comp]
 #align category_theory.curry_obj CategoryTheory.curryObj
 
 /-- The currying functor, taking a functor `(C × D) ⥤ E` and producing a functor `C ⥤ (D ⥤ E)`.
@@ -95,7 +95,7 @@ def currying : C ⥤ D ⥤ E ≌ C × D ⥤ E :=
         NatIso.ofComponents (fun X => NatIso.ofComponents (fun Y => Iso.refl _) (by aesop_cat))
           (by aesop_cat))
       (by aesop_cat))
-    (NatIso.ofComponents (fun F => NatIso.ofComponents (fun X => eqToIso (by simp)) 
+    (NatIso.ofComponents (fun F => NatIso.ofComponents (fun X => eqToIso (by simp))
       (by intros X Y f; cases X; cases Y; cases f; dsimp at *; rw [←F.map_comp]; simp ))
       (by aesop_cat))
 #align category_theory.currying CategoryTheory.currying
@@ -103,7 +103,7 @@ def currying : C ⥤ D ⥤ E ≌ C × D ⥤ E :=
 /-- `F.flip` is isomorphic to uncurrying `F`, swapping the variables, and currying. -/
 @[simps!]
 def flipIsoCurrySwapUncurry (F : C ⥤ D ⥤ E) : F.flip ≅ curry.obj (Prod.swap _ _ ⋙ uncurry.obj F) :=
-  NatIso.ofComponents (fun d => NatIso.ofComponents (fun c => Iso.refl _) 
+  NatIso.ofComponents (fun d => NatIso.ofComponents (fun c => Iso.refl _)
     (by aesop_cat)) (by aesop_cat)
 #align category_theory.flip_iso_curry_swap_uncurry CategoryTheory.flipIsoCurrySwapUncurry
 
feat: port CategoryTheory.Functor.Currying (#2298)

Co-authored-by: Johan Commelin <johan@commelin.net>

Dependencies 16

17 files ported (100.0%)
4138 lines ported (100.0%)

All dependencies are ported!