Skip to content

Commit 6b6133e

Browse files
committed
feat(CategoryTheory): some API for transporting monoidal morphism properties (#31345)
1 parent c4848a1 commit 6b6133e

File tree

3 files changed

+37
-6
lines changed

3 files changed

+37
-6
lines changed

Mathlib/CategoryTheory/Localization/Monoidal/Basic.lean

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,14 @@ class IsMonoidal : Prop extends W.IsMultiplicative where
4040
whiskerLeft (X : C) {Y₁ Y₂ : C} (g : Y₁ ⟶ Y₂) (hg : W g) : W (X ◁ g)
4141
whiskerRight {X₁ X₂ : C} (f : X₁ ⟶ X₂) (hf : W f) (Y : C) : W (f ▷ Y)
4242

43+
/-- Alternative constructor for `W.IsMonoidal` given that `W` is multiplicative and stable under
44+
tensoring morphisms. -/
45+
lemma IsMonoidal.mk' [W.IsMultiplicative]
46+
(h : ∀ {X₁ X₂ Y₁ Y₂ : C} (f : X₁ ⟶ X₂) (g : Y₁ ⟶ Y₂) (_ : W f) (_ : W g), W (f ⊗ₘ g)) :
47+
W.IsMonoidal where
48+
whiskerLeft X _ _ g hg := by simpa using h (𝟙 X) g (W.id_mem _) hg
49+
whiskerRight f hf Y := by simpa using h f (𝟙 Y) hf (W.id_mem _)
50+
4351
variable [W.IsMonoidal]
4452

4553
lemma whiskerLeft_mem (X : C) {Y₁ Y₂ : C} (g : Y₁ ⟶ Y₂) (hg : W g) : W (X ◁ g) :=
@@ -53,6 +61,16 @@ lemma tensorHom_mem {X₁ X₂ : C} (f : X₁ ⟶ X₂) {Y₁ Y₂ : C} (g : Y
5361
rw [tensorHom_def]
5462
exact comp_mem _ _ _ (whiskerRight_mem _ _ hf _) (whiskerLeft_mem _ _ _ hg)
5563

64+
/-- The inverse image under a monoidal functor of a monoidal morphism property which respects
65+
isomorphisms is monoidal. -/
66+
instance {C' : Type*} [Category C'] [MonoidalCategory C'] (F : C' ⥤ C) [F.Monoidal]
67+
[W.RespectsIso] : (W.inverseImage F).IsMonoidal := .mk' _ fun f g hf hg ↦ by
68+
simp only [inverseImage_iff] at hf hg ⊢
69+
rw [Functor.Monoidal.map_tensor _ f g]
70+
apply MorphismProperty.RespectsIso.precomp
71+
apply MorphismProperty.RespectsIso.postcomp
72+
exact tensorHom_mem _ _ _ hf hg
73+
5674
end MorphismProperty
5775

5876
/-- Given a monoidal category `C`, a localization functor `L : C ⥤ D` with respect

Mathlib/CategoryTheory/Monoidal/FunctorCategory.lean

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,4 +225,9 @@ instance {C D E : Type*} [Category C] [Category D] [Category E] [MonoidalCategor
225225
@[deprecated (since := "2025-11-06")] alias η_app := Functor.OplaxMonoidal.whiskeringRight_η_app
226226
@[deprecated (since := "2025-11-06")] alias δ_app := Functor.OplaxMonoidal.whiskeringRight_δ_app
227227

228+
@[simps!]
229+
instance Functor.Monoidal.whiskeringLeft (E : Type*) [Category E] [MonoidalCategory E] (F : C ⥤ D) :
230+
((whiskeringLeft _ _ E).obj F).Monoidal :=
231+
CoreMonoidal.toMonoidal { εIso := Iso.refl _, μIso _ _ := Iso.refl _ }
232+
228233
end CategoryTheory

Mathlib/CategoryTheory/Sites/Monoidal.lean

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Authors: Joël Riou
66

77
import Mathlib.CategoryTheory.Closed.FunctorCategory.Basic
88
import Mathlib.CategoryTheory.Localization.Monoidal.Braided
9-
import Mathlib.CategoryTheory.Sites.Localization
9+
import Mathlib.CategoryTheory.Sites.Equivalence
1010
import Mathlib.CategoryTheory.Sites.SheafHom
1111

1212
/-!
@@ -29,12 +29,12 @@ chosen finite products.
2929
3030
-/
3131

32-
universe v v' u u'
32+
universe v₁ v₂ v₃ u₁ u₂ u₃
3333

3434
namespace CategoryTheory
3535

36-
variable {C : Type u'} [Category.{v'} C] {J : GrothendieckTopology C}
37-
{A : Type u} [Category.{v} A] [MonoidalCategory A]
36+
variable {C : Type u} [Category.{v} C] {J : GrothendieckTopology C}
37+
{A : Type u} [Category.{v} A] [MonoidalCategory A]
3838

3939
open Opposite Limits MonoidalCategory MonoidalClosed Enriched.FunctorCategory
4040

@@ -107,12 +107,20 @@ end Presheaf
107107

108108
namespace GrothendieckTopology
109109

110+
namespace W
111+
112+
variable (J A) in
113+
lemma transport_isMonoidal {D : Type u₂} [Category.{v₂} D] (K : GrothendieckTopology D)
114+
(G : D ⥤ C) [G.IsCoverDense J] [G.Full] [G.IsContinuous K J]
115+
[(G.sheafPushforwardContinuous A K J).EssSurj] [(K.W (A := A)).IsMonoidal] :
116+
(J.W (A := A)).IsMonoidal := by
117+
rw [← J.W_inverseImage_whiskeringLeft K G]
118+
infer_instance
119+
110120
variable [MonoidalClosed A]
111121
[∀ (F₁ F₂ : Cᵒᵖ ⥤ A), HasFunctorEnrichedHom A F₁ F₂]
112122
[∀ (F₁ F₂ : Cᵒᵖ ⥤ A), HasEnrichedHom A F₁ F₂]
113123

114-
namespace W
115-
116124
open MonoidalClosed.FunctorCategory
117125

118126
lemma whiskerLeft {G₁ G₂ : Cᵒᵖ ⥤ A} {g : G₁ ⟶ G₂} (hg : J.W g) (F : Cᵒᵖ ⥤ A) :

0 commit comments

Comments
 (0)