## Cohomology for amateurs—by an amateur

I have just finished a Tricki article about how to recognise situations where homology and cohomology can help you. (It is aimed at people who might have seen the definitions but felt uncomfortable about how to apply them.) Ages ago, I sort of promised to write something on this topic on this blog, so I am posting the article. This will have the added, though no doubt painful, benefit that people who know far more about the topic will be able to point out mistakes, misleading statements, unnecessarily complicated ways of thinking about things, and so on. But the one thing I do like is the (admittedly old-fashioned) way of looking at homology and cohomology as “soap-bubble homotopy”. See below for an explanation.

Quick description

There are several examples of two-dimensional topological invariants that take integer values, and that do not appear to have numerical generalizations in higher dimensions. When this is the case, it may well be that the correct way of generalizing your invariant is to regard the integers as elements of a homology or cohomology group. Then you may well be able to generalize it to higher dimensions by looking at higher homology or cohomology groups.

Introduction

The main content of this article is an extended discussion of Brouwer’s fixed point theorem. This could be thought of as one long example with various sub-examples of increasing dimension. Throughout the discussion we shall argue somewhat informally, since the main aim is not to give a rigorous development of homology theory, but rather to help the reader (or rather the reader who needs help with this) to recognise the kinds of circumstances in which homology is likely to be a useful tool. To do this properly would take many more articles, since there are many kinds of homology in many different contexts. But it is at least a start.

Example: How thinking about Brouwer’s fixed point theorem leads naturally to cohomology.

Part 1. The intermediate value theorem.

Here is an informal argument for the intermediate value theorem. Let $f$ be a continuous function from $[0,1]$ to $\mathbb{R}$ and suppose that $f(0)0$. For every real number $r$ let $X_r$ be the set of $t\in[0,1]$ such that $f(t)=r$. Although our official assumption is merely that $f$ is continuous, we shall pretend that a bit more is true and $f$ is a reasonably straightforward continuous function, so that for instance $X_r$ is always a finite set. (It is possible to deduce the general case from simplified cases when $f$ is well-behaved in this kind of way.)

Our strategy will be to understand well enough how the sets $X_r$ vary as $r$ varies to be able to prove that they are non-empty whenever $r$ lies between $f(0)$ and $f(1)$. For convenience we shall assume that $f(0)$ is the minimum value taken by $f$. (This is not a huge assumption, since we can replace $f$ by the continuous function $\max\{f(x),f(0)\}$, and we can perturb that slightly so that no value is taken more than finitely many times.)

A first observation that is encouraging is that typically if you perturb $r$ by a very small amount, then $X_r$ also changes in a very small way: if it contains $k$ points then those points just move slightly. When $r=f(0)$, $X_r$ consists of the single point $0$, so we might hope that there is no way of making $X_r$ disappear.

On the other hand, a slightly discouraging observation is that it is possible for points to appear and disappear. To see this, one can think of $X_r$ as the set of x-coordinates of the points where the line $y=r$ intersects the graph of $f$. If this line crosses over a local minimum of the graph, then a new point appears that splits immediately into two, and if it crosses a local maximum then two points come together and disappear.

But one then spots that these creations and annihilations of points always seem to create or annihilate pairs of points (except at the very moment of creation when you have a point of tangency). Since the number of points in $X_{f(0)}$ is $1$, and therefore odd, the number of points will always be odd (again, except when the line $y=r$ is tangent to the curve somewhere).

Another way of looking at this is to consider whether the graph of $f$ is crossing the line $y=r$ upwards or downwards. The points in the set $X_r$ will start with an up crossing, then alternate between down and up crossings, ending with an up. And although the number of crossings may change, the number of up crossings minus the number of down crossings will be constant. Since it starts as $1$, it is always $1$.

Part 2. Brouwer’s fixed point theorem in two dimensions.

Now let us give an informal proof of a statement that is easily seen to be equivalent to Brouwer’s fixed point theorem. The statement is that if $f$ is a continuous map from the square $S=[-1,1]^2$ to itself, and if $f(u,v)=(u,v)$ whenever $(u,v)$ is on the boundary of the square (which happens when either $u$ or $v$ is either $-1$ or $1$), then there must exist $(x,y)$ such that $f(x,y)=(0,0)$.

