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.