Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have found this tweet about git and don't know what to make of it.

git gets easier once you get the basic idea that branches are homeomorphic endofunctors mapping submanifolds of a Hilbert space.

I think it's written as a joke, but it could have been written in Chinese, and I'd understand about just as much.

Does this make any sense mathematically?

Or is it just as nonsensical as most "computer-speak" on most TV shows?

enter image description here

share|cite|improve this question
+1 for the GUI interface in Visual Basic – Lightness Races in Orbit Feb 13 '14 at 14:09
I prefer the AFIS fingerprint GUI client that wastes huge amounts of database and network to display loads of useless non-matches. – Martin James Feb 13 '14 at 14:12
@MartinJames: To be fair, even in reality you can somewhat imagine upper management saying "no no no, the user needs to see that progress is being made in the search!" – Lightness Races in Orbit Feb 13 '14 at 14:13
@LightnessRacesinOrbit - waiting for some lawyer to pop up and claim 'the AFIS system plainly is not effective because it displays non-matches - it doesn't know what it's doing! I move to dismiss all the fingerprint evidence from the axes and chainsaw'. – Martin James Feb 13 '14 at 14:20
This reminds me of this webpage. Each time you refresh the page, you get a fresh (non-sensical) mathematical statement. – Eff Jan 14 '15 at 15:04

This is an old joke that's done the rounds on the internet a few times.

Stephan Rauh gave it a pretty good treatment on his blog last year, in which he concludes that it is indeed nonsense:

Funny thing is it took me a while to figure out that the sentence really is utter nonsense. Most people immediately dismiss it as a joke – but they’ll never know for sure. It sounds oh so scientific. Mathematicians like me know what the words mean, and we know a lot of weird ways to make sense of them. So my first reaction was “It’s obviously a joke – but what’s the truth behind it?”.

Well, there’s none. Or rather, there is. You can make the branch operator a homeomorphic endofunctor living in a Hilbert space by defining a mapping from the set of all git repositories to the sequence space ℓ∞. You can achieve this easily by using the byte representations of the git repository.

You can do even simpler by interpreting the bytes a git repository consists of as a giant number. Thus every each git repository is an integer, i.e. an element of Z, which can easily embedded into a Hilbert space. Unfortunately the operations of the Hilbert space don’t map to a sensible operations on git repositories.

But still, it sounds intriguing. This much is true: the branch function is a surjective function mapping a git repository to another. Let’s use the commit operation as the addition. Obviously, the set of git repositories form an abelian group, but the branch operator isn’t a homomorphism. Actually, that’s good news, because it would be useless otherwise.

I had a lot of fun this afternoon to find out that almost every word of the sentence is nonsense:

  • branch() isn’t a functor but a function,
  • it’s not homomorphic, let alone homeophic,
  • it’s hard to see how the Hilbert space is defined and so on.
share|cite|improve this answer
This is awesome. Thanks for the link :) – Cristi Diaconescu Feb 13 '14 at 14:13
Unfortunately the argument is completely flawed. Any function can be made a functor. Just make its domain and co-domain categories. Remember that any set can be interpreted as a category with only objects and no morphisms. Thus every function can be interpreted as a functor. Thus any self-mapping of a set can be considered an endofunctor. The fact that it is hard to see how the Hilbert space should be defined adds to the statements. Once you see how such a space could be defined you most probably have understood enough of GIT. – Udo Klein Jan 16 '15 at 6:47
Recent work does actually seem to make it seem to be a more inspired joke than it actually was. In A Categorical Theory of Patches, I think merging a branch is a functor. As for the topological involvement, it may well come from homotopy theory. (But no, I don't pretend to understand these papers.) – Gilles Aug 18 '15 at 18:01

I tend to disagree with the arguments given by Stefan Rauh. First of all $l^\infty$ is not a Hilbert Space. However every discrete set (e.g. a countable set of numbers or a set of files or a set of Git repositories) can always be interpreted as a 0-manifold. If these manifoldes are to be interpreted as a submanifold of a Hilbert space there must be some metric which is compatible with the scalar product in this space. If its dimension is high enough, e.g. use $l^2$, then we can always embedd our 0-manifold and still be compatible with the requirements for a Hilbert Space. For example we might map each point to unit vector of an orthonormal basis.

So far I did not settle on what these Submanifolds are. I only noticed that any discrete set can be mapped to a 0-submanifold of a suitable Hilbert space.

So I want to restate the original quote to '... homeomorphic endofunctors mapping discrete sets.' Now the question becomes what the category should be.

Another observation is that the commits of a git repo form a directed graph. No matter how one branches this does not change the repository content. Instead it just labels some specific commit in some specific way.

So branching just adds another label to some node of this specific directed graph. Since the number of commits is finite the directed graph is also finite. Thus the possible labelings can be considered a countable discrete set. Excellent. I will make the vertices of these labelled graphs the objects of my category. The edges shall be the morphisms. The branch functor maps then just maps vertices (of one graph) to differently named vertices and edges (commits) to the "same" edges (commits) of the now named vertices. With other words: if you ignore the labels this is the identity mapping.

By construction this is an endomorphism. So we now already have an endofunctor that maps submanifolds of a Hilbert space. Now we need to take care of the "homeomorphic" part.

Choose whatever definition of homeomorphic that you want as long as it does not include the labels. Since the branch functor will only alter labels it will become homeomorphic.

Seems the statement is true nonsense.

Interpreted that way it is just a complicated way of saying "branching does not alter the commit structure".

share|cite|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.