There are many informal (but convincing) arguments for this. The one we choose here is not obviously the best, but it is good from the point of view of demonstrating how the notion of homology emerges naturally, and it is a natural generalization of the discussion of the intermediate value theorem above. What we shall do is look for each $s$ at the set $P_s$ of points $(x,y)$ such that $f(x,y)=(s,t)$ for some $t$. That is, we shall take the vertical line segment $L_s$ from $(s,-1)$ to $(s,1)$ and look at its inverse image under $f$.

To simplify matters, let us assume to begin with that $f$ is a reasonably smooth bijection. If $g$ is the inverse of $f$, then $P_s=g(L_s)$ is a path from $(s,-1)$ to $(s,1)$. Therefore, $P_0=g(L_0)$ is a path from $(0,-1)$ to $(0,1)$, and $f$ is a continuous function from this path to $L_0$ that begins at $(0,-1)$ and ends at $(0,1)$. Hence, by the intermediate value theorem it must cross $(0,0)$.

Of course, this is not much of an achievement: if $f$ is a bijection then of course there is a point that maps to $(0,0)$. However, it does suggest a line of attack when $f$ is not a bijection: as we did when thinking about the intermediate value theorem, we just try to think what the sets $P_s$ could possibly look like and how they could vary as $s$ varies.

Here is an example that shows the kind of thing that can happen as $s$ goes from $-1$ to $1$. When $s=\pm 1$, $P_s$ equals the line segment $L_s$. Now imagine starting at $s=-1$ and taking $P_s=L_s$ for a while, but then at a certain time $u$, letting $P_u$ be the union of $L_u$ with one further point, which necessarily lies to the right of $L_u$ (since the sets $P_s$ are disjoint). As $s$ increases from this $u$, let the point turn into a tiny circle that expands until at some moment $v$ it becomes tangent to $L_v$. At this stage, all points inside the circle or to the left of $L_v$ have been used, but we can think of $P_v$ as a path that goes up $L_v$ from $(v,-1)$ until it touches the circle, goes once anticlockwise round the circle, and continues up $L_v$ to $(v,1)$. This path can be continuously deformed through the unused region until it reaches $L_1$. For example, if $s$ is just a tiny bit larger than $v$, then $P_s$ could start at $(s,-1)$, go up until it nearly hits the circle that touches $L_v$, go round keeping close to that circle until it hits $L_s$ again, and continue on up to $(s,1)$.

Here is another way of visualizing that example. Imagine the graph of the function that takes a point $(x,y)$ in $[0,1]^2$ to the x-coordinate of $f(x,y)$. Then $P_s$ is the set of points in this graph of height $s$. If $f$ were the identity function, then $P_s$ would equal $L_s$, and the graph would be a flat shape that sloped upwards at 45 degrees. If you intersected this graph with an ever-rising horizontal plane, you would see a unit line segment that moved steadily to the right, and the segment would be a contour line of the graph. The second example above was what you might get if you pushed part of the graph far enough downwards to make a local minimum. Now when the horizontal plane moved up, the intersections with the graph would start as before, but then the plane would touch the graph at the local minimum, adding a point to the intersection, and after that the point would expand into a circle, which would eventually touch the line (when the horizontal plane reached some kind of saddle point of the graph) and in general exhibit the kind of behaviour discussed in the last paragraph.

In any case, what we have just established is that the sets $P_s$ do not have to be paths, or even connected sets: they can for example be disjoint unions of paths with closed curves. However, all is far from lost. It seems that whatever the graph looks like, the only ways that the sets $P_s$ can change are as follows. You have a path that gradually moves to the right. Sometimes little closed curves can appear and grow. Sometimes these curves expand to the point where they touch each other. Immediately after they touch, the point where they touch pulls apart and the two curves have become one. And the reverse can happen: two parts of a curve can come round and meet each other, and a loop can break off, shrink, and disappear.

(If anyone was able to produce animations of these processes, it would be absolutely wonderful and would greatly enhance the article.)

But it seems as though whatever you do, $P_s$ will always contain a path from $(s,-1)$ to $(s,1)$. And since $f$ is a continuous function from $P_s$ to $L_s$, if that is the case, then by the intermediate value theorem there must be a point on this path where $f$ takes the value $(s,0)$. In particular, this is true when $s=0$.

