MathOverflow is a question and answer site for professional mathematicians. 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

Often I say "pushforward" or "pullback", but I do not know exact meaning of these words.

Each time I see a map $f\colon X \to Y$, plus:

  1. I have some object $O_X$ associated with $X$ (say measure or subset);

  2. the map $f$ gives me a natural way to find corresponding object $O_Y$ associated with $Y$.

Then I say "$O_Y$ is pushforward of $O_X$" and I write $O_Y=f_*O_X$.

If I switch $X$ and $Y$ in (1) and (2), I say "$O_X$ is pullback of $O_Y$" and I write $O_X=f^*O_Y$.

I do this all the time, and no one complains, but I do not feel that it is right...

Could someone explain the right way to think about "pushforward" and "pullback"?

share|cite|improve this question
Are you asking about the rationale behind the terminology or the idea about what pullback and pushforward are? No one complains because this is established terminology and well-understood operations. Briefly, pushforward and pullback take structure forward or backward along a given arrow. – David Roberts Nov 11 '10 at 5:11
2… $$ $$ – Will Jagy Nov 11 '10 at 5:14
Often these arise when you have a(n op)fibred category, and $f^*O_X$ (resp. $f_*O_Y$) arise from (op)cartesian lifts of $f$ (where $X$ and $Y$ sit) to the category your data $O_{(-)}$ lives in. – David Roberts Nov 11 '10 at 5:15
I don't understand this question. Are you saying that you use these words without understanding their precise meanings? – Deane Yang Nov 12 '10 at 0:23
In any case, my "answer" doesn't really deserve the answer box, so I will leave it here as a comment. First, for many applications, I think the difference between pushforward and pullback boils down to the difference between left- and right-adjoints, so I recommend reading about those. Second, and more importantly, the language of fibered categories is pretty much perfect for understanding "things that can be pulled back". With some arrows reverse, you get the right structure for talking about "things that can be pushed forward". – Theo Johnson-Freyd Dec 14 '10 at 4:21

I do this all the time, and no one complains, but I do not feel that it is right...

I think a part of the problem is that the word "pullback" has two distinct meanings, which nevertheless are related.

I) Pullback whose opposite is pushout, rather than pushforward. This goes under the heading direct/inverse limits in (abstract) categories.

II) "Pullback" whose opposite is "pushforward". As mentioned by David Roberts and David Carchedi, category theory knows these under the guise of Grothendieck fibrations and opfibrations, but, as I understand, does not specify how to construct them. This seems to be another part of the problem.

My feeling is that there exist at least two rather general constructions.

1) Initial/final structures (as in Bourbaki). For instance, quotient topology and subset topology. When initial/final structures exist, they are constructed explicitly (see for instance 10.43 in The Joy of Cats), though not necessarily effectively. There is a whole philosophy/machinery around this: concrete categories.

2) The following three examples (one covariant and two contravariant) look related, and I don't know what category theory thinks about this relation.

a) The inverse image of a sheaf is a kind of pullback (in the sense of (I)), and the direct image of a sheaf is given by composition (no pushouts involved, by the way).

b,c) Induced maps and transfers in homology and cohomology. The standard algebraic view is that "pullback" (i.e. the induced map) $f^*$ is just the homology functor $h(f)$ applied to the map (i.e. something to be explained by axioms); and "pushforward" is something fancy involving integration or Poincare duality (i.e. something better not to be explained at all). Similarly (but vice versa) for homology.

