\usepackagecolor\usepackage[matrix]xy\usepackageskak\usepackagecolor\usepackage[matrix]xy\usepackageskak Skip to content →

Author: lievenlb

Grothendieck stuff

January 13th, Gallimard published Grothendieck’s text Recoltes et Semailles in a fancy box containing two books.



Here’s a G-translation of Gallimard’s blurb:

“Considered the mathematical genius of the second half of the 20th century, Alexandre Grothendieck is the author of Récoltes et semailles, a kind of “monster” of more than a thousand pages, according to his own words. The mythical typescript, which opens with a sharp criticism of the ethics of mathematicians, will take the reader into the intimate territories of a spiritual experience after having initiated him into radical ecology.

In this literary braid, several stories intertwine, “a journey to discover a past; a meditation on existence; a picture of the mores of a milieu and an era (or the picture of the insidious and implacable shift from one era to another…); an investigation (almost police at times, and at others bordering on the swashbuckling novel in the depths of the mathematical megapolis…); a vast mathematical digression (which will sow more than one…); […] a diary ; a psychology of discovery and creation; an indictment (ruthless, as it should be…), even a settling of accounts in “the beautiful mathematical world” (and without giving gifts…)”.”

All literary events, great or small, are cause for the French to fill a radio show.

January 21st, ‘Le grand entretien’ on France Inter invited Cedric Villani and Jean-Pierre Bourguignon to talk about Grothendieck’s influence on mathematics (h/t Isar Stubbe).

The embedded YouTube above starts at 12:06, when Bourguignon describes Grothendieck’s main achievements.

Clearly, he starts off with the notion of schemes which, he says, proved to be decisive in the further development of algebraic geometry. Five years ago, I guess he would have continued mentioning FLT and other striking results, impossible to prove without scheme theory.

Now, he goes on saying that Grothendieck laid the basis of topos theory (“to define it, I would need not one minute and a half but a year and a half”), which is only now showing its first applications.

Grothendieck, Bourguignon goes on, was the first to envision the true potential of this theory, which we should take very seriously according to people like Lafforgue and Connes, and which will have applications in fields far from algebraic geometry.

Topos20 is spreading rapidly among French mathematicians. We’ll have to await further results before Topos20 will become a pandemic.

Another interesting fragment starts at 16:19 and concerns Grothendieck’s gribouillis, the 50.000 pages of scribblings found in Lasserre after his death.

Bourguignon had the opportunity to see them some time ago, and when asked to describe them he tells they are in ‘caisses’ stacked in a ‘libraire’.

Here’s a picture of these crates taken by Leila Schneps in Lasserre around the time of Grothendieck’s funeral.



If you want to know what’s in these notes, and how they ended up at that place in Paris, you might want to read this and that post.

If Bourguignon had to consult these notes at the Librairie Alain Brieux, it seems that there is no progress in the negotiations with Grothendieck’s children to make them public, or at least accessible.

Leave a Comment

Learners and Poly

Brendan Fong, David Spivak and Remy Tuyeras cooked up a vast generalisation of neural networks in their paper Backprop as Functor: A compositional perspective on supervised learning.

Here’s a nice introduction to neural networks for category theorists by Bruno Gavranovic. At 1.49m he tries to explain supervised learning with neural networks in one slide. Learners show up later in the talk.

PolyPoly is the category of all polynomial functors, that is, things of the form
p=ip(1)yp[i] : SetsSetsSip(1)Maps(p[i],S)p=ip(1)yp[i] : SetsSetsSip(1)Maps(p[i],S)
with p(1)p(1) and all p[i]p[i] sets.

Last time I gave Spivak’s ‘corolla’ picture to think about such functors.

I prefer to view pPolypPoly as an horribly discrete ‘sheaf’ PP over the ‘space’ p(1)p(1) with stalk p[i]=Pip[i]=Pi at point ip(1)ip(1).



A morphism pqpq in PolyPoly is a map φ1:p(1)q(1)φ1:p(1)q(1), together with for all ip(1)ip(1) a map φ#i:q[φ1(i)]p[i]φ#i:q[φ1(i)]p[i].

In the sheaf picture, this gives a map of sheaves over the space p(1)p(1) from the inverse image sheaf φ1Qφ1Q to PP.



But, unless you dream of sheaves in the night, by all means stick to Spivak’s corolla picture.

A learner ABAB between two sets AA and BB is a complicated tuple of things (P,I,U,R)(P,I,U,R):

  • PP is a set, a parameter space of some maps from AA to BB.
  • II is the interpretation map I:P×ABI:P×AB describing the maps in PP.
  • UU is the update map U:P×A×BPU:P×A×BP, the learning procedure. The idea is that U(p,a,b)U(p,a,b) is a map which sends aa closer to bb than the map pp did.
  • RR is the request map R:P×A×BAR:P×A×BA.

Here’s a nice application of PolyPoly’s set-up:

