From 0ce708186bf9b94422ce79bdba542abc29c000b1 Mon Sep 17 00:00:00 2001 From: Jacques Comeaux Date: Sat, 8 Feb 2025 16:19:44 -0600 Subject: Add symmetric braiding to category of cospans --- Category/Monoidal/Instance/Cospans.agda | 49 +++++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 6 deletions(-) (limited to 'Category') diff --git a/Category/Monoidal/Instance/Cospans.agda b/Category/Monoidal/Instance/Cospans.agda index c2ab8ed..228ddea 100644 --- a/Category/Monoidal/Instance/Cospans.agda +++ b/Category/Monoidal/Instance/Cospans.agda @@ -11,22 +11,26 @@ import Categories.Morphism.Reasoning.Iso as IsoReasoning open import Categories.Category using (_[_,_]; _[_β‰ˆ_]; _[_∘_]; Category) open import Categories.Category.BinaryProducts using (BinaryProducts) open import Categories.Category.Cartesian.Bundle using (CartesianCategory) -open import Categories.Category.Cocartesian using (module CocartesianMonoidal) +open import Categories.Category.Cocartesian using (module CocartesianMonoidal; module CocartesianSymmetricMonoidal) +open import Categories.Category.Monoidal.Symmetric using (Symmetric) open import Categories.Category.Monoidal.Braided using (Braided) open import Categories.Category.Monoidal.Core using (Monoidal) open import Categories.Functor using (Functor) open import Categories.Functor.Properties using ([_]-resp-β‰…) -open import Category.Instance.Cospans π’ž using (Cospans) +open import Categories.NaturalTransformation.NaturalIsomorphism using (niHelper) +open import Category.Instance.Cospans π’ž using (Cospans; Cospan) open import Category.Instance.Properties.FinitelyCocompletes {o} {β„“} {e} using (FinitelyCocompletes-CC) -open import Category.Monoidal.Instance.Cospans.Newsquare {o} {β„“} {e} using (module NewSquare) +open import Category.Monoidal.Instance.Cospans.Lift {o} {β„“} {e} using (module Square) open import Data.Product.Base using (_,_) open import Functor.Instance.Cospan.Stack π’ž using (βŠ—) open import Functor.Instance.Cospan.Embed π’ž using (L; L-resp-βŠ—) module π’ž = FinitelyCocompleteCategory π’ž open CocartesianMonoidal π’ž.U π’ž.cocartesian using (βŠ₯+--id; -+βŠ₯-id; βŠ₯+Aβ‰…A; A+βŠ₯β‰…A; +-monoidal) +open CocartesianSymmetricMonoidal π’ž.U π’ž.cocartesian using (+-symmetric) open Monoidal +-monoidal using () renaming (triangle to tri; pentagon to pent) +open Symmetric +-symmetric using (braiding) renaming (hexagon₁ to hex₁; hexagonβ‚‚ to hexβ‚‚; commutative to comm) open import Categories.Category.Monoidal.Utilities +-monoidal using (associator-naturalIsomorphism) module _ where @@ -34,6 +38,9 @@ module _ where open CartesianCategory FinitelyCocompletes-CC using (products) open BinaryProducts products using (_Γ—_) + π’žΓ—π’ž : FinitelyCocompleteCategory o β„“ e + π’žΓ—π’ž = π’ž Γ— π’ž + [π’žΓ—π’ž]Γ—π’ž : FinitelyCocompleteCategory o β„“ e [π’žΓ—π’ž]Γ—π’ž = (π’ž Γ— π’ž) Γ— π’ž @@ -56,9 +63,9 @@ CospansMonoidal = record where module βŠ— = Functor βŠ— module Cospans = Category Cospans - module UnitorΛ‘ = NewSquare βŠ₯+--id - module UnitorΚ³ = NewSquare -+βŠ₯-id - module Associator = NewSquare {[π’žΓ—π’ž]Γ—π’ž} {π’ž} associator-naturalIsomorphism + module UnitorΛ‘ = Square βŠ₯+--id + module UnitorΚ³ = Square -+βŠ₯-id + module Associator = Square {[π’žΓ—π’ž]Γ—π’ž} {π’ž} associator-naturalIsomorphism open Cospans.HomReasoning open Cospans using (id) open Cospans.Equiv @@ -72,3 +79,33 @@ CospansMonoidal = record triangle = sym L-resp-βŠ— ⟩∘⟨refl β—‹ sym homomorphism β—‹ L-resp-β‰ˆ tri β—‹ L-resp-βŠ— pentagon : {W X Y Z : Obj} β†’ Cospans [ Cospans [ βŠ—.₁ (id {W} , Ξ±β‡’ {(X , Y) , Z}) ∘ Cospans [ Ξ±β‡’ ∘ βŠ—.₁ (Ξ±β‡’ , id) ] ] β‰ˆ Cospans [ Ξ±β‡’ ∘ Ξ±β‡’ ] ] pentagon = sym L-resp-βŠ— ⟩∘⟨ refl ⟩∘⟨ sym L-resp-βŠ— β—‹ refl⟩∘⟨ sym homomorphism β—‹ sym homomorphism β—‹ L-resp-β‰ˆ pent β—‹ homomorphism + +CospansBraided : Braided CospansMonoidal +CospansBraided = record + { braiding = niHelper record + { Ξ· = Ξ» { (X , Y) β†’ Braiding.FXβ‰…GXβ€².from {X , Y} } + ; η⁻¹ = Ξ» { (Y , X) β†’ Braiding.FXβ‰…GXβ€².to {Y , X} } + ; commute = Ξ» { {X , Y} {Xβ€² , Yβ€²} (f , g) β†’ Braiding.from (record { f₁ = f₁ f , f₁ g ; fβ‚‚ = fβ‚‚ f , fβ‚‚ g }) } + ; iso = Ξ» { (X , Y) β†’ Braiding.FXβ‰…GXβ€².iso {X , Y} } + } + ; hexagon₁ = sym L-resp-βŠ— ⟩∘⟨ refl ⟩∘⟨ sym L-resp-βŠ— β—‹ refl⟩∘⟨ sym homomorphism β—‹ sym homomorphism β—‹ L-resp-β‰ˆ hex₁ β—‹ homomorphism β—‹ refl⟩∘⟨ homomorphism + ; hexagonβ‚‚ = sym L-resp-βŠ— ⟩∘⟨refl ⟩∘⟨ sym L-resp-βŠ— β—‹ sym homomorphism ⟩∘⟨refl β—‹ sym homomorphism β—‹ L-resp-β‰ˆ hexβ‚‚ β—‹ homomorphism β—‹ homomorphism ⟩∘⟨refl + } + where + open Cospan + module Cospans = Category Cospans + open Cospans.Equiv + open Cospans.HomReasoning + module Braiding = Square {π’žΓ—π’ž} {π’ž} braiding + open Functor L renaming (F-resp-β‰ˆ to L-resp-β‰ˆ) + +CospansSymmetric : Symmetric CospansMonoidal +CospansSymmetric = record + { braided = CospansBraided + ; commutative = sym homomorphism β—‹ L-resp-β‰ˆ comm β—‹ identity + } + where + module Cospans = Category Cospans + open Cospans.Equiv + open Cospans.HomReasoning + open Functor L renaming (F-resp-β‰ˆ to L-resp-β‰ˆ) -- cgit v1.2.3