Pebble Coding

ソフトウェアエンジニアによるIT技術、数学の備忘録

SageMathでisogenyを調べる

python で有限体Fpでの楕円曲線上の有理点の群構造を調べる - Pebble Coding

こちらの記事で、
 F_5, y^{2} = x^{3} + x + 1
を調べたとき、cardinalityが9でした。
SageMathで同種写像を調べる方法があったので試してみます。

Isogenies — Sage Reference Manual v8.9: Plane curves

なお、cyclic, separable な isogeny にしか対応していないと書いてあります。
P1は位数9の点でP3が位数3の点であることはpythonで調査済みです。

sage: k = GF(5)
sage: E = EllipticCurve(k, [1,1])
sage: P1 = E(0, 1)
sage: P3 = E(2, 1)
sage: phi1 = E.isogeny(P1)
sage: phi3 = E.isogeny(P3)
sage: phi1.rational_maps()
((x^9 + 2*x^8 - 2*x^6 - 2*x^5 - x^4 + 2*x^3 + 2*x^2 - 1)/(x^8 + 2*x^7 - 2*x^6 - x^5 - 2*x^4 + 2*x^3 + x^2),
 (x^12*y - 2*x^11*y - x^10*y - x^9*y - 2*x^8*y + 2*x^7*y + 2*x^6*y + x^5*y - 2*x^4*y + x^3*y + x^2*y - x*y + 2*y)/(x^12 - 2*x^11 + x^10 + 2*x^8 + 2*x^7 + x^5 - 2*x^4 + x^3))
sage: phi3.rational_maps()
((x^3 + x^2 + 2)/(x^2 + x - 1),
 (x^3*y - x^2*y + x*y + y)/(x^3 - x^2 + 2*x + 2))
sage: E.points()
[(0 : 1 : 0), (0 : 1 : 1), (0 : 4 : 1), (2 : 1 : 1), (2 : 4 : 1), (3 : 1 : 1), (3 : 4 : 1), (4 : 2 : 1), (4 : 3 : 1)]