aboutsummaryrefslogtreecommitdiff
path: root/Category/Construction/SymmetricMonoidalFunctors.agda
blob: b5bf13525ee9b15856184490c84ee369c95ea4dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
{-# OPTIONS --without-K --safe #-}

open import Categories.Category.Monoidal.Bundle using (SymmetricMonoidalCategory)

module Category.Construction.SymmetricMonoidalFunctors
    {o ℓ e o′ ℓ′ e′}
    (C : SymmetricMonoidalCategory o ℓ e)
    (D : SymmetricMonoidalCategory o′ ℓ′ e′)
  where

-- The functor category for a given pair of symmetric monoidal categories

open import Level using (_⊔_)
open import Relation.Binary.Construct.On using (isEquivalence)
open import Categories.Category using (Category)
open import Categories.Category.Helper using (categoryHelper)
open import Categories.Functor.Monoidal.Symmetric using () renaming (module Lax to Lax₁; module Strong to Strong₁)
open import Categories.NaturalTransformation.Monoidal.Symmetric using () renaming (module Lax to Lax₂; module Strong to Strong₂)
open import Categories.NaturalTransformation.Equivalence using (_≃_; ≃-isEquivalence)

open SymmetricMonoidalCategory D

module Lax where

  open Lax₂.SymmetricMonoidalNaturalTransformation using (U)

  SymmetricMonoidalFunctors
      : Category (o ⊔ ℓ ⊔ e ⊔ o′ ⊔ ℓ′ ⊔ e′) (o ⊔ ℓ ⊔ ℓ′ ⊔ e′) (o ⊔ e′)
  SymmetricMonoidalFunctors = categoryHelper record
      { Obj = Lax₁.SymmetricMonoidalFunctor C D
      ; _⇒_ = Lax₂.SymmetricMonoidalNaturalTransformation
      ; _≈_ = λ α β → U α ≃ U β
      ; id  = Lax₂.id
      ; _∘_ = Lax₂._∘ᵥ_
      ; assoc = assoc
      ; identityˡ = identityˡ
      ; identityʳ = identityʳ
      ; equiv = isEquivalence U ≃-isEquivalence
      ; ∘-resp-≈ = λ α₁≈β₁ α₂≈β₂ → ∘-resp-≈ α₁≈β₁ α₂≈β₂
      }

module Strong where

  open Strong₂.SymmetricMonoidalNaturalTransformation using (U)

  SymmetricMonoidalFunctors
      : Category (o ⊔ ℓ ⊔ e ⊔ o′ ⊔ ℓ′ ⊔ e′) (o ⊔ ℓ ⊔ ℓ′ ⊔ e′) (o ⊔ e′)
  SymmetricMonoidalFunctors = categoryHelper record
      { Obj = Strong₁.SymmetricMonoidalFunctor C D
      ; _⇒_ = Strong₂.SymmetricMonoidalNaturalTransformation
      ; _≈_ = λ α β → U α ≃ U β
      ; id = Strong₂.id
      ; _∘_ = Strong₂._∘ᵥ_
      ; assoc = assoc
      ; identityˡ = identityˡ
      ; identityʳ = identityʳ
      ; equiv = isEquivalence U ≃-isEquivalence
      ; ∘-resp-≈ = λ α₁≈β₁ α₂≈β₂ → ∘-resp-≈ α₁≈β₁ α₂≈β₂
      }