# isSimpleNormalCrossing -- whether a polynomial is a product of factors that are in simple normal crossing

## Synopsis

• Usage:
isSimpleNormalCrossing(f)
isSimpleNormalCrossing(P)
• Inputs:
• f, , a polynomial
• P, , a product of polynomials
• Optional inputs:
• AtOrigin => , default value true, tells the function whether to consider only the behavior at the origin
• Verbose => , default value false, whether the output is to be verbose
• Outputs:
• , true if the factors of f are in simple normal crossing, false otherwise

## Description

Let $f$ be a polynomial or an object of class Product representing a factorization of a polynomial $f$. The function isSimpleNormalCrossing returns true if the distinct factors of $f$ are in simple normal crossing, or in other words, if at each point those factors, locally analytically, form part of a regular system of parameters.

 i1 : R = ZZ/7[x,y,z]; i2 : isSimpleNormalCrossing(x^3*y^2) o2 = true i3 : isSimpleNormalCrossing(x^2 - y^2) o3 = true i4 : isSimpleNormalCrossing(x*y*(x - y)) o4 = false i5 : isSimpleNormalCrossing(x^2 - y*z) o5 = false

The option AtOrigin (default value true) is used to specify whether to work at the origin (when true) or globally (when false).

 i6 : R = QQ[x,y,z]; i7 : f = (y - (x - 1)^2)*y^2; --SNC at the origin, but not globally i8 : isSimpleNormalCrossing(f) o8 = true i9 : isSimpleNormalCrossing(f, AtOrigin => false) o9 = false i10 : g = (y - 1)^2 + (x - 7)^2; --doesn't even pass through the origin i11 : isSimpleNormalCrossing(g) o11 = true i12 : isSimpleNormalCrossing(g, AtOrigin => false) o12 = false i13 : h = x*y^2*(x + 1)^3*(y - 1)^4; --SNC everywhere i14 : isSimpleNormalCrossing(h) o14 = true i15 : isSimpleNormalCrossing(h, AtOrigin => false) o15 = true

Setting the option Verbose (default value false) to true produces verbose output.

## Ways to use isSimpleNormalCrossing :

• "isSimpleNormalCrossing(Product)"
• "isSimpleNormalCrossing(RingElement)"

## For the programmer

The object isSimpleNormalCrossing is .