dualVariety -- projective dual variety

Synopsis

• Usage:
dualVariety I
• Inputs:
• I, an ideal, a homogeneous ideal defining a projective variety $X=V(I)\subset\mathbb{P}^n$
• Optional inputs:
• AssumeOrdinary => ..., default value false, whether the expected codimension is 1
• SingularLocus => ..., default value null, pass the singular locus of the variety
• Strategy => ..., default value null,
• Outputs:
• the ideal of the projective dual variety $X^{*}\subset{\mathbb{P}^n}^{*}$

Description

This can be considered a shortcut for dualize tangentialChowForm(I,dim I -1).

Note that in characteristic 0 (or sufficiently large characteristic), the reflexivity theorem implies that if I' == dualVariety I then dualVariety I' == I. Below, we verify the reflexivity theorem for the Veronese surface.

 i1 : V = kernel veronese(2,2) 2 2 2 o1 = ideal (x - x x , x x - x x , x x - x x , x - x x , x x - x x , x - 4 3 5 2 4 1 5 2 3 1 4 2 0 5 1 2 0 4 1 ------------------------------------------------------------------------ x x ) 0 3 o1 : Ideal of QQ[x ..x ] 0 5 i2 : time V' = dualVariety V -- used 0.154072 seconds 2 2 2 o2 = ideal(x x - x x x + x x + x x - 4x x x ) 2 3 1 2 4 0 4 1 5 0 3 5 o2 : Ideal of QQ[x ..x ] 0 5 i3 : time V == dualVariety V' -- used 0.136143 seconds o3 = true

In the next example, we verify that the discriminant of a generic ternary cubic form coincides with the dual variety of the 3-th Veronese embedding of the plane, which is a hypersurface of degree 12 in $\mathbb{P}^9$

 i4 : F = first genericPolynomials({3,-1,-1},ZZ/3331) 3 2 2 3 2 2 2 o4 = a x + a x x + a x x + a x + a x x + a x x x + a x x + a x x + 0 0 1 0 1 3 0 1 6 1 2 0 2 4 0 1 2 7 1 2 5 0 2 ------------------------------------------------------------------------ 2 3 a x x + a x 8 1 2 9 2 ZZ o4 : ----[a ..a ][x ..x ] 3331 0 9 0 2 i5 : time discF = ideal discriminant F; -- used 0.109802 seconds ZZ o5 : Ideal of ----[a ..a ] 3331 0 9 i6 : time Z = dualVariety(veronese(2,3,ZZ/3331),AssumeOrdinary=>true); -- used 0.857106 seconds ZZ o6 : Ideal of ----[x ..x ] 3331 0 9 i7 : discF == sub(Z,vars ring discF) and Z == sub(discF,vars ring Z) o7 = true