category_theory.monoidal.types.basicMathlib.CategoryTheory.Monoidal.Types.Basic

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)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -28,11 +28,9 @@ universe v u
 
 namespace CategoryTheory
 
-#print CategoryTheory.typesMonoidal /-
 instance typesMonoidal : MonoidalCategory.{u} (Type u) :=
   monoidalOfChosenFiniteProducts Types.terminalLimitCone Types.binaryProductLimitCone
 #align category_theory.types_monoidal CategoryTheory.typesMonoidal
--/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
Diff
@@ -3,10 +3,10 @@ Copyright (c) 2018 Michael Jendrusch. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Michael Jendrusch, Scott Morrison
 -/
-import Mathbin.CategoryTheory.Monoidal.Functor
-import Mathbin.CategoryTheory.Monoidal.OfChosenFiniteProducts.Basic
-import Mathbin.CategoryTheory.Limits.Shapes.Types
-import Mathbin.Logic.Equiv.Fin
+import CategoryTheory.Monoidal.Functor
+import CategoryTheory.Monoidal.OfChosenFiniteProducts.Basic
+import CategoryTheory.Limits.Shapes.Types
+import Logic.Equiv.Fin
 
 #align_import category_theory.monoidal.types.basic from "leanprover-community/mathlib"@"33c67ae661dd8988516ff7f247b0be3018cdd952"
 
Diff
@@ -2,17 +2,14 @@
 Copyright (c) 2018 Michael Jendrusch. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Michael Jendrusch, Scott Morrison
-
-! This file was ported from Lean 3 source module category_theory.monoidal.types.basic
-! leanprover-community/mathlib commit 33c67ae661dd8988516ff7f247b0be3018cdd952
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.CategoryTheory.Monoidal.Functor
 import Mathbin.CategoryTheory.Monoidal.OfChosenFiniteProducts.Basic
 import Mathbin.CategoryTheory.Limits.Shapes.Types
 import Mathbin.Logic.Equiv.Fin
 
+#align_import category_theory.monoidal.types.basic from "leanprover-community/mathlib"@"33c67ae661dd8988516ff7f247b0be3018cdd952"
+
 /-!
 # The category of types is a monoidal category
 
Diff
@@ -108,6 +108,7 @@ theorem associator_inv_apply {X Y Z : Type u} {x : X} {y : Y} {z : Z} :
 -/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print CategoryTheory.MonoidalFunctor.mapPi /-
 -- We don't yet have an API for tensor products indexed by finite ordered types,
 -- but it would be nice to state how monoidal functors preserve these.
 /-- If `F` is a monoidal functor out of `Type`, it takes the (n+1)st cartesian power