Morphisms PyPMaps(A,B)×Maps(A×B,A)yA×BPyPMaps(A,B)×Maps(A×B,A)yA×B in PolyPoly coincide with learners ABAB with parameter space PP.

This follows from unpacking the definition of morphism in PolyPoly and the process CT-ers prefer to call Currying.

The space-map φ1:PMaps(A,B)×Maps(A×B,A)φ1:PMaps(A,B)×Maps(A×B,A) gives us the interpretation and request-map, whereas the sheaf-map φ#φ# gives us the more mysterious update-map P×A×BPP×A×BP.

Learn(A,B)Learn(A,B) is the category with objects all the learners ABAB (for all paramater-sets PP), and with morphisms defined naturally, that is, maps between the parameter-sets, compatible with the structural maps.

A surprising result from David Spivak’s paper Learners’ Languages is

Learn(A,B)Learn(A,B) is a topos. In fact, it is the topos of all set-valued representations of a (huge) directed graph GABGAB.

This will take some time.

Let’s bring some dynamics in. Take any polynmial functor pPolypPoly and fix a morphism in PolyPoly
φ=(φ1,φ[]) : p(1)yp(1)pφ=(φ1,φ[]) : p(1)yp(1)p
with space-map φ1φ1 the identity map.

We form a directed graph:

  • the vertices are the elements of p(1)p(1),
  • vertex ip(1)ip(1) is the source vertex of exactly one arrow for every ap[i]ap[i],
  • the target vertex of that arrow is the vertex ϕ[i](a)p(1)ϕ[i](a)p(1).

Here’s one possibility from Spivak’s paper for p=2y2+1p=2y2+1, with the coefficient 22-set {green dot, yellow dot}{green dot, yellow dot}, and with 11 the singleton {red dot}{red dot}.



Start at one vertex and move after a minute along a directed edge to the next (possibly the same) vertex. The potential evolutions in time will then form a tree, with each node given a label in p(1)p(1).

If we start at the green dot, we get this tree of potential time-evolutions



There are exactly #p[i]#p[i] branches leaving a node labeled ip(1)ip(1), and all subtrees emanating from equal labelled nodes are isomorphic.

If we had started at the yellow dot we had obtained a labelled tree isomorphic to the subtree emanating here from any yellow dot.

We can do the same things for any morphism in PolyPoly of the form
φ=(φ1,φ[]) : SySpφ=(φ1,φ[]) : SySp
Now, we have a directed graph with vertices the elements sSsS, with as many edges leaving vertex ss as there are elements ap[φ1(s)]ap[φ1(s)], and with the target vertex of the edge labeled aa starting in ss the vertex φ[φ1(s)](A)φ[φ1(s)](A).

Once we have this directed graph on #S#S vertices we can label vertex ss with the label φ1(s)φ1(s) from p(1)p(1).

In this way, the time evolutions starting at a vertex sSsS will give us a p(1)p(1)-labelled rooted tree.

But now, it is possibly that two distinct vertices can have the same p(1)p(1)-labeled tree of evolutions. But also, trees corresponding to equal labeled vertices can be different.

Right, I guess we’re ready to define the graph GABGAB and prove that Learn(A,B)Learn(A,B) is a topos.

In the case of learners, we have the target polynomial functor p=CyA×Bp=CyA×B with C=Maps(A,B)×Maps(A×B,A)C=Maps(A,B)×Maps(A×B,A), that is
p(1)=Cand allp[i]=A×Bp(1)=Cand allp[i]=A×B

Start with the free rooted tree TT having exactly #A×B#A×B branches growing from each node.

Here’s the directed graph GABGAB:

  • vertices vχvχ correspond to the different CC-labelings of TT, one CC-labeled rooted tree TχTχ for every map χ:vtx(T)Cχ:vtx(T)C,
  • arrows vχvωvχvω if and only if Tω is the rooted C-labelled tree isomorphic to the subtree of Tχ rooted at one step from the root.

A learner AB gives a set-valued representation of GAB.

We saw that a learner AB is the same thing as a morphism in Poly
φ=(φ1,φ[]) : PyPCyA×B
with P the parameter set of maps.

Here’s what we have to do:

1. Draw the directed graph on vertices pP giving the dynamics of the morphism φ. This graph describes how the learner can cycle through the parameter-set.

2. Use the map φ1 to label the vertices with elements from C.



3. For each vertex draw the rooted C-labeled tree of potential time-evolutions starting in that vertex.

In this example the time-evolutions of the two green vertices are the same, but in general they can be different.



4. Find the vertices in GAB determined by these C-labeled trees and note that they span a full subgraph of GAB.



5. The vertex-set Pv consists of all elements from p whose (C-labeled) vertex has evolution-tree Tv. If vw is a directed edge in GAB corresponding to an element (a,b)A×B, then the map on the vertex-sets corresponding to this edge is
fv,(a,b) : PvPwpφ[φ1(p)](a,b)



