In mathematics, a **characteristic class** is a way of associating to each principal bundle of *X* a cohomology class of *X*. The cohomology class measures the extent the bundle is "twisted" and whether it possesses sections. Characteristic classes are global invariants that measure the deviation of a local product structure from a global product structure. They are one of the unifying geometric concepts in algebraic topology, differential geometry, and algebraic geometry.

The notion of characteristic class arose in 1935 in the work of Eduard Stiefel and Hassler Whitney about vector fields on manifolds.

Let *G* be a topological group, and for a topological space , write for the set of isomorphism classes of principal *G*-bundles over . This is a contravariant functor from **Top** (the category of topological spaces and continuous functions) to **Set** (the category of sets and functions), sending a map to the pullback operation .

A **characteristic class** *c* of principal *G*-bundles is then a natural transformation from to a cohomology functor , regarded also as a functor to **Set**.

In other words, a characteristic class associates to each principal *G*-bundle in an element *c*(*P*) in *H**(*X*) such that, if *f* : *Y* → *X* is a continuous map, then *c*(*f***P*) = *f***c*(*P*). On the left is the class of the pullback of *P* to *Y*; on the right is the image of the class of *P* under the induced map in cohomology.

For characteristic numbers in fluid dynamics, see characteristic number (fluid dynamics). |

Characteristic classes are elements of cohomology groups;^{[1]} one can obtain integers from characteristic classes, called **characteristic numbers**. Some important examples of characteristic numbers are Stiefel–Whitney numbers, Chern numbers, Pontryagin numbers, and the Euler characteristic.

Given an oriented manifold *M* of dimension *n* with fundamental class , and a *G*-bundle with characteristic classes , one can pair a product of characteristic classes of total degree *n* with the fundamental class. The number of distinct characteristic numbers is the number of monomials of degree *n* in the characteristic classes, or equivalently the partitions of *n* into .

Formally, given such that , the corresponding characteristic number is:

where denotes the cup product of cohomology classes. These are notated variously as either the product of characteristic classes, such as , or by some alternative notation, such as for the Pontryagin number corresponding to , or for the Euler characteristic.

From the point of view of de Rham cohomology, one can take differential forms representing the characteristic classes,^{[2]} take a wedge product so that one obtains a top dimensional form, then integrate over the manifold; this is analogous to taking the product in cohomology and pairing with the fundamental class.

This also works for non-orientable manifolds, which have a -orientation, in which case one obtains -valued characteristic numbers, such as the Stiefel-Whitney numbers.

Characteristic numbers solve the oriented and unoriented bordism questions: two manifolds are (respectively oriented or unoriented) cobordant if and only if their characteristic numbers are equal.

Characteristic classes are phenomena of cohomology theory in an essential way — they are contravariant constructions, in the way that a section is a kind of function *on* a space, and to lead to a contradiction from the existence of a section we do need that variance. In fact cohomology theory grew up after homology and homotopy theory, which are both covariant theories based on mapping *into* a space; and characteristic class theory in its infancy in the 1930s (as part of obstruction theory) was one major reason why a 'dual' theory to homology was sought. The characteristic class approach to curvature invariants was a particular reason to make a theory, to prove a general Gauss–Bonnet theorem.

When the theory was put on an organised basis around 1950 (with the definitions reduced to homotopy theory) it became clear that the most fundamental characteristic classes known at that time (the Stiefel–Whitney class, the Chern class, and the Pontryagin classes) were reflections of the classical linear groups and their maximal torus structure. What is more, the Chern class itself was not so new, having been reflected in the Schubert calculus on Grassmannians, and the work of the Italian school of algebraic geometry. On the other hand there was now a framework which produced families of classes, whenever there was a vector bundle involved.

The prime mechanism then appeared to be this: Given a space *X* carrying a vector bundle, that implied in the homotopy category a mapping from *X* to a classifying space *BG*, for the relevant linear group *G*. For the homotopy theory the relevant information is carried by compact subgroups such as the orthogonal groups and unitary groups of *G*. Once the cohomology was calculated, once and for all, the contravariance property of cohomology meant that characteristic classes for the bundle would be defined in in the same dimensions. For example the Chern class is really one class with graded components in each even dimension.

This is still the classic explanation, though in a given geometric theory it is profitable to take extra structure into account. When cohomology became 'extraordinary' with the arrival of K-theory and cobordism theory from 1955 onwards, it was really only necessary to change the letter *H* everywhere to say what the characteristic classes were.

Characteristic classes were later found for foliations of manifolds; they have (in a modified sense, for foliations with some allowed singularities) a classifying space theory in homotopy theory.

In later work after the *rapprochement* of mathematics and physics, new characteristic classes were found by Simon Donaldson and Dieter Kotschick in the instanton theory. The work and point of view of Chern have also proved important: see Chern–Simons theory.

In the language of stable homotopy theory, the Chern class, Stiefel–Whitney class, and Pontryagin class are *stable*, while the Euler class is *unstable*.

Concretely, a stable class is one that does not change when one adds a trivial bundle: . More abstractly, it means that the cohomology class in the classifying space for pulls back from the cohomology class in under the inclusion (which corresponds to the inclusion and similar). Equivalently, all finite characteristic classes pull back from a stable class in .

This is not the case for the Euler class, as detailed there, not least because the Euler class of a *k*-dimensional bundle lives in (hence pulls back from , so it can’t pull back from a class in , as the dimensions differ.