Brouwer’s fixed point theorem in three dimensions.

Let us not try to prove rigorously that $P_s$ contains a path from $(s,-1)$ to $(s,1)$. Instead, let us assume that the argument just given was basically OK and see whether we can develop it into an inductive proof of Brouwer’s fixed point theorem, which we might hope to be able to do, given that we used the one-dimensional version (the intermediate value theorem) to prove the two-dimensional version.

This time we shall take a continuous function $f:[0,1]^3\rightarrow[0,1]^3$ that fixes the boundary, and attempt to persuade ourselves that there must be some $(x,y,z)$ such that $f(x,y,z)=(0,0,0)$. And to generalize the previous two arguments, for each $s\in[-1,1]$ we shall define $P_s$ to be the set of all $(x,y,z)$ such that the x-coordinate of $f(x,y,z)$ is $s$. We shall then think about how the sets $P_s$ can vary as $s$ goes from $-1$ to $1$, in the hope of being able to say enough about $P_0$ to establish that it must contain a point that maps to $(0,0,0)$.

What do we know about the sets $P_s$ (again, assuming for convenience that $f$ is a reasonably nice and generic function, which it will always be after a suitable perturbation)? We know that if $s=\pm 1$, then $P_{-1}$ is the square $\{(s,u,v):|u|,|v|\leq 1\}$, that in general $P_s$ contains the set $\{(s,u,v):\max\{|u|,|v|\}=1\}$, and that the sets $P_s$ are disjoint and vary continuously. We can think of them as “contour planes” of a continuous function defined on $[0,1]^3$, though now the graph of the function, being a four-dimensional object, is difficult to visualize.

Given this set-up and what we want to prove, an obvious hypothesis suggests itself, which generalizes what appeared to be the case, even if we did not prove it, in two dimensions. Perhaps for every $s$ the set $P_s$ contains a set $Q_s$ homeomorphic to a square, with boundary the set $\{(s,u,v):\max\{|u|,|v|\}=1\}$. If so, then we would have a continuous function from $Q_s$ to the square $\{(s,u,v):|u|,|v|\leq 1\}$, which we could convert, by suitable compositions, into a continuous function from the two-dimensional unit square to itself that fixed the boundary. Applying the two-dimensional result, we would then find a point that mapped to $(0,0)$ which we could then translate back to a point that mapped to $(0,0,0)$.

This all feels very promising. Unfortunately, it doesn’t work, as the following example shows. Define $L_s$ to be the square $\{(s,u,v):|u|,|v|\leq 1\}$. And now, as $s$ increases let $P_s$ begin by equalling $L_s$. Then at a certain moment, allow a point to appear to the right of $L_s$, which immediately becomes a small sphere. As $s$ continues to increase, let this sphere expand but at the same time elongate into a sausage shape, which bends round until the two ends meet. Just after they meet, let the meeting point disappear so that the sausage is now a torus. (All the while, $L_s$ forms another part of $P_s$ that has made no contact with the sausage/torus.) A bit later, as the torus expands and $L_s$ keeps moving towards it, the inevitable happens and they touch. Just after contact is made, the point of contact disappears, and now $P_s$ has become a surface whose boundary is the set $\{(s,u,v):\max\{|u|,|v|\}=1\}$. This surface is no longer homeomorphic to a square, but rather to a square with a handle. As $s$ continues to increase, this handle gets fatter and fatter (imagine a donut that you ice more and more until the hole disappears) until eventually it ceases to have a hole and $P_s$ is once more a surface homeomorphic to a square that moves continuously over to $L_1$.

If that made any sense, it has shown that $P_0$ can have an interesting topology. And clearly we could have given $P_0$ many more handles if we had wanted to. So where does that leave our project of finding an inductive proof of Brouwer’s fixed point theorem?

Well, it shows that the two-dimensional statement does not directly imply the three-dimensional statement, because the two-dimensional statement is too weak (as it just concerns surfaces that are homeomorphic to a square). But this is not a reason to give up trying: it is just an invitation to strengthen our inductive hypothesis.

How might we do this? An obvious answer is to try to work out what surfaces can arise in the three-dimensional problem and to prove an appropriate two-dimensional statement for all such surfaces.

