aboutsummaryrefslogtreecommitdiff
path: root/Functor/Monoidal/Strong/Properties.agda
blob: 55d3cdb9d2f6157c8b632c1c1cb9a924ad2acc50 (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
62
63
{-# OPTIONS --without-K --safe #-}

open import Level using (Level)
open import Categories.Category.Monoidal using (MonoidalCategory)
open import Categories.Functor.Monoidal using (StrongMonoidalFunctor)

module Functor.Monoidal.Strong.Properties
  {o o′  ℓ′ e e′ : Level}
  {C : MonoidalCategory o  e}
  {D : MonoidalCategory o′ ℓ′ e′}
  (F,φ,ε : StrongMonoidalFunctor C D) where

import Categories.Category.Monoidal.Utilities as ⊗-Utilities
import Categories.Category.Construction.Core as Core

open import Categories.Functor.Monoidal using (StrongMonoidalFunctor)
open import Categories.Functor.Properties using ([_]-resp-≅)

module C where
  open MonoidalCategory C public
  open ⊗-Utilities.Shorthands monoidal public using (α⇐)

module D where
  open MonoidalCategory D public
  open ⊗-Utilities.Shorthands monoidal using (α⇐) public
  open Core.Shorthands U using (_∘ᵢ_; idᵢ; _≈ᵢ_; ⌞_⌟; to-≈; _≅_; module HomReasoningᵢ) public
  open ⊗-Utilities monoidal using (_⊗ᵢ_) public

open D

open StrongMonoidalFunctor F,φ,ε

private

  variable
    X Y Z : C.Obj

   : F₀ ((X C.⊗₀ Y) C.⊗₀ Z)  F₀ (X C.⊗₀ (Y C.⊗₀ Z))
   = [ F ]-resp-≅ C.associator

  α : {A B C : D.Obj}  (A ⊗₀ B) ⊗₀ C  A ⊗₀ (B ⊗₀ C)
  α = associator

  φ : F₀ X ⊗₀ F₀ Y  F₀ (X C.⊗₀ Y)
  φ = ⊗-homo.FX≅GX

  φ⇒ : F₀ X ⊗₀ F₀ Y  F₀ (X C.⊗₀ Y)
  φ⇒ = ⊗-homo.⇒.η _

  φ⇐ : F₀ (X C.⊗₀ Y)  F₀ X ⊗₀ F₀ Y
  φ⇐ = ⊗-homo.⇐.η _

associativityᵢ :  {X} {Y} {Z} ∘ᵢ φ ∘ᵢ φ ⊗ᵢ idᵢ ≈ᵢ φ ∘ᵢ idᵢ ⊗ᵢ φ ∘ᵢ α
associativityᵢ =  associativity associativity-inv : φ⇐ ⊗₁ id  φ⇐  F₁ (C.α⇐ {X} {Y} {Z})  α⇐  id ⊗₁ φ⇐  φ⇐
associativity-inv = begin
    φ⇐ ⊗₁ id  φ⇐  F₁ C.α⇐   ≈⟨ sym-assoc     (φ⇐ ⊗₁ id  φ⇐)  F₁ C.α⇐ ≈⟨ to-≈ associativityᵢ     (α⇐  id ⊗₁ φ⇐)  φ⇐      ≈⟨ assoc     α⇐  id ⊗₁ φ⇐  φ⇐          where
    open HomReasoning