There is also a secret geometric view, which common textbooks never reveal. Here "pullback" in both homology and cohomology is given by the category theoretic pullback ((I) above) whereas "pushforward" in both homology and cohomology is given by composition. "Pullback" in homology and pushforward in cohomology are defined only for a restricted class of maps (namely those maps that themselves represent cohomology classes). Still, they are just as natural as induced maps, but with respect to a different set of data; so when it comes to composing a "pullback" with a "pushforward" (which amounts to a cup or cap-product), transversality has to be applied, which breaks geometric naturality. (With a hint at Steenrod squares. Of course, nothing ever breaks naturality on the algebraic level.) Again, there is a whole philosophy/machinery about this, developed in Buoncristiano-Rourke-Sanderson, A geometric approach to homology theory (start from Chapter 2). An elementary warm-up with pictures is in Chapter 1 of Fenn's Techniques of Geometric Topology, and another elementary warm-up is in Kreck's recent book; but to see the above picture clearly it is best to read B-R-S. A short summary is in section 2 here.

share|cite|improve this answer

I would suggest a very simple way of thinking about these: you have some objects on both $X$ and $Y$ and you want to relate them, but for that they would need to reside on the same space. So you want to "move" them back and forth (a.k.a. forward). The functors $f^*$ and $f_*$ do exactly this.

It may be reasonable to imagine yourself as part of the action and anchor yourself to the source of the map, that is, $X$. From that point of view moving something from $X$ to $Y$ would require pushing while the opposite would require pulling.

share|cite|improve this answer
Thank you. I do not have clear picture what is exactly "move them back and forth" (I only have bunch of examples). That makes me to feel bit uncomfortable. But it is better if everyone feels the same :) – ε-δ Nov 11 '10 at 16:43
I am not sure which part is giving you difficulties: "move" or "back and forth". One important point is that sheaves on $X$ and sheaves on $Y$ live in different categories, so in order to have them interact you have to "move" ("transport", "map" if you will) one of them to the other category. The "back and forth" is just a manner of speech: trying to indicate whether it goes from $X$ to $Y$ or vice versa. The arrow that stands for the map indicates a "direction" so you might as well say "forward" or "back". – Sándor Kovács Nov 12 '10 at 14:15

Like many math terms, the words "pushforward" and "pullback" do not necessarily have unique rigorous universal definitions. Or at least I don't know if they do. Their informal definitions are exactly as you describe. But in each particular setting, you have to figure out whether they have a proper definition or not.

I will just give some examples (despite you wanting more than that). First, if you have two vector spaces $X$ and $Y$ and a linear map $f: X \rightarrow Y$, then it is reasonable (but not common) to call $f(x)$ the "pushforward" of $x \in X$. Moreover, $f$ induces naturally the adjoint map $ f^* : Y^* \rightarrow X^* $, and it is natural to call $ f^* (\eta) $ the "pullback" of $\eta \in Y^*$. I would not call $f^{-1}(y)$ the "pullback" of $y \in Y$, because it is a set rather than a vector. The idea, I think, is that pushforward and pullback should be functorial in some sense so that they should map an object (here a vector) to another object of the same type (and not a set of objects) but in the other space named in the map.

This generalizes naturally to smooth vector bundles. If you have a vector bundle $X$ over a manifold $M$, another vector bundle $Y$ over $N$, and a bundle map $f: X \rightarrow Y$, then all of the above generalizes naturally to elements of the bundle.

You can also define the pullback of a bundle itself. In other words, instead of viewing elements of a vector bundle as the objects, view the vector bundles themselves as objects. Given a map $f: M \rightarrow N$ and a vector bundle $Y$ over $N$, then there is a natural notion of the pullback of $Y$ as a vector bundle $f^*Y$ over $M$. But there is no notion of a pushforward, because if $f$ is not a diffeomorphism, you won't have the necessary uniqueness and smoothness to define the pushforward as a vector bundle. Of course, if $f$ is a diffeomorphism, you can cheat and define the pushforward as the pullback of the inverse map.

Similarly, given a section $s$ of the bundle $Y$, you can pull it back via the map $f$ to define a (smooth) section $f^*s = s\circ f$ of $f^*Y$. But in the smooth category there is way to pushforward a smooth section.

