category_theory.functor.currying
⟷
Mathlib.CategoryTheory.Functor.Currying
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)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -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.
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -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"
@@ -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. -/
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.
@@ -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
@@ -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. -/
@@ -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.
@@ -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
@@ -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)
by
s! (#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 by
s".
@@ -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]
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,
@@ -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
All dependencies are ported!