This is MixedMultiplicity.info, produced by Macaulay2, version 1.21

MixedMultiplicity -- Calculate mixed multiplicities, mixed volume and sectional Milnor numbers
**********************************************************************************************

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

P. B. Bhattacharya and J. J. Risler - B. Teissier proved that if
$I_0,I_1,\ldots,I_r$ are $m$-primary ideals in a Noetherian local ring $(R,m)$
of dimension $d$, then the function $B(u_0,u_1,\ldots,u_r) =
l(R/I_0^{u_0}I_1^{u_1} \cdots I_r^{u_r})$ is a polynomial function in
$u_0,u_1,\ldots,u_r$ of degree $d$ for large values of $u_0,u_1,\ldots,u_r.$
The coefficients of the top degree term are called the mixed multiplicities of
the ideals $I_0,I_1,\ldots,I_r.$ This result was generalized for ideals of
positive height in the works of D. Katz, J. K. Verma and N. V. Trung. D. Rees
studied these numbers using complete and joint reductions of ideals.

Our algorithm to compute the mixed multiplicities requires computation of the
defining ideal of the multi-Rees algebra of ideals. An expression of the
defining ideal of the multi-Rees algebra of monomial ideals over a polynomial
ring was given by D. Cox, K.-i. Lin and G. Sosa in (Multi-Rees algebras and
toric dynamical systems. Proc. Amer. Math. Soc., 147(11):4605-4616, 2019). We
use a generalization of their result to compute the defining ideal of
multi-Rees algebras of ideals over domains. Otherwise, we use a generalization
of the algorithm of the function reesIdeal to the multi-ideal case.

The computation of mixed multiplicities helps compute mixed volume of a
collection of lattice polytopes and also the sectional Milnor numbers of
hypersurfaces with an isolated singularity.

Let $Q_1,\ldots,Q_n$ be a collection of lattice polytopes in $\mathbb{R}^n$ and
$t_1,\ldots,t_n \in \mathbb{R}_+$. Minkowski proved that the $n$-dimensional
volume, $vol_n(t_1Q_1 + \cdots + t_nQ_n)$ is a homogeneous polynomial of degree
$n$ in $t_1,\ldots,t_n.$ The coefficient of $t_1 \cdots t_n$ is called the
mixed volume of $Q_1,\ldots,Q_n.$ N. V. Trung and J. K. Verma proved that the
mixed volume of lattice polytopes in the above setup can be realized as a mixed
multiplicity of the homogeneous ideals corresponding to the lattice polytopes.

Let origin be an isolated singular point of a complex analytic hypersurface $H
= V(f).$ The $\mathbb{C}$-vector space dimension of
$\mathbb{C}\{x_0,\ldots,x_n\}/(f_{x_0},\ldots,f_{x_n})$ is called the Milnor
number of the hypersurface $H$ at the origin. Let $(X, x)$ be a germ of a
hypersurface in $\mathbb{C}^{n+1}$ with an isolated singularity. The Milnor
number of $X \cap E$, where $E$ is a general linear subspace of dimension $i$
passing through $x,$ is called the $i$-th sectional Milnor number of $X$. B.
Teissier identified the $i$-th sectional Milnor number with the $i$-th mixed
multiplicity of the maximal homogeneous ideal of the polynomial ring and the
Jacobian ideal of $f.$