Let us assume what in fact turns out to be the case: that in the three-dimensional problem $P_0$ will always have the topology of a square with some handles. Then the appropriate two-dimensional statement is that if you have a surface with that topology bounded by a square, and if you map the surface continuously to the square in such a way that the boundary is fixed, then the image of your map must contain the centre of the square.

Since we don’t want to throw away our earlier ideas, let us see if we can use the methods we had before to argue that this must indeed be the case. For consistency, let the square be $\{(0,y,z):|y|,|z|\leq 1\}$, so the surface is bounded by $\{(0,y,z):\max\{|y|,|z|\}=1\}$. And for each $s$, let us now define $R_s$ to be the inverse image of the line segment $\{(0,s,z):|z|\leq 1\}$. That is, $R_s$ is the set of all points in the surface that map to a point with $y$-coordinate equal to $s$.

We are in much the same situation as before, except that now our contour lines lie on a surface with handles instead of on a square. So how can they behave? Clearly little circles can form, expand, merge, pinch off and contract, just as before. But what about the handles? How do the curves (or collections of curves) $R_s$ get past handles?

To get a feel for this, imagine gradually lowering a torus into a basin of water and looking at the behaviour of the curve of points that are level with the surface of the water. Initially you will get a point, which will expand into a closed curve that will elongate. Then as the water starts to go over the whole of the bottom part of the torus, the elongated curve will pinch in the middle until it forms a figure of eight, which will then turn into two closed curves that will move away from each other. They will then come back and the whole process will be reversed.

The point to note here is that we are not observing any new phenomena: we still have little closed curves forming and merging with other curves, or being pinched off and disappearing. So it looks as though we have the ideas for a proof, even if we do not yet have the proof.

General discussion.

The point of this article is not to turn the above arguments into a rigorous proof, though that could undoubtedly be done. Rather, it is to draw attention to the kinds of thoughts that went into the arguments: thoughts about collections of curves with mergers and pinchings, about tidy arguments in low dimensions that do not generalize quite as one might hope to higher dimensions, and so on. All these are signs that homology is involved. And if that is the case, then the work that you would need to do to make the above arguments rigorous has already been done, so it is better to learn how to use the machinery that has been built. Best of all is of course to understand how the machinery is built, but the point is that the somewhat complicated work needed to make it rigorous should be done once and for all, and after that the machinery can just be used.

What are homology groups?

One way of thinking about homology is as what one might call “soap-bubble homotopy”. For example, if one is looking at curves in the plane with a few points $x_1,\dots,x_k$ removed, then two closed curves $C_1$ and $C_2$ will be homotopic if you can continuously deform $C_1$ to $C_2$ without crossing any of $x_1,\dots,x_k$, and the fundamental group of $\mathbb{R}^2\setminus\{x_1,\dots,x_k\}$ is formed out of homotopy classes. To be more accurate, the elements of the fundamental group are homotopy classes of closed curves that begin and end at one particular arbitrarily chosen point, known as the base point.

With homology, one no longer needs to bother with base points. But a bigger difference is that the basic objects are not closed curves but collections of closed curves (just as we were seeing in the discussions above). One can define a cycle to be a collection $\{C_1,\dots,C_m\}$, where the $C_i$ are closed curves (thought of as continuous functions $\gamma_i$ from $[0,1]$ to $\mathbb{R}^2$ such that $\gamma_i(0)=\gamma_i(1)$) that do not have to be distinct. (So the collection is not a set but a multiset.)

There is an equivalence relation on cycles that is given by the following rules. Let us think of a cycle as a collection of not necessarily closed paths $P_1,\dots,P_n$ that can be put together to form a collection of closed paths. Then we are allowed to reparametrize the $P_i$, or cut them up into smaller paths, or put two paths together if the end point of one is equal to the start point of another. We are also allowed to cancel two paths if one is the same as the other, but backwards. Finally, and most importantly, we are allowed to do continuous deformations of these paths as long as at every stage they can be put together to form collections of closed paths. This allows operations such as a circle stretching into a (two-dimensional) sausage shape, the two ends bending round until they meet, and then the point where they meet pulling apart so that you have two circles, one inside the other, traversed in opposite directions. Two equivalent cycles are called homologous, and the equivalence classes are called homology classes. The homology classes are the elements of the homology group. To add two homology classes, pick representatives $\{C_1,\dots,C_m\}$ and $\{D_1,\dots,D_n\}$ and take the homology class of the multiset $\{C_1,\dots,C_m,D_1,\dots,D_n\}$.

