aboutsummaryrefslogtreecommitdiff
path: root/NaturalTransformation/Monoidal/Construction/CMonoidValued.agda
blob: 3005ee7bcc1a6d2645d25a2366ce9b19bb1e5a5a (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
60
61
{-# OPTIONS --without-K --safe #-}

open import Categories.Category using (Category)
open import Categories.Category.Cocartesian using (Cocartesian)
open import Category.Construction.CMonoids using (CMonoids)
open import Categories.Category.Monoidal.Bundle using (SymmetricMonoidalCategory)
open import Categories.Functor using (Functor) renaming (_∘F_ to _∙_)
open import Categories.NaturalTransformation using (NaturalTransformation; _∘ˡ_)
open import Level using (Level)

-- A natural transformation between functors F, G
-- from a cocartesian category 𝒞 to CMonoids[S]
-- can be turned into a symmetric monoidal natural transformation
-- between symmetric monoidal functors F′ G′ from 𝒞 to S

module NaturalTransformation.Monoidal.Construction.CMonoidValued
    {o o′  ℓ′ e e′ : Level}
    {𝒞 : Category o  e}
    (𝒞-+ : Cocartesian 𝒞)
    {S : SymmetricMonoidalCategory o′ ℓ′ e′}
    (let module S = SymmetricMonoidalCategory S)
    {M N : Functor 𝒞 (CMonoids S.symmetric)}
    (α : NaturalTransformation M N)
  where

import Functor.Monoidal.Construction.CMonoidValued 𝒞-+ {S = S} as FamilyOfCMonoids
import NaturalTransformation.Monoidal.Construction.MonoidValued as MonoidValued

open import Categories.Category.Construction.Monoids using (Monoids)
open import Functor.Forgetful.Instance.CMonoid S.symmetric using (Forget)

module _ where
  open import Categories.NaturalTransformation.Monoidal using (module Lax)
  open Lax using (MonoidalNaturalTransformation) public

module _ where
  open import Categories.NaturalTransformation.Monoidal.Symmetric using (module Lax)
  open Lax using (SymmetricMonoidalNaturalTransformation) public

private

  module M = Functor M
  module N = Functor N
  open FamilyOfCMonoids M using (F,⊗,ε,σ)
  open FamilyOfCMonoids N using () renaming (F,⊗,ε,σ to G,⊗,ε,σ)

  F : Functor 𝒞 (Monoids S.monoidal)
  F = Forget  M

  G : Functor 𝒞 (Monoids S.monoidal)
  G = Forget  N

  β : NaturalTransformation F G
  β = Forget ∘ˡ α

open MonoidValued 𝒞-+ β using (β,⊗,ε)

β,⊗,ε,σ : SymmetricMonoidalNaturalTransformation F,⊗,ε,σ G,⊗,ε,σ
β,⊗,ε,σ = record { MonoidalNaturalTransformation β,⊗,ε }

module β,⊗,ε,σ = SymmetricMonoidalNaturalTransformation β,⊗,ε,σ