Authors
=======

  * Kriti Goel (see https://sites.google.com/view/kritigoel )
    <kritigoel.maths@gmail.com>
  * Vivek Mukundan (see https://web.iitd.ac.in/~vmukunda ) <vivekm85@gmail.com>
  * Sudeshna Roy (see https://sites.google.com/site/sudeshnaroy11 )
    <sudeshnaroy@math.iitb.ac.in>
  * J. K. Verma (see https://sites.google.com/site/profjkvermaiitbombay/ )
    <jkv@math.iitb.ac.in>

Version
=======

This documentation describes version 2.0 of MixedMultiplicity.

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

The source code from which this documentation is derived is in the file
MixedMultiplicity.m2 (see common/share/Macaulay2/MixedMultiplicity.m2 ).

Exports
=======

  * Functions and commands
      * homIdealPolytope -- Compute the homogeneous
        ideal corresponding to the vertices of a lattice polytope in
        $\mathbb{R}^n$.
      * mixedMultiplicity -- Compute a given mixed
        multiplicity of ideals
      * mMixedVolume -- Compute the mixed volume of a
        collection of lattice polytopes
      * multiReesIdeal -- Compute the defining ideal of
        multi-Rees algebra of ideals
      * secMilnorNumbers -- Compute the sectional
        Milnor numbers of a hypersurface with an isolated singularity
  * Methods
      * "homIdealPolytope(List)" -- see homIdealPolytope,
        -- Compute the homogeneous ideal corresponding to the
        vertices of a lattice polytope in $\mathbb{R}^n$.
      * "mixedMultiplicity(Sequence,Sequence)" -- see mixedMultiplicity,
        -- Compute a given mixed multiplicity of ideals
      * "mMixedVolume(List)" -- see mMixedVolume, --
        Compute the mixed volume of a collection of lattice polytopes
      * "multiReesIdeal(Ideal)" -- see multiReesIdeal, --
        Compute the defining ideal of multi-Rees algebra of ideals
      * "multiReesIdeal(Ideal,RingElement)" -- see multiReesIdeal,
        -- Compute the defining ideal of multi-Rees algebra of
        ideals
      * "multiReesIdeal(List)" -- see multiReesIdeal, --
        Compute the defining ideal of multi-Rees algebra of ideals
      * "multiReesIdeal(List,List)" -- see multiReesIdeal,
        -- Compute the defining ideal of multi-Rees algebra of
        ideals
      * "secMilnorNumbers(RingElement)" -- see secMilnorNumbers,
        -- Compute the sectional Milnor numbers of a
        hypersurface with an isolated singularity

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

The object MixedMultiplicity, is a package (Macaulay2Doc).

homIdealPolytope -- Compute the homogeneous ideal corresponding to the vertices of a lattice polytope in $\mathbb{R}^n$.
************************************************************************************************************************

Synopsis
========

  * Usage:
        homIdealPolytope W
  * Inputs:
      * W, a list (Macaulay2Doc), list ${p_1,\ldots,p_r}$, where
        $p_1,\ldots,p_r$ are vertices of the lattice polytope in
        $\mathbb{R}^n$.
  * Optional inputs (Macaulay2Doc),:
      * CoefficientRing,
        => ...,
        default value QQ, choose the coefficient ring of the (output) ideal
      * VariableBaseName,
        => ...,
        default value "X", choose a base name for variables in the created ring
  * Outputs:
      * an ideal (Macaulay2Doc), A homogeneous ideal of
        $k[x_1,\ldots,x_{n+1}].$

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

Given a list of vertices of a lattice polytope, the function outputs a
homogeneous ideal of $k[x_1,\ldots,x_{n+1}]$ such that the polytope is the
convex hull of the lattice points of the dehomogenization of a set of monomials
that generates the ideal in $k[x_1,\ldots,x_n]$.

The following example computes the homogeneous ideal corresponding to a 2-cross
polytope.

+-----------------------------------------------------+
|i1 : I = homIdealPolytope {(0,1),(1,0),(0,-1),(-1,0)}|
|                                                     |
|             2       2     2     2                   |
|o1 = ideal (X X , X X , X X , X X )                  |
|             1 2   1 2   1 3   2 3                   |
|                                                     |
|o1 : Ideal of QQ[X ..X ]                             |
|                  1   3                              |
+-----------------------------------------------------+

The output can be used to compute the mixed volume of a collection of
polytopes. A list of the output ideals, corresponding to the vertices of
various polytopes, can be used as an input in the mMixedVolume,
function to compute the mixed volume of polytopes.

See also
========

  * mMixedVolume -- Compute the mixed volume of a
    collection of lattice polytopes

Ways to use homIdealPolytope :
==============================

  * "homIdealPolytope(List)"

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

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

homIdealPolytope(...,CoefficientRing=>...) -- choose the coefficient ring of the (output) ideal
***********************************************************************************************

Synopsis
========

  * Usage:
        homIdealPolytope(..., CoefficientRing => QQ)

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

The function homIdealPolytope, creates a new ring of
the form $k[X_0,\ldots, X_r]$, where $k$ is the coefficient ring of the output
ideal. This option allows the user to chose the coefficient ring $k.$ The
default ring is QQ.

+-----------------------------------------------------------------------------+
|i1 : I = homIdealPolytope ({(0,1),(1,0),(2,1),(1,2)}, CoefficientRing =>     |
|                                                                             |
|             2       2     2     2                                           |
|o1 = ideal (X X , X X , X X , X X )                                          |
|             1 2   1 2   1 3   2 3                                           |
|                                                                             |
|              ZZ                                                             |
|o1 : Ideal of --[X ..X ]                                                     |
|               2  1   3                                                      |
|-----------------------------------------------------------------------------|
|ZZ/2)                                                                        |
+-----------------------------------------------------------------------------+

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

  * Default value: QQ (Macaulay2Doc),
  * Function: homIdealPolytope, -- Compute the
    homogeneous ideal corresponding to the vertices of a lattice polytope in
    $\mathbb{R}^n$.
  * Option key: CoefficientRing (Macaulay2Doc), -- an
    optional argument

Functions with optional argument named CoefficientRing :
========================================================

  * flattenRing(...,CoefficientRing=>...) (Macaulay2Doc),
    --
    optionally specify the desired coefficient ring of the flattened ring
  * "generators(...,CoefficientRing=>...)" -- see generators(Ring) (Macaulay2Doc),
    -- the list of generators of a ring
  * "Grassmannian(...,CoefficientRing=>...)" -- see Grassmannian(ZZ,ZZ) (Macaulay2Doc),
    -- the Grassmannian of linear
    subspaces of a vector space
  * homIdealPolytope(...,CoefficientRing=>...)
    -- choose the
    coefficient ring of the (output) ideal
  * "Schubert(...,CoefficientRing=>...)" -- see
    Schubert(ZZ,ZZ,VisibleList) (Macaulay2Doc),
    -- find the Plücker
    ideal of a Schubert variety

mixedMultiplicity -- Compute a given mixed multiplicity of ideals
*****************************************************************

Synopsis
========

  * Usage:
        mixedMultiplicity (W1, W2)
  * Inputs:
      * W1, a sequence (Macaulay2Doc), of ideals
        $I_0,\ldots,I_r$
      * W2, a sequence (Macaulay2Doc), $a=(a_0,\ldots,a_r)$ at
        which the mixed multiplicity is calculated
  * Outputs:
      * an integer (Macaulay2Doc), mixed multiplicity $e_a$ of ideals
        $I_0,\ldots,I_r$

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

Given the ideals $I_0,\ldots,I_r$ in a ring $R$ and the tuple $a =
(a_0,\ldots,a_r) \in \mathbb{N}^{r+1}$ such that $I_0$ is primary to the
maximal homogeneous ideal of $R$, $I_1,\ldots,I_r$ have positive grade and
$a_0+ \cdots +a_r = dim R -1$, the function computes the mixed multiplicity
$e_a$ of the ideals.

+--------------------------------------------------+
|i1 : R = QQ[x,y,z,w];                             |
+--------------------------------------------------+
|i2 : I = ideal(x*y*w^3,x^2*y*w^2,x*y^3*w,x*y*z^3);|
|                                                  |
|o2 : Ideal of R                                   |
+--------------------------------------------------+
|i3 : m = ideal vars R;                            |
|                                                  |
|o3 : Ideal of R                                   |
+--------------------------------------------------+
|i4 : mixedMultiplicity ((m,I,I,I),(0,1,1,1))      |
|                                                  |
|o4 = 6                                            |
+--------------------------------------------------+

The function computes the Hilbert polynomial of the graded ring $\bigoplus
(I_0^{u_0}I_1^{u_1} \cdots I_r^{u_r}/I_0^{u_0+1}I_1^{u_1} \cdots I_r^{u_r})$ to
compute the mixed multiplicity. If the ideals $I_1,\ldots,I_r$ are also primary
to the maximal ideal, then to compute the $(a_0+1, a_1,\ldots, a_r)$-th mixed
multiplicity, one needs to enter the sequence ${a_0,a_1,\ldots,a_r}$ in the
function. The same is illustrated in the following example.

+---------------------------------------------+
|i5 : R = QQ[x,y,z];                          |
+---------------------------------------------+
|i6 : m = ideal vars R;                       |
|                                             |
|o6 : Ideal of R                              |
+---------------------------------------------+
|i7 : f = z^5 + x*y^7 + x^15;                 |
+---------------------------------------------+
|i8 : I = ideal(apply(0..2, i -> diff(R_i,f)))|
|                                             |
|               14    7      6    4           |
|o8 = ideal (15x   + y , 7x*y , 5z )          |
|                                             |
|o8 : Ideal of R                              |
+---------------------------------------------+
|i9 : mixedMultiplicity ((m,I),(2,0))         |
|                                             |
|o9 = 1                                       |
+---------------------------------------------+
|i10 : mixedMultiplicity ((m,I),(1,1))        |
|                                             |
|o10 = 4                                      |
+---------------------------------------------+

In case the user wants to compute a mixed multiplicity of ideals where one (or
many) ideal(s) doesn't have positive grade, then one can pass to the ring
$R/(0:I^\infty),$ where $(0:I^\infty)$ denotes the saturation of the ideal $I =
I_1 \cdots I_r.$

+-----------------------------------------+
|i11 : S = QQ[x,y,z,w]/ideal(x*z, y*z);   |
+-----------------------------------------+
|i12 : I = ideal(x,y);                    |
|                                         |
|o12 : Ideal of S                         |
+-----------------------------------------+
|i13 : m = ideal vars S;                  |
|                                         |
|o13 : Ideal of S                         |
+-----------------------------------------+
|i14 : K = saturate(sub(ideal(),S), I^2); |
|                                         |
|o14 : Ideal of S                         |
+-----------------------------------------+
|i15 : T = S/K;                           |
+-----------------------------------------+
|i16 : J = sub(I, T);                     |
|                                         |
|o16 : Ideal of T                         |
+-----------------------------------------+
|i17 : n = sub(m, T);                     |
|                                         |
|o17 : Ideal of T                         |
+-----------------------------------------+
|i18 : mixedMultiplicity ((n,J,J),(2,0,0))|
|                                         |
|o18 = 1                                  |
+-----------------------------------------+

See also
========

  * reesIdeal (ReesAlgebra) -- Compute the defining ideal of
    the Rees Algebra

Ways to use mixedMultiplicity :
===============================

  * "mixedMultiplicity(Sequence,Sequence)"

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

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

mMixedVolume -- Compute the mixed volume of a collection of lattice polytopes
*****************************************************************************

Synopsis
========

  * Usage:
        mMixedVolume W
  * Inputs:
      * W, a list (Macaulay2Doc), of homogeneous ideals
        $I_1,\ldots,I_n$ over a polynomial ring, or a list of lists of vertices
        of the polytopes
  * Outputs:
      * an integer (Macaulay2Doc), mixed volume

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

Let $Q_1,\ldots,Q_n$ be a collection of lattice polytopes in $\mathbb{R}^n$ and
let $I_1,\ldots,I_n$ be homogeneous ideals in a polynomial ring over the field
of rational numbers, corresponding to the given polytopes. These ideals can be
obtained using the command homIdealPolytope. The mixed
volume is calculated by computing a mixed multiplicity of these ideals.

The following example computes the mixed volume of two 2-cross polytopes.

+-----------------------------------------------------+
|i1 : I = homIdealPolytope {(-1,0),(0,-1),(1,0),(0,1)}|
|                                                     |
|             2       2     2     2                   |
|o1 = ideal (X X , X X , X X , X X )                  |
|             1 2   1 2   1 3   2 3                   |
|                                                     |
|o1 : Ideal of QQ[X ..X ]                             |
|                  1   3                              |
+-----------------------------------------------------+
|i2 : mMixedVolume {I,I}                              |
|                                                     |
|o2 = 4                                               |
+-----------------------------------------------------+

One can also compute the mixed volume of a collection of lattice polytopes by
directly entering the vertices of the polytopes. Mixed Volume in the above
example can also be computed as follows.

+---------------------------------------+
|i3 : C = {(-1,0),(0,-1),(1,0),(0,1)}   |
|                                       |
|o3 = {(-1, 0), (0, -1), (1, 0), (0, 1)}|
|                                       |
|o3 : List                              |
+---------------------------------------+
|i4 : mMixedVolume {C,C}                |
|                                       |
|o4 = 4                                 |
+---------------------------------------+

The following example computes the mixed volume of a 2-dimensional hypercube
$H$ and a 2-cross polytope $C$.

+---------------------------------------+
|i5 : H = {(1,1),(1,-1),(-1,1),(-1,-1)};|
+---------------------------------------+
|i6 : C = {(-1,0),(0,1),(1,0),(0,-1)};  |
+---------------------------------------+
|i7 : mMixedVolume {H,C}                |
|                                       |
|o7 = 8                                 |
+---------------------------------------+

See also
========

  * homIdealPolytope -- Compute the homogeneous ideal
    corresponding to the vertices of a lattice polytope in $\mathbb{R}^n$.
  * mixedMultiplicity -- Compute a given mixed
    multiplicity of ideals
  * mixedVolume (Polyhedra) -- computes the mixed volume of
    a list of polytope

Ways to use mMixedVolume :
==========================

  * "mMixedVolume(List)"

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

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

multiReesIdeal -- Compute the defining ideal of multi-Rees algebra of ideals
****************************************************************************

Synopsis
========

  * Usage:
        multiReesIdeal W
        multiReesIdeal (W,U)
  * Inputs:
      * W, a list (Macaulay2Doc), of ideals $I_1,\ldots,I_n$ or an
        ideal (Macaulay2Doc), if $n=1$
      * U, a list (Macaulay2Doc), of nonzerodivisors, one from each
        ideal or a nonzerodivisor a ring element (Macaulay2Doc),
        if $n=1$
  * Optional inputs (Macaulay2Doc),:
      * VariableBaseName,
        => ...,
        default value "X", choose a base name for variables in the created ring
  * Outputs:
      * an ideal (Macaulay2Doc), defining ideal of the multi-Rees
        algebra of $I_1,\ldots,I_n$

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

When the base ring is a domain, the function computes the defining ideal of the
multi-Rees algebra of ideals by computing the saturation of a binomial ideal
with respect to a polynomial. The technique is a generalization of a result of
D. Cox, K.-i. Lin and G. Sosa for monomial ideals over a polynomial ring.

+-----------------------------------------------------------------------------+
|i1 : S = QQ[x_0..x_3];                                                       |
+-----------------------------------------------------------------------------+
|i2 : C = trim monomialCurveIdeal(S,{2,3,5})                                  |
|                                                                             |
|                          3    2     3      2                                |
|o2 = ideal (x x  - x x , x  - x x , x  - x x )                               |
|             1 2    0 3   2    1 3   1    0 2                                |
|                                                                             |
|o2 : Ideal of S                                                              |
+-----------------------------------------------------------------------------+
|i3 : multiReesIdeal C                                                        |
|                                                                             |
|             2                   2                                           |
|o3 = ideal (x X  - x X  - x X , x X  - x X  - x X )                          |
|             2 0    1 1    3 2   1 0    0 1    2 2                           |
|                                                                             |
|o3 : Ideal of S[X ..X ]                                                      |
|                 0   2                                                       |
+-----------------------------------------------------------------------------+
|i4 : I = multiReesIdeal {C,C}                                                |
|                                                                             |
|             2                   2                   2                   2   |
|o4 = ideal (x X  - x X  - x X , x X  - x X  - x X , x X  - x X  - x X , x X  |
|             2 3    1 4    3 5   1 3    0 4    2 5   2 0    1 1    3 2   1 0 |
|     ------------------------------------------------------------------------|
|     - x X  - x X , X X  - X X , X X  - X X , X X  - X X )                   |
|        0 1    2 2   2 3    0 5   1 3    0 4   2 4    1 5                    |
|                                                                             |
|o4 : Ideal of S[X ..X ]                                                      |
|                 0   5                                                       |
+-----------------------------------------------------------------------------+

This is how we handle degrees

+--------------------------------------------+
|i5 : transpose gens I                       |
|                                            |
|o5 = {0, -1, -4}  | x_2^2X_3-x_1X_4-x_3X_5 ||
|     {0, -1, -4}  | x_1^2X_3-x_0X_4-x_2X_5 ||
|     {-1, 0, -4}  | x_2^2X_0-x_1X_1-x_3X_2 ||
|     {-1, 0, -4}  | x_1^2X_0-x_0X_1-x_2X_2 ||
|     {-1, -1, -5} | X_2X_3-X_0X_5          ||
|     {-1, -1, -5} | X_1X_3-X_0X_4          ||
|     {-1, -1, -6} | X_2X_4-X_1X_5          ||
|                                            |
|                       7                 1  |
|o5 : Matrix (S[X ..X ])  <--- (S[X ..X ])   |
|                0   5             0   5     |
+--------------------------------------------+

If the base ring is not a domain, then the function computes the defining ideal
by computing the presentation of each ideal and returns the kernel between the
symmetric algebra of the source and the target symmetric algebras.
Alternatively, if the user knows nonzerodivisors, one from each input ideal,
then the function uses the algorithm of the domain case and saturates the
binomial ideal with respect to the product of the nonzerodivisors. The
alternate method is often much faster.

+-----------------------------------------------------------------------------+
|i6 : T = QQ[a,b,c];                                                          |
+-----------------------------------------------------------------------------+
|i7 : m = matrix{{a,b,c},{b,c,a}};                                            |
|                                                                             |
|             2       3                                                       |
|o7 : Matrix T  <--- T                                                        |
+-----------------------------------------------------------------------------+
|i8 : U = T/minors(2,m);                                                      |
+-----------------------------------------------------------------------------+
|i9 : J = ideal vars U                                                        |
|                                                                             |
|o9 = ideal (a, b, c)                                                         |
|                                                                             |
|o9 : Ideal of U                                                              |
+-----------------------------------------------------------------------------+
|i10 : time multiReesIdeal J                                                  |
|     -- used 0.298886 seconds                                                |
|                                                                             |
|                                                                             |
|o10 = ideal (c*X  - b*X , b*X  - a*X , a*X  - c*X , c*X  - a*X , b*X  - c*X ,|
|                1      2     1      2     1      2     0      2     0      2 |
|      -----------------------------------------------------------------------|
|                    2                 2   2                                  |
|      a*X  - b*X , X  - X X , X X  - X , X  - X X )                          |
|         0      2   1    0 2   0 1    2   0    1 2                           |
|                                                                             |
|o10 : Ideal of U[X ..X ]                                                     |
|                  0   2                                                      |
+-----------------------------------------------------------------------------+
|i11 : time multiReesIdeal (J, a)                                             |
|     -- used 0.0398868 seconds                                               |
|                                                                             |
|                                                                             |
|o11 = ideal (c*X  - b*X , b*X  - a*X , a*X  - c*X , c*X  - a*X , b*X  - c*X ,|
|                1      2     1      2     1      2     0      2     0      2 |
|      -----------------------------------------------------------------------|
|                    2                 2   2                                  |
|      a*X  - b*X , X  - X X , X X  - X , X  - X X )                          |
|         0      2   1    0 2   0 1    2   0    1 2                           |
|                                                                             |
|o11 : Ideal of U[X ..X ]                                                     |
|                  0   2                                                      |
+-----------------------------------------------------------------------------+

See also
========

  * reesIdeal (ReesAlgebra) -- Compute the defining ideal of
    the Rees Algebra

Ways to use multiReesIdeal :
============================

  * "multiReesIdeal(Ideal)"
  * "multiReesIdeal(Ideal,RingElement)"
  * "multiReesIdeal(List)"
  * "multiReesIdeal(List,List)"

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

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

multiReesIdeal(...,VariableBaseName=>...) -- choose a base name for variables in the created ring
*************************************************************************************************

Synopsis
========

  * Usage:
        multiReesIdeal(..., VariableBaseName => X)
        homIdealPolytope(..., VariableBaseName => X)

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

Each of these functions creates a new ring of the form $R[X_0,\ldots, X_r]$ or
$k[X_0,\ldots, X_r]$, where $R$ is the ring of the input ideal and $k$ is the
coefficient ring of the output ideal. This option allows the user to change the
base names of the new variables in this ring. The default variable is X.

+---------------------------------------------------+
|i1 : S = QQ[x_0..x_3];                             |
+---------------------------------------------------+
|i2 : C = trim monomialCurveIdeal(S,{2,3,5});       |
|                                                   |
|o2 : Ideal of S                                    |
+---------------------------------------------------+
|i3 : multiReesIdeal (C, VariableBaseName => "w")   |
|                                                   |
|             2                   2                 |
|o3 = ideal (x w  - x w  - x w , x w  - x w  - x w )|
|             2 0    1 1    3 2   1 0    0 1    2 2 |
|                                                   |
|o3 : Ideal of S[w ..w ]                            |
|                 0   2                             |
+---------------------------------------------------+
+--------------------------------------------------------------------------+
|i4 : homIdealPolytope ({(0,1),(1,0),(2,1),(1,2)}, VariableBaseName => "T")|
|                                                                          |
|             2       2     2     2                                        |
|o4 = ideal (T T , T T , T T , T T )                                       |
|             1 2   1 2   1 3   2 3                                        |
|                                                                          |
|o4 : Ideal of QQ[T ..T ]                                                  |
|                  1   3                                                   |
+--------------------------------------------------------------------------+

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

  * Default value: X
  * Function: multiReesIdeal, -- Compute the defining
    ideal of multi-Rees algebra of ideals
  * Option key: VariableBaseName (Macaulay2Doc), -- an
    optional argument

Functions with optional argument named VariableBaseName :
=========================================================

  * "graphIdeal(...,VariableBaseName=>...)" -- see graphIdeal(RingMap) (Macaulay2Doc),
    -- the ideal of the graph of the
    regular map corresponding to a ring map
  * "graphRing(...,VariableBaseName=>...)" -- see graphRing(RingMap) (Macaulay2Doc),
    -- the coordinate ring of the graph
    of the regular map corresponding to a ring map
  * "monoid(...,VariableBaseName=>...)" -- see
    monoid(...,Variables=>...) (Macaulay2Doc),
    -- specify the
    names of the indeterminates
  * "homIdealPolytope(...,VariableBaseName=>...)"
  * multiReesIdeal(...,VariableBaseName=>...)
    -- choose a
    base name for variables in the created ring
  * "newRing(...,VariableBaseName=>...)" -- see newRing (Macaulay2Doc),
    -- make a copy of a ring, with some features changed
  * "polarize(...,VariableBaseName=>...)" -- see polarize (Macaulay2Doc),
    -- given a monomial ideal, computes the squarefree
    monomial ideal obtained via polarization
  * "symmetricAlgebra(...,VariableBaseName=>...)" -- see
    symmetricAlgebra (Macaulay2Doc), -- the symmetric algebra
    of a module
  * "symmetricAlgebraIdeal(...,VariableBaseName=>...)" -- see
    symmetricAlgebraIdeal (ReesAlgebra), -- Ideal of the
    symmetric algebra of an ideal or module
  * "tensor(Monoid,Monoid,VariableBaseName=>...)" -- see
    tensor(Monoid,Monoid) (Macaulay2Doc), -- tensor
    product of monoids
  * "tensor(Ring,Ring,VariableBaseName=>...)" -- see
    tensor(Monoid,Monoid) (Macaulay2Doc), -- tensor
    product of monoids

secMilnorNumbers -- Compute the sectional Milnor numbers of a hypersurface with an isolated singularity
*******************************************************************************************************

Synopsis
========

  * Usage:
        secMilnorNumbers f
  * Inputs:
      * f, a ring element (Macaulay2Doc), a polynomial
  * Outputs:
      * a hash table (Macaulay2Doc), First $d-1$ sectional
        Milnor numbers, where $d$ is the dimension of the polynomial ring

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

Let origin be an isolated singular point of a complex analytic hypersurface $H
= V(f).$ The $\mathbb{C}$-vector space dimension of
$\mathbb{C}\{x_0,\ldots,x_n\}/(f_{x_0},\ldots,f_{x_n})$ is called the Milnor
number of the hypersurface $H$ at the origin. Let $(X, x)$ be a germ of a
hypersurface in $\mathbb{C}^{n+1}$ with an isolated singularity at $x$. The
Milnor number of $X \cap E$, where $E$ is a general linear subspace of
dimension $i$ passing through $x,$ is called the $i$-th sectional Milnor number
of $X$. B. Teissier identified the $i$-th sectional Milnor number with the
$i$-th mixed multiplicity of the maximal homogeneous ideal of the polynomial
ring and the Jacobian ideal of $f.$

Let $f$ be an element of a polynomial ring $R$ and let $d$ be the dimension of
$R$. The function computes the first $d-1$ sectional Milnor numbers by
computing the mixed multiplicities $e_0(m|J(f)),\ldots,e_{d-1}(m|J(f))$, where
$m$ is the maximal homogeneous ideal of $R$ and $J(f)$ is the Jacobian ideal of
$f$.

+-----------------------------------------+
|i1 : R = QQ[x,y,z];                      |
+-----------------------------------------+
|i2 : secMilnorNumbers(z^5 + x*y^7 + x^15)|
|                                         |
|o2 = HashTable{0 => 1 }                  |
|               1 => 4                    |
|               2 => 28                   |
|                                         |
|o2 : HashTable                           |
+-----------------------------------------+
|i3 : secMilnorNumbers(z^3 + y^3 + x^3)   |
|                                         |
|o3 = HashTable{0 => 1}                   |
|               1 => 2                    |
|               2 => 4                    |
|                                         |
|o3 : HashTable                           |
+-----------------------------------------+

Ways to use secMilnorNumbers :
==============================

  * "secMilnorNumbers(RingElement)"

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

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