This is IntegralClosure.info, produced by Macaulay2, version 1.24.11

IntegralClosure -- routines for integral closure of affine domains and ideals
*****************************************************************************

Description
===========

This package contains several algorithms for computing the integral closure
(i.e. normalization) of an affine domain, and also of an ideal.

The basic use of this package is shown in the following example.

+----------------------------------------------------------+
|i1 : R = QQ[x,y,z]/(x^3-x^2*z^5-z^2*y^5)                  |
|                                                          |
|o1 = R                                                    |
|                                                          |
|o1 : QuotientRing                                         |
+----------------------------------------------------------+
|i2 : S = integralClosure R                                |
|                                                          |
|o2 = S                                                    |
|                                                          |
|o2 : QuotientRing                                         |
+----------------------------------------------------------+
|i3 : describe S                                           |
|                                                          |
|                         QQ[w   , x..z]                   |
|                             1,0                          |
|o3 = -----------------------------------------------------|
|               3        2       5    2   2        5       |
|     (w   x - y z, w   y z + x*z  - x , w    + y*z  - x*y)|
|       1,0          1,0                  1,0              |
+----------------------------------------------------------+

Use icFractions, to see what fractions have been added.

+-------------------+
|i4 : icFractions R |
|                   |
|       3           |
|      y z          |
|o4 = {---, x, y, z}|
|       x           |
|                   |
|o4 : List          |
+-------------------+

Look at the ideal of S or the generators of S to see the structure of the
integral closure.

+----------------------------------------------------------------+
|i5 : gens S                                                     |
|                                                                |
|o5 = {w   , x, y, z}                                            |
|       1,0                                                      |
|                                                                |
|o5 : List                                                       |
+----------------------------------------------------------------+
|i6 : trim ideal S                                               |
|                                                                |
|                     3        2       5    2   2        5       |
|o6 = ideal (w   x - y z, w   y z + x*z  - x , w    + y*z  - x*y)|
|             1,0          1,0                  1,0              |
|                                                                |
|o6 : Ideal of QQ[w   , x..z]                                    |
|                  1,0                                           |
+----------------------------------------------------------------+

The integral closure of an ideal can be computed as follows.

+----------------------+
|i7 : use R            |
|                      |
|o7 = R                |
|                      |
|o7 : QuotientRing     |
+----------------------+
|i8 : I = ideal(y,z)   |
|                      |
|o8 = ideal (y, z)     |
|                      |
|o8 : Ideal of R       |
+----------------------+
|i9 : integralClosure I|
|                      |
|o9 = ideal (z, y, x)  |
|                      |
|o9 : Ideal of R       |
+----------------------+

Integral closures of powers of ideals can be computed in a more efficient
manner than using e.g. integralClosure(I^d), by using e.g.
integralClosure(I,d).

+---------------------------------------------------+
|i10 : integralClosure(I^2)                         |
|                                                   |
|                 2        2                        |
|o10 = ideal (x, z , y*z, y )                       |
|                                                   |
|o10 : Ideal of R                                   |
+---------------------------------------------------+
|i11 : integralClosure(I, 2)                        |
|                                                   |
|                 2        2                        |
|o11 = ideal (x, z , y*z, y )                       |
|                                                   |
|o11 : Ideal of R                                   |
+---------------------------------------------------+
|i12 : integralClosure(I, 3) == integralClosure(I^3)|
|                                                   |
|o12 = true                                         |
+---------------------------------------------------+

If the characteristic is positive, yet small compared to the degree, but the
fraction ring is still separable over a subring, then use icFracP,
which is an implementation of an algorithm due to Leonard-Pellikaan,
and modified by Singh-Swanson (see arXiv:0901.0871). However, the interface to
this routine is likely to change in future releases to more closely match the
functions above.

The method used by integralClosure is a modification of the basic algorithm
explained in Theo De Jong's paper An Algorithm for Computing the Integral
Closure, J. Symbolic Computation, (1998) 26, 273-277.

