diff --git a/sage/.run.term-0.term b/sage/.run.term-0.term
index 8ec445d..c885a45 100644
--- a/sage/.run.term-0.term
+++ b/sage/.run.term-0.term
@@ -26748,4 +26748,133 @@ Input [0;32mIn [81][0m, in [0;36m<cell line: 1>[0;34m()[0m
 ]0;~/Research/2021 De Rham/DeRhamComputation[01;34m~/Research/2021 De Rham/DeRhamComputation[00m$ git add draft/sup[K[K[K[K[K[K[K[K[Ksage/drafty/superelliptic_cohomology_class.sage [K
 ]0;~/Research/2021 De Rham/DeRhamComputation[01;34m~/Research/2021 De Rham/DeRhamComputation[00m$ gid add -u
 bash: gid: command not found
-]0;~/Research/2021 De Rham/DeRhamComputation[01;34m~/Research/2021 De Rham/DeRhamComputation[00m$ gid add -u[C[C
\ No newline at end of file
+]0;~/Research/2021 De Rham/DeRhamComputation[01;34m~/Research/2021 De Rham/DeRhamComputation[00m$ gid add -u[C[C[1P[1@t
+]0;~/Research/2021 De Rham/DeRhamComputation[01;34m~/Research/2021 De Rham/DeRhamComputation[00m$ 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[01;34m~/Research/2021 De Rham/DeRhamComputation[00m$ 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[K
+remote: Processed 1 references in total[K
+To https://git.wmi.amu.edu.pl/jgarnek/DeRhamComputation.git
+   d77adde..be66e7b  master -> master
+]0;~/Research/2021 De Rham/DeRhamComputation[01;34m~/Research/2021 De Rham/DeRhamComputation[00m$ ]0;~/Research/2021 De Rham/DeRhamComputation/sage[01;34m~/Research/2021 De Rham/DeRhamComputation/sage[00m$ 
[K]0;~/Research/2021 De Rham/DeRhamComputation/sage[01;34m~/Research/2021 De Rham/DeRhamComputation/sage[00m$ sage
+┌────────────────────────────────────────────────────────────────────┐
+│ SageMath version 9.7, Release Date: 2022-09-19                     │
+│ Using Python 3.10.5. Type "help()" for help.                       │
+└────────────────────────────────────────────────────────────────────┘
+[22;0t]0;IPython: DeRhamComputation/sage[6n[?2004h[?1l[?25l[0m[?7l[0m[J[0;94msage: [6D[6C[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[0ml[0;38;5;241moad('init.sage')[16D[?7h[0m[?12l[?25h[?25l[?7l[0mo[?7h[0m[?12l[?25h[?25l[?7l[0mad[0;38;5;16;48;5;152m([0;38;5;160;48;5;231m'init.sage'[0;38;5;16;48;5;152m)[?7h[0m[?12l[?25h[?25l[?7l[23D[0m[J[0;94msage: [0mload([0;38;5;160;48;5;231m'init.sage'[0m)[23D[0m

+[J[?7h[0m[?12l[?25h[?2004l[5]
+[6n[?2004h[?25l[0m[?7l[0m[J[0;94msage: [6D[6C[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[0mC[0;38;5;241m.is_smooth()[12D[?7h[0m[?12l[?25h[?25l[?7l[7D[0m[J[0;94msage: [0mC[7D[0m

+[J[?7h[0m[?12l[?25h[?2004l[0m[?7h[0;91m[0m[0mSuperelliptic curve with the equation y^4 = x^5 + x over Finite Field of size 3
+[6n[?2004h[?25l[0m[?7l[0m[J[0;94msage: [6D[6C[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[0mC[?7h[0m[?12l[?25h[?25l[?7l[0m.[0;38;5;241mis_smooth()[11D[?7h[0m[?12l[?25h[?25l[?7l[0mf[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0mr[?7h[0m[?12l[?25h[?25l[?7l[0mo[?7h[0m[?12l[?25h[?25l[?7l[0mbenius_matrix[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[0m([?7h[0m[?12l[?25h[?25l[?7l[0;38;5;16;48;5;152m()[?7h[0m[?12l[?25h[?25l[?7l[26D[0m[J[0;94msage: [0mC.frobenius_matrix()[26D[0m

+[J[?7h[0m[?12l[?25h[?2004l[0;31m---------------------------------------------------------------------------[0m
+[0;31mTypeError[0m                                 Traceback (most recent call last)
+Input [0;32mIn [3][0m, in [0;36m<cell line: 1>[0;34m()[0m
+[0;32m----> 1[0m [43mC[49m[38;5;241;43m.[39;49m[43mfrobenius_matrix[49m[43m([49m[43m)[49m
+
+File [0;32m<string>:163[0m, in [0;36mfrobenius_matrix[0;34m(self, prec)[0m
+
+[0;31mTypeError[0m: unsupported operand type(s) for ** or pow(): 'superelliptic_cohomology' and 'method'
+[6n[?2004h[?25l[0m[?7l[0m[J[0;94msage: [6D[6C[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[0mC.frobenius_matrix[0;38;5;16;48;5;152m()[?7h[0m[?12l[?25h[?25l[?7l[19D[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0mload[0;38;5;16;48;5;152m([0;38;5;160;48;5;231m'init.sage'[0;38;5;16;48;5;152m)[?7h[0m[?12l[?25h[?25l[?7l[23D[0m[J[0;94msage: [0mload([0;38;5;160;48;5;231m'init.sage'[0m)[23D[0m

+[J[?7h[0m[?12l[?25h[?2004l[6n[?2004h[?25l[0m[?7l[0m[J[0;94msage: [6D[6C[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[0mC[0;38;5;241m.frobenius_matrix()[19D[?7h[0m[?12l[?25h[?25l[?7l[0m.[?7h[0m[?12l[?25h[?25l[?7l[0mf[?7h[0m[?12l[?25h[?25l[?7l[0mr[?7h[0m[?12l[?25h[?25l[?7l[0mo[?7h[0m[?12l[?25h[?25l[?7l[0mbenius_matrix[0;38;5;16;48;5;152m()[?7h[0m[?12l[?25h[?25l[?7l[0;38;5;210;48;5;88m)[?7h[0m[?12l[?25h[?25l[?7l[0mp[0;38;5;210;48;5;88m)[?7h[0m[?12l[?25h[?25l[?7l[0mr[0;38;5;210;48;5;88m)[?7h[0m[?12l[?25h[?25l[?7l[0me[0;38;5;210;48;5;88m)[?7h[0m[?12l[?25h[?25l[?7l[0mc[0;38;5;210;48;5;88m)[?7h[0m[?12l[?25h[?25l[?7l[0m-[0;38;5;210;48;5;88m)[?7h[0m[?12l[?25h[?25l[?7l[0;38;5;20;1m5[0;38;5;210;48;5;88m)[?7h[0m[?12l[?25h[?25l[?7l[0;38;5;20;1m0[0;38;5;210;48;5;88m)[?7h[0m[?12l[?25h[?25l[?7l[0;38;5;210;48;5;88m)[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0;38;5;210;48;5;88m)[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0;38;5;210;48;5;88m)[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0m-[0;38;5;210;48;5;88m)[?7h[0m[?12l[?25h[?25l[?7l[0;38;5;20;1m5[0;38;5;210;48;5;88m)[?7h[0m[?12l[?25h[?25l[?7l[0;38;5;210;48;5;88m)[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0;38;5;210;48;5;88m)[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0m=[0;38;5;210;48;5;88m)[?7h[0m[?12l[?25h[?25l[?7l[0;38;5;20;1m5[0;38;5;210;48;5;88m)[?7h[0m[?12l[?25h[?25l[?7l[0;38;5;20;1m0[0;38;5;210;48;5;88m)[?7h[0m[?12l[?25h[?25l[?7l[32D[0m[J[0;94msage: [0mC.frobenius_matrix(prec=[0;38;5;20;1m50[0m)[33D[0m

+[J[?7h[0m[?12l[?25h[?2004l[0;31m---------------------------------------------------------------------------[0m
+[0;31mTypeError[0m                                 Traceback (most recent call last)
+Input [0;32mIn [5][0m, in [0;36m<cell line: 1>[0;34m()[0m
+[0;32m----> 1[0m [43mC[49m[38;5;241;43m.[39;49m[43mfrobenius_matrix[49m[43m([49m[43mprec[49m[38;5;241;43m=[39;49m[43mInteger[49m[43m([49m[38;5;241;43m50[39;49m[43m)[49m[43m)[49m
+
+File [0;32m<string>:163[0m, in [0;36mfrobenius_matrix[0;34m(self, prec)[0m
+
+[0;31mTypeError[0m: unsupported operand type(s) for ** or pow(): 'superelliptic_cohomology' and 'method'
+[6n[?2004h[?25l[0m[?7l[0m[J[0;94msage: [6D[6C[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[0ml[0;38;5;241moad('init.sage')[16D[?7h[0m[?12l[?25h[?25l[?7l[0moad[0;38;5;16;48;5;152m([0;38;5;160;48;5;231m'init.sage'[0;38;5;16;48;5;152m)[?7h[0m[?12l[?25h[?25l[?7l[23D[0m[J[0;94msage: [0mload([0;38;5;160;48;5;231m'init.sage'[0m)[23D[0m

+[J[?7h[0m[?12l[?25h[?2004l[6n[?2004h[?25l[0m[?7l[0m[J[0;94msage: [6D[6C[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[0mload[0;38;5;16;48;5;152m([0;38;5;160;48;5;231m'init.sage'[0;38;5;16;48;5;152m)[?7h[0m[?12l[?25h[?25l[?7l[17D[0mC.frobenius_matrix[0;38;5;16;48;5;152m([0mprec=[0;38;5;20;1m50[0;38;5;16;48;5;152m)[?7h[0m[?12l[?25h[?25l[?7l[33D[0m[J[0;94msage: [0mC.frobenius_matrix(prec=[0;38;5;20;1m50[0m)[33D[0m

+[J[?7h[0m[?12l[?25h[?2004l[0;31m---------------------------------------------------------------------------[0m
+[0;31mTypeError[0m                                 Traceback (most recent call last)
+File [0;32m/ext/sage/9.7/src/sage/rings/polynomial/polynomial_element.pyx:2441[0m, in [0;36msage.rings.polynomial.polynomial_element.Polynomial.__pow__[0;34m()[0m
+[1;32m   2440[0m try:
+[0;32m-> 2441[0m     right = Integer(right)
+[1;32m   2442[0m except TypeError:
+
+File [0;32m/ext/sage/9.7/src/sage/rings/integer.pyx:717[0m, in [0;36msage.rings.integer.Integer.__init__[0;34m()[0m
+[1;32m    716[0m 
+[0;32m--> 717[0m                 raise TypeError("unable to coerce %s to an integer" % type(x))
+[1;32m    718[0m 
+
+[0;31mTypeError[0m: unable to coerce <class 'method'> to an integer
+
+During handling of the above exception, another exception occurred:
+
+[0;31mTypeError[0m                                 Traceback (most recent call last)
+Input [0;32mIn [7][0m, in [0;36m<cell line: 1>[0;34m()[0m
+[0;32m----> 1[0m [43mC[49m[38;5;241;43m.[39;49m[43mfrobenius_matrix[49m[43m([49m[43mprec[49m[38;5;241;43m=[39;49m[43mInteger[49m[43m([49m[38;5;241;43m50[39;49m[43m)[49m[43m)[49m
+
+File [0;32m<string>:163[0m, in [0;36mfrobenius_matrix[0;34m(self, prec)[0m
+
+File [0;32m<string>:71[0m, in [0;36m__pow__[0;34m(self, exp)[0m
+
+File [0;32m/ext/sage/9.7/src/sage/rings/polynomial/polynomial_element.pyx:2443[0m, in [0;36msage.rings.polynomial.polynomial_element.Polynomial.__pow__[0;34m()[0m
+[1;32m   2441[0m         right = Integer(right)
+[1;32m   2442[0m     except TypeError:
+[0;32m-> 2443[0m         raise TypeError("non-integral exponents not supported")
+[1;32m   2444[0m 
+[1;32m   2445[0m d = self.degree()
+
+[0;31mTypeError[0m: non-integral exponents not supported
+[6n[?2004h[?25l[0m[?7l[0m[J[0;94msage: [6D[6C[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[0m([0;38;5;241m(C.x)*C.x*C.dx).cartier()[25D[?7h[0m[?12l[?25h[?25l[?7l[0mC[0;38;5;241m.one/[5D[?7h[0m[?12l[?25h[?25l[?7l[0m.[?7h[0m[?12l[?25h[?25l[?7l[0mx[0;38;5;241m*C.dx).cartier()[0m[K[16D[?7h[0m[?12l[?25h[?25l[?7l[4D[0;38;5;16;48;5;152m([3C)[0m[K[?7h[0m[?12l[?25h[?25l[?7l[5D[0m([3C)^[?7h[0m[?12l[?25h[?25l[?7l[0mp[?7h[0m[?12l[?25h[?25l[?7l[13D[0m[J[0;94msage: [0m(C.x)^p[13D[0m

+[J[?7h[0m[?12l[?25h[?2004l[0m[?7h[0;91m[0m[0mx^7
+[6n[?2004h[?25l[0m[?7l[0m[J[0;94msage: [6D[6C[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[0mC[0;38;5;241m.frobenius_matrix(prec=50)[26D[?7h[0m[?12l[?25h[?25l[?7l[7D[0m[J[0;94msage: [0mC[7D[0m

+[J[?7h[0m[?12l[?25h[?2004l[0m[?7h[0;91m[0m[0mSuperelliptic curve with the equation y^4 = x^5 + x over Finite Field of size 3
+[6n[?2004h[?25l[0m[?7l[0m[J[0;94msage: [6D[6C[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[0mp[0;38;5;241mrint(len(lista))[16D[?7h[0m[?12l[?25h[?25l[?7l[7D[0m[J[0;94msage: [0mp[7D[0m

+[J[?7h[0m[?12l[?25h[?2004l[0m[?7h[0;91m[0m[0m7
+[6n[?2004h[?25l[0m[?7l[0m[J[0;94msage: [6D[6C[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[0ml[0;38;5;241moad('init.sage')[16D[?7h[0m[?12l[?25h[?25l[?7l[0mo[?7h[0m[?12l[?25h[?25l[?7l[0mad[0;38;5;16;48;5;152m([0;38;5;160;48;5;231m'init.sage'[0;38;5;16;48;5;152m)[?7h[0m[?12l[?25h[?25l[?7l[23D[0m[J[0;94msage: [0mload([0;38;5;160;48;5;231m'init.sage'[0m)[23D[0m

+[J[?7h[0m[?12l[?25h[?2004l[6n[?2004h[?25l[0m[?7l[0m[J[0;94msage: [6D[6C[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[0mC[?7h[0m[?12l[?25h[?25l[?7l[0m.[0;38;5;241mfrobenius_matrix(prec=50)[25D[?7h[0m[?12l[?25h[?25l[?7l[0mfrobenius_matrix[0;38;5;16;48;5;152m([0mprec=[0;38;5;20;1m50[0;38;5;16;48;5;152m)[?7h[0m[?12l[?25h[?25l[?7l[33D[0m[J[0;94msage: [0mC.frobenius_matrix(prec=[0;38;5;20;1m50[0m)[33D[0m

+[J[?7h[0m[?12l[?25h[?2004l[0m[?7h[0;91m[0m[0m[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]
+[6n[?2004h[?25l[0m[?7l[0m[J[0;94msage: [6D[6C[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[0mC[0;38;5;241m.frobenius_matrix(prec=50)[26D[?7h[0m[?12l[?25h[?25l[?7l[0m.[?7h[0m[?12l[?25h[?25l[?7l[0md[0;38;5;241mx.cartier()[0m[K[11D[?7h[0m[?12l[?25h[?25l[?7l[0me[0;38;5;241m_rham_basis()[13D[?7h[0m[?12l[?25h[?25l[?7l[0m_rham_basis[0;38;5;16;48;5;152m()[?7h[0m[?12l[?25h[?25l[?7l[2D[0m([0m[K[?7h[0m[?12l[?25h[?25l[?7l[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0mb[?7h[0m[?12l[?25h[?25l[?7l[0ma[?7h[0m[?12l[?25h[?25l[?7l[0ms[?7h[0m[?12l[?25h[?25l[?7l[0mi[?7h[0m[?12l[?25h[?25l[?7l[12D[0;94msage: [0mC.basis_[0m

+[14C[0;38;5;16;48;5;250m C.basis_de_rham_degrees                 [0m

+[14C[0;38;5;16;48;5;250m C.basis_holomorphic_differentials_degree[0m

+[14C[0;38;5;16;48;5;250m C.basis_of_cohomology                   [0m

+

+[0m [5A[14C[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[0mde_rham_degrees[0m

+[14C[0;38;5;231;48;5;102m C.basis_de_rham_degrees                 [0m

+

+

+[14C[0;38;5;16;48;5;248m <unknown> [4A[4C[?7h[0m[?12l[?25h[?25l[?7l[15D[0mholomorphic_differentials_degree[0m

+[14C[0;38;5;16;48;5;250m C.basis_de_rham_degrees                 [0m

+[14C[0;38;5;231;48;5;102m C.basis_holomorphic_differentials_degree[2A[9D[?7h[0m[?12l[?25h[?25l[?7l[32D[0mof_cohomology[0m[K[0m

+

+[14C[0;38;5;16;48;5;250m C.basis_holomorphic_differentials_degree[0m

+[14C[0;38;5;231;48;5;102m C.basis_of_cohomology                   [3A[28D[?7h[0m[?12l[?25h[?25l[?7l[0m

+[C[0m[K[0m

+[C[0m[K[0m

+[C[0m[K[0m

+[C[0m[K[4A[26C[?7h[0m[?12l[?25h[?25l[?7l[0m([?7h[0m[?12l[?25h[?25l[?7l[0;38;5;16;48;5;152m()[?7h[0m[?12l[?25h[?25l[?7l[29D[0m[J[0;94msage: [0mC.basis_of_cohomology()[29D[0m

+[J[?7h[0m[?12l[?25h[?2004l[0m[?7h[0;91m[0m[0m[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]
+[6n[?2004h[?25l[0m[?7l[0m[J[0;94msage: [6D[6C[?7h[0m[?12l[?25h[?25l[?7l[6D[0;94msage: [0m

+

+

+[0m [3A[6C[?7h[0m[?12l[?25h[?25l[?7l[0mC.basis_of_cohomology[0;38;5;16;48;5;152m()[?7h[0m[?12l[?25h[?25l[?7l[2D[0m()[[?7h[0m[?12l[?25h[?25l[?7l[0;38;5;20;1m0[?7h[0m[?12l[?25h[?25l[?7l[2D[0;38;5;16;48;5;152m[[C][?7h[0m[?12l[?25h[?25l[?7l[3D[0m[[C].[?7h[0m[?12l[?25h[?25l[?7l[4D[0;38;5;16;48;5;152m[[C][0m[K[?7h[0m[?12l[?25h[?25l[?7l[3D[0m[[C]^[?7h[0m[?12l[?25h[?25l[?7l[0m[[?7h[0m[?12l[?25h[?25l[?7l[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0mp[?7h[0m[?12l[?25h[?25l[?7l[0m)[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[4D[0;38;5;16;48;5;152m[[C[0;38;5;210;48;5;88m][?7h[0m[?12l[?25h[?25l[?7l[2D[0m[[C][2D[?7h[0m[?12l[?25h[?25l[?7l[3D[0;38;5;210;48;5;88m([0;38;5;16;48;5;152m)[2D[?7h[0m[?12l[?25h[?25l[?7l[0m()[21D[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[0m(C.basis_of_cohomology()[[0;38;5;20;1m0[0m]^p)[29D[?7h[0m[?12l[?25h[?25l[?7l[2C[?7h[0m[?12l[?25h[?25l[?7l[19C[0;38;5;210;48;5;88m([0;38;5;16;48;5;152m)[2D[?7h[0m[?12l[?25h[?25l[?7l[0m()[C[?7h[0m[?12l[?25h[?25l[?7l[3C[?7h[0m[?12l[?25h[?25l[?7l[28D[0;38;5;16;48;5;152m([28C)[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[30D[0m([28C).[?7h[0m[?12l[?25h[?25l[?7l[0mc[?7h[0m[?12l[?25h[?25l[?7l[0mo[?7h[0m[?12l[?25h[?25l[?7l[0mo[?7h[0m[?12l[?25h[?25l[?7l[0mr[?7h[0m[?12l[?25h[?25l[?7l[0md[?7h[0m[?12l[?25h[?25l[?7l[0mi[?7h[0m[?12l[?25h[?25l[?7l[0mn[?7h[0m[?12l[?25h[?25l[?7l[0ma[?7h[0m[?12l[?25h[?25l[?7l[0mt[?7h[0m[?12l[?25h[?25l[?7l[0me[?7h[0m[?12l[?25h[?25l[?7l[0ms[?7h[0m[?12l[?25h[?25l[?7l[0m([?7h[0m[?12l[?25h[?25l[?7l[0;38;5;16;48;5;152m()[?7h[0m[?12l[?25h[?25l[?7l[50D[0m[J[0;94msage: [0m(C.basis_of_cohomology()[[0;38;5;20;1m0[0m]^p).coordinates()[50D[0m

+[J[?7h[0m[?12l[?25h[?2004l[0m[?7h[0;91m[0m[0m[0, 0, 0, 0, 1, 0]
+[6n[?2004h[?25l[0m[?7l[0m[J[0;94msage: [6D[6C[?7h[0m[?12l[?25h[?25l[?7l[6D[0;94msage: [0m

+[0m [A[6C[?7h[0m[?12l[?25h[?25l[?7l[0mp[?7h[0m[?12l[?25h[?25l[?7l[7D[0m[J[0;94msage: [0mp[7D[0m

+[J[?7h[0m[?12l[?25h[?2004l[0m[?7h[0;91m[0m[0m7
+[6n[?2004h[?25l[0m[?7l[0m[J[0;94msage: [6D[6C[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[0mC[0;38;5;241m.basis_of_cohomology()[22D[?7h[0m[?12l[?25h[?25l[?7l[7D[0m[J[0;94msage: [0mC[7D[0m

+[J[?7h[0m[?12l[?25h[?2004l[0m[?7h[0;91m[0m[0mSuperelliptic curve with the equation y^4 = x^5 + x over Finite Field of size 3
+[6n[?2004h[?25l[0m[?7l[0m[J[0;94msage: [6D[6C[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[0mp[?7h[0m[?12l[?25h[?25l[?7l[0m [0;38;5;241m= 5[3D[?7h[0m[?12l[?25h[?25l[?7l[0m=[?7h[0m[?12l[?25h[?25l[?7l[0m [?7h[0m[?12l[?25h[?25l[?7l[0;38;5;20;1m3[?7h[0m[?12l[?25h[?25l[?7l[11D[0m[J[0;94msage: [0mp = [0;38;5;20;1m3[11D[0m

+[J[?7h[0m[?12l[?25h[?2004l[6n[?2004h[?25l[0m[?7l[0m[J[0;94msage: [6D[6C[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[0mp = [0;38;5;20;1m3[?7h[0m[?12l[?25h[?25l[?7l[5D[0mC[0m[K[?7h[0m[?12l[?25h[?25l[?7l[0mp[?7h[0m[?12l[?25h[?25l[?7l[0m(C.basis_of_cohomology()[[0;38;5;20;1m0[0m]^p).coordinates[0;38;5;16;48;5;152m()[?7h[0m[?12l[?25h[?25l[?7l[50D[0m[J[0;94msage: [0m(C.basis_of_cohomology()[[0;38;5;20;1m0[0m]^p).coordinates()[50D[0m

+[J[?7h[0m[?12l[?25h[?2004l[0m[?7h[0;91m[0m[0m[0, 0, 0, 0, 0, 1]
+[6n[?2004h[?25l[0m[?7l[0m[J[0;94msage: [6D[6C[?7h[0m[?12l[?25h[?25l[?7l[?7h[0m[?12l[?25h[?25l[?7l[0mq[0;38;5;241m = 5[4D[?7h[0m[?12l[?25h
\ No newline at end of file
diff --git a/sage/init.sage b/sage/init.sage
index d56179a..0143cbe 100644
--- a/sage/init.sage
+++ b/sage/init.sage
@@ -18,7 +18,7 @@ load('auxilliaries/linear_combination_polynomials.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/pole_numbers.sage')
 #load('drafty/draft4.sage')
\ No newline at end of file
diff --git a/sage/superelliptic/superelliptic_class.sage b/sage/superelliptic/superelliptic_class.sage
index 7c6fe71..2183ee4 100644
--- a/sage/superelliptic/superelliptic_class.sage
+++ b/sage/superelliptic/superelliptic_class.sage
@@ -12,6 +12,7 @@ class superelliptic:
         self.exponent = m
         self.base_ring = F
         self.characteristic = F.characteristic()
+        self.fct_field = RxyzQ, Rxyz, x, y, z
         r = Rx(f).degree()
         delta = GCD(r, m)
         self.nb_of_pts_at_infty = delta
@@ -26,6 +27,19 @@ class superelliptic:
         F = self.base_ring
         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
     #of the curve and (as a second argument) the list of pairs (i, j)
     #such that x^i dx/y^j is holomorphic.
@@ -128,7 +142,7 @@ class superelliptic:
             M[i, :] = v
         return M
     
-    def frobenius_matrix(self):
+    def dr_frobenius_matrix(self):
         basis = self.de_rham_basis()
         g = self.genus()
         p = self.characteristic
@@ -153,6 +167,16 @@ class superelliptic:
             M[i, :] = v
         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):
 #        return self.cartier_matrix().rank()
     
@@ -165,6 +189,23 @@ class superelliptic:
         V = self.verschiebung_matrix()
         p = self.characteristic
         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)
 #it replaces repeteadly all y^m's in g(x, y) by f(x). As a result
diff --git a/sage/superelliptic/superelliptic_form_class.sage b/sage/superelliptic/superelliptic_form_class.sage
index e5de107..1ef4311 100644
--- a/sage/superelliptic/superelliptic_form_class.sage
+++ b/sage/superelliptic/superelliptic_form_class.sage
@@ -53,6 +53,14 @@ class superelliptic_form:
             B = floor(p^(mult_order-1)*j/m)
             result += superelliptic_form(C, polynomial_part(p, h)/(f^B*y^(j1)))
         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):
         C = self.curve
diff --git a/sage/superelliptic/superelliptic_function_class.sage b/sage/superelliptic/superelliptic_function_class.sage
index 4cb651e..50bfbde 100644
--- a/sage/superelliptic/superelliptic_function_class.sage
+++ b/sage/superelliptic/superelliptic_function_class.sage
@@ -69,7 +69,7 @@ class superelliptic_function:
         C = self.curve
         g = self.function
         return superelliptic_function(C, g^(exp))
-
+    
     def diffn(self):
         C = self.curve
         f = C.polynomial
@@ -83,6 +83,18 @@ class superelliptic_function:
         B = g.derivative(y)*f.derivative(x)/(m*y^(m-1))
         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):
         C = self.curve
