diff options
Diffstat (limited to 'Category/Monoidal')
| -rw-r--r-- | Category/Monoidal/Instance/Cospans.agda | 15 | ||||
| -rw-r--r-- | Category/Monoidal/Instance/Cospans/Lift.agda | 15 | ||||
| -rw-r--r-- | Category/Monoidal/Instance/DecoratedCospans.agda | 410 | ||||
| -rw-r--r-- | Category/Monoidal/Instance/DecoratedCospans/Lift.agda | 114 | ||||
| -rw-r--r-- | Category/Monoidal/Instance/DecoratedCospans/Products.agda | 104 | ||||
| -rw-r--r-- | Category/Monoidal/Instance/Nat.agda | 71 |
6 files changed, 714 insertions, 15 deletions
diff --git a/Category/Monoidal/Instance/Cospans.agda b/Category/Monoidal/Instance/Cospans.agda index 228ddea..a1648db 100644 --- a/Category/Monoidal/Instance/Cospans.agda +++ b/Category/Monoidal/Instance/Cospans.agda @@ -18,8 +18,9 @@ open import Categories.Category.Monoidal.Core using (Monoidal) open import Categories.Functor using (Functor) open import Categories.Functor.Properties using ([_]-resp-β
) 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.Instance.Cospans π using (Cospans) +open import Category.Diagram.Cospan using (Cospan; cospan) +open import Category.Cartesian.Instance.FinitelyCocompletes {o} {β} {e} using (FinitelyCocompletes-CC) 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 (β) @@ -61,7 +62,6 @@ CospansMonoidal = record ; pentagon = pentagon } where - module β = Functor β module Cospans = Category Cospans module UnitorΛ‘ = Square β₯+--id module UnitorΚ³ = Square -+β₯-id @@ -83,16 +83,15 @@ CospansMonoidal = record 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} } + { Ξ· = Ξ» (X , Y) β Braiding.FXβ
GXβ².from {X , Y} + ; Ξ·β»ΒΉ = Ξ» (Y , X) β Braiding.FXβ
GXβ².to {Y , X} + ; commute = Ξ» (cospan fβ fβ , cospan gβ gβ) β Braiding.from (cospan (fβ , gβ) (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 diff --git a/Category/Monoidal/Instance/Cospans/Lift.agda b/Category/Monoidal/Instance/Cospans/Lift.agda index fa31fcb..c7e7516 100644 --- a/Category/Monoidal/Instance/Cospans/Lift.agda +++ b/Category/Monoidal/Instance/Cospans/Lift.agda @@ -4,7 +4,7 @@ open import Category.Cocomplete.Finitely.Bundle using (FinitelyCocompleteCategor module Category.Monoidal.Instance.Cospans.Lift {o β e} where -open import Category.Instance.Cospans using (Cospans; Cospan; Same) +open import Category.Instance.Cospans using (Cospans) open import Categories.Category.Core using (Category) @@ -16,6 +16,7 @@ import Category.Diagram.Pushout as PushoutDiagramβ² import Functor.Instance.Cospan.Embed as CospanEmbed open import Categories.Category using (_[_,_]; _[_β_]; _[_β_]; module Definitions) +open import Category.Diagram.Cospan using (Cospan; cospan) open import Categories.Functor.Core using (Functor) open import Categories.Functor.Properties using ([_]-resp-β
) open import Categories.NaturalTransformation.NaturalIsomorphism using (NaturalIsomorphism; _β_) @@ -26,7 +27,7 @@ module _ {π : FinitelyCocompleteCategory o β e} {π : FinitelyCocompleteC module π = FinitelyCocompleteCategory π module π = FinitelyCocompleteCategory π - open CospanEmbed π using (L; Bβ; BβL; RβB; β
-L-R) + open CospanEmbed π using (L; BβL; RβB; β
-L-R) module Square {F G : Functor π.U π.U} (FβG : F β G) where @@ -51,21 +52,21 @@ module _ {π : FinitelyCocompleteCategory o β e} {π : FinitelyCocompleteC open Cospan fg renaming (fβ to f; fβ to g) open π using (_β_) - squaresβcospan : Cospans π [ Bβ (G.β f β FXβ
GX.from) (G.β g β FXβ
GX.from) β Bβ (F.β f) (F.β g) ] + squaresβcospan : Cospans π [ cospan (G.β f β FXβ
GX.from) (G.β g β FXβ
GX.from) β cospan (F.β f) (F.β g) ] squaresβcospan = record { β
N = β
.sym π.U FXβ
GX - ; fromβfββfββ² = sym (switch-fromtoΛ‘ FXβ
GX (β.commute f)) - ; fromβfββfββ² = sym (switch-fromtoΛ‘ FXβ
GX (β.commute g)) + ; fromβfββfβ = sym (switch-fromtoΛ‘ FXβ
GX (β.commute f)) + ; fromβfββfβ = sym (switch-fromtoΛ‘ FXβ
GX (β.commute g)) } where open π.Equiv using (sym) - from : Cospans π [ Cospans π [ L.β (β.Ξ· Y) β Bβ (F.β f) (F.β g) ] β Cospans π [ Bβ (G.β f) (G.β g) β L.β (β.Ξ· X) ] ] + from : Cospans π [ Cospans π [ L.β (β.Ξ· Y) β cospan (F.β f) (F.β g) ] β Cospans π [ cospan (G.β f) (G.β g) β L.β (β.Ξ· X) ] ] from = sym (switch-tofromΛ‘ FXβ
GXβ² (reflβ©ββ¨ BβL β β
-L-R FXβ
GX β©ββ¨refl β RβB β squaresβcospan)) where open Cospans.Equiv using (sym) - to : Cospans π [ Cospans π [ L.β (β.Ξ· Y) β Bβ (G.β f) (G.β g) ] β Cospans π [ Bβ (F.β f) (F.β g) β L.β (β.Ξ· X) ] ] + to : Cospans π [ Cospans π [ L.β (β.Ξ· Y) β cospan (G.β f) (G.β g) ] β Cospans π [ cospan (F.β f) (F.β g) β L.β (β.Ξ· X) ] ] to = switch-fromtoΚ³ FXβ
GXβ² (pullΚ³ BβL β β
-L-R FXβ
GX β©ββ¨refl β RβB β squaresβcospan) where open β-Reasoning (Cospans π) using (pullΚ³) diff --git a/Category/Monoidal/Instance/DecoratedCospans.agda b/Category/Monoidal/Instance/DecoratedCospans.agda new file mode 100644 index 0000000..3df57ee --- /dev/null +++ b/Category/Monoidal/Instance/DecoratedCospans.agda @@ -0,0 +1,410 @@ +{-# OPTIONS --without-K --safe #-} +{-# OPTIONS --lossy-unification #-} + +open import Categories.Category.Monoidal.Bundle using (MonoidalCategory; SymmetricMonoidalCategory) +open import Categories.Functor.Monoidal.Symmetric using (module Lax) +open import Category.Cocomplete.Finitely.Bundle using (FinitelyCocompleteCategory) + +open Lax using (SymmetricMonoidalFunctor) +open FinitelyCocompleteCategory + using () + renaming (symmetricMonoidalCategory to smc) + +module Category.Monoidal.Instance.DecoratedCospans + {o oβ² β ββ² eΒ eβ²} + (π : FinitelyCocompleteCategory o β e) + {π : SymmetricMonoidalCategory oβ² ββ² eβ²} + (F : SymmetricMonoidalFunctor (smc π) π) where + +open import Category.Cocomplete.Finitely.Bundle using (FinitelyCocompleteCategory) + + +import Categories.Category.Monoidal.Reasoning as β-Reasoning +import Categories.Morphism as Morphism +import Categories.Morphism.Reasoning as β-Reasoning +import Categories.Category.Monoidal.Properties as β-Properties +import Categories.Category.Monoidal.Braided.Properties as Ο-Properties + +open import Categories.Category using (_[_,_]; _[_β_]; _[_β_]; Category) +open import Categories.Category.BinaryProducts using (BinaryProducts) +open import Categories.Category.Cartesian using (Cartesian) +open import Categories.Category.Cartesian.Bundle using (CartesianCategory) +open import Categories.Category.Cocartesian using (module CocartesianMonoidal; module CocartesianSymmetricMonoidal) +open import Categories.Category.Monoidal.Braided using (Braided) +open import Categories.Category.Monoidal.Core using (Monoidal) +open import Categories.Category.Monoidal.Symmetric using (Symmetric) +open import Categories.Category.Monoidal.Utilities using (module Shorthands) +open import Categories.Functor using (Functor; _βF_) renaming (id to idF) +open import Categories.Functor.Hom using (Hom[_][_,-]) +open import Categories.Functor.Properties using ([_]-resp-β
) +open import Categories.Functor.Monoidal.Construction.Product using (β-SymmetricMonoidalFunctor) +open import Categories.NaturalTransformation.NaturalIsomorphism using (NaturalIsomorphism; _βΛ‘_; niHelper) +open import Categories.NaturalTransformation.Core using (NaturalTransformation; _βα΅₯_; ntHelper) +open import Categories.NaturalTransformation.Equivalence using () renaming (_β_ to _β_) +open import Category.Instance.DecoratedCospans π F using (DecoratedCospans) +open import Category.Cartesian.Instance.FinitelyCocompletes {o} {β} {e} using (module x+y; module y+x; [x+y]+z; x+[y+z]; assoc-β) +open import Category.Monoidal.Instance.DecoratedCospans.Lift {o} {β} {e} {oβ²} {ββ²} {eβ²} using (module Square) +open import Cospan.Decorated π F using (DecoratedCospan) +open import Data.Product.Base using (_,_) +open import Function.Base using () renaming (id to idf) +open import Functor.Instance.DecoratedCospan.Stack π F using (β) +open import Functor.Instance.DecoratedCospan.Embed π F using (L; L-resp-β; Bβ) + +open import Category.Monoidal.Instance.DecoratedCospans.Products π F +open CocartesianMonoidal π.U π.cocartesian using (β₯+--id; -+β₯-id; β₯+Aβ
A; A+β₯β
A; +-monoidal) +open import Categories.Category.Monoidal.Utilities +-monoidal using (associator-naturalIsomorphism) + +module LiftUnitorΛ‘ where + module F = SymmetricMonoidalFunctor F + open π using (β₯; _+-; iβ; _+_; _+β_; Β‘; +β-congβ; Β‘-unique; -+-) + open Shorthands π.monoidal using (Οβ; Οβ; Ξ»β) + ββ : NaturalTransformation (Hom[ π.U ][ π.unit ,-] βF F.F) (Hom[ π.U ][ π.unit ,-] βF F.F βF (β₯ +-)) + ββ = ntHelper record + { Ξ· = Ξ» { X β record + { to = Ξ» { f β π.U [ F.β-homo.Ξ· (β₯ , X) β π.U [ π.β.β (π.U [ F.β π.initial.! β F.Ξ΅ ] , f) β Οβ ] ] } + ; cong = Ξ» { x β reflβ©ββ¨ reflβ©ββ¨ x β©ββ¨refl } } + } + ; commute = ned + } + where + open π.Equiv + open π using (sym-assoc; _β_; id; _ββ_; identityΚ³) + open β-Reasoning π.monoidal + open β-Reasoning π.U + ned : {X Y : π.Obj} (f : X π.β Y) {x : π.unit π.β F.β X} + β F.β-homo.Ξ· (β₯ , Y) β (F.β Β‘ π.β F.Ξ΅) ββ (F.Fβ f β x β id) β Οβ + π.β F.β (π.id +β f) β (F.β-homo.Ξ· (π.β₯ , X) β (F.β Β‘ β F.Ξ΅) ββ x β Οβ) β id + ned {X} {Y} f {x} = begin + F.β-homo.Ξ· (β₯ , Y) β (F.β Β‘ β F.Ξ΅) ββ (F.β f β x β id) β Οβ ββ¨ reflβ©ββ¨ reflβ©ββ¨ (reflβ©ββ¨ identityΚ³) β©ββ¨refl β© + F.β-homo.Ξ· (β₯ , Y) β (F.β Β‘ β F.Ξ΅) ββ (F.β f β x) β Οβ ββ¨ push-center splitβΛ‘ β© + F.β-homo.Ξ· (β₯ , Y) β id ββ F.β f β (F.β Β‘ β F.Ξ΅) ββ x β Οβ ββ¨ reflβ©ββ¨ F.identity β©ββ¨refl β©ββ¨refl β¨ + F.β-homo.Ξ· (β₯ , Y) β F.β π.id ββ F.β f β (F.β Β‘ β F.Ξ΅) ββ x β Οβ ββ¨ extendΚ³ (F.β-homo.commute (π.id , f)) β© + F.β (π.id +β f) β F.β-homo.Ξ· (β₯ , X) β (F.β Β‘ β F.Ξ΅) ββ x β Οβ ββ¨ reflβ©ββ¨ identityΚ³ β¨ + F.β (π.id +β f) β (F.β-homo.Ξ· (β₯ , X) β (F.β Β‘ β F.Ξ΅) ββ x β Οβ) β id β + ββ : NaturalTransformation (Hom[ π.U ][ π.unit ,-] βF F.F) (Hom[ π.U ][ π.unit ,-] βF F.F βF idF) + ββ = ntHelper record + { Ξ· = Ξ» { X β record { to = idf ; cong = idf } } + ; commute = Ξ» { f β refl } + } + where + open π.Equiv + open NaturalIsomorphism using (FβG) + βββββ : (FβG (Hom[ π.U ][ π.unit ,-] βΛ‘ (F.F βΛ‘ β₯+--id))) βα΅₯ ββ β ββ + βββββ {X} {f} = begin + F.β Ξ»β β f β id ββ¨ reflβ©ββ¨ reflβ©ββ¨ π.unitorΚ³.isoΚ³ β¨ + F.β Ξ»β β f β Οβ β Οβ ββ¨ reflβ©ββ¨ reflβ©ββ¨ coherenceβ β©ββ¨refl β¨ + F.β Ξ»β β f β Ξ»β β Οβ ββ¨ reflβ©ββ¨ extendΚ³ π.unitorΛ‘-commute-from β¨ + F.β Ξ»β β Ξ»β β id ββ f β Οβ ββ¨ pushΛ‘ (introΛ‘ F.identity) β© + F.β π.id β F.β Ξ»β β Ξ»β β id ββ f β Οβ ββ¨ F.F-resp-β (-+-.identity) β©ββ¨refl β¨ + F.β (π.id +β π.id) β F.β Ξ»β β Ξ»β β id ββ f β Οβ ββ¨ F.F-resp-β (+β-congβ (Β‘-unique π.id) π.Equiv.refl) β©ββ¨refl β¨ + F.β (Β‘ +β π.id) β F.β Ξ»β β Ξ»β β id ββ f β Οβ ββ¨ reflβ©ββ¨ extendΚ³ (switch-fromtoΛ‘ ([ F.F ]-resp-β
unitorΛ‘) F.unitaryΛ‘) β¨ + F.β (Β‘ +β π.id) β F.β-homo.Ξ· (β₯ , X) β F.Ξ΅ ββ id β id ββ f β Οβ ββ¨ reflβ©ββ¨ reflβ©ββ¨ pullΛ‘ (sym serializeββ) β© + F.β (Β‘ +β π.id) β F.β-homo.Ξ· (β₯ , X) β F.Ξ΅ ββ f β Οβ ββ¨ extendΚ³ (F.β-homo.commute (Β‘ , π.id)) β¨ + F.β-homo.Ξ· (β₯ , X) β (F.β Β‘ ββ F.β π.id) β F.Ξ΅ ββ f β Οβ ββ¨ reflβ©ββ¨ reflβ©ββ¨ F.identity β©ββ¨refl β© + F.β-homo.Ξ· (β₯ , X) β (F.β Β‘ ββ id) β F.Ξ΅ ββ f β Οβ ββ¨ pull-center (sym splitβΛ‘) β© + F.β-homo.Ξ· (β₯ , X) β (F.β Β‘ β F.Ξ΅) ββ f β Οβ β + where + open Shorthands π.monoidal using (Ξ»β) + open CocartesianMonoidal π.U π.cocartesian using (unitorΛ‘) + open π.Equiv + open π using (sym-assoc; _β_; id; _ββ_; identityΚ³) + open β-Reasoning π.monoidal + open β-Properties π.monoidal using (coherenceβ) + open β-Reasoning π.U + module -+- = Functor -+- + module UnitorΛ‘ = Square {π} {π} {π} {π} {F} {F} β₯+--id ββ ββ βββββ +open LiftUnitorΛ‘ using (module UnitorΛ‘) + +module LiftUnitorΚ³ where + module F = SymmetricMonoidalFunctor F + open π using (β₯; -+_; iβ; _+_; _+β_; Β‘; +β-congβ; Β‘-unique; -+-) + open Shorthands π.monoidal using (Οβ; Οβ) + ββ : NaturalTransformation (Hom[ π.U ][ π.unit ,-] βF F.F) (Hom[ π.U ][ π.unit ,-] βF F.F βF (-+ β₯)) + ββ = ntHelper record + { Ξ· = Ξ» { X β record + { to = Ξ» { f β π.U [ F.β-homo.Ξ· (X , β₯) β π.U [ π.β.β (f , π.U [ F.β π.initial.! β F.Ξ΅ ]) β Οβ ] ] } + ; cong = Ξ» { x β reflβ©ββ¨ x β©ββ¨refl β©ββ¨refl } } + } + ; commute = ned + } + where + open π.Equiv + open π using (sym-assoc; _β_; id; _ββ_; identityΚ³) + open β-Reasoning π.monoidal + open β-Reasoning π.U + ned : {X Y : π.Obj} (f : X π.β Y) {x : π.unit π.β F.β X} + β F.β-homo.Ξ· (Y , β₯) β (F.Fβ f β x β id) ββ (F.β Β‘ β F.Ξ΅) β Οβ + π.β F.β (f +β π.id) β (F.β-homo.Ξ· (X , β₯) β x ββ (F.β Β‘ β F.Ξ΅) β Οβ) β id + ned {X} {Y} f {x} = begin + F.β-homo.Ξ· (Y , β₯) β (F.β f β x β id) ββ (F.β Β‘ β F.Ξ΅) β Οβ ββ¨ reflβ©ββ¨ (reflβ©ββ¨ identityΚ³) β©ββ¨refl β©ββ¨refl β© + F.β-homo.Ξ· (Y , β₯) β (F.β f β x) ββ (F.β Β‘ β F.Ξ΅) β Οβ ββ¨ push-center splitβΛ‘ β© + F.β-homo.Ξ· (Y , β₯) β F.β f ββ id β x ββ (F.β Β‘ β F.Ξ΅) β Οβ ββ¨ reflβ©ββ¨ reflβ©ββ¨ F.identity β©ββ¨refl β¨ + F.β-homo.Ξ· (Y , β₯) β F.β f ββ F.β π.id β x ββ (F.β Β‘ β F.Ξ΅) β Οβ ββ¨ extendΚ³ (F.β-homo.commute (f , π.id)) β© + F.β (f +β π.id) β F.β-homo.Ξ· (X , β₯) β x ββ (F.β Β‘ β F.Ξ΅) β Οβ ββ¨ reflβ©ββ¨ identityΚ³ β¨ + F.β (f +β π.id) β (F.β-homo.Ξ· (X , β₯) β x ββ (F.β Β‘ β F.Ξ΅) β Οβ) β id β + ββ : NaturalTransformation (Hom[ π.U ][ π.unit ,-] βF F.F) (Hom[ π.U ][ π.unit ,-] βF F.F βF idF) + ββ = ntHelper record + { Ξ· = Ξ» { X β record { to = idf ; cong = idf } } + ; commute = Ξ» { f β refl } + } + where + open π.Equiv + open NaturalIsomorphism using (FβG) + βββββ : (FβG (Hom[ π.U ][ π.unit ,-] βΛ‘ (F.F βΛ‘ -+β₯-id))) βα΅₯ ββ β ββ + βββββ {X} {f} = begin + F.β iβ β f β id ββ¨ reflβ©ββ¨ reflβ©ββ¨ π.unitorΚ³.isoΚ³ β¨ + F.β Οββ² β f β Οβ β Οβ ββ¨ reflβ©ββ¨ extendΚ³ π.unitorΚ³-commute-from β¨ + F.β Οββ² β Οβ β f ββ id β Οβ ββ¨ pushΛ‘ (introΛ‘ F.identity) β© + F.β π.id β F.β Οββ² β Οβ β f ββ id β Οβ ββ¨ F.F-resp-β (-+-.identity) β©ββ¨refl β¨ + F.β (π.id +β π.id) β F.β Οββ² β Οβ β f ββ id β Οβ ββ¨ F.F-resp-β (+β-congβ π.Equiv.refl (Β‘-unique π.id)) β©ββ¨refl β¨ + F.β (π.id +β Β‘) β F.β Οββ² β Οβ β f ββ id β Οβ ββ¨ reflβ©ββ¨ extendΚ³ (switch-fromtoΛ‘ ([ F.F ]-resp-β
unitorΚ³) F.unitaryΚ³) β¨ + F.β (π.id +β Β‘) β F.β-homo.Ξ· (X , β₯) β id ββ F.Ξ΅ β f ββ id β Οβ ββ¨ reflβ©ββ¨ reflβ©ββ¨ pullΛ‘ (sym serializeββ) β© + F.β (π.id +β Β‘) β F.β-homo.Ξ· (X , β₯) β f ββ F.Ξ΅ β Οβ ββ¨ extendΚ³ (F.β-homo.commute (π.id , Β‘)) β¨ + F.β-homo.Ξ· (X , β₯) β (F.β π.id ββ F.β Β‘) β f ββ F.Ξ΅ β Οβ ββ¨ reflβ©ββ¨ F.identity β©ββ¨refl β©ββ¨refl β© + F.β-homo.Ξ· (X , β₯) β (id ββ F.β Β‘) β f ββ F.Ξ΅ β Οβ ββ¨ pull-center (sym splitβΛ‘) β© + F.β-homo.Ξ· (X , β₯) β f ββ (F.β Β‘ β F.Ξ΅) β Οβ β + where + open Shorthands π.monoidal using () renaming (Οβ to Οββ²) + open CocartesianMonoidal π.U π.cocartesian using (unitorΚ³) + open π.Equiv + open π using (sym-assoc; _β_; id; _ββ_; identityΚ³) + open β-Reasoning π.monoidal + open β-Reasoning π.U + module -+- = Functor -+- + module UnitorΚ³ = Square {π} {π} {π} {π} {F} {F} -+β₯-id ββ ββ βββββ +open LiftUnitorΚ³ using (module UnitorΚ³) + +module LiftAssociator where + module F = SymmetricMonoidalFunctor F + open π using (β₯; -+_; iβ; _+_; _+β_; Β‘; +β-congβ; Β‘-unique; -+-) + open Shorthands π.monoidal using (Οβ; Οβ) + ββ : NaturalTransformation (Hom[ [πΓπ]Γπ.U ][ [πΓπ]Γπ.unit ,-] βF [FΓF]ΓF.F) (Hom[ π.U ][ π.unit ,-] βF F.F βF ([x+y]+z.F {π})) + ββ = ntHelper record + { Ξ· = Ξ» { ((X , Y) , Z) β record + { to = Ξ» { ((f , g) , h) β F.β-homo.Ξ· (X + Y , Z) β ((F.β-homo.Ξ· (X , Y) β f ββ g β Οβ) ββ h) β Οβ } + ; cong = Ξ» { {(f , g) , h} {(fβ² , gβ²) , hβ²} ((x , y) , z) β reflβ©ββ¨ (reflβ©ββ¨ x β©ββ¨ y β©ββ¨refl) β©ββ¨ z β©ββ¨refl } + } } + ; commute = Ξ» { {(XΒ , Y) , Z} {(Xβ² , Yβ²) , Zβ²} ((x , y) , z) {(f , g) , h} β commute x y z f g h } + } + where + open π.Equiv + open π using (sym-assoc; _β_; id; _ββ_; identityΚ³; _β_) + open β-Reasoning π.monoidal + open β-Reasoning π.U + commute + : {X Y Z Xβ² Yβ² Zβ² : π.Obj} + (x : π.U [ X , Xβ² ]) + (y : π.U [ Y , Yβ² ]) + (z : π.U [ Z , Zβ² ]) + (f : π.U [ π.unit , F.β X ]) + (g : π.U [ π.unit , F.β Y ]) + (h : π.U [ π.unit , F.β Z ]) + β F.β-homo.Ξ· (Xβ² + Yβ² , Zβ²) β (F.β-homo.Ξ· (Xβ² , Yβ²) β (F.β x β f β id) ββ (F.β y β g β id) β Οβ) ββ (F.β z β h β id) β Οβ + β F.β ((x +β y) +β z) β (F.β-homo.Ξ· (X + Y , Z) β (F.β-homo.Ξ· (X , Y) β f ββ g β Οβ) ββ h β Οβ) β id + commute {X} {Y} {Z} {Xβ²} {Yβ²} {Zβ²} x y z f g h = begin + F.β-homo.Ξ· (Xβ² + Yβ² , Zβ²) β (F.β-homo.Ξ· (Xβ² , Yβ²) β (F.β x β f β id) ββ (F.β y β g β id) β Οβ) ββ (F.β z β h β id) β Οβ + ββ¨ reflβ©ββ¨ (reflβ©ββ¨ (reflβ©ββ¨ identityΚ³) β©ββ¨ (reflβ©ββ¨ identityΚ³) β©ββ¨refl) β©ββ¨ (reflβ©ββ¨ identityΚ³) β©ββ¨refl β© + F.β-homo.Ξ· (Xβ² + Yβ² , Zβ²) β (F.β-homo.Ξ· (Xβ² , Yβ²) β (F.β x β f) ββ (F.β y β g) β Οβ) ββ (F.β z β h) β Οβ + ββ¨ reflβ©ββ¨ push-center β-distrib-over-β β©ββ¨refl β©ββ¨refl β© + F.β-homo.Ξ· (Xβ² + Yβ² , Zβ²) β (F.β-homo.Ξ· (Xβ² , Yβ²) β F.β x ββ F.β y β f ββ g β Οβ) ββ (F.β z β h) β Οβ + ββ¨ reflβ©ββ¨ extendΚ³ (F.β-homo.commute (x , y)) β©ββ¨refl β©ββ¨refl β© + F.β-homo.Ξ· (Xβ² + Yβ² , Zβ²) β (F.β (x +β y) β F.β-homo.Ξ· (X , Y) β f ββ g β Οβ) ββ (F.β z β h) β Οβ + ββ¨ push-center β-distrib-over-β β© + F.β-homo.Ξ· (Xβ² + Yβ² , Zβ²) β F.β (x +β y) ββ F.β z β (F.β-homo.Ξ· (X , Y) β f ββ g β Οβ) ββ h β Οβ + ββ¨ extendΚ³ (F.β-homo.commute (x +β y , z)) β© + F.β ((x +β y) +β z) β F.β-homo.Ξ· (X + Y , Z) β (F.β-homo.Ξ· (X , Y) β f ββ g β Οβ) ββ h β Οβ + ββ¨ reflβ©ββ¨ identityΚ³ β¨ + F.β ((x +β y) +β z) β (F.β-homo.Ξ· (X + Y , Z) β (F.β-homo.Ξ· (X , Y) β f ββ g β Οβ) ββ h β Οβ) β id + β + ββ : NaturalTransformation (Hom[ [πΓπ]Γπ.U ][ [πΓπ]Γπ.unit ,-] βF [FΓF]ΓF.F) (Hom[ π.U ][ π.unit ,-] βF F.F βF (x+[y+z].F {π})) + ββ = ntHelper record + { Ξ· = Ξ» { ((X , Y) , Z) β record + { to = Ξ» { ((f , g) , h) β F.β-homo.Ξ· (X , Y + Z) β (f ββ (F.β-homo.Ξ· (Y , Z) β g ββ h β Οβ)) β Οβ } + ; cong = Ξ» { {(f , g) , h} {(fβ² , gβ²) , hβ²} ((x , y) , z) β reflβ©ββ¨ x β©ββ¨ (reflβ©ββ¨ y β©ββ¨ z β©ββ¨refl) β©ββ¨refl } + } } + ; commute = Ξ» { {(XΒ , Y) , Z} {(Xβ² , Yβ²) , Zβ²} ((x , y) , z) {(f , g) , h} β commute x y z f g h } + } + where + open π.Equiv + open π using (sym-assoc; _β_; id; _ββ_; identityΚ³; _β_) + open β-Reasoning π.monoidal + open β-Reasoning π.U + commute + : {X Y Z Xβ² Yβ² Zβ² : π.Obj} + (x : π.U [ X , Xβ² ]) + (y : π.U [ Y , Yβ² ]) + (z : π.U [ Z , Zβ² ]) + (f : π.U [ π.unit , F.β X ]) + (g : π.U [ π.unit , F.β Y ]) + (h : π.U [ π.unit , F.β Z ]) + β F.β-homo.Ξ· (Xβ² , Yβ² + Zβ²) β (F.β x β f β id) ββ (F.β-homo.Ξ· (Yβ² , Zβ²) β (F.β y β g β id) ββ (F.β z β h β id) β Οβ) β Οβ + β F.β (x +β (y +β z)) β (F.β-homo.Ξ· (X , Y + Z) β f ββ (F.β-homo.Ξ· (Y , Z) β g ββ h β Οβ) β Οβ) β id + commute {X} {Y} {Z} {Xβ²} {Yβ²} {Zβ²} x y z f g h = begin + F.β-homo.Ξ· (Xβ² , Yβ² + Zβ²) β (F.β x β f β id) ββ (F.β-homo.Ξ· (Yβ² , Zβ²) β (F.β y β g β id) ββ (F.β z β h β id) β Οβ) β Οβ + ββ¨ reflβ©ββ¨ (reflβ©ββ¨ identityΚ³) β©ββ¨ (reflβ©ββ¨ (reflβ©ββ¨ identityΚ³) β©ββ¨ (reflβ©ββ¨ identityΚ³) β©ββ¨refl) β©ββ¨refl β© + F.β-homo.Ξ· (Xβ² , Yβ² + Zβ²) β (F.β x β f) ββ (F.β-homo.Ξ· (Yβ² , Zβ²) β (F.β y β g) ββ (F.β z β h) β Οβ) β Οβ + ββ¨ reflβ©ββ¨ reflβ©ββ¨ push-center β-distrib-over-β β©ββ¨refl β© + F.β-homo.Ξ· (Xβ² , Yβ² + Zβ²) β (F.β x β f) ββ (F.β-homo.Ξ· (Yβ² , Zβ²) β F.β y ββ F.β z β g ββ h β Οβ) β Οβ + ββ¨ reflβ©ββ¨ reflβ©ββ¨ extendΚ³ (F.β-homo.commute (y , z)) β©ββ¨refl β© + F.β-homo.Ξ· (Xβ² , Yβ² + Zβ²) β (F.β x β f) ββ (F.β (y +β z) β F.β-homo.Ξ· (Y , Z) β g ββ h β Οβ) β Οβ + ββ¨ push-center β-distrib-over-β β© + F.β-homo.Ξ· (Xβ² , Yβ² + Zβ²) β F.β x ββ F.β (y +β z) β f ββ (F.β-homo.Ξ· (Y , Z) β g ββ h β Οβ) β Οβ + ββ¨ extendΚ³ (F.β-homo.commute (x , y +β z)) β© + F.β (x +β (y +β z)) β F.β-homo.Ξ· (X , Y + Z) β f ββ (F.β-homo.Ξ· (Y , Z) β g ββ h β Οβ) β Οβ + ββ¨ reflβ©ββ¨ identityΚ³ β¨ + F.β (x +β (y +β z)) β (F.β-homo.Ξ· (X , Y + Z) β f ββ (F.β-homo.Ξ· (Y , Z) β g ββ h β Οβ) β Οβ) β id + β + open NaturalIsomorphism using (FβG) + βββββ : (FβG (Hom[ π.U ][ π.unit ,-] βΛ‘ (F.F βΛ‘ assoc-β))) βα΅₯ ββ β ββ + βββββ {(X , Y) , Z} {(f , g) , h} = begin + F.β Ξ±ββ² β (F.β-homo.Ξ· (X , Y + Z) β (f ββ _) β Οβ) β id ββ¨ reflβ©ββ¨ identityΚ³ β© + F.β Ξ±ββ² β F.β-homo.Ξ· (X , Y + Z) β f ββ (F.β-homo.Ξ· (Y , Z) β g ββ h β Οβ) β Οβ ββ¨ reflβ©ββ¨ reflβ©ββ¨ reflβ©ββ¨ sym-assoc β©ββ¨refl β© + F.β Ξ±ββ² β F.β-homo.Ξ· (X , Y + Z) β f ββ ((F.β-homo.Ξ· (Y , Z) β g ββ h) β Οβ) β Οβ ββ¨ reflβ©ββ¨ reflβ©ββ¨ pushΛ‘ splitβΚ³ β© + F.β Ξ±ββ² β F.β-homo.Ξ· (X , Y + Z) β f ββ (F.β-homo.Ξ· (Y , Z) β g ββ h) β id ββ Οβ β Οβ ββ¨ reflβ©ββ¨ reflβ©ββ¨ reflβ©ββ¨ reflβ©ββ¨ coherence-invβ β¨ + F.β Ξ±ββ² β F.β-homo.Ξ· (X , Y + Z) β f ββ (F.β-homo.Ξ· (Y , Z) β g ββ h) β id ββ Οβ β Ξ»β ββ¨ reflβ©ββ¨ reflβ©ββ¨ reflβ©ββ¨ unitorΛ‘-commute-to β¨ + F.β Ξ±ββ² β F.β-homo.Ξ· (X , Y + Z) β f ββ (F.β-homo.Ξ· (Y , Z) β g ββ h) β Ξ»β β Οβ ββ¨ reflβ©ββ¨ reflβ©ββ¨ reflβ©ββ¨ pushΛ‘ (switch-tofromΛ‘ Ξ± coherence-invβ) β© + F.β Ξ±ββ² β F.β-homo.Ξ· (X , Y + Z) β f ββ (F.β-homo.Ξ· (Y , Z) β g ββ h) β Ξ±β β Ξ»β ββ id β Οβ ββ¨ reflβ©ββ¨ reflβ©ββ¨ pushΛ‘ splitβΛ‘ β© + F.β Ξ±ββ²Β β F.β-homo.Ξ· (X , Y + Z) β id ββ F.β-homo.Ξ· (Y , Z) β f ββ (g ββ h) β Ξ±β β Ξ»β ββ id β Οβ ββ¨ reflβ©ββ¨ reflβ©ββ¨ reflβ©ββ¨ reflβ©ββ¨ reflβ©ββ¨ coherence-invβ β©ββ¨refl β©ββ¨refl β© + F.β Ξ±ββ²Β β F.β-homo.Ξ· (X , Y + Z) β id ββ F.β-homo.Ξ· (Y , Z) β f ββ (g ββ h) β Ξ±β β Οβ ββ id β Οβ ββ¨ reflβ©ββ¨ reflβ©ββ¨ reflβ©ββ¨ extendΚ³ assoc-commute-from β¨ + F.β Ξ±ββ²Β β F.β-homo.Ξ· (X , Y + Z) β id ββ F.β-homo.Ξ· (Y , Z) β Ξ±β β (f ββ g) ββ h β Οβ ββ id β Οβ ββ¨ reflβ©ββ¨ reflβ©ββ¨ reflβ©ββ¨ reflβ©ββ¨ pullΛ‘ (sym splitβΚ³) β© + F.β Ξ±ββ²Β β F.β-homo.Ξ· (X , Y + Z) β id ββ F.β-homo.Ξ· (Y , Z) β Ξ±β β (f ββ g β Οβ) ββ h β Οβ ββ¨ reflβ©ββ¨ reflβ©ββ¨ sym-assoc β© + F.β Ξ±ββ²Β β F.β-homo.Ξ· (X , Y + Z) β (id ββ F.β-homo.Ξ· (Y , Z) β Ξ±β) β (f ββ g β Οβ) ββ h β Οβ ββ¨ reflβ©ββ¨ sym-assoc β© + F.β Ξ±ββ²Β β (F.β-homo.Ξ· (X , Y + Z) β id ββ F.β-homo.Ξ· (Y , Z) β Ξ±β) β (f ββ g β Οβ) ββ h β Οβ ββ¨ extendΚ³ (switch-fromtoΛ‘ ([ F.F ]-resp-β
Ξ±β²) F.associativity) β¨ + F.β-homo.Ξ· (X + Y , Z) β F.β-homo.Ξ· (X , Y) ββ id β (f ββ g β Οβ) ββ h β Οβ ββ¨ reflβ©ββ¨ pullΛ‘ (sym splitβΛ‘) β© + F.β-homo.Ξ· (X + Y , Z) β (F.β-homo.Ξ· (X , Y) β (f ββ g) β Οβ) ββ h β Οβ β + where + open Shorthands π.monoidal using () renaming (Ξ±β to Ξ±ββ²) + open Shorthands π.monoidal using (Ξ±β; Ξ»β) + open π.Equiv + open π using (sym-assoc; _β_; id; _ββ_; identityΚ³; assoc-commute-from; unitorΛ‘-commute-to) renaming (unitorΛ‘ to Ζ; associator to Ξ±) + open β-Reasoning π.monoidal + open β-Reasoning π.U + open CocartesianMonoidal π.U π.cocartesian using () renaming (associator to Ξ±β²) + open β-Properties π.monoidal using (coherence-invβ; coherence-invβ) + module Associator = Square {[πΓπ]Γπ} {π} {[πΓπ]Γπ} {π} {[FΓF]ΓF} {F} {[x+y]+z.F {π}} {x+[y+z].F {π}} (assoc-β {π}) ββ ββ βββββ +open LiftAssociator using (module Associator) + +module LiftBraiding where + module F = SymmetricMonoidalFunctor F + open π using (β₯; -+_; iβ; _+_; _+β_; Β‘; +β-congβ; Β‘-unique; -+-) + open Shorthands π.monoidal using (Οβ; Οβ) + ββ : NaturalTransformation (Hom[ πΓπ.U ][ πΓπ.unit ,-] βF FΓF.F) (Hom[ π.U ][ π.unit ,-] βF F.F βF (x+y.F {π})) + ββ = ntHelper record + { Ξ· = Ξ» { (X , Y) β record + { to = Ξ» { (x , y) β F.β-homo.Ξ· (X , Y) β x ββ y β Οβ} + ; cong = Ξ» { {x , y} {xβ²Β , yβ²} (βx , βy) β reflβ©ββ¨ βx β©ββ¨ βy β©ββ¨refl } + }Β } + ; commute = Ξ» { {XΒ , Y} {Xβ² , Yβ²} (x , y) {f , g} β + (extendΚ³ + (reflβ©ββ¨ (reflβ©ββ¨ identityΚ³) β©ββ¨ (reflβ©ββ¨ identityΚ³) + β reflβ©ββ¨ β-distrib-over-β + β extendΚ³ (F.β-homo.commute (x , y)))) + β reflβ©ββ¨ extendΛ‘ (sym identityΚ³) } + } + where + open π.Equiv + open π using (sym-assoc; _β_; id; _ββ_; identityΚ³; _β_; assoc) + open β-Reasoning π.monoidal + open β-Reasoning π.U + ββ : NaturalTransformation (Hom[ πΓπ.U ][ πΓπ.unit ,-] βF FΓF.F) (Hom[ π.U ][ π.unit ,-] βF F.F βF (y+x.F {π})) + ββ = ntHelper record + { Ξ· = Ξ» { (X , Y) β record + { to = Ξ» { (x , y) β F.β-homo.Ξ· (Y , X) β y ββ x β Οβ} + ; cong = Ξ» { {x , y} {xβ²Β , yβ²} (βx , βy) β reflβ©ββ¨ βy β©ββ¨ βx β©ββ¨refl } + }Β } + ; commute = Ξ» { {XΒ , Y} {Xβ² , Yβ²} (x , y) {f , g} β + (extendΚ³ + (reflβ©ββ¨ (reflβ©ββ¨ identityΚ³) β©ββ¨ (reflβ©ββ¨ identityΚ³) + β reflβ©ββ¨ β-distrib-over-β + β extendΚ³ (F.β-homo.commute (y , x)))) + β reflβ©ββ¨ extendΛ‘ (sym identityΚ³) } + } + where + open π.Equiv + open π using (sym-assoc; _β_; id; _ββ_; identityΚ³; _β_; assoc) + open β-Reasoning π.monoidal + open β-Reasoning π.U + open NaturalIsomorphism using (FβG) + open Symmetric π.symmetric using (braiding) + βββββ : (FβG (Hom[ π.U ][ π.unit ,-] βΛ‘ F.F βΛ‘ braiding)) βα΅₯ ββ β ββ + βββββ {X , Y} {f , g} = + reflβ©ββ¨ (identityΚ³ β sym-assoc) + β extendΚ³ + (extendΚ³ F.braiding-compat + β reflβ©ββ¨ (π.braiding.β.commute (g , f))) + β reflβ©ββ¨ pullΚ³ (sym (switch-tofromΛ‘ π.braiding.FXβ
GX braiding-coherence-inv) β coherence-invβ) + where + open Ο-Properties π.braided using (braiding-coherence-inv) + open π.Equiv + open π using (sym-assoc; identityΚ³) + open β-Reasoning π.monoidal + open β-Properties π.monoidal using (coherence-invβ) + open β-Reasoning π.U + module Braiding = Square {πΓπ} {π} {πΓπ} {π} {FΓF} {F} {x+y.F {π}} {y+x.F {π}} braiding ββ ββ βββββ +open LiftBraiding using (module Braiding) + +CospansMonoidal : Monoidal DecoratedCospans +CospansMonoidal = record + { β = β + ; unit = β₯ + ; unitorΛ‘ = [ L ]-resp-β
β₯+Aβ
A + ; unitorΚ³ = [ L ]-resp-β
A+β₯β
A + ; associator = [ L ]-resp-β
(β
.sym +-assoc) + ; unitorΛ‘-commute-from = Ξ» { {X} {Y} {f} β UnitorΛ‘.from f } + ; unitorΛ‘-commute-to = Ξ» { {X} {Y} {f} β UnitorΛ‘.to f } + ; unitorΚ³-commute-from = Ξ» { {X} {Y} {f} β UnitorΚ³.from f } + ; unitorΚ³-commute-to = Ξ» { {X} {Y} {f} β UnitorΚ³.to f } + ; assoc-commute-from = Ξ» { {X} {Xβ²} {f} {Y} {Yβ²} {g} {Z} {Zβ²} {h} β Associator.from _ } + ; assoc-commute-to = Ξ» { {X} {Xβ²} {f} {Y} {Yβ²} {g} {Z} {Zβ²} {h} β Associator.to _ } + ; triangle = triangle + ; pentagon = pentagon + } + where + open Category DecoratedCospans using (id; module Equiv; module HomReasoning) + open Equiv + open HomReasoning + open π using (β₯; Obj; U; +-assoc) + Ξ»β = UnitorΛ‘.FXβ
GXβ².from + Οβ = UnitorΚ³.FXβ
GXβ².from + Ξ±β = Associator.FXβ
GXβ².from + open Morphism U using (module β
) + open Monoidal +-monoidal using () renaming (triangle to tri; pentagon to pent) + triangle : {X Y : Obj} β DecoratedCospans [ DecoratedCospans [ β.β (id {X} , Ξ»β) β Ξ±β ] β β.β (Οβ , id {Y}) ] + triangle = sym L-resp-β β©ββ¨refl β sym L.homomorphism β L.F-resp-β tri β L-resp-β + pentagon + : {W X Y Z : Obj} + β DecoratedCospans + [ DecoratedCospans [ β.β (id {W} , Ξ±β {(X , Y) , Z}) β DecoratedCospans [ Ξ±β β β.β (Ξ±β , id) ] ] + β DecoratedCospans [ Ξ±β β Ξ±β ] ] + pentagon = sym L-resp-β β©ββ¨ refl β©ββ¨ sym L-resp-β β reflβ©ββ¨ sym L.homomorphism β sym L.homomorphism β L.F-resp-β pent β L.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 { cospan = record { fβ = fβ f , fβ g ; fβ = fβ f , fβ g } ; decoration = decoration f , decoration g}) } + ; iso = Ξ» { (X , Y) β Braiding.FXβ
GXβ².iso {X , Y} } + } + ; hexagonβ = sym L-resp-β β©ββ¨ refl β©ββ¨ sym L-resp-β β reflβ©ββ¨ sym L.homomorphism β sym L.homomorphism β L-resp-β hexβ β L.homomorphism β reflβ©ββ¨ L.homomorphism + ; hexagonβ = sym L-resp-β β©ββ¨refl β©ββ¨ sym L-resp-β β sym L.homomorphism β©ββ¨refl β sym L.homomorphism β L-resp-β hexβ β L.homomorphism β L.homomorphism β©ββ¨refl + } + where + open Symmetric π.symmetric renaming (hexagonβ to hexβ; hexagonβ to hexβ) + open DecoratedCospan + module Cospans = Category DecoratedCospans + open Cospans.Equiv + open Cospans.HomReasoning + open Functor L renaming (F-resp-β to L-resp-β) + +CospansSymmetric : Symmetric CospansMonoidal +CospansSymmetric = record + { braided = CospansBraided + ; commutative = sym homomorphism β L-resp-β comm β identity + } + where + open Symmetric π.symmetric renaming (commutative to comm) + module Cospans = Category DecoratedCospans + open Cospans.Equiv + open Cospans.HomReasoning + open Functor L renaming (F-resp-β to L-resp-β) diff --git a/Category/Monoidal/Instance/DecoratedCospans/Lift.agda b/Category/Monoidal/Instance/DecoratedCospans/Lift.agda new file mode 100644 index 0000000..c75f0db --- /dev/null +++ b/Category/Monoidal/Instance/DecoratedCospans/Lift.agda @@ -0,0 +1,114 @@ +{-# OPTIONS --without-K --safe #-} + +module Category.Monoidal.Instance.DecoratedCospans.Lift {o β e oβ² ββ² eβ²} where + +import Categories.Diagram.Pushout as PushoutDiagram +import Categories.Diagram.Pushout.Properties as PushoutProperties +import Categories.Morphism as Morphism +import Categories.Morphism.Reasoning as β-Reasoning +import Category.Diagram.Pushout as PushoutDiagramβ² +import Functor.Instance.DecoratedCospan.Embed as CospanEmbed + +open import Categories.Category using (Category; _[_,_]; _[_β_]; _[_β_]; module Definitions) +open import Categories.Functor using (Functor; _βF_) +open import Categories.Functor.Hom using (Hom[_][_,-]) +open import Categories.Functor.Properties using ([_]-resp-β
) +open import Categories.NaturalTransformation using (NaturalTransformation; _βα΅₯_) +open import Categories.NaturalTransformation.NaturalIsomorphism using (NaturalIsomorphism; _β_; _βΛ‘_) +open import Categories.NaturalTransformation.Equivalence using () renaming (_β_ to _β_) +open import Function.Bundles using (_β¨$β©_) +open import Function.Construct.Composition using () renaming (function to _ββ²_) +open import Functor.Exact using (RightExactFunctor; IsPushoutβPushout) + +open import Categories.Category.Monoidal.Bundle using (MonoidalCategory; SymmetricMonoidalCategory) +open import Categories.Functor.Monoidal.Symmetric using (module Lax) +open import Category.Cocomplete.Finitely.Bundle using (FinitelyCocompleteCategory) +open import Category.Instance.Cospans using (Cospans) +open import Category.Instance.DecoratedCospans using (DecoratedCospans) +open import Category.Monoidal.Instance.Cospans.Lift {o} {β} {e} using () renaming (module Square to Squareβ²) +open import Cospan.Decorated using (DecoratedCospan) + +open Lax using (SymmetricMonoidalFunctor) +open FinitelyCocompleteCategory + using () + renaming (symmetricMonoidalCategory to smc) + +module _ + {π : FinitelyCocompleteCategory o β e} + {π : FinitelyCocompleteCategory o β e} + {π₯ : SymmetricMonoidalCategory oβ² ββ² eβ²} + {π¦ : SymmetricMonoidalCategory oβ² ββ² eβ²} + {H : SymmetricMonoidalFunctor (smc π) π₯} + {I : SymmetricMonoidalFunctor (smc π) π¦} where + + module π = FinitelyCocompleteCategory π + module π = FinitelyCocompleteCategory π + module π₯ = SymmetricMonoidalCategory π₯ + module π¦ = SymmetricMonoidalCategory π¦ + module H = SymmetricMonoidalFunctor H + module I = SymmetricMonoidalFunctor I + + open CospanEmbed π I using (L; Bβ; BβL; RβB; β
-L-R) + open NaturalIsomorphism using (FβG) + + module Square + {F G : Functor π.U π.U} + (FβG : F β G) + (βHβIβF : NaturalTransformation (Hom[ π₯.U ][ π₯.unit ,-] βF H.F) (Hom[ π¦.U ][ π¦.unit ,-] βF I.F βF F)) + (βHβIβG : NaturalTransformation (Hom[ π₯.U ][ π₯.unit ,-] βF H.F) (Hom[ π¦.U ][ π¦.unit ,-] βF I.F βF G)) + (β : (FβG (Hom[ π¦.U ][ π¦.unit ,-] βΛ‘ (I.F βΛ‘ FβG))) βα΅₯ βHβIβG β βHβIβF) + where + + module F = Functor F + module G = Functor G + module βHβIβF = NaturalTransformation βHβIβF + module βHβIβG = NaturalTransformation βHβIβG + + open NaturalIsomorphism FβG + + IFβIG : I.F βF F β I.F βF G + IFβIG = I.F βΛ‘ FβG + + open Morphism using (module β
) renaming (_β
_ to _[_β
_]) + FXβ
GXβ² : β {Z : π.Obj} β DecoratedCospans π I [ F.β Z β
G.β Z ] + FXβ
GXβ² = [ L ]-resp-β
FXβ
GX + module FXβ
GX {Z} = _[_β
_] (FXβ
GX {Z}) + module FXβ
GXβ² {Z} = _[_β
_] (FXβ
GXβ² {Z}) + + module _ {X Y : π.Obj} (fg : DecoratedCospans π H [ X , Y ]) where + + open DecoratedCospan fg renaming (fβ to f; fβ to g; decoration to s) + open π using (_β_) + + squaresβcospan + : DecoratedCospans π I + [ Bβ (G.β f β FXβ
GX.from) (G.β g β FXβ
GX.from) (βHβIβG.Ξ· N β¨$β© s) + β Bβ (F.β f) (F.β g) (βHβIβF.Ξ· N β¨$β© s) + ] + squaresβcospan = record + { cospans-β = Squareβ².squaresβcospan FβG cospan + ; same-deco = reflβ©ββ¨ sym π¦.identityΚ³ β β + } + where + open π¦.HomReasoning + open π¦.Equiv + + module Cospans = Category (DecoratedCospans π I) + + from : DecoratedCospans π I + [ DecoratedCospans π I [ L.β (β.Ξ· Y) β Bβ (F.β f) (F.β g) (βHβIβF.Ξ· N β¨$β© s) ] + β DecoratedCospans π I [ Bβ (G.β f) (G.β g) (βHβIβG.Ξ· N β¨$β© s) β L.β (β.Ξ· X) ] + ] + from = sym (switch-tofromΛ‘ FXβ
GXβ² (reflβ©ββ¨ BβL β β
-L-R FXβ
GX β©ββ¨refl β RβB β squaresβcospan)) + where + open Cospans.Equiv using (sym) + open β-Reasoning (DecoratedCospans π I) using (switch-tofromΛ‘) + open Cospans.HomReasoning using (reflβ©ββ¨_; _β_; _β©ββ¨refl) + + to : DecoratedCospans π I + [ DecoratedCospans π I [ L.β (β.Ξ· Y) β Bβ (G.β f) (G.β g) (βHβIβG.Ξ· N β¨$β© s) ] β DecoratedCospans π I [ Bβ (F.β f) (F.β g) (βHβIβF.Ξ· N β¨$β© s) β L.β (β.Ξ· X) ] + ] + to = switch-fromtoΚ³ FXβ
GXβ² (pullΚ³ BβL β β
-L-R FXβ
GX β©ββ¨refl β RβB β squaresβcospan) + where + open β-Reasoning (DecoratedCospans π I) using (pullΚ³; switch-fromtoΚ³) + open Cospans.HomReasoning using (reflβ©ββ¨_; _β_; _β©ββ¨refl) diff --git a/Category/Monoidal/Instance/DecoratedCospans/Products.agda b/Category/Monoidal/Instance/DecoratedCospans/Products.agda new file mode 100644 index 0000000..f8ef542 --- /dev/null +++ b/Category/Monoidal/Instance/DecoratedCospans/Products.agda @@ -0,0 +1,104 @@ +{-# OPTIONS --without-K --safe #-} +{-# OPTIONS --lossy-unification #-} + +open import Categories.Category.Monoidal.Bundle using (SymmetricMonoidalCategory) +open import Categories.Functor.Monoidal.Symmetric using (module Lax) +open import Category.Cocomplete.Finitely.Bundle using (FinitelyCocompleteCategory) + +open Lax using (SymmetricMonoidalFunctor) +open FinitelyCocompleteCategory + using () + renaming (symmetricMonoidalCategory to smc) + +module Category.Monoidal.Instance.DecoratedCospans.Products + {o oβ² β ββ² eΒ eβ²} + (π : FinitelyCocompleteCategory o β e) + {π : SymmetricMonoidalCategory oβ² ββ² eβ²} + (F : SymmetricMonoidalFunctor (smc π) π) where + +import Categories.Morphism as Morphism +import Categories.Morphism.Reasoning as β-Reasoning + +open import Categories.Category using (_[_,_]; _[_β_]; _[_β_]; Category) +open import Categories.Category.Core using (Category) +open import Categories.Category.BinaryProducts using (BinaryProducts) +open import Categories.Category.Cartesian using (Cartesian) +open import Categories.Category.Cartesian.Bundle using (CartesianCategory) +open import Categories.Functor using (Functor; _βF_) renaming (id to idF) +open import Categories.Functor.Monoidal.Properties using (β-SymmetricMonoidal) +open import Categories.Functor.Monoidal.Construction.Product using (β-SymmetricMonoidalFunctor) +open import Categories.NaturalTransformation.Core using (NaturalTransformation; _βα΅₯_; ntHelper) +open import Category.Instance.Properties.SymMonCat {o} {β} {e} using (SymMonCat-Cartesian) +open import Category.Instance.Properties.SymMonCat {oβ²} {ββ²} {eβ²} using () renaming (SymMonCat-Cartesian to SymMonCat-Cartesianβ²) +open import Category.Cartesian.Instance.FinitelyCocompletes {o} {β} {e} using (FinitelyCocompletes-CC) +open import Category.Cartesian.Instance.SymMonCat {o} {β} {e} using (SymMonCat-CC) +open import Data.Product.Base using (_,_) +open import Categories.Functor.Cartesian using (CartesianF) +open import Functor.Cartesian.Instance.Underlying.SymmetricMonoidal.FinitelyCocomplete {o} {β} {e} using (Underlying) + +module SMC = CartesianF Underlying +module SymMonCat-CC = CartesianCategory SymMonCat-CC + +module π = FinitelyCocompleteCategory π +module π = SymmetricMonoidalCategory π + +module _ where + + open CartesianCategory FinitelyCocompletes-CC using (products) + open BinaryProducts products using (_Γ_) + + πΓπ : FinitelyCocompleteCategory o β e + πΓπ = π Γ π + + [πΓπ]Γπ : FinitelyCocompleteCategory o β e + [πΓπ]Γπ = (π Γ π) Γ π + +module _ where + + module _ where + + open Cartesian SymMonCat-Cartesianβ² using (products) + open BinaryProducts products using (_Γ_; _β_) + + πΓπ : SymmetricMonoidalCategory oβ² ββ² eβ² + πΓπ = π Γ π + module πΓπ = SymmetricMonoidalCategory πΓπ + + [πΓπ]Γπ : SymmetricMonoidalCategory oβ² ββ² eβ² + [πΓπ]Γπ = (π Γ π) Γ π + module [πΓπ]Γπ = SymmetricMonoidalCategory [πΓπ]Γπ + + module _ where + + open Cartesian SymMonCat-Cartesian using (products) + open BinaryProducts products using (_Γ_; _β_) + + smcπΓπ : SymmetricMonoidalCategory o β e + smcπΓπ = smc π Γ smc π + + smc[πΓπ]Γπ : SymmetricMonoidalCategory o β e + smc[πΓπ]Γπ = (smc πΓπ) Γ smc π + + FΓFβ² : SymmetricMonoidalFunctor smcπΓπ πΓπ + FΓFβ² = β-SymmetricMonoidalFunctor {oβ²} {ββ²} {eβ²} {oβ²} {ββ²} {eβ²} {π} {π} {o} {β} {e} {o} {β} {e} {smc π} {smc π} F F + + FΓF : SymmetricMonoidalFunctor (smc πΓπ) πΓπ + FΓF = β-SymmetricMonoidal FΓFβ² from + where + open Morphism SymMonCat-CC.U using (_β
_) + β
: smc πΓπ β
smcπΓπ + β
= SMC.Γ-iso π π + open _β
_ β
+ module FΓF = SymmetricMonoidalFunctor FΓF + + [FΓF]ΓFβ² : SymmetricMonoidalFunctor smc[πΓπ]Γπ [πΓπ]Γπ + [FΓF]ΓFβ² = β-SymmetricMonoidalFunctor {oβ²} {ββ²} {eβ²} {oβ²} {ββ²} {eβ²} {πΓπ} {π} {o} {β} {e} {o} {β} {e} {smc πΓπ} {smc π} FΓF F + + [FΓF]ΓF : SymmetricMonoidalFunctor (smc [πΓπ]Γπ) [πΓπ]Γπ + [FΓF]ΓF = β-SymmetricMonoidal [FΓF]ΓFβ² from + where + open Morphism SymMonCat-CC.U using (_β
_) + β
: smc [πΓπ]Γπ β
smc[πΓπ]Γπ + β
= SMC.Γ-iso πΓπ π + open _β
_ β
+ module [FΓF]ΓF = SymmetricMonoidalFunctor [FΓF]ΓF diff --git a/Category/Monoidal/Instance/Nat.agda b/Category/Monoidal/Instance/Nat.agda new file mode 100644 index 0000000..24b30a6 --- /dev/null +++ b/Category/Monoidal/Instance/Nat.agda @@ -0,0 +1,71 @@ +{-# OPTIONS --without-K --safe #-} + +module Category.Monoidal.Instance.Nat where + +open import Level using (0β) +open import Categories.Category.Monoidal.Bundle using (MonoidalCategory; SymmetricMonoidalCategory) +open import Categories.Category.Instance.Nat using (Nat; Nat-Cartesian; Nat-Cocartesian; Natop) +open import Categories.Category.Cartesian using (Cartesian) +open import Categories.Category.Cocartesian using (Cocartesian; module CocartesianMonoidal; module CocartesianSymmetricMonoidal) +open import Categories.Category.Cartesian.Monoidal using (module CartesianMonoidal) +open import Categories.Category.Duality using (coCartesianβCocartesian; CocartesianβcoCartesian) + +import Categories.Category.Cartesian.SymmetricMonoidal as CartesianSymmetricMonoidal + +Natop-Cartesian : Cartesian Natop +Natop-Cartesian = CocartesianβcoCartesian Nat Nat-Cocartesian + +Natop-Cocartesian : Cocartesian Natop +Natop-Cocartesian = coCartesianβCocartesian Natop Nat-Cartesian + +module Monoidal where + + open MonoidalCategory + open CartesianMonoidal using () renaming (monoidal to Γ-monoidal) + open CocartesianMonoidal using (+-monoidal) + + Nat,+,0 : MonoidalCategory 0β 0β 0β + Nat,+,0 .U = Nat + Nat,+,0 .monoidal = +-monoidal Nat Nat-Cocartesian + + Nat,Γ,1 : MonoidalCategory 0β 0β 0β + Nat,Γ,1 .U = Nat + Nat,Γ,1 .monoidal = Γ-monoidal Nat-Cartesian + + Natop,+,0 : MonoidalCategory 0β 0β 0β + Natop,+,0 .U = Natop + Natop,+,0 .monoidal = Γ-monoidal Natop-Cartesian + + Natop,Γ,1 : MonoidalCategory 0β 0β 0β + Natop,Γ,1 .U = Natop + Natop,Γ,1 .monoidal = +-monoidal Natop Natop-Cocartesian + +module Symmetric where + + open SymmetricMonoidalCategory + open CartesianMonoidal using () renaming (monoidal to Γ-monoidal) + open CocartesianMonoidal using (+-monoidal) + open CartesianSymmetricMonoidal using () renaming (symmetric to Γ-symmetric) + open CocartesianSymmetricMonoidal using (+-symmetric) + + Nat,+,0 : SymmetricMonoidalCategory 0β 0β 0β + Nat,+,0 .U = Nat + Nat,+,0 .monoidal = +-monoidal Nat Nat-Cocartesian + Nat,+,0 .symmetric = +-symmetric Nat Nat-Cocartesian + + Nat,Γ,1 : SymmetricMonoidalCategory 0β 0β 0β + Nat,Γ,1 .U = Nat + Nat,Γ,1 .monoidal = Γ-monoidal Nat-Cartesian + Nat,Γ,1 .symmetric = Γ-symmetric Nat Nat-Cartesian + + Natop,+,0 : SymmetricMonoidalCategory 0β 0β 0β + Natop,+,0 .U = Natop + Natop,+,0 .monoidal = Γ-monoidal Natop-Cartesian + Natop,+,0 .symmetric = Γ-symmetric Natop Natop-Cartesian + + Natop,Γ,1 : SymmetricMonoidalCategory 0β 0β 0β + Natop,Γ,1 .U = Natop + Natop,Γ,1 .monoidal = +-monoidal Natop Natop-Cocartesian + Natop,Γ,1 .symmetric = +-symmetric Natop Natop-Cocartesian + +open Symmetric public |