@@ -117,6 +118,7 @@ noncomputable def MonoidalFunctor.mapPi {C : Type _} [Category C] [MonoidalCateg
     F.obj (Fin (n + 1) → β) ≅ F.obj β ⊗ F.obj (Fin n → β) :=
   Functor.mapIso _ (Equiv.piFinSucc n β).toIso ≪≫ (asIso (F.μ β (Fin n → β))).symm
 #align category_theory.monoidal_functor.map_pi CategoryTheory.MonoidalFunctor.mapPi
+-/
 
 end CategoryTheory
 
Diff
@@ -107,12 +107,6 @@ theorem associator_inv_apply {X Y Z : Type u} {x : X} {y : Y} {z : Z} :
 #align category_theory.associator_inv_apply CategoryTheory.associator_inv_apply
 -/
 
-/- warning: category_theory.monoidal_functor.map_pi -> CategoryTheory.MonoidalFunctor.mapPi is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u2, u1} C _inst_1] (F : CategoryTheory.MonoidalFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2) (n : Nat) (β : Type.{u3}), CategoryTheory.Iso.{u2, u1} C _inst_1 (CategoryTheory.Functor.obj.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} C _inst_1 (CategoryTheory.LaxMonoidalFunctor.toFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 (CategoryTheory.MonoidalFunctor.toLaxMonoidalFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 F)) ((Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> β)) (CategoryTheory.MonoidalCategory.tensorObj.{u2, u1} C _inst_1 _inst_2 (CategoryTheory.Functor.obj.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} C _inst_1 (CategoryTheory.LaxMonoidalFunctor.toFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 (CategoryTheory.MonoidalFunctor.toLaxMonoidalFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 F)) β) (CategoryTheory.Functor.obj.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} C _inst_1 (CategoryTheory.LaxMonoidalFunctor.toFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 (CategoryTheory.MonoidalFunctor.toLaxMonoidalFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 F)) ((Fin n) -> β)))
-but is expected to have type
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u2, u1} C _inst_1] (F : CategoryTheory.MonoidalFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2) (n : Nat) (β : Type.{u3}), CategoryTheory.Iso.{u2, u1} C _inst_1 (Prefunctor.obj.{succ u3, succ u2, succ u3, u1} Type.{u3} (CategoryTheory.CategoryStruct.toQuiver.{u3, succ u3} Type.{u3} (CategoryTheory.Category.toCategoryStruct.{u3, succ u3} Type.{u3} CategoryTheory.types.{u3})) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} C _inst_1 (CategoryTheory.LaxMonoidalFunctor.toFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 (CategoryTheory.MonoidalFunctor.toLaxMonoidalFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 F))) ((Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> β)) (CategoryTheory.MonoidalCategory.tensorObj.{u2, u1} C _inst_1 _inst_2 (Prefunctor.obj.{succ u3, succ u2, succ u3, u1} Type.{u3} (CategoryTheory.CategoryStruct.toQuiver.{u3, succ u3} Type.{u3} (CategoryTheory.Category.toCategoryStruct.{u3, succ u3} Type.{u3} CategoryTheory.types.{u3})) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} C _inst_1 (CategoryTheory.LaxMonoidalFunctor.toFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 (CategoryTheory.MonoidalFunctor.toLaxMonoidalFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 F))) β) (Prefunctor.obj.{succ u3, succ u2, succ u3, u1} Type.{u3} (CategoryTheory.CategoryStruct.toQuiver.{u3, succ u3} Type.{u3} (CategoryTheory.Category.toCategoryStruct.{u3, succ u3} Type.{u3} CategoryTheory.types.{u3})) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} C _inst_1 (CategoryTheory.LaxMonoidalFunctor.toFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 (CategoryTheory.MonoidalFunctor.toLaxMonoidalFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 F))) ((Fin n) -> β)))
-Case conversion may be inaccurate. Consider using '#align category_theory.monoidal_functor.map_pi CategoryTheory.MonoidalFunctor.mapPiₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 -- We don't yet have an API for tensor products indexed by finite ordered types,
 -- but it would be nice to state how monoidal functors preserve these.
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Michael Jendrusch, Scott Morrison
 
 ! This file was ported from Lean 3 source module category_theory.monoidal.types.basic
-! leanprover-community/mathlib commit 95a87616d63b3cb49d3fe678d416fbe9c4217bf4
+! leanprover-community/mathlib commit 33c67ae661dd8988516ff7f247b0be3018cdd952
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.Logic.Equiv.Fin
 
 /-!
 # The category of types is a monoidal category
+
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
 -/
 
 
Diff
@@ -28,66 +28,88 @@ universe v u
 
 namespace CategoryTheory
 
