cohomology of str sheaf dodany; zaczynamy zmieniac wspolrzedne w superelliptic holo

This commit is contained in:
jgarnek 2023-02-13 17:11:13 +00:00
parent be66e7bc64
commit f683017855
5 changed files with 194 additions and 4 deletions

View File

@ -26748,4 +26748,133 @@ Input In [81], in <cell line: 1>()
]0;~/Research/2021 De Rham/DeRhamComputation~/Research/2021 De Rham/DeRhamComputation$ git add draft/supsage/drafty/superelliptic_cohomology_class.sage  ]0;~/Research/2021 De Rham/DeRhamComputation~/Research/2021 De Rham/DeRhamComputation$ git add draft/supsage/drafty/superelliptic_cohomology_class.sage 
]0;~/Research/2021 De Rham/DeRhamComputation~/Research/2021 De Rham/DeRhamComputation$ gid add -u ]0;~/Research/2021 De Rham/DeRhamComputation~/Research/2021 De Rham/DeRhamComputation$ gid add -u
bash: gid: command not found bash: gid: command not found
]0;~/Research/2021 De Rham/DeRhamComputation~/Research/2021 De Rham/DeRhamComputation$ gid add -u ]0;~/Research/2021 De Rham/DeRhamComputation~/Research/2021 De Rham/DeRhamComputation$ gid add -u[1@t
]0;~/Research/2021 De Rham/DeRhamComputation~/Research/2021 De Rham/DeRhamComputation$ git commit -m ""C"o"h"o"m"o"l"o"g"y" "o"f" "s"t"r"u"c"t"u"r"e" "s"h"e"a"f" "o"f" "s"u"p"e"r"e"l"l"i"p"t"i"c"
[master be66e7b] Cohomology of structure sheaf of superelliptic
11 files changed, 7056 insertions(+), 82 deletions(-)
delete mode 100644 sage/as_covers/as_cover/uniformizer.sage
rewrite sage/drafty/draft3.sage (90%)
create mode 100644 sage/drafty/superelliptic_cohomology_class.sage
]0;~/Research/2021 De Rham/DeRhamComputation~/Research/2021 De Rham/DeRhamComputation$ git push
Username for 'https://git.wmi.amu.edu.pl': jgarnek
Password for 'https://jgarnek@git.wmi.amu.edu.pl':
Enumerating objects: 37, done.
Counting objects: 2% (1/37) Counting objects: 5% (2/37) Counting objects: 8% (3/37) Counting objects: 10% (4/37) Counting objects: 13% (5/37) Counting objects: 16% (6/37) Counting objects: 18% (7/37) Counting objects: 21% (8/37) Counting objects: 24% (9/37) Counting objects: 27% (10/37) Counting objects: 29% (11/37) Counting objects: 32% (12/37) Counting objects: 35% (13/37) Counting objects: 37% (14/37) Counting objects: 40% (15/37) Counting objects: 43% (16/37) Counting objects: 45% (17/37) Counting objects: 48% (18/37) Counting objects: 51% (19/37) Counting objects: 54% (20/37) Counting objects: 56% (21/37) Counting objects: 59% (22/37) Counting objects: 62% (23/37) Counting objects: 64% (24/37) Counting objects: 67% (25/37) Counting objects: 70% (26/37) Counting objects: 72% (27/37) Counting objects: 75% (28/37) Counting objects: 78% (29/37) Counting objects: 81% (30/37) Counting objects: 83% (31/37) Counting objects: 86% (32/37) Counting objects: 89% (33/37) Counting objects: 91% (34/37) Counting objects: 94% (35/37) Counting objects: 97% (36/37) Counting objects: 100% (37/37) Counting objects: 100% (37/37), done.
Delta compression using up to 4 threads
Compressing objects: 4% (1/23) Compressing objects: 8% (2/23) Compressing objects: 13% (3/23) Compressing objects: 17% (4/23) Compressing objects: 21% (5/23) Compressing objects: 26% (6/23) Compressing objects: 30% (7/23) Compressing objects: 34% (8/23) Compressing objects: 39% (9/23) Compressing objects: 43% (10/23) Compressing objects: 47% (11/23) Compressing objects: 52% (12/23) Compressing objects: 56% (13/23) Compressing objects: 60% (14/23) Compressing objects: 65% (15/23) Compressing objects: 69% (16/23) Compressing objects: 73% (17/23) Compressing objects: 78% (18/23) Compressing objects: 82% (19/23) Compressing objects: 86% (20/23) Compressing objects: 91% (21/23) Compressing objects: 95% (22/23) Compressing objects: 100% (23/23) Compressing objects: 100% (23/23), done.
Writing objects: 4% (1/23) Writing objects: 8% (2/23) Writing objects: 13% (3/23) Writing objects: 17% (4/23) Writing objects: 26% (6/23) Writing objects: 34% (8/23) Writing objects: 39% (9/23) Writing objects: 43% (10/23) Writing objects: 47% (11/23) Writing objects: 52% (12/23) Writing objects: 56% (13/23) Writing objects: 60% (14/23) Writing objects: 65% (15/23) Writing objects: 69% (16/23) Writing objects: 73% (17/23) Writing objects: 78% (18/23) Writing objects: 82% (19/23) Writing objects: 86% (20/23) Writing objects: 91% (21/23) Writing objects: 95% (22/23) Writing objects: 100% (23/23) Writing objects: 100% (23/23), 73.16 KiB | 337.00 KiB/s, done.
Total 23 (delta 15), reused 0 (delta 0)
remote: . Processing 1 references
remote: Processed 1 references in total
To https://git.wmi.amu.edu.pl/jgarnek/DeRhamComputation.git
d77adde..be66e7b master -> master
]0;~/Research/2021 De Rham/DeRhamComputation~/Research/2021 De Rham/DeRhamComputation$ ]0;~/Research/2021 De Rham/DeRhamComputation/sage~/Research/2021 De Rham/DeRhamComputation/sage$ ]0;~/Research/2021 De Rham/DeRhamComputation/sage~/Research/2021 De Rham/DeRhamComputation/sage$ sage
┌────────────────────────────────────────────────────────────────────┐
│ SageMath version 9.7, Release Date: 2022-09-19 │
│ Using Python 3.10.5. Type "help()" for help. │
└────────────────────────────────────────────────────────────────────┘
]0;IPython: DeRhamComputation/sage[?2004h[?1l[?25l[?7lsage: [?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7lload('init.sage')[?7h[?12l[?25h[?25l[?7lo[?7h[?12l[?25h[?25l[?7lad('init.sage')[?7h[?12l[?25h[?25l[?7lsage: load('init.sage')
[?7h[?12l[?25h[?2004l[5]
[?2004h[?25l[?7lsage: [?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7lC.is_smooth()[?7h[?12l[?25h[?25l[?7lsage: C
[?7h[?12l[?25h[?2004l[?7hSuperelliptic curve with the equation y^4 = x^5 + x over Finite Field of size 3
[?2004h[?25l[?7lsage: [?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7lC[?7h[?12l[?25h[?25l[?7l.is_smooth()[?7h[?12l[?25h[?25l[?7lf[?7h[?12l[?25h[?25l[?7lr[?7h[?12l[?25h[?25l[?7lo[?7h[?12l[?25h[?25l[?7lbenius_matrix[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l([?7h[?12l[?25h[?25l[?7l()[?7h[?12l[?25h[?25l[?7lsage: C.frobenius_matrix()
[?7h[?12l[?25h[?2004l---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Input In [3], in <cell line: 1>()
----> 1 C.frobenius_matrix()
File <string>:163, in frobenius_matrix(self, prec)
TypeError: unsupported operand type(s) for ** or pow(): 'superelliptic_cohomology' and 'method'
[?2004h[?25l[?7lsage: [?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7lC.frobenius_matrix()[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7lload('init.sage')[?7h[?12l[?25h[?25l[?7lsage: load('init.sage')
[?7h[?12l[?25h[?2004l[?2004h[?25l[?7lsage: [?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7lC.frobenius_matrix()[?7h[?12l[?25h[?25l[?7l.[?7h[?12l[?25h[?25l[?7lf[?7h[?12l[?25h[?25l[?7lr[?7h[?12l[?25h[?25l[?7lo[?7h[?12l[?25h[?25l[?7lbenius_matrix()[?7h[?12l[?25h[?25l[?7l)[?7h[?12l[?25h[?25l[?7lp)[?7h[?12l[?25h[?25l[?7lr)[?7h[?12l[?25h[?25l[?7le)[?7h[?12l[?25h[?25l[?7lc)[?7h[?12l[?25h[?25l[?7l-)[?7h[?12l[?25h[?25l[?7l5)[?7h[?12l[?25h[?25l[?7l0)[?7h[?12l[?25h[?25l[?7l)[?7h[?12l[?25h[?25l[?7l)[?7h[?12l[?25h[?25l[?7l)[?7h[?12l[?25h[?25l[?7l-)[?7h[?12l[?25h[?25l[?7l5)[?7h[?12l[?25h[?25l[?7l)[?7h[?12l[?25h[?25l[?7l)[?7h[?12l[?25h[?25l[?7l=)[?7h[?12l[?25h[?25l[?7l5)[?7h[?12l[?25h[?25l[?7l0)[?7h[?12l[?25h[?25l[?7lsage: C.frobenius_matrix(prec=50)
[?7h[?12l[?25h[?2004l---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Input In [5], in <cell line: 1>()
----> 1 C.frobenius_matrix(prec=Integer(50))
File <string>:163, in frobenius_matrix(self, prec)
TypeError: unsupported operand type(s) for ** or pow(): 'superelliptic_cohomology' and 'method'
[?2004h[?25l[?7lsage: [?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7lload('init.sage')[?7h[?12l[?25h[?25l[?7load('init.sage')[?7h[?12l[?25h[?25l[?7lsage: load('init.sage')
[?7h[?12l[?25h[?2004l[?2004h[?25l[?7lsage: [?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7lload('init.sage')[?7h[?12l[?25h[?25l[?7lC.frobenius_matrix(prec=50)[?7h[?12l[?25h[?25l[?7lsage: C.frobenius_matrix(prec=50)
[?7h[?12l[?25h[?2004l---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
File /ext/sage/9.7/src/sage/rings/polynomial/polynomial_element.pyx:2441, in sage.rings.polynomial.polynomial_element.Polynomial.__pow__()
 2440 try:
-> 2441 right = Integer(right)
 2442 except TypeError:
File /ext/sage/9.7/src/sage/rings/integer.pyx:717, in sage.rings.integer.Integer.__init__()
 716
--> 717 raise TypeError("unable to coerce %s to an integer" % type(x))
 718
TypeError: unable to coerce <class 'method'> to an integer
During handling of the above exception, another exception occurred:
TypeError Traceback (most recent call last)
Input In [7], in <cell line: 1>()
----> 1 C.frobenius_matrix(prec=Integer(50))
File <string>:163, in frobenius_matrix(self, prec)
File <string>:71, in __pow__(self, exp)
File /ext/sage/9.7/src/sage/rings/polynomial/polynomial_element.pyx:2443, in sage.rings.polynomial.polynomial_element.Polynomial.__pow__()
 2441 right = Integer(right)
 2442 except TypeError:
-> 2443 raise TypeError("non-integral exponents not supported")
 2444
 2445 d = self.degree()
TypeError: non-integral exponents not supported
[?2004h[?25l[?7lsage: [?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l((C.x)*C.x*C.dx).cartier()[?7h[?12l[?25h[?25l[?7lC.one/[?7h[?12l[?25h[?25l[?7l.[?7h[?12l[?25h[?25l[?7lx*C.dx).cartier()[?7h[?12l[?25h[?25l[?7l()[?7h[?12l[?25h[?25l[?7l()^[?7h[?12l[?25h[?25l[?7lp[?7h[?12l[?25h[?25l[?7lsage: (C.x)^p
[?7h[?12l[?25h[?2004l[?7hx^7
[?2004h[?25l[?7lsage: [?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7lC.frobenius_matrix(prec=50)[?7h[?12l[?25h[?25l[?7lsage: C
[?7h[?12l[?25h[?2004l[?7hSuperelliptic curve with the equation y^4 = x^5 + x over Finite Field of size 3
[?2004h[?25l[?7lsage: [?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7lprint(len(lista))[?7h[?12l[?25h[?25l[?7lsage: p
[?7h[?12l[?25h[?2004l[?7h7
[?2004h[?25l[?7lsage: [?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7lload('init.sage')[?7h[?12l[?25h[?25l[?7lo[?7h[?12l[?25h[?25l[?7lad('init.sage')[?7h[?12l[?25h[?25l[?7lsage: load('init.sage')
[?7h[?12l[?25h[?2004l[?2004h[?25l[?7lsage: [?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7lC[?7h[?12l[?25h[?25l[?7l.frobenius_matrix(prec=50)[?7h[?12l[?25h[?25l[?7lfrobenius_matrix(prec=50)[?7h[?12l[?25h[?25l[?7lsage: C.frobenius_matrix(prec=50)
[?7h[?12l[?25h[?2004l[?7h[0 0 0 0 0 1]
[0 0 1 0 0 0]
[0 1 0 0 0 0]
[1 0 0 0 0 0]
[0 0 0 0 0 0]
[0 0 0 0 0 0]
[?2004h[?25l[?7lsage: [?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7lC.frobenius_matrix(prec=50)[?7h[?12l[?25h[?25l[?7l.[?7h[?12l[?25h[?25l[?7ldx.cartier()[?7h[?12l[?25h[?25l[?7le_rham_basis()[?7h[?12l[?25h[?25l[?7l_rham_basis()[?7h[?12l[?25h[?25l[?7l([?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7lb[?7h[?12l[?25h[?25l[?7la[?7h[?12l[?25h[?25l[?7ls[?7h[?12l[?25h[?25l[?7li[?7h[?12l[?25h[?25l[?7lsage: C.basis_
 C.basis_de_rham_degrees 
 C.basis_holomorphic_differentials_degree
 C.basis_of_cohomology 
 [?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7lde_rham_degrees
 C.basis_de_rham_degrees 
 <unknown> [?7h[?12l[?25h[?25l[?7lholomorphic_differentials_degree
 C.basis_de_rham_degrees 
 C.basis_holomorphic_differentials_degree[?7h[?12l[?25h[?25l[?7lof_cohomology
 C.basis_holomorphic_differentials_degree
 C.basis_of_cohomology [?7h[?12l[?25h[?25l[?7l



[?7h[?12l[?25h[?25l[?7l([?7h[?12l[?25h[?25l[?7l()[?7h[?12l[?25h[?25l[?7lsage: C.basis_of_cohomology()
[?7h[?12l[?25h[?2004l[?7h[1/x*y, 1/x*y^2, 1/x^2*y^2, 1/x*y^3, 1/x^2*y^3, 1/x^3*y^3]
[?2004h[?25l[?7lsage: [?7h[?12l[?25h[?25l[?7lsage: 
 [?7h[?12l[?25h[?25l[?7lC.basis_of_cohomology()[?7h[?12l[?25h[?25l[?7l()[[?7h[?12l[?25h[?25l[?7l0[?7h[?12l[?25h[?25l[?7l[][?7h[?12l[?25h[?25l[?7l[].[?7h[?12l[?25h[?25l[?7l[][?7h[?12l[?25h[?25l[?7l[]^[?7h[?12l[?25h[?25l[?7l[[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7lp[?7h[?12l[?25h[?25l[?7l)[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[][?7h[?12l[?25h[?25l[?7l[][?7h[?12l[?25h[?25l[?7l()[?7h[?12l[?25h[?25l[?7l()[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l(C.basis_of_cohomology()[0]^p)[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l()[?7h[?12l[?25h[?25l[?7l()[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l()[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7l().[?7h[?12l[?25h[?25l[?7lc[?7h[?12l[?25h[?25l[?7lo[?7h[?12l[?25h[?25l[?7lo[?7h[?12l[?25h[?25l[?7lr[?7h[?12l[?25h[?25l[?7ld[?7h[?12l[?25h[?25l[?7li[?7h[?12l[?25h[?25l[?7ln[?7h[?12l[?25h[?25l[?7la[?7h[?12l[?25h[?25l[?7lt[?7h[?12l[?25h[?25l[?7le[?7h[?12l[?25h[?25l[?7ls[?7h[?12l[?25h[?25l[?7l([?7h[?12l[?25h[?25l[?7l()[?7h[?12l[?25h[?25l[?7lsage: (C.basis_of_cohomology()[0]^p).coordinates()
[?7h[?12l[?25h[?2004l[?7h[0, 0, 0, 0, 1, 0]
[?2004h[?25l[?7lsage: [?7h[?12l[?25h[?25l[?7lsage: 
 [?7h[?12l[?25h[?25l[?7lp[?7h[?12l[?25h[?25l[?7lsage: p
[?7h[?12l[?25h[?2004l[?7h7
[?2004h[?25l[?7lsage: [?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7lC.basis_of_cohomology()[?7h[?12l[?25h[?25l[?7lsage: C
[?7h[?12l[?25h[?2004l[?7hSuperelliptic curve with the equation y^4 = x^5 + x over Finite Field of size 3
[?2004h[?25l[?7lsage: [?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7lp[?7h[?12l[?25h[?25l[?7l = 5[?7h[?12l[?25h[?25l[?7l=[?7h[?12l[?25h[?25l[?7l [?7h[?12l[?25h[?25l[?7l3[?7h[?12l[?25h[?25l[?7lsage: p = 3
[?7h[?12l[?25h[?2004l[?2004h[?25l[?7lsage: [?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7lp = 3[?7h[?12l[?25h[?25l[?7lC[?7h[?12l[?25h[?25l[?7lp[?7h[?12l[?25h[?25l[?7l(C.basis_of_cohomology()[0]^p).coordinates()[?7h[?12l[?25h[?25l[?7lsage: (C.basis_of_cohomology()[0]^p).coordinates()
[?7h[?12l[?25h[?2004l[?7h[0, 0, 0, 0, 0, 1]
[?2004h[?25l[?7lsage: [?7h[?12l[?25h[?25l[?7l[?7h[?12l[?25h[?25l[?7lq = 5[?7h[?12l[?25h

View File

@ -18,7 +18,7 @@ load('auxilliaries/linear_combination_polynomials.sage')
############## ##############
############## ##############
load('drafty/lift_to_de_rham.sage') load('drafty/lift_to_de_rham.sage')
load('drafty/superelliptic_cohomology_class.sage') #load('drafty/superelliptic_cohomology_class.sage')
load('drafty/draft5.sage') load('drafty/draft5.sage')
load('drafty/pole_numbers.sage') load('drafty/pole_numbers.sage')
#load('drafty/draft4.sage') #load('drafty/draft4.sage')

View File

@ -12,6 +12,7 @@ class superelliptic:
self.exponent = m self.exponent = m
self.base_ring = F self.base_ring = F
self.characteristic = F.characteristic() self.characteristic = F.characteristic()
self.fct_field = RxyzQ, Rxyz, x, y, z
r = Rx(f).degree() r = Rx(f).degree()
delta = GCD(r, m) delta = GCD(r, m)
self.nb_of_pts_at_infty = delta self.nb_of_pts_at_infty = delta
@ -26,6 +27,19 @@ class superelliptic:
F = self.base_ring F = self.base_ring
return 'Superelliptic curve with the equation y^' + str(m) + ' = ' + str(f)+' over ' + str(F) return 'Superelliptic curve with the equation y^' + str(m) + ' = ' + str(f)+' over ' + str(F)
def coordinates2(self, basis = 0):
"""Find coordinates of the given holomorphic form self in terms of the basis forms in a list holo."""
C = self.curve
if basis == 0:
basis = C.holomorphic_differentials_basis()
RxyzQ, Rxyz, x, y, z = C.fct_field
# We need to have only polynomials to use monomial_coefficients in linear_representation_polynomials,
# and sometimes basis elements have denominators. Thus we multiply by them.
denom = LCM([denominator(omega.form) for omega in basis])
basis = [denom*omega for omega in basis]
self_with_no_denominator = denom*self
return linear_representation_polynomials(Rxyz(self_with_no_denominator.form), [Rxyz(omega.form) for omega in basis])
#Auxilliary algorithm that returns the basis of holomorphic differentials #Auxilliary algorithm that returns the basis of holomorphic differentials
#of the curve and (as a second argument) the list of pairs (i, j) #of the curve and (as a second argument) the list of pairs (i, j)
#such that x^i dx/y^j is holomorphic. #such that x^i dx/y^j is holomorphic.
@ -128,7 +142,7 @@ class superelliptic:
M[i, :] = v M[i, :] = v
return M return M
def frobenius_matrix(self): def dr_frobenius_matrix(self):
basis = self.de_rham_basis() basis = self.de_rham_basis()
g = self.genus() g = self.genus()
p = self.characteristic p = self.characteristic
@ -153,6 +167,16 @@ class superelliptic:
M[i, :] = v M[i, :] = v
return M return M
def frobenius_matrix(self, prec=20):
g = self.genus()
F = self.base_ring
p = F.characteristic()
M = matrix(F, g, g)
for i, f in enumerate(self.basis_of_cohomology()):
M[i, :] = vector((f^p).coordinates(prec=prec))
M = M.transpose()
return M
# def p_rank(self): # def p_rank(self):
# return self.cartier_matrix().rank() # return self.cartier_matrix().rank()
@ -166,6 +190,23 @@ class superelliptic:
p = self.characteristic p = self.characteristic
return flag(Fr, V, p, test) return flag(Fr, V, p, test)
def basis_of_cohomology(self):
'''Basis of cohomology of structure sheaf H1(X, OX).'''
m = self.exponent
f = self.polynomial
r = f.degree()
F = self.base_ring
delta = self.nb_of_pts_at_infty
Rx.<x> = PolynomialRing(F)
Rxy.<x, y> = PolynomialRing(F, 2)
Fxy = FractionField(Rxy)
basis = []
for j in range(1, m):
for i in range(1, r):
if (r*j - m*i >= delta):
basis += [superelliptic_function(self, Fxy(m*y^(j)/x^i))]
return basis
#Auxilliary. Given a superelliptic curve C : y^m = f(x) and a polynomial g(x, y) #Auxilliary. Given a superelliptic curve C : y^m = f(x) and a polynomial g(x, y)
#it replaces repeteadly all y^m's in g(x, y) by f(x). As a result #it replaces repeteadly all y^m's in g(x, y) by f(x). As a result
#you obtain \sum_{i = 0}^{m-1} y^i g_i(x). #you obtain \sum_{i = 0}^{m-1} y^i g_i(x).

View File

@ -54,6 +54,14 @@ class superelliptic_form:
result += superelliptic_form(C, polynomial_part(p, h)/(f^B*y^(j1))) result += superelliptic_form(C, polynomial_part(p, h)/(f^B*y^(j1)))
return result return result
def serre_duality_pairing(self, fct, prec=20):
result = 0
C = self.curve
delta = C.nb_of_pts_at_infty
for i in range(delta):
result += (fct*self).expansion_at_infty(place=i, prec=prec)[-1]
return -result
def coordinates(self): def coordinates(self):
C = self.curve C = self.curve
F = C.base_ring F = C.base_ring

View File

@ -83,6 +83,18 @@ class superelliptic_function:
B = g.derivative(y)*f.derivative(x)/(m*y^(m-1)) B = g.derivative(y)*f.derivative(x)/(m*y^(m-1))
return superelliptic_form(C, A+B) return superelliptic_form(C, A+B)
def coordinates(self, basis = 0, basis_holo = 0, prec=20):
'''Find coordinates in H1(X, OX) in given basis basis with dual basis basis_holo.'''
C = self.curve
if basis == 0:
basis = basis_of_cohomology(C)
if basis_holo == 0:
basis_holo = C.holomorphic_differentials_basis()
g = C.genus()
coordinates = g*[0]
for i, omega in enumerate(basis_holo):
coordinates[i] = omega.serre_duality_pairing(self, prec=prec)
return coordinates
def expansion_at_infty(self, place = 0, prec=10): def expansion_at_infty(self, place = 0, prec=10):
C = self.curve C = self.curve