Category Theory
Zulip Server
Archive

You're reading the public-facing archive of the Category Theory Zulip server.
To join the server you need an invite. Anybody can get an invite by contacting Matteo Capucci at name dot surname at gmail dot com.
For all things related to this archive refer to the same person.


Stream: theory: category theory

Topic: action on presheaves over a graph


view this post on Zulip Matteo Capucci (he/him) (Oct 18 2022 at 19:43):

Suppose G=VsEtVG=V \overset{s}\rightarrow E \overset{t}\to V is a graph, consider SetG\mathbf{Set}^{G^*} where GG^* is the free category on GG.
There is a canonical endomorphism ()1:SetGSetG(-)^1 : \mathbf{Set}^{G^*} \to \mathbf{Set}^{G^*} given by 'pushing forward' data along edges.
That is, given FF, we define on vertices vVv \in V

F1(v)=t(e)=vF(s(e))F^1(v) = \sum_{t(e)=v} F(s(e))

and on paths p:vwp: v \to w

F1(p)=λ(e,x:F(s(e))).(p,F(e)(x))F^1(p) = \lambda (e, x:F(s(e))) \,.\, (p, F(e)(x))

One can show pretty easily this is well-defined on natural transformations too: ϕ1(v):F1(v)H1(v)\phi^1 (v): F^1(v) \to H^1(v) sends (e,x)(e,x) to (e,ϕs(e)(x))(e, \phi_{s(e)}(x)).

Now my questions:

  1. Does anyone know this construction? It seems pretty natural. (Also, it seems to work for any category C\cal C, not just graphs).
  2. How could I phrase it in purely abstract terms? On the object data, it is given by pull-pushing el(F)0V\mathrm{el}(F)_0 \to V across the span defining GG. But on arrows?
  3. Does it remind you of something known in geometry/topology?

view this post on Zulip Paolo Capriotti (Oct 18 2022 at 20:26):

Is the sum in the definition of F1F^1 meant to be over paths? If so, I think this is the left Kan extension along VGV \to G^* of the restriction of FF to VV. In other words, the endofunctor ()1(-)^1 is the comonad corresponding to the adjunction between SetV\mathbf{Set}^V and SetG\mathbf{Set}^{G^*} induced by left Kan extension.

view this post on Zulip Fabrizio Genovese (Oct 18 2022 at 21:01):

It is reminescent of some old papers about doing automata theory with formal power series. I'm sure @fosco will be able to tell you more. In any case yes, it seems like a very natural construction!

view this post on Zulip Fabrizio Genovese (Oct 18 2022 at 21:01):

And as you say, I'm sure it extends pretty nicely to Petri nets

view this post on Zulip Fabrizio Genovese (Oct 18 2022 at 21:12):

I'm not sure I can parse correctly the action on paths tho. Are you basically saying that given how you push all the sets forward, you are pushing forward the functions as well?

view this post on Zulip fosco (Oct 18 2022 at 21:22):

I don't understand the question but I'll get back to this tomorrow, or asap. What paper are you thinking of, @Fabrizio Genovese ?

view this post on Zulip Fabrizio Genovese (Oct 18 2022 at 21:23):

It was something by Gadducci or Kasangian, I dont' remember

view this post on Zulip Fabrizio Genovese (Oct 18 2022 at 21:29):

In any case I was thinking that if your functor maps vertexes vv to sets of the form AvSvA_v \otimes S_v (where \otimes can be either ×\times or \sqcup, for instance), you could apply this construction only on the SvS_v part. In itself this is not very interesting, but it models the idea that AA is 'private information' while SS is a 'stack' of messages to send. Operating only on the stack part would give you the dynamics. I was thinking about defining another functor SetGSetGSet^G \to Set^G that, instead, takes Av,SvA_v, S_v at each vertex and recomputes the stack accordingly, but it seems harder than I expected.

view this post on Zulip Fabrizio Genovese (Oct 18 2022 at 21:30):

This could be nice as the evolution of a computational system could be described as alternating applications of the dynamic and the computation functor

view this post on Zulip Fabrizio Genovese (Oct 18 2022 at 21:31):

You could actually try to do this with ordered sets as well, and now your evolution functor would keep track of the order in which the messages are delivered. This gets considerably messier tho, as for instance instead of graphs you need a way to order inbound and outbound edges :confused:

view this post on Zulip Matteo Capucci (he/him) (Oct 19 2022 at 04:28):

Paolo Capriotti said:

Is the sum in the definition of F1F^1 meant to be over paths? If so, I think this is the left Kan extension along VGV \to G^* of the restriction of FF to VV. In other words, the endofunctor ()1(-)^1 is the comonad corresponding to the adjunction between SetV\mathbf{Set}^V and SetG\mathbf{Set}^{G^*} induced by left Kan extension.

Ha! Beautiful! Spot on, thanks :D

view this post on Zulip Matteo Capucci (he/him) (Oct 19 2022 at 04:29):

Yes the sum happens over all paths landing at a given node

view this post on Zulip Matteo Capucci (he/him) (Oct 19 2022 at 04:30):

So given vv, F1(v)F^1(v) is the sum of all FF-data coming from the source of any edge pointing at vv

view this post on Zulip Matteo Capucci (he/him) (Oct 19 2022 at 04:31):

Fabrizio Genovese said:

I'm not sure I can parse correctly the action on paths tho. Are you basically saying that given how you push all the sets forward, you are pushing forward the functions as well?

I think that's a good way to put it

view this post on Zulip Matteo Capucci (he/him) (Oct 19 2022 at 04:32):

Fabrizio Genovese said:

This could be nice as the evolution of a computational system could be described as alternating applications of the dynamic and the computation functor

This is exactly what I'd like to do

view this post on Zulip Matteo Capucci (he/him) (Oct 19 2022 at 04:33):

Although I don't understand yet if ()1(-)^1 also induces a map FF1F \to F^1 that pushes sections forward

view this post on Zulip Fabrizio Genovese (Oct 19 2022 at 12:37):

Matteo Capucci (he/him) said:

Fabrizio Genovese said:

This could be nice as the evolution of a computational system could be described as alternating applications of the dynamic and the computation functor

This is exactly what I'd like to do

The thing that I find hard to justify in this perspective is the need for a presheaf. Tecnically all you need is to map vertexes to sets of states/messages. You don't need necessarily to map the edges to anywhere. Probably this is related to your comment about pushing the sections forward, I'm not sure

view this post on Zulip Fabrizio Genovese (Oct 19 2022 at 12:39):

Anyway: "You have a stack of incoming messages, you process them sequentially and eventually fill a stack of outgoing messages" is a pretty basic model of network+computation that imho has a lot of gas in the tank. So whatever effort goes in this direction, I'll advocate for that!