aboutsummaryrefslogtreecommitdiff
path: root/Category/Construction/CMonoids/Properties.agda
diff options
context:
space:
mode:
Diffstat (limited to 'Category/Construction/CMonoids/Properties.agda')
-rw-r--r--Category/Construction/CMonoids/Properties.agda74
1 files changed, 74 insertions, 0 deletions
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Κ³
+ }
+ }