From 1528b2a49c0f006bdeff25a46f8f7ab6c23c73fd Mon Sep 17 00:00:00 2001 From: Jacques Comeaux Date: Sun, 19 Jul 2026 12:31:03 -0700 Subject: Simplify wiring diagrams using semiadditive dagger --- Data/WiringDiagram/Looped.agda | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'Data/WiringDiagram/Looped.agda') diff --git a/Data/WiringDiagram/Looped.agda b/Data/WiringDiagram/Looped.agda index 6f63e88..9669e4a 100644 --- a/Data/WiringDiagram/Looped.agda +++ b/Data/WiringDiagram/Looped.agda @@ -2,7 +2,7 @@ open import Categories.Category using (Category) open import Categories.Functor using (Functor; _∘F_) -open import Category.Dagger.Semiadditive using (IdempotentSemiadditiveDagger) +open import Category.Dagger.Semiadditive using (SemiadditiveDagger; IdempotentSemiadditiveDagger) open import Category.KaroubiComplete using (KaroubiComplete) open import Data.WiringDiagram.Balanced using (BWD) open import Level using (Level) @@ -12,8 +12,10 @@ module Data.WiringDiagram.Looped {π’ž : Category o β„“ e} {π’Ÿ : Category oβ€² β„“β€² eβ€²} {S : IdempotentSemiadditiveDagger π’ž} + (let module S = IdempotentSemiadditiveDagger S) + (let Sβ€² = S.semiadditiveDagger) (karoubiComplete : KaroubiComplete π’Ÿ) - (F : Functor (BWD S) π’Ÿ) + (F : Functor (BWD Sβ€²) π’Ÿ) where import Categories.Morphism.Idempotent as Idempotent @@ -22,11 +24,11 @@ import Categories.Morphism.Reasoning as β‡’-Reasoning open import Categories.Category using (Category) open import Categories.Functor.Properties using ([_]-resp-∘) open import Category.Dagger.2-Poset using (Dagger-2-Poset; dagger-2-poset; Maps; Map) -open import Data.WiringDiagram.Balanced S using (Include; Push; Pull) -open import Data.WiringDiagram.Core S using (loop; id-⧈; _β–‘_) +open import Data.WiringDiagram.Balanced Sβ€² using (Include; Push; Pull) +open import Data.WiringDiagram.Core Sβ€² using (loop; id-⧈; _β–‘_) open import Data.WiringDiagram.Equalities S using (loop∘loop; loop∘push∘loop; loop∘pull∘loop) -module BWD = Category (BWD S) +module BWD = Category (BWD Sβ€²) module F = Functor F module π’ž = Category π’ž module π’Ÿ = Category π’Ÿ @@ -67,10 +69,10 @@ module _ (A : π’ž.Obj) where module Push = Functor Push module Pull = Functor Pull -Sβ€² : Dagger-2-Poset -Sβ€² = dagger-2-poset S +S-≀ : Dagger-2-Poset +S-≀ = dagger-2-poset S -Merge : Functor (Maps Sβ€²) π’Ÿ +Merge : Functor (Maps S-≀) π’Ÿ Merge = record { Fβ‚€ = Looped ; F₁ = Ξ» {A} {B} f β†’ Ο€ B ∘ F.₁ (Push.₁ (map f)) ∘ forget A @@ -91,8 +93,8 @@ Merge = record π’Ÿ.id ∎ homo : {X Y Z : π’ž.Obj} - {f : Map Sβ€² X Y} - {g : Map Sβ€² Y Z} + {f : Map S-≀ X Y} + {g : Map S-≀ Y Z} β†’ Ο€ Z ∘ F.₁ (Push.₁ (map g π’ž.∘ map f)) ∘ forget X π’Ÿ.β‰ˆ (Ο€ Z ∘ F.₁ (Push.₁ (map g)) ∘ forget Y) ∘ Ο€ Y ∘ F.₁ (Push.₁ (map f)) ∘ forget X homo {X} {Y} {Z} {fβ€²} {gβ€²} = begin Ο€ Z ∘ F.₁ (Push.₁ (g π’ž.∘ f)) ∘ forget X β‰ˆβŸ¨ refl⟩∘⟨ F.F-resp-β‰ˆ Push.homomorphism ⟩∘⟨refl ⟩ @@ -113,7 +115,7 @@ Merge = record resp : {A B : π’ž.Obj} {f g : A π’ž.β‡’ B} β†’ f π’ž.β‰ˆ g β†’ Ο€ B ∘ F.₁ (Push.₁ f) ∘ forget A π’Ÿ.β‰ˆ Ο€ B ∘ F.₁ (Push.₁ g) ∘ forget A resp {A} {B} {f} {g} fβ‰ˆg = refl⟩∘⟨ F.F-resp-β‰ˆ (Push.F-resp-β‰ˆ fβ‰ˆg) ⟩∘⟨refl -Split : Functor (op (Maps Sβ€²)) π’Ÿ +Split : Functor (op (Maps S-≀)) π’Ÿ Split = record { Fβ‚€ = Looped ; F₁ = Ξ» {A} {B} f β†’ Ο€ B ∘ F.₁ (Pull.₁ (map f)) ∘ forget A @@ -134,8 +136,8 @@ Split = record π’Ÿ.id ∎ homo : {X Y Z : π’ž.Obj} - {f : Map Sβ€² Y X} - {g : Map Sβ€² Z Y} + {f : Map S-≀ Y X} + {g : Map S-≀ Z Y} β†’ Ο€ Z ∘ F.₁ (Pull.₁ (map f π’ž.∘ map g)) ∘ forget X π’Ÿ.β‰ˆ (Ο€ Z ∘ F.₁ (Pull.₁ (map g)) ∘ forget Y) ∘ Ο€ Y ∘ F.₁ (Pull.₁ (map f)) ∘ forget X homo {X} {Y} {Z} {fβ€²} {gβ€²} = begin Ο€ Z ∘ F.₁ (Pull.₁ (f π’ž.∘ g)) ∘ forget X β‰ˆβŸ¨ refl⟩∘⟨ F.F-resp-β‰ˆ Pull.homomorphism ⟩∘⟨refl ⟩ -- cgit v1.2.3