现充|junyu33

为什么椭圆曲线点加满足结合律

这篇文章介绍椭圆曲线点加结合律的证明,以及更强的 9-points theorem。另外,也会涉及到该定理的三种推论:pascal 定理、pappus 定理,以及圆锥曲线极点极线的配极原则。

初等证明

(定理一:) 对于一个非奇异的椭圆曲线E:y2=x3+Ax+B,我们取相异的三点P,Q,R,满足任意两点或者三点之和不为无穷远点O。我们定义P+Q为连接P,Q的直线与E的第三个交点,关于x轴的对称点(显然该点也在E上),则我们有:

(P+Q)+R=P+(Q+R)

(证明一:) 我们尝试用相对初等的方法来证明。设 E 上的三点 P,Q,R 的坐标为 (x1,y1),(x2,y2),(x3,y3)。则令 λab=ybyaxbxa

P+Q=(λ122x1x2,λ12((λ122x1x2)x1)y1)

记该点为 S(xs,ys)

Q+R=(λ232x2x3,λ23((λ232x2x3)x2)y2)

记该点为 T(xt,yt)

然后计算:

x(P+Q)+R=λs32xsx3xP+(Q+R)=λ1t2x1xt

然后验证 x(P+Q)+R=xP+(Q+R),由于手工计算比较繁杂,这里使用 sagemath 的 Groebner 规约,验证差值为 0 即可。

# 1) Base polynomial ring and fraction field
R = PolynomialRing(QQ, ['A','B','x1','y1','x2','y2','x3','y3'], order='lex')
A,B,x1,y1,x2,y2,x3,y3 = R.gens()
K = R.fraction_field()

# 2) Addition formulas (x- and y-coordinate) using secant/slope; generic position
def xAdd(xa, ya, xb, yb):
    lam_ab = (yb - ya)/(xb - xa)
    return lam_ab**2 - xa - xb

def yAdd(xa, ya, xb, yb):
    lam_ab = (yb - ya)/(xb - xa)
    return -lam_ab*((lam_ab**2 - xa - xb) - xa) - ya

# 3) Lift symbols to fraction field
A,B,x1,y1,x2,y2,x3,y3 = [K(z) for z in (A,B,x1,y1,x2,y2,x3,y3)]

# 4) Build x((P+Q)+R) and x(P+(Q+R))
x12 = xAdd(x1,y1,x2,y2);  y12 = yAdd(x1,y1,x2,y2)
x23 = xAdd(x2,y2,x3,y3);  y23 = yAdd(x2,y2,x3,y3)

xA  = xAdd(x12,y12,x3,y3)   # x((P+Q)+R)
xB  = xAdd(x1,y1,x23,y23)   # x(P+(Q+R))

# 5) Take common-denominator numerator and reduce modulo the curve ideal
diff = xA - xB
num  = diff.numerator()  # element of R up to a unit; denominators assumed nonzero (generic position)

I = R.ideal([
    y1**2 - (x1**3 + A*x1 + B),
    y2**2 - (x2**3 + A*x2 + B),
    y3**2 - (x3**3 + A*x3 + B)
])

rem = I.reduce(num)       # Gröbner normal form modulo the curve ideal
print(rem.is_zero())

程序输出 True,代表椭圆曲线上的点加结合律成立。

9-points theorem

事实上,这个结论不仅在椭圆曲线上成立,对于一般的三次曲线,也有这样的结论:

(定理二:) 在二次投影平面 PK2K是平面的定义域)中,由齐次三次多项式 C(x,y,z)=0 定义的三次曲线 C,给定三条直线 l1,l2,l3 和另外三条直线 m1,m2,m3,满足 limj,它们的交点 Pij=limj(除了 P33)均为 C 上的非奇异点。假如这八个交点互不相同(原定理无此条件,篇幅所限,不讨论点的重合情况),则交点 P33 必然也在曲线 C 上。

一个直观的例子如下,这里的l1,2,3为红线,m1,2,3为蓝线,而黑线即为三次曲线 C

(证明二:) 证明的思路大致是令 D=Cαm1m2m3βl1l2l3=0,从而 C=αm1m2m3+βl1l2l3,这样的话 P33 因为同时在 l3m3 上,αm1m2m3βl1l2l3 就均为 0,从而得到 C(P33)=0,即 P33 在椭圆曲线 C 上。

首先,我们尝试将直线方程 l(x,y,z) 参数化,假如 lPK2 满足方程 ax+by+cz=0,我们可以令:

