From c39f2eeea5fab0e5e15fd1ee0fb83a1fb407f703 Mon Sep 17 00:00:00 2001 From: Jacques Comeaux Date: Sat, 13 Dec 2025 17:05:56 -0600 Subject: Transport monoid via base category isomorphism --- Category/Construction/CMonoids/Properties.agda | 74 ++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 Category/Construction/CMonoids/Properties.agda (limited to 'Category/Construction/CMonoids/Properties.agda') diff --git a/Category/Construction/CMonoids/Properties.agda b/Category/Construction/CMonoids/Properties.agda new file mode 100644 index 0000000..fab8b0b --- /dev/null +++ b/Category/Construction/CMonoids/Properties.agda @@ -0,0 +1,74 @@ +{-# OPTIONS --without-K --safe #-} + +open import Categories.Category.Core using (Category) +open import Categories.Category.Monoidal.Core using (Monoidal) +open import Categories.Category.Monoidal.Symmetric using (Symmetric) +open import Level using (Level; _βŠ”_) + +module Category.Construction.CMonoids.Properties + {o β„“ e : Level} + {π’ž : Category o β„“ e} + {monoidal : Monoidal π’ž} + (symmetric : Symmetric monoidal) + where + +import Categories.Category.Monoidal.Reasoning monoidal as βŠ—-Reasoning +import Categories.Morphism.Reasoning π’ž as β‡’-Reasoning +import Category.Construction.Monoids.Properties {o} {β„“} {e} {π’ž} monoidal as Monoids + +open import Categories.Category using (_[_,_]) +open import Categories.Category.Monoidal.Symmetric.Properties symmetric using (module Shorthands) +open import Categories.Morphism using (_β‰…_) +open import Categories.Morphism.Notation using (_[_β‰…_]) +open import Categories.Object.Monoid monoidal using (Monoid) +open import Category.Construction.CMonoids symmetric using (CMonoids) +open import Data.Product using (Ξ£-syntax; _,_) +open import Object.Monoid.Commutative symmetric using (CommutativeMonoid) + +module π’ž = Category π’ž + +open CommutativeMonoid using (monoid) renaming (Carrier to ∣_∣) + +transport-by-iso + : {X : π’ž.Obj} + β†’ (M : CommutativeMonoid) + β†’ π’ž [ ∣ M ∣ β‰… X ] + β†’ Ξ£[ Xβ‚˜ ∈ CommutativeMonoid ] CMonoids [ M β‰… Xβ‚˜ ] +transport-by-iso {X} M ∣Mβˆ£β‰…X + using (Xβ‚˜β€² , Mβ‰…Xβ‚˜β€²) ← Monoids.transport-by-iso {X} (monoid M) ∣Mβˆ£β‰…X = Xβ‚˜ , Mβ‰…Xβ‚˜ + where + module Mβ‰…Xβ‚˜β€² = _β‰…_ Mβ‰…Xβ‚˜β€² + open _β‰…_ ∣Mβˆ£β‰…X + module Xβ‚˜β€² = Monoid Xβ‚˜β€² + open CommutativeMonoid M + open π’ž using (_β‰ˆ_; _∘_) + open Shorthands + open βŠ—-Reasoning + open β‡’-Reasoning + open Symmetric symmetric using (_βŠ—β‚_; module braiding) + comm : from ∘ ΞΌ ∘ to βŠ—β‚ to β‰ˆ (from ∘ ΞΌ ∘ to βŠ—β‚ to) ∘ Οƒβ‡’ + comm = begin + from ∘ ΞΌ ∘ to βŠ—β‚ to β‰ˆβŸ¨ push-center (commutative) ⟩ + from ∘ ΞΌ ∘ Οƒβ‡’ ∘ to βŠ—β‚ to β‰ˆβŸ¨ pushΚ³ (pushΚ³ (braiding.β‡’.commute (to , to))) ⟩ + (from ∘ ΞΌ ∘ to βŠ—β‚ to) ∘ Οƒβ‡’ ∎ + Xβ‚˜ : CommutativeMonoid + Xβ‚˜ = record + { Carrier = X + ; isCommutativeMonoid = record + { isMonoid = Xβ‚˜β€².isMonoid + ; commutative = comm + } + } + Mβ‡’Xβ‚˜ : CMonoids [ M , Xβ‚˜ ] + Mβ‡’Xβ‚˜ = record { monoidβ‡’ = Mβ‰…Xβ‚˜β€².from } + Xβ‚˜β‡’M : CMonoids [ Xβ‚˜ , M ] + Xβ‚˜β‡’M = record { monoidβ‡’ = Mβ‰…Xβ‚˜β€².to } + Mβ‰…Xβ‚˜ : CMonoids [ M β‰… Xβ‚˜ ] + Mβ‰…Xβ‚˜ = record + { from = Mβ‡’Xβ‚˜ + ; to = Xβ‚˜β‡’M + ; iso = record + { isoΛ‘ = isoΛ‘ + ; isoΚ³ = isoΚ³ + } + } -- cgit v1.2.3