diff options
| author | Jacques Comeaux <jacquesrcomeaux@protonmail.com> | 2026-01-10 22:04:30 -0600 |
|---|---|---|
| committer | Jacques Comeaux <jacquesrcomeaux@protonmail.com> | 2026-01-10 22:04:30 -0600 |
| commit | 3e0565657f896d3064e68b03d30c1a748a8bed25 (patch) | |
| tree | 33e4770a3fe674a875250333f401c2bf99734618 /Functor/Monoidal | |
| parent | fc941b6d2e2293d9d9e096519eac708ae3b0aa0a (diff) | |
Extend monoidalize functor to commutative monoids
Diffstat (limited to 'Functor/Monoidal')
| -rw-r--r-- | Functor/Monoidal/Construction/CMonoidValued.agda | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/Functor/Monoidal/Construction/CMonoidValued.agda b/Functor/Monoidal/Construction/CMonoidValued.agda new file mode 100644 index 0000000..2ac8be2 --- /dev/null +++ b/Functor/Monoidal/Construction/CMonoidValued.agda @@ -0,0 +1,100 @@ +{-# 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 Level using (Level; _β_) + +-- A functor from a cocartesian category π to CMonoids[S] +-- can be turned into a symmetric monoidal functor from π to S + +module Functor.Monoidal.Construction.CMonoidValued + {o oβ² β ββ² e eβ² : Level} + {π : Category o β e} + (π-+ : Cocartesian π) + {S : SymmetricMonoidalCategory oβ² ββ² eβ²} + (let module S = SymmetricMonoidalCategory S) + (M : Functor π (CMonoids S.symmetric)) + where + +import Categories.Category.Monoidal.Reasoning as β-Reasoning +import Categories.Morphism.Reasoning as β-Reasoning +import Object.Monoid.Commutative as CommutativeMonoidObject +import Functor.Monoidal.Construction.MonoidValued as MonoidValued + +open import Categories.Category.Cocartesian using (module CocartesianSymmetricMonoidal) +open import Categories.Category.Cocartesian.Bundle using (CocartesianCategory) +open import Categories.Category.Construction.Monoids using (Monoids) +open import Categories.Category.Monoidal.Symmetric.Properties using (module Shorthands) +open import Categories.Functor.Monoidal.Symmetric using (module Lax) +open import Categories.Functor.Properties using ([_]-resp-β) +open import Data.Product using (_,_) +open import Functor.Forgetful.Instance.CMonoid S.symmetric using (Forget) +open import Functor.Forgetful.Instance.Monoid S.monoidal using () renaming (Forget to Forgetβ) + +private + + G : Functor π (Monoids S.monoidal) + G = Forget β M + + H : Functor π S.U + H = Forgetβ β G + + module π = CocartesianCategory (record { cocartesian = π-+ }) + module π-SM = CocartesianSymmetricMonoidal π π-+ + + π-SMC : SymmetricMonoidalCategory o β e + π-SMC = record { symmetric = π-SM.+-symmetric } + + module H = Functor H + module M = Functor M + + open CommutativeMonoidObject S.symmetric using (CommutativeMonoid; CommutativeMonoidβ) + open CommutativeMonoid using (ΞΌ; Carrier) renaming (commutative to ΞΌ-commutative) + open CommutativeMonoidβ + open π using (_+_; iβ; iβ; injectβ; injectβ; +-swap) + open S + open β-Reasoning U + open β-Reasoning monoidal + open Shorthands symmetric + + β² : {A : π.Obj} β H.β A ββ H.β A β H.β A + β² {A} = ΞΌ (M.β A) + + ββ² : {A B : π.Obj} (f : A π.β B) β H.β f β β² β β² β H.β f ββ H.β f + ββ² f = preserves-ΞΌ (M.β f) + + β²-β : {n m : π.Obj} β H.β n ββ H.β m β H.β (n + m) + β²-β = β² β H.β iβ ββ H.β iβ + + β²-Ο : {n : π.Obj} β β² {n} β β² β Οβ + β²-Ο {A} = ΞΌ-commutative (M.β A) + + braiding-compat + : {n m : π.Obj} + β H.β +-swap β β²-β {n} {m} + β β²-β β Οβ {H.β n} {H.β m} + braiding-compat {n} {m} = begin + H.β +-swap β β²-β {n} {m} β‘β¨β© + H.β +-swap β β² {n + m} β H.β iβ ββ H.β iβ ββ¨ extendΚ³ (ββ² +-swap) β© + β² {m + n} β H.β +-swap ββ H.β +-swap β H.β iβ ββ H.β iβ ββ¨ reflβ©ββ¨ β-distrib-over-β β¨ + β² {m + n} β (H.β +-swap β H.β iβ) ββ (H.β +-swap β H.β iβ) ββ¨ reflβ©ββ¨ [ H ]-resp-β injectβ β©ββ¨ [ H ]-resp-β injectβ β© + β² {m + n} β H.β iβ ββ H.β iβ ββ¨ β²-Ο β©ββ¨refl β© + (β² {m + n} β Οβ) β H.β iβ ββ H.β iβ ββ¨ extendΛ‘ (braiding.β.commute (H.β iβ , H.β iβ)) β© + (β² {m + n} β H.β iβ ββ H.β iβ) β Οβ β‘β¨β© + β²-β {m} {n} β Οβ {H.β n} {H.β m} β + +open MonoidValued π-+ G using (F,β,Ξ΅) + +F,β,Ξ΅,Ο : Lax.SymmetricMonoidalFunctor π-SMC S +F,β,Ξ΅,Ο = record + { F,β,Ξ΅ + ; isBraidedMonoidal = record + { F,β,Ξ΅ + ; braiding-compat = braiding-compat + } + } + +module F,β,Ξ΅,Ο = Lax.SymmetricMonoidalFunctor F,β,Ξ΅,Ο |
