[Math] Is the category of vector bundles over a topological space abelian

ag.algebraic-geometryct.category-theoryvector-bundles

Consider the trivial bundle $V=\mathbb{R}\times\mathbb{R}$ and the map $f:V\rightarrow V$ given by $(t,x)\mapsto(t,tx)$. This has fibrewise kernels and cokernels, but the ranks jump at 0, so the kernel and cokernel of $f$ (as sheaves) are not vector bundles. This example (or similar) is often given to show that Vect($X$) is not in general abelian (or even preabelian).

But this doesn't strike me as correct. Just because $f$ has a kernel (say) $K$ in Sh($X$) which is not an object of Vect($X$) does not mean that there is not an object of Vect($X$) which is a kernel for $f$ in Vect($X$). In the example above, the zero bundle seems to do the job? Indeed I think you can always fix this rank-jumping behaviour by extending smoothly over the bad points (or am I wrong?).

The situation is further confused by Serge Lang claiming (in Algebra, p 134)
"the category of vector bundles over a topological space is an abelian category."

As a counter-appeal to authority Ravi Vakil has (Foundations of AG notes)
"locally free sheaves (i.e. vector bundles), along with reasonably natural
maps between them (those that arise as maps of $\mathcal{O}_X$-modules), don’t form an abelian
category."

So is the category of vector bundles over a topological space abelian or not?

Best Answer

You shouldn't expect vector bundles to form an abelian category because they are projective module objects over local ring objects in a category of sheaves over a space. In other words, there is really no more reason to expect this of vector bundles than you would of a category of finitely generated projective modules over a ring.

It might help to add that taking stalks at a point is an exact functor (it preserves all colimits and all finite limits), so kernels and cokernels would be preserved under taking stalks at points. Moreover, if the space is sober, then taking stalks collectively reflects kernels and cokernels as well. This should be a reassurance as to whether one is computing kernels and cokernels correctly.