A set-valued representation of GAB gives a learner AB.

1. Take a set-valued representation of GAB, that is, the finite or infinite collection of vertices V in GAB where the vertex-set Pv is non-empty. Note that these vertices span a full subgraph of GAB.

And, for each directed arrow vw in this subgraph, labeled by an element (a,b)A×B we have a map
fv,(a,b) : PvPw

2. The parameter set of our learner will be P=vPv, the disjoint union of the non-empty vertex-sets.

3. The space-map φ1:PC will send an element in Pv to the C-label of the root of the tree Tv. This gives us already the interpretation and request maps
I:P×ABandR:P×A×BA

4. The update map U:P×A×BP follows from the sheaf-map we can define stalk-wise
φ[φ1(p)](a,b)=fv,(a,b)(p)
if pPv.

That’s all folks!

Learn(A,B) is equivalent to the (covariant) functors GABSets.

Changing the directions of all arrows in GAB any covariant functor GABSets becomes a contravariant functor GoABSets, making Learn(A,B) an honest to Groth topos!

Every topos comes with its own logic, so we have a ‘learners’ logic’. (to be continued)

One Comment

Poly

Following up on the deep learning and toposes-post, I was planning to do something on the logic of neural networks.

Prepping for this I saw David Spivak’s paper Learner’s Languages doing exactly that, but in the more general setting of ‘learners’ (see also the deep learning post).

And then … I fell under the spell of Poly.

Spivak is a story-telling talent. A long time ago I copied his short story (actually his abstract for a talk) “Presheaf, the cobbler” in the Children have always loved colimits-post.

Last week, he did post Poly makes me happy and smart on the blog of the Topos Institute, which is another great read.

If this is way too ‘fluffy’ for you, perhaps you should watch his talk Poly: a category of remarkable abundance.

If you like (applied) category theory and have some days to waste, you can binge-watch all 15 episodes of the Poly-course Polynomial Functors: A General Theory of Interaction.

If you are more the reading-type, the 273 pages of the Poly-book will also kill a good number of your living hours.

Personally, I have no great appetite for category theory, I prefer to digest it in homeopathic doses. And, I’m allergic to co-terminology.

So then, how to define Poly for the likes of me?

Poly, you might have surmised, is a category. So, we need ‘objects’ and ‘morphisms’ between them.

Any set A has a corresponding ‘representable functor’ sending a given set S to the set of all maps from A to S
yA : SetsSetsSSA=Maps(A,S)
This looks like a monomial in a variable y (y for Yoneda, of course), but does it work?

What is y1, where 1 stands for the one-element set {}? Maps(1,S)=S, so y1 is the identity functor sending S to S.

What is y0, where 0 is the empty set ? Well, for any set S there is just one map S, so y0 is the constant functor sending any set S to 1. That is, y0=1.

Going from monomials to polynomials we need an addition. We add such representable functors by taking disjoint unions (finite or infinite), that is
iIyAi : SetsSetsSiIMaps(Ai,S)
If all Ai are equal (meaning, they have the same cardinality) we use the shorthand IyA for this sum.

The objects in Poly are exactly these ‘polynomial functors’
p=iIyp[i]
with all p[i]Sets. Remark that p(1)=I as for any set A there is just one map to 1, that is yA(1)=Maps(A,1)=1, and we can write
p=ip(1)yp[i]
An object pPoly is thus described by the couple (p(1),p[]) with p(1) a set, and a functor p[]:p(1)Sets where p(1) is now a category with objects the elements of p(1) and no morphisms apart from the identities.

We can depict p by a trimmed down forest, Spivak calls it the corolla of p, where the tree roots are the elements of p(1) and the tree with root ip(1) has one branch from the root for any element in p[i]. The corolla of p=y2+2y+1 looks like



If M is an m-dimensional manifold, then you might view its tangent bundle TM set-theoretically as the ‘corolla’ of the polynomial functor MyRm, the tree-roots corresponding to the points of the manifold, and the branches to the different tangent vectors in these points.

Morphisms in Poly are a bit strange. For two polynomial functors p=(p(1),p[]) and q=(q(1),q[]) a map pq in Poly consists of

  • a map ϕ1:p(1)q(1) on the tree-roots in the right direction, and
  • for any ip(1) a map q[ϕ1(i)]p[i] on the branches in the opposite direction

In our manifold/tangentbundle example, a morphism MyRmy1 sends every point pM to the unique root of y1 and the unique branch in y1 picks out a unique tangent-vector for every point of M. That is, vectorfields on M are very special (smooth) morphisms MuRmy1 in Poly.

A smooth map between manifolds MN, does not determine a morphism MyRmNyRn in Poly because tangent vectors are pushed forward, not pulled back.

If instead we view the cotangent bundle TM as the corolla of the polynomial functor MyRm, then everything works well.

But then, I promised not to use co-terminology…

Another time I hope to tell you how Poly helps us to understand the logic of learners.

Leave a Comment