# Singular          #### D.4.11.1 locNormal

Procedure from library `locnormal.lib` (see locnormal_lib).

Usage:
locNormal(I [,options]); I = prime ideal, options = list of options.
Optional parameters in list options (can be entered in any order):
modular: use a modular approach for the local computations. The number of primes is increased one at a time, starting with 2 primes, until the result stabelizes.
noVerificication: if the modular approach is used, the result will not be verified.

Assume:
I is a prime ideal (the algorithm will also work for radical ideals as long as the normal command does not detect that the ideal under consideration is not prime).

Return:
a list of an ideal U and a universal denominator d such that U/d is the normalization.

Remarks:
We use the local-to-global algorithm given in  to compute the normalization of A = R/I, where R is the basering.
The idea is to stratify the singular locus of A, apply the normalization algorithm given in  locally at each stratum, and put the local results together.
If the option modular is given, the result is returned as a probabilistic result or verified, depending on whether the option noVerificication is used or not.
The normalization of A is represented as an R-module by returning a list of U and d, where U is an ideal of A and d is an element of A such that U/d is the normalization of A. In fact, U and d are returned as an ideal and a polynomial of the base ring R.

References:
 Janko Boehm, Wolfram Decker, Santiago Laplagne, Gerhard Pfister, Stefan Steidel, Andreas Steenpass: Parallel algorithms for normalization, http://arxiv.org/abs/1110.4299, 2011.
 Gert-Martin Greuel, Santiago Laplagne, Frank Seelisch: Normalization of Rings, Journal of Symbolic Computation 9 (2010), p. 887-901

Example:
 ```LIB "locnormal.lib"; ring R = 0,(x,y,z),dp; int k = 4; poly f = (x^(k+1)+y^(k+1)+z^(k+1))^2-4*(x^(k+1)*y^(k+1)+y^(k+1)*z^(k+1)+z^(k+1)*x^(k+1)); f = subst(f,z,3x-2y+1); ring S = 0,(x,y),dp; poly f = imap(R,f); ideal i = f; list L = locNormal(i); ``` 