Skip to content

Commit 72ba594

Browse files
Split monoidal functor properties into multiple files
1 parent 59daad2 commit 72ba594

File tree

7 files changed

+240
-203
lines changed

7 files changed

+240
-203
lines changed
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
{-# OPTIONS --without-K --safe #-}
2+
3+
module Categories.Functor.Monoidal.Braided.Properties where
4+
5+
open import Categories.Functor.Monoidal.Braided using (module Lax; module Strong)
6+
import Categories.Category.Monoidal.Utilities as ⊗-Util
7+
import Categories.Category.Monoidal.Braided.Properties as B-Properties
8+
9+
open import Level
10+
open import Data.Product using (_,_)
11+
open import Categories.Functor.Monoidal.Properties using (idF-IsStrongMonoidal; ∘-IsMonoidal; ∘-IsStrongMonoidal)
12+
open import Categories.Category.Monoidal.Bundle using (BraidedMonoidalCategory)
13+
open import Categories.Functor using (Functor; _∘F_) renaming (id to idF)
14+
open import Categories.Functor.Properties using ([_]-resp-square)
15+
import Categories.Morphism.Reasoning as MR
16+
17+
private
18+
variable
19+
o o′ o″ ℓ ℓ′ ℓ″ e e′ e″ : Level
20+
21+
private
22+
23+
module WithShorthands (C : BraidedMonoidalCategory o ℓ e) where
24+
open BraidedMonoidalCategory C public
25+
open B-Properties braided using (module Shorthands)
26+
open Shorthands public
27+
28+
module _
29+
{C : BraidedMonoidalCategory o ℓ e}
30+
{D : BraidedMonoidalCategory o′ ℓ′ e′}
31+
(let module C = BraidedMonoidalCategory C)
32+
(let module D = BraidedMonoidalCategory D)
33+
{F : Functor C.U D.U}
34+
where
35+
36+
module LaxShorthands (F-IsMonoidal : Lax.IsBraidedMonoidalFunctor C D F) where
37+
open Functor F public
38+
open Lax.IsBraidedMonoidalFunctor F-IsMonoidal public
39+
open BraidedMonoidalCategory D
40+
φ : {X Y : C.Obj} F₀ X ⊗₀ F₀ Y ⇒ F₀ (X C.⊗₀ Y)
41+
φ {X} {Y} = ⊗-homo.η (X , Y)
42+
43+
module StrongShorthands (F-IsStrongMonoidal : Strong.IsBraidedMonoidalFunctor C D F) where
44+
open Functor F public
45+
open Strong.IsBraidedMonoidalFunctor F-IsStrongMonoidal public
46+
open BraidedMonoidalCategory D
47+
φ⇒ : {X Y : C.Obj} F₀ X ⊗₀ F₀ Y ⇒ F₀ (X C.⊗₀ Y)
48+
φ⇒ {X} {Y} = ⊗-homo.⇒.η (X , Y)
49+
φ⇐ : {X Y : C.Obj} F₀ (X C.⊗₀ Y) ⇒ F₀ X ⊗₀ F₀ Y
50+
φ⇐ {X} {Y} = ⊗-homo.⇐.η (X , Y)
51+
52+
-- The identity functor is braided monoidal
53+
54+
module _ (C : BraidedMonoidalCategory o ℓ e) where
55+
56+
idF-IsStrongBraidedMonoidal : Strong.IsBraidedMonoidalFunctor C C idF
57+
idF-IsStrongBraidedMonoidal = record
58+
{ isStrongMonoidal = idF-IsStrongMonoidal monoidalCategory
59+
; braiding-compat = MR.id-comm U
60+
}
61+
where open BraidedMonoidalCategory C
62+
63+
idF-IsBraidedMonoidal : Lax.IsBraidedMonoidalFunctor C C idF
64+
idF-IsBraidedMonoidal =
65+
Strong.IsBraidedMonoidalFunctor.isLaxBraidedMonoidal idF-IsStrongBraidedMonoidal
66+
67+
idF-StrongBraidedMonoidal : Strong.BraidedMonoidalFunctor C C
68+
idF-StrongBraidedMonoidal = record { isBraidedMonoidal = idF-IsStrongBraidedMonoidal }
69+
70+
idF-BraidedMonoidal : Lax.BraidedMonoidalFunctor C C
71+
idF-BraidedMonoidal = record { isBraidedMonoidal = idF-IsBraidedMonoidal }
72+
73+
-- Functor composition preserves braided monoidality
74+
75+
module _ {A : BraidedMonoidalCategory o ℓ e}
76+
{B : BraidedMonoidalCategory o′ ℓ′ e′}
77+
{C : BraidedMonoidalCategory o″ ℓ″ e″} where
78+
79+
private
80+
module A = WithShorthands A
81+
module B = WithShorthands B
82+
module C = WithShorthands C
83+
84+
∘-IsBraidedMonoidal : {G : Functor B.U C.U} {F : Functor A.U B.U}
85+
Lax.IsBraidedMonoidalFunctor B C G
86+
Lax.IsBraidedMonoidalFunctor A B F
87+
Lax.IsBraidedMonoidalFunctor A C (G ∘F F)
88+
∘-IsBraidedMonoidal {G} {F} GB FB = record
89+
{ isMonoidal = ∘-IsMonoidal _ _ _ G.isMonoidal F.isMonoidal
90+
; braiding-compat = B-compat
91+
}
92+
where
93+
open C
94+
open HomReasoning
95+
open MR C.U
96+
module F = LaxShorthands FB
97+
module G = LaxShorthands GB
98+
B-compat : {X Y : A.Obj} G.₁ (F.₁ (A.σ⇒ {X} {Y})) ∘ G.₁ F.φ ∘ G.φ ≈ (G.₁ F.φ ∘ G.φ) ∘ σ⇒
99+
B-compat = begin
100+
G.₁ (F.₁ A.σ⇒) ∘ G.₁ F.φ ∘ G.φ ≈⟨ extendʳ ([ G ]-resp-square F.braiding-compat) ⟩
101+
G.₁ F.φ ∘ G.₁ B.σ⇒ ∘ G.φ ≈⟨ pushʳ G.braiding-compat ⟩
102+
(G.₁ F.φ ∘ G.φ) ∘ σ⇒ ∎
103+
104+
∘-IsStrongBraidedMonoidal : {G : Functor B.U C.U} {F : Functor A.U B.U}
105+
Strong.IsBraidedMonoidalFunctor B C G
106+
Strong.IsBraidedMonoidalFunctor A B F
107+
Strong.IsBraidedMonoidalFunctor A C (G ∘F F)
108+
∘-IsStrongBraidedMonoidal {G} {F} GB FB = record
109+
{ isStrongMonoidal =
110+
∘-IsStrongMonoidal _ _ _ (isStrongMonoidal GB) (isStrongMonoidal FB)
111+
; braiding-compat =
112+
Lax.IsBraidedMonoidalFunctor.braiding-compat
113+
(∘-IsBraidedMonoidal (isLaxBraidedMonoidal GB) (isLaxBraidedMonoidal FB))
114+
}
115+
where open Strong.IsBraidedMonoidalFunctor
116+
117+
∘-BraidedMonoidal : Lax.BraidedMonoidalFunctor B C
118+
Lax.BraidedMonoidalFunctor A B
119+
Lax.BraidedMonoidalFunctor A C
120+
∘-BraidedMonoidal G F = record
121+
{ isBraidedMonoidal =
122+
∘-IsBraidedMonoidal (isBraidedMonoidal G) (isBraidedMonoidal F)
123+
}
124+
where open Lax.BraidedMonoidalFunctor hiding (F)
125+
126+
∘-StrongBraidedMonoidal : Strong.BraidedMonoidalFunctor B C
127+
Strong.BraidedMonoidalFunctor A B
128+
Strong.BraidedMonoidalFunctor A C
129+
∘-StrongBraidedMonoidal G F = record
130+
{ isBraidedMonoidal =
131+
∘-IsStrongBraidedMonoidal (isBraidedMonoidal G) (isBraidedMonoidal F)
132+
}
133+
where open Strong.BraidedMonoidalFunctor hiding (F)

0 commit comments

Comments
 (0)