Macaulay2 » Documentation
Packages » Macaulay2Doc :: polarize
next | previous | forward | backward | up | index | toc

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 $z_{i,j}$ for the $j$th power of the $i$th variable in the original ring. For instance, polarizing the ideal $I=(x^3, y^2, xy)$, of the ring $\mathbb{Q}[x,y]$, results in the ideal $(z_{0,0}z_{0,1}z_{0,2}, z_{1,0}z_{1,1}, z_{0,0}z_{1,0})$ of $\mathbb{Q}[z_{0,0},z_{0,1},z_{0,2},z_{1,0},z_{1,1}]$.

This is code adapted from the Monomial Ideals chapter, written by Greg Smith and Serkan Hosten, of Computations in algebraic geometry with Macaulay 2. See https://macaulay2.com/Book/ComputationsBook/chapters/monomialIdeals/chapter-wrapper.pdf for the chapter PDF, and https://macaulay2.com/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 $z_{i,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 :

For the programmer

The object polarize is a method function with options.