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.
also, nice depleted day convolution there in that blog post :sunglasses:
it's separating conjunction now
declaring it
Oh hmm.
Where is the depleted day convolution in that post?
it's the monoidal structure on presheaves!
congratulations to @Jade Master and @John Baez for their joint independent rediscovery of separation logic ^__^
??? lol
well, ok, if i were less generous i might say that it's an essential insight that resources need not be possible to combine in general
I see what you mean about day convolution. The day convolution here kind of reminds me of Minkowski sum.
i just looked up minkowski sum
it's day convolution :gun:
That is a bold claim but I guess I believe you
I don't really understand how this stuff relates to separation logic.
the standard general formulation of separation logic goes something like
you have a partial commutative monoid (PCM for short)
you think of its elements as "resources"
its power set is a complete boolean algebra, whose elements you can see as "assertions about a resource"
the operation of is called "separating conjunction" and it means " and independently hold of disjoint parts of the resource"
I don't think that John (definitely not me) discovered this idea about Petri nets and quantales.
well, i may have been being a bit tongue in cheek :halo:
anyway, sometimes you also generalize this stuff to ordered PCMs
and then youll probably want to work with downsets or upsets
but anyway, most of what that post is saying is basically the same exact thing as what you do in separation logic, w/ the PCM specialized to an ordered, non-partial one built from a petri net
whereas historically separation logic originated as specialized to the PCM of heap states
if you model the state of memory in a program at a particular point as a finite partial function from some domain of "addresses" to some codomain of "values", then this PCM has such finite partial functions as elements, and its operation is union but defined only when the memories have disjoint domains
Okay cool.
anyway, preordered PCMs are a special case of symmetric promonoidal preorders, which are indeed the fundamental structure you need in order to be able to put day convolution on presheaves (altho many presentations only look at the case where you have a full monoidal product)
What does promonoidal mean?
monoid object in Prof
so multiplying two objects only gets you a presheaf out
Oh yeah. Like a partial monoid on a preorder
a partial monoid gives this by just being either representable or empty and never anything more interesting
All this day convoluting is really useful in seperation logic. Wow.
:>
a slick way of setting up the fully general day convolution is like—so, in any monoidal category, if you have a comonoid structure on some object A and a monoid structure on B, you can make Hom(A, B) a monoid like this image.png
now, Prof is monoidal under product of categories
so if we have a comonoid object C in it and a monoid object D in it, we can turn Prof(C, D) into a monoidal category
The day convolution is the is the "separating conjunction" here?
yeah
now note that presheaves and copresheaves correspond to profunctors to or from 1 (um, i cant remember which is which), which is of course both a monoid and a comonoid
so you can make the category of presheaves or copresheaves monoidal by making your category a monoid or comonoid object in Prof (i may have that backward)
uh, i guess really i mean pseudomonoid/pseudocomonoid, whateverrrr
You would also need set to be a (co)monoid right?
(yes pseudo_
nope, remember Set isn't showing up as a domain or codomain in Prof
sarahzrf said:
now note that presheaves and copresheaves correspond to profunctors to or from 1 (um, i cant remember which is which), which is of course both a monoid and a comonoid
!
if you have a bona fide monoidal structure on your category, you get a pseudomonoid and pseudocomonoid in Prof, since you can turn functors into profunctors in 2 directions
and so you can get a day convolution on both presheaves and copresheaves
Day convolution is the profunctor composition of the first monoidal structure with the second right?
look @ that string diagram i posted :V
Ah wait that doesn't make sense
yeah sorry one sec.
(that's associativity, not the definition of the operation, but)
anyway, if you start out with a pseudomonoid or pseudocomonoid C in Prof, iirc you only get day convolution on presheaves or copresheaves, since you can only rig up C's half of that diagram on either the top or the bottom, not both ways
actually i guess this simplifies a bit if you're convolving specifically presheaves/copresheaves since in string diagram terms the monoid/comonoid structure on the tensor unit becomes totally implicit
(i dont actually know if this monoidal category structure on Prof(C, D) is standard and/or also referred to as "day convolution", but it would make sense to me if it was)
I don't see how the term with the hom of C is showing up in the day convolution from this. I'm probably missing something obvious.
hom of C?
OH
shit, sorry!!
those aren't cups and caps
notice the white dot in the middle & that they're forking—Y shaped
that's the monoid & comonoid operations
i could, probably stand to annotate better :|
Yeah I knew that.
wait then what do you mean by hom of C?
https://ncatlab.org/nlab/show/Day+convolution
The definition here has this C(c1 x c2,c) term.
oic, i thought you meant there was a hom in what i'd written >.<
that's because the formula there is for when the pseudo[co?]monoid structure on C in Prof comes from a pseudomonoid structure in Cat
you get a profunctor from a functor by putting it on one side of Hom
Yes. A monoidal category is the same as a pseudomonoid in Cat I'm pretty sure
Oh I see. You're doing a version starting with a promonoidal category.
i meant "monoidal category", im not more sure of that than you are, i just wanted to repeat "pseudomonoid" for prosody
Cool I get what's going on now.
:)
Thanks.
sorry for the scrambled explanation
It's a nice way to understand Day convolution.
well, to remember the definition maybe :shrug:
im not sure how enlightening it is as to what day convolution means
personally i think the day i learned that separating conjunction was an instance of day convolution was the day that day convolution clicked for me, or at least started to click
Yeah. This is pretty cool.
(i saw the classic, expanded definition of separating conjunction in the case where the PCM is memories considerably before i ever heard the word "coend")
anyway, the fact that day convolution generally admits a closed structure is sick as hell
i dont know of any particular name for it other than "the closed structure for day convolution", so i kinda prefer to use the name from separation logic, which is magic wand
because the connective is written like image.png
What is the seperation logic interpretation of the internal hom?
was about to write it down :halo:
in the (0, 0)-case, it's like
in other words: P wand Q holds of a resource if whenever you can merge it with a resource satisfying P, you get something satisfying Q
a resource satisfying P wand Q is a resource satisfying Q missing a resource satisfying P
i once saw a really great illustration of this but im not sure whether id be able to find it again—give me one sec
okay i found my screenshot of the illustration but id be hard pressed to find where it came from, which is a pity since i remember there being more great illustrations :(
what does . and mean?
. just goes after the variables in a quantifier
\cdot is the PCM operation
that illustration is nice, but the kerning is shit
I don't understand the illustration but I get what the magic wand is now.
oh ;_;
hmm, guess different visualizations work for different ppl
:shrug:
idea is supposed to be that things are marked with assertions that describe em
so we have this resource labelled P -* Q because it satisfies that
and the property it has which means that is that we can stick together any of these other pieces labelled P and then the whole composite can be circled and labeled Q
Should there be a there exists in the quantifier you wrote?
no
you're thinking for a?
Yeah. Like is it a "for all y and for all a"?
yeah
we don't want to require that something satisfying P -* Q be possible to merge with everything satisfying P, just that if it can be merged with a given thing satisfying P, then blah blah
so we need to ∀ the a
Should the first implication not be there?
why not
Is it " for all y and a with y in P, x times y = a implies that a is in Q"
yeah
sorry, you write enough coq or haskell and you get totally used to chained arrows
What you have written is " for all y and a with y in P implies x times y = a implies that a is in Q"
that's how you would write what you said!!!
formally!!
:thinking:
unless you put the quantifier into the forall
i couldve just done that i guess
but that's shorthand for what i wrote anyway!
:curry:
I'm a logic noob. Is it like for all y and a with y in P is the context and x times y = a is the assumption
you can say "for all a and y", and then you can add an assumption with "blah blah implies ..."
"y in P" is a premise here
we have 2 premises: y in P and x \cdot y = a
It's not like the first premise implies the second?
no, → is pretty much universally right-associative
So why should there be an implication?
for pretty much this reason
you could also put this as
That's by convention?
yeah
Ok
but it's about as standard of a convention as multiplication binding tighter than addition, where a convention is followed, has been my experience
like i said tho, u write enough coq and u just get used to stating "suppose n > m, and m is prime, and blah, then foo" as n > m -> prime m -> blah -> foo
I remember pemdas but there's no i for implication in it :upside_down:
pemdis
When you want someone to write something down
sarahzrf said:
and the property it has which means that is that we can stick together any of these other pieces labelled P and then the whole composite can be circled and labeled Q
holy shit that was a trainwreck of a sentence
i swear it's grammatical
"and the property it has which means that, is that we can..."
Is it like
not =
but ⊢
it's a closed structure!
of course we have an evaluation map, but of course it's not an iso in general
er, sorry, i misread the 2nd Q there as a P
did you intend to write that, or was it a typo
Yeah P makes more sense
...editing...
sdfjkj still wrong
Jade wrote:
I don't think that John (definitely not me) discovered this idea about Petri nets and quantales.
Yeah, in that blog article of mine I was reporting on this:
To anyone who wants a summary: they're getting a model of linear logic from a Petri net, simply by taking the free commutative monoidal category on it, then demoting that to a commutative monoidal poset, and then forming the poset of downsets in that, which is a commutative quantale (i.e., a commutative monoid in the category of cocomplete posets, also known as suplattices).
I think some of this was my own reinterpretation of what they are doing. I prefer the category theory to the linear logic.
We could summarize all this by saying: start with a Petri net, form the free commutative monoidal poset on that. A poset is a Bool-enriched category, the poset of downsets on a poset P is the category of Bool-enriched presheaves on P, and the method of transferring a monoidal structure from a monoidal poset to its poset of downsets is the Boole-enriched version of Day convolution.
it's (P -* Q) * P ⊢ Q
"a poset is a bool-enriched category" heyting is turning over in his grave :cry:
also it's definitely not \in, that doesn't make sense—maybe you mean \subseteq
which is indeed what i mean by ⊢
lol okay thank you for teaching me logic :)
but when i said it was still wrong, i meant you replaced the wrong Q with a P :sweat_smile:
ok nice :thumbs_up:
so if you satisfy (P -* Q) * P, you definitely satisfy Q, because you have a portion which satisfies P and you have a portion which, when combined with something that satisfies P, gives something that satisfies Q
but the converse doesn't hold
first: for an arbitrary P and Q, there may be resources satisfying Q that have no subpart satisfying P
and second: even if you can separate a resource that satisfies Q into a portion which satisfies P and another one, that doesnt mean the other one satisfies P -* Q
because P -* Q means Q needs to still hold if you replace the P portion with any other P portion that will fit
whereas maybe Q holding of the overall resource relies on it being this particular P portion
anyway, the fact that we have an adjunction is of course
P ⊢ Q -* R
<->
P * Q ⊢ R
i.e.:
anything satisfying P will satisfy R once a Q thing is merged with it
IFF
anything separately satisfying P and Q satisfies R
thinkin about the case where we have the monoidal product of concatenation on the set of finite sequences of elements of some set
then day convolution in the powerset is concatenation of languages, and its adjoint is this thing https://en.wikipedia.org/wiki/Quotient_of_a_formal_language
you can make statements like
okay maybe that's not very readable :sweat_smile:
for whatever it's worth, by i mean a sup and by i mean the other adjoint to , which is not symmetric since string concat is not