All this generalizes to higher dimensions. For example, if you have two spheres in some space and can continuously deform them until they touch (and if they are oriented in the same way), then the point where they touch can open up and the two spheres can become one sphere. In the other direction, you can pinch the equator of a sphere down to a point and then split that point up so that you have two spheres. And so on.

Now imagine taking two closed surfaces $S_1$ and $S_2$ in $\mathbb{R}^3\setminus\{(0,0,0)\}$ and gradually deforming them. If they are reasonably generic, then their intersection will be a one-dimensional set, and since that one-dimensional set will not have end points, it will be a collection of closed curves. (As an example, two spheres intersect in a circle, and a torus can intersect a suitably placed large sphere in two paths that are almost circles.) As the surfaces $S_1$ and $S_2$ move, so does their intersection, and the way it can move is remarkably similar to the processes we have described above: closed paths can merge or split, and so on. (Indeed, the description of a torus intersecting a plane was very much like this, though here we are thinking of closed bounded surfaces.) This observation suggests that the intersection of two homology classes is a well-defined homology class. That is, if you take two cycles in some space and intersect them, then the homology class of their intersection should be unchanged if you replace the cycles with homologous ones.

Under many circumstances, this is indeed the case, and it leads to the notion of cohomology. Given a $d$-dimensional manifold $M$, the cohomology group $H^n(M)$ consists of homology classes of codimension $n$, with addition defined just as it is in the homology group. This might seem rather artificial, since all we have done is taken the homology group and given it a new name ($H^n(M)$ instead of $H_{d-n}(M)$), but there are two immediate reasons for its being natural. The first is that if we have a continuous map from $M$ to an $n$-dimensional manifold, then the inverse image of a point will, in the generic situation, be a set of codimension $n$, and this is indeed the situation we found ourselves in above. Secondly, the intersection of two cohomology classes (as defined in the previous paragraph), one in $H^n(M)$ and the other in $H^m(M)$, belongs to $H^{n+m}(M)$. It can be shown that this binary operation turns the group $H^0(M)\oplus\dots\oplus H^d(M)$ into a graded ring: addition is defined pointwise, and multiplication is the obvious extension of the intersection operation just defined. This extra multiplicative structure is what gives cohomology its advantage over homology.

How thinking about Brouwer’s fixed point theorem leads naturally to cohomology (continued).

Let us return to the discussion about Brouwer’s theorem, this time assuming that all the basic facts about cohomology (chiefly that the product operation is well-defined) have been established. How can we convert the informal arguments into a statement about cohomology?

First, let us rephrase the problem very slightly. We have a continuous function $f$ from $[-1,1]^3$ to itself that fixes the boundary, and we want to prove that $(0,0,0)$ has a preimage. We have been trying to do this by first understanding the inverse image of $\{(x,y,z):x=0\}$, and then inside that the inverse image of $\{(x,y,z):x=y=0\}$ and finally inside that the inverse image of $\{(0,0,0)\}$. Our hope has been that the first set, being homologous to a square, is sufficiently similar to a square for the two-dimensional argument to continue to be valid.

This discussion is slightly complicated by the presence of the boundary, so our trick will be to convert $[-1,1]^3$ into a three-dimensional torus $\mathbb{T}^3$ by identifying parts of the boundary appropriately. To be precise, we shall identify $(1,y,z)$ with $(-1,y,z)$, $(x,1,z)$ with $(x,-1,z)$ and $(x,y,1)$ with $(x,y,-1)$. If we do this, then we can convert our continuous map $f:[-1,1]^3\rightarrow[-1,1]^3$ that fixes the boundary into a a continuous map $F:\mathbb{T}^3\rightarrow\mathbb{T}^3$, since $f$ always maps equivalent points to equivalent points. Then our aim is to prove that $(0,0,0)$ is contained in the image of $F$.

For $i=1,2,3$ let $T_i$ be the two-dimensional torus defined by taking all points $(x_1,x_2,x_3)\in\mathbb{T}^3$ such that $x_i=0$. Then $F^{-1}(0,0,0)$ is the intersection of the three sets $F^{-1}(T_i)$, each of which is the inverse image of $0$ under the continuous function $\gamma_i$ that takes $(x,y,z)$ to the $i$th coordinate of $F(x,y,z)$.