Authors
=======

  * David Eisenbud (see http://www.msri.org/~de/ ) <de@msri.org>
  * Mike Stillman (see http://www.math.cornell.edu/~mike )
    <mike@math.cornell.edu>
  * Amelia Taylor <originalbrickhouse@gmail.com>

Version
=======

This documentation describes version 1.10 of IntegralClosure.

Source code
===========

The source code from which this documentation is derived is in the file
IntegralClosure.m2 (see common/share/Macaulay2/IntegralClosure.m2 ). The
auxiliary files accompanying it are in the directory IntegralClosure/ (see
common/share/Macaulay2/IntegralClosure/ ).

Exports
=======

  * Functions and commands
      * conductor -- the conductor of a finite ring map
      * icFracP -- compute the integral closure in prime
        characteristic
      * icFractions -- fractions integral over an affine
        domain
      * icMap -- natural map from an affine domain into its
        integral closure
      * icPIdeal -- compute the integral closure in prime
        characteristic of a principal ideal
      * idealizer -- compute Hom(I,I) as a quotient ring
      * integralClosure -- integral closure of an ideal
        or a domain
      * makeS2 -- compute the S2ification of a reduced ring
      * ringFromFractions -- find presentation for
        f.g. ring
      * testHunekeQuestion -- tests a conjecture on
        integral closures strengthening the Eisenbud-Mazur conjecture
  * Methods
      * "conductor(Ring)" -- see conductor, -- the conductor
        of a finite ring map
      * "conductor(RingMap)" -- see conductor, -- the
        conductor of a finite ring map
      * "icFracP(Ring)" -- see icFracP, -- compute the integral
        closure in prime characteristic
      * "icFractions(Ring)" -- see icFractions, -- fractions
        integral over an affine domain
      * "icMap(Ring)" -- see icMap, -- natural map from an affine
        domain into its integral closure
      * "icPIdeal(RingElement,RingElement,ZZ)" -- see icPIdeal,
        -- compute the integral closure in prime characteristic of a principal
        ideal
      * "idealizer(Ideal,RingElement)" -- see idealizer, --
        compute Hom(I,I) as a quotient ring
      * "integralClosure(Ideal)" -- see
        integralClosure(Ideal,RingElement,ZZ),
        -- integral closure of
        an ideal in an affine domain
      * "integralClosure(Ideal,RingElement)" -- see
        integralClosure(Ideal,RingElement,ZZ),
        -- integral closure of
        an ideal in an affine domain
      * integralClosure(Ideal,RingElement,ZZ)
        -- integral closure of
        an ideal in an affine domain
      * "integralClosure(Ideal,ZZ)" -- see
        integralClosure(Ideal,RingElement,ZZ),
        -- integral closure of
        an ideal in an affine domain
      * integralClosure(Ring) -- compute the
        integral closure (normalization) of an affine domain
      * integralClosure(Ring,Ring), --
        compute the integral closure (normalization) of an affine reduced ring
        over a base ring
      * isNormal(Ring) -- determine if a reduced
        ring is normal
      * "makeS2(Ring)" -- see makeS2, -- compute the S2ification
        of a reduced ring
      * "ringFromFractions(Matrix,RingElement)" -- see ringFromFractions,
        -- find presentation for f.g. ring
      * "testHunekeQuestion(RingElement)" -- see testHunekeQuestion,
        -- tests a conjecture on integral closures
        strengthening the Eisenbud-Mazur conjecture
  * Symbols
      * AllCodimensions -- a symbol denoting a strategy
        element usable with integralClosure(...,Strategy=>...)
      * ConductorElement -- Specifies a particular
        non-zerodivisor in the conductor.
      * Index -- Optional input for idealizer
      * Keep -- an optional argument for various functions
      * Radical -- a symbol denoting a strategy element usable
        with integralClosure(...,Strategy=>...)
      * RadicalCodim1 -- a symbol denoting a strategy
        element usable with integralClosure(...,Strategy=>...)
      * SimplifyFractions -- a symbol denoting a
        strategy element usable with integralClosure(...,Strategy=>...)
      * StartWithOneMinor -- a symbol denoting a
        strategy element usable with integralClosure(...,Strategy=>...)
      * Vasconcelos -- a symbol denoting a strategy element
        usable with integralClosure(...,Strategy=>...)

For the programmer
==================

The object IntegralClosure, is a package (Macaulay2Doc).

AllCodimensions -- a symbol denoting a strategy element usable with integralClosure(...,Strategy=>...)
******************************************************************************************************

See also
========

  * integralClosure(Ring) -- compute the
    integral closure (normalization) of an affine domain

For the programmer
==================

The object AllCodimensions, is a symbol (Macaulay2Doc).

conductor -- the conductor of a finite ring map
***********************************************

Synopsis
========

  * Usage:
        conductor F
        conductor R
  * Inputs:
      * F, a ring map (Macaulay2Doc), $R \rightarrow S$, a
        finite map with $R$ an affine reduced ring
      * R, a ring (Macaulay2Doc), an affine domain.  In this case,
        $F : R \rightarrow S$ is the inclusion map of $R$ into the integral
        closure $S$
  * Outputs:
      * an ideal (Macaulay2Doc), of $R$ consisting of all $d \in
        R$ such that $dS \subset F(R)$

Description
===========

Suppose that the ring map $F : R \rightarrow S$ is finite: i.e. $S$ is a
finitely generated $R$-module.  The conductor of $F$ is defined to be $\{ g \in
R \mid g S \subset F(R) \}$. One way to think about this is that the conductor
is the set of universal denominators of S over R, or as the largest ideal of R
which is also an ideal in S. An important case is the conductor of the map from
a ring to its integral closure.

+-----------------------------------------------------------------------------+
|i1 : R = QQ[x,y,z]/ideal(x^7-z^7-y^2*z^5);                                   |
+-----------------------------------------------------------------------------+
|i2 : icFractions R                                                           |
|                                                                             |
|       3   2                                                                 |
|      x   x                                                                  |
|o2 = {--, --, x, y, z}                                                       |
|       2   z                                                                 |
|      z                                                                      |
|                                                                             |
|o2 : List                                                                    |
+-----------------------------------------------------------------------------+
|i3 : F = icMap R                                                             |
|                                                                             |
|                                                    QQ[w   , w   , x..z]     |
|                                                        5,0   4,0            |
|o3 = map (-------------------------------------------------------------------|
|                    2                          2     2       2     3   2     |
|          (w   z - x , w   z - w   x, w   x - w   , w   x - y z - z , w   w  |
|            4,0         5,0     4,0    5,0     4,0   5,0               5,0 4,|
|                                                                             |
|                                                       QQ[w   , w   , x..z]  |
|                                                           5,0   4,0         |
|o3 : RingMap ----------------------------------------------------------------|
|                       2                          2     2       2     3   2  |
|             (w   z - x , w   z - w   x, w   x - w   , w   x - y z - z , w   |
|               4,0         5,0     4,0    5,0     4,0   5,0               5,0|
|-----------------------------------------------------------------------------|
|-------------------------------------, R, {x, y, z})                         |
|       2      2   3          2    2                                          |
|  - x*y  - x*z , w    - w   y  - x z)                                        |
|0                 5,0    4,0                                                 |
|                                                                             |
|                                                                             |
|                                                                             |
|---------------------------------------- <-- R                               |
|          2      2   3          2    2                                       |
|w    - x*y  - x*z , w    - w   y  - x z)                                     |
| 4,0                 5,0    4,0                                              |
+-----------------------------------------------------------------------------+
|i4 : conductor F                                                             |
|                                                                             |
|             4     3   2 2   4    5                                          |
|o4 = ideal (z , x*z , x z , x z, x )                                         |
|                                                                             |
|o4 : Ideal of R                                                              |
+-----------------------------------------------------------------------------+

If an affine domain (a ring finitely generated over a field) is given as input,
then the conductor of $R$ in its integral closure is returned.

+------------------------------------+
|i5 : conductor R                    |
|                                    |
|             4     3   2 2   4    5 |
|o5 = ideal (z , x*z , x z , x z, x )|
|                                    |
|o5 : Ideal of R                     |
+------------------------------------+

If the map is not icFractions(R), then pushForward (Macaulay2Doc),
is called to compute the
conductor.

Caveat
======

Currently this function only works if F comes from a integral closure
computation, or is homogeneous

See also
========

  * integralClosure -- integral closure of an ideal or
    a domain
  * icFractions -- fractions integral over an affine domain
  * icMap -- natural map from an affine domain into its integral
    closure
  * pushForward (Macaulay2Doc)

Ways to use conductor:
======================

  * "conductor(Ring)"
  * "conductor(RingMap)"

For the programmer
==================

The object conductor, is a method function (Macaulay2Doc).

ConductorElement -- Specifies a particular non-zerodivisor in the conductor.
****************************************************************************

Functions with optional argument named ConductorElement:
========================================================

  * icFracP(...,ConductorElement=>...)
    -- Specifies a
    particular non-zerodivisor in the conductor.

For the programmer
==================

The object ConductorElement, is a symbol (Macaulay2Doc).

icFracP -- compute the integral closure in prime characteristic
***************************************************************

Synopsis
========

  * Usage:
        icFracP R, icFracP(R, ConductorElement => D), icFracP(R, Limit => N), icFracP(R, Verbosity => ZZ)
  * Inputs:
      * R, that is reduced, equidimensional, finitely and separably generated
        over a field of characteristic p
  * Optional inputs (Macaulay2Doc),:
      * ConductorElement,
        => ..., default
        value null, optionally provide a non-zerodivisor conductor element
        ConductorElement => D; the output is then the module generators of the
        integral closure. A good choice of D may speed up the calculations?
      * Limit, => ..., default
        value infinity, if value N is given, perform N loop steps only
      * Verbosity, => ...,
        default value 0, if value is greater than 0, report the conductor
        element and number of steps in the loop
  * Outputs:
      * The module generators of the integral closure of R in its total ring of
        fractions.  The generators are given as elements in the total ring of
        fractions.

Description
===========

Input is an equidimensional reduced ring in characteristic p that is finitely
and separably generated over the base field. The output is a finite set of
fractions that generate the integral closure as an R-module. An intermediate
step in the code is the computation of a conductor element D that is a
non-zerodivisor; its existence is guaranteed by the separability assumption.
The user may supply D with the optional ConductorElement => D. (Sometimes, but
not always, supplying D speeds up the computation.) In any case, with the
non-zero divisor D, the algorithm starts by setting the initial approximation
of the integral closure to be the finitely generated R-module (1/D)R, and in
the subsequent loop the code recursively constructs submodules. Eventually two
submodules repeat; the repeated module is the integral closure of R. The user
may optionally provide Limit => N to stop the loop after N steps, and the
optional Verbosity => 1 reports the conductor element and the number of steps
it took for the loop to stabilize. The algorithm is based on the
Leonard--Pellikaan--Singh--Swanson algorithm.

A simple example.
+--------------------------------------------+
|i1 : R = ZZ/5[x,y,z]/ideal(x^6-z^6-y^2*z^4);|
+--------------------------------------------+
|i2 : icFracP R                              |
|                                            |
|          2   3   2     3                   |
|         x   x   y z + z                    |
|o2 = {1, --, --, --------}                  |
|          z   2      x                      |
|             z                              |
|                                            |
|o2 : List                                   |
+--------------------------------------------+
The user may provide an optional non-zerodivisor conductor element D.  The
output generators need not be expressed in  the form with denominator D.
+------------------------------------------+
|i3 : R = ZZ/5[x,y,u,v]/ideal(x^2*u-y^2*v);|
+------------------------------------------+
|i4 : icFracP(R)                           |
|                                          |
|         x*u                              |
|o4 = {1, ---}                             |
|          y                               |
|                                          |
|o4 : List                                 |
+------------------------------------------+
|i5 : icFracP(R, ConductorElement => x)    |
|                                          |
|         x*u                              |
|o5 = {1, ---}                             |
|          y                               |
|                                          |
|o5 : List                                 |
+------------------------------------------+
In case D is not in the conductor, the output is V_e = (1/D) {r in R | r^(p^i)
in (D^(p^i-1)) for i = 1, ..., e} such that V_e = V_(e+1) and e is the smallest
such e.
+--------------------------------------------------------+
|i6 : R=ZZ/2[u,v,w,x,y,z]/ideal(u^2*x^3+u*v*y^3+v^2*z^3);|
+--------------------------------------------------------+
|i7 : icFracP(R)                                         |
|                                                        |
|            3      3                                    |
|         u*y  + v*z                                     |
|o7 = {1, -----------}                                   |
|              u                                         |
|                                                        |
|o7 : List                                               |
+--------------------------------------------------------+
|i8 : icFracP(R, ConductorElement => x^2)                |
|                                                        |
|o8 = {1}                                                |
|                                                        |
|o8 : List                                               |
+--------------------------------------------------------+
The user may also supply an optional limit on the number of steps in the
algorithm.  In this case, the output is a finitely generated R-module contained
in (1/D)R which contains the integral closure (intersected with (1/D)R.
+--------------------------------------------------------+
|i9 : R=ZZ/2[u,v,w,x,y,z]/ideal(u^2*x^3+u*v*y^3+v^2*z^3);|
+--------------------------------------------------------+
|i10 : icFracP(R, Limit => 1)                            |
|                                                        |
|             2                                          |
|       1  u*x                                           |
|o10 = {-, ----}                                         |
|       y   v*y                                          |
|                                                        |
|o10 : List                                              |
+--------------------------------------------------------+
|i11 : icFracP(R, Limit => 2)                            |
|                                                        |
|             3      3                                   |
|          u*y  + v*z                                    |
|o11 = {1, -----------}                                  |
|               u                                        |
|                                                        |
|o11 : List                                              |
+--------------------------------------------------------+
|i12 : icFracP(R)                                        |
|                                                        |
|             3      3                                   |
|          u*y  + v*z                                    |
|o12 = {1, -----------}                                  |
|               u                                        |
|                                                        |
|o12 : List                                              |
+--------------------------------------------------------+
With the option above one can for example determine how many intermediate
modules the program should compute or did compute in the loop to get the
integral closure.  A shortcut for finding the number of steps performed is to
supply the Verbosity => 1 option.
+---------------------------------------------------------+
|i13 : R=ZZ/3[u,v,w,x,y,z]/ideal(u^2*x^4+u*v*y^4+v^2*z^4);|
+---------------------------------------------------------+
|i14 : icFracP(R, Verbosity => 1)                         |
|Number of steps: 4,  Conductor Element: u*x^4-v*y^4      |
|                                                         |
|             4      4                                    |
|          u*y  - v*z                                     |
|o14 = {1, -----------}                                   |
|               u                                         |
|                                                         |
|o14 : List                                               |
+---------------------------------------------------------+
With this extra bit of information, the user can now compute integral closures
of principal ideals in R via icPIdeal.

Caveat
======

The interface to this algorithm will likely change eventually

See also
========

  * icPIdeal -- compute the integral closure in prime
    characteristic of a principal ideal
  * integralClosure -- integral closure of an ideal or
    a domain
  * isNormal(Ring) (missing documentation)

Ways to use icFracP:
====================

  * "icFracP(Ring)"

For the programmer
==================

The object icFracP, is a method function with options (Macaulay2Doc).

icFracP(...,ConductorElement=>...) -- Specifies a particular non-zerodivisor in the conductor.
**********************************************************************************************

Description
===========

A good choice can possibly speed up the calculations.  See icFracP.

Further information
===================

  * Default value: null
  * Function: icFracP, -- compute the integral closure in prime
    characteristic
  * Option key: ConductorElement, -- Specifies a
    particular non-zerodivisor in the conductor.

Functions with optional argument named ConductorElement:
========================================================

  * icFracP(...,ConductorElement=>...)
    -- Specifies a
    particular non-zerodivisor in the conductor.

icFracP(...,Limit=>...) -- Limits the number of computed intermediate modules.
******************************************************************************

Further information
===================

  * Default value: infinity (Macaulay2Doc),
  * Function: icFracP, -- compute the integral closure in prime
    characteristic
  * Option key: Limit (Macaulay2Doc), -- an optional argument

Functions with optional argument named Limit:
=============================================

  * "basis(...,Limit=>...)" -- see basis (Macaulay2Doc), -- basis
    or generating set of all or part of a ring, ideal or module
  * hermite(...,Limit=>...) (missing documentation)
  * icFracP(...,Limit=>...),
    -- Limits the number of computed intermediate modules.
  * "independentSets(...,Limit=>...)" -- see independentSets (Macaulay2Doc),
    -- some size-maximal independent subsets of
    variables modulo an ideal
  * integralClosure(...,Limit=>...)
    -- do a partial integral
    closure
  * kernelLLL(...,Limit=>...) (missing documentation)
  * LLL(...,Limit=>...) (missing documentation)
  * "minors(...,Limit=>...)" -- see minors(ZZ,Matrix) (Macaulay2Doc),
    -- ideal generated by minors
  * "oeis(...,Limit=>...)" -- see oeis (OnlineLookup), -- OEIS
    lookup
  * "simpleDocFrob(...,Limit=>...)" -- see simpleDocFrob (SimpleDoc),
    -- a sample documentation node

icFracP(...,Verbosity=>...) -- Prints out the conductor element and the number of intermediate modules it computed.
*******************************************************************************************************************

Synopsis
========

  * Usage:
        icFracP(R, Verbosity => ZZ)

Description
===========

The main use of the extra information is in computing the integral closure of
principal ideals in R, via icPIdeal.
+-----------------------------------------------------+
|i1 : R=ZZ/3[u,v,x,y]/ideal(u*x^2-v*y^2);             |
+-----------------------------------------------------+
|i2 : icFracP(R, Verbosity => 1)                      |
|Number of steps: 3,  Conductor Element: x^2          |
|                                                     |
|         u*x                                         |
|o2 = {1, ---}                                        |
|          y                                          |
|                                                     |
|o2 : List                                            |
+-----------------------------------------------------+
|i3 : S = ZZ/3[x,y,u,v];                              |
+-----------------------------------------------------+
|i4 : R = S/kernel map(S,S,{x-y,x+y^2,x*y,x^2});      |
+-----------------------------------------------------+
|i5 : icFracP(R, Verbosity => 1)                      |
|Number of steps: 4,  Conductor Element: x*u*v^2-x*v^3|
|                                                     |
|      u - v  x + y - v                               |
|o5 = {-----, ---------, 1}                           |
|        x      x + 1                                 |
|                                                     |
|o5 : List                                            |
+-----------------------------------------------------+

Further information
===================

  * Default value: 0
  * Function: icFracP, -- compute the integral closure in prime
    characteristic
  * Option key: Verbosity (Macaulay2Doc), -- an optional
    argument

Functions with optional argument named Verbosity:
=================================================

  * icFracP(...,Verbosity=>...)
    -- Prints out the conductor
    element and the number of intermediate modules it computed.
  * "idealizer(...,Verbosity=>...)" -- see idealizer, --
    compute Hom(I,I) as a quotient ring
  * integralClosure(...,Verbosity=>...)
    -- display a certain
    amount of detail about the computation
  * "isPrime(Ideal,Verbosity=>...)" -- see isPrime(Ideal) (MinimalPrimes),
    -- whether an ideal is prime
  * "makeS2(...,Verbosity=>...)" -- see makeS2, -- compute the
    S2ification of a reduced ring
  * "decompose(Ideal,Verbosity=>...)" -- see minimalPrimes (MinimalPrimes),
    -- minimal primes of an ideal
  * "minimalPrimes(...,Verbosity=>...)" -- see minimalPrimes (MinimalPrimes),
    -- minimal primes of an ideal
  * "ringFromFractions(...,Verbosity=>...)" -- see ringFromFractions,
    -- find presentation for f.g. ring

icFractions -- fractions integral over an affine domain
*******************************************************

Synopsis
========

  * Usage:
        icFractions R
  * Inputs:
      * R, a ring (Macaulay2Doc), an affine domain
  * Outputs:
      * a list (Macaulay2Doc), a list of fractions over R,
        generating the integral closure of R, as an R-algebra.

Description
===========

If the integral closure of R has not yet been computed, that computation is
performed first.  No extra computation is then involved to find the fractions.

+------------------------------------------+
|i1 : R = QQ[x,y,z]/ideal(x^6-z^6-y^2*z^4);|
+------------------------------------------+
|i2 : icFractions R                        |
|                                          |
|       3   2                              |
|      x   x                               |
|o2 = {--, --, x, y, z}                    |
|       2   z                              |
|      z                                   |
|                                          |
|o2 : List                                 |
+------------------------------------------+
|i3 : R' = integralClosure R               |
|                                          |
|o3 = R'                                   |
|                                          |
|o3 : QuotientRing                         |
+------------------------------------------+
|i4 : gens R'                              |
|                                          |
|o4 = {w   , w   , x, y, z}                |
|       4,0   3,0                          |
|                                          |
|o4 : List                                 |
+------------------------------------------+
|i5 : netList (ideal R')_*                 |
|                                          |
|     +--------------+                     |
|     |         2    |                     |
|o5 = |w   z - x     |                     |
|     | 3,0          |                     |
|     +--------------+                     |
|     |w   z - w   x |                     |
|     | 4,0     3,0  |                     |
|     +--------------+                     |
|     |         2    |                     |
|     |w   x - w     |                     |
|     | 4,0     3,0  |                     |
|     +--------------+                     |
|     | 2      2    2|                     |
|     |w    - y  - z |                     |
|     | 4,0          |                     |
|     +--------------+                     |
+------------------------------------------+

Notice that the $i$-th fraction corresponds to the $i$-th generator of the
integral closure.  For instance, the variable $w_(3,0) = {x^2 \over z}$.

Caveat
======

(a) Currently in Macaulay2, fractions over quotients of polynomial rings do not
have a nice normal form.  In particular, sometimes the fractions are
`simplified' to give much nastier looking fractions. We hope to improve this.

(b) If you want to control the computation of the integral closure via optional
arguments, then make sure you call integralClosure(Ring),
first, since icFractions does not have optional
arguments.

See also
========

  * integralClosure -- integral closure of an ideal or
    a domain
  * icMap -- natural map from an affine domain into its integral
    closure

Ways to use icFractions:
========================

  * "icFractions(Ring)"

For the programmer
==================

The object icFractions, is a method function (Macaulay2Doc).

icMap -- natural map from an affine domain into its integral closure
********************************************************************

Synopsis
========

  * Usage:
        f = icMap R
  * Inputs:
      * R, a ring (Macaulay2Doc), an affine domain
  * Outputs:
      * f, a ring map (Macaulay2Doc), from R to its integral
        closure

Description
===========

If the integral closure of R has not yet been computed, that computation is
performed first.  No extra computation is involved.  If R is integrally closed,
then the identity map is returned.

+-------------------------------------------------------+
|i1 : R = QQ[x,y]/(y^2-x^3)                             |
|                                                       |
|o1 = R                                                 |
|                                                       |
|o1 : QuotientRing                                      |
+-------------------------------------------------------+
|i2 : f = icMap R                                       |
|                                                       |
|                    QQ[w   , x..y]                     |
|                        0,0                            |
|o2 = map (---------------------------------, R, {x, y})|
|                    2              2                   |
|          (w   y - x , w   x - y, w    - x)            |
|            0,0         0,0        0,0                 |
|                                                       |
|                       QQ[w   , x..y]                  |
|                           0,0                         |
|o2 : RingMap --------------------------------- <-- R   |
|                       2              2                |
|             (w   y - x , w   x - y, w    - x)         |
|               0,0         0,0        0,0              |
+-------------------------------------------------------+
|i3 : isWellDefined f                                   |
|                                                       |
|o3 = true                                              |
+-------------------------------------------------------+
|i4 : source f === R                                    |
|                                                       |
|o4 = true                                              |
+-------------------------------------------------------+
|i5 : describe target f                                 |
|                                                       |
|               QQ[w   , x..y]                          |
|                   0,0                                 |
|o5 = ---------------------------------                 |
|               2              2                        |
|     (w   y - x , w   x - y, w    - x)                 |
|       0,0         0,0        0,0                      |
+-------------------------------------------------------+

This finite ring map can be used to compute the conductor, that is, the ideal
of elements of R which are universal denominators for the integral closure
(i.e. those d \in R such that d R' \subset R).

+----------------------------------------------------------------------------+
|i6 : S = QQ[a,b,c]/ideal(a^6-c^6-b^2*c^4);                                  |
+----------------------------------------------------------------------------+
|i7 : F = icMap S;                                                           |
|                                                                            |
|                                QQ[w   , w   , a..c]                        |
|                                    4,0   3,0                               |
|o7 : RingMap --------------------------------------------------------- <-- S|
|                       2                          2     2      2    2       |
|             (w   c - a , w   c - w   a, w   a - w   , w    - b  - c )      |
|               3,0         4,0     3,0    4,0     3,0   4,0                 |
+----------------------------------------------------------------------------+
|i8 : conductor F                                                            |
|                                                                            |
|             3     2   3    4                                               |
|o8 = ideal (c , a*c , a c, a )                                              |
|                                                                            |
|o8 : Ideal of S                                                             |
+----------------------------------------------------------------------------+

Caveat
======

If you want to control the computation of the integral closure via optional
arguments, then make sure you call integralClosure(Ring),
first, since icMap does not have optional arguments.

See also
========

  * integralClosure(Ring) -- compute the
    integral closure (normalization) of an affine domain
  * conductor -- the conductor of a finite ring map

Ways to use icMap:
==================

  * "icMap(Ring)"

For the programmer
==================

The object icMap, is a method function (Macaulay2Doc).

icPIdeal -- compute the integral closure in prime characteristic of a principal ideal
*************************************************************************************

Synopsis
========

  * Usage:
        icPIdeal (a, D, N)
  * Inputs:
      * a, an element in R
      * D, a non-zerodivisor of R that is in the conductor
      * N, the number of steps in icFracP, to compute the
        integral closure of R, by using the conductor element D
  * Outputs:
      * the integral closure of the ideal (a).

Description
===========

The main input is an element a which generates a principal ideal whose integral
closure we are seeking.  The other two input elements, a non-zerodivisor
conductor element D and the number of steps N are the pieces of information
obtained from icFracP(R, Verbosity => true).  (See the Singh--Swanson paper, An
algorithm for computing the integral closure, Remark 1.4.)
+-------------------------------------------+
|i1 : R=ZZ/3[u,v,x,y]/ideal(u*x^2-v*y^2);   |
+-------------------------------------------+
|i2 : icFracP(R, Verbosity => 1)            |
|Number of steps: 3,  Conductor Element: x^2|
|                                           |
|         u*x                               |
|o2 = {1, ---}                              |
|          y                                |
|                                           |
|o2 : List                                  |
+-------------------------------------------+
|i3 : icPIdeal(x, x^2, 3)                   |
|                                           |
|o3 = ideal (x, v*y)                        |
|                                           |
|o3 : Ideal of R                            |
+-------------------------------------------+

Caveat
======

The interface to this algorithm will likely change eventually

See also
========

  * icFracP -- compute the integral closure in prime
    characteristic

Ways to use icPIdeal:
=====================

  * "icPIdeal(RingElement,RingElement,ZZ)"

For the programmer
==================

The object icPIdeal, is a method function (Macaulay2Doc).

idealizer -- compute Hom(I,I) as a quotient ring
************************************************

Synopsis
========

  * Usage:
        (F,G) = idealizer(I,f)
  * Inputs:
      * I, an ideal (Macaulay2Doc), whose endomorphism ring we'll
        compute
      * f, a ring element (Macaulay2Doc), a nonzerodivisor
        in $I$
      * Variable, a symbol (Macaulay2Doc),
      * Index, an integer (Macaulay2Doc),
  * Optional inputs (Macaulay2Doc),:
      * Strategy => a list (Macaulay2Doc), default value {},
        possible elements include ``Vasconcelos''
      * Verbosity => an integer (Macaulay2Doc), default value 0,
        larger numbers give more information
      * Index, => ...,
        default value 0, Sets the starting index on the new variables used to
        build the endomorphism ring Hom(J,J)
      * Variable, => ...,
        default value "w", Sets the name of the indexed variables introduced in
        computing the endomorphism ring Hom(J,J).
  * Outputs:
      * F, a ring map (Macaulay2Doc), The inclusion map from $R$
        into $S = Hom_R(I,I)$
      * G, a ring map (Macaulay2Doc), $frac S \rightarrow frac
        R$, giving the fractions corresponding to each generator of $S$.

Description
===========

The idealizer of $I$, computed as target F, is the largest subring of the
fraction field of ring I in which $I$ is still an ideal.  Note that this is NOT
the common use of the term in commutative algebra.

This is a key subroutine used in the computation of integral closures.

+------------------------------------------+
|i1 : R = QQ[x,y]/(y^3-x^7)                |
|                                          |
|o1 = R                                    |
|                                          |
|o1 : QuotientRing                         |
+------------------------------------------+
|i2 : I = ideal(x^2,y^2)                   |
|                                          |
|             2   2                        |
|o2 = ideal (x , y )                       |
|                                          |
|o2 : Ideal of R                           |
+------------------------------------------+
|i3 : (F,G) = idealizer(I,x^2);            |
+------------------------------------------+
|i4 : target F                             |
|                                          |
|                 QQ[w   , x..y]           |
|                     0,0                  |
|o4 = -------------------------------------|
|           2    2   2      3            5 |
|     (w   x  - y , w    - x y, w   y - x )|
|       0,0          0,0         0,0       |
|                                          |
|o4 : QuotientRing                         |
+------------------------------------------+
|i5 : first entries G.matrix               |
|                                          |
|       2                                  |
|      y                                   |
|o5 = {--, x, y}                           |
|       2                                  |
|      x                                   |
|                                          |
|o5 : List                                 |
+------------------------------------------+

See also
========

  * ringFromFractions -- find presentation for f.g.
    ring
  * integralClosure -- integral closure of an ideal or
    a domain

Ways to use idealizer:
======================

  * "idealizer(Ideal,RingElement)"

For the programmer
==================

The object idealizer, is a method function with options (Macaulay2Doc).

idealizer(...,Index=>...) -- Sets the starting index on the new variables used to build the endomorphism ring Hom(J,J)
**********************************************************************************************************************

Description
===========

If the program idealizer is used independently, the user will generally want to
use the default value of 0.  However, when used as part of the integralClosure
computation the number needs to start higher depending on the level of
recursion involved.

Further information
===================

  * Default value: 0
  * Function: idealizer, -- compute Hom(I,I) as a quotient
    ring
  * Option key: Index, -- Optional input for idealizer

Functions with optional argument named Index:
=============================================

  * idealizer(...,Index=>...)
    -- Sets the starting index on
    the new variables used to build the endomorphism ring Hom(J,J)
  * "ringFromFractions(...,Index=>...)" -- see ringFromFractions,
    -- find presentation for f.g. ring

idealizer(...,Variable=>...) -- Sets the name of the indexed variables introduced in computing the endomorphism ring Hom(J,J).
******************************************************************************************************************************

Further information
===================

  * Default value: w
  * Function: idealizer, -- compute Hom(I,I) as a quotient
    ring
  * Option key: Variable (Macaulay2Doc), -- specify a name for a
    variable

Functions with optional argument named Variable:
================================================

  * conwayPolynomial(...,Variable=>...) (missing documentation)
  * "GF(...,Variable=>...)" -- see GF (Macaulay2Doc), -- make a finite
    field
  * "Grassmannian(...,Variable=>...)" -- see Grassmannian(ZZ,ZZ) (Macaulay2Doc),
    -- the Grassmannian of linear
    subspaces of a vector space
  * idealizer(...,Variable=>...)
    -- Sets the name of the
    indexed variables introduced in computing the endomorphism ring Hom(J,J).
  * integralClosure(...,Variable=>...)
    -- set the base
    letter for the indexed variables introduced while computing the integral
    closure
  * "intersectInP(...,Variable=>...)" -- see
    intersectInP(...,BasisElementLimit=>...) (ReesAlgebra),
    --
    Option for intersectInP
  * "multiplicity(...,Variable=>...)" -- see
    intersectInP(...,BasisElementLimit=>...) (ReesAlgebra),
    --
    Option for intersectInP
  * makeS2(...,Variable=>...)
    -- Sets the name of the
    indexed variables introduced in computing the S2-ification.
  * "ringFromFractions(...,Variable=>...)" -- see ringFromFractions,
    -- find presentation for f.g. ring
  * "Schubert(...,Variable=>...)" -- see Schubert(ZZ,ZZ,VisibleList) (Macaulay2Doc),
    -- find the Plücker
    ideal of a Schubert variety
  * "associatedGradedRing(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "distinguished(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "isReduction(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "jacobianDual(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "normalCone(Ideal,RingElement,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "normalCone(Ideal,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "reesAlgebra(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "reesIdeal(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "specialFiber(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "specialFiberIdeal(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring

Index -- Optional input for idealizer
*************************************

Description
===========

This option allows the user to select the starting index for the new variables
added in computing Hom(J,J) as a ring.  The default value is 0 and is what most
users will use.  The option is needed for the iteration implemented in
integralClosure.

Functions with optional argument named Index:
=============================================

  * idealizer(...,Index=>...)
    -- Sets the starting index on
    the new variables used to build the endomorphism ring Hom(J,J)
  * "ringFromFractions(...,Index=>...)" -- see ringFromFractions,
    -- find presentation for f.g. ring

For the programmer
==================

The object Index, is a symbol (Macaulay2Doc).

integralClosure -- integral closure of an ideal or a domain
***********************************************************

Ways to use integralClosure:
============================

  * "integralClosure(Ideal)" -- see
    integralClosure(Ideal,RingElement,ZZ),
    -- integral closure of an
    ideal in an affine domain
  * "integralClosure(Ideal,RingElement)" -- see
    integralClosure(Ideal,RingElement,ZZ),
    -- integral closure of an
    ideal in an affine domain
  * integralClosure(Ideal,RingElement,ZZ)
    -- integral closure of an
    ideal in an affine domain
  * "integralClosure(Ideal,ZZ)" -- see
    integralClosure(Ideal,RingElement,ZZ),
    -- integral closure of an
    ideal in an affine domain
  * integralClosure(Ring) -- compute the
    integral closure (normalization) of an affine domain
  * integralClosure(Ring,Ring), --
    compute the integral closure (normalization) of an affine reduced ring over
    a base ring

For the programmer
==================

The object integralClosure, is a method function with options (Macaulay2Doc).

integralClosure(...,Keep=>...) -- list ring generators which should not be simplified away
******************************************************************************************

Synopsis
========

  * Usage:
        integralClosure(R, Keep=>L)
  * Inputs:
      * L, a list (Macaulay2Doc), a list of variables in the ring
        R, or null (the default).
  * Consequences:
      * The given list of variables (or all of the outer generators, if L is
        null) will be generators of the integral closure

Description
===========

Consider the cuspidal cubic, and three different possibilities for Keep.

+--------------------------------------------------+
|i1 : R = QQ[x,y]/ideal(x^3-y^2);                  |
+--------------------------------------------------+
|i2 : R' = integralClosure(R, Variable => symbol t)|
|                                                  |
|o2 = R'                                           |
|                                                  |
|o2 : QuotientRing                                 |
+--------------------------------------------------+
|i3 : trim ideal R'                                |
|                                                  |
|                     2              2             |
|o3 = ideal (t   y - x , t   x - y, t    - x)      |
|             0,0         0,0        0,0           |
|                                                  |
|o3 : Ideal of QQ[t   , x..y]                      |
|                  0,0                             |
+--------------------------------------------------+
+---------------------------------------------------------------+
|i4 : R = QQ[x,y]/ideal(x^3-y^2);                               |
+---------------------------------------------------------------+
|i5 : R' = integralClosure(R, Variable => symbol t, Keep => {x})|
|                                                               |
|o5 = R'                                                        |
|                                                               |
|o5 : QuotientRing                                              |
+---------------------------------------------------------------+
|i6 : trim ideal R'                                             |
|                                                               |
|            2                                                  |
|o6 = ideal(t    - x)                                           |
|            0,0                                                |
|                                                               |
|o6 : Ideal of QQ[t   , x]                                      |
|                  0,0                                          |
+---------------------------------------------------------------+
+---------------------------------------------------------+
|i7 : R = QQ[x,y]/ideal(x^3-y^2);                         |
+---------------------------------------------------------+
|i8 : integralClosure(R, Variable => symbol t, Keep => {})|
|                                                         |
|o8 = QQ[t   ]                                            |
|         0,0                                             |
|                                                         |
|o8 : PolynomialRing                                      |
+---------------------------------------------------------+

Further information
===================

  * Default value: null
  * Function: integralClosure, -- integral closure of an
    ideal or a domain
  * Option key: Keep, -- an optional argument for various functions

Functions with optional argument named Keep:
============================================

  * integralClosure(...,Keep=>...)
    -- list ring generators
    which should not be simplified away

integralClosure(...,Limit=>...) -- do a partial integral closure
****************************************************************

Synopsis
========

  * Usage:
        integralClosure(R, Limit => n)
  * Inputs:
      * n, an integer (Macaulay2Doc), how many steps to perform

Description
===========

The integral closure algorithm proceeds by finding a suitable ideal $J$, and
then computing $Hom_R(J,J)$, and repeating these steps.  This optional argument
limits the number of such steps to perform.

The result is an integral extension, but is not necessarily integrally closed.

+-----------------------------------------------------------------------------+
|i1 : R = QQ[x,y,z]/ideal(x^6-z^6-y^2*z^4-z^3);                               |
+-----------------------------------------------------------------------------+
|i2 : R' = integralClosure(R, Variable => symbol t, Limit => 2)               |
|                                                                             |
|o2 = R'                                                                      |
|                                                                             |
|o2 : QuotientRing                                                            |
+-----------------------------------------------------------------------------+
|i3 : trim ideal R'                                                           |
|                                                                             |
|                     2 2    4           2 2        4    5 2    5 2   2       |
|o3 = ideal (t   x - y z  - z  - z, t   y z  + t   z  - x y  - x z , t   z -  |
|             1,1                    1,1        1,1                   1,1     |
|     ------------------------------------------------------------------------|
|      4 2     4 3    4   3      3 4 2     3 2 4    3 6     3 2      3 3    3 |
|     x y z - x z  - x , t    - x y z  - 2x y z  - x z  - 2x y z - 2x z  - x )|
|                         1,1                                                 |
|                                                                             |
|o3 : Ideal of QQ[t   , x..z]                                                 |
|                  1,1                                                        |
+-----------------------------------------------------------------------------+
|i4 : icFractions R                                                           |
|                                                                             |
|       2 2    4                                                              |
|      y z  + z  + z                                                          |
|o4 = {-------------, x, y, z}                                                |
|            x                                                                |
|                                                                             |
|o4 : List                                                                    |
+-----------------------------------------------------------------------------+

Further information
===================

  * Default value: infinity (Macaulay2Doc),
  * Function: integralClosure, -- integral closure of an
    ideal or a domain
  * Option key: Limit (Macaulay2Doc), -- an optional argument

Functions with optional argument named Limit:
=============================================

  * "basis(...,Limit=>...)" -- see basis (Macaulay2Doc), -- basis
    or generating set of all or part of a ring, ideal or module
  * hermite(...,Limit=>...) (missing documentation)
  * icFracP(...,Limit=>...),
    -- Limits the number of computed intermediate modules.
  * "independentSets(...,Limit=>...)" -- see independentSets (Macaulay2Doc),
    -- some size-maximal independent subsets of
    variables modulo an ideal
  * integralClosure(...,Limit=>...)
    -- do a partial integral
    closure
  * kernelLLL(...,Limit=>...) (missing documentation)
  * LLL(...,Limit=>...) (missing documentation)
  * "minors(...,Limit=>...)" -- see minors(ZZ,Matrix) (Macaulay2Doc),
    -- ideal generated by minors
  * "oeis(...,Limit=>...)" -- see oeis (OnlineLookup), -- OEIS
    lookup
  * "simpleDocFrob(...,Limit=>...)" -- see simpleDocFrob (SimpleDoc),
    -- a sample documentation node

integralClosure(...,Strategy=>...) -- control the algorithm used
****************************************************************

Synopsis
========

  * Usage:
        integralClosure(R, Strategy=>L)
  * Inputs:
      * L, a list (Macaulay2Doc), of a subset of the following:
        RadicalCodim1, Radical, AllCodimensions, Vasconcelos,
        SimplifyFractions, StartWithOneMinor

Description
===========

Overall, the default options are the best.  However, sometimes one of these is
dramatically better (or worse!).  For the examples here, one doesn't notice
much difference.

RadicalCodim1 chooses an alternate, often much faster, sometimes much slower,
algorithm for computing the radical of ideals.  This will often produce a
different presentation for the integral closure. Radical chooses yet another
such algorithm.

AllCodimensions tells the algorithm to bypass the computation of the
S2-ification, but in each iteration of the algorithm, use the radical of the
extended Jacobian ideal from the previous step, instead of using only the
codimension 1 components of that.  This is useful when for some reason the
S2-ification is hard to compute, or if the probabilistic algorithm for
computing it fails.  In general though, this option slows down the computation
for many examples.

StartWithOneMinor tells the algorithm to not compute the entire Jacobian ideal,
just find one element in it.  This is often a bad choice, unless the ideal is
large enough that one can't compute the Jacobian ideal.  In the future, we plan
on using the FastMinors, package to compute part of the
Jacobian ideal.

SimplifyFractions changes the fractions to hopefully be simpler.  Sometimes it
succeeds, yet sometimes it makes the fractions worse.  This is because of the
manner in which fraction fields work.  We are hoping that in the future, less
drastic change of fractions will happen by default.

Vasconocelos tells the routine to instead of computing Hom(J,J), to instead
compute Hom(J^-1, J^-1).  This is usually a more time consuming computation,
but it does potentially get to the answer in a smaller number of steps.

+-----------------------------------------------------------------------------+
|i1 : S = QQ[x,y,z]                                                           |
|                                                                             |
|o1 = S                                                                       |
|                                                                             |
|o1 : PolynomialRing                                                          |
+-----------------------------------------------------------------------------+
|i2 : f = ideal (x^8-z^6-y^2*z^4-z^3)                                         |
|                                                                             |
|            8    2 4    6    3                                               |
|o2 = ideal(x  - y z  - z  - z )                                              |
|                                                                             |
|o2 : Ideal of S                                                              |
+-----------------------------------------------------------------------------+
|i3 : R = S/f                                                                 |
|                                                                             |
|o3 = R                                                                       |
|                                                                             |
|o3 : QuotientRing                                                            |
+-----------------------------------------------------------------------------+
|i4 : time R' = integralClosure R                                             |
| -- used 0.469809s (cpu); 0.297083s (thread); 0s (gc)                        |
|                                                                             |
|o4 = R'                                                                      |
|                                                                             |
|o4 : QuotientRing                                                            |
+-----------------------------------------------------------------------------+
|i5 : netList (ideal R')_*                                                    |
|                                                                             |
|     +-----------------------------------------------------------------------|
|     |         3                                                             |
|o5 = |w   z - x                                                              |
|     | 4,0                                                                   |
|     +-----------------------------------------------------------------------|
|     |         2 2    4                                                      |
|     |w   x - y z  - z  - z                                                  |
|     | 1,1                                                                   |
|     +-----------------------------------------------------------------------|
|     |     4                                                                 |
|     |w   x  - w   z                                                         |
|     | 4,0      1,1                                                          |
|     +-----------------------------------------------------------------------|
|     |            2 2     2 3    2                                           |
|     |w   w    - x y z - x z  - x                                            |
|     | 4,0 1,1                                                               |
|     +-----------------------------------------------------------------------|
|     | 2           3 2     2      6 2                                        |
|     |w   z + w   x y z - w    + x z                                         |
|     | 4,0     4,0         1,1                                               |
|     +-----------------------------------------------------------------------|
|     | 2           4 2        2                                              |
|     |w   x + w   x y  - w   y z - w                                         |
|     | 4,0     4,0        1,1       1,1                                      |
|     +-----------------------------------------------------------------------|
|     | 3      2   3 2        6       4 2       2 4      6       2        3   |
|     |w    + w   x y  + w   x z - x*y z  - 2x*y z  - x*z  - 2x*y z - 2x*z  - |
|     | 4,0    4,0        4,0                                                 |
|     +-----------------------------------------------------------------------|
|-----------------------------------------------------------------------------|
|-+                                                                           |
| |                                                                           |
| |                                                                           |
| |                                                                           |
|-+                                                                           |
| |                                                                           |
| |                                                                           |
| |                                                                           |
|-+                                                                           |
| |                                                                           |
| |                                                                           |
| |                                                                           |
|-+                                                                           |
| |                                                                           |
| |                                                                           |
| |                                                                           |
|-+                                                                           |
| |                                                                           |
| |                                                                           |
| |                                                                           |
|-+                                                                           |
| |                                                                           |
| |                                                                           |
| |                                                                           |
|-+                                                                           |
| |                                                                           |
|x|                                                                           |
| |                                                                           |
|-+                                                                           |
+-----------------------------------------------------------------------------+
|i6 : icFractions R                                                           |
|                                                                             |
|       3   2 2    4                                                          |
|      x   y z  + z  + z                                                      |
|o6 = {--, -------------, x, y, z}                                            |
|       z        x                                                            |
|                                                                             |
|o6 : List                                                                    |
+-----------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
|i7 : S = QQ[x,y,z]                                                           |
|                                                                             |
|o7 = S                                                                       |
|                                                                             |
|o7 : PolynomialRing                                                          |
+-----------------------------------------------------------------------------+
|i8 : f = ideal (x^8-z^6-y^2*z^4-z^3)                                         |
|                                                                             |
|            8    2 4    6    3                                               |
|o8 = ideal(x  - y z  - z  - z )                                              |
|                                                                             |
|o8 : Ideal of S                                                              |
+-----------------------------------------------------------------------------+
|i9 : R = S/f                                                                 |
|                                                                             |
|o9 = R                                                                       |
|                                                                             |
|o9 : QuotientRing                                                            |
+-----------------------------------------------------------------------------+
|i10 : time R' = integralClosure(R, Strategy => Radical)                      |
| -- used 0.409267s (cpu); 0.27516s (thread); 0s (gc)                         |
|                                                                             |
|o10 = R'                                                                     |
|                                                                             |
|o10 : QuotientRing                                                           |
+-----------------------------------------------------------------------------+
|i11 : netList (ideal R')_*                                                   |
|                                                                             |
|      +----------------------------------------------------------------------|
|      |         3                                                            |
|o11 = |w   z - x                                                             |
|      | 4,0                                                                  |
|      +----------------------------------------------------------------------|
|      |         2 2    4                                                     |
|      |w   x - y z  - z  - z                                                 |
|      | 1,1                                                                  |
|      +----------------------------------------------------------------------|
|      |     4                                                                |
|      |w   x  - w   z                                                        |
|      | 4,0      1,1                                                         |
|      +----------------------------------------------------------------------|
|      |            2 2     2 3    2                                          |
|      |w   w    - x y z - x z  - x                                           |
|      | 4,0 1,1                                                              |
|      +----------------------------------------------------------------------|
|      | 2           3 2     2      6 2                                       |
|      |w   z + w   x y z - w    + x z                                        |
|      | 4,0     4,0         1,1                                              |
|      +----------------------------------------------------------------------|
|      | 2           4 2        2                                             |
|      |w   x + w   x y  - w   y z - w                                        |
|      | 4,0     4,0        1,1       1,1                                     |
|      +----------------------------------------------------------------------|
|      | 3      2   3 2        6       4 2       2 4      6       2        3  |
|      |w    + w   x y  + w   x z - x*y z  - 2x*y z  - x*z  - 2x*y z - 2x*z  -|
|      | 4,0    4,0        4,0                                                |
|      +----------------------------------------------------------------------|
|-----------------------------------------------------------------------------|
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
| x|                                                                          |
|  |                                                                          |
|--+                                                                          |
+-----------------------------------------------------------------------------+
|i12 : icFractions R                                                          |
|                                                                             |
|        3   2 2    4                                                         |
|       x   y z  + z  + z                                                     |
|o12 = {--, -------------, x, y, z}                                           |
|        z        x                                                           |
|                                                                             |
|o12 : List                                                                   |
+-----------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
|i13 : S = QQ[x,y,z]                                                          |
|                                                                             |
|o13 = S                                                                      |
|                                                                             |
|o13 : PolynomialRing                                                         |
+-----------------------------------------------------------------------------+
|i14 : f = ideal (x^8-z^6-y^2*z^4-z^3)                                        |
|                                                                             |
|             8    2 4    6    3                                              |
|o14 = ideal(x  - y z  - z  - z )                                             |
|                                                                             |
|o14 : Ideal of S                                                             |
+-----------------------------------------------------------------------------+
|i15 : R = S/f                                                                |
|                                                                             |
|o15 = R                                                                      |
|                                                                             |
|o15 : QuotientRing                                                           |
+-----------------------------------------------------------------------------+
|i16 : time R' = integralClosure(R, Strategy => AllCodimensions)              |
| -- used 0.472425s (cpu); 0.298343s (thread); 0s (gc)                        |
|                                                                             |
|o16 = R'                                                                     |
|                                                                             |
|o16 : QuotientRing                                                           |
+-----------------------------------------------------------------------------+
|i17 : netList (ideal R')_*                                                   |
|                                                                             |
|      +----------------------------------------------------------------------|
|      |         3                                                            |
|o17 = |w   z - x                                                             |
|      | 4,0                                                                  |
|      +----------------------------------------------------------------------|
|      |         2 2    4                                                     |
|      |w   x - y z  - z  - z                                                 |
|      | 1,1                                                                  |
|      +----------------------------------------------------------------------|
|      |     4                                                                |
|      |w   x  - w   z                                                        |
|      | 4,0      1,1                                                         |
|      +----------------------------------------------------------------------|
|      |            2 2     2 3    2                                          |
|      |w   w    - x y z - x z  - x                                           |
|      | 4,0 1,1                                                              |
|      +----------------------------------------------------------------------|
|      | 2           3 2     2      6 2                                       |
|      |w   z + w   x y z - w    + x z                                        |
|      | 4,0     4,0         1,1                                              |
|      +----------------------------------------------------------------------|
|      | 2           4 2        2                                             |
|      |w   x + w   x y  - w   y z - w                                        |
|      | 4,0     4,0        1,1       1,1                                     |
|      +----------------------------------------------------------------------|
|      | 3      2   3 2        6       4 2       2 4      6       2        3  |
|      |w    + w   x y  + w   x z - x*y z  - 2x*y z  - x*z  - 2x*y z - 2x*z  -|
|      | 4,0    4,0        4,0                                                |
|      +----------------------------------------------------------------------|
|-----------------------------------------------------------------------------|
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
| x|                                                                          |
|  |                                                                          |
|--+                                                                          |
+-----------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
|i18 : S = QQ[x,y,z]                                                          |
|                                                                             |
|o18 = S                                                                      |
|                                                                             |
|o18 : PolynomialRing                                                         |
+-----------------------------------------------------------------------------+
|i19 : f = ideal (x^8-z^6-y^2*z^4-z^3)                                        |
|                                                                             |
|             8    2 4    6    3                                              |
|o19 = ideal(x  - y z  - z  - z )                                             |
|                                                                             |
|o19 : Ideal of S                                                             |
+-----------------------------------------------------------------------------+
|i20 : R = S/f                                                                |
|                                                                             |
|o20 = R                                                                      |
|                                                                             |
|o20 : QuotientRing                                                           |
+-----------------------------------------------------------------------------+
|i21 : time R' = integralClosure(R, Strategy => SimplifyFractions)            |
| -- used 0.534956s (cpu); 0.326493s (thread); 0s (gc)                        |
|                                                                             |
|o21 = R'                                                                     |
|                                                                             |
|o21 : QuotientRing                                                           |
+-----------------------------------------------------------------------------+
|i22 : netList (ideal R')_*                                                   |
|                                                                             |
|      +----------------------------------------------------------------------|
|      |         3                                                            |
|o22 = |w   z - x                                                             |
|      | 4,0                                                                  |
|      +----------------------------------------------------------------------|
|      |         2 2    4                                                     |
|      |w   x - y z  - z  - z                                                 |
|      | 1,0                                                                  |
|      +----------------------------------------------------------------------|
|      |            2 2     2 3    2                                          |
|      |w   w    - x y z - x z  - x                                           |
|      | 4,0 1,0                                                              |
|      +----------------------------------------------------------------------|
|      |     4                                                                |
|      |w   x  - w   z                                                        |
|      | 4,0      1,0                                                         |
|      +----------------------------------------------------------------------|
|      | 2           3 2     2      6 2                                       |
|      |w   z + w   x y z - w    + x z                                        |
|      | 4,0     4,0         1,0                                              |
|      +----------------------------------------------------------------------|
|      | 2           4 2        2                                             |
|      |w   x + w   x y  - w   y z - w                                        |
|      | 4,0     4,0        1,0       1,0                                     |
|      +----------------------------------------------------------------------|
|      | 3      2   3 2        6       4 2       2 4      6       2        3  |
|      |w    + w   x y  + w   x z - x*y z  - 2x*y z  - x*z  - 2x*y z - 2x*z  -|
|      | 4,0    4,0        4,0                                                |
|      +----------------------------------------------------------------------|
|-----------------------------------------------------------------------------|
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
| x|                                                                          |
|  |                                                                          |
|--+                                                                          |
+-----------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
|i23 : S = QQ[x,y,z]                                                          |
|                                                                             |
|o23 = S                                                                      |
|                                                                             |
|o23 : PolynomialRing                                                         |
+-----------------------------------------------------------------------------+
|i24 : f = ideal (x^8-z^6-y^2*z^4-z^3)                                        |
|                                                                             |
|             8    2 4    6    3                                              |
|o24 = ideal(x  - y z  - z  - z )                                             |
|                                                                             |
|o24 : Ideal of S                                                             |
+-----------------------------------------------------------------------------+
|i25 : R = S/f                                                                |
|                                                                             |
|o25 = R                                                                      |
|                                                                             |
|o25 : QuotientRing                                                           |
+-----------------------------------------------------------------------------+
|i26 : time R' = integralClosure (R, Strategy => RadicalCodim1)               |
| -- used 0.863147s (cpu); 0.519033s (thread); 0s (gc)                        |
|                                                                             |
|o26 = R'                                                                     |
|                                                                             |
|o26 : QuotientRing                                                           |
+-----------------------------------------------------------------------------+
|i27 : netList (ideal R')_*                                                   |
|                                                                             |
|      +----------------------------------------------------------------------|
|      |         3                                                            |
|o27 = |w   z - x                                                             |
|      | 4,0                                                                  |
|      +----------------------------------------------------------------------|
|      |         2 2    4                                                     |
|      |w   x - y z  - z  - z                                                 |
|      | 1,1                                                                  |
|      +----------------------------------------------------------------------|
|      |     4                                                                |
|      |w   x  - w   z                                                        |
|      | 4,0      1,1                                                         |
|      +----------------------------------------------------------------------|
|      |            2 2     2 3    2                                          |
|      |w   w    - x y z - x z  - x                                           |
|      | 4,0 1,1                                                              |
|      +----------------------------------------------------------------------|
|      | 2           3 2     2      6 2                                       |
|      |w   z + w   x y z - w    + x z                                        |
|      | 4,0     4,0         1,1                                              |
|      +----------------------------------------------------------------------|
|      | 2           4 2        2                                             |
|      |w   x + w   x y  - w   y z - w                                        |
|      | 4,0     4,0        1,1       1,1                                     |
|      +----------------------------------------------------------------------|
|      | 3      2   3 2        6       4 2       2 4      6       2        3  |
|      |w    + w   x y  + w   x z - x*y z  - 2x*y z  - x*z  - 2x*y z - 2x*z  -|
|      | 4,0    4,0        4,0                                                |
|      +----------------------------------------------------------------------|
|-----------------------------------------------------------------------------|
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
| x|                                                                          |
|  |                                                                          |
|--+                                                                          |
+-----------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
|i28 : S = QQ[x,y,z]                                                          |
|                                                                             |
|o28 = S                                                                      |
|                                                                             |
|o28 : PolynomialRing                                                         |
+-----------------------------------------------------------------------------+
|i29 : f = ideal (x^8-z^6-y^2*z^4-z^3)                                        |
|                                                                             |
|             8    2 4    6    3                                              |
|o29 = ideal(x  - y z  - z  - z )                                             |
|                                                                             |
|o29 : Ideal of S                                                             |
+-----------------------------------------------------------------------------+
|i30 : R = S/f                                                                |
|                                                                             |
|o30 = R                                                                      |
|                                                                             |
|o30 : QuotientRing                                                           |
+-----------------------------------------------------------------------------+
|i31 : time R' = integralClosure (R, Strategy => Vasconcelos)                 |
| -- used 0.477997s (cpu); 0.298819s (thread); 0s (gc)                        |
|                                                                             |
|o31 = R'                                                                     |
|                                                                             |
|o31 : QuotientRing                                                           |
+-----------------------------------------------------------------------------+
|i32 : netList (ideal R')_*                                                   |
|                                                                             |
|      +----------------------------------------------------------------------|
|      |         3                                                            |
|o32 = |w   z - x                                                             |
|      | 4,0                                                                  |
|      +----------------------------------------------------------------------|
|      |         2 2    4                                                     |
|      |w   x - y z  - z  - z                                                 |
|      | 1,1                                                                  |
|      +----------------------------------------------------------------------|
|      |     4                                                                |
|      |w   x  - w   z                                                        |
|      | 4,0      1,1                                                         |
|      +----------------------------------------------------------------------|
|      |            2 2     2 3    2                                          |
|      |w   w    - x y z - x z  - x                                           |
|      | 4,0 1,1                                                              |
|      +----------------------------------------------------------------------|
|      | 2           3 2     2      6 2                                       |
|      |w   z + w   x y z - w    + x z                                        |
|      | 4,0     4,0         1,1                                              |
|      +----------------------------------------------------------------------|
|      | 2           4 2        2                                             |
|      |w   x + w   x y  - w   y z - w                                        |
|      | 4,0     4,0        1,1       1,1                                     |
|      +----------------------------------------------------------------------|
|      | 3      2   3 2        6       4 2       2 4      6       2        3  |
|      |w    + w   x y  + w   x z - x*y z  - 2x*y z  - x*z  - 2x*y z - 2x*z  -|
|      | 4,0    4,0        4,0                                                |
|      +----------------------------------------------------------------------|
|-----------------------------------------------------------------------------|
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
|  |                                                                          |
|  |                                                                          |
|--+                                                                          |
|  |                                                                          |
| x|                                                                          |
|  |                                                                          |
|--+                                                                          |
+-----------------------------------------------------------------------------+
+--------------------------------------------------------+
|i33 : S = QQ[a,b,c,d]                                   |
|                                                        |
|o33 = S                                                 |
|                                                        |
|o33 : PolynomialRing                                    |
+--------------------------------------------------------+
|i34 : f = monomialCurveIdeal(S,{1,3,4})                 |
|                                                        |
|                         3      2     2    2    3    2  |
|o34 = ideal (b*c - a*d, c  - b*d , a*c  - b d, b  - a c)|
|                                                        |
|o34 : Ideal of S                                        |
+--------------------------------------------------------+
|i35 : R = S/f                                           |
|                                                        |
|o35 = R                                                 |
|                                                        |
|o35 : QuotientRing                                      |
+--------------------------------------------------------+
|i36 : time R' = integralClosure R                       |
| -- used 0.0882553s (cpu); 0.0534468s (thread); 0s (gc) |
|                                                        |
|o36 = R'                                                |
|                                                        |
|o36 : QuotientRing                                      |
+--------------------------------------------------------+
|i37 : netList (ideal R')_*                              |
|                                                        |
|      +-----------+                                     |
|o37 = |b*c - a*d  |                                     |
|      +-----------+                                     |
|      |         2 |                                     |
|      |w   d - c  |                                     |
|      | 0,0       |                                     |
|      +-----------+                                     |
|      |w   c - b*d|                                     |
|      | 0,0       |                                     |
|      +-----------+                                     |
|      |w   b - a*c|                                     |
|      | 0,0       |                                     |
|      +-----------+                                     |
|      |         2 |                                     |
|      |w   a - b  |                                     |
|      | 0,0       |                                     |
|      +-----------+                                     |
|      | 2         |                                     |
|      |w    - a*d |                                     |
|      | 0,0       |                                     |
|      +-----------+                                     |
+--------------------------------------------------------+

Rational Quartic

+--------------------------------------------------------+
|i38 : S = QQ[a,b,c,d]                                   |
|                                                        |
|o38 = S                                                 |
|                                                        |
|o38 : PolynomialRing                                    |
+--------------------------------------------------------+
|i39 : I = monomialCurveIdeal(S,{1,3,4})                 |
|                                                        |
|                         3      2     2    2    3    2  |
|o39 = ideal (b*c - a*d, c  - b*d , a*c  - b d, b  - a c)|
|                                                        |
|o39 : Ideal of S                                        |
+--------------------------------------------------------+
|i40 : R = S/I                                           |
|                                                        |
|o40 = R                                                 |
|                                                        |
|o40 : QuotientRing                                      |
+--------------------------------------------------------+
|i41 : time R' = integralClosure(R, Strategy => Radical) |
| -- used 0.0878047s (cpu); 0.0548856s (thread); 0s (gc) |
|                                                        |
|o41 = R'                                                |
|                                                        |
|o41 : QuotientRing                                      |
+--------------------------------------------------------+
|i42 : icFractions R                                     |
|                                                        |
|        2                                               |
|       c                                                |
|o42 = {--, a, b, c, d}                                  |
|        d                                               |
|                                                        |
|o42 : List                                              |
+--------------------------------------------------------+
+---------------------------------------------------------------+
|i43 : S = QQ[a,b,c,d]                                          |
|                                                               |
|o43 = S                                                        |
|                                                               |
|o43 : PolynomialRing                                           |
+---------------------------------------------------------------+
|i44 : I = monomialCurveIdeal(S,{1,3,4})                        |
|                                                               |
|                         3      2     2    2    3    2         |
|o44 = ideal (b*c - a*d, c  - b*d , a*c  - b d, b  - a c)       |
|                                                               |
|o44 : Ideal of S                                               |
+---------------------------------------------------------------+
|i45 : R = S/I                                                  |
|                                                               |
|o45 = R                                                        |
|                                                               |
|o45 : QuotientRing                                             |
+---------------------------------------------------------------+
|i46 : time R' = integralClosure(R, Strategy => AllCodimensions)|
| -- used 0.166911s (cpu); 0.0920662s (thread); 0s (gc)         |
|                                                               |
|o46 = R'                                                       |
|                                                               |
|o46 : QuotientRing                                             |
+---------------------------------------------------------------+
|i47 : icFractions R                                            |
|                                                               |
|       b*d                                                     |
|o47 = {---, a, b, c, d}                                        |
|        c                                                      |
|                                                               |
|o47 : List                                                     |
+---------------------------------------------------------------+
+--------------------------------------------------------------+
|i48 : S = QQ[a,b,c,d]                                         |
|                                                              |
|o48 = S                                                       |
|                                                              |
|o48 : PolynomialRing                                          |
+--------------------------------------------------------------+
|i49 : I = monomialCurveIdeal(S,{1,3,4})                       |
|                                                              |
|                         3      2     2    2    3    2        |
|o49 = ideal (b*c - a*d, c  - b*d , a*c  - b d, b  - a c)      |
|                                                              |
|o49 : Ideal of S                                              |
+--------------------------------------------------------------+
|i50 : R = S/I                                                 |
|                                                              |
|o50 = R                                                       |
|                                                              |
|o50 : QuotientRing                                            |
+--------------------------------------------------------------+
|i51 : time R' = integralClosure (R, Strategy => RadicalCodim1)|
| -- used 0.0887415s (cpu); 0.0554241s (thread); 0s (gc)       |
|                                                              |
|o51 = R'                                                      |
|                                                              |
|o51 : QuotientRing                                            |
+--------------------------------------------------------------+
|i52 : icFractions R                                           |
|                                                              |
|        2                                                     |
|       c                                                      |
|o52 = {--, a, b, c, d}                                        |
|        d                                                     |
|                                                              |
|o52 : List                                                    |
+--------------------------------------------------------------+
+------------------------------------------------------------+
|i53 : S = QQ[a,b,c,d]                                       |
|                                                            |
|o53 = S                                                     |
|                                                            |
|o53 : PolynomialRing                                        |
+------------------------------------------------------------+
|i54 : I = monomialCurveIdeal(S,{1,3,4})                     |
|                                                            |
|                         3      2     2    2    3    2      |
|o54 = ideal (b*c - a*d, c  - b*d , a*c  - b d, b  - a c)    |
|                                                            |
|o54 : Ideal of S                                            |
+------------------------------------------------------------+
|i55 : R = S/I                                               |
|                                                            |
|o55 = R                                                     |
|                                                            |
|o55 : QuotientRing                                          |
+------------------------------------------------------------+
|i56 : time R' = integralClosure (R, Strategy => Vasconcelos)|
| -- used 0.144179s (cpu); 0.0679453s (thread); 0s (gc)      |
|                                                            |
|o56 = R'                                                    |
|                                                            |
|o56 : QuotientRing                                          |
+------------------------------------------------------------+
|i57 : icFractions R                                         |
|                                                            |
|        2                                                   |
|       c                                                    |
|o57 = {--, a, b, c, d}                                      |
|        d                                                   |
|                                                            |
|o57 : List                                                  |
+------------------------------------------------------------+

Projected Veronese

+-----------------------------------------------------------------------------+
|i58 : S' = QQ[symbol a .. symbol f]                                          |
|                                                                             |
|o58 = S'                                                                     |
|                                                                             |
|o58 : PolynomialRing                                                         |
+-----------------------------------------------------------------------------+
|i59 : M' = genericSymmetricMatrix(S',a,3)                                    |
|                                                                             |
|o59 = | a b c |                                                              |
|      | b d e |                                                              |
|      | c e f |                                                              |
|                                                                             |
|               3       3                                                     |
|o59 : Matrix S'  <-- S'                                                      |
+-----------------------------------------------------------------------------+
|i60 : I' = minors(2,M')                                                      |
|                                                                             |
|                2                                                  2         |
|o60 = ideal (- b  + a*d, - b*c + a*e, - c*d + b*e, - b*c + a*e, - c  + a*f, -|
|      -----------------------------------------------------------------------|
|                                              2                              |
|      c*e + b*f, - c*d + b*e, - c*e + b*f, - e  + d*f)                       |
|                                                                             |
|o60 : Ideal of S'                                                            |
+-----------------------------------------------------------------------------+
|i61 : center = ideal(b,c,e,a-d,d-f)                                          |
|                                                                             |
|o61 = ideal (b, c, e, a - d, d - f)                                          |
|                                                                             |
|o61 : Ideal of S'                                                            |
+-----------------------------------------------------------------------------+
|i62 : S = QQ[a,b,c,d,e]                                                      |
|                                                                             |
|o62 = S                                                                      |
|                                                                             |
|o62 : PolynomialRing                                                         |
+-----------------------------------------------------------------------------+
|i63 : p = map(S'/I',S,gens center)                                           |
|                                                                             |
|                                                                   S'        |
|o63 = map (------------------------------------------------------------------|
|               2                                                  2          |
|           (- b  + a*d, - b*c + a*e, - c*d + b*e, - b*c + a*e, - c  + a*f, - |
|                                                                             |
|                                                                      S'     |
|o63 : RingMap ---------------------------------------------------------------|
|                  2                                                  2       |
|              (- b  + a*d, - b*c + a*e, - c*d + b*e, - b*c + a*e, - c  + a*f,|
|-----------------------------------------------------------------------------|
|------------------------------------------------, S, {b, c, e, a - d, d - f})|
|                                        2                                    |
|c*e + b*f, - c*d + b*e, - c*e + b*f, - e  + d*f)                             |
|                                                                             |
|                                                                             |
|--------------------------------------------------- <-- S                    |
|                                           2                                 |
| - c*e + b*f, - c*d + b*e, - c*e + b*f, - e  + d*f)                          |
+-----------------------------------------------------------------------------+
|i64 : I = kernel p                                                           |
|                                                                             |
|              2     2     2     2     2       2   2     3              2     |
|o64 = ideal (a d - b d - b e + c e - d e - d*e , b c - c  - a*b*d + c*d  +   |
|      -----------------------------------------------------------------------|
|              2     3              2                   3      2              |
|      c*d*e, a c - c  - a*b*d + c*d  - a*b*e + c*d*e, b  - b*c  - a*c*d +    |
|      -----------------------------------------------------------------------|
|                2      2           2       2                   3      2      |
|      b*d*e, a*b  - a*c  - b*c*d, a b - b*c  - a*c*d - a*c*e, a  - a*c  -    |
|      -----------------------------------------------------------------------|
|                                 2                                           |
|      b*c*d - b*c*e - a*d*e - a*e )                                          |
|                                                                             |
|o64 : Ideal of S                                                             |
+-----------------------------------------------------------------------------+
|i65 : betti res I                                                            |
|                                                                             |
|             0 1  2 3 4                                                      |
|o65 = total: 1 7 10 5 1                                                      |
|          0: 1 .  . . .                                                      |
|          1: . .  . . .                                                      |
|          2: . 7 10 5 1                                                      |
|                                                                             |
|o65 : BettiTally                                                             |
+-----------------------------------------------------------------------------+
|i66 : R = S/I                                                                |
|                                                                             |
|o66 = R                                                                      |
|                                                                             |
|o66 : QuotientRing                                                           |
+-----------------------------------------------------------------------------+
|i67 : time R' = integralClosure(R, Strategy => Radical)                      |
| -- used 0.108734s (cpu); 0.0722891s (thread); 0s (gc)                       |
|                                                                             |
|o67 = R'                                                                     |
|                                                                             |
|o67 : QuotientRing                                                           |
+-----------------------------------------------------------------------------+
|i68 : icFractions R                                                          |
|                                                                             |
|        2    2                                                               |
|       b  - c                                                                |
|o68 = {-------, a, b, c, d, e}                                               |
|          d                                                                  |
|                                                                             |
|o68 : List                                                                   |
+-----------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
|i69 : S' = QQ[a..f]                                                          |
|                                                                             |
|o69 = S'                                                                     |
|                                                                             |
|o69 : PolynomialRing                                                         |
+-----------------------------------------------------------------------------+
|i70 : M' = genericSymmetricMatrix(S',a,3)                                    |
|                                                                             |
|o70 = | a b c |                                                              |
|      | b d e |                                                              |
|      | c e f |                                                              |
|                                                                             |
|               3       3                                                     |
|o70 : Matrix S'  <-- S'                                                      |
+-----------------------------------------------------------------------------+
|i71 : I' = minors(2,M')                                                      |
|                                                                             |
|                2                                                  2         |
|o71 = ideal (- b  + a*d, - b*c + a*e, - c*d + b*e, - b*c + a*e, - c  + a*f, -|
|      -----------------------------------------------------------------------|
|                                              2                              |
|      c*e + b*f, - c*d + b*e, - c*e + b*f, - e  + d*f)                       |
|                                                                             |
|o71 : Ideal of S'                                                            |
+-----------------------------------------------------------------------------+
|i72 : center = ideal(b,e,a-d,d-f)                                            |
|                                                                             |
|o72 = ideal (b, e, a - d, d - f)                                             |
|                                                                             |
|o72 : Ideal of S'                                                            |
+-----------------------------------------------------------------------------+
|i73 : S = QQ[a,b,d,e]                                                        |
|                                                                             |
|o73 = S                                                                      |
|                                                                             |
|o73 : PolynomialRing                                                         |
+-----------------------------------------------------------------------------+
|i74 : p = map(S'/I',S,gens center)                                           |
|                                                                             |
|                                                                   S'        |
|o74 = map (------------------------------------------------------------------|
|               2                                                  2          |
|           (- b  + a*d, - b*c + a*e, - c*d + b*e, - b*c + a*e, - c  + a*f, - |
|                                                                             |
|                                                                      S'     |
|o74 : RingMap ---------------------------------------------------------------|
|                  2                                                  2       |
|              (- b  + a*d, - b*c + a*e, - c*d + b*e, - b*c + a*e, - c  + a*f,|
|-----------------------------------------------------------------------------|
|------------------------------------------------, S, {b, e, a - d, d - f})   |
|                                        2                                    |
|c*e + b*f, - c*d + b*e, - c*e + b*f, - e  + d*f)                             |
|                                                                             |
|                                                                             |
|--------------------------------------------------- <-- S                    |
|                                           2                                 |
| - c*e + b*f, - c*d + b*e, - c*e + b*f, - e  + d*f)                          |
+-----------------------------------------------------------------------------+
|i75 : I = kernel p                                                           |
|                                                                             |
|             4     2 2    4    2 2    2       2       2 2                    |
|o75 = ideal(a  - 2a b  + b  - b d  - a d*e - b d*e - a e )                   |
|                                                                             |
|o75 : Ideal of S                                                             |
+-----------------------------------------------------------------------------+
|i76 : betti res I                                                            |
|                                                                             |
|             0 1                                                             |
|o76 = total: 1 1                                                             |
|          0: 1 .                                                             |
|          1: . .                                                             |
|          2: . .                                                             |
|          3: . 1                                                             |
|                                                                             |
|o76 : BettiTally                                                             |
+-----------------------------------------------------------------------------+
|i77 : R = S/I                                                                |
|                                                                             |
|o77 = R                                                                      |
|                                                                             |
|o77 : QuotientRing                                                           |
+-----------------------------------------------------------------------------+
|i78 : time R' = integralClosure(R, Strategy => Radical)                      |
| -- used 0.386821s (cpu); 0.30961s (thread); 0s (gc)                         |
|                                                                             |
|o78 = R'                                                                     |
|                                                                             |
|o78 : QuotientRing                                                           |
+-----------------------------------------------------------------------------+
|i79 : icFractions R                                                          |
|                                                                             |
|        2    2   2     3      2                                              |
|       a  - b   a b - b  + b*d  + b*d*e                                      |
|o79 = {-------, -----------------------, a, b, d, e}                         |
|        d + e          a*d + a*e                                             |
|                                                                             |
|o79 : List                                                                   |
+-----------------------------------------------------------------------------+
+---------------------------------------------------------------+
|i80 : S = QQ[a,b,d,e]                                          |
|                                                               |
|o80 = S                                                        |
|                                                               |
|o80 : PolynomialRing                                           |
+---------------------------------------------------------------+
|i81 : R = S/sub(I,S)                                           |
|                                                               |
|o81 = R                                                        |
|                                                               |
|o81 : QuotientRing                                             |
+---------------------------------------------------------------+
|i82 : time R' = integralClosure(R, Strategy => AllCodimensions)|
| -- used 0.25128s (cpu); 0.213073s (thread); 0s (gc)           |
|                                                               |
|o82 = R'                                                       |
|                                                               |
|o82 : QuotientRing                                             |
+---------------------------------------------------------------+
|i83 : icFractions R                                            |
|                                                               |
|        2    2   2     3      2                                |
|       a  - b   a b - b  + b*d  + b*d*e                        |
|o83 = {-------, -----------------------, a, b, d, e}           |
|        d + e          a*d + a*e                               |
|                                                               |
|o83 : List                                                     |
+---------------------------------------------------------------+
+-----------------------------------------------------------------------------+
|i84 : S = QQ[a,b,d,e]                                                        |
|                                                                             |
|o84 = S                                                                      |
|                                                                             |
|o84 : PolynomialRing                                                         |
+-----------------------------------------------------------------------------+
|i85 : R = S/sub(I,S)                                                         |
|                                                                             |
|o85 = R                                                                      |
|                                                                             |
|o85 : QuotientRing                                                           |
+-----------------------------------------------------------------------------+
|i86 : time R' = integralClosure (R, Strategy => RadicalCodim1, Verbosity =>  |
| [jacobian time .00100006 sec #minors 4]                                     |
|integral closure nvars 4 numgens 1 is S2 codim 1 codimJ 2                    |
|                                                                             |
| [step 0:   time .0829951 sec  #fractions 6]                                 |
| [step 1:  -- used 0.306366s (cpu); 0.224977s (thread); 0s (gc)              |
|  time .16191 sec  #fractions 6]                                             |
|                                                                             |
|o86 = R'                                                                     |
|                                                                             |
|o86 : QuotientRing                                                           |
|-----------------------------------------------------------------------------|
|1)                                                                           |
+-----------------------------------------------------------------------------+
|i87 : icFractions R                                                          |
|                                                                             |
|        2    2   2     3      2                                              |
|       a  - b   a b - b  + b*d  + b*d*e                                      |
|o87 = {-------, -----------------------, a, b, d, e}                         |
|        d + e          a*d + a*e                                             |
|                                                                             |
|o87 : List                                                                   |
+-----------------------------------------------------------------------------+
+----------------------------------------------------------------------------+
|i88 : S = QQ[a,b,d,e]                                                       |
|                                                                            |
|o88 = S                                                                     |
|                                                                            |
|o88 : PolynomialRing                                                        |
+----------------------------------------------------------------------------+
|i89 : R = S/sub(I,S)                                                        |
|                                                                            |
|o89 = R                                                                     |
|                                                                            |
|o89 : QuotientRing                                                          |
+----------------------------------------------------------------------------+
|i90 : time R' = integralClosure (R, Strategy => Vasconcelos, Verbosity => 1)|
| [jacobian time 0 sec #minors 4]                                            |
|integral closure nvars 4 numgens 1 is S2 codim 1 codimJ 2                   |
|                                                                            |
| [step 0:   time .0940078 sec  #fractions 6]                                |
| [step 1:  -- used 0.380301s (cpu); 0.294381s (thread); 0s (gc)             |
|  time .283297 sec  #fractions 6]                                           |
|                                                                            |
|o90 = R'                                                                    |
|                                                                            |
|o90 : QuotientRing                                                          |
+----------------------------------------------------------------------------+
|i91 : icFractions R                                                         |
|                                                                            |
|        2    2   2     3      2                                             |
|       a  - b   a b - b  + b*d  + b*d*e                                     |
|o91 = {-------, -----------------------, a, b, d, e}                        |
|        d + e          a*d + a*e                                            |
|                                                                            |
|o91 : List                                                                  |
+----------------------------------------------------------------------------+

One can give several of these options together.  Although note that only one of
AllCodimensions, RadicalCodim1, Radical will be used.

+-----------------------------------------------------------------------------+
|i92 : S = QQ[a,b,d,e]                                                        |
|                                                                             |
|o92 = S                                                                      |
|                                                                             |
|o92 : PolynomialRing                                                         |
+-----------------------------------------------------------------------------+
|i93 : R = S/sub(I,S)                                                         |
|                                                                             |
|o93 = R                                                                      |
|                                                                             |
|o93 : QuotientRing                                                           |
+-----------------------------------------------------------------------------+
|i94 : time R' = integralClosure (R, Strategy => {Vasconcelos,                |
| [jacobian time 0 sec #minors 1]                                             |
|integral closure nvars 4 numgens 1 is S2 codim 1 codimJ 2                    |
|                                                                             |
| [step 0:   time .0957735 sec  #fractions 6]                                 |
| [step 1:  -- used 0.49808s (cpu); 0.413984s (thread); 0s (gc)               |
|  time .399313 sec  #fractions 6]                                            |
|                                                                             |
|o94 = R'                                                                     |
|                                                                             |
|o94 : QuotientRing                                                           |
|-----------------------------------------------------------------------------|
|StartWithOneMinor}, Verbosity => 1)                                          |
+-----------------------------------------------------------------------------+
|i95 : icFractions R                                                          |
|                                                                             |
|         2     2          2   2     3      2                                 |
|       2a  - 2b  - d*e - e   a b - b  + b*d  + b*d*e                         |
|o95 = {--------------------, -----------------------, a, b, d, e}            |
|               d + e                a*d + a*e                                |
|                                                                             |
|o95 : List                                                                   |
+-----------------------------------------------------------------------------+
|i96 : ideal R'                                                               |
|                                                                             |
|                               2     2          2                            |
|o96 = ideal (w   d + w   e - 2a  + 2b  + d*e + e , w   b - 2w   a + 2b*d +   |
|              0,0     0,0                           0,0      0,1             |
|      -----------------------------------------------------------------------|
|                                   2               2           2             |
|      b*e, w   a - 2w   b - a*e, 2w    + w   e - 2a  + 2d*e + e , w   w    + |
|            0,0      0,1           0,1    0,0                      0,0 0,1   |
|      -----------------------------------------------------------------------|
|                     2       2    2                                          |
|      w   e - 2a*b, w    - 4b  - e )                                         |
|       0,1           0,0                                                     |
|                                                                             |
|o96 : Ideal of QQ[w   ..w   , a..b, d..e]                                    |
|                   0,0   0,1                                                 |
+-----------------------------------------------------------------------------+

Further information
===================

  * Default value: {}
  * Function: integralClosure, -- integral closure of an
    ideal or a domain
  * Option key: Strategy (Macaulay2Doc), -- an optional argument

Caveat
======

The list of strategies may change in the future!

Functions with optional argument named Strategy:
================================================

  * "addHook(...,Strategy=>...)" -- see addHook (Macaulay2Doc),
    -- add a hook function to an object for later processing
  * adjoint(...,Strategy=>...) (missing documentation)
  * "annihilator(...,Strategy=>...)" -- see annihilator (Saturation),
    -- the annihilator ideal
  * "associatedPrimes(...,Strategy=>...)" -- see associatedPrimes (PrimaryDecomposition),
    -- find associated primes
  * "basis(...,Strategy=>...)" -- see basis (Macaulay2Doc), --
    basis or generating set of all or part of a ring, ideal or module
  * canonicalBundle(...,Strategy=>...) (missing documentation)
  * "mingens(...,Strategy=>...)" -- see Complement (Macaulay2Doc),
    -- a Strategy option value
  * "trim(...,Strategy=>...)" -- see Complement (Macaulay2Doc),
    -- a Strategy option value
  * "compose(Module,Module,Module,Strategy=>...)" -- see compose (Macaulay2Doc),
    -- composition as a pairing on Hom-modules
  * cotangentSheaf(...,Strategy=>...) (missing documentation)
  * determinant(...,Strategy=>...) (Macaulay2Doc)
    -- choose
    between Bareiss, Cofactor and Dynamic algorithms
  * dual(ChainComplex,Strategy=>...) (missing documentation)
  * dual(Matrix,Strategy=>...) (missing documentation)
  * "dual(MonomialIdeal,List,Strategy=>...)" -- see
    dual(MonomialIdeal,Strategy=>...) (Macaulay2Doc),
  * "dual(MonomialIdeal,RingElement,Strategy=>...)" -- see
    dual(MonomialIdeal,Strategy=>...) (Macaulay2Doc),
  * dual(MonomialIdeal,Strategy=>...) (Macaulay2Doc)
  * dual(SheafMap,Strategy=>...) (missing documentation)
  * "End(...,Strategy=>...)" -- see End (Macaulay2Doc), -- module of
    endomorphisms
  * exteriorPower(...,Strategy=>...) (Macaulay2Doc)
    -- choose
    between Bareiss, Cofactor and Dynamic algorithms
  * "gb(...,Strategy=>...)" -- see gb (Macaulay2Doc), -- compute a
    Gröbner basis
  * gcdLLL(...,Strategy=>...) (missing documentation)
  * "GF(...,Strategy=>...)" -- see GF (Macaulay2Doc), -- make a finite
    field
  * "groebnerBasis(...,Strategy=>...)" -- see groebnerBasis (Macaulay2Doc),
    -- Gröbner basis, as a matrix
  * hermite(...,Strategy=>...) (missing documentation)
  * "Hom(...,Strategy=>...)" -- see Hom (Macaulay2Doc), -- module of
    homomorphisms
  * "homomorphism'(...,Strategy=>...)" -- see homomorphism' (Macaulay2Doc),
    -- get the element of Hom from a homomorphism
  * "hooks(...,Strategy=>...)" -- see hooks (Macaulay2Doc), -- list
    hooks attached to a key
  * "idealizer(...,Strategy=>...)" -- see idealizer, --
    compute Hom(I,I) as a quotient ring
  * integralClosure(...,Strategy=>...)
    -- control the
    algorithm used
  * "intersect(Ideal,Ideal,Strategy=>...)" -- see intersect(Ideal,Ideal) (Macaulay2Doc),
    -- compute an intersection of a
    sequence of ideals or modules
  * "intersect(Module,Module,Strategy=>...)" -- see
    intersect(Ideal,Ideal) (Macaulay2Doc), --
    compute an intersection of a sequence of ideals or modules
  * "intersectInP(...,Strategy=>...)" -- see
    intersectInP(...,BasisElementLimit=>...) (ReesAlgebra),
    --
    Option for intersectInP
  * "isPrimary(...,Strategy=>...)" -- see isPrimary (PrimaryDecomposition),
    -- determine whether a submodule is
    primary
  * "isPrime(Ideal,Strategy=>...)" -- see isPrime(Ideal) (MinimalPrimes),
    -- whether an ideal is prime
  * LLL(...,Strategy=>...) (LLLBases)
    -- choose among
    different algorithms
  * "localize(...,Strategy=>...)" -- see localize (PrimaryDecomposition),
    -- localize an ideal at a prime ideal
  * "match(...,Strategy=>...)" -- see match (Macaulay2Doc), --
    regular expression matching
  * "decompose(Ideal,Strategy=>...)" -- see minimalPrimes (MinimalPrimes),
    -- minimal primes of an ideal
  * "minimalPrimes(...,Strategy=>...)" -- see minimalPrimes (MinimalPrimes),
    -- minimal primes of an ideal
  * minors(...,Strategy=>...) (Macaulay2Doc)
    -- choose
    between Bareiss, Cofactor and Dynamic algorithms
  * "parallelApply(...,Strategy=>...)" -- see parallelApply (Macaulay2Doc),
    -- apply a function to each element in
    parallel
  * "primaryComponent(...,Strategy=>...)" -- see primaryComponent (PrimaryDecomposition),
    -- find a primary component
    corresponding to an associated prime
  * pushForward(...,Strategy=>...) (missing documentation)
  * quotient(...,Strategy=>...) (Saturation)
  * "radical(...,Strategy=>...)" -- see radical (MinimalPrimes),
    -- the radical of an ideal
  * "radicalContainment(...,Strategy=>...)" -- see radicalContainment (MinimalPrimes),
    -- whether an element is contained in
    the radical of an ideal
  * "analyticSpread(...,Strategy=>...)" -- see
    reesIdeal(...,Strategy=>...) (ReesAlgebra),
    -- Choose a
    strategy for the saturation step
  * "associatedGradedRing(...,Strategy=>...)" -- see
    reesIdeal(...,Strategy=>...) (ReesAlgebra),
    -- Choose a
    strategy for the saturation step
  * "distinguished(...,Strategy=>...)" -- see
    reesIdeal(...,Strategy=>...) (ReesAlgebra),
    -- Choose a
    strategy for the saturation step
  * "isLinearType(...,Strategy=>...)" -- see
    reesIdeal(...,Strategy=>...) (ReesAlgebra),
    -- Choose a
    strategy for the saturation step
  * "isReduction(...,Strategy=>...)" -- see reesIdeal(...,Strategy=>...) (ReesAlgebra),
    -- Choose a
    strategy for the saturation step
  * "minimalReduction(...,Strategy=>...)" -- see
    reesIdeal(...,Strategy=>...) (ReesAlgebra),
    -- Choose a
    strategy for the saturation step
  * "multiplicity(...,Strategy=>...)" -- see
    reesIdeal(...,Strategy=>...) (ReesAlgebra),
    -- Choose a
    strategy for the saturation step
  * "normalCone(Ideal,RingElement,Strategy=>...)" -- see
    reesIdeal(...,Strategy=>...) (ReesAlgebra),
    -- Choose a
    strategy for the saturation step
  * "normalCone(Ideal,Strategy=>...)" -- see
    reesIdeal(...,Strategy=>...) (ReesAlgebra),
    -- Choose a
    strategy for the saturation step
  * "reesAlgebra(...,Strategy=>...)" -- see reesIdeal(...,Strategy=>...) (ReesAlgebra),
    -- Choose a
    strategy for the saturation step
  * reesIdeal(...,Strategy=>...) (ReesAlgebra)
    -- Choose a
    strategy for the saturation step
  * "specialFiber(...,Strategy=>...)" -- see
    reesIdeal(...,Strategy=>...) (ReesAlgebra),
    -- Choose a
    strategy for the saturation step
  * "specialFiberIdeal(...,Strategy=>...)" -- see
    reesIdeal(...,Strategy=>...) (ReesAlgebra),
    -- Choose a
    strategy for the saturation step
  * "regSeqInIdeal(...,Strategy=>...)" -- see regSeqInIdeal (PrimaryDecomposition),
    -- a regular sequence contained in an
    ideal
  * resolution(...,Strategy=>...) (Macaulay2Doc)
  * saturate(...,Strategy=>...) (Saturation)
  * sheafHom(...,Strategy=>...) (missing documentation)
  * "primaryDecomposition(...,Strategy=>...)" -- see strategies for computing primary decomposition (PrimaryDecomposition),
  * "syz(...,Strategy=>...)" -- see syz(Matrix) (Macaulay2Doc),
    -- compute the syzygy matrix
  * "tangentCone(...,Strategy=>...)" -- see tangentCone(Ideal) (TangentCone),
  * tangentSheaf(...,Strategy=>...) (missing documentation)

integralClosure(...,Variable=>...) -- set the base letter for the indexed variables introduced while computing the integral closure
***********************************************************************************************************************************

Synopsis
========

  * Usage:
        integralClosure(R, Variable=>x)
  * Inputs:
      * x, a symbol (Macaulay2Doc),
  * Consequences:
      * The new variables will be subscripted using x.

Description
===========

+--------------------------------------------------+
|i1 : R = QQ[x,y,z]/ideal(x^6-z^6-y^2*z^4-z^3);    |
+--------------------------------------------------+
|i2 : R' = integralClosure(R, Variable => symbol t)|
|                                                  |
|o2 = R'                                           |
|                                                  |
|o2 : QuotientRing                                 |
+--------------------------------------------------+
|i3 : trim ideal R'                                |
|                                                  |
|                     2   3      2     3           |
|o3 = ideal (t   z - x , t    - y z - z  - 1)      |
|             3,0         3,0                      |
|                                                  |
|o3 : Ideal of QQ[t   , x..z]                      |
|                  3,0                             |
+--------------------------------------------------+

The algorithm works in stages, each time adding new fractions to the ring. A
variable t_(3,0) represents the first (zero-th) variables added at stage 3.

Further information
===================

  * Default value: w
  * Function: integralClosure, -- integral closure of an
    ideal or a domain
  * Option key: Variable (Macaulay2Doc), -- specify a name for a
    variable

Caveat
======

The base name should be a symbol The variables added may be changed to t_1,
t_2, ... in the future.

Functions with optional argument named Variable:
================================================

  * conwayPolynomial(...,Variable=>...) (missing documentation)
  * "GF(...,Variable=>...)" -- see GF (Macaulay2Doc), -- make a finite
    field
  * "Grassmannian(...,Variable=>...)" -- see Grassmannian(ZZ,ZZ) (Macaulay2Doc),
    -- the Grassmannian of linear
    subspaces of a vector space
  * idealizer(...,Variable=>...)
    -- Sets the name of the
    indexed variables introduced in computing the endomorphism ring Hom(J,J).
  * integralClosure(...,Variable=>...)
    -- set the base
    letter for the indexed variables introduced while computing the integral
    closure
  * "intersectInP(...,Variable=>...)" -- see
    intersectInP(...,BasisElementLimit=>...) (ReesAlgebra),
    --
    Option for intersectInP
  * "multiplicity(...,Variable=>...)" -- see
    intersectInP(...,BasisElementLimit=>...) (ReesAlgebra),
    --
    Option for intersectInP
  * makeS2(...,Variable=>...)
    -- Sets the name of the
    indexed variables introduced in computing the S2-ification.
  * "ringFromFractions(...,Variable=>...)" -- see ringFromFractions,
    -- find presentation for f.g. ring
  * "Schubert(...,Variable=>...)" -- see Schubert(ZZ,ZZ,VisibleList) (Macaulay2Doc),
    -- find the Plücker
    ideal of a Schubert variety
  * "associatedGradedRing(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "distinguished(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "isReduction(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "jacobianDual(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "normalCone(Ideal,RingElement,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "normalCone(Ideal,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "reesAlgebra(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "reesIdeal(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "specialFiber(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "specialFiberIdeal(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring

integralClosure(...,Verbosity=>...) -- display a certain amount of detail about the computation
***********************************************************************************************

Synopsis
========

  * Usage:
        integralClosure(R, Verbosity => n)
  * Inputs:
      * n, an integer (Macaulay2Doc), The higher the number, the more
        information is displayed.  A value of 0 means: keep quiet.

Description
===========

When the computation takes a considerable time, this function can be used to
decide if it will ever finish, or to get a feel for what is happening during
the computation.

+-----------------------------------------------------------------------------+
|i1 : R = QQ[x,y,z]/ideal(x^8-z^6-y^2*z^4-z^3);                               |
+-----------------------------------------------------------------------------+
|i2 : time R' = integralClosure(R, Verbosity => 2)                            |
| [jacobian time 0 sec #minors 3]                                             |
|integral closure nvars 3 numgens 1 is S2 codim 1 codimJ 2                    |
|                                                                             |
| [step 0:                                                                    |
|      radical (use minprimes) .00200041 seconds                              |
|      idlizer1:  .00700026 seconds                                           |
|      idlizer2:  .00799922 seconds                                           |
|      minpres:   .00700014 seconds                                           |
|  time .0815479 sec  #fractions 4]                                           |
| [step 1:                                                                    |
|      radical (use minprimes) .00200011 seconds                              |
|      idlizer1:  .0120007 seconds                                            |
|      idlizer2:  .0574169 seconds                                            |
|      minpres:   .00899605 seconds                                           |
|  time .0924156 sec  #fractions 4]                                           |
| [step 2:                                                                    |
|      radical (use minprimes) .00200009 seconds                              |
|      idlizer1:  .0100001 seconds                                            |
|      idlizer2:  .00800036 seconds                                           |
|      minpres:   .0070001 seconds                                            |
|  time .0822075 sec  #fractions 5]                                           |
| [step 3:                                                                    |
|      radical (use minprimes) .00199983 seconds                              |
|      idlizer1:  .0109975 seconds                                            |
|      idlizer2:  .011 seconds                                                |
|      minpres:   .0639535 seconds                                            |
|  time .0979538 sec  #fractions 5]                                           |
| [step 4:                                                                    |
|      radical (use minprimes) .0020001 seconds                               |
|      idlizer1:  .00799596 seconds                                           |
|      idlizer2:  .013 seconds                                                |
|      minpres:   .00999949 seconds                                           |
|  time .0450014 sec  #fractions 5]                                           |
| [step 5:                                                                    |
|      radical (use minprimes) .00200075 seconds                              |
|      idlizer1:   -- used 0.463349s (cpu); 0.303491s (thread); 0s (gc)       |
|.00899953 seconds                                                            |
|  time .0622226 sec  #fractions 5]                                           |
|                                                                             |
|o2 = R'                                                                      |
|                                                                             |
|o2 : QuotientRing                                                            |
+-----------------------------------------------------------------------------+
|i3 : trim ideal R'                                                           |
|                                                                             |
|                     3   2                     2 2    4           4          |
|o3 = ideal (w   z - x , w   x - w   , w   x - y z  - z  - z, w   x  - w   z, |
|             4,0         4,0     1,1   1,1                    4,0      1,1   |
|     ------------------------------------------------------------------------|
|                 2 2     2 3    2   3      2   3 2      4 2      2 4       2 |
|     w   w    - x y z - x z  - x , w    + w   x y  - x*y z  - x*y z  - 2x*y z|
|      4,0 1,1                       4,0    4,0                               |
|     ------------------------------------------------------------------------|
|          3           3    2      6 2    6 2                                 |
|     - x*z  - x, w   x  - w    + x y  + x z )                                |
|                  4,0      1,1                                               |
|                                                                             |
|o3 : Ideal of QQ[w   , w   , x..z]                                           |
|                  4,0   1,1                                                  |
+-----------------------------------------------------------------------------+
|i4 : icFractions R                                                           |
|                                                                             |
|       3   2 2    4                                                          |
|      x   y z  + z  + z                                                      |
|o4 = {--, -------------, x, y, z}                                            |
|       z        x                                                            |
|                                                                             |
|o4 : List                                                                    |
+-----------------------------------------------------------------------------+

Further information
===================

  * Default value: 0
  * Function: integralClosure, -- integral closure of an
    ideal or a domain
  * Option key: Verbosity (Macaulay2Doc), -- an optional
    argument

Caveat
======

The exact information displayed may change.

Functions with optional argument named Verbosity:
=================================================

  * icFracP(...,Verbosity=>...)
    -- Prints out the conductor
    element and the number of intermediate modules it computed.
  * "idealizer(...,Verbosity=>...)" -- see idealizer, --
    compute Hom(I,I) as a quotient ring
  * integralClosure(...,Verbosity=>...)
    -- display a certain
    amount of detail about the computation
  * "isPrime(Ideal,Verbosity=>...)" -- see isPrime(Ideal) (MinimalPrimes),
    -- whether an ideal is prime
  * "makeS2(...,Verbosity=>...)" -- see makeS2, -- compute the
    S2ification of a reduced ring
  * "decompose(Ideal,Verbosity=>...)" -- see minimalPrimes (MinimalPrimes),
    -- minimal primes of an ideal
  * "minimalPrimes(...,Verbosity=>...)" -- see minimalPrimes (MinimalPrimes),
    -- minimal primes of an ideal
  * "ringFromFractions(...,Verbosity=>...)" -- see ringFromFractions,
    -- find presentation for f.g. ring

integralClosure(Ideal,RingElement,ZZ) -- integral closure of an ideal in an affine domain
*****************************************************************************************

Synopsis
========

  * Function: integralClosure,
  * Usage:
        integralClosure J
        integralClosure(J, d)
        integralClosure(J, f)
        integralClosure(J, f, d)
  * Inputs:
      * J, an ideal (Macaulay2Doc),
      * f, a ring element (Macaulay2Doc), optional, an
        element of J which is a nonzerodivisor in the ring of J. If not give,
        the first generator of J is used
      * d, an integer (Macaulay2Doc), optional, default value 1
  * Optional inputs (Macaulay2Doc),:
      * Keep, => a
        list (Macaulay2Doc), default value null, unused
      * Limit, => an
        integer (Macaulay2Doc), default value infinity, unused
      * Variable,
        => a symbol (Macaulay2Doc), default value "w", symbol
        used for new variables
      * Verbosity,
        => an integer (Macaulay2Doc), default value 0, display a
        certain amount of detail about the computation
      * Strategy,
        => a list (Macaulay2Doc), default value {}, of some of the
        symbols: AllCodimensions, SimplifyFractions, Radical, RadicalCodim1,
        Vasconcelos. These are passed on to the computation of the integral
        closure of the Rees algebra of J
  * Outputs:
      * an ideal (Macaulay2Doc), the integral closure of $J^d$

Description
===========

The method used is described in Vasconcelos' book, Computational methods in
commutative algebra and algebraic geometry, Springer, section 6.6.  Basically,
one first computes the integral closure of the Rees Algebra of the ideal, and
then one reads off the integral closure of any of the powers of the ideal,
using linear algebra.

+-----------------------------------------------------------------------------+
|i1 : S = ZZ/32003[a,b,c];                                                    |
+-----------------------------------------------------------------------------+
|i2 : F = a^2*b^2*c+a^3+b^3+c^3                                               |
|                                                                             |
|      2 2     3    3    3                                                    |
|o2 = a b c + a  + b  + c                                                     |
|                                                                             |
|o2 : S                                                                       |
+-----------------------------------------------------------------------------+
|i3 : J = ideal jacobian ideal F                                              |
|                                                                             |
|                2      2    2        2   2 2     2                           |
|o3 = ideal (2a*b c + 3a , 2a b*c + 3b , a b  + 3c )                          |
|                                                                             |
|o3 : Ideal of S                                                              |
+-----------------------------------------------------------------------------+
|i4 : time integralClosure J                                                  |
| -- used 1.05851s (cpu); 0.658412s (thread); 0s (gc)                         |
|                                                                             |
|             2 2              2 2                2          2   2            |
|o4 = ideal (b c  - 16000a*c, a c  - 16000b*c, a*b c - 16000a , a b*c -       |
|     ------------------------------------------------------------------------|
|           2   3               2 2     2   5                                 |
|     16000b , a c - 16000a*b, a b  + 3c , a b + 15997a*c)                    |
|                                                                             |
|o4 : Ideal of S                                                              |
+-----------------------------------------------------------------------------+
|i5 : time integralClosure(J, Strategy=>{RadicalCodim1})                      |
| -- used 0.675298s (cpu); 0.423463s (thread); 0s (gc)                        |
|                                                                             |
|             2 2              2 2                2          2   2            |
|o5 = ideal (b c  - 16000a*c, a c  - 16000b*c, a*b c - 16000a , a b*c -       |
|     ------------------------------------------------------------------------|
|           2   3               2 2     2   5                                 |
|     16000b , a c - 16000a*b, a b  + 3c , a b + 15997a*c)                    |
|                                                                             |
|o5 : Ideal of S                                                              |
+-----------------------------------------------------------------------------+
|i6 : J2' = integralClosure(J,2)                                              |
|                                                                             |
|             5      2 4           3       3   2 3      2 4         4       3 |
|o6 = ideal (b c - 2b c  - 16000a*b  - 3a*c , a b c - 2a c  - 16000b  - 3b*c ,|
|     ------------------------------------------------------------------------|
|      3 2      2 4         4       3   5      2 4         3        3   2 6   |
|     a b c - 2b c  - 16000a  - 3a*c , a c - 2a c  - 16000a b - 3b*c , b c  - |
|     ------------------------------------------------------------------------|
|            3 2           5         2          6         2 2 2         3     |
|     8000a*b c  - 16000a*c  - 12000a b*c, a*b*c  - 16000a b c  - 12000a c -  |
|     ------------------------------------------------------------------------|
|           3         4   2 6        3   2           5           2    3 5     |
|     12000b c - 8003c , a c  - 8000a b*c  - 16000b*c  - 12000a*b c, b c  -   |
|     ------------------------------------------------------------------------|
|            4              4         2 2     2 5     2 4         3          4|
|     8000a*b c - 16000a*b*c  - 12000a b , a*b c  + 3a c  - 12000a b + 12000b |
|     ------------------------------------------------------------------------|
|              3   2   5     2 4         4           3          3   4 4       |
|     + 8003b*c , a b*c  + 3b c  + 12000a  - 12000a*b  + 8003a*c , b c  +     |
|     ------------------------------------------------------------------------|
|         2 3        2 2     3 4        5         2 4     2   3        2 2    |
|     3a*b c  + 8003a c , a*b c  + 8000a b - 8000a b  + 3a b*c  + 8003b c ,   |
|     ------------------------------------------------------------------------|
|      2 2 4         3 3         3 3            2     4 3     2 2 2        3  |
|     a b c  - 16000a c  - 16000b c  + 8003a*b*c , a*b c  + 3a b c  + 8003a c,|
|     ------------------------------------------------------------------------|
|      4   3     2 2 2        3    8       3 2       5         2        7     |
|     a b*c  + 3a b c  + 8003b c, b  + 9a*b c  - 6a*c  - 15997a b*c, a*b  +   |
|     ------------------------------------------------------------------------|
|       2 2 2         3          3      4   4 4     2 2 2     4   7      2 2 2|
|     6a b c  - 15997a c + 15997b c + 9c , a b  + 6a b c  + 9c , a b + 6a b c |
|     ------------------------------------------------------------------------|
|             3          3      4                                             |
|     + 15997a c - 15997b c + 9c )                                            |
|                                                                             |
|o6 : Ideal of S                                                              |
+-----------------------------------------------------------------------------+

Sometimes it is useful to give the specific nonzerodivisor $f$ in the ideal.

+----------------------------------------------+
|i7 : assert(integralClosure(J, J_2, 2) == J2')|
+----------------------------------------------+

Caveat
======

It is usually much faster to use integralClosure(J,d) rather than
integralClosure(J^d). Also, the element f (or the first generator of J, if f is
not given) must be a nonzero divisor in the ring. This is not checked.

See also
========

  * integralClosure(Ring) -- compute the
    integral closure (normalization) of an affine domain
  * reesAlgebra (ReesAlgebra) -- Compute the defining ideal
    of the Rees Algebra
  * testHunekeQuestion -- tests a conjecture on
    integral closures strengthening the Eisenbud-Mazur conjecture

Ways to use this method:
========================

  * "integralClosure(Ideal)"
  * "integralClosure(Ideal,RingElement)"
  * integralClosure(Ideal,RingElement,ZZ)
    -- integral closure of an
    ideal in an affine domain
  * "integralClosure(Ideal,ZZ)"

integralClosure(Ring) -- compute the integral closure (normalization) of an affine domain
*****************************************************************************************

Synopsis
========

  * Function: integralClosure,
  * Usage:
        R' = integralClosure R
  * Inputs:
      * R, a ring (Macaulay2Doc), a quotient of a polynomial ring
        over a field
  * Optional inputs (Macaulay2Doc),:
      * Keep, => a
        list (Macaulay2Doc), default value null, of variables of R
      * Limit, => an
        integer (Macaulay2Doc), default value infinity, do a partial
        integral closure
      * Variable,
        => a symbol (Macaulay2Doc), default value "w", set the
        base letter for the indexed variables introduced while computing the
        integral closure
      * Verbosity,
        => an integer (Macaulay2Doc), default value 0, display a
        certain amount of detail about the computation
      * Strategy,
        => a list (Macaulay2Doc), default value {}, of some of the
        symbols: AllCodimensions, Radical, RadicalCodim1, Vasconcelos,
        StartWithOneminor, SimplifyFractions
  * Outputs:
      * R', a ring (Macaulay2Doc), the integral closure of R
  * Consequences:
      * The inclusion map $R \rightarrow R'$ can be obtained with icMap.
      * The fractions corresponding to the variables of the ring R' can be
        found with icFractions,

Description
===========

The integral closure of a domain is the subring of the fraction field
consisting of all fractions integral over the domain.  For example,

+----------------------------------------------+
|i1 : R = QQ[x,y,z]/ideal(x^6-z^6-y^2*z^4-z^3);|
+----------------------------------------------+
|i2 : R' = integralClosure R                   |
|                                              |
|o2 = R'                                       |
|                                              |
|o2 : QuotientRing                             |
+----------------------------------------------+
|i3 : gens R'                                  |
|                                              |
|o3 = {w   , x, y, z}                          |
|       3,0                                    |
|                                              |
|o3 : List                                     |
+----------------------------------------------+
|i4 : icFractions R                            |
|                                              |
|       2                                      |
|      x                                       |
|o4 = {--, x, y, z}                            |
|       z                                      |
|                                              |
|o4 : List                                     |
+----------------------------------------------+
|i5 : icMap R                                  |
|                                              |
|o5 = map (R', R, {x, y, z})                   |
|                                              |
|o5 : RingMap R' <-- R                         |
+----------------------------------------------+
|i6 : I = trim ideal R'                        |
|                                              |
|                     2   3      2     3       |
|o6 = ideal (w   z - x , w    - y z - z  - 1)  |
|             3,0         3,0                  |
|                                              |
|o6 : Ideal of QQ[w   , x..z]                  |
|                  3,0                         |
+----------------------------------------------+

Sometimes using trim (Macaulay2Doc), provides a cleaner set of
generators.

If $R$ is not a domain, first decompose it, and collect all of the integral
closures.

+---------------------------------------------------------------------------+
|i7 : S = ZZ/101[a..d]/ideal(a*(b-c),c*(b-d),b*(c-d));                      |
+---------------------------------------------------------------------------+
|i8 : C = decompose ideal S                                                 |
|                                                                           |
|o8 = {ideal (c, b), ideal (c - d, b - d), ideal (d, c, a), ideal (d, b, a)}|
|                                                                           |
|o8 : List                                                                  |
+---------------------------------------------------------------------------+
|i9 : Rs = apply(C, I -> (ring I)/I);                                       |
+---------------------------------------------------------------------------+
|i10 : Rs/integralClosure                                                   |
|                                                                           |
|        ZZ            ZZ           ZZ         ZZ                           |
|       ---[a..d]     ---[a..d]    ---[a..d]  ---[a..d]                     |
|       101           101          101        101                           |
|o10 = {---------, --------------, ---------, ---------}                    |
|         (c, b)   (c - d, b - d)  (d, c, a)  (d, b, a)                     |
|                                                                           |
|o10 : List                                                                 |
+---------------------------------------------------------------------------+
|i11 : oo/prune                                                             |
|                                                                           |
|        ZZ         ZZ         ZZ      ZZ                                   |
|o11 = {---[a, d], ---[a, d], ---[b], ---[c]}                               |
|       101        101        101     101                                   |
|                                                                           |
|o11 : List                                                                 |
+---------------------------------------------------------------------------+

This function is roughly based on Theo De Jong's paper, An Algorithm for
Computing the Integral Closure, J. Symbolic Computation, (1998) 26, 273-277.
This algorithm is similar to the round two algorithm of Zassenhaus in algebraic
number theory.

There are several optional parameters which allows the user to control the way
the integral closure is computed.  These options may change in the future.

Caveat
======

This function requires that the degree of the field extension (over a pure
transcendental subfield) be greater than the characteristic of the base field.
If not, use icFracP. This function requires that the ring be
finitely generated over a ring.  If not (e.g. if it is f.g. over the integers),
then the result is integral, but not necessarily the entire integral closure.
Finally, if the ring is not a domain, then the answers will often be incorrect,
or an obscure error will occur.

See also
========

  * icMap -- natural map from an affine domain into its integral
    closure
  * icFractions -- fractions integral over an affine domain
  * conductor -- the conductor of a finite ring map
  * icFracP -- compute the integral closure in prime
    characteristic

Ways to use this method:
========================

  * integralClosure(Ring) -- compute the
    integral closure (normalization) of an affine domain

integralClosure(Ring,Ring) -- compute the integral closure (normalization) of an affine reduced ring over a base ring
*********************************************************************************************************************

Synopsis
========

  * Function: integralClosure,
  * Usage:
        R' = integralClosure(R, A)
  * Inputs:
      * R, a ring (Macaulay2Doc), a quotient of a polynomial ring
        ultimately over a field
      * A, a ring (Macaulay2Doc), a base ring of $R$ (one of its
        coefficient rings)
  * Optional inputs (Macaulay2Doc),:
      * Keep, => a
        list (Macaulay2Doc), default value null, of variables of R
      * Limit, => an
        integer (Macaulay2Doc), default value infinity, do a partial
        integral closure
      * Variable,
        => a symbol (Macaulay2Doc), default value "w", set the
        base letter for the indexed variables introduced while computing the
        integral closure
      * Verbosity,
        => an integer (Macaulay2Doc), default value 0, display a
        certain amount of detail about the computation
      * Strategy,
        => a list (Macaulay2Doc), default value {}, of some of the
        symbols: AllCodimensions, Radical, RadicalCodim1, Vasconcelos,
        StartWithOneminor, SimplifyFractions
  * Outputs:
      * R', a ring (Macaulay2Doc), the integral closure of $R$,
        having coefficient ring $A$
  * Consequences:
      * The inclusion map $R \rightarrow R'$ can be obtained with icMap.
      * The fractions corresponding to the variables of the ring R' can be
        found with icFractions,

Description
===========

This function packages the output integral closure in the desired way. For more
details about integral closure, see integralClosure(Ring).

In the following example, there are three possible coefficient rings for $R$:
$R$, $A$ and ${\mathbb Q}$.

+---------------------------------------------------+
|i1 : A = QQ[x,y]/(x^3-y^2)                         |
|                                                   |
|o1 = A                                             |
|                                                   |
|o1 : QuotientRing                                  |
+---------------------------------------------------+
|i2 : R = reesAlgebra(ideal(x*y,y^2), Variable => z)|
|                                                   |
|o2 = R                                             |
|                                                   |
|o2 : QuotientRing                                  |
+---------------------------------------------------+
|i3 : coefficientRing R                             |
|                                                   |
|o3 = A                                             |
|                                                   |
|o3 : QuotientRing                                  |
+---------------------------------------------------+
|i4 : describe R                                    |
|                                                   |
|                   A[z ..z ]                       |
|                      0   1                        |
|o4 = -------------------------------------         |
|                           2     2      2          |
|     (x*z  - y*z , y*z  - x z , z  - x*z )         |
|         0      1     0      1   0      1          |
+---------------------------------------------------+
+--------------------------------------------------------------------+
|i5 : R' = integralClosure(R, R)                                     |
|                                                                    |
|o5 = R'                                                             |
|                                                                    |
|o5 : QuotientRing                                                   |
+--------------------------------------------------------------------+
|i6 : describe R'                                                    |
|                                                                    |
|                                 R[w   ]                            |
|                                    0,0                             |
|o6 = ---------------------------------------------------------------|
|                2               2                                   |
|     (y*w    - x , x*w    - y, w    - x, z w    - z , z w    - x*z )|
|         0,0          0,0       0,0       1 0,0    0   0 0,0      1 |
+--------------------------------------------------------------------+
|i7 : icMap R                                                        |
|                                                                    |
|o7 = map (R', R, {z , z , x, y})                                    |
|                   0   1                                            |
|                                                                    |
|o7 : RingMap R' <-- R                                               |
+--------------------------------------------------------------------+
|i8 : fracs1 = icFractions R                                         |
|                                                                    |
|      z                                                             |
|       0                                                            |
|o8 = {--, z , z , x, y}                                             |
|      z    0   1                                                    |
|       1                                                            |
|                                                                    |
|o8 : List                                                           |
+--------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
|i9 : R'' = integralClosure(R, A)                                             |
|                                                                             |
|o9 = R''                                                                     |
|                                                                             |
|o9 : QuotientRing                                                            |
+-----------------------------------------------------------------------------+
|i10 : describe R''                                                           |
|                                                                             |
|                                     A[w   , z ..z ]                         |
|                                        0,0   0   1                          |
|o10 = -----------------------------------------------------------------------|
|                              2                                           2  |
|      (x*z  - y*z , y*w    - x , x*w    - y, w   z  - z , w   z  - x*z , w   |
|          0      1     0,0          0,0       0,0 1    0   0,0 0      1   0,0|
|-----------------------------------------------------------------------------|
|-----                                                                        |
|                                                                             |
| - x)                                                                        |
+-----------------------------------------------------------------------------+
|i11 : icMap R                                                                |
|                                                                             |
|o11 = map (R'', R, {z , z , x, y})                                           |
|                     0   1                                                   |
|                                                                             |
|o11 : RingMap R'' <-- R                                                      |
+-----------------------------------------------------------------------------+
|i12 : fracs2 = icFractions R                                                 |
|                                                                             |
|       z                                                                     |
|        0                                                                    |
|o12 = {--, z , z , x, y}                                                     |
|       z    0   1                                                            |
|        1                                                                    |
|                                                                             |
|o12 : List                                                                   |
+-----------------------------------------------------------------------------+
|i13 : assert(fracs1 == fracs2)                                               |
+-----------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
|i14 : R''' = integralClosure(R, QQ)                                          |
|                                                                             |
|o14 = R'''                                                                   |
|                                                                             |
|o14 : QuotientRing                                                           |
+-----------------------------------------------------------------------------+
|i15 : describe R'''                                                          |
|                                                                             |
|                               QQ[w   , z ..z , x..y]                        |
|                                   0,0   0   1                               |
|o15 = -----------------------------------------------------------------------|
|        2                                                            2       |
|      (x  - w   y, z x - z y, w   x - y, w   z  - z , w   z  - z x, w    - x)|
|             0,0    0     1    0,0        0,0 1    0   0,0 0    1    0,0     |
+-----------------------------------------------------------------------------+
|i16 : icMap R                                                                |
|                                                                             |
|o16 = map (R''', R, {z , z , x, y})                                          |
|                      0   1                                                  |
|                                                                             |
|o16 : RingMap R''' <-- R                                                     |
+-----------------------------------------------------------------------------+
|i17 : fracs3 = icFractions R                                                 |
|                                                                             |
|       z                                                                     |
|        0                                                                    |
|o17 = {--, z , z , x, y}                                                     |
|       z    0   1                                                            |
|        1                                                                    |
|                                                                             |
|o17 : List                                                                   |
+-----------------------------------------------------------------------------+
|i18 : assert(fracs1 == fracs3)                                               |
+-----------------------------------------------------------------------------+

Note that the second and third calls to integralClosure changes the output of
icMap but the fractions are the same.

Caveat
======

All the caveats of integralClosure(Ring), are
in effect and the output of icMap, changes upon each call to this
function.

See also
========

  * integralClosure(Ring) -- compute the
    integral closure (normalization) of an affine domain
  * icMap -- natural map from an affine domain into its integral
    closure
  * icFractions -- fractions integral over an affine domain

Ways to use this method:
========================

  * integralClosure(Ring,Ring), --
    compute the integral closure (normalization) of an affine reduced ring over
    a base ring

isNormal(Ring) -- determine if a reduced ring is normal
*******************************************************

Synopsis
========

  * Function: isNormal (Macaulay2Doc),
  * Usage:
        isNormal R
  * Inputs:
      * R, a ring (Macaulay2Doc), a reduced equidimensional ring
  * Outputs:
      * a Boolean value (Macaulay2Doc), whether R is normal,
        that is, whether it satisfies Serre's conditions S2 and R1

Description
===========

This function computes the jacobian of the ring which can be costly for larger
rings.  Therefore it checks the less costly S2 condition first and if true,
then tests the R1 condition using the jacobian of R.

+------------------------------------------+
|i1 : R = QQ[x,y,z]/ideal(x^6-z^6-y^2*z^4);|
+------------------------------------------+
|i2 : isNormal R                           |
|                                          |
|o2 = false                                |
+------------------------------------------+
|i3 : isNormal(integralClosure R)          |
|                                          |
|o3 = true                                 |
+------------------------------------------+

Caveat
======

The ring R must be an equidimensional ring.  If R is a domain, then sometimes
computing the integral closure of R can be faster than this test.

See also
========

  * integralClosure -- integral closure of an ideal or
    a domain
  * makeS2 -- compute the S2ification of a reduced ring

Ways to use this method:
========================

  * isNormal(Ring) -- determine if a reduced ring is
    normal

Keep -- an optional argument for various functions
**************************************************

See also
========

  * integralClosure(Ring) -- compute the
    integral closure (normalization) of an affine domain
  * integralClosure(Ideal,ZZ)
    -- integral closure of an
    ideal in an affine domain

Functions with optional argument named Keep:
============================================

  * integralClosure(...,Keep=>...)
    -- list ring generators
    which should not be simplified away

For the programmer
==================

The object Keep, is a symbol (Macaulay2Doc).

makeS2 -- compute the S2ification of a reduced ring
***************************************************

Synopsis
========

  * Usage:
        (F,G) = makeS2 R
  * Inputs:
      * R, a ring (Macaulay2Doc), an equidimensional reduced (or
        just unmixed and genericaly Gorenstein) affine ring
  * Optional inputs (Macaulay2Doc),:
      * Verbosity => an integer (Macaulay2Doc), default value 0,
        larger values give more information.
      * Variable, => ...,
        default value "w", Sets the name of the indexed variables introduced in
        computing the S2-ification.
  * Outputs:
      * F, a ring map (Macaulay2Doc), $R \rightarrow S$, where
        $S$ is the so-called S2-ification of $R$
      * G, a ring map (Macaulay2Doc), $frac S \rightarrow frac
        R$, giving the corresponding fractions

Description
===========

A ring $S$ satisfies Serre's S2 condition if every codimension 1 ideal contains
a nonzerodivisor and every principal ideal generated by a nonzerodivisor is
equidimensional of codimension one.  If $R$ is an affine reduced ring, then
there is a unique smallest extension $R\subset S\subset {\rm frac}(R)$
satisfying S2, and $S$ is finite as an $R$-module.

Uses the method of Vasconcelos, "Computational Methods..." p. 161, taking the
idealizer of a canonical ideal.

There are other methods to compute $S$, not currently implemented in this
package. See for example the function (S2,Module) in the package
"CompleteIntersectionResolutions".

We compute the S2-ification of the rational quartic curve in $P^3$

+-----------------------------------------------------------------------------+
|i1 : A = ZZ/101[a..d];                                                       |
+-----------------------------------------------------------------------------+
|i2 : I = monomialCurveIdeal(A,{1,3,4})                                       |
|                                                                             |
|                        3      2     2    2    3    2                        |
|o2 = ideal (b*c - a*d, c  - b*d , a*c  - b d, b  - a c)                      |
|                                                                             |
|o2 : Ideal of A                                                              |
+-----------------------------------------------------------------------------+
|i3 : R = A/I;                                                                |
+-----------------------------------------------------------------------------+
|i4 : (F,G) = makeS2 R                                                        |
|                                                                             |
|                                         ZZ                                  |
|                                        ---[w   , a..d]                      |
|                                        101  0,0                             |
|o4 = (map (------------------------------------------------------------------|
|                                2                                     2   2  |
|           (b*c - a*d, w   d - c , w   c - b*d, w   b - a*c, w   a - b , w   |
|                        0,0         0,0          0,0          0,0         0,0|
|     ------------------------------------------------------------------------|
|                                                                             |
|                                                                             |
|                                                                             |
|     -------, R, {a, b, c, d}), map (frac R,                                 |
|                                                                             |
|      - a*d)                                                                 |
|                                                                             |
|     ------------------------------------------------------------------------|
|         /                              ZZ                                   |
|         |                             ---[w   , a..d]                       |
|         |                             101  0,0                              |
|     frac|-------------------------------------------------------------------|
|         |                     2                                     2   2   |
|         |(b*c - a*d, w   d - c , w   c - b*d, w   b - a*c, w   a - b , w    |
|         \             0,0         0,0          0,0          0,0         0,0 |
|     ------------------------------------------------------------------------|
|           \                                                                 |
|           |                                                                 |
|           |   b*d                                                           |
|     ------|, {---, a, b, c, d}))                                            |
|           |    c                                                            |
|     - a*d)|                                                                 |
|           /                                                                 |
|                                                                             |
|o4 : Sequence                                                                |
+-----------------------------------------------------------------------------+

Caveat
======

Assumes that first element of canonicalIdeal R is a nonzerodivisor; else
returns error. The return value of this function is likely to change in the
future

See also
========

  * integralClosure -- integral closure of an ideal or
    a domain

Ways to use makeS2:
===================

  * "makeS2(Ring)"

For the programmer
==================

The object makeS2, is a method function with options (Macaulay2Doc).

makeS2(...,Variable=>...) -- Sets the name of the indexed variables introduced in computing the S2-ification.
*************************************************************************************************************

Further information
===================

  * Default value: w
  * Function: makeS2, -- compute the S2ification of a reduced
    ring
  * Option key: Variable (Macaulay2Doc), -- specify a name for a
    variable

Functions with optional argument named Variable:
================================================

  * conwayPolynomial(...,Variable=>...) (missing documentation)
  * "GF(...,Variable=>...)" -- see GF (Macaulay2Doc), -- make a finite
    field
  * "Grassmannian(...,Variable=>...)" -- see Grassmannian(ZZ,ZZ) (Macaulay2Doc),
    -- the Grassmannian of linear
    subspaces of a vector space
  * idealizer(...,Variable=>...)
    -- Sets the name of the
    indexed variables introduced in computing the endomorphism ring Hom(J,J).
  * integralClosure(...,Variable=>...)
    -- set the base
    letter for the indexed variables introduced while computing the integral
    closure
  * "intersectInP(...,Variable=>...)" -- see
    intersectInP(...,BasisElementLimit=>...) (ReesAlgebra),
    --
    Option for intersectInP
  * "multiplicity(...,Variable=>...)" -- see
    intersectInP(...,BasisElementLimit=>...) (ReesAlgebra),
    --
    Option for intersectInP
  * makeS2(...,Variable=>...)
    -- Sets the name of the
    indexed variables introduced in computing the S2-ification.
  * "ringFromFractions(...,Variable=>...)" -- see ringFromFractions,
    -- find presentation for f.g. ring
  * "Schubert(...,Variable=>...)" -- see Schubert(ZZ,ZZ,VisibleList) (Macaulay2Doc),
    -- find the Plücker
    ideal of a Schubert variety
  * "associatedGradedRing(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "distinguished(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "isReduction(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "jacobianDual(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "normalCone(Ideal,RingElement,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "normalCone(Ideal,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "reesAlgebra(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "reesIdeal(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "specialFiber(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * "specialFiberIdeal(...,Variable=>...)" -- see
    symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring
  * symmetricKernel(...,Variable=>...) (ReesAlgebra),
    --
    Choose name for variables in the created ring

Radical -- a symbol denoting a strategy element usable with integralClosure(...,Strategy=>...)
**********************************************************************************************

See also
========

  * integralClosure(Ring) -- compute the
    integral closure (normalization) of an affine domain

For the programmer
==================

The object Radical, is a symbol (Macaulay2Doc).

RadicalCodim1 -- a symbol denoting a strategy element usable with integralClosure(...,Strategy=>...)
****************************************************************************************************

See also
========

  * integralClosure(Ring) -- compute the
    integral closure (normalization) of an affine domain

For the programmer
==================

The object RadicalCodim1, is a symbol (Macaulay2Doc).

ringFromFractions -- find presentation for f.g. ring
****************************************************

Synopsis
========

  * Usage:
        (F,G) = ringFromFractions(H,f)
  * Inputs:
      * H, a matrix (Macaulay2Doc), a one row matrix over a ring
        $R$
      * f, a ring element (Macaulay2Doc),
  * Optional inputs (Macaulay2Doc),:
      * Variable => a symbol (Macaulay2Doc), default value "w",
        name of symbol used for new variables
      * Index => an integer (Macaulay2Doc), default value 0, the
        starting index for new variables
      * Verbosity => an integer (Macaulay2Doc), default value 0,
        values up to 6 are implemented. Larger values show more output.
  * Outputs:
      * F, a ring map (Macaulay2Doc), $R \rightarrow S$, where
        $S$ is the extension ring of $R$ generated by the fractions $1/f H$
      * G, a ring map (Macaulay2Doc), $frac S \rightarrow frac
        R$, the fractions

Description
===========

Serious restriction: It is assumed that this ring R[1/f H] is an endomorphism
ring of an ideal in $R$.  This means that the Groebner basis, in a product
order, will have lead terms all quadratic monomials in the new variables,
together with other elements which are degree 0 or 1 in the new variables.

+----------------------------------------------------+
|i1 : R = QQ[x,y]/(y^2-x^3)                          |
|                                                    |
|o1 = R                                              |
|                                                    |
|o1 : QuotientRing                                   |
+----------------------------------------------------+
|i2 : H = (y * ideal(x,y)) : ideal(x,y)              |
|                                                    |
|                2                                   |
|o2 = ideal (y, x )                                  |
|                                                    |
|o2 : Ideal of R                                     |
+----------------------------------------------------+
|i3 : (F,G) = ringFromFractions(((gens H)_{1}), H_0);|
+----------------------------------------------------+
|i4 : S = target F                                   |
|                                                    |
|o4 = S                                              |
|                                                    |
|o4 : QuotientRing                                   |
+----------------------------------------------------+
|i5 : F                                              |
|                                                    |
|o5 = map (S, R, {x, y})                             |
|                                                    |
|o5 : RingMap S <-- R                                |
+----------------------------------------------------+
|i6 : G                                              |
|                                                    |
|                           y                        |
|o6 = map (frac R, frac S, {-, x, y})                |
|                           x                        |
|                                                    |
|o6 : RingMap frac R <-- frac S                      |
+----------------------------------------------------+

Ways to use ringFromFractions:
==============================

  * "ringFromFractions(Matrix,RingElement)"

For the programmer
==================

The object ringFromFractions, is a method function with options (Macaulay2Doc).

SimplifyFractions -- a symbol denoting a strategy element usable with integralClosure(...,Strategy=>...)
********************************************************************************************************

See also
========

  * integralClosure(Ring) -- compute the
    integral closure (normalization) of an affine domain

For the programmer
==================

The object SimplifyFractions, is a symbol (Macaulay2Doc).

StartWithOneMinor -- a symbol denoting a strategy element usable with integralClosure(...,Strategy=>...)
********************************************************************************************************

See also
========

  * integralClosure(Ring) -- compute the
    integral closure (normalization) of an affine domain

For the programmer
==================

The object StartWithOneMinor, is a symbol (Macaulay2Doc).

testHunekeQuestion -- tests a conjecture on integral closures strengthening the Eisenbud-Mazur conjecture
*********************************************************************************************************

Synopsis
========

  * Usage:
        B = testHunekeQuestion f
  * Inputs:
      * f, a ring element (Macaulay2Doc),
  * Outputs:
      * B, a Boolean value (Macaulay2Doc), whether f the answer
        to the question is yes for f

Description
===========

Background:

Theorem (Saito): If R is a formal power series ring over a field of char 0, and
f \in R is a power series with an isolated singularity, then f\in j(f), the
Jacobian ideal iff f becomes quasi-homogeneous after a change of variables.

This can be tested over an affine ring by testing f % (j(f)+ideal vars S). If
the result is 0 we call f crypto-quasi-homogeneous.

Theorem (Lejeune-Teisser; see Swanson-Huneke Thm 7.1.5) f \in integral
closure(ideal apply(numgens R,i-> x_i*df/dx_i))

Question (Huneke): Is f actually contained in the maximal ideal times the
integral closure of ideal apply(numgens R,i-> df/dx_i).

Note that the answer is trivially yes if f is crypto-quasi-homogeneous.

Huneke has shown that if the answer is always yes, then the Eisenbud-Mazur
conjecture on evolutions is true.

+-----------------------------------------------------------------------------+
|i1 : R = QQ[x,y,z]                                                           |
|                                                                             |
|o1 = R                                                                       |
|                                                                             |
|o1 : PolynomialRing                                                          |
+-----------------------------------------------------------------------------+
|i2 : f = random(3,R)+random(4,R)+random(5,R)                                 |
|                                                                             |
|      3 5    4      3 2      2 3   4   4   5 5   3 4    10 3        2 2      |
|o2 = --x  + x y + 5x y  + 10x y  + -x*y  + -y  + -x z + --x y*z + 3x y z +   |
|     10                            3       3     7       9                   |
|     ------------------------------------------------------------------------|
|     7   3    7 4    1 3 2     2   2   5   2 2   2 3 2   3 2 3         3     |
|     -x*y z + -y z + -x z  + 3x y*z  + -x*y z  + -y z  + -x z  + 5x*y*z  +   |
|     8        2      2                 6         5       2                   |
|     ------------------------------------------------------------------------|
|     6 2 3   2   4   5   4   5 5    7 4   1 3    7 2 2   5   3     4    7 3  |
|     -y z  + -x*z  + -y*z  + -z  + --x  + -x y + -x y  + -x*y  + 2y  + --x z |
|     5       5       4       7     10     2      3       2             10    |
|     ------------------------------------------------------------------------|
|         2      6   2      3    3 2 2   2     2   5 2 2      3   2   3     4 |
|     + 7x y*z + -x*y z + 6y z + -x z  + -x*y*z  + -y z  + x*z  + -y*z  + 5z  |
|                7               7       3         4              9           |
|     ------------------------------------------------------------------------|
|       9 3   1 2    1   2   3 3   9 2            3 2    3   2   7   2   7 3  |
|     + -x  + -x y + -x*y  + -y  + -x z + x*y*z + -y z + -x*z  + -y*z  + -z   |
|       2     2      2       2     4              4      4       4       9    |
|                                                                             |
|o2 : R                                                                       |
+-----------------------------------------------------------------------------+
|i3 : testHunekeQuestion f                                                    |
|power series is crypto-quasi-homogeneous                                     |
|                                                                             |
|o3 = yes                                                                     |
+-----------------------------------------------------------------------------+

The function y^4-2*x^3*y^2-4*x^5*y+x^6-x^7 is defines the simplest plane curve
singularity with 2 characteristic pairs, and is thus NOT crypto-
quasi-homogeneous.

+--------------------------------------------+
|i4 : R = QQ[x,y]                            |
|                                            |
|o4 = R                                      |
|                                            |
|o4 : PolynomialRing                         |
+--------------------------------------------+
|i5 : f = (y^4-2*x^3*y^2-4*x^5*y+x^6-x^7)    |
|                                            |
|        7    6     5      3 2    4          |
|o5 = - x  + x  - 4x y - 2x y  + y           |
|                                            |
|o5 : R                                      |
+--------------------------------------------+
|i6 : testHunekeQuestion f                   |
|power series is not crypto-quasi-homogeneous|
|                                            |
|o6 = yes                                    |
+--------------------------------------------+

See also
========

  * integralClosure(Ideal)
    -- integral closure of an
    ideal in an affine domain

Ways to use testHunekeQuestion:
===============================

  * "testHunekeQuestion(RingElement)"

For the programmer
==================

The object testHunekeQuestion, is a method function (Macaulay2Doc).

Vasconcelos -- a symbol denoting a strategy element usable with integralClosure(...,Strategy=>...)
**************************************************************************************************

See also
========

  * integralClosure(Ring) -- compute the
    integral closure (normalization) of an affine domain

For the programmer
==================

The object Vasconcelos, is a symbol (Macaulay2Doc).