+#print CategoryTheory.typesMonoidal /-
 instance typesMonoidal : MonoidalCategory.{u} (Type u) :=
   monoidalOfChosenFiniteProducts Types.terminalLimitCone Types.binaryProductLimitCone
 #align category_theory.types_monoidal CategoryTheory.typesMonoidal
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print CategoryTheory.tensor_apply /-
 @[simp]
 theorem tensor_apply {W X Y Z : Type u} (f : W ⟶ X) (g : Y ⟶ Z) (p : W ⊗ Y) :
     (f ⊗ g) p = (f p.1, g p.2) :=
   rfl
 #align category_theory.tensor_apply CategoryTheory.tensor_apply
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print CategoryTheory.leftUnitor_hom_apply /-
 @[simp]
 theorem leftUnitor_hom_apply {X : Type u} {x : X} {p : PUnit} :
     ((λ_ X).Hom : 𝟙_ (Type u) ⊗ X → X) (p, x) = x :=
   rfl
 #align category_theory.left_unitor_hom_apply CategoryTheory.leftUnitor_hom_apply
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print CategoryTheory.leftUnitor_inv_apply /-
 @[simp]
 theorem leftUnitor_inv_apply {X : Type u} {x : X} :
     ((λ_ X).inv : X ⟶ 𝟙_ (Type u) ⊗ X) x = (PUnit.unit, x) :=
   rfl
 #align category_theory.left_unitor_inv_apply CategoryTheory.leftUnitor_inv_apply
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print CategoryTheory.rightUnitor_hom_apply /-
 @[simp]
 theorem rightUnitor_hom_apply {X : Type u} {x : X} {p : PUnit} :
     ((ρ_ X).Hom : X ⊗ 𝟙_ (Type u) → X) (x, p) = x :=
   rfl
 #align category_theory.right_unitor_hom_apply CategoryTheory.rightUnitor_hom_apply
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print CategoryTheory.rightUnitor_inv_apply /-
 @[simp]
 theorem rightUnitor_inv_apply {X : Type u} {x : X} :
     ((ρ_ X).inv : X ⟶ X ⊗ 𝟙_ (Type u)) x = (x, PUnit.unit) :=
   rfl
 #align category_theory.right_unitor_inv_apply CategoryTheory.rightUnitor_inv_apply
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print CategoryTheory.associator_hom_apply /-
 @[simp]
 theorem associator_hom_apply {X Y Z : Type u} {x : X} {y : Y} {z : Z} :
     ((α_ X Y Z).Hom : (X ⊗ Y) ⊗ Z → X ⊗ Y ⊗ Z) ((x, y), z) = (x, (y, z)) :=
   rfl
 #align category_theory.associator_hom_apply CategoryTheory.associator_hom_apply
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print CategoryTheory.associator_inv_apply /-
 @[simp]
 theorem associator_inv_apply {X Y Z : Type u} {x : X} {y : Y} {z : Z} :
     ((α_ X Y Z).inv : X ⊗ Y ⊗ Z → (X ⊗ Y) ⊗ Z) (x, (y, z)) = ((x, y), z) :=
   rfl
 #align category_theory.associator_inv_apply CategoryTheory.associator_inv_apply
+-/
 
+/- warning: category_theory.monoidal_functor.map_pi -> CategoryTheory.MonoidalFunctor.mapPi is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u2, u1} C _inst_1] (F : CategoryTheory.MonoidalFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2) (n : Nat) (β : Type.{u3}), CategoryTheory.Iso.{u2, u1} C _inst_1 (CategoryTheory.Functor.obj.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} C _inst_1 (CategoryTheory.LaxMonoidalFunctor.toFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 (CategoryTheory.MonoidalFunctor.toLaxMonoidalFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 F)) ((Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) -> β)) (CategoryTheory.MonoidalCategory.tensorObj.{u2, u1} C _inst_1 _inst_2 (CategoryTheory.Functor.obj.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} C _inst_1 (CategoryTheory.LaxMonoidalFunctor.toFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 (CategoryTheory.MonoidalFunctor.toLaxMonoidalFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 F)) β) (CategoryTheory.Functor.obj.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} C _inst_1 (CategoryTheory.LaxMonoidalFunctor.toFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 (CategoryTheory.MonoidalFunctor.toLaxMonoidalFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 F)) ((Fin n) -> β)))
+but is expected to have type
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u2, u1} C _inst_1] (F : CategoryTheory.MonoidalFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2) (n : Nat) (β : Type.{u3}), CategoryTheory.Iso.{u2, u1} C _inst_1 (Prefunctor.obj.{succ u3, succ u2, succ u3, u1} Type.{u3} (CategoryTheory.CategoryStruct.toQuiver.{u3, succ u3} Type.{u3} (CategoryTheory.Category.toCategoryStruct.{u3, succ u3} Type.{u3} CategoryTheory.types.{u3})) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} C _inst_1 (CategoryTheory.LaxMonoidalFunctor.toFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 (CategoryTheory.MonoidalFunctor.toLaxMonoidalFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 F))) ((Fin (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1)))) -> β)) (CategoryTheory.MonoidalCategory.tensorObj.{u2, u1} C _inst_1 _inst_2 (Prefunctor.obj.{succ u3, succ u2, succ u3, u1} Type.{u3} (CategoryTheory.CategoryStruct.toQuiver.{u3, succ u3} Type.{u3} (CategoryTheory.Category.toCategoryStruct.{u3, succ u3} Type.{u3} CategoryTheory.types.{u3})) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} C _inst_1 (CategoryTheory.LaxMonoidalFunctor.toFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 (CategoryTheory.MonoidalFunctor.toLaxMonoidalFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 F))) β) (Prefunctor.obj.{succ u3, succ u2, succ u3, u1} Type.{u3} (CategoryTheory.CategoryStruct.toQuiver.{u3, succ u3} Type.{u3} (CategoryTheory.Category.toCategoryStruct.{u3, succ u3} Type.{u3} CategoryTheory.types.{u3})) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} C _inst_1 (CategoryTheory.LaxMonoidalFunctor.toFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 (CategoryTheory.MonoidalFunctor.toLaxMonoidalFunctor.{u3, u2, succ u3, u1} Type.{u3} CategoryTheory.types.{u3} CategoryTheory.typesMonoidal.{u3} C _inst_1 _inst_2 F))) ((Fin n) -> β)))
+Case conversion may be inaccurate. Consider using '#align category_theory.monoidal_functor.map_pi CategoryTheory.MonoidalFunctor.mapPiₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 -- We don't yet have an API for tensor products indexed by finite ordered types,
 -- but it would be nice to state how monoidal functors preserve these.
