|
| 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