Pushouts
The Pushouts module implements graph and sheaf pushout constructions, providing utilities for composing sheaves along spans. Below are the primary exported symbols.
CellularSheaves.NetworkSheaves.Pushouts — Module
Module for the categorical pushout of cellular sheaves over a fixed graph.
Given a span of sheaf morphisms
K --f--> F
|
g
|
v
Gthe pushout P = F ⊕_K G is the unique sheaf (up to isomorphism) equipped with morphisms iF : F → P and iG : G → P such that iF ∘ f = iG ∘ g, universal among all such cones.
For network sheaves over a fixed graph the pushout is computed stalkwise as a cokernel:
- At each vertex
v:P(v) = coker((f_v, -g_v) : K(v) → F(v) ⊕ G(v)) - At each edge
e:P(e) = coker((f_e, -g_e) : K(e) → F(e) ⊕ G(e)) - Restriction maps of
Pare induced from those ofFandGsimultaneously via the naturality conditions foriFandiG.
This module provides SheafSpan and pushout_sheaf.
CellularSheaves.NetworkSheaves.Pushouts.SheafSpan — Type
SheafSpanA span of sheaf morphisms
F ← K → Gwhere left : K → F and right : K → G share the same domain apex = K.
The inner constructor validates that the morphism index maps have the correct lengths relative to the apex's vertex and edge counts, and that all Vmap entries are valid indices into the respective feet. An AssertionError is thrown if any check fails.
Fields
left :: SheafMorphism— morphismK → F.right :: SheafMorphism— morphismK → G.apex :: EuclideanSheaf— the apex sheafK.F :: EuclideanSheaf— left foot.G :: EuclideanSheaf— right foot.
CellularSheaves.NetworkSheaves.Pushouts.pushout_sheaf — Method
pushout_sheaf(span::SheafSpan) -> (EuclideanSheaf, SheafMorphism, SheafMorphism)Convenience overload: compute the pushout of a SheafSpan.
CellularSheaves.NetworkSheaves.Pushouts.pushout_sheaf — Method
pushout_sheaf(f::SheafMorphism, g::SheafMorphism, K, F, G) -> (EuclideanSheaf, SheafMorphism, SheafMorphism)Compute the pushout of the span K --f--> F, K --g--> G in the category of network sheaves over the shared underlying graph.
Returns (P, iF, iG) where:
Pis the pushout sheaf.iF : F -> Pis the canonical injection fromF.iG : G -> Pis the canonical injection fromG.
The universal property holds: iF ∘ f ≈ iG ∘ g (up to numerical tolerance).
All three sheaves K, F, G must share the same underlying graph.