Diff
@@ -3,17 +3,18 @@ Copyright (c) 2018 Michael Jendrusch. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Michael Jendrusch, Scott Morrison
 
-! This file was ported from Lean 3 source module category_theory.monoidal.types
-! leanprover-community/mathlib commit 3225926b9f2c1e31b4d4329aec72f69555270282
+! This file was ported from Lean 3 source module category_theory.monoidal.types.basic
+! leanprover-community/mathlib commit 95a87616d63b3cb49d3fe678d416fbe9c4217bf4
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
-import Mathbin.CategoryTheory.Monoidal.OfChosenFiniteProducts
+import Mathbin.CategoryTheory.Monoidal.Functor
+import Mathbin.CategoryTheory.Monoidal.OfChosenFiniteProducts.Basic
 import Mathbin.CategoryTheory.Limits.Shapes.Types
 import Mathbin.Logic.Equiv.Fin
 
 /-!
-# The category of types is a symmetric monoidal category
+# The category of types is a monoidal category
 -/
 
 
@@ -31,10 +32,6 @@ instance typesMonoidal : MonoidalCategory.{u} (Type u) :=
   monoidalOfChosenFiniteProducts Types.terminalLimitCone Types.binaryProductLimitCone
 #align category_theory.types_monoidal CategoryTheory.typesMonoidal
 
-instance typesSymmetric : SymmetricCategory.{u} (Type u) :=
-  symmetricOfChosenFiniteProducts Types.terminalLimitCone Types.binaryProductLimitCone
-#align category_theory.types_symmetric CategoryTheory.typesSymmetric
-
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 @[simp]
@@ -91,56 +88,12 @@ theorem associator_inv_apply {X Y Z : Type u} {x : X} {y : Y} {z : Z} :
   rfl
 #align category_theory.associator_inv_apply CategoryTheory.associator_inv_apply
 
