# Singular

#### D.6.1.2 totalmultiplicities

Procedure from library alexpoly.lib (see alexpoly_lib).

Usage:
totalmultiplicities(INPUT); INPUT poly or list

Assume:
INPUT is either a REDUCED bivariate polynomial defining a plane curve singularity, or the output of hnexpansion(f[,"ess"]), or the list hne in the ring created by hnexpansion(f[,"ess"]), or the output of develop(f) resp. of extdevelop(f,n), or a list containing the contact matrix and a list of integer vectors with the characteristic exponents of the branches of a plane curve singularity, or an integer vector containing the characteristic exponents of an irreducible plane curve singularity.

Return:
list L of three integer matrices. L[1] is the incidence matrix of the resolution graph of the plane curve defined by INPUT, where the entries on the diagonal are the weights of the vertices of the graph and a negative entry corresponds to the strict transform of a branch of the curve. L[2] is an integer matrix, which has for each vertex in the graph a row and for each branch of the curve a column. The entry in position [i,j] contains the total multiplicity of the j-th branch (i.e. the branch with weight -j in L[1]) along the exceptional divisor corresponding to the i-th row in L[1]. In particular, the i-th row contains the total multiplicities of the branches of the plane curve (defined by INPUT) along the exceptional divisor which corresponds to the i-th row in the incidence matrix L[1]. L[3] is an integer matrix which contains the (strict) multiplicities of the branches of the curve along the exceptional divisors in the same way as L[2] contains the total multiplicities.

Note:
The total multiplicty of a branch along an exceptional divisor is the multiplicity with which this exceptional divisor occurs in the total transform of this branch under the resolution corresponding to the resolution graph.
In case the Hamburger-Noether expansion of the curve f is needed for other purposes as well it is better to calculate this first with the aid of hnexpansion and use it as input instead of the polynomial itself.
If you are not sure whether the INPUT polynomial is reduced or not, use squarefree(INPUT) as input instead.

Example:
 LIB "alexpoly.lib"; ring r=0,(x,y),ls; poly f1=(y2-x3)^2-4x5y-x7; poly f2=y2-x3; poly f3=y3-x2; totalmultiplicities(f1*f2*f3); ==> [1]: ==> 1,0,1,0,0,0,0,0,1,0, ==> 0,2,1,0,0,0,0,0,0,0, ==> 1,1,3,0,1,0,0,0,0,0, ==> 0,0,0,4,1,0,1,0,0,0, ==> 0,0,1,1,5,1,0,0,0,0, ==> 0,0,0,0,1,-1,0,0,0,0, ==> 0,0,0,1,0,0,-2,0,0,0, ==> 0,0,0,0,0,0,0,2,1,0, ==> 1,0,0,0,0,0,0,1,3,1, ==> 0,0,0,0,0,0,0,0,1,-3 ==> [2]: ==> 4,2,2, ==> 6,3,2, ==> 12,6,4, ==> 13,7,4, ==> 26,13,8, ==> 0,0,0, ==> 0,0,0, ==> 4,2,3, ==> 8,4,6, ==> 0,0,0 ==> [3]: ==> 4,2,2, ==> 2,1,0, ==> 2,1,0, ==> 1,1,0, ==> 1,0,0, ==> 0,0,0, ==> 0,0,0, ==> 0,0,1, ==> 0,0,1, ==> 0,0,0