雅可比“态射”作为Picard群中的一类#

此模块在用芒福德除数表示的超椭圆曲线表示,使用Cantor算法。

超椭圆曲线上的除数\(y^2+yh(x)=f(x)\)存储在芒福德表示中,即作为两个多项式\(u(x)\)\(v(x)\)使得:

  • \(u(x)\)是monic,

  • \(u(x)\)划分\(f(x)-h(x)v(x)-v(x”^2),

  • \(度(v(x))<度(u(x).

参考文献:

对除数Picard组Mumford的可读介绍表示法和康托算法:

  • J.Scholten,F.Vercauteren。椭圆和超椭圆曲线密码和NTRU密码系统。收件人出现在B.Preneel(Ed.)应用密码术的最新技术中-COSIC’03,计算机科学讲稿,Springer 2004。

密码学领域的标准参考:

  • R.Avanzi、H.Cohen、C.Doche、G.Frey、T.Lange、K.Nguyen和F。Vercauteren,椭圆和超椭圆曲线手册密码学。CRC出版社,2005年。

示例:以下曲线是其雅可比矩阵具有复数乘法。

圣人:x个 = GF公司(37)[“x”].消息()
圣人:H(H) = 超椭圆曲线(x个^5 + 12*x个^4 + 13*x个^ + 15*x个^2 + 33*x个); H(H)
尺寸为37的有限域上定义的超椭圆曲线
通过y^2=x^5+12*x^4+13*x^3+15*x^2+33*x

此时,处理超椭圆曲线的Jacobians与椭圆曲线不同:

圣人:J = H(H).雅可比人(); J
定义的37大小有限域上超椭圆曲线的雅可比
通过y^2=x^5+12*x^4+13*x^3+15*x^2+33*x
圣人:J = J(J.底座(_R)()); J
有限域上超椭圆曲线雅可比的有理点集
由y^2=x^5+12*x^4+13*x^3+15*x^2+33*x定义的尺寸37

雅可比矩阵上的点用芒福德多项式表示。首先,我们在曲线上找到几个点:

圣人:第1页 = H(H).提升_x(2); 第1页
(2:11:1)
圣人:第一季度 = H(H).提升_x(10); 第一季度
(10 : 18 : 1)

注意2和10是x中多项式的根,分别为:

圣人:P(P) = J(第1页); P(P)
(x+35,y+26)
圣人: = J(第一季度); 
(x+27,y+19)
圣人:P(P) + 
(x^2+25*x+20,y+13*x)
圣人:(x个^2 + 25*x个 + 20).(多重性=False(错误))
[10, 2]

Frobenius满足

\[x^4+12*x^3+78*x^2+444*x+1369\]

关于这个约简的雅可比矩阵,雅可比函数的阶是\(N=1904).

圣人:1904*P(P)
(1)
圣人:34*P(P) == 0
真的
圣人:35*P(P) == P(P)
真的
圣人:33*P(P) == -P(P)
真的
圣人:*1904
(1)
圣人:*238 == 0
真的
圣人:*239 == 
真的
圣人:*237 == -
真的
sage.schemes.超椭圆曲线.雅可比形。雅各比安·莫菲斯m_divitor_class_field(起源,多边形,检查=真的)#

基础:添加组元素,图谋形态

定义在字段上的Jacobian元素,即\(J(K)=\mathrm{Pic}^0_K(C)\).

方案()#

返回此形态映射到的方案;或者,除数在哪里。

警告

尽管点集是在特定字段上定义的返回的方案可能超过不同的(通常较小)字段。下面的示例演示了这一点:点集在绝对度为2的数字字段上确定,但返回的方案是在理性基础上定义的。

示例:

圣人:x个 = QQ[“x”].消息()
圣人:(f) = x个^5 + x个
圣人:H(H) = 超椭圆曲线((f))
圣人:F类.<> = 数字字段(x个^2 - 2, “a”)                                     #需要sage.rings.number_field
圣人:J = H(H).雅可比人()(F类); J                                                #需要sage.rings.number_field
超椭圆曲线雅可比的有理点集
在具有定义多项式x^2-2的a中的数域上
由y^2=x^5+x定义
圣人:P(P) = J(H(H).提升_x(F类(1)))                                                 #需要sage.rings.number_field
圣人:P(P).方案()                                                            #需要sage.rings.number_field
有理域上y^2=x^5+x定义的超椭圆曲线的Jacobian
sage.schemes.超椭圆曲线.雅可比形。康托_组合(第1页,D2类,(f),小时,)#

示例:

圣人:#需要sage.rings.finite_ring
圣人:F类.<> = GF公司(7^2, “a”)
圣人:x个 = F类[“x”].消息()
圣人:(f) = x个^7 + x个^2 + 
圣人:H(H) = 超椭圆曲线((f), 2*x个); H(H)
大小为7^2的有限域上的超椭圆曲线
由y^2+2*x*y=x^7+x^2+a定义
圣人:J = H(H).雅可比人()(F类); J
上超椭圆曲线Jacobian的有理点集
大小为7^2的a中的有限字段由y^2+2*x*y=x^7+x^2+a定义
圣人: = J(H(H).提升_x(F类(1)));                                                   #需要sage.rings.finite_ring
(x+6,y+5*a)
圣人:10*  #间接doctest#需要sage.rings.finite_ring
(x^3+(3*a+1)*x^2+(2*a+5)*x+a+5,y+(3*a+2)*x^2+(6*a+1)*x+a+4)
圣人:7*8297*                                                                  #需要sage.rings.finite_ring
(1)
圣人: = J(H(H).提升_x(F类(+1)));                                                 #需要sage.rings.finite_ring
(x+6*a+6,y+2)
圣人:7*8297*  #间接doctest#需要sage.rings.finite_rings
(1)

质数域上的测试:

圣人:#需要sage.rings.finite_ring
圣人:F类 = GF公司(下一个前缀(10^30))
圣人:x个 = F类[“x”].消息()
圣人:(f) = x个^7 + x个^2 + 1
圣人:H(H) = 超椭圆曲线((f), 2*x个); H(H)
100000000000000000000000000057有限域上的超椭圆曲线
由y^2+2*x*y=x^7+x^2+1定义
圣人:J = H(H).雅可比人()(F类); J
超椭圆曲线雅可比的有理点集
大小为100000000000000000000000000057的有限字段
由y^2+2*x*y=x^7+x^2+1定义
圣人: = J(H(H).提升_x(F类(1))); 
(x+1000000000000000000000000056,y+10000000000000000000056)
圣人:10*  #间接doctest
(x ^3+150296037169838934997145567227*x ^2)
+377701248971234560956743242408*传真+509456150352486043408603286615,
电话:+514451014495791237681619598519*x^2
+8753756216650398987235387900(传真+861429240012590886251910326876)
圣人:7*8297*
(x^3+35410976139548567549919839063*x^2)
+2623040423522646454588889960*x+681571430588959705539385624700,
电话:+999722365017286747841221441793*x^2
+262703715994522725686603955650(传真:+62621982340325423972118260890)
sage.schemes.超椭圆曲线.雅可比形。康托合成简单(第1页,D2类,(f),)#

鉴于\(D_1\)\(D_2\)两个缩小的芒福德曲线雅可比因子\(y^2=f(x)\),计算代表\(D_1+D_2).

警告

计算的代表性没有减少!使用康托_还原_简单()来减少它。

示例:

圣人:x个 = QQ[“x”].消息()
圣人:(f) = x个^5 + x个
圣人:H(H) = 超椭圆曲线((f)); H(H)
有理域上y^2=x^5+x定义的超椭圆曲线
圣人:F类.<> = 数字字段(x个^2 - 2, “a”)                                         #需要sage.rings.number_field
圣人:J = H(H).雅可比人()(F类); J                                                    #需要sage.rings.number_field
超椭圆曲线上Jacobian的有理点集
a中的数字字段,其定义多项式x^2-2由y^2=x^5+x定义
圣人:#需要sage.rings.number_field
圣人:P(P) = J(H(H).提升_x(F类(1))); P(P)
(x-1,y+a)
圣人: = J(H(H).提升_x(F类(0))); 
(x,y)
圣人:2*P(P) + 2* #间接doctest
(x^2-2*x+1,y+3/2*a*x-1/2*a)
圣人:2*(P(P) + ) #间接doctest
(x^2-2*x+1,y+3/2*a*x-1/2*a)
圣人:*P(P) #间接doctest
(x^2-25/32*x+49/32,y+45/256*a*x+315/256*a)
sage.schemes.超椭圆曲线.雅可比形。康托_还原(,b条,(f),小时,)#

返回线性等价于\((a,b)\)在曲线上\(y^2+yh(x)=f(x)\).

请参阅的docstringsage.模式.超椭圆曲线.雅可比形对于关于除数、线性等价和约简的信息。

示例:

圣人:x个 = QQ[“x”].消息()
圣人:(f) = x个^5 - x个
圣人:H(H) = 超椭圆曲线((f), x个); H(H)
有理域上y^2+x*y=x^5-x定义的超椭圆曲线
圣人:J = H(H).雅可比人()(QQ); J
超椭圆曲线上Jacobian的有理点集
有理字段由y^2+x*y=x^5-x定义

以下点为2-扭转:

圣人: = J(H(H).提升_x(0)); 
(x,y)
圣人:2* #间接doctest
(1)

下一点不是2-扭转:

圣人:P(P) = J(H(H).提升_x(-1)); P(P)
(x+1,y)
圣人:2 * J(H(H).提升_x(-1)) #间接doctest
(x^2+2*x+1,y+4*x+4)
圣人: * J(H(H).提升_x(-1)) #间接doctest
(x^2-487*x-324,y+10755*x+7146)
sage.schemes.超椭圆曲线.雅可比形。康托_还原_简单(,b条,(f),)#

返回线性等价于的唯一约化除数\((a,b)\)在曲线上\(y^2=f(x)。\)

请参阅的docstringsage.模式.超椭圆曲线.雅可比形对于关于除数、线性等价和归约的信息。

示例:

圣人:x个 = QQ[“x”].消息()
圣人:(f) = x个^5 - x个
圣人:H(H) = 超椭圆曲线((f)); H(H)
有理域上y^2=x^5-x定义的超椭圆曲线
圣人:J = H(H).雅可比人()(QQ); J
有理域上超椭圆曲线雅可比的有理点集
由y^2=x^5-x定义

以下点为2-扭转:

圣人:P(P) = J(H(H).提升_x(-1)); P(P)
(x+1,y)
圣人:2 * P(P) #间接doctest
(1)