Alternatively, one can apply the method directly to the Laurent polynomial $f$. In this case, the matrix $A$ is automatically determined by exponentsMatrix.
As an example, we now calculate the sparse discriminant of a generic trilinear form on $\mathbb{P}^1\times\mathbb{P}^2\times \mathbb{P}^1$, that is, the hyperdeterminant of a generic three-dimensional matrix of shape $2\times 3\times 2$.
i1 : f = genericMultihomogeneousPolynomial((2,3,2),(1,1,1))
o1 = a x y z + a x y z + a x y z + a x y z + a x y z + a x y z + a x y z + a x y z +
0,0,0 0 0 0 0,0,1 0 0 1 0,1,0 0 1 0 0,1,1 0 1 1 0,2,0 0 2 0 0,2,1 0 2 1 1,0,0 1 0 0 1,0,1 1 0 1
----------------------------------------------------------------------------------------------------------------------------
a x y z + a x y z + a x y z + a x y z
1,1,0 1 1 0 1,1,1 1 1 1 1,2,0 1 2 0 1,2,1 1 2 1
o1 : ZZ[a ..a ][x ..x , y ..y , z ..z ]
0,0,0 1,2,1 0 1 0 2 0 1
|
i2 : time sparseDiscriminant f
-- used 3.8319 seconds
2 2 2
o2 = a a a a a a - a a a a a - a a a a +
0,1,1 0,2,0 0,2,1 1,0,0 1,0,1 1,1,0 0,1,0 0,2,1 1,0,0 1,0,1 1,1,0 0,1,1 0,2,0 1,0,1 1,1,0
----------------------------------------------------------------------------------------------------------------------------
2 2 2 2 2
a a a a a - a a a a a + a a a a - a a a a a
0,1,0 0,2,0 0,2,1 1,0,1 1,1,0 0,0,1 0,2,0 0,2,1 1,0,1 1,1,0 0,0,0 0,2,1 1,0,1 1,1,0 0,1,1 0,2,0 0,2,1 1,0,0 1,1,1
----------------------------------------------------------------------------------------------------------------------------
2 2 2
+ a a a a + a a a a a - a a a a a a +
0,1,0 0,2,1 1,0,0 1,1,1 0,1,1 0,2,0 1,0,0 1,0,1 1,1,1 0,1,0 0,2,0 0,2,1 1,0,0 1,0,1 1,1,1
----------------------------------------------------------------------------------------------------------------------------
2 2
a a a a a a - a a a a a + a a a a a -
0,0,1 0,2,0 0,2,1 1,0,0 1,1,0 1,1,1 0,0,0 0,2,1 1,0,0 1,1,0 1,1,1 0,0,1 0,2,0 1,0,1 1,1,0 1,1,1
----------------------------------------------------------------------------------------------------------------------------
2 2 2
a a a a a a - a a a a + a a a a a -
0,0,0 0,2,0 0,2,1 1,0,1 1,1,0 1,1,1 0,0,1 0,2,0 1,0,0 1,1,1 0,0,0 0,2,0 0,2,1 1,0,0 1,1,1
----------------------------------------------------------------------------------------------------------------------------
2 2
a a a a a + a a a a a a + a a a a a -
0,1,1 0,2,0 1,0,0 1,0,1 1,2,0 0,1,0 0,1,1 0,2,1 1,0,0 1,0,1 1,2,0 0,1,0 0,1,1 0,2,0 1,0,1 1,2,0
----------------------------------------------------------------------------------------------------------------------------
2 2
a a a a + a a a a a a + a a a a a a -
0,1,0 0,2,1 1,0,1 1,2,0 0,0,1 0,1,1 0,2,0 1,0,1 1,1,0 1,2,0 0,0,1 0,1,0 0,2,1 1,0,1 1,1,0 1,2,0
----------------------------------------------------------------------------------------------------------------------------
2a a a a a a + a a a a a a - 2a a a a a a +
0,0,0 0,1,1 0,2,1 1,0,1 1,1,0 1,2,0 0,0,1 0,1,1 0,2,0 1,0,0 1,1,1 1,2,0 0,0,1 0,1,0 0,2,1 1,0,0 1,1,1 1,2,0
----------------------------------------------------------------------------------------------------------------------------
a a a a a a - a a a a a a - a a a a a a +
0,0,0 0,1,1 0,2,1 1,0,0 1,1,1 1,2,0 0,0,1 0,1,0 0,2,0 1,0,1 1,1,1 1,2,0 0,0,0 0,1,1 0,2,0 1,0,1 1,1,1 1,2,0
----------------------------------------------------------------------------------------------------------------------------
2
2a a a a a a - a a a a a + a a a a a a +
0,0,0 0,1,0 0,2,1 1,0,1 1,1,1 1,2,0 0,0,1 0,2,0 1,1,0 1,1,1 1,2,0 0,0,0 0,0,1 0,2,1 1,1,0 1,1,1 1,2,0
----------------------------------------------------------------------------------------------------------------------------
2 2 2 2 2 2
a a a a a - a a a a - a a a a a + a a a a +
0,0,0 0,0,1 0,2,0 1,1,1 1,2,0 0,0,0 0,2,1 1,1,1 1,2,0 0,0,1 0,1,0 0,1,1 1,0,1 1,2,0 0,0,0 0,1,1 1,0,1 1,2,0
----------------------------------------------------------------------------------------------------------------------------
2 2 2 2 2 2
a a a a - a a a a a + a a a a - a a a a a -
0,0,1 0,1,0 1,1,1 1,2,0 0,0,0 0,0,1 0,1,1 1,1,1 1,2,0 0,1,1 0,2,0 1,0,0 1,2,1 0,1,0 0,1,1 0,2,1 1,0,0 1,2,1
----------------------------------------------------------------------------------------------------------------------------
2
a a a a a a + a a a a a - 2a a a a a a +
0,1,0 0,1,1 0,2,0 1,0,0 1,0,1 1,2,1 0,1,0 0,2,1 1,0,0 1,0,1 1,2,1 0,0,1 0,1,1 0,2,0 1,0,0 1,1,0 1,2,1
----------------------------------------------------------------------------------------------------------------------------
a a a a a a + a a a a a a - a a a a a a +
0,0,1 0,1,0 0,2,1 1,0,0 1,1,0 1,2,1 0,0,0 0,1,1 0,2,1 1,0,0 1,1,0 1,2,1 0,0,1 0,1,0 0,2,0 1,0,1 1,1,0 1,2,1
----------------------------------------------------------------------------------------------------------------------------
2 2
2a a a a a a - a a a a a a + a a a a -
0,0,0 0,1,1 0,2,0 1,0,1 1,1,0 1,2,1 0,0,0 0,1,0 0,2,1 1,0,1 1,1,0 1,2,1 0,0,1 0,2,0 1,1,0 1,2,1
----------------------------------------------------------------------------------------------------------------------------
2
a a a a a + 2a a a a a a - a a a a a a -
0,0,0 0,0,1 0,2,1 1,1,0 1,2,1 0,0,1 0,1,0 0,2,0 1,0,0 1,1,1 1,2,1 0,0,0 0,1,1 0,2,0 1,0,0 1,1,1 1,2,1
----------------------------------------------------------------------------------------------------------------------------
2
a a a a a a - a a a a a a + a a a a a +
0,0,0 0,1,0 0,2,1 1,0,0 1,1,1 1,2,1 0,0,0 0,0,1 0,2,0 1,1,0 1,1,1 1,2,1 0,0,0 0,2,1 1,1,0 1,1,1 1,2,1
----------------------------------------------------------------------------------------------------------------------------
2 2
a a a a a a - a a a a a + a a a a a -
0,0,1 0,1,0 0,1,1 1,0,0 1,2,0 1,2,1 0,0,0 0,1,1 1,0,0 1,2,0 1,2,1 0,0,1 0,1,0 1,0,1 1,2,0 1,2,1
----------------------------------------------------------------------------------------------------------------------------
2
a a a a a a - a a a a a + a a a a a a -
0,0,0 0,1,0 0,1,1 1,0,1 1,2,0 1,2,1 0,0,1 0,1,0 1,1,0 1,2,0 1,2,1 0,0,0 0,0,1 0,1,1 1,1,0 1,2,0 1,2,1
----------------------------------------------------------------------------------------------------------------------------
2 2 2
a a a a a a + a a a a a - a a a a +
0,0,0 0,0,1 0,1,0 1,1,1 1,2,0 1,2,1 0,0,0 0,1,1 1,1,1 1,2,0 1,2,1 0,0,1 0,1,0 1,0,0 1,2,1
----------------------------------------------------------------------------------------------------------------------------
2 2 2 2
a a a a a + a a a a a - a a a a
0,0,0 0,1,0 0,1,1 1,0,0 1,2,1 0,0,0 0,0,1 0,1,0 1,1,0 1,2,1 0,0,0 0,1,1 1,1,0 1,2,1
o2 : ZZ[a ..a ]
0,0,0 1,2,1
|
i3 : A = exponentsMatrix f
o3 = | 0 0 0 0 0 0 1 1 1 1 1 1 |
| 1 1 1 1 1 1 0 0 0 0 0 0 |
| 0 0 0 0 1 1 0 0 0 0 1 1 |
| 0 0 1 1 0 0 0 0 1 1 0 0 |
| 1 1 0 0 0 0 1 1 0 0 0 0 |
| 0 1 0 1 0 1 0 1 0 1 0 1 |
| 1 0 1 0 1 0 1 0 1 0 1 0 |
7 12
o3 : Matrix ZZ <--- ZZ
|
i4 : Disc = sparseDiscriminant A
o4 = Disc
o4 : SparseDiscriminant (sparse discriminant associated to | 0 0 0 0 0 0 1 1 1 1 1 1 |)
| 1 1 1 1 1 1 0 0 0 0 0 0 |
| 0 0 0 0 1 1 0 0 0 0 1 1 |
| 0 0 1 1 0 0 0 0 1 1 0 0 |
| 1 1 0 0 0 0 1 1 0 0 0 0 |
| 0 1 0 1 0 1 0 1 0 1 0 1 |
| 1 0 1 0 1 0 1 0 1 0 1 0 |
|
i5 : assert(Disc f == sparseDiscriminant f) |
The object sparseDiscriminant is a method function with options.