in the 19th century, bernhard riemann and his student gustav roch proved what is now known as the riemann–roch theorem. if "x" is a riemann surface, then the sets of meromorphic functions and meromorphic differential forms on "x" form vector spaces. a line bundle on "x" determines subspaces of these vector spaces, and if "x" is projective, then these subspaces are finite dimensional. the riemann–roch theorem states that the difference in dimensions between these subspaces is equal to the degree of the line bundle (a measure of twistedness) plus one minus the genus of "x". in the mid-20th century, the riemann–roch theorem was generalized by friedrich hirzebruch to all algebraic varieties. in hirzebruch's formulation, the hirzebruch–riemann–roch theorem, the theorem became a statement about euler characteristics: the euler characteristic of a vector bundle on an algebraic variety (which is the alternating sum of the dimensions of its cohomology groups) equals the euler characteristic of the trivial bundle plus a correction factor coming from characteristic classes of the vector bundle. this is a generalization because on a projective riemann surface, the euler characteristic of a line bundle equals the difference in dimensions mentioned previously, the euler characteristic of the trivial bundle is one minus the genus, and the only non-trivial characteristic class is the degree.