# Singular

#### D.15.4.18 chProd

Procedure from library `chern.lib` (see chern_lib).

Usage:
chProd(r, c, R, C [, N]); r, R polynomials (integers); c, C lists of polynomials, N integer

Return:
list of polynomials

Purpose:
computes the list of Chern classes of the product of two vector bundles in terms of their ranks and Chern clases [up to degree N]

Note:

Example:
 ```LIB "chern.lib"; ring H = 0, ( r, R, c(1..3), C(1..2) ), dp; list l=c(1..3); list L=C(1..2); // the Chern classes of the tensor product of a vector bundle E of rank 3 // with Chern classes c(1), c(2), c(3) // and a vector bundle F of rank 2 with Chern classes C(1) and C(2): print( chProd(3, l, 2, L) ); ==> [1]: ==> 2*c(1)+3*C(1) ==> [2]: ==> c(1)^2+5*c(1)*C(1)+3*C(1)^2+2*c(2)+3*C(2) ==> [3]: ==> 2*c(1)^2*C(1)+4*c(1)*C(1)^2+C(1)^3+2*c(1)*c(2)+4*c(2)*C(1)+4*c(1)*C(2)\ +6*C(1)*C(2)+2*c(3) ==> [4]: ==> c(1)^2*C(1)^2+c(1)*C(1)^3+3*c(1)*c(2)*C(1)+3*c(2)*C(1)^2+2*c(1)^2*C(2)\ +6*c(1)*C(1)*C(2)+3*C(1)^2*C(2)+c(2)^2+2*c(1)*c(3)+3*c(3)*C(1)+3*C(2)^2 ==> [5]: ==> c(1)*c(2)*C(1)^2+c(2)*C(1)^3+2*c(1)^2*C(1)*C(2)+2*c(1)*C(1)^2*C(2)+c(2\ )^2*C(1)+2*c(1)*c(3)*C(1)+3*c(3)*C(1)^2+2*c(1)*c(2)*C(2)+2*c(1)*C(2)^2+3*\ C(1)*C(2)^2+2*c(2)*c(3)-6*c(3)*C(2) ==> [6]: ==> c(1)*c(3)*C(1)^2+c(3)*C(1)^3+c(1)*c(2)*C(1)*C(2)+c(2)*C(1)^2*C(2)+c(1)\ ^2*C(2)^2+c(1)*C(1)*C(2)^2+c(2)*c(3)*C(1)+c(2)^2*C(2)-2*c(1)*c(3)*C(2)-3*\ c(3)*C(1)*C(2)-2*c(2)*C(2)^2+C(2)^3+c(3)^2 // the first two Chern classes of the tensor product // of a vector bundle E of rank r with Chern classes c(1) and c(2) // and a vector bundle G of rank R with Chern classes C(1) and C(2) // this gives the Chern classes of a tensor product on a complex surface l=c(1..2); L=C(1..2); print( chProd(r, l, R, L, 2 ) ); ==> [1]: ==> R*c(1)+r*C(1) ==> [2]: ==> 1/2*R^2*c(1)^2+r*R*c(1)*C(1)+1/2*r^2*C(1)^2-1/2*R*c(1)^2-1/2*r*C(1)^2+\ R*c(2)-c(1)*C(1)+r*C(2) ```