Ver código fonte

ec pairing class group divisors in sage

narodnik 4 anos atrás
pai
commit
2bcf9e3b58
1 arquivos alterados com 32 adições e 0 exclusões
  1. 32 0
      script/research/ec/pairing/3.1.2-classgroup.sage

+ 32 - 0
script/research/ec/pairing/3.1.2-classgroup.sage

@@ -0,0 +1,32 @@
+q = 61
+K = GF(q)
+E = EllipticCurve(K, [8, 1])
+
+P = E(57,24)
+Q = E(25,37)
+R = E(17,32)
+S = E(42,35)
+inf = E(0)
+
+D1 = ((1, P), (1, Q), (1, R))
+D2 = ((4, inf), (-1, S))
+
+# D1 ~ D2 <=> D1 = D2 + <f>
+# sum(div(f)) = O, deg(div(f)) = 0
+
+def dsum(D):
+    P = inf
+    for order, pnt in D:
+        P += order * pnt
+    return P
+
+def degree(D):
+    return sum(order for order, _ in D)
+
+def neg(D):
+    return tuple((-order, pnt) for order, pnt in D)
+
+D = D1 + neg(D2)
+assert degree(D) == 0
+assert dsum(D) == inf
+