Let us write that less wordily: we are trying to prove that $\gamma_1^{-1}(0)\cap\gamma_2^{-1}(0)\cap\gamma_3^{-1}(0)\ne\emptyset$. (Strictly speaking we should write $\gamma_i(\{0\})$ here.) Now each set $\gamma_i^{-1}(0)$ is a representative of some element of the cohomology group $H^1(\mathbb{T}^3)$, and if we let $s$ vary from $0$ to $1$, the sets $\gamma_i(s)$ will move in a soap-bubbly way from $\gamma_i(0)$ to $\gamma_i(1)$, which is an informal way of saying that the cohomology class of $\gamma_i(s)$ remains constant. Therefore, since the product operation is well-defined, the cohomology class of the intersection $\gamma_1^{-1}(0)\cap\gamma_2^{-1}(0)\cap\gamma_3^{-1}(0)$ is the same as the cohomology class of the intersection $\gamma_1^{-1}(1)\cap\gamma_2^{-1}(1)\cap\gamma_3^{-1}(1)$. But that intersection is (at least in the case where no internal points map to the boundary) just the point $(1,1,1)$ (together with a plus sign that comes from the way the three sets $\gamma_i^{-1}(1)$ are oriented) and is therefore a non-trivial element of the cohomology group $H^3(\mathbb{T})$ (which is isomorphic to $\mathbb{Z}$). It follows that $\gamma_1^{-1}(0)\cap\gamma_2^{-1}(0)\cap\gamma_3^{-1}(0)$ is non-empty, since otherwise its cohomology class would be $0$.

General discussion.

The moral of the article so far (this is probably all that I am going to write, but maybe others could add some more examples), is that if your intuition tells you that inverse images of points or other nice sets should vary in a soap-bubbly way, then the effort of making that intuition precise has been done for you and encapsulated in the notion of a homology or cohomology group.

This is of course just the beginning of a huge story: there are many kinds of cohomology, and many applications that are nothing like the one just given. But it gives a start.

As a final remark, what is the meaning of the title of this article? Well, the homology group $H_0(M)$ of a manifold $M$ consists of equivalence classes of finite sets of points, each with a sign attached. Two points of opposite sign can come towards each other and then cancel out, and a pair of points of opposite sign can be created ex nihilo. (Think back to the intermediate value theorem and the crossing points of a graph with a horizontal line.) The sum of the signs is obviously invariant, and this invariant takes values in $\mathbb{Z}$. So the point is that if you have defined an integer invariant, and if it involved adding up signs attached to points, then the values of your invariant are really elements of a zeroth homology group. Once you think this way, then it makes it much clearer how to generalize your invariant to higher dimensions.

### 15 Responses to “Cohomology for amateurs—by an amateur”

1. Stones Cry Out - If they keep silent… » Things Heard: e66v4 Says:

[…] Math and more math. […]

2. Andrej Bauer Says:

The sort of animation that you wished for is easily made with Mathematica using the ContourPlot command. For example, see the animated GIF images at http://ditka.fmf.uni-lj.si/~andrej/curves/ . For example curve3.gif was generated by the following code (also posted at the URL):

h[{x_,y_}]:={((x-1/2)^2+y^2-1)*x,y}
curve[f_,s_]:= ContourPlot[f[{x,y}][[1]]==s,{x,-1,1},{y,-1,1}]
lst=Table[curve[h,s],{s,-1,1,0.01}];
Export["~/www/curves/curve3.gif",lst]


If someone can suggest a good function to try, I’ll generate the GIFs.

3. gowers Says:

Here’s my attempt to design a function that has contours that are described by the account I gave. I’ll start with $f(x,y)=x$, to get the straight line going from one side to another. I then want to perturb that by making a hole in it, so I need to add a function that’s zero on the boundary of the square and goes downwards. Also, I want the hole to be a bit to the right. So I think I’d go for something like $g(x,y)=(1-x)^2(1+x)^4(1-y^2)^6$ and would end up taking $h(x,y)=x-g(x,y)/3$. I’m doing this in my head so I’m not 100 percent certain that it would look nice, but I have put a bit of effort into it.

4. Andrej Bauer Says:

