aboutsummaryrefslogtreecommitdiff
path: root/Functor/Instance/Cospan/Stack.agda
diff options
context:
space:
mode:
authorJacques Comeaux <jacquesrcomeaux@protonmail.com>2025-12-08 15:30:53 -0600
committerJacques Comeaux <jacquesrcomeaux@protonmail.com>2025-12-08 15:30:53 -0600
commitcb2efa506d9ecec48aad72deb10acb6ffba45970 (patch)
tree3fdec9635f55b2c90c1b68c616f97711e53d3f01 /Functor/Instance/Cospan/Stack.agda
parent826b0b6007249ef518c5cff458ce6dc5c95fd43a (diff)
Update category of cospans
Diffstat (limited to 'Functor/Instance/Cospan/Stack.agda')
-rw-r--r--Functor/Instance/Cospan/Stack.agda96
1 files changed, 48 insertions, 48 deletions
diff --git a/Functor/Instance/Cospan/Stack.agda b/Functor/Instance/Cospan/Stack.agda
index 03cca1f..b72219b 100644
--- a/Functor/Instance/Cospan/Stack.agda
+++ b/Functor/Instance/Cospan/Stack.agda
@@ -9,9 +9,11 @@ import Categories.Diagram.Pushout.Properties as PushoutProperties
import Categories.Morphism as Morphism
import Categories.Morphism.Reasoning as ⇒-Reasoning
-open import Categories.Category.Core using (Category)
+open import Categories.Category using (Category)
+open import Categories.Functor using (Functor)
open import Categories.Functor.Bifunctor using (Bifunctor)
-open import Category.Instance.Cospans 𝒞 using (Cospan; Cospans; Same; id-Cospan; compose)
+open import Category.Instance.Cospans 𝒞 using (Cospans)
+open import Category.Diagram.Cospan 𝒞 as Cospan using (Cospan; identity; compose; _⊗_)
open import Category.Instance.FinitelyCocompletes {o} {ℓ} {e} using () renaming (_×_ to _×′_)
open import Category.Cartesian.Instance.FinitelyCocompletes {o} {ℓ} {e} using (-+-; FinitelyCocompletes-CC)
open import Data.Product.Base using (Σ; _,_; _×_; proj₁; proj₂)
@@ -32,27 +34,19 @@ open DiagramPushout U×U using () renaming (Pushout to Pushout′)
open import Categories.Category.Monoidal.Utilities monoidal using (_⊗ᵢ_)
-together : {A A′ B B′ : Obj} → Cospan A B → Cospan A′ B′ → Cospan (A + A′) (B + B′)
-together A⇒B A⇒B′ = record
- { f₁ = f₁ A⇒B +₁ f₁ A⇒B′
- ; f₂ = f₂ A⇒B +₁ f₂ A⇒B′
- }
- where
- open Cospan
-
-id⊗id≈id : {A B : Obj} → Same (together (id-Cospan {A}) (id-Cospan {B})) (id-Cospan {A + B})
+id⊗id≈id : {A B : Obj} → identity {A} ⊗ identity {B} Cospan.≈ identity {A + B}
id⊗id≈id {A} {B} = record
{ ≅N = ≅.refl
- ; from∘f₁≈f₁′ = from∘f≈f′
- ; from∘f₂≈f₂′ = from∘f≈f′
+ ; from∘f₁≈f₁ = from∘f≈f
+ ; from∘f₂≈f₂ = from∘f≈f
}
where
open Morphism U using (module ≅)
open HomReasoning
open 𝒞 using (+-η; []-cong₂)
open coproduct {A} {B} using (i₁; i₂)
- from∘f≈f′ : id ∘ [ i₁ ∘ id , i₂ ∘ id ] 𝒞.≈ id
- from∘f≈f′ = begin
+ from∘f≈f : id ∘ [ i₁ ∘ id , i₂ ∘ id ] 𝒞.≈ id
+ from∘f≈f = begin
id ∘ [ i₁ ∘ id , i₂ ∘ id ] ≈⟨ identityˡ ⟩
[ i₁ ∘ id , i₂ ∘ id ] ≈⟨ []-cong₂ identityʳ identityʳ ⟩
[ i₁ , i₂ ] ≈⟨ +-η ⟩
@@ -64,14 +58,14 @@ homomorphism
→ (B⇒C : Cospan B C)
→ (A⇒B′ : Cospan A′ B′)
→ (B⇒C′ : Cospan B′ C′)
- → Same (together (compose A⇒B B⇒C) (compose A⇒B′ B⇒C′)) (compose (together A⇒B A⇒B′) (together B⇒C B⇒C′) )
+ → compose A⇒B B⇒C ⊗ compose A⇒B′ B⇒C′ Cospan.≈ compose (A⇒B ⊗ A⇒B′) (B⇒C ⊗ B⇒C′)
homomorphism A⇒B B⇒C A⇒B′ B⇒C′ = record
{ ≅N = ≅N
- ; from∘f₁≈f₁′ = from∘f₁≈f₁′
- ; from∘f₂≈f₂′ = from∘f₂≈f₂′
+ ; from∘f₁≈f₁ = from∘f₁≈f₁
+ ; from∘f₂≈f₂ = from∘f₂≈f₂
}
where
- open Cospan
+ open Cospan.Cospan
open Pushout
open HomReasoning
open ⇒-Reasoning U
@@ -89,56 +83,62 @@ homomorphism A⇒B B⇒C A⇒B′ B⇒C′ = record
P₃′ = IsPushout⇒Pushout (-+-.F-resp-pushout P₁×P₂.isPushout)
≅N : Q P₃′ ≅ Q P₃
≅N = up-to-iso P₃′ P₃
- from∘f₁≈f₁′ : from ≅N ∘ (f₁ (compose A⇒B B⇒C) +₁ f₁ (compose A⇒B′ B⇒C′)) ≈ f₁ (compose (together A⇒B A⇒B′) (together B⇒C B⇒C′))
- from∘f₁≈f₁′ = begin
+ from∘f₁≈f₁ : from ≅N ∘ (f₁ (compose A⇒B B⇒C) +₁ f₁ (compose A⇒B′ B⇒C′)) ≈ f₁ (compose (A⇒B ⊗ A⇒B′) (B⇒C ⊗ B⇒C′))
+ from∘f₁≈f₁ = begin
from ≅N ∘ (f₁ (compose A⇒B B⇒C) +₁ f₁ (compose A⇒B′ B⇒C′)) ≈⟨ Equiv.refl ⟩
from ≅N ∘ ((i₁ P₁ ∘ f₁ A⇒B) +₁ (i₁ P₂ ∘ f₁ A⇒B′)) ≈⟨ refl⟩∘⟨ +₁∘+₁ ⟨
from ≅N ∘ (i₁ P₁ +₁ i₁ P₂) ∘ (f₁ A⇒B +₁ f₁ A⇒B′) ≈⟨ Equiv.refl ⟩
- from ≅N ∘ i₁ P₃′ ∘ f₁ (together A⇒B A⇒B′) ≈⟨ pullˡ (universal∘i₁≈h₁ P₃′) ⟩
- i₁ P₃ ∘ f₁ (together A⇒B A⇒B′) ∎
- from∘f₂≈f₂′ : from ≅N ∘ (f₂ (compose A⇒B B⇒C) +₁ f₂ (compose A⇒B′ B⇒C′)) ≈ f₂ (compose (together A⇒B A⇒B′) (together B⇒C B⇒C′))
- from∘f₂≈f₂′ = begin
+ from ≅N ∘ i₁ P₃′ ∘ f₁ (A⇒B ⊗ A⇒B′) ≈⟨ pullˡ (universal∘i₁≈h₁ P₃′) ⟩
+ i₁ P₃ ∘ f₁ (A⇒B ⊗ A⇒B′) ∎
+ from∘f₂≈f₂ : from ≅N ∘ (f₂ (compose A⇒B B⇒C) +₁ f₂ (compose A⇒B′ B⇒C′)) ≈ f₂ (compose (A⇒B ⊗ A⇒B′) (B⇒C ⊗ B⇒C′))
+ from∘f₂≈f₂ = begin
from ≅N ∘ (f₂ (compose A⇒B B⇒C) +₁ f₂ (compose A⇒B′ B⇒C′)) ≈⟨ Equiv.refl ⟩
from ≅N ∘ ((i₂ P₁ ∘ f₂ B⇒C) +₁ (i₂ P₂ ∘ f₂ B⇒C′)) ≈⟨ refl⟩∘⟨ +₁∘+₁ ⟨
from ≅N ∘ (i₂ P₁ +₁ i₂ P₂) ∘ (f₂ B⇒C +₁ f₂ B⇒C′) ≈⟨ Equiv.refl ⟩
- from ≅N ∘ i₂ P₃′ ∘ f₂ (together B⇒C B⇒C′) ≈⟨ pullˡ (universal∘i₂≈h₂ P₃′) ⟩
- i₂ P₃ ∘ f₂ (together B⇒C B⇒C′) ∎
+ from ≅N ∘ i₂ P₃′ ∘ f₂ (B⇒C ⊗ B⇒C′) ≈⟨ pullˡ (universal∘i₂≈h₂ P₃′) ⟩
+ i₂ P₃ ∘ f₂ (B⇒C ⊗ B⇒C′) ∎
⊗-resp-≈
: {A A′ B B′ : Obj}
{f f′ : Cospan A B}
{g g′ : Cospan A′ B′}
- → Same f f′
- → Same g g′
- → Same (together f g) (together f′ g′)
+ → f Cospan.≈ f′
+ → g Cospan.≈ g′
+ → f ⊗ g Cospan.≈ f′ ⊗ g′
⊗-resp-≈ {_} {_} {_} {_} {f} {f′} {g} {g′} ≈f ≈g = record
{ ≅N = ≈f.≅N ⊗ᵢ ≈g.≅N
- ; from∘f₁≈f₁′ = from∘f₁≈f₁′
- ; from∘f₂≈f₂′ = from∘f₂≈f₂′
+ ; from∘f₁≈f₁ = from∘f₁≈f₁
+ ; from∘f₂≈f₂ = from∘f₂≈f₂
}
where
open 𝒞 using (-+-)
- module ≈f = Same ≈f
- module ≈g = Same ≈g
+ module ≈f = Cospan._≈_ ≈f
+ module ≈g = Cospan._≈_ ≈g
open HomReasoning
- open Cospan
+ open Cospan.Cospan
open 𝒞 using (+₁-cong₂; +₁∘+₁)
- from∘f₁≈f₁′ : (≈f.from +₁ ≈g.from) ∘ (f₁ f +₁ f₁ g) ≈ f₁ f′ +₁ f₁ g′
- from∘f₁≈f₁′ = begin 
+ from∘f₁≈f₁ : (≈f.from +₁ ≈g.from) ∘ (f₁ f +₁ f₁ g) ≈ f₁ f′ +₁ f₁ g′
+ from∘f₁≈f₁ = begin 
(≈f.from +₁ ≈g.from) ∘ (f₁ f +₁ f₁ g) ≈⟨ +₁∘+₁ ⟩
- (≈f.from ∘ f₁ f) +₁ (≈g.from ∘ f₁ g) ≈⟨ +₁-cong₂ (≈f.from∘f₁≈f₁′) (≈g.from∘f₁≈f₁′) ⟩
+ (≈f.from ∘ f₁ f) +₁ (≈g.from ∘ f₁ g) ≈⟨ +₁-cong₂ ≈f.from∘f₁≈f₁ ≈g.from∘f₁≈f₁ ⟩
f₁ f′ +₁ f₁ g′ ∎
- from∘f₂≈f₂′ : (≈f.from +₁ ≈g.from) ∘ (f₂ f +₁ f₂ g) ≈ f₂ f′ +₁ f₂ g′
- from∘f₂≈f₂′ = begin 
+ from∘f₂≈f₂ : (≈f.from +₁ ≈g.from) ∘ (f₂ f +₁ f₂ g) ≈ f₂ f′ +₁ f₂ g′
+ from∘f₂≈f₂ = begin 
(≈f.from +₁ ≈g.from) ∘ (f₂ f +₁ f₂ g) ≈⟨ +₁∘+₁ ⟩
- (≈f.from ∘ f₂ f) +₁ (≈g.from ∘ f₂ g) ≈⟨ +₁-cong₂ (≈f.from∘f₂≈f₂′) (≈g.from∘f₂≈f₂′) ⟩
+ (≈f.from ∘ f₂ f) +₁ (≈g.from ∘ f₂ g) ≈⟨ +₁-cong₂ ≈f.from∘f₂≈f₂ ≈g.from∘f₂≈f₂ ⟩
f₂ f′ +₁ f₂ g′ ∎
+private
+ ⊗′ : Bifunctor Cospans Cospans Cospans
+ ⊗′ = record
+ { F₀ = λ (A , A′) → A + A′
+ ; F₁ = λ (f , g) → f ⊗ g
+ ; identity = λ { {x , y} → id⊗id≈id {x} {y} }
+ ; homomorphism = λ { {_} {_} {_} {A⇒B , A⇒B′} {B⇒C , B⇒C′} → homomorphism A⇒B B⇒C A⇒B′ B⇒C′ }
+ ; F-resp-≈ = λ (≈f , ≈g) → ⊗-resp-≈ ≈f ≈g
+ }
+
⊗ : Bifunctor Cospans Cospans Cospans
-⊗ = record
- { F₀ = λ { (A , A′) → A + A′ }
- ; F₁ = λ { (f , g) → together f g }
- ; identity = λ { {x , y} → id⊗id≈id {x} {y} }
- ; homomorphism = λ { {_} {_} {_} {A⇒B , A⇒B′} {B⇒C , B⇒C′} → homomorphism A⇒B B⇒C A⇒B′ B⇒C′ }
- ; F-resp-≈ = λ { (≈f , ≈g) → ⊗-resp-≈ ≈f ≈g }
- }
+⊗ = ⊗′
+
+module ⊗ = Functor ⊗