|  |  D.15.2.15 determineNormalForm Procedure from libraryarnold.lib(see  arnold_lib).
 
Example: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
 
 |  | 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.
==> 
 | 
 
 |