The function you suggested works nicely, but I had to change it to h(x,y) = x – g(x,y)^3 because division by three killed the bubble. The result is at http://ditka.fmf.uni-lj.si/~andrej/curves/gowers-faster.gif and it looks pretty nice. The line moves very slowly after it absorbs the bubble, so I made the animation go faster after the interesting bit with the bubble happens. Here is the Mathematica code that made the picture:

g[x_, y_] := (1 - x^2) (1 + x^4) (1 - y^2)^6
h[x_, y_] := x - g[x, y]^3
curve[f_, s_] := ContourPlot[f[x, y] == s, {x, -1, 1}, {y, -1, 1}]
(* Also try this: Animate[curve[h, s], {s, -1, 0}]*)
lst = curve[h, #] & /@
Join[Range[-1, -0.9, 0.001], Range[-0.9, -0.8, 0.005],
Range[-0.8, 1, 0.01]];
Export["~/www/curves/gowers-faster.gif", lst]


It should also be possible to animate surfaces this way. Feel free to use the animation however you like. Please copy it to your computer, I won’t keep it forever. And thank you for a very interesting post (as usual)!

5. Andrej Bauer Says:

I apologize for posting so many comments, but I made a further improvement. In the last attempt the bubble was there immediately at time 0. By changing the function slightly we get an animation that is exactly like the description in the post. Let’s see if the blog allows me to embed pictures (the address is http://ditka.fmf.uni-lj.si/~andrej/curves/gowers-better.gif):

The function used to generate this is h(x,y) = x – 0.8 * g(x,y)^5 with g(x,y) = (1-x)^2 (1+x)^4 (1 – y^2)^6.

6. Andrej Bauer Says:

Argh, now the blog incorrectly attached a closing parenthesis to the link. The new animation is at http://ditka.fmf.uni-lj.si/~andrej/curves/gowers-better.gif (I feel like a guy in a movie who leaves 20 messages on the answer machine.)

7. gowers Says:

Many thanks! Now all I need to do is work out how to attach that animation to the Tricki article …

8. Joseph George Says:

I have had a question about cohomology/homology ever since grad school. Perhaps this forum can help. When we are taught about the cup product, it is presented as additional structure in cohomology which homology does not possess. This operation essentially derives from the diagonal map from a space A into AxA. The cohomology is contravariant, so we get a map from H*(AxA) to H*(A) and from this and the Kunneth formula we get the cup product. My conjecture is that homology admits exactly the same amount of structure as cohomology, but because it is a covariant functor, the resulting algebraic structure is less familiar than a product; it’s more like a “coproduct”. Is this true?

• Matthew Emerton Says:

Yes, you get a coalgebra strucure on homology, which, as you remark, is less familiar.

Cohomology has other advantages, though, which are related to the fact that you get an algebra strucure, rather than a coalgebra structure: essentially, being contravariant, rather than covariant, is more natural (surprising as this might seem at first). For example, functions on spaces are contravariant: they pull-back. The same is true of differential forms (which is why these can be used to compute a version of cohomology — de Rham cohomology — rather than a version of homology). Vector fields, on the other hand, can’t be pushed forward in general (because several points might map to one point, so while you can push forward on individual fibres of the tangent bundle, you can’t pushforward a section of the tangent bundle in general). While there are covariant geometric structures, these are less familiar than functions or forms.

So the familiarity of the ring structure on cohomology is aligned (so to speak) with the familiarity of notions like functions and forms and their contravariant nature. It is these (and other) observations taken together that tend to make cohomology, rather than homology, the default choice in many situations.

9. A semana nos arXivs… « Ars Physica Says:

[…] Cohomology for amateurs — by an amateur […]

10. Math World | Cohomology for amateurs—by an amateur « Gowers's Weblog Says:

[…] gowers 2009-05-07 17:00:46 More: Cohomology for amateurs—by an amateur « Gowers's Weblog […]

11. isomorphismes (@isomorphisms) Says:

I would encourage mathematicians to learn javascript and SVG rather than mathematica for mathematical visualisation.

I would start with mozilla MDN and take serious looks at codepen.io.

12. isomorphismes (@isomorphisms) Says:

Dr. Gowers, I looked for your article on tricki and can’t find it. Here was my search path.

search “cohomology” — nothing
search “homology” — nothing