#### D.6.1.3 alexanderpolynomial

Procedure from library `alexpoly.lib` (see alexpoly_lib).

Usage:
  alexanderpolynomial(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.

Create:
  a ring with variables t, t(1), ..., t(r) (where r is the number of branches of the plane curve singularity f defined by INPUT) and ordering ls over the ground field of the basering.
  Moreover, the ring contains the Alexander polynomial of f in variables t(1), ..., t(r) (`alexpoly`), the zeta function of the monodromy operator of f in the variable t (`zeta_monodromy`), and a list containing the factors of the Alexander polynomial with multiplicities (`alexfactors`).

Return:
  a list, say `ALEX`, where `ALEX[1]` is the created ring

Note:
  to use the ring type: `def ALEXring=ALEX[i]; setring ALEXring;`.
  Alternatively you may use the procedure sethnering and type: sethnering(ALEX,"ALEXring");
  To access the Alexander polynomial resp. the zeta function resp. the factors of the Alexander polynomial type: `alexpoly` resp. `zeta_monodromy` resp. `alexfactors`.
  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;
    list ALEX=alexanderpolynomial(f1*f2*f3);
    def ALEXring=ALEX[1];
    setring ALEXring;
    alexfactors;
    ==> [1]:
    ==>    [1]:
    ==>       -t(1)^6*t(2)^3*t(3)^2+1
    ==>    [2]:
    ==>       -1
    ==> [2]:
    ==>    [1]:
    ==>       -t(1)^12*t(2)^6*t(3)^4+1
    ==>    [2]:
    ==>       1
    ==> [3]:
    ==>    [1]:
    ==>       -t(1)^26*t(2)^13*t(3)^8+1
    ==>    [2]:
    ==>       1
    ==> [4]:
    ==>    [1]:
    ==>       -t(1)^4*t(2)^2*t(3)^3+1
    ==>    [2]:
    ==>       -1
    ==> [5]:
    ==>    [1]:
    ==>       -t(1)^8*t(2)^4*t(3)^6+1
    ==>    [2]:
    ==>       1
    alexpoly;
    ==> -t(1)^36*t(2)^18*t(3)^13-t(1)^32*t(2)^16*t(3)^10-t(1)^30*t(2)^15*t(3)^11-\
       t(1)^26*t(2)^13*t(3)^8+t(1)^10*t(2)^5*t(3)^5+t(1)^6*t(2)^3*t(3)^2+t(1)^4*\
       t(2)^2*t(3)^3+1
    zeta_monodromy;
    ==> -t^67-t^58-t^56-t^47+t^20+t^11+t^9+1

See also: resolutiongraph; totalmultiplicities.

User manual for Singular version 4.4.1, 2025, generated by texi2html.