We’ve define the Chern classes now, but what about computing them, and computing with them? We have that long list of properties that will help, but there is a need to prove them, and they aren’t completely trivial. What we need is a clever trick. Vector bundles generalize line bundles, which we already understand, more-or-less, so if we can reduce computations with Chern classes to computations with the first Chern class, that would be wonderful.

Our clever trick is called the splitting principle. The statement is that for any finite collection of vector bundles on our scheme , there exists a flat morphism such that

- is injective
- For all , we have a filtration by bundles such that is a line bundle.

To sketch the construction, we start with a single bundle, and we go by induction on . Then we just projectivize , it has of the projective bundle as a subbundle, and so we can quotient by it to get a lower rank bundle. For a collection of bundles, we just keep going and do them in sequence.

So, what does this really get us? The big bonus of splitting is that . So Chern classes are all writeable in terms of those of line bundles, just maybe not on your original space. We call these first Chern clases the *chern roots* of our vector bundle, and will write them as .

Specifically, we have that , where is the symmetric polynomial. So then anything that we can write as a symmetric polynomial in the Chern roots will, in fact, be a polynomial in the Chern classes! We’re going to make much more use of this fact in the future.

The splitting principle lets us prove universal formulas of Chern classes of a finite set of bundles by just looking at the case of a direct sum of line bundles. It’s a quick exercise to prove all of the following, where are vector bundles:

- .

Before doing some applications, we make note that we’re going to abuse notation and for any a polynomial in Chern classes, we’re going to write instead of . There shouldn’t be any real confusion.

So now, some quick applications of Chern classes to do some classical work:

- Adjunction on a Surface: Let be an effective Cartier divisor on a complete surface . Then, by definition, , where is the normal bundle. Also by definition, we have . So we have . Thus, we have . Setting , we get , and this becomes , the classical adjuction formula for surfaces.
- Riemann-Hurwitz: Let be a map of smooth varieties of dimension . We want to look at , the ramification locus, where the differential isn’t an isomorphism. Well, that’s just the zero set of the map (take the determinant, it’s zero if and only if the map isn’t an isomorphism). That tells us that . Now, take and integrate both sides, wne we get , and so we recover the Riemann-Hurwitz Theorem as a special case.

This will actually often be the case: classical theorems turn out to be special cases of far more general results, which, once the correct machinery is in hand, can be proved almost effortlessly. Note that so far, we’ve managed to recover the intersection form on surfaces, the Adjunction formula for surfaces and the Riemann-Hurwitz Theorem, all almost effortlessly from our formalism. Things get a bit trickier when we start trying to pull Riemann-Roch out of this, however, and before then, we’ll have to talk K-theory, Chern characters and Todd classes.

Sorry to be picky… but your example (1) is not valid for any Cartier divisor on any complete surface. And depending by what you mean by “N”, the sequence is not exact by definition. It is exact when C and S are smooth and the example is fine in this case. Maybe you just need S is smooth in some neighborhood of (smooth) C?

Also in example 2, don’t you have to worry that the map is everywhere ramified? It could happen that R(f) = X – take for example a non-singular curve mapping to itself via Frobenius.

You’re right on both counts. Need nonsingularity and that it’s not everywhere ramified (screw Frobenius, if the map is onto a subvariety of lower dimension, it’s a problem.)