#### D.15.2.15 determineNormalForm

Procedure from library `arnold.lib` (see arnold_lib).

Usage:
  determineNormalForm(F); F poly

Return:
  if F.value is right equivalent to a germ with a nondegenerate Newton boundary an N of type NormalForm with fields:
  N.inputRing: the ring F.in
  N.numbervars: the embedding dimension (given as type int)
  N.normalForm: a normal form of F.value (given as type Poly)
  N.singularityType: the corner points of the Newton boundary of the normal form of F.value, which classifies the singularity type (given as type string)
  N.parameters: the monomials corresponding to the moduli terms in N.normalForm
  (given as a list with entries of type Poly over the ring N.phi.targetgerm.in)
  N.corank: the corank of the singularity defined by F.value (given as type int)
  N.modality: the modality of the singularity defined by F.value (given as type int)
  N.milnorNumber: the Milnor number of F.value (given as type int)
  N.delta: the Delta invariant of F.value (given as type int)
  N.numberOfBranches: the number of branches of F.value (given as type int)
  N.determinacy: a determinacy bound for F.value (given as type int)
  N.nondegeneratePart: the nondegenerate part of the normal form of F.value (given as type Poly)
  N.nonNormalizedNNBGerm: a polynomial that is stable equivalent to F.value with a nondegenerate Newton boundary
  (that is not necessarily normalized, given as type Poly)
  N.semiNormalizedNNBGerm: a polynomial that is stable equivalent to F.value with a normalized nondegenerate Newton boundary up to scalar multiplication
  of each of its variables (given as type Poly)
  N.phiBeforeMorseSplit: the transformations (and in some cases their inverses) of the transformations that was transformed on F.value to write F.value
  as a direct sum of its degenerate and nondegenerate parts, given up to filtration d, where d is a determinacy bound for F.value
  (given as type RightEquivalenceChainWithPrecision as defined in @ref(polyclass.lib))
  N.phi: the transformations (and in some cases their inverses) of the transformations that was transformed on the degenerate part of F.value to transform
  it to a germ with nondegenerate Newton boundary (in some cases the transformations normalize the Newton boundary is also given),
  is given up to filtration d, where d is a determinacy bound for F.value (given as type RightEquivalenceChainWithPrecision as
  defined in @ref(polyclass.lib)),

  an ERROR message otherwise

Example:

    LIB "arnold.lib";
    ring R = 0,(x,y,z),ds;
    poly g = (x^2+y^2)^2+5*x^(10)+y^(11)+z^2;
    poly phix = x+y^2+x^2+x*y+x^2*y+x*y^3;
    poly phiy = y+y^2+2*x^2+x*y+y*x^2+y^2*x+x*y^4;
    poly phiz = z+2*x+x^2+y^4*x;
    map phi = R,phix,phiy,phiz;
    g = phi(g);
    Poly F = makePoly(g);
    determineNormalForm(F);
    ==> Embedding dimension = 3
    ==> Corank of singularity = 2
    ==> Normal form of type = (0,22),(1,6),(2,2),(6,1),(22,0)
    ==> Normal form = (a(1))*x^2*y^2+x^6*y+x*y^6+x^22+y^22
    ==> Exceptional Hypersurface is not determined.
    ==> Normal form equation is not determined.
    ==> Milnor number = 21
    ==> Modality = 1
    ==> Monomials corresponding to moduli terms = x^2*y^2
    ==> Delta invariant = 12
    ==> Number of branches = 4
    ==> Determinacy <= 10
    ==> Non-degenerate part = z^2
    ==> Chain of transformations before Morse split of length 5
    ==> Chain of transformations after Morse split of length 5
    ==>
    ==> The chain of transformations is only containing transformations up to tra\
       nsforming the input polynomial to a germ with a nondegenerate Newton boun\
       dary. The final transformations to normalize the germ are not yet determi\
       ned.
    ==>

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