#### D.6.15.6 invariants

Procedure from library `hnoether.lib` (see hnoether_lib).

Usage:
  invariants(INPUT); INPUT list or poly

Assume:
  `INPUT` is the output of `develop(f)`, or of `extdevelop(develop(f),n)`, or one entry of the list of HN data computed by `hnexpansion(f[,"ess"])`.

Return:
  list `INV` of the following format:

          INV[1]:  intvec    (characteristic exponents)
          INV[2]:  intvec    (generators of the semigroup)
          INV[3]:  intvec    (Puiseux pairs, 1st components)
          INV[4]:  intvec    (Puiseux pairs, 2nd components)
          INV[5]:  int       (degree of the conductor)
          INV[6]:  intvec    (sequence of multiplicities)

  If `INPUT` contains no valid HN expansion, the empty list is returned.

Assume:
  `INPUT` is a bivariate polynomial f, or the output of `hnexpansion(f)`, or the list of HN data computed by `hnexpansion(f [,"ess"])`.

Return:
  list `INV`, such that `INV[i]` coincides with the output of `invariants(develop(f[i]))`, where f[i] is the i-th branch of f, and the last entry of `INV` contains further invariants of f in the format:

          INV[last][1] : intmat    (contact matrix of the branches)
          INV[last][2] : intmat    (intersection multiplicities of the branches)
          INV[last][3] : int       (delta invariant of f)

Note:
  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.

Example:

    LIB "hnoether.lib";
    ring exring=0,(x,y),dp;
    list Hne=develop(y4+2x3y2+x6+x5y);
    list INV=invariants(Hne);
    INV[1];                   // the characteristic exponents
    ==> 4,6,7
    INV[2];                   // the generators of the semigroup of values
    ==> 4,6,13
    INV[3],INV[4];            // the Puiseux pairs in packed form
    ==> 3,7 2,2
    INV[5] div 2;             // the delta-invariant
    ==> 8
    INV[6];                   // the sequence of multiplicities
    ==> 4,2,2,1,1
    // To display the invariants more 'nicely':
    displayInvariants(Hne);
    ==>  characteristic exponents  : 4,6,7
    ==>  generators of semigroup   : 4,6,13
    ==>  Puiseux pairs             : (3,2)(7,2)
    ==>  degree of the conductor   : 16
    ==>  delta invariant           : 8
    ==>  sequence of multiplicities: 4,2,2,1,1
    /////////////////////////////
    INV=invariants((x2-y3)*(x3-y5));
    INV[1][1];                // the characteristic exponents of the first branch
    ==> 2,3
    INV[2][6];                // the sequence of multiplicities of the second branch
    ==> 3,2,1,1
    print(INV[size(INV)][1]);         // the contact matrix of the branches
    ==>      0     3
    ==>      3     0
    print(INV[size(INV)][2]);         // the intersection numbers of the branches
    ==>      0     9
    ==>      9     0
    INV[size(INV)][3];                // the delta invariant of the curve
    ==> 14

See also: develop; displayInvariants; hnexpansion; intersection; multsequence.

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