## Homotopy pullbacks and homotopy pushouts

### Remember to vote up questions/answers you find interesting or helpful (requires 15 reputation points)

I have a good grasp of ordinary pullbacks and pushouts; in particular, there are many categorical constructions that can be seen as special cases: e.g., equalizers/coequalizers, kernerls/cokernels, binary products/coproducts, preimages,...

I know the (a?) definition of homotopy pullbacks/pushouts, but I am lacking two things: examples and intuition. So here are my questions:

1. What are the canonical examples of homotopy pullbacks/pushouts? E.g., in the category of pointed topological spaces the loop space $\Omega X$ is a homotopy pullback of the map $\ast \to X$ along itself.
2. How should I think about homotopy pullbacks/pushouts? What is the intuition behind the concept?
-
Pullbacks and pushouts should just be the homotopy limits and colimits of an appropriately categorified span (cospan?) – Harry Gindi Dec 12 2009 at 16:23

2
I don't know whether this is helpful or confusing, but every ordinary (co)limit is also a homotopy (co)limit! (It is a homotopy (co)limit in the topological category formed by taking the ordinary category and giving its Hom sets the discrete topology. Note that this is not how we normally make Top into a topological category.) – Reid Barton Dec 12 2009 at 17:58

## 4 Answers

You can think of the pushout of two maps f : A → B, g : A → C in Set as computing the disjoint union of B and C with an identification f(a) = g(a) for each element a of A. We could imagine forming this as either the quotient by an equivalence relation, or by gluing in a segment joining f(a) to g(a) for each a, and taking π0 of the resulting space. If two elements a, a' of A satisfy f(a) = f(a') and g(a) = g(a'), the pushout is unaffected by removing a' from A. The homotopy pushout is formed by gluing in a segment joining f(a) to g(a) for each a and not forgetting the number of ways in which two elements of B ∐ C are identified; instead we take the entire space as the result. It is the "derived" version of the pushout.

In general you can think of the homotopy pushout of A → B, A → C as the "free" thing generated by B and C with "relations" coming from A. But it's important that the "relations" are imposed exactly once, since in the homotopical/derived setting we keep track of such things (and have "relations between relations" etc.)

Another, possibly more familiar example: In a derived category, the mapping cone of a morphism f : A → B is the homotopy pushout of f and the zero map A → 0. This certainly depends on A, even when B is the zero object: it is the suspension of A.

-

3
Very nice! It reminds me of the introduction to Lurie's thesis, where he talks about Bezout's theorem. Do you have a similar picture for the pullback? – Alberto García-Raboso Dec 12 2009 at 17:25

5
Well, I more or less repeated it from the beginning of one of his talks :) As for homotopy pullbacks, of course they are formally dual, but maybe more helpful is this: The ordinary fiber product of X and Y over Z is the set of points of X x Y which have the same image in Z. In homotopy theory, we cannot talk about equality of points in a space--or rather, we have an entire space of "ways in which points may be considered equal", namely, the space of paths in Z between the two points. If you write out the common definition for homotopy pullbacks in spaces you'll see this is what it computes. – Reid Barton Dec 12 2009 at 17:36
So I see why the homotopy pushout is a derived version of the ordinary pushout: the latter is π_0 of the former (at least in your example). I fail to see the corresponding statement for the homotopy pullback: it seems to me that the ordinary pullback is a subspace of the homotopy pullback. Is this correct? – Alberto García-Raboso Dec 12 2009 at 18:01

5
That is true with the usual formula for the homotopy pullback. The properly analogous statement would be for pullbacks of sets, but in that case the two notions of pullback agree. A more typical example is comparing the pullback of vector spaces A -> C <- B to the homotopy pullback in unbounded chain complexes. The homotopy pullback will be the ordinary pullback in degree 0, and in (homological) degree -1 it should be something like the cokernel of the map A+B -> C. Generally homotopy limits have "extra stuff in negative degrees", which we can't see in topological spaces. – Reid Barton Dec 12 2009 at 18:22
I see a DG-scheme-type of thing going on... very interesting. Thanks for all your wonderful (and swift) explanations! – Alberto García-Raboso Dec 12 2009 at 18:42
show 1 more comment

### You can accept an answer to one of your own questions by clicking the check mark next to it. This awards 15 reputation points to the person who answered and 2 reputation points to you.

Here's a simple geometric example for a homotopy pushout. This is stolen from the Dwyer-Spalinski paper on model categories.

We first look at the following diagram: pt <-- S^1 --> pt. The pushout of this diamgram is just a point.

Now look at D^2 <-- S^1 --> D^2 where the maps are the inclusion at the boundary. The pushout of this diagram is S^2.

What one notices is that the point and D^2 have the same homotopy type, but the pushout of the two diagrams have different homotopy types! So ordinary pushouts don't go well with homotopy theory.

The right thing to do is to always replace the maps by cofibrations before computing pushouts. This is precisely what the homotopy pushout does.

Replacing maps by cofibrations before computing pushouts is not just philosophy but actually a theorem. If you want to do things correctly you should put a model category strutcure on the diagram category such that the constant functor preserves fibrations and trivial fibrations and then take the derived colimit functor. Since you have a model category structure on the diagram category you replace diagrams cofibrantly! If you work out all the details you get replacing a diagram means exactly to replace the maps by cofibrations before taking the pushout.

-

For (2): they are the needed modification of the non-homotpy ones when you want the result to change only by an homotopy equivalence ff you change the input to the construction by homotopy equivalences.

Later: My intuition comes from the following image: say you have a space $X$ on which $\mathbb Z$ acts, and you want to take the quotient. I look at the homotopy version as the result of tacking the orbits: you attach a thread (a copy of $\mathbb R$) to each orbit... If later you want to take the "real" quotient, you just need to pull the threads, and the orbits contract to a point (I know it makes a funny noise when you do this!). When you take homotopy quotients by another group $G$, you need to get yourself a "$G$-shaped thread", which is what we write $EG$.

-
Yet that does not quite give me an intuition on what they are, only on why they are necessary in some contexts. – Alberto García-Raboso Dec 12 2009 at 16:22
OK, I see the picture, but what homotopy pullback/pushout is that? – Alberto García-Raboso Dec 12 2009 at 16:44

2
Usually, it isn't one: it's the "homotopy orbits" which is the homotopy colimit over a diagram with one object with automorphism group G. When G = Z, it happens to be the homotopy pushout of the diagram X <- X -> X where the left map is the identity and the right map is the action of a generator of Z. – Reid Barton Dec 12 2009 at 16:59
Oops, that last sentence above is certainly false. Exercise: fix it! – Reid Barton Dec 13 2009 at 0:20

A list of definitions, general formulas and types of examples is at nLab: homotopy limit.

In particular there is a whole subsection on homotopy pullbacks.

Closely related material (further examples, if you wish) is at fibration sequence.

-

Thanks for the links. I'll be sure to check them out. – Alberto García-Raboso Dec 15 2009 at 19:35
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 8, "mathjax_display_tex": 0, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0}, "config": {"markdown_headings": true, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.18, "absolute_threshold": 20, "end_threshold": 15, "enable": false}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "github"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "english_confidence": 0.9286998510360718, "perplexity_flag": "middle"}