# dual(MonomialIdeal) -- the Alexander dual of a monomial ideal

## Synopsis

• Function: dual
• Usage:
dual I
• Inputs:
• I, , a monomial ideal
• Optional inputs:
• Outputs:
• the Alexander dual of I

## Description

If Iis a square free monomial ideal then I is the Stanley-Reisner ideal of a simplicial complex. In this case, dual I is the Stanley-Reisner ideal associated to the dual complex. In particular, dual I is obtained by switching the roles of minimal generators and prime components.
 i1 : QQ[a,b,c,d]; i2 : I = monomialIdeal(a*b, b*c, c*d) o2 = monomialIdeal (a*b, b*c, c*d) o2 : MonomialIdeal of QQ[a..d] i3 : dual I o3 = monomialIdeal (a*c, b*c, b*d) o3 : MonomialIdeal of QQ[a..d] i4 : intersect(monomialIdeal(a,b), monomialIdeal(b,c), monomialIdeal(c,d)) o4 = monomialIdeal (a*c, b*c, b*d) o4 : MonomialIdeal of QQ[a..d] i5 : dual dual I o5 = monomialIdeal (a*b, b*c, c*d) o5 : MonomialIdeal of QQ[a..d]

For a general monomial ideal, the Alexander dual defined as follows: Given two list of nonnegative integers a and bfor which a_i >= b_i for all i let a\b denote the list whose i-th entry is a_i+1-b_iif b_i >= 1and 0otherwise. The Alexander dual with respect to a is the ideal generated by a monomial x^a\b for each irreducible component (x_i^b_i) of I. If a is not provided, it is assumed to be the least common multiple of the minimal generators of I.

 i6 : QQ[x,y,z]; i7 : I = monomialIdeal(x^3, x*y, y*z^2) 3 2 o7 = monomialIdeal (x , x*y, y*z ) o7 : MonomialIdeal of QQ[x..z] i8 : dual(I, {4,4,4}) 2 4 4 3 o8 = monomialIdeal (x y , x z ) o8 : MonomialIdeal of QQ[x..z] i9 : intersect( monomialIdeal(x^2), monomialIdeal(x^4, y^4), monomialIdeal(y^4, z^3)) 2 4 4 3 o9 = monomialIdeal (x y , x z ) o9 : MonomialIdeal of QQ[x..z]

One always has dual( dual(I, a), a) == I however dual dual Imay not equal I.

 i10 : QQ[x,y,z]; i11 : J = monomialIdeal( x^3*y^2, x*y^4, x*z, y^2*z) 3 2 4 2 o11 = monomialIdeal (x y , x*y , x*z, y z) o11 : MonomialIdeal of QQ[x..z] i12 : dual dual J 3 3 o12 = monomialIdeal (x y, x*y , x*z, y*z) o12 : MonomialIdeal of QQ[x..z] i13 : dual( dual(J, {3,4,1}), {3,4,1}) 3 2 4 2 o13 = monomialIdeal (x y , x*y , x*z, y z) o13 : MonomialIdeal of QQ[x..z]

See Ezra Miller's Ph.D. thesis 'Resolutions and Duality for Monomial Ideals'.

Implemented by Greg Smith.

The computation is done by calling the frobby library, written by B. H. Roune; setting gbTrace to a positive value will cause a message to be printed when it is called.