← Home
petri-net category-theory algebraic-effects tropical-geometry incidence-matrix

Structuralism, Not Objects: Dirac Deltas, Algebraic Effects, and Why C Comes First

A thread this month between Piponi, Milewski, Baez, and Anachro (Mastodon, Aug 2026) proposed a move I want to relocate. The question was how to formalize the Dirac delta. The standard answer is Schwartz: build a space of distributions, exhibit δ as an object in it, and let ∫δ(x)f(x)dx mean pairing. Piponi's alternative: don't build the object. Treat δ as a signal and the integral as its handler. ∫δ(x−a)f(x)dx is an effectful expression — the delta raises, the surrounding integral catches, and the handler's semantics is "evaluate f at a." The delta never exists as a value; it exists as a protocol between an expression and its context.

Milewski connected this to the coend notation — ∫ has been category theory's integral sign since Yoneda, and everyone has always insisted it's just notation. Baez sharpened that insistence into a condition: a coend is literally an integral when the base category carries a measure and the target's coproducts are actually sums. Finite-dimensionally, the matrix trace via Einstein summation is the worked example — the coend formula and the summation formula are the same computation, not analogous computations. The move from metaphor to theorem is a checkable hypothesis about the base.

This post is the usual functor from a thread into pflow-world: project the move into our coordinates (get), then say what structure it should carry once it lands (put).

The get: composition forces structure; objects don't

Pflow's structuralism is Piponi's move, made years before we had his vocabulary for it. We never posited a categorical gadget that "represents" a Petri net and then derived properties from the representation. The incidence matrix C is the primary object — not a model of the net, the net's content — and everything downstream is discovered to converge on it. The ODE steady state reads integers off C. The tropical eigenstructure reads the same boundary off C. The R1CS compiler was supposed to rediscover it as a uniform/non-uniform witness split; as built, the arkworks circuit in pflow-rs (circuit.rs) sends every transition through one selector multiplexer, and the observer shows up only as width — a win has five input arcs to a play's two, and every step is padded to the widest. Three analyses, no shared representation object, one matrix — though not three independent discoveries, since each leg reads the same sink property (Earned Compression, checked against the code in October). The structure was forced by composition, not asserted by an embedding.

The discovery order is the argument, and it's the same discipline Baez applied. The core-observer boundary — with ρ as tokens consumed over tokens produced, plays at or below 1 and verdicts at 5 and above — was found empirically from C first, and only afterward matched to timed-event-graph and max-plus structure. We did not say "nets are tropical, therefore a boundary exists." We found the boundary, then checked whether the tropical claim was literal. That's exactly "is the coend an integral here?": not an analogy asserted up front, but a condition verified after the fact against the base you actually have. When the check passes, the analogy retires and a theorem takes its seat. On tic-tac-toe it hasn't passed cleanly yet. Strictly the core isn't a timed event graph — each empty-cell place has two consumers, the turn places nine — and the argument that one turn token serializes it applies just as well to the game_active token every win consumes. For the tropical leg the analogy is still on duty.

The put: is R an effect?

Here's what the Dirac framing should carry into pflow once relocated. In the zipper decomposition W(M) = 𝓛 × M × 𝓡, the left context is a value — tropical, monotone, immutable, and the comonad laws depend on that. But the right context has always sat awkwardly as a "value." 𝓡 is the predicate future: guards recomputed fresh from the marking on every step, never stored, never accumulated. We've been writing it as a component of W(M), as if the future were held.

The effect framing fits better. A guard is a signal; the step function — the counit ε : W(M) → M — is its handler. The transition doesn't consult a stored future; it raises "am I enabled?" and the context answers from the current marking. That's precisely the delta/integral split: the guard, like δ, has no free-standing denotation. It means something only under a handler, and the handler's semantics is "evaluate at the current point." The coKleisli morphism W(M) → M would then read: past as value, future as effect, present as the handler's scope.

Does this survive the comonad? Mostly, and the strain is informative. ε is unproblematic — it is the handler. The comultiplication δ : W(M) → W(W(M)) is where it pulls: re-contextualization must nest the right context, and you can't nest an effect the way you copy a value — you can only nest handlers. The pflow square argued δ is well-defined because 𝓛 is immutable (an intuition; nobody has checked the comonad laws for W(M)), and the effect reading suggests the real statement is asymmetric: δ duplicates the left context as a value and re-installs the right context as a handler stack. If that's right, W was never quite a product of three values — it's a value, a focus, and a scope.

One resonance, flagged as such: Baez's trace-as-Einstein-summation and "C is the primary object" rhyme. Both ask when a formal composition — coend, matrix product — is literally the thing it resembles (integral, sum) rather than structurally similar to it. I'm noting the rhyme, not claiming the theorem; the measure-on-the-base condition that Baez can check has no worked analogue here yet.

Open question

If R is effect-handled rather than value-held, does anything provable change at the core-observer boundary? The ρ boundary is a property of C, and C doesn't move. R sits on the other boundary — the contextual one, which was never in C (two boundaries) — and none of the three analyses takes that boundary as its subject. Each of them still handles the right context somehow — the ODE relaxation by leaving guards out entirely (go-pflow's mass-action vector field in solver/ode.go is built from arcs and rates, with no guard term), a ZK circuit by reifying them as constraints (the token-transfer circuit proves balance ≥ amount as a range check; the arkworks circuit has no guard term at all). If guards are effects, "reify as constraints" is a handler implementation, and whatever the observer costs in a circuit might be exactly the cost of handling — compression as the residue of a discharged effect. What it costs today is padding, not the non-uniform witness the theory predicted, so that would have to be measured before it could be argued. Or the reframing is just better notation for the same theorems. I don't yet know which, and the Dirac thread suggests the way to find out is not to argue the analogy but to state the condition and check the base.

What Changed

Revised 2026-11-09 against Earned Compression and The Pflow Square as corrected in October, the arkworks circuit in pflow-rs and go-pflow's ODE solver. Nothing was re-run.

  1. ZK leg. The post said the R1CS compiler rediscovers the boundary as a uniform/non-uniform witness split. The circuit sends every transition through one multiplexer; the observer's only cost is padding to the widest transition. The open question no longer leans on a non-uniform witness structure that isn't in the code.
  2. ρ. "ρ = 1 core" holds only for the counter-free core; in the 33-place net the plays are ρ = 2/3. The line still falls between plays and verdicts.
  3. The tropical check. The discovery-order paragraph implied the tropical claim was checked and passed. It hasn't passed cleanly on tic-tac-toe, and the three legs read one sink property, so their agreement isn't independent.
  4. Guards. The ODE doesn't assume anything about guards; it has none. The guard-as-constraint example is the token-transfer circuit; the arkworks circuit has no guards.

Related: The Pflow Square · The Zipper Whose Hole Is a Universe · Earned Compression · The Category Settle · The Incidence Reduction · Tropical Petri Nets

×

Follow on Mastodon