Everything changes when you switch from bundles to sheaves and from smooth to holomorphic or algebraic objects, because singularities become much more manageable. So pushforward becomes well-defined where they were not in the smooth category. But since I'm not a working expert in this stuff, I'd prefer to leave the details to someone else.

share|cite|improve this answer
Another instructive example is functions versus measures. – Deane Yang Nov 13 '10 at 16:15

One rationale for the terminology pullback is, what your "extra structure" over $Y$ is a vector bundle, of more generally, fiber bundle, $V \to Y$, then the total space of $f^*V$ together with its projection, sit in a pullback square (in the sense of category) with $X \to Y$ on the bottom and $f^*V \to V$ on the top. If your "extra stucture" cannot be thought of as a having an underlying object and a map down to $X$, then you most appeal to what David Robert says- $f^*V$ arsises from a so-called Cartesian-lift.If you're interested in the category theory behind this, look up Grothendeick fibrations. The idea is, if the category of such objects over $X$, say $C_X$ (so for example $C_X$=vector bundles over $X$) depend contravariantly on $X$, then one can pullback objects of $C_Y$ to those in $C_X$ by using a Cartesian lift. If it instead, the dependence is covariant, you can use an opcartesian lift to pushforward objects of $C_X$ to $C_Y$. If the dependence goes both ways, then we can do both. If you really want to get a hang on this, try working this out for some examples you know and see that it "spits out" what you expect.

It's worth noting, that the use of lifts is not strictly necessary, depending on how you are given your data. Essentially, there are two different ways of looking at (pseudo)functors from a category into the category of categories (e.g. $VectBun:X \mapsto VectBun(X)$)- one is as actual functors, and one is as fibered categories. The first way makes is clear already what your induced maps are, whereas, for fibrations, you need to use lifts- but here the lifts resemble taking the pullback in the case of vector bundles, so, it is not a bad way of thinking about it.

share|cite|improve this answer
I'm sorry, but can you think say of a function on Y as a vector bundle over Y? – ε-δ Nov 11 '10 at 16:45
Ah, I see some of the confusion. There are notions of pullback and pushforward for things like n-forms (which include functions) which is subtly different from pullback and pushforward to sheaves/bundles (but I would be wary of talking about pushforward for bundles). 'Pullback' of a function is just precomposition. Pushforward is integration, when it is possible. PS functions are sections of trivial vector bundles - so you really want to think about the pullback (say) of the sheaf of sections of the vector bundle. – David Roberts Nov 11 '10 at 22:36
I want to see the meaning of "pushforward/pullback", not just a bunch of examples... I agree, it should have some categorical meaning, but I know almost nothing about categories. – ε-δ Nov 12 '10 at 2:08

I think that in general, the word "pullback" is associated to (some) contravariant functors, and "pushforward" is associated to (some) covariant functors.

To be more specific, consider the measure example. There is an endfunctor $M$ of the category $Set$, which maps a set $X$ to the set $M(X)$ of all measures on $X$, and a function $f:X\to Y$ to a function $M(f)=f_*:M(X)\to M(Y)$, defined so that $f_*(\mu)$ is a measure on $Y$, given by $f_*(\mu)(U)=\mu(f^{-1}(U))$ for all $U\subseteq Y$ for which the right-hand side is defined. Since $M$ is a covariant functor, we might call $M(f)(\mu)=f_*(\mu)$ a pushforward of a measure $\mu$ on $X$.

As an example of pullback, consider the pullback from cohomology. There is the functor $H^*$ from the category $Top$ of topological spaces to $Set$, which maps a topological space $X$ to the set (in fact, a graded ring) $H^*(X)$ of cohomology classes of $X$, and a continuous function $f:X\to Y$ to the function (in fact, a homomorphism of graded rings) $H^*(f)=f^*:H^*(Y)\to H^*(X)$ on cohomology classes. Since $H^*$ is a contravariant functor, we may call $H^*(f)(\sigma)=f^*(\sigma)$ a pullback of a cohomology class $\sigma$ on $Y$.

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.