-/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-@[simp]
-theorem braiding_hom_apply {X Y : Type u} {x : X} {y : Y} :
-    ((β_ X Y).Hom : X ⊗ Y → Y ⊗ X) (x, y) = (y, x) :=
-  rfl
-#align category_theory.braiding_hom_apply CategoryTheory.braiding_hom_apply
-
-/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-@[simp]
-theorem braiding_inv_apply {X Y : Type u} {x : X} {y : Y} :
-    ((β_ X Y).inv : Y ⊗ X → X ⊗ Y) (y, x) = (x, y) :=
-  rfl
-#align category_theory.braiding_inv_apply CategoryTheory.braiding_inv_apply
-
-open Opposite
-
-open MonoidalCategory
-
-/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-/-- `(𝟙_ C ⟶ -)` is a lax monoidal functor to `Type`. -/
-def coyonedaTensorUnit (C : Type u) [Category.{v} C] [MonoidalCategory C] :
-    LaxMonoidalFunctor C (Type v) :=
-  { coyoneda.obj (op (𝟙_ C)) with
-    ε := fun p => 𝟙 _
-    μ := fun X Y p => (λ_ (𝟙_ C)).inv ≫ (p.1 ⊗ p.2)
-    μ_natural' := by tidy
-    associativity' := fun X Y Z => by
-      ext ⟨⟨f, g⟩, h⟩; dsimp at f g h
-      dsimp; simp only [iso.cancel_iso_inv_left, category.assoc]
-      conv_lhs =>
-        rw [← category.id_comp h, tensor_comp, category.assoc, associator_naturality, ←
-          category.assoc, unitors_inv_equal, triangle_assoc_comp_right_inv]
-      conv_rhs => rw [← category.id_comp f, tensor_comp]
-    left_unitality' := by tidy
-    right_unitality' := fun X => by
-      ext ⟨f, ⟨⟩⟩; dsimp at f
-      dsimp; simp only [category.assoc]
-      rw [right_unitor_naturality, unitors_inv_equal, iso.inv_hom_id_assoc] }
-#align category_theory.coyoneda_tensor_unit CategoryTheory.coyonedaTensorUnit
-
-noncomputable section
-
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 -- We don't yet have an API for tensor products indexed by finite ordered types,
 -- but it would be nice to state how monoidal functors preserve these.
 /-- If `F` is a monoidal functor out of `Type`, it takes the (n+1)st cartesian power
 of a type to the image of that type, tensored with the image of the nth cartesian power. -/
-def MonoidalFunctor.mapPi {C : Type _} [Category C] [MonoidalCategory C]
+noncomputable def MonoidalFunctor.mapPi {C : Type _} [Category C] [MonoidalCategory C]
     (F : MonoidalFunctor (Type _) C) (n : ℕ) (β : Type _) :
     F.obj (Fin (n + 1) → β) ≅ F.obj β ⊗ F.obj (Fin n → β) :=
   Functor.mapIso _ (Equiv.piFinSucc n β).toIso ≪≫ (asIso (F.μ β (Fin n → β))).symm

Changes in mathlib4