{x=a1u+b1vy=a2u+b2vz=a3u+b3v

将直线的方程从 l(x,y,z) 化为 l~(u,v)。由于直线 l1 过点 P11,P12,P13,令 (u1,v1),(u2,v2),(u3,v3) 为直线 l1 在这三点分别对应的 (u,v) 参数对。将 l1 的参数化等式代入直线 mj 得到 m~j(u,v),由于 P11,P12,P13 分别在直线 m1,m2,m3 上,故有 m~j(uj,vj)=0。另一方面,除 P1j 之外的点都不在直线mj 上,故 m~j(u,v) 为非零多项式。将这三个式子相乘,可得 m~1(u,v)m~2(u,v)m~3(u,v) 为关于u,v的三次齐次多项式。

考虑以下引理:

(引理2.1:) 对于齐次三次多项式 R,S 交一条直线于三个相同的点(记重数),则存在常数 α 使得 R=αS

引理的理解非常直观,从单变量函数的角度来看,例如如果两个三次函数RS的三个根(直线 y=0)完全相同,分别记为x1,x2,x3(可以相同),由零点定理,这两个三次函数一定包含多项式 (xx1)(xx2)(xx3),而由于该多项式已经是三次函数,所以区分RS的只能是常数项α。具体的证明只需把单变量函数的语言换成射影、参数化的语言即可,这里略去。

对于另一个三次齐次多项式C,对其使用同样的l1-参数将其化为 C~(u,v),显然 C~ 也过点 P11,P12,P13。根据引理 2.1,存在一个常数 α,使得 C~=αm~1m~2m~3

l1 的投影方程为 ax+by+cz=0,其中 a,b,c 不全为零。不失一般性,我们令 a0,故:

{x=(b/a)u(c/a)vy=uz=v

C1=Cαm1m2m3,有C1(l1)=0。将C1写为关于 x 的多项式 C1(x,y,z)=a3(y,z)x3+a2(y,z)x2+a1(y,z)x+a0(y,z)。注意到:

xn=(1/a)n((ax+by+cz)(by+cz))n

因此可以变形为:

C1(x,y,z)=a3(y,z)(ax+by+cz)3++a0(y,z)=a0(y,z)

C~1(u,v)=C1((b/a)u(c/a)v,u,v)=a0(u,v)=0(因为C1(l1)0,值与参数如何选取无关),而a0(u,v)=a0(y,z),故 (ax+by+cz)|(C(x,y,z)αm1m2m3),即:

l1|(Cαm1m2m3)

同理我们有:

m1|(Cβl1l2l3)

现在我们令:

D=Cαm1m2m3βl1l2l3

易证 m1|D,l1|D。而由于 l1,m1 相交但不重合,gcd(m1,l1)=1。因此由唯一分解定理,m1l1|D,即 D=l1m1l,其中 l 也是一个一次式(直线)。

另外,我们由题设条件,C(P22)=C(P23)=C(P32)=0,显然 αm1m2m3+βl1l2l3 在这几个点也为 0,故可以推出 D(P22)=D(P23)=D(P32)=0,而 l1m1 不过这三个点,因此 l(P22)=l(P23)=l(P32)=0

注意到两点确定一条直线,这意味着 l 同时在 l2m2 上,而 l2m2,故唯一满足条件的 l0,即可推出 D0。于是我们有 C=αm1m2m3+βl1l2l3,也就是开头我们想要证到的结论,这样我们便说明了 P33C 上。

证明完 9-points theorem 后,我们便可以说明椭圆曲线的加法满足结合律。如下图所示,我们令点 P=P13,Q=P11,R=P31,这里的点E即为(P+Q+R),是l3,m3的交点。由 9-points theorem,可得C,l3,m3三线共点。而按照 ((P+Q)+R) 的顺序计算出来的是 l3,C 的交点,而按照 (P+(Q+R)) 的顺序计算出来的是 m3,C 的交点,因此这两个交点是同一个。我们便验证了 ((P+Q)+R)=(P+(Q+R)),也就是点加运算的结合律成立。


9-points theorem 还有一个更一般的情况,具体如下:

(定理三, Cayley–Bacharach:)X,YP2 是两条三次曲线, 交于互异九点 p0,p1,,p8.如三次曲线 ZP2 过点 p1,,p8, 则它也过 p0.

容易看到,X,Y这两条三次曲线如果退化到三条直线的并集,那么该定理即为 9-points theorem。

(证明三:) 这是一个代数几何的经典结论,你可以在 Hartshorne 的 GTM52 中(第 400 页,推论 4.5)看到。另外也可见香蕉空间的链接

Pascal/Pappus

(推论四, Pascal:)ABCDEF 是一个内接于圆锥曲线 Γ(椭圆、抛物线或双曲线)的六边形,其中 A,B,C,D,E,F 是仿射平面中的不同点。设 XABDE 的交点,YBCEF 的交点,ZCDFA 的交点,则 X,Y,Z 三点共线。如图所示:

(证明四:)l1=EF,l2=AB,l3=CD,m1=BC,m2=DE,m3=FA,我们可以列出直线族 l 与直线族 m 的交点表:

l1 l2 l3
m1 Y B C
m2 E X D
m3 F A Z

我们令 Q(x,y,z)=0Γ 的投影形式,再令 l(x,y,z)=0 为直线 XY 的投影形式,故:

C(x,y,z)=Q(x,y,z)l(x,y,z)

为一个齐次三次多项式,而 C=0 一定过点 A,B,C,D,E,F,X,Y。由于这八个点均为 P2 上的非奇异点,因此定理二(9-points theorem)的适用条件成立。由定理二,可得 C(Z)=0,而显然 Q(Z)0,故 l(Z)=0,因此 X,Y,Z 共线。


(推论五, Puppus:)lm 是平面中的两条不同直线,A,B,Cl 上的不同点,A,B,Cm 上的不同点,假设这些点中没有一个是 lm 的交点。设 XABAB 的交点,YBCBC 的交点,ZCACA 的交点,则 X,Y,Z 三点共线。如图所示:

(证明五:) 这里l,m即定理四中圆锥曲线的退化情形,对应的六边形为ABCABC

极点与极线

当知道在椭圆上的 pascal 定理后,回想起高中有同学科普圆锥曲线的极点极线相关的性质,觉得这两个应该可以关联起来。这里首先引出极点极线的定义(这里以椭圆为例):

(定义六,极点极线:)

而极点与极线一个最基本的性质就是配极原则,其叙述如下:

(推论七,配极原则:) 对于同一椭圆,如果点P的极线经过点Q,那么点Q的极线经过点P

(证明七:) 这里提供一个仅使用 pascal 定理的纯几何证法。先考虑 P 在椭圆内的情况,我们按照椭圆内一极点 P,按照定义做出其极线 IJ

原证明便转化为:要证点 Q 与椭圆的切点 D,K 满足 D,P,K三点共线。我们沿Q再作一条椭圆的割线 QL,并暂时隐去其他直线,便得到下图:

我们可以看到,HELGFM 构成椭圆内接六边形。按照 pascal 定理,HE,GFEL,FMLG,MH 的三个交点 X,Y,Z 共线(这也间接说明了极线是一条直线):

显然,这里的点 X 就是前面的点 P,所以我们可以说明 P 在直线 YZ 上。而割线 QL 的选取是任意的,如果让点 L,M 无限接近(即 QL 与椭圆相切),我们可以得到Y,Z与切点L重合:

因此我们可以得到结论,直线 PYZ 过切点 L;同理,它也过点 Q 与椭圆的另一个切点L。根据圆外一点对应极线的定义,LL 即为 Q 对应的极线。而根据两点确定一条直线,LLPYZ 重合,所以 PQ 对应的极线上。


P 在椭圆上的情况很简单,首先 P 的极线就是过 P 的切线。反过来的话,在切线上任取一个不同点 Q,沿点 Q 作椭圆的两条切线,其中一个切点就是 P,这样 P 自然也在两切点连线形成的极线上。


现在我们考虑 P 在椭圆外的情况,首先根据定义,我们过 P 作椭圆的两条切线。连接两个切点D,E,即得到 P 对应的极线 DE。之后我们在 DE 上取一点 Q,按照定义作 Q 对应的极线 JK,即可得到下图(原命题转化为证J,P,K 三点共线):

考虑椭圆内接六边形的退化情形 HHGFFI,其交点分别为 HGFI 的交点 KGFIH 的交点 J,以及 HF 各自与椭圆的切线形成的交点X(未画出)。根据 pascal 定理,J,X,K 共线。故 X 在点 Q 对应的极线 JK 上。

现在我们考虑将直线 HF 绕点 Q 旋转到 DE,由于极线仅仅与点 Q 的位置有关,因此该操作不改变极线 JK 的位置。而由点 DE 的定义可知道 X 一定与点 P 重合,因此我们便证得 PJK 上,即 J,P,K 三点共线。

参考资料

Elliptic Curves: Number Theory and Cryptography

https://www.bananaspace.org/wiki/Cayley–Bacharach_定理

https://en.wikipedia.org/wiki/Cayley–Bacharach_theorem