Hadama d anks o algeb aic a ie ies
guided examples and compu a ional p oo s
Da io An olini Guido Mon ú a Alessand o One o
Disclaime . This is he p in ed e sion o a Jupy e No ebook in SageMa h [1] con aining com-
pu a ional examples and p oo s ela ed o he wo k [2]. The o iginal Jupy e No ebook is s o ed in
he Zenodo page [3].
1 Compu ing he pa ame e iza ion o he Ve onese a ie y Vd,n =
ν(d)(Pn)
[1]: de e onese(d, a _lis ):
'''
INPUT: - d, he deg ee
- a _lis , he lis o a iables o he sou ce p ojec i e space
OUTPUT: he polynomials de ining he d-Ve onese embedding o he p ojec i e␣
,→space wi h a iables a _lis
'''
P=P ojec i eSpace(QQ, len( a _lis ) - 1, a _lis )
e u n lis (P. e onese_embedding(d).de ining_polynomials())
1.1 Example: he Ve onese embedding ν(2) :P2,→P5
[2]: e onese(2,[ a ('x0'), a ('x1'), a ('x2')])
[2]: x2
0, x0x1, x0x2, x2
1, x1x2, x2
2
I s image is he Ve onese su ace V2,2⊂P5
2 Compu ing he pa ame e iza ion o he secan a ie y σ (Vd,n)
[3]: de secan _ e onese(d, n, , a s_lis ):
'''
INPUT: - d, he deg ee
- n, he dimension
- , he ank
1
- a s_lis , he lis o a iables in he sou ce p ojec i e space. I ␣
,→is a lis o lis s o a iables, one o each summand
OUTPUT: he polynomials de ining he pa ame e iza ion o he -secan ␣
,→ a ie y o he d-Ve onese embedding in he a iables a s_lis
copy he i s line o use as a iables x_{ij} o i = 1 , ... , ␣
,→and j = 0, ... , n
'''
# a s_lis = [[ a ('x'+s (i)+s (j)) o j in ange(n+1)] o i in␣
,→ ange(1, +1)]
N=binomial(n+d, d)
P=PolynomialRing(QQ, [ [i] o in a s_lis o iin ange(n+1)])
copies_ e onese =[[P( ) o in e onese(d, a s_lis [i])] o iin␣
,→ ange( )]
e u n [sum([copies_ e onese[i][j] o iin ange( )]) o jin ange(N)]
2.1 Example: he pa ame e iza ion o σ2(V2,2)
[4]: secan _ e onese(2,2,2,
[
[ a ('x'+s (i)+s (j)) o jin ange(2+1)]
o iin ange(1,2+1)
])
[4]: x2
10 +x2
20, x10x11 +x20x21, x10x12 +x20x22, x2
11 +x2
21, x11x12 +x21x22, x2
12 +x2
22
3 Compu ing he pa ame e iza ion o he Hadama d p oduc o
secan a ie ies σ( 1,..., m)(Vd,n) = σ 1(Vd,n)⋆· · · ⋆ σ m(Vd,n)
[5]: de hadama d_secan _ e onese(d, n, ):
'''
INPUT: - d, he deg ee
- n, he dimension
- , he lis o anks
OUTPUT: he polynomials de ining he pa ame e iza ion o he Hadama d␣
,→p oduc o all he [i]-secan a ie ies o he d-Ve onese embedding
he a iables a e x_{ijk} o i = 1 , ... , m, j = 1 , ... , [i], k␣
,→= 0 , ... , n, whe e m = len( )
'''
N=binomial(n+d, d)
m=len( )
a s_lis _hadama d =[
[
[ a ('x'+s (i+1)+s (j+1)+s (k)) o kin ange(n+1)]
o jin ange( [i])]
o iin ange(m)
]
2
P=PolynomialRing(QQ, [ a s_lis _hadama d[i][j][k] o iin ange(m) o j␣
,→in ange( [i]) o kin ange(n+1)])
copies_secan _ e onese =[[P( ) o in␣
,→secan _ e onese(d,n, [i], a s_lis _hadama d[i])] o iin ange(m)]
e u n [p od([copies_secan _ e onese[i][j] o iin ange(m)]) o jin␣
,→ ange(N)]
3.1 Example: he pa ame e iza ion o σ2(V2,2)⋆2
[6]: hadama d_secan _ e onese(2,2,[2,2])
[6]:
[x2
110x2
210 +x2
120x2
210 +x2
110x2
220 +x2
120x2
220,
x110x111x210x211 +x120x121x210x211 +x110x111x220x221 +x120x121x220x221,
x110x112x210x212 +x120x122x210x212 +x110x112x220x222 +x120x122x220x222,
x2
111x2
211 +x2
121x2
211 +x2
111x2
221 +x2
121x2
221,
x111x112x211x212 +x121x122x211x212 +x111x112x221x222 +x121x122x221x222,
x2
112x2
212 +x2
122x2
212 +x2
112x2
222 +x2
122x2
222]
4 Compu ing Jacobians o polynomial maps
[7]: de jacobian( ):
'''
INPUT: , a lis o polynomials
OUTPUT: he Jacobian ma ix o he polynomial map co esponding o
'''
e u n Ma ix([lis (g.g adien ()) o gin ])
4.1 Example: he Ve onese su ace V3,2is no (2,2)-Hadama d de ec i e,
i.e. σ2(V3,2)⋆2has he expec ed dimension, by Co olla y 4.4 o he pape
and by he Alexande –Hi schowi z Theo em
[8]: M=jacobian(hadama d_secan _ e onese(3,2,[2,2]))
[9]: N= 2*2*(2+1)# numbe o a iables in he sou ce o he pa ame e iza ion
=[QQ. andom_elemen (10^6,10^6) o iin ange(N)] # a andom poin in he␣
,→sou ce o he pa ame e iza ion
M( ). ank() -1==min(binomial(2+3,3)- 1, (2*(2-1)+1)*2+(2*(2-1)+1)- 1)#␣
,→e alua ion o he ank o he Jacobian
#␣
,→a a andom poin gi es he expec ed dimension
[9]: T ue
3
Rema k: once a gene ic a ional ec o is chosen, he compu a ion o he ank o
he Jacobian a ha ec o is exac , since i is pe o med using symbolic Gaussian
elimina ion
5 P oo o Co olla y 4.10: i d≥3, in he de ec i e cases (d, n, s)o
he Alexande –Hi schowi z Theo em such ha s=Pm
i=1( i−1)+1,
he Hadama d p oduc σ( 1,..., m)(Vd,n) ills he ambien space PN−1,
whe e N=n+d
d
S a egy: o each d≥3, we conside a de ec i e iple (d, n, s). The e a e ini ely many o hem.
Then, o each (d, n, s):
•we conside a non- i ial pa i ion λ= (λ1, . . . , λm), λi≥1, m ≥2o s−1
•we se = (λ1+ 1, . . . , λm+ 1)
•we compu e he pa ame e iza ion o σ (Vd,n)and i s Jacobian
•we e alua e he Jacobian a a gene ic a ional poin and check ha i s ank is equal o N
5.1 d= 3, n = 4, s = 7
[10]: d= 3
n= 4
s= 7
N=binomial(n+d, d)
pa i ions_s =Pa i ions(s-1).lis ()[1:] # non- i ial pa i ions o s-1
possible_ =[[ +1 o in ] o in pa i ions_s] # possible alues o he␣
,→ ec o
[11]: o in possible_ :
M=jacobian(hadama d_secan _ e onese(d,n, ))
V=sum( )*(n+1)# numbe o a iables in he sou ce o he pa ame e iza ion
=[QQ. andom_elemen (10^6,10^6) o iin ange(V)] # andom poin in he␣
,→sou ce o he pa ame e iza ion
p in ( , M( ). ank() == N)
[6, 2] T ue
[5, 3] T ue
[5, 2, 2] T ue
[4, 4] T ue
[4, 3, 2] T ue
[4, 2, 2, 2] T ue
[3, 3, 3] T ue
[3, 3, 2, 2] T ue
[3, 2, 2, 2, 2] T ue
[2, 2, 2, 2, 2, 2] T ue
4
5.2 d= 4, n = 2, s = 5
[12]: d= 4
n= 2
s= 5
N=binomial(n+d, d)
pa i ions_s =Pa i ions(s-1).lis ()[1:] # non- i ial pa i ions o s-1
possible_ =[[ +1 o in ] o in pa i ions_s] # possible alues o he␣
,→ ec o
[13]: o in possible_ :
M=jacobian(hadama d_secan _ e onese(d,n, ))
V=sum( )*(n+1)# numbe o a iables in he sou ce o he pa ame e iza ion
=[QQ. andom_elemen (10^6,10^6) o iin ange(V)] # andom poin in he␣
,→sou ce o he pa ame e iza ion
p in ( , M( ). ank() == N)
[4, 2] T ue
[3, 3] T ue
[3, 2, 2] T ue
[2, 2, 2, 2] T ue
5.3 d= 4, n = 3, s = 9
[14]: d= 4
n= 3
s= 9
N=binomial(n+d, d)
pa i ions_s =Pa i ions(s-1).lis ()[1:] # non- i ial pa i ions o s-1
possible_ =[[ +1 o in ] o in pa i ions_s] # possible alues o he␣
,→ ec o
[15]: o in possible_ :
M=jacobian(hadama d_secan _ e onese(d,n, ))
V=sum( )*(n+1)# numbe o a iables in he sou ce o he pa ame e iza ion
=[QQ. andom_elemen (10^6,10^6) o iin ange(V)] # andom poin in he␣
,→sou ce o he pa ame e iza ion
p in ( , M( ). ank() == N)
[8, 2] T ue
[7, 3] T ue
[7, 2, 2] T ue
[6, 4] T ue
[6, 3, 2] T ue
[6, 2, 2, 2] T ue
[5, 5] T ue
[5, 4, 2] T ue
[5, 3, 3] T ue
5
[5, 3, 2, 2] T ue
[5, 2, 2, 2, 2] T ue
[4, 4, 3] T ue
[4, 4, 2, 2] T ue
[4, 3, 3, 2] T ue
[4, 3, 2, 2, 2] T ue
[4, 2, 2, 2, 2, 2] T ue
[3, 3, 3, 3] T ue
[3, 3, 3, 2, 2] T ue
[3, 3, 2, 2, 2, 2] T ue
[3, 2, 2, 2, 2, 2, 2] T ue
[2, 2, 2, 2, 2, 2, 2, 2] T ue
5.4 d= 4, n = 4, s = 14
[45]: d= 4
n= 4
s= 14
N=binomial(n+d,d)
pa i ions_s =Pa i ions(s-1).lis ()[1:] # non- i ial pa i ions o s-1
possible_ =[[ +1 o in ] o in pa i ions_s] # possible alue o he␣
,→ ec o
[47]: o iin ange(100):
M1 =hadama d_secan _ e onese(d,n,possible_ [i])
V=sum(possible_ [i])*(n+1)# numbe o a iables in he sou ce o he␣
,→pa ame e iza ion
=[QQ. andom_elemen (10^6,10^6) o iin ange(V)] # andom poin in he␣
,→sou ce o he pa ame e iza ion
M2 =[[h( ) o hin g.g adien ()] o gin M1]
p in (i+1, Ma ix(M2). ank() == N)
The compu a ion e eals ha he Co olla y holds ue in all hese cases.
Fo he sake o conciseness, we omi he ou pu , which is isible on he no ebook.
Time o his compu a ion: 8023 seconds
6 Compu ing pa ame e iza ions o Seg e p oduc s
[16]: de seg e(polynomials_lis s):
'''
INPUT: polynomials_lis , a lis o lis s o polynomials
OUTPUT: he pa ame e iza ion o he Seg e embedding o hese lis s o ␣
,→polynomials
'''
k=len(polynomials_lis s)
i k== 2:
6
e u n [ *g o in polynomials_lis s[0] o gin polynomials_lis s[1]]
else:
e u n [ *g o in polynomials_lis s[0] o gin␣
,→seg e(polynomials_lis s[1:])]
6.1 Example: he Seg e embedding P1×P1,→P3
[17]: P.<x0,x1,y0,y1>=PolynomialRing(QQ)
seg e([
[x0,x1],
[y0,y1]
])
[17]: [x0y0, x0y1, x1y0, x1y1]
6.2 Example: he Seg e embedding P1×P1×P1,→P7
[18]: P.<x0,x1,y0,y1,z0,z1>=PolynomialRing(QQ)
seg e([
[x0,x1],
[y0,y1],
[z0,z1]
])
[18]: [x0y0z0, x0y0z1, x0y1z0, x0y1z1, x1y0z0, x1y0z1, x1y1z0, x1y1z1]
7 Compu ing pa ame e iza ions o Seg e-Ve onese a ie ies
[19]: de seg e_ e onese(d, a s_lis ):
'''
INPUT: - d, a lis o deg ees o he Ve onese embeddings
- a s_lis , a lis o a iables o he a ious copies o he␣
,→Ve onese embeddings. I is a lis o k lis s o a iables, whe e k = len(d)
OUTPUT: he pa ame e iza ion o he Seg e-Ve onese embedding in deg ees d␣
,→wi h espec o he a iables in a s_lis
copy he i s line o use as a iables x_{ij} o i = 1, ... , k,␣
,→ o j = 0, ... , n[i], whe e n is a lis o dimensions
'''
# a s_lis = [[ a ('x'+s (i+1)+s (j)) o j in ange(n[i]+1)] o i in␣
,→ ange(len(n))]
P=PolynomialRing(QQ, [ o iin ange(len(d)) o in a s_lis [i]])
lis _ e onese =[[P( ) o in e onese(d[i], a s_lis [i])] o iin␣
,→ ange(len(d))]
e u n seg e(lis _ e onese)
7
7.1 Example: he Seg e-Ve onese embedding ν(2,2) :P1×P1,→P8
[20]: d=[2,2]
n=[1,1]
a s_lis =[
[ a ('x'+s (i+1)+s (j)) o jin ange(n[i]+1)]
o iin ange(len(n))
]
a s_lis
[20]: [[x10, x11],[x20, x21]]
[21]: seg e_ e onese(d, a s_lis )
[21]: x2
10x2
20, x2
10x20x21, x2
10x2
21, x10x11x2
20, x10x11x20x21, x10x11x2
21, x2
11x2
20, x2
11x20x21, x2
11x2
21
8 Compu ing pa ame e iza ions o secan a ie ies o Seg e-
Ve onese a ie ies
[22]: de secan _seg e_ e onese(d, , a s_lis ):
'''
INPUT: - d, a lis o deg ees o he a ious Ve onese embeddings
- , he ank o he secan a ie y
- a s_lis , a lis o a iables o he a ious copies o he␣
,→Ve onese embeddings. I is a lis o k lis s o a iables, whe e k = len(d)
OUTPUT: he pa ame e iza ion o he -secan a ie y o he Seg e-Ve onese␣
,→embedding in deg ees d wi h espec o he a iables in a s_lis
'''
n=[len(e)-1 o ein a s_lis [0]]
N=p od([binomial(n[i]+d[i],d[i]) o iin ange(len(n))])
P=PolynomialRing(QQ, [l[i][j] o lin a s_lis o iin ange(len(l))␣
,→ o jin ange(len(l[i]))])
copies_seg e_ e onese =[[P( ) o in seg e_ e onese(d, a s_lis [i])] o ␣
,→iin ange( )]
e u n [sum([copies_seg e_ e onese[i][j] o iin ange( )]) o jin␣
,→ ange(N)]
8.1 Example: pa ame e iza ion o σ2(ν(2,2)(P1×P1)) ,→P8
[23]: d=[2,2]
= 2
n=[1,1]
a s_lis =[
[
[ a ('x'+s (i+1)+s (j)+s (k)) o jin ange(n[i]+1)]
o iin ange(len(n))]
o kin ange(1, +1)
8
]
a s_lis
[23]: [[[x101, x111],[x201, x211]] ,[[x102, x112],[x202, x212]]]
[24]: secan _seg e_ e onese(d, , a s_lis )
[24]:
[x2
101x2
201 +x2
102x2
202, x2
101x201x211 +x2
102x202x212, x2
101x2
211 +x2
102x2
212,
x101x111x2
201 +x102x112x2
202, x101x111x201x211 +x102x112x202x212,
x101x111x2
211 +x102x112x2
212, x2
111x2
201 +x2
112x2
202,
x2
111x201x211 +x2
112x202x212, x2
111x2
211 +x2
112x2
212]
9 Compu ing pa ame e iza ions o Hadama d powe s o secan a-
ie ies o Seg e-Ve onese a ie ies
[25]: de hadama d_secan _seg e_ e onese(d, n, ):
'''
INPUT: - d, a lis o deg ees o he a ious Ve onese embeddings
- n, a lis o dimensions o he a ious sou ces o he Ve onese␣
,→embeddings
- , a lis o anks
OUTPUT: he polynomials de ining he pa ame e iza ion o
he Hadama d p oduc o all he [i]-secan a ie ies o he␣
,→d[i]-Ve onese embedding o P^{n[i]}
wi h espec o he a iables x_{ijkl}, o i = 1, ... , m, o j =␣
,→1, ... , [i], o k = 1, ... , , o l = 0, ... , n[k]
whe e is he numbe o ac o s in he Seg e embedding, i.e. =␣
,→len(n), and m is he numbe o Hadama d ac o s, i.e. m = len( )
'''
=len(n)
m=len( )
N=p od([binomial(n[i]+d[i],d[i]) o iin ange( )])
a s_lis =[
[
[
[ a ('x'+s (i+1)+s (j+1)+s (k+1)+s (l)) o lin␣
,→ ange(n[k]+1)]
o kin ange( )]
o jin ange( [i])]
o iin ange(m)
]
P=PolynomialRing(QQ, [e[i][j][k] o ein a s_lis o iin ange(len(e))␣
,→ o jin ange(len(e[i])) o kin ange(len(e[i][j]))])
copies_secan _seg e_ e onese =[[P( ) o in␣
,→secan _seg e_ e onese(d, [i], a s_lis [i])] o iin ange(m)]
9