Skip to content
The Lumenary
Research pathwaysResearch (graduate background) 120 min

Stable ∞-categories

Where fibre sequences and cofibre sequences coincide — the homotopy-coherent enhancement of triangulated categories, in which cones finally become functorial.

Formally verified · 9 LeanComputationally tested · 1 PythonAI-drafted · awaiting human reviewMathematically reviewed: Awaiting human review
MotivationH

What triangulated categories cannot do

Derived categories of rings and sheaves, and the stable homotopy category of spectra, are triangulated categories (see Triangulated categories): additive categories with a shift functor and a class of distinguished triangles X→Y→Z→X[1]X \to Y \to Z \to X[1] satisfying Verdier's axioms. They have been the language of homological algebra since the 1960s. They also have well-known defects:

  1. Cones are not functorial. Every morphism ff sits in a distinguished triangle with third term Cone(f)\mathrm{Cone}(f), and a commutative square between two morphisms extends to a map of triangles (axiom TR3) — but the map on cones is not unique, so f↦Cone(f)f \mapsto \mathrm{Cone}(f) is not a functor. We will see an explicit example.
  2. Homotopy limits and colimits are invisible. A triangulated category has no good notion of limits of diagrams beyond biproducts; the colimit of a sequence of maps can be formed (Bökstedt–Neeman's homotopy colimit) only up to non-unique isomorphism.
  3. Gluing and invariants. Triangulated categories do not glue along open covers, and algebraic K-theory is not an invariant of a triangulated category: Schlichting (2002) found two exact categories whose derived categories are equivalent as triangulated categories but whose K-theories differ.

All three defects have the same cause: passing to a triangulated category keeps morphisms up to homotopy but forgets the homotopies. A stable ∞-category keeps them. It is an ∞-category (see ∞-categories) with a zero object in which fibre sequences and cofibre sequences coincide; its homotopy category is automatically triangulated, and everything that was "up to non-unique isomorphism" becomes "up to a contractible space of choices".

IntuitionH

Linear algebra up to homotopy

Think of a stable ∞-category as a homotopy-theoretic version of an abelian group, or of linear algebra. Three intuitions, each made precise below:

  • Kernels are cokernels, shifted. For abelian groups, the kernel and cokernel of a map are different things. In a stable ∞-category the fibre of g:Y→Zg : Y \to Z and the cofibre of f:X→Yf : X \to Y are related by a perfect duality: X→Y→ZX \to Y \to Z is a fibre sequence exactly when it is a cofibre sequence. The derived category explains why: the cofibre of a map of modules f:M→Nf : M \to N is a complex whose H0H_0 is coker⁡f\operatorname{coker} f and whose H1H_1 is ker⁡f\ker f — kernels and cokernels are two homology groups of one object.
  • Suspension is invertible. The suspension ΣX=0⊔X0\Sigma X = 0 \sqcup_X 0 and the loop object ΩX=0×X0\Omega X = 0 \times_X 0 are inverse equivalences. For pointed spaces they are not (ΩΣS0≃ΩS1≃Z\Omega\Sigma S^0 \simeq \Omega S^1 \simeq \Z, a discrete space, which is not S0S^0); "stabilising" means formally inverting Σ\Sigma, which is how spectra arise.
  • Squares are symmetric. In a stable ∞-category a commutative square is a pullback if and only if it is a pushout. Since squares are where homotopies live (a square commutes via a chosen homotopy), this is a statement about homotopies, which is why it is invisible in an ordinary category.
DefinitionsH

Fibres, cofibres and stability

Throughout, C\mathcal{C} is an ∞-category (a quasi-category). A commutative square in C\mathcal{C} is a map Δ[1]×Δ[1]→C\Delta[1] \times \Delta[1] \to \mathcal{C}: four objects, four morphisms, a diagonal, and two 2-simplices witnessing that the two composites agree. Pullbacks and pushouts are ∞-categorical limits and colimits (Lurie, Higher Topos Theory, Chapter 4).

Definition— pointed ∞-category, triangles, fibres and cofibres

C\mathcal{C} is pointed if it has a zero object 00, both initial and terminal. A triangle in C\mathcal{C} is a commutative square

X→fY↓↓g0⟶Z\begin{array}{ccc} X & \xrightarrow{f} & Y \\ \downarrow & & \downarrow{\scriptstyle g} \\ 0 & \longrightarrow & Z \end{array}

with a zero object in the lower left corner. It is a fibre sequence if the square is a pullback, and then XX is a fibre of gg, written X=fib(g)X = \mathrm{fib}(g); it is a cofibre sequence if the square is a pushout, and then ZZ is a cofibre of ff, written Z=cofib(f)Z = \mathrm{cofib}(f). The suspension of XX is ΣX=cofib(X→0)\Sigma X = \mathrm{cofib}(X \to 0) and the loop object is ΩX=fib(0→X)\Omega X = \mathrm{fib}(0 \to X).

Definition— stable ∞-category

A pointed ∞-category C\mathcal{C} is stable if every morphism has a fibre and a cofibre, and a triangle in C\mathcal{C} is a fibre sequence if and only if it is a cofibre sequence (Lurie, Higher Algebra, Definition 1.1.1.9). A functor between stable ∞-categories is exact if it preserves zero objects and fibre (equivalently, cofibre) sequences.

Equivalent characterisations (Lurie, Higher Algebra, §1.1.3 and §1.4.2): a pointed ∞-category with finite limits and colimits is stable if and only if a commutative square is a pullback exactly when it is a pushout; and a pointed ∞-category with finite colimits is stable if and only if Σ:C→C\Sigma : \mathcal{C} \to \mathcal{C} is an equivalence. Note that stability is a property of an ∞-category, whereas a triangulation is extra structure on a category.

Definition— spectra

The ∞-category of spectra is the limit of the tower ⋯→ΩS∗→ΩS∗\cdots \xrightarrow{\Omega} \mathcal{S}_* \xrightarrow{\Omega} \mathcal{S}_* of pointed spaces under the loop functor. Concretely, a spectrum is a sequence of pointed spaces E0,E1,…E_0, E_1, \dots with equivalences En≃ΩEn+1E_n \simeq \Omega E_{n+1}. Its homotopy groups πkE=πk+nEn\pi_k E = \pi_{k+n} E_n (for nn large) are defined for all k∈Zk \in \Z. Spectra Sp\mathrm{Sp} form the stabilisation of S∗\mathcal{S}_*: the universal stable ∞-category with a finite-limit-preserving functor Ω∞:Sp→S∗\Omega^\infty : \mathrm{Sp} \to \mathcal{S}_*.

Worked examplesH

Examples and non-examples

Example— Spectra

Sp\mathrm{Sp} is stable, and its homotopy category is the classical stable homotopy category. The sphere spectrum S\mathbb{S} has πkS=πks\pi_k \mathbb{S} = \pi_k^s, the stable homotopy groups of spheres (π0s=Z\pi_0^s = \Z, π1s=Z/2\pi_1^s = \Z/2, π2s=Z/2\pi_2^s = \Z/2, π3s=Z/24\pi_3^s = \Z/24); an abelian group AA gives the Eilenberg–MacLane spectrum HAHA with π0HA=A\pi_0 HA = A and all other homotopy groups zero. Fibre sequences of spectra give long exact sequences of homotopy groups in both directions, which is the algebraic heart of stability.

Example— Derived ∞-categories

For a ring RR, the derived ∞-category D(R)\mathcal{D}(R) is obtained from chain complexes of RR-modules by inverting quasi-isomorphisms in the ∞-categorical sense (for instance as the dg-nerve of the dg-category of K-projective complexes). It is stable; its homotopy category is the classical derived category D(R)D(R); the cofibre of a chain map is its mapping cone, and Σ\Sigma is the shift [1][1]. The same construction works for any abelian category with enough projectives or injectives, for quasi-coherent sheaves on a scheme, and for modules over a ring spectrum.

Example— Constructions that preserve stability

If C\mathcal{C} is stable and KK is any simplicial set, the functor ∞-category Fun(K,C)\mathrm{Fun}(K, \mathcal{C}) is stable (fibres and cofibres are computed pointwise). In particular Fun(Δ[1],C)\mathrm{Fun}(\Delta[1], \mathcal{C}), the ∞-category of morphisms of C\mathcal{C}, is stable — and the cofibre is a functor on it, as we explain below.

Example— Non-examples

  • Pointed spaces S∗\mathcal{S}_*: pointed, with all limits and colimits, but Σ\Sigma is not an equivalence (ΩΣS0≃Z≄S0\Omega \Sigma S^0 \simeq \Z \not\simeq S^0).
  • Any non-zero ordinary category, such as abelian groups or even the triangulated category D(R)D(R) regarded as an ordinary category. Theorem 1 below shows that in an ordinary category with a zero object the 1-categorical loop object 0×X00 \times_X 0 is always 00, so if fibre sequences were cofibre sequences every object would be zero. (In D(R)D(R) the square with corners X[−1],0,0,XX[-1], 0, 0, X commutes, but it is not a pullback in the ordinary category D(R)D(R); it is one only in the ∞-category D(R)\mathcal{D}(R).)
ProofH

Central theorems

Theorem— Theorem 1 (stability is invisible to ordinary categories)

Let C\mathcal{C} be an ordinary category with a zero object. Then for every object XX:

  1. the square with corners 0,0,0,X0, 0, 0, X is a pullback, so the 1-categorical loop object 0×X00 \times_X 0 is 00; dually the 1-categorical suspension 0⊔X00 \sqcup_X 0 is 00;
  2. if that square is also a pushout, then X≅0X \cong 0.

Consequently, if every fibre sequence in C\mathcal{C} is a cofibre sequence, then every object of C\mathcal{C} is zero. Since limits and colimits in the nerve N(C)N(\mathcal{C}) are ordinary limits and colimits, no non-zero ordinary category is a stable ∞-category.

Proof

(1) A cone over 0→X←00 \to X \leftarrow 0 is an object WW with two maps W→0W \to 0. There is exactly one map W→0W \to 0, and it factors both legs, because any two maps into a zero object are equal; so 00 with its identity legs is a limit. Dually, a cocone under 0←X→00 \leftarrow X \to 0 is a pair of maps 0→W0 \to W, and the unique map 0→W0 \to W is the unique factorisation.

(2) Suppose the square 0→00 \to 0, 0→X0 \to X is a pushout. The maps idX\mathrm{id}_X and 0:X→X0 : X \to X agree after composing with each leg 0→X0 \to X, because any two maps out of a zero object are equal. By the uniqueness part of the universal property of the pushout, idX=0\mathrm{id}_X = 0, so XX is a zero object.

For the consequence, apply the hypothesis to the triangle with XX replaced by 00, Y=0Y = 0, Z=XZ = X: it is a fibre sequence by (1), hence a cofibre sequence, hence X≅0X \cong 0 by (2).

∎

In a stable ∞-category the same square, with corners ΩX,0,0,X\Omega X, 0, 0, X, is both a pullback and a pushout, and ΩX\Omega X is usually far from 00: in D(R)\mathcal{D}(R) it is X[−1]X[-1]. The information lives in the homotopy that makes the square commute — two null-homotopies of the zero map ΩX→X\Omega X \to X, which together form a "loop" — and an ordinary category has no room for it.

Theorem— Theorem 2 (the homotopy category is additive; Lurie, Higher Algebra §1.1.2)

If C\mathcal{C} is stable, then hCh\mathcal{C} is additive: each HomhC(X,Y)\mathrm{Hom}_{h\mathcal{C}}(X, Y) is an abelian group, composition is bilinear, and finite products and coproducts exist and agree.

Proof

We prove the key point, that [X,Y]:=HomhC(X,Y)=π0Map(X,Y)[X, Y] := \mathrm{Hom}_{h\mathcal{C}}(X, Y) = \pi_0 \mathrm{Map}(X, Y) is naturally an abelian group, and refer to Lurie for bilinearity and biproducts.

The functor Map(−,Y)\mathrm{Map}(-, Y) turns colimits in C\mathcal{C} into limits of spaces. Applied to the pushout ΣA=0⊔A0\Sigma A = 0 \sqcup_A 0 it gives a pullback of spaces Map(ΣA,Y)≃Map(0,Y)×Map(A,Y)Map(0,Y)\mathrm{Map}(\Sigma A, Y) \simeq \mathrm{Map}(0, Y) \times_{\mathrm{Map}(A, Y)} \mathrm{Map}(0, Y). Since Map(0,Y)\mathrm{Map}(0, Y) is contractible (with image the zero map), this is the loop space Ω(Map(A,Y),0)\Omega(\mathrm{Map}(A, Y), 0). Applying this twice,

[Σ2A,Y]=π0Ω2Map(A,Y)=π2(Map(A,Y),0),[\Sigma^2 A, Y] = \pi_0 \Omega^2 \mathrm{Map}(A, Y) = \pi_2\big(\mathrm{Map}(A, Y), 0\big),

which is an abelian group by the Eckmann–Hilton argument (see Higher categories). In a stable ∞-category Σ\Sigma is an equivalence with inverse Ω\Omega, so every XX is Σ2A\Sigma^2 A for A=Ω2XA = \Omega^2 X, and [X,Y]≅π2(Map(Ω2X,Y),0)[X, Y] \cong \pi_2(\mathrm{Map}(\Omega^2 X, Y), 0) is an abelian group, naturally in XX and YY.

∎

Theorem— Theorem 3 (the homotopy category is triangulated; Lurie, Higher Algebra Theorem 1.1.2.14; stated)

Let C\mathcal{C} be stable. Then hCh\mathcal{C}, with shift functor Σ\Sigma and distinguished triangles the diagrams X→fY→gZ→hΣXX \xrightarrow{f} Y \xrightarrow{g} Z \xrightarrow{h} \Sigma X arising from a pair of pushout squares

X→fY⟶0↓↓g↓0⟶Z→hW\begin{array}{ccccc} X & \xrightarrow{f} & Y & \longrightarrow & 0 \\ \downarrow & & \downarrow{\scriptstyle g} & & \downarrow \\ 0 & \longrightarrow & Z & \xrightarrow{h} & W \end{array}

(the outer rectangle is a pushout, so W≃ΣXW \simeq \Sigma X), is a triangulated category: it satisfies Verdier's axioms TR1–TR4, including the octahedral axiom.

The axioms are inherited from the ∞-category: TR1 because cofibres exist; rotation (TR2) by pasting pushout squares; TR3 because any square in hCh\mathcal{C} lifts to a square in C\mathcal{C} and cofibres are functorial there; the octahedral axiom (TR4) by taking cofibres of a composable pair, a diagram of shape Δ[2]\Delta[2], all at once. The long exact sequences of a triangulated category are the shadows of the long exact sequences of homotopy groups of the fibre sequences of mapping spaces Map(W,X)→Map(W,Y)→Map(W,Z)\mathrm{Map}(W, X) \to \mathrm{Map}(W, Y) \to \mathrm{Map}(W, Z).

Theorem— Theorem 4 (cofibres are functorial; stated)

In a stable ∞-category (indeed in any pointed ∞-category with cofibres) there is a functor cofib:Fun(Δ[1],C)→C\mathrm{cofib} : \mathrm{Fun}(\Delta[1], \mathcal{C}) \to \mathcal{C} sending a morphism to its cofibre, well defined up to a contractible space of choices.

The reason: cofibre sequences are left Kan extensions (colimits), and the ∞-category of cofibre sequences maps to Fun(Δ[1],C)\mathrm{Fun}(\Delta[1], \mathcal{C}) by a trivial fibration (Lurie, Higher Topos Theory, §4.3.2). The crucial difference from TR3 is the source category: a morphism in Fun(Δ[1],C)\mathrm{Fun}(\Delta[1], \mathcal{C}) from f:X→Yf : X \to Y to f′:X′→Y′f' : X' \to Y' is not just a pair (a,b)(a, b) with bf=f′ab f = f' a in hCh\mathcal{C}, but a pair together with a chosen homotopy H:bf≃f′aH : b f \simeq f' a. Different homotopies induce different maps on cofibres.

Example— Cones are not functorial in a triangulated category — and how the homotopy fixes it

Let kk be a field and work in D(k)D(k), with the distinguished triangles

T:  k→0→k[1]→−idk[1],T′:  0→k[1]→idk[1]→0.T : \; k \to 0 \to k[1] \xrightarrow{-\mathrm{id}} k[1], \qquad T' : \; 0 \to k[1] \xrightarrow{\mathrm{id}} k[1] \to 0.

(TT is a rotation of the contractible triangle k→k→0→k[1]k \to k \to 0 \to k[1]; T′T' is the cone triangle of 0→k[1]0 \to k[1].) Take a=0:k→0a = 0 : k \to 0 and b=0:0→k[1]b = 0 : 0 \to k[1]; the square b∘f=f′∘ab \circ f = f' \circ a commutes trivially. A morphism of triangles (a,b,c)(a, b, c) needs c:k[1]→k[1]c : k[1] \to k[1] with c∘g=g′∘bc \circ g = g' \circ b and h′∘c=a[1]∘hh' \circ c = a[1] \circ h. Here g:0→k[1]g : 0 \to k[1] and h′:k[1]→0h' : k[1] \to 0, so both conditions say 0=00 = 0: every c=λ⋅idc = \lambda \cdot \mathrm{id}, λ∈k\lambda \in k, completes the square. The map on cones is not determined.

In D(k)\mathcal{D}(k), the square (a,b)(a, b) comes with a homotopy H:bf≃f′aH : b f \simeq f' a between two maps k→k[1]k \to k[1] (both zero). Homotopies from the zero map to itself form the loop space ΩMap(k,k[1])\Omega \mathrm{Map}(k, k[1]), whose components are [k,Ωk[1]]=[k,k]=k[k, \Omega k[1]] = [k, k] = k. At the level of chain complexes, HH is a degree-one map h:k→kh : k \to k (from X0X_0 to Y1′Y'_1), the induced map on mapping cones is (u,v)↦(au,bv+hu)(u, v) \mapsto (a u, b v + h u), and on Cone(f)=k[1]→k[1]=Cone(f′)\mathrm{Cone}(f) = k[1] \to k[1] = \mathrm{Cone}(f') it is multiplication by h=λh = \lambda. So each choice of homotopy picks out exactly one of the many TR3 fillers — the experiment below computes this with exact arithmetic.

Theorem— Theorem 5 (enhancements; stated)

  1. For a ring RR (more generally a Grothendieck abelian category), the classical derived category is the homotopy category of the stable ∞-category D(R)\mathcal{D}(R) (Lurie, Higher Algebra, §1.3).
  2. Not every triangulated category is the homotopy category of a stable ∞-category: Muro, Schwede and Strickland (2007) constructed triangulated categories with no model.
  3. Enhancements can be unique: Schwede's rigidity theorem (2007) shows that any stable model category whose homotopy category is equivalent to the stable homotopy category, as a triangulated category, is Quillen equivalent to spectra; Lunts and Orlov (2010) and Canonaco and Stellari (2018) proved uniqueness of dg-enhancements for many derived categories of geometric origin.
ExplanationH

The landscape: what is known and what is open

Established. Stable ∞-categories are the standard setting for modern homological algebra and stable homotopy theory (Lurie, Higher Algebra, Chapter 1): t-structures and their abelian hearts, the derived ∞-categories of abelian categories, Brown representability, and the comparison with pretriangulated dg-categories, which over a field kk are equivalent, as a homotopy theory, to kk-linear stable ∞-categories (Cohn, 2013). Algebraic K-theory has a universal characterisation as an invariant of small stable ∞-categories (Blumberg, Gepner and Tabuada, 2013), resolving the third defect of the motivation. Spectral algebraic geometry, noncommutative motives and the study of localising invariants (K-theory, topological Hochschild and cyclic homology) are built on this foundation.

Known limits. There are triangulated categories without enhancements (Theorem 5), and triangulated categories with several inequivalent enhancements are known; when an enhancement is unique is understood in important cases but not in general.

Open problems that live here. Many central open problems of stable homotopy theory are statements about the stable ∞-category of spectra: the structure of the stable homotopy groups of spheres (computed only in a finite range), and questions in chromatic homotopy theory about localisations of Sp\mathrm{Sp}. Classifying the "thick subcategories" of a stable ∞-category, as Hopkins and Smith did for finite spectra (1998), is open for most examples.

Formal mathematicsF

What Lean can say: the 1-categorical shadow

Mathlib has no stable ∞-categories (and no spectra as an ∞-category), but it has substantial triangulated-category theory: pretriangulated and triangulated categories with Verdier's axioms, the homotopy category of complexes and the derived category of an abelian category as triangulated categories, and t-structures. The formal side of this lesson therefore does two things: it proves Theorem 1 — why stability cannot happen in an ordinary category — and it records the triangulated shadow.

Theorem 1, from the definitions of pullbacks and pushouts in Mathlib (IsPullback, IsPushout). The proofs are those of the lesson: maps into or out of a zero object are unique (IsZero.eq_of_tgt, IsZero.eq_of_src), and the uniqueness half of the pushout property (IsPushout.hom_ext) forces 𝟙 X = 0:

loop_square_isPullbackLean 4Proved here from basic factsFormally verified
/-- In an ordinary category with a zero object, the **loop object** `ΩX = 0 ×_X 0` is zero:
the square with three corners `0` and fourth corner `X` is a pullback. Proof: a cone over
`0 ⟶ X ⟵ 0` is an object `W` with two maps `W ⟶ 0`; there is exactly one map `W ⟶ 0`, and it
factors both legs because all maps into a zero object are equal. In a stable ∞-category,
by contrast, `ΩX` is the shift `X[-1]`, and the square commutes only *via a homotopy*, which
is where the information lives. -/
theorem loop_square_isPullback (X : C) :
    IsPullback (0 : (0 : C) ⟶ 0) (0 : (0 : C) ⟶ 0) (0 : (0 : C) ⟶ X) (0 : (0 : C) ⟶ X) := by
  refine IsPullback.of_isLimit (c := PullbackCone.mk (0 : (0 : C) ⟶ 0) (0 : (0 : C) ⟶ 0)
    (by simp)) ?_
  refine PullbackCone.IsLimit.mk _ (fun _ => 0) ?_ ?_ ?_
  · intro s; exact (isZero_zero C).eq_of_tgt _ _
  · intro s; exact (isZero_zero C).eq_of_tgt _ _
  · intro s m _ _; exact (isZero_zero C).eq_of_tgt _ _
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/StableInfinityCategories.leanTry it in the Lean web editor
suspension_square_isPushoutLean 4Proved here from basic factsFormally verified
/-- Dually, the **suspension** `ΣX = 0 ⊔_X 0` of an object of an ordinary category with a zero
object is zero: the square with corner `X` and three corners `0` is a pushout. (All maps out
of a zero object are equal.) In a stable ∞-category `ΣX` is the shift `X[1]`. -/
theorem suspension_square_isPushout (X : C) :
    IsPushout (0 : X ⟶ (0 : C)) (0 : X ⟶ (0 : C)) (0 : (0 : C) ⟶ 0) (0 : (0 : C) ⟶ 0) := by
  refine IsPushout.of_isColimit (c := PushoutCocone.mk (0 : (0 : C) ⟶ 0) (0 : (0 : C) ⟶ 0)
    (by simp)) ?_
  refine PushoutCocone.IsColimit.mk _ (fun _ => 0) ?_ ?_ ?_
  · intro s; exact (isZero_zero C).eq_of_src _ _
  · intro s; exact (isZero_zero C).eq_of_src _ _
  · intro s m _ _; exact (isZero_zero C).eq_of_src _ _
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/StableInfinityCategories.leanTry it in the Lean web editor
isZero_of_loop_square_isPushoutLean 4Proved here from basic factsFormally verified
/-- If the loop square of `X` (three corners `0`, fourth corner `X`) were also a **pushout**,
then `X` would be zero. Proof: the maps `𝟙 X` and `0 : X ⟶ X` agree after both legs `0 ⟶ X`
(maps out of `0` are all equal), so by the uniqueness half of the pushout property they are
equal; and `𝟙 X = 0` means `X` is a zero object. -/
theorem isZero_of_loop_square_isPushout (X : C)
    (h : IsPushout (0 : (0 : C) ⟶ 0) (0 : (0 : C) ⟶ 0) (0 : (0 : C) ⟶ X) (0 : (0 : C) ⟶ X)) :
    IsZero X := by
  rw [IsZero.iff_id_eq_zero]
  exact h.hom_ext ((isZero_zero C).eq_of_src _ _) ((isZero_zero C).eq_of_src _ _)
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/StableInfinityCategories.leanTry it in the Lean web editor
stable_one_category_trivialLean 4Proved here from basic factsFormally verified
/-- **No non-trivial ordinary category is stable.** Suppose that in a category with a zero object
every *fibre sequence* is a *cofibre sequence*: every pullback square
`P ⟶ 0, P ⟶ B, 0 ⟶ Z, B ⟶ Z` is also a pushout square. Then every object is zero. Proof: apply
the hypothesis to the loop square of `X`, which is a pullback (`loop_square_isPullback`), and
conclude with `isZero_of_loop_square_isPushout`. Since limits and colimits in the nerve of an
ordinary category are its ordinary limits and colimits, this is why stable ∞-categories must be
genuinely higher-categorical. -/
theorem stable_one_category_trivial
    (fib_is_cofib : ∀ {P B Z : C} (snd : P ⟶ B) (g : B ⟶ Z),
      IsPullback (0 : P ⟶ 0) snd (0 : 0 ⟶ Z) g → IsPushout (0 : P ⟶ 0) snd (0 : 0 ⟶ Z) g)
    (X : C) : IsZero X :=
  isZero_of_loop_square_isPushout X (fib_is_cofib _ _ (loop_square_isPullback X))
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/StableInfinityCategories.leanTry it in the Lean web editor

The triangulated shadow. Mathlib states TR3 as existence of a fill, exactly as in Verdier's axioms — there is no uniqueness to state, as the worked example shows:

cone_fill_existsLean 4Applies a library theoremFormally verified
/-- Verdier's axiom TR3, as stated in Mathlib's class `CategoryTheory.Pretriangulated`
(`complete_distinguished_triangle_morphism`): a commutative square between the first two
terms of two distinguished triangles extends to a morphism of triangles. The axiom says
*there exists* a third map `c`; it says nothing about uniqueness, and in general `c` is not
unique. This is the "non-functoriality of cones" that stable ∞-categories repair. -/
theorem cone_fill_exists (T₁ T₂ : Triangle C) (h₁ : T₁ ∈ distTriang C)
    (h₂ : T₂ ∈ distTriang C) (a : T₁.obj₁ ⟶ T₂.obj₁) (b : T₁.obj₂ ⟶ T₂.obj₂)
    (comm : T₁.mor₁ ≫ b = a ≫ T₂.mor₁) :
    ∃ c : T₁.obj₃ ⟶ T₂.obj₃,
      T₁.mor₂ ≫ c = b ≫ T₂.mor₂ ∧ T₁.mor₃ ≫ (shiftFunctor C (1 : ℤ)).map a = c ≫ T₂.mor₃ :=
  complete_distinguished_triangle_morphism T₁ T₂ h₁ h₂ a b comm
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/StableInfinityCategories.leanTry it in the Lean web editor
comp_zero_12Lean 4Applies a library theoremFormally verified
/-- In a distinguished triangle `X ⟶ Y ⟶ Z ⟶ X[1]`, the composite of the first two maps is zero.
(In the stable ∞-category, the composite is not just zero but *null-homotopic via a chosen
homotopy*, which is part of the data of the fibre sequence.) This is Mathlib's
`CategoryTheory.Pretriangulated.comp_distTriang_mor_zero₁₂`. -/
theorem comp_zero_12 (T : Triangle C) (hT : T ∈ distTriang C) : T.mor₁ ≫ T.mor₂ = 0 :=
  comp_distTriang_mor_zero₁₂ T hT
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/StableInfinityCategories.leanTry it in the Lean web editor
comp_zero_23Lean 4Proved here from basic factsFormally verified
/-- The composite of the second and third maps of a distinguished triangle is zero too. Proof by
**rotation**: the rotated triangle `Y ⟶ Z ⟶ X[1] ⟶ Y[1]` is distinguished, and its first two
maps are the second and third maps of the original one. (Mathlib also has this as
`comp_distTriang_mor_zero₂₃`.) -/
theorem comp_zero_23 (T : Triangle C) (hT : T ∈ distTriang C) : T.mor₂ ≫ T.mor₃ = 0 :=
  comp_distTriang_mor_zero₁₂ T.rotate (rot_of_distTriang T hT)
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/StableInfinityCategories.leanTry it in the Lean web editor
coyoneda_exactLean 4Applies a library theoremFormally verified
/-- Maps into a distinguished triangle give exact sequences: if `f : W ⟶ Y` becomes zero in
`Z`, it lifts to `X`. In a stable ∞-category this is the shadow (on `π₀` of mapping spaces) of
the long exact sequence of homotopy groups of a fibre sequence of spectra. This is Mathlib's
`CategoryTheory.Pretriangulated.Triangle.coyoneda_exact₂`. -/
theorem coyoneda_exact (T : Triangle C) (hT : T ∈ distTriang C) {W : C} (f : W ⟶ T.obj₂)
    (hf : f ≫ T.mor₂ = 0) : ∃ g : W ⟶ T.obj₁, f = g ≫ T.mor₁ :=
  Triangle.coyoneda_exact₂ T hT f hf
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/StableInfinityCategories.leanTry it in the Lean web editor
derived_triangulatedLean 4Applies a library theoremFormally verified
/-- The derived category `D(A)` of an abelian category is triangulated (Verdier's axioms,
including the octahedral axiom). In the ∞-categorical picture, `D(A)` is the homotopy category of
the stable derived ∞-category. This is Mathlib's instance in
`Mathlib.Algebra.Homology.DerivedCategory.Basic`. -/
theorem derived_triangulated (A : Type*) [Category A] [Abelian A] [HasDerivedCategory A] :
    IsTriangulated (DerivedCategory A) :=
  inferInstance
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/StableInfinityCategories.leanTry it in the Lean web editor

What is not formalised. Stable ∞-categories themselves, spectra, Theorems 2–5, and the functoriality of cofibres need ∞-categorical limits and colimits, which Mathlib does not yet have for quasi-categories. The worked example of non-unique fills is checked computationally below rather than in Lean.

ComputationC

Mapping cones with exact arithmetic

The experiment represents chain complexes of finite-dimensional rational vector spaces by matrices of fractions. It builds mapping cones, checks d2=0d^2 = 0, and confirms in three examples that a chain map is a quasi-isomorphism exactly when its cone is acyclic (the triangulated shadow of "a morphism is an equivalence iff its cofibre is zero"). Then it computes the worked example: for the square with a=b=0a = b = 0 it constructs, for each homotopy hh, the induced chain map of cones, checks that it is a chain map, and finds that it acts on H1H_1 as multiplication by hh.

Mapping cones and the non-functoriality of conesPythonExact computationComputationally tested
"""Mapping cones of chain complexes, and why cones are not functorial.

Chain complexes of finite-dimensional rational vector spaces are a model for
the stable infinity-category D(Q): a morphism is a chain map, and a
commutative square up to homotopy is a square together with a chosen chain
homotopy. We compute exactly, with fractions:

1. the mapping cone Cone(f) of a chain map and its homology, checking that
   f is a quasi-isomorphism exactly when Cone(f) is acyclic (three examples);
2. a square X -> Y, X' -> Y' with a = 0 and b = 0, together with a homotopy
   h of degree +1. The induced map Cone(f) -> Cone(f') depends on h: with
   X = Q[0], Y = 0, X' = 0, Y' = Q[1], every scalar h gives a chain map on cones
   that acts on homology as multiplication by h. In the triangulated homotopy
   category all of these squares are the same square (a = b = 0), so the map on
   cones is not determined by the square: cones are not functorial. Remember
   the homotopy, as a stable infinity-category does, and the map is determined.

Exact rational arithmetic on small examples; illustrative, not a proof.
"""

from fractions import Fraction

def zeros(rows, cols):
    """A rows x cols zero matrix of Fractions."""
    return [[Fraction(0)] * cols for _ in range(rows)]

def matmul(a, b, inner, cols):
    """Product of an r x inner matrix and an inner x cols matrix (lists of
    rows). Shapes are passed explicitly so that empty matrices work."""
    return [[sum((a[i][k] * b[k][j] for k in range(inner)), Fraction(0))
             for j in range(cols)] for i in range(len(a))]

def rank(m):
    """Rank of a matrix of Fractions, by Gaussian elimination."""
    rows = [list(r) for r in m]
    r = 0
    cols = len(rows[0]) if rows else 0
    for c in range(cols):
        pivot = next((i for i in range(r, len(rows)) if rows[i][c] != 0), None)
        if pivot is None:
            continue
        rows[r], rows[pivot] = rows[pivot], rows[r]
        for i in range(len(rows)):
            if i != r and rows[i][c] != 0:
                factor = rows[i][c] / rows[r][c]
                rows[i] = [x - factor * y for x, y in zip(rows[i], rows[r])]
        r += 1
    return r

class Complex:
    """A bounded chain complex: dims[n] = dim C_n, diff[n]: C_n -> C_(n-1)."""

    def __init__(self, dims, diff=None):
        self.dims = {n: d for n, d in dims.items() if d > 0}
        self.diff = diff or {}

    def dim(self, n):
        return self.dims.get(n, 0)

    def d(self, n):
        """The differential C_n -> C_(n-1) as a dim(n-1) x dim(n) matrix."""
        if n in self.diff:
            return self.diff[n]
        return zeros(self.dim(n - 1), self.dim(n))

    def degrees(self):
        return range(min(self.dims, default=0) - 1, max(self.dims, default=0) + 2)

def is_complex(c):
    """Check d_(n-1) d_n = 0 in every degree."""
    return all(rank(matmul(c.d(n - 1), c.d(n), c.dim(n - 1), c.dim(n))) == 0
               for n in c.degrees() if c.dim(n) and c.dim(n - 2))

def betti(c):
    """Homology dimensions {n: dim H_n} (only nonzero ones)."""
    out = {}
    for n in c.degrees():
        h = c.dim(n) - rank(c.d(n)) - rank(c.d(n + 1))
        if h:
            out[n] = h
    return out

def block(top_left, top_right, bottom_left, bottom_right):
    """Assemble a 2 x 2 block matrix (blocks given as lists of rows)."""
    top = [l + r for l, r in zip(top_left, top_right)]
    bottom = [l + r for l, r in zip(bottom_left, bottom_right)]
    return top + bottom

def neg(m):
    return [[-x for x in row] for row in m]

def cone(f, x, y):
    """Mapping cone of f: X -> Y. Cone_n = X_(n-1) + Y_n with differential
    (u, v) |-> (-d u, f u + d v). ``f[n]`` is the matrix Y_n x X_n."""
    degrees = list(x.dims) + list(y.dims) + [0]
    dims = {n: x.dim(n - 1) + y.dim(n)
            for n in range(min(degrees), max(degrees) + 2)}
    diff = {}
    for n in dims:
        fm = f.get(n - 1, zeros(y.dim(n - 1), x.dim(n - 1)))
        diff[n] = block(neg(x.d(n - 1)), zeros(x.dim(n - 2), y.dim(n)),
                        fm, y.d(n))
    return Complex(dims, diff)

def is_chain_map(f, x, y):
    """Check d_Y f_n = f_(n-1) d_X in every degree."""
    get = lambda n: f.get(n, zeros(y.dim(n), x.dim(n)))
    return all(matmul(y.d(n), get(n), y.dim(n), x.dim(n)) ==
               matmul(get(n - 1), x.d(n), x.dim(n - 1), x.dim(n))
               for n in x.degrees() if x.dim(n) and y.dim(n - 1))

def q(*rows):
    """A matrix of Fractions from integer rows."""
    return [[Fraction(v) for v in row] for row in rows]

def mat(maps, n, rows, cols):
    """The degree-n component of a graded map, or the zero matrix."""
    return maps.get(n, zeros(rows, cols))

def is_homotopy(h, a, b, f, f2, x, y, x2, y2):
    """Check b f - f' a = d h + h d, for h_n: X_n -> Y'_(n+1)."""
    for n in x.degrees():
        if not (x.dim(n) and y2.dim(n)):
            continue
        cols = x.dim(n)
        bf = matmul(mat(b, n, y2.dim(n), y.dim(n)),
                    mat(f, n, y.dim(n), cols), y.dim(n), cols)
        fa = matmul(mat(f2, n, y2.dim(n), x2.dim(n)),
                    mat(a, n, x2.dim(n), cols), x2.dim(n), cols)
        dh = matmul(y2.d(n + 1), mat(h, n, y2.dim(n + 1), cols),
                    y2.dim(n + 1), cols)
        hd = matmul(mat(h, n - 1, y2.dim(n), x.dim(n - 1)), x.d(n),
                    x.dim(n - 1), cols)
        for i in range(y2.dim(n)):
            for j in range(x.dim(n)):
                if bf[i][j] - fa[i][j] != dh[i][j] + hd[i][j]:
                    return False
    return True

def cone_map(a, b, h, x, y, x2, y2):
    """The chain map Cone(f) -> Cone(f') induced by a square (a, b) and a
    homotopy h with b f - f' a = d h + h d: (u, v) |-> (a u, b v + h u)."""
    out = {}
    for n in range(min(x.degrees()[0], y.degrees()[0]),
                   max(x.degrees()[-1], y.degrees()[-1]) + 1):
        out[n] = block(mat(a, n - 1, x2.dim(n - 1), x.dim(n - 1)),
                       zeros(x2.dim(n - 1), y.dim(n)),
                       mat(h, n - 1, y2.dim(n), x.dim(n - 1)),
                       mat(b, n, y2.dim(n), y.dim(n)))
    return out

def square_example(h):
    """X = Q[0], Y = 0, X' = 0, Y' = Q[1], f = f' = 0, a = b = 0, and the
    homotopy h: X_0 -> Y'_1 given by the scalar h. Returns (is the homotopy
    valid, is the induced map a chain map of cones, its degree-1 matrix)."""
    x, y, x2, y2 = Complex({0: 1}), Complex({}), Complex({}), Complex({1: 1})
    f, f2, a, b = {}, {}, {}, {}
    hom = {0: [[Fraction(h)]]}
    phi = cone_map(a, b, hom, x, y, x2, y2)
    cf, cf2 = cone(f, x, y), cone(f2, x2, y2)
    return (is_homotopy(hom, a, b, f, f2, x, y, x2, y2),
            is_chain_map(phi, cf, cf2), phi[1])

EXAMPLES = {
    "Q[0] -> (Q =id=> Q), not a q-iso": (
        Complex({0: 1}), Complex({1: 1, 0: 1}, {1: q([1])}), {0: q([1])}),
    "Q[0] -> (Q -> Q^2), a q-iso": (
        Complex({0: 1}), Complex({1: 1, 0: 2}, {1: q([1], [0])}),
        {0: q([0], [1])}),
    "(Q =2=> Q) -> 0, both acyclic": (
        Complex({1: 1, 0: 1}, {1: q([2])}), Complex({}), {}),
}

def main():
    print("1. Cones detect quasi-isomorphisms (homology dims as {degree: dim})")
    for name, (x, y, f) in EXAMPLES.items():
        c = cone(f, x, y)
        print(f"   {name}")
        print(f"     chain map: {is_chain_map(f, x, y)}, Cone d^2 = 0: "
              f"{is_complex(c)}")
        print(f"     H(X) = {betti(x)}, H(Y) = {betti(y)}, "
              f"H(Cone) = {betti(c)}")
    print()
    print("2. One square up to homotopy, many maps on cones")
    print("   X = Q[0], Y = 0, X' = 0, Y' = Q[1], f = f' = 0, a = b = 0.")
    print("   Homotopy h: X_0 -> Y'_1 (any scalar: d h + h d = 0 = b f - f' a).")
    print("   Cone f = Q[1] = Cone f' (zero differentials), so H_1 = Cone_1.")
    for h in [0, 1, 2, Fraction(-1, 3)]:
        valid, chain, m = square_example(h)
        print(f"   h = {str(h):>4}: homotopy {valid}, chain map {chain}, "
              f"map on H_1 = multiply by {m[0][0]}")
    print("   In the homotopy category these are one square (a = b = 0), and each")
    print("   map is a valid TR3 fill: the triangulated axioms cannot choose one.")
    print()
    print("Epistemic status: exact rational arithmetic on small, explicit")
    print("complexes. It illustrates the general facts proved in the lesson")
    print("(cones detect quasi-isomorphisms; maps of cones depend on homotopies)")
    print("but checks only these examples.")

if __name__ == "__main__":
    main()
Runs entirely in your browser, in an isolated worker. Nothing is sent to a server.
Explore

Explore: squares, triangles and fills

The loop square. In a stable ∞-category it is a pullback and a pushout with ΩX≃X[−1]\Omega X \simeq X[-1]; in an ordinary category, Theorem 1 forces the corner to be 00.

ΩX\Omega X
00
00
XX
The square defining ΩX\Omega X. It commutes via a homotopy between two null-homotopies of ΩX→X\Omega X \to X — the data that an ordinary category forgets.

The worked example of non-functoriality. The top row is TT, the bottom row T′T'; the dashed map can be multiplication by any scalar λ\lambda:

kk
00
k[1]k[1]
k[1]k[1]
00
k[1]k[1]
k[1]k[1]
00
−id-\mathrm{id}
id\mathrm{id}
a=0a = 0
b=0b = 0
λ\lambda
Every λ∈k\lambda \in k gives a morphism of distinguished triangles in D(k)D(k) extending the same square (a,b)=(0,0)(a, b) = (0, 0). In D(k)\mathcal{D}(k) the square carries a homotopy, which determines λ\lambda.

Things to check by hand: why does every square in this diagram commute, whatever λ\lambda is? Which of the six conditions would fail if the bottom-left object were kk instead of 00? (Then b∘f=f′∘ab \circ f = f' \circ a becomes a genuine condition, and the ambiguity in cc is the image of Hom(ΣX,Y′)\mathrm{Hom}(\Sigma X, Y'), which can still be non-zero.)

Exercises

Exercises

1. Stable ∞-categories

Warm-upHuman

Which of the following is the definition of a stable ∞-category?

Choose one

2. Stable ∞-categories

Warm-upHuman

In D(Z)\mathcal{D}(\Z), let f:Z→Zf : \Z \to \Z be multiplication by 66, with both copies of Z\Z in degree 00. How many elements does H0(cofib f)H_0(\mathrm{cofib}\, f) have?

3. Stable ∞-categories

CoreHuman

Pointed spaces form a pointed ∞-category with all limits and colimits. Which computation shows directly that it is not stable?

Choose one

4. Stable ∞-categories

CoreHuman

In the proof that a pushout loop square forces X≅0X \cong 0 in an ordinary category, we show idX=0\mathrm{id}_X = 0. Which property of the pushout is used, and how?

Choose one

5. Stable ∞-categories

CoreFormal

In stable_one_category_trivial, which hypothesis correctly formalises 'every fibre sequence is a cofibre sequence' for an ordinary category C with a zero object?

Choose one

6. Stable ∞-categories

CoreHuman

In the worked example, work over the field k=F5k = \mathbb{F}_5. How many morphisms of triangles (a,b,c)(a, b, c) from T=(k→0→k[1]→k[1])T = (k \to 0 \to k[1] \to k[1]) to T′=(0→k[1]→k[1]→0)T' = (0 \to k[1] \to k[1] \to 0) extend the square (a,b)=(0,0)(a, b) = (0, 0)?

7. Stable ∞-categories

StretchHuman

Why is [X,Y]=π0Map(X,Y)[X, Y] = \pi_0 \mathrm{Map}(X, Y) an abelian group in a stable ∞-category?

Choose one

8. Stable ∞-categories

StretchHuman

Which statements about enhancements of triangulated categories are true? (Choose all that apply.)

Choose all that apply

9. Stable ∞-categories

StretchComputational

A linear map f:Qm→Qnf : \mathbb{Q}^m \to \mathbb{Q}^n is given by an n×mn \times m matrix A (a list of n rows). Viewed as a map of complexes in degree 0, its cofibre is the complex Qm→AQn\mathbb{Q}^m \xrightarrow{A} \mathbb{Q}^n in degrees 1 and 0. Using the provided rank, write cone_homology(A, m, n) returning (dim H_1, dim H_0) of the cofibre.

Runs entirely in your browser, in an isolated worker. Nothing is sent to a server.
Common misconceptionsH

Common misconceptions

Misconception

"Stable ∞-categories are triangulated categories under a new name." A stable ∞-category carries strictly more information: functorial cones, homotopy limits and colimits, and mapping spaces rather than mapping groups. Some triangulated categories have no stable ∞-categorical enhancement at all (Muro–Schwede–Strickland), and invariants such as algebraic K-theory depend on the enhancement (Schlichting).

Misconception

"A triangulation is a property of a category, like stability." The other way round: stability is a property of an ∞-category (fibre sequences coincide with cofibre sequences), while a triangulation is structure on an additive category (a shift functor and a chosen class of triangles), and one category can carry different triangulations.

Misconception

"The cofibre of ff is its cokernel." In D(R)\mathcal{D}(R), the cofibre of a map of modules f:M→Nf : M \to N (viewed as complexes in degree 0) is the two-term complex M→NM \to N in degrees 1 and 0, with H0=coker⁡fH_0 = \operatorname{coker} f and H1=ker⁡fH_1 = \ker f. It is the cokernel only when ff is injective, and the kernel (shifted) only when ff is surjective.

Misconception

"An abelian category is stable because it has kernels and cokernels." By Theorem 1, no non-zero ordinary category is stable. Abelian categories appear inside stable ∞-categories differently: as hearts of t-structures, for example ModR⊂D(R)\mathrm{Mod}_R \subset \mathcal{D}(R) as the complexes with homology only in degree 00.

ViewpointsH

Many ways of seeing

Topology— Spectra and generalised cohomology

Stability first appeared in topology. The Freudenthal suspension theorem (1937) says that πn+k(Sn)\pi_{n+k}(S^n) is independent of nn once n>k+1n > k + 1: in a stable range, suspension is an isomorphism. Brown's representability theorem (1962) says that every generalised cohomology theory — ordinary cohomology, K-theory, cobordism — is represented by a spectrum EE, with En(X)=[Σ∞X,ΣnE]E^n(X) = [\Sigma^\infty X, \Sigma^n E]. In the stable ∞-category Sp\mathrm{Sp} these become structural facts: Σ\Sigma is an equivalence, and a cohomology theory is an exact functor out of spectra. See Stable homotopy theory.

Algebra— Homological algebra without choices

For an algebraist, a stable ∞-category is the right home for derived functors. In D(R)\mathcal{D}(R) the derived tensor product and derived Hom are functors of ∞-categories, the mapping cone is functorial (Theorem 4), and the long exact sequences of Ext\mathrm{Ext} and Tor\mathrm{Tor} are homotopy groups of fibre sequences of mapping spectra. Abelian categories reappear as hearts of t-structures, and ExtRn(M,N)=π−n map(M,N)\mathrm{Ext}^n_R(M, N) = \pi_{-n}\,\mathrm{map}(M, N). The mapping-cone computation of the worked example is exactly the chain-level construction that dg-categories (Bondal–Kapranov, Keller) keep and triangulated categories forget. See Derived categories and Homological algebra.

Geometry— Derived categories of varieties

Algebraic geometers study a variety XX through the stable ∞-category of (quasi-)coherent sheaves on it. Mukai (1981) showed that an abelian variety and its dual have equivalent derived categories, although they need not be isomorphic; Bondal and Orlov (2001) showed that a smooth projective variety with ample or anti-ample canonical bundle is determined by its derived category. Equivalences between derived categories of varieties are given by Fourier–Mukai kernels, and the ∞-categorical setting is what makes this precise in general: by a theorem of Ben-Zvi, Francis and Nadler (2010), for well-behaved derived stacks the colimit-preserving functors between their ∞-categories of quasi-coherent sheaves are exactly given by kernels on the product. Stable ∞-categories also glue along open covers, which triangulated categories cannot. See Algebraic geometry.

Physics— Branes and homological mirror symmetry

In topological string theory, boundary conditions ("D-branes") and the open strings between them form a category whose morphism spaces are graded and only defined up to homotopy; bound states of branes are cones. Kontsevich's homological mirror symmetry conjecture (ICM 1994) proposes that, for mirror pairs of Calabi–Yau manifolds XX and X∨X^\vee, the derived category of coherent sheaves on XX is equivalent to a derived Fukaya category of X∨X^\vee — an equivalence of triangulated categories that is naturally an equivalence of A∞A_\infty / stable ∞-categories. It has been proved in important cases (the elliptic curve by Polishchuk and Zaslow, 1998; the quartic surface by Seidel). The physical picture is heuristic; the mathematical statements are theorems or conjectures about stable ∞-categories. See Symplectic geometry.

Category theory— Stability as a universal property

Categorically, stability is a completion: every pointed ∞-category with finite limits has a stabilisation Sp(C)=lim⁡(⋯→ΩC→ΩC)\mathrm{Sp}(\mathcal{C}) = \lim(\cdots \xrightarrow{\Omega} \mathcal{C} \xrightarrow{\Omega} \mathcal{C}), universal among stable ∞-categories mapping to it, just as abelianisation is universal among abelian groups. Spectra are the stabilisation of spaces; Goodwillie's calculus of functors approximates a functor by a tower of "nn-excisive" functors whose first stage is built from stabilisation, much as a Taylor series starts with the derivative. And stable ∞-categories are to spectra what additive categories are to abelian groups: every stable ∞-category is canonically enriched, in a homotopy-coherent sense, in spectra, just as every additive category is enriched in abelian groups.

History & global context

History and global context

  • 1930s–1960s: stable phenomena in topology. Hans Freudenthal (Netherlands) proved the suspension theorem (1937); Dieter Puppe (Germany) introduced the cofibre sequences now named after him (1958); Edgar Brown (USA) proved representability (1962); Michael Boardman (UK) constructed the stable homotopy category (1960s), and J. F. Adams's Stable Homotopy and Generalised Homology (1974) made it standard.
  • 1960s: triangulated and derived categories. Jean-Louis Verdier, a student of Grothendieck in Paris, axiomatised triangulated categories and constructed derived categories (thesis 1967, published in full only in 1996), to support Grothendieck's duality theory; Puppe independently formulated similar axioms.
  • 1980s–1990s: enhancements. Alexei Bondal and Mikhail Kapranov (Russia) introduced enhanced triangulated categories via dg-categories (1990); Bernhard Keller developed the theory of dg-categories; Amnon Neeman (Australia) wrote the standard text on triangulated categories (2001); Shigeru Mukai (Japan) and Dmitri Orlov (Russia) made derived categories central to algebraic geometry; models for spectra with a good smash product were constructed by Elmendorf, Kriz, Mandell and May (1997) and by Hovey, Shipley and Smith (2000).
  • 2000s: stable ∞-categories. Jacob Lurie's "Stable infinity categories" (2006) and Higher Algebra defined stable ∞-categories and proved that their homotopy categories are triangulated; Blumberg, Gepner and Tabuada characterised K-theory on them (2013).
Further reading

Further reading

A suggested path: Groth's short course for the definitions; Lurie's Higher Algebra, Chapter 1, for the theory; Neeman and Krause for the triangulated side; Keller for dg-categories.

  • Jacob Lurie, Higher Algebra (book-length manuscript distributed by the author), Chapter 1, "Stable ∞-categories".
  • Jacob Lurie, Higher Topos Theory (2009), Chapters 1–4.
  • Moritz Groth, "A short course on ∞-categories", in Handbook of Homotopy Theory (2020).
  • Amnon Neeman, Triangulated Categories (2001).
  • Henning Krause, Homological Theory of Representations (2021).
  • Bernhard Keller, "On differential graded categories", Proceedings of the ICM 2006.
  • Andrew Blumberg, David Gepner and Gonçalo Tabuada, "A universal characterization of higher algebraic K-theory", Geometry & Topology 17 (2013).
  • J. F. Adams, Stable Homotopy and Generalised Homology (1974).