@@ -10,9 +10,12 @@ open import Categories.Category.Product
1010open import Categories.Category.Monoidal
1111
1212open import Categories.Functor hiding (id)
13+ open import Categories.Functor.Properties using ([_]-resp-≅)
1314open import Categories.NaturalTransformation hiding (id)
1415open import Categories.NaturalTransformation.NaturalIsomorphism
1516
17+ import Categories.Category.Construction.Core as Core
18+ import Categories.Category.Monoidal.Utilities as ⊗-Utilities
1619import Categories.Morphism as Mor
1720
1821private
@@ -72,6 +75,11 @@ module _ (C : MonoidalCategory o ℓ e) (D : MonoidalCategory o′ ℓ′ e′)
7275 open Functor F public
7376 open IsMonoidalFunctor isMonoidal public
7477
78+ module _ (C : MonoidalCategory o ℓ e) (D : MonoidalCategory o′ ℓ′ e′) where
79+ private
80+ module C = MonoidalCategory C
81+ module D = MonoidalCategory D
82+ open Mor D.U
7583
7684 -- strong monoidal functor
7785 record IsStrongMonoidalFunctor (F : Functor C.U D.U) : Set (o ⊔ ℓ ⊔ ℓ′ ⊔ e′) where
@@ -113,15 +121,61 @@ module _ (C : MonoidalCategory o ℓ e) (D : MonoidalCategory o′ ℓ′ e′)
113121 ≈ unitorʳ.from
114122 ⟩
115123
116- isMonoidal : IsMonoidalFunctor F
117- isMonoidal = record
124+ isLaxMonoidal : IsMonoidalFunctor C D F
125+ isLaxMonoidal = record
118126 { ε = ε.from
119127 ; ⊗-homo = ⊗-homo.F⇒G
120128 ; associativity = associativity
121129 ; unitaryˡ = unitaryˡ
122130 ; unitaryʳ = unitaryʳ
123131 }
124132
133+ private
134+
135+ module F = Functor F
136+
137+ φ : {X Y : C.Obj} → F₀ X ⊗₀ F₀ Y ≅ F₀ (X C.⊗₀ Y)
138+ φ = ⊗-homo.FX≅GX
139+
140+ Fα : {X Y Z : C.Obj} → F₀ ((X C.⊗₀ Y) C.⊗₀ Z) ≅ F₀ (X C.⊗₀ (Y C.⊗₀ Z))
141+ Fα = [ F ]-resp-≅ C.associator
142+
143+ Fλ : {X : C.Obj} → F₀ (C.unit C.⊗₀ X) ≅ F₀ X
144+ Fλ = [ F ]-resp-≅ C.unitorˡ
145+
146+ Fρ : {X : C.Obj} → F₀ (X C.⊗₀ C.unit) ≅ F₀ X
147+ Fρ = [ F ]-resp-≅ C.unitorʳ
148+
149+ α : {A B C : Obj} → (A ⊗₀ B) ⊗₀ C ≅ A ⊗₀ (B ⊗₀ C)
150+ α = D.associator
151+
152+ λ- : {A : Obj} → unit ⊗₀ A ≅ A
153+ λ- = D.unitorˡ
154+
155+ ρ : {A : Obj} → A ⊗₀ unit ≅ A
156+ ρ = D.unitorʳ
157+
158+ open ⊗-Utilities monoidal using (_⊗ᵢ_)
159+ open Core.Shorthands U using (⌞_⌟; to-≈; _∘ᵢ_; idᵢ; _≈ᵢ_)
160+
161+ associativityᵢ : {X Y Z : C.Obj} → Fα {X} {Y} {Z} ∘ᵢ φ ∘ᵢ φ ⊗ᵢ idᵢ ≈ᵢ φ ∘ᵢ idᵢ ⊗ᵢ φ ∘ᵢ α
162+ associativityᵢ = ⌞ associativity ⌟
163+
164+ unitaryˡᵢ : {X : C.Obj} → Fλ {X} ∘ᵢ φ ∘ᵢ ε ⊗ᵢ idᵢ ≈ᵢ λ-
165+ unitaryˡᵢ = ⌞ unitaryˡ ⌟
166+
167+ unitaryʳᵢ : {X : C.Obj} → Fρ {X} ∘ᵢ φ ∘ᵢ idᵢ ⊗ᵢ ε ≈ᵢ ρ
168+ unitaryʳᵢ = ⌞ unitaryʳ ⌟
169+
170+ isOplaxMonoidal : IsMonoidalFunctor C.op D.op F.op
171+ isOplaxMonoidal = record
172+ { ε = ε.to
173+ ; ⊗-homo = ⊗-homo.⇐.op
174+ ; associativity = to-≈ associativityᵢ
175+ ; unitaryˡ = to-≈ unitaryˡᵢ
176+ ; unitaryʳ = to-≈ unitaryʳᵢ
177+ }
178+
125179 record StrongMonoidalFunctor : Set (o ⊔ ℓ ⊔ e ⊔ o′ ⊔ ℓ′ ⊔ e′) where
126180 field
127181 F : Functor C.U D.U
@@ -130,5 +184,5 @@ module _ (C : MonoidalCategory o ℓ e) (D : MonoidalCategory o′ ℓ′ e′)
130184 open Functor F public
131185 open IsStrongMonoidalFunctor isStrongMonoidal public
132186
133- monoidalFunctor : MonoidalFunctor
134- monoidalFunctor = record { F = F ; isMonoidal = isMonoidal }
187+ monoidalFunctor : MonoidalFunctor C D
188+ monoidalFunctor = record { F = F ; isMonoidal = isLaxMonoidal }
0 commit comments