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

## Synopsis

• Usage:
polarize M
polarize(M, VariableBaseName => "x")
• Inputs:
• M, ,
• Optional inputs:
• VariableBaseName => , default value "z", specified letter or string for the new variables
• Outputs:
• I, , a squarefree monomial ideal in a new polynomial ring

## 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://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 $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