The package CharacteristicClasses provides commands to compute the degrees of the Chern classes, Chern-Schwartz-MacPherson classes and Segre classes of closed subschemes of projective space. Equivalently, it computes the pushforward of the respective classes to the Chow ring of projective space. The package can also compute the topological Euler characteristic of closed subvarieties and subschemes of projective space. Let X be an n-dimensional subscheme of projective space ℙk. If X is smooth, then by definition the Chern classes of X are the Chern classes c0(TX), ..., cn(TX) of the tangent bundle TX. The Chern classes are cycles in the Chow ring of X, i.e., linear combinations of subvarieties of X modulo rational equivalence. For a subvariety V of X, the degree of the cycle [V] is defined as the degree of the variety V. This extends linearly to linear combinations of cycles. Computing the degrees of the Chern classes of X is equivalent to computing the pushforward of the Chern classes to the Chow ring of ℙk, which is the ring ℤ[H]/(Hk+1), with H the hyperplane class. Also by definition, the Segre classes of the projective scheme X are the Segre classes s0(X,ℙk), ..., sn(X,ℙk) of X in ℙk. For definition of the concepts used so far, see for example W. Fulton "Intersection Theory". Chern-Schwartz-MacPherson classes are a generalization of Chern classes of smooth schemes to possibly singular schemes with nice functorial properties.
This implementation offers two different algorithms to compute characteristic classes. The first algorithm is refered to as ResidualSymbolic for the symbolic implementation and Bertini for the numeric implementation and is given in the articles "Chern Numbers of Smooth Varieties via Homotopy Continuation and Intersection Theory" (S. Di Rocco, D. Eklund, C. Peterson, A.J. Sommese),"A method to compute Segre classes" (D. Eklund, C. Jost, C. Peterson), "An algorithm for computing the topological Euler characteristic of complex projective varieties" (C. Jost). The main step in the algorithm is the computation of the residuals. This can be done symbolically, using Gröbner bases, and numerically, using the regenerative cascade implemented in Bertini. The regenerative cascade is described in "Regenerative cascade homotopies for solving polynomial systems" by Jonathan Hauenstein, Andrew Sommese, and Charles Wampler. Bertini is developed by Dan Bates, Jonathan Hauenstein, Andrew Sommese, and Charles Wampler.
The second algorithm is referred to as ProjectiveDegree and given in the article "An Algorithm to Compute the Topological Euler Characteristic, Chern-Schwartz-MacPherson Class and Segre Class of Projective Varieties" (M. Helmer). The main computational step of this algorithm is the computation of the projective degrees. This can be done symbolically, using Gröbner bases, or numerically using a package such as Bertini, however only the symbolic implementation is offered at present, since a numeric implementation is already provided for the residual degrees algorithm.
Over the rationals the default algorithm is ResidualSymbolic, over any finite field the default algorithm is ProjectiveDegree.