next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
Macaulay2Doc :: polarize

polarize -- given a monomial ideal, computes the squarefree monomial ideal obtained via polarization

Synopsis

Description

Polarization takes each minimal generator of a monomial ideal to a squarefree monomial in a new ring. The procedure is to define a new variable zi,j for the jth power of the ith variable in the original ring. For instance, polarizing the ideal I=(x3, y2, xy), of the ring ℚ[x,y], results in the ideal (z0,0z0,1z0,2, z1,0z1,1, z0,0z1,0) of ℚ[z0,0,z0,1,z0,2,z1,0,z1,1].

This is code adapted from the Monomial Ideals chapter, written by Greg Smith and Serkan Hosten, of Computations in algebraic geometry with Macaulay2. See https://faculty.math.illinois.edu/Macaulay2/Book/ComputationsBook/chapters/monomialIdeals/chapter-wrapper.pdf for the chapter PDF, and https://faculty.math.illinois.edu/Macaulay2/Book/ for more information on this book.

i1 : R = QQ[x,y,z];
i2 : I = monomialIdeal(x^2,y^3,x*y^2*z,y*z^4);

o2 : MonomialIdeal of R
i3 : J = polarize(I)

o3 = monomialIdeal (z      z      , z      z      z      , z      z      z   
                     {0, 0} {0, 1}   {1, 0} {1, 1} {1, 2}   {0, 0} {1, 0} {1,
     ------------------------------------------------------------------------
       z      , z      z      z      z      z      )
     1} {2, 0}   {1, 0} {2, 0} {2, 1} {2, 2} {2, 3}

o3 : MonomialIdeal of QQ[z      , z      , z      , z      , z      , z      , z      , z      , z      ]
                          {0, 0}   {0, 1}   {1, 0}   {1, 1}   {1, 2}   {2, 0}   {2, 1}   {2, 2}   {2, 3}

By default, the variables in the new rings are named zi,j. To use a different letter (or longer string) instead of z, use the VariableBaseName option.

i4 : R = QQ[a,b,c];
i5 : I = monomialIdeal(a^2*b^2,b^2*c^2,a*b*c^4);

o5 : MonomialIdeal of R
i6 : J = polarize(I, VariableBaseName => "x")

o6 = monomialIdeal (x      x      x      x      , x      x      x      x   
                     {0, 0} {0, 1} {1, 0} {1, 1}   {1, 0} {1, 1} {2, 0} {2,
     ------------------------------------------------------------------------
       , x      x      x      x      x      x      )
     1}   {0, 0} {1, 0} {2, 0} {2, 1} {2, 2} {2, 3}

o6 : MonomialIdeal of QQ[x      , x      , x      , x      , x      , x      , x      , x      ]
                          {0, 0}   {0, 1}   {1, 0}   {1, 1}   {2, 0}   {2, 1}   {2, 2}   {2, 3}
i7 : J = polarize(I, VariableBaseName => "foo")

o7 = monomialIdeal (foo      foo      foo      foo      , foo      foo   
                       {0, 0}   {0, 1}   {1, 0}   {1, 1}     {1, 0}   {1,
     ------------------------------------------------------------------------
       foo      foo      , foo      foo      foo      foo      foo   
     1}   {2, 0}   {2, 1}     {0, 0}   {1, 0}   {2, 0}   {2, 1}   {2,
     ------------------------------------------------------------------------
       foo      )
     2}   {2, 3}

o7 : MonomialIdeal of QQ[foo      , foo      , foo      , foo      , foo      , foo      , foo      , foo      ]
                            {0, 0}     {0, 1}     {1, 0}     {1, 1}     {2, 0}     {2, 1}     {2, 2}     {2, 3}

Variables are always indexed from 0. To use an unindexed variable naming scheme, the polarized ideal can always be mapped to a new ring after it is created. The following code is one way to do this.

i8 : S = ring J;
i9 : T = QQ[a..h];
i10 : F = map(T, S, first entries vars T);

o10 : RingMap T <--- S
i11 : F(J)

o11 = ideal (a*b*c*d, c*d*e*f, a*c*e*f*g*h)

o11 : Ideal of T

See also

Ways to use polarize :