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.
Hi all, I'm a systems biologists with some difficulties to understand monoidal categories. In Seven Sketches and elsewhere, these are visualized as wiring diagrams, but to me it occurs that they could also be visualized as shown in the example below on the right, where colors indicate one of many possibilities for the functor
image.png
If that's correct, I'm wondering what it means for this example from the Catlab docs:
@present Cooking(FreeSymmetricMonoidalCategory) begin
(WholeEgg, RawEgg, Shell, Egg, Pan, Cheese, Scramble)::Ob
crack::Hom(WholeEgg, RawEgg⊗Shell)
# fry::Hom(RawEgg⊗Pan, Egg⊗Pan) # Let's ignore for now
# scramble::Hom(RawEgg⊗Cheese⊗Pan, Scramble⊗Pan) # Let's ignore for now
end
Since is used in the Homs, it seems to me that I am working with the product category here, not with directly. Is that correct?
If so, what does look like then? Certainly it must contain WholeEgg, RawEgg, Shell, Egg, Pan, Cheese, Scramble
(and munit()
) as objects; and due to crack::Hom(WholeEgg, RawEgg⊗Shell)
(i.e. crack::Hom(munit()⊗WholeEgg, RawEgg⊗Shell)
) it must also contain c1::Hom(munit(), RawEgg) and c2::Hom(WholeEgg, Shell)
. Due to symmetry I would also assume that c3::Hom() and c4::Hom()
are part of . Does that seem right?
If so, I still don't know how exactly the ⊗ functor looks like. I see multiple possibilities (trivially it could even send all objects to munit()
and all morphisms to id(munit())
), but it does not seem necessary to pin it down to one of the possibilities.
Thanks in advance for your help!
Hi Paul! I'm not sure how to read your visualization. Are you defining a monoidal product on the category ? If so, it looks as if you're trying to define But that's not allowed: has to be a unit, so has to be
I similarly can't parse the coloring of the arrows on the left in any consistent way.
Regarding your question, no, is an object in itself, namely, the tensor product of the two objects and . In the same way, if I consider the monoidal structure on the category of sets given by the cartesian product and I mention I'm talking about the set not the object of
How it works is that is the symmetric monoidal category freely generated by the provided data. Every pair of objects in a symmetric monoidal category must have a tensor product, which is how you produce that object: you wouldn't be finished freely generated an smc if it weren't there yet!
You do not need to see as having domain , any more than you need to see a function as "really" having domain
This should clarify why need not exist. You can have homs between tensor products of objects that are not, themselves, tensor products of homs.
I have no idea what would even mean: homs have to have a domain and a codomain.
How the functor works, overall, is that has as objects all formal tensor products of strings of generating objects, such as Then the tensor product just takes two of these strings and concatenates them! Similarly, morphisms are built by tensor and composition out of generating morphisms, which in this case are just identities, and the transposition symmetries such as
There's a lot going on here, but I hope that helps!
Hi Kevin, thank you for your quick and detailed response. Yes, I was trying to define a product on ; would this coloring make sense (red maps to f, green maps to g, black maps to the respective identity morphisms; 1⊗1 is sent to 1, 1⊗B, B⊗B and B⊗1 are sent to B, the rest is sent to C)?
image.png
Anyway, as your response suggests, the picture above is not a good MWE for the Cooking category, as I would also have to include etc on the right side, so I would never be done drawing. Is the illustration below a better way to think about monoidal categories and the functor ?
image.png
That picture is now a complete description of a monoidal structure on , as it looks like you’ve realized: we could define it concisely as the monoidal structure given by coproduct, or in order theoretic terms, by join.
It’s true that monoidal categories are usually infinite for reasons you were starting to think about in the crossed-out section.
Thanks Kevin, I was thinking about your responses a bit and I assume freely generated means that you use the tensor product to generate an infinite set of objects from a finete set of objects.
This would then mean that
@present C1(FreeCategory) begin
(A, B, C)::Ob
f::Hom(A, B)
g::Hom(A, C)
end
contains three objects, A, B and C, and two non-identity morphisms, f and g; and while the ThCategory
would allow for a morphism h::Hom(B, C)
, to exist C1
does not contain it. C1
is a category with a finite number of objects and morphisms and can be presented as a graph via to_graphviz(C1)
.
But what about a monoidal category:
@present C2(FreeSymmetricMonoidalCategory) begin
(A, B, C)::Ob
f::Hom(A, B)
g::Hom(A, C)
h::Hom(A⊗B, C)
end
As before, this category contains the objects, A, B and C and two morphisms, f and g. Additionally, it contains munit()
and the morphism h. As before, while the ThSymmetricMonoidalCategory
would allow for a morphism Hom(B, C)
to exist, C1
does not contain it. In contrast to before, however, C2
has infinitely many objects and morphisms. Although not explicitly specified above, C2
contains objects like A⊗B, A⊗C, A⊗...⊗A, and morphisms like f⊗g::Hom(A⊗A,B⊗C), f⊗h::Hom(A⊗(A⊗B), B⊗C), g⊗...⊗g::Hom(A⊗...⊗A, C⊗...⊗C), etc. Since C2
is a category with an infinite number of objects and morphisms it cannot be presented as a graph (consistent with to_graphviz(C2)
erroring out). So the picture on the right below is not a complete picture of C2
(though I hope the color coding is consistent with the functorial property of ⊗ this time - dotted morphisms map to identities).
image.png
Also, a wiring diagram is never a complete representation of a monoidal category. It does a completely different thing: it is just one of many "programs" that can be written in the language of a certain monoidal category. Is this correct? I think some of my confusion came from asking myself how graph presentations of a category and wiring diagrams can be interconverted . But it seems that was a wrong question - they can't.
One thing that still puzzles me is whether the monoid presented below is also a monoidal category. Cause that would contradict my conclusion from above that "a category with an infinite number of objects (i.e. here ) and morphisms it cannot be presented as a graph"
image.png
Yes, everything up to your last question sounds right. A string diagram in a (symmetric) monoidal category represents a single morphism, not the whole category, and in the great majority of cases a symmetric monoidal category is infinite.
However, such an object can still be presented by a finite graph, which is exactly what the “@present” macro does! It’s specified as “the free symmetric monoidal category generated by the following graph [some minor details about what I mean by graph elided]”. The same thing is happening with your quote from Seven Sketches: the finite graph with a single vertex and a single loop freely generates the infinite category corresponding to the monoid of natural numbers.
I see. That makes sense. Thanks Kevin!