mathlib3
mathlib4
feat: chosen finite products in a category (#11248)

This PR introduces a class for categories with explicit choices of binary products and terminal objects, and introduces the associated (Cartesian) symmetric monoidal instance. The primary use of this class is to be able to define internal algebraic objects in categories with chosen finite products, while retaining good definitional properties of the products in question, primarily as a convenience.

We introduce an instance of this new class for the category of types where the binary product is the usual type-theoretic product and the terminal object is PUnit. Future work will introduce an instance for other categories, especially the category of affine schemes which should make objects like group schemes more convenient.

NOTE: In some sense this reverses the refactor done in https://github.com/leanprover-community/mathlib/pull/3995 but only in the particular case of binary products and terminal objects. Working with (nonexplicit) (co)limits is still the preferred way to work with (co)limits in abstract categories, and instances of ChosenFiniteProducts (and other similar classes which may be introduced in the future) should be carefully considered before they are introduced.

Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Michael Jendrusch, Scott Morrison
 -/
 import Mathlib.CategoryTheory.Monoidal.Functor
-import Mathlib.CategoryTheory.Monoidal.OfChosenFiniteProducts.Basic
+import Mathlib.CategoryTheory.ChosenFiniteProducts
 import Mathlib.CategoryTheory.Limits.Shapes.Types
 import Mathlib.Logic.Equiv.Fin
 
@@ -23,9 +23,9 @@ universe v u
 
 namespace CategoryTheory
 
-noncomputable instance typesMonoidal : MonoidalCategory.{u} (Type u) :=
-  monoidalOfChosenFiniteProducts Types.terminalLimitCone Types.binaryProductLimitCone
-#align category_theory.types_monoidal CategoryTheory.typesMonoidal
+instance typesChosenFiniteProducts : ChosenFiniteProducts (Type u) where
+  product := Types.binaryProductLimitCone
+  terminal := Types.terminalLimitCone
 
 @[simp]
 theorem tensor_apply {W X Y Z : Type u} (f : W ⟶ X) (g : Y ⟶ Z) (p : W ⊗ Y) :
feat(CategoryTheory/Monoidal): add lemmas for whiskering operators (#8191)

Extracted from #6307 as suggested in https://github.com/leanprover-community/mathlib4/pull/6307#discussion_r1371849810 .


Open in Gitpod

Diff
@@ -33,6 +33,16 @@ theorem tensor_apply {W X Y Z : Type u} (f : W ⟶ X) (g : Y ⟶ Z) (p : W ⊗ Y
   rfl
 #align category_theory.tensor_apply CategoryTheory.tensor_apply
 
+@[simp]
+theorem whiskerLeft_apply (X : Type u) {Y Z : Type u} (f : Y ⟶ Z) (p : X ⊗ Y) :
+    (X ◁ f) p = (p.1, f p.2) :=
+  rfl
+
+@[simp]
+theorem whiskerRight_apply {Y Z : Type u} (f : Y ⟶ Z) (X : Type u) (p : Y ⊗ X) :
+    (f ▷ X) p = (f p.1, p.2) :=
+  rfl
+
 @[simp]
 theorem leftUnitor_hom_apply {X : Type u} {x : X} {p : PUnit} :
     ((λ_ X).hom : 𝟙_ (Type u) ⊗ X → X) (p, x) = x :=
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -73,8 +73,8 @@ theorem associator_inv_apply {X Y Z : Type u} {x : X} {y : Y} {z : Z} :
 -- but it would be nice to state how monoidal functors preserve these.
 /-- If `F` is a monoidal functor out of `Type`, it takes the (n+1)st cartesian power
 of a type to the image of that type, tensored with the image of the nth cartesian power. -/
-noncomputable def MonoidalFunctor.mapPi {C : Type _} [Category C] [MonoidalCategory C]
-    (F : MonoidalFunctor (Type _) C) (n : ℕ) (β : Type _) :
+noncomputable def MonoidalFunctor.mapPi {C : Type*} [Category C] [MonoidalCategory C]
+    (F : MonoidalFunctor (Type _) C) (n : ℕ) (β : Type*) :
     F.obj (Fin (n + 1) → β) ≅ F.obj β ⊗ F.obj (Fin n → β) :=
   Functor.mapIso _ (Equiv.piFinSucc n β).toIso ≪≫ (asIso (F.μ β (Fin n → β))).symm
 #align category_theory.monoidal_functor.map_pi CategoryTheory.MonoidalFunctor.mapPi
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,17 +2,14 @@
 Copyright (c) 2018 Michael Jendrusch. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Michael Jendrusch, Scott Morrison
-
-! This file was ported from Lean 3 source module category_theory.monoidal.types.basic
-! leanprover-community/mathlib commit 95a87616d63b3cb49d3fe678d416fbe9c4217bf4
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.CategoryTheory.Monoidal.Functor
 import Mathlib.CategoryTheory.Monoidal.OfChosenFiniteProducts.Basic
 import Mathlib.CategoryTheory.Limits.Shapes.Types
 import Mathlib.Logic.Equiv.Fin
 
+#align_import category_theory.monoidal.types.basic from "leanprover-community/mathlib"@"95a87616d63b3cb49d3fe678d416fbe9c4217bf4"
+
 /-!
 # The category of types is a monoidal category
 -/
feat: port CategoryTheory.Bicategory.CoherenceTactic (#4610)

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

Diff
@@ -18,9 +18,7 @@ import Mathlib.Logic.Equiv.Fin
 -/
 
 
-open CategoryTheory
-
-open CategoryTheory.Limits
+open CategoryTheory Limits MonoidalCategory
 
 open Tactic
 
feat: port CategoryTheory.Monoidal.Types.Basic (#4121)

Dependencies 2 + 242

243 files ported (99.2%)
101828 lines ported (99.9%)
Show graph

The unported dependencies are