English
为什么椭圆曲线点加满足结合律
这篇文章介绍椭圆曲线点加结合律的证明,以及更强的 9-points theorem。另外,也会涉及到该定理的三种推论:pascal 定理、pappus 定理,以及圆锥曲线极点极线的配极原则。
初等证明
(定理一:) 对于一个非奇异的椭圆曲线E : y 2 = x 3 + A x + B ,我们取相异的三点P , Q , R ,满足任意两点或者三点之和不为无穷远点O 。我们定义P + Q 为连接P , Q 的直线与E 的第三个交点,关于x 轴的对称点(显然该点也在E 上),则我们有:
( P + Q ) + R = P + ( Q + R ) (证明一:) 我们尝试用相对初等的方法来证明。设 E 上的三点 P , Q , R 的坐标为 ( x 1 , y 1 ) , ( x 2 , y 2 ) , ( x 3 , y 3 ) 。则令 λ a b = y b − y a x b − x a :
P + Q = ( λ 12 2 − x 1 − x 2 , − λ 12 ( ( λ 12 2 − x 1 − x 2 ) − x 1 ) − y 1 ) 记该点为 S ( x s , y s ) ;
Q + R = ( λ 23 2 − x 2 − x 3 , − λ 23 ( ( λ 23 2 − x 2 − x 3 ) − x 2 ) − y 2 ) 记该点为 T ( x t , y t ) 。
然后计算:
x ( P + Q ) + R = λ s 3 2 − x s − x 3 x P + ( Q + R ) = λ 1 t 2 − x 1 − x t 然后验证 x ( P + Q ) + R = x P + ( 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
事实上,这个结论不仅在椭圆曲线上成立,对于一般的三次曲线,也有这样的结论:
(定理二:) 在二次投影平面 P K 2 (K 是平面的定义域)中,由齐次三次多项式 C ( x , y , z ) = 0 定义的三次曲线 C ,给定三条直线 l 1 , l 2 , l 3 和另外三条直线 m 1 , m 2 , m 3 ,满足 l i ≠ m j ,它们的交点 P i j = l i ∩ m j (除了 P 33 )均为 C 上的非奇异点。假如这八个交点互不相同(原定理无此条件,篇幅所限,不讨论点的重合情况),则交点 P 33 必然也在曲线 C 上。
一个直观的例子如下,这里的l 1 , 2 , 3 为红线,m 1 , 2 , 3 为蓝线,而黑线即为三次曲线 C :
(证明二:) 证明的思路大致是令 D = C − α m 1 m 2 m 3 − β l 1 l 2 l 3 = 0 ,从而 C = α m 1 m 2 m 3 + β l 1 l 2 l 3 ,这样的话 P 33 因为同时在 l 3 和 m 3 上,α m 1 m 2 m 3 与 β l 1 l 2 l 3 就均为 0 ,从而得到 C ( P 33 ) = 0 ,即 P 33 在椭圆曲线 C 上。
首先,我们尝试将直线方程 l ( x , y , z ) 参数化,假如 l 在 P K 2 满足方程 a x + b y + c z = 0 ,我们可以令:
{ x = a 1 u + b 1 v y = a 2 u + b 2 v z = a 3 u + b 3 v 将直线的方程从 l ( x , y , z ) 化为 l ~ ( u , v ) 。由于直线 l 1 过点 P 11 , P 12 , P 13 ,令 ( u 1 , v 1 ) , ( u 2 , v 2 ) , ( u 3 , v 3 ) 为直线 l 1 在这三点分别对应的 ( u , v ) 参数对。将 l 1 的参数化等式代入直线 m j 得到 m ~ j ( u , v ) ,由于 P 11 , P 12 , P 13 分别在直线 m 1 , m 2 , m 3 上,故有 m ~ j ( u j , v j ) = 0 。另一方面,除 P 1 j 之外的点都不在直线m j 上,故 m ~ j ( u , v ) 为非零多项式。将这三个式子相乘,可得 m ~ 1 ( u , v ) m ~ 2 ( u , v ) m ~ 3 ( u , v ) 为关于u , v 的三次齐次多项式。
考虑以下引理:
(引理2.1:) 对于齐次三次多项式 R , S 交一条直线于三个相同的点(记重数),则存在常数 α 使得 R = α S 。
引理的理解非常直观,从单变量函数的角度来看,例如如果两个三次函数R 和S 的三个根(直线 y = 0 )完全相同,分别记为x 1 , x 2 , x 3 (可以相同),由零点定理,这两个三次函数一定包含多项式 ( x − x 1 ) ( x − x 2 ) ( x − x 3 ) ,而由于该多项式已经是三次函数,所以区分R 与S 的只能是常数项α 。具体的证明只需把单变量函数的语言换成射影、参数化的语言即可,这里略去。
对于另一个三次齐次多项式C ,对其使用同样的l 1 -参数将其化为 C ~ ( u , v ) ,显然 C ~ 也过点 P 11 , P 12 , P 13 。根据引理 2.1,存在一个常数 α ,使得 C ~ = α m ~ 1 m ~ 2 m ~ 3 。
设 l 1 的投影方程为 a x + b y + c z = 0 ,其中 a , b , c 不全为零。不失一般性,我们令 a ≠ 0 ,故:
{ x = − ( b / a ) u − ( c / a ) v y = u z = v 令C 1 = C − α m 1 m 2 m 3 ,有C 1 ( l 1 ) = 0 。将C 1 写为关于 x 的多项式 C 1 ( x , y , z ) = a 3 ( y , z ) x 3 + a 2 ( y , z ) x 2 + a 1 ( y , z ) x + a 0 ( y , z ) 。注意到:
x n = ( 1 / a ) n ( ( a x + b y + c z ) − ( b y + c z ) ) n 因此可以变形为:
C 1 ( x , y , z ) = a 3 ′ ( y , z ) ( a x + b y + c z ) 3 + ⋯ + a 0 ′ ( y , z ) = a 0 ′ ( y , z ) 而 C ~ 1 ( u , v ) = C 1 ( − ( b / a ) u − ( c / a ) v , u , v ) = a 0 ′ ( u , v ) = 0 (因为C 1 ( l 1 ) ≡ 0 ,值与参数如何选取无关),而a 0 ′ ( u , v ) = a 0 ′ ( y , z ) ,故 ( a x + b y + c z ) | ( C ( x , y , z ) − α m 1 m 2 m 3 ) ,即:
l 1 | ( C − α m 1 m 2 m 3 ) 同理我们有:
m 1 | ( C − β l 1 l 2 l 3 ) 现在我们令:
D = C − α m 1 m 2 m 3 − β l 1 l 2 l 3 易证 m 1 | D , l 1 | D 。而由于 l 1 , m 1 相交但不重合,gcd ( m 1 , l 1 ) = 1 。因此由唯一分解定理,m 1 l 1 | D ,即 D = l 1 m 1 l ,其中 l 也是一个一次式(直线)。
另外,我们由题设条件,C ( P 22 ) = C ( P 23 ) = C ( P 32 ) = 0 ,显然 α m 1 m 2 m 3 + β l 1 l 2 l 3 在这几个点也为 0 ,故可以推出 D ( P 22 ) = D ( P 23 ) = D ( P 32 ) = 0 ,而 l 1 与 m 1 不过这三个点,因此 l ( P 22 ) = l ( P 23 ) = l ( P 32 ) = 0 。
注意到两点确定一条直线,这意味着 l 同时在 l 2 和 m 2 上,而 l 2 ≠ m 2 ,故唯一满足条件的 l ≡ 0 ,即可推出 D ≡ 0 。于是我们有 C = α m 1 m 2 m 3 + β l 1 l 2 l 3 ,也就是开头我们想要证到的结论,这样我们便说明了 P 33 在 C 上。
证明完 9-points theorem 后,我们便可以说明椭圆曲线的加法满足结合律。如下图所示,我们令点 P = P 13 , Q = P 11 , R = P 31 ,这里的点E 即为− ( P + Q + R ) ,是l 3 , m 3 的交点。由 9-points theorem,可得C , l 3 , m 3 三线共点。而按照 − ( ( P + Q ) + R ) 的顺序计算出来的是 l 3 , C 的交点,而按照 − ( P + ( Q + R ) ) 的顺序计算出来的是 m 3 , C 的交点,因此这两个交点是同一个。我们便验证了 − ( ( P + Q ) + R ) = − ( P + ( Q + R ) ) ,也就是点加运算的结合律成立。
9-points theorem 还有一个更一般的情况,具体如下:
(定理三, Cayley–Bacharach:) 设 X , Y ⊂ P 2 是两条三次曲线, 交于互异九点 p 0 , p 1 , ⋯ , p 8 .如三次曲线 Z ⊂ P 2 过点
p 1 , ⋯ , p 8 , 则它也过 p 0 .
容易看到,X , Y 这两条三次曲线如果退化到三条直线的并集,那么该定理即为 9-points theorem。
(证明三:) 这是一个代数几何的经典结论,你可以在 Hartshorne 的 GTM52 中(第 400 页,推论 4.5)看到。另外也可见香蕉空间的链接 。
Pascal/Pappus
(推论四, Pascal:) 设 A B C D E F 是一个内接于圆锥曲线 Γ (椭圆、抛物线或双曲线)的六边形,其中 A , B , C , D , E , F 是仿射平面中的不同点。设 X 为 A B ― 与 D E ― 的交点,Y 为 B C ― 与 E F ― 的交点,Z 为 C D ― 与 F A ― 的交点,则 X , Y , Z 三点共线。如图所示:
(证明四:) 令 l 1 = E F ― , l 2 = A B ― , l 3 = C D ― , m 1 = B C ― , m 2 = D E ― , m 3 = F A ― ,我们可以列出直线族 l 与直线族 m 的交点表:
l 1
l 2
l 3
m 1
Y
B
C
m 2
E
X
D
m 3
F
A
Z
我们令 Q ( x , y , z ) = 0 为 Γ 的投影形式,再令 l ( x , y , z ) = 0 为直线 X Y ― 的投影形式,故:
C ( x , y , z ) = Q ( x , y , z ) l ( x , y , z ) 为一个齐次三次多项式,而 C = 0 一定过点 A , B , C , D , E , F , X , Y 。由于这八个点均为 P 2 上的非奇异点,因此定理二(9-points theorem)的适用条件成立。由定理二,可得 C ( Z ) = 0 ,而显然 Q ( Z ) ≠ 0 ,故 l ( Z ) = 0 ,因此 X , Y , Z 共线。
(推论五, Puppus:) 设 l 和 m 是平面中的两条不同直线,A , B , C 是 l 上的不同点,A ′ , B ′ , C ′ 是 m 上的不同点,假设这些点中没有一个是 l 和 m 的交点。设 X 为 A B ′ ― 和 A ′ B ― 的交点,Y 为 B ′ C ― 和 B C ′ ― 的交点,Z 为 C A ′ ― 和 C ′ A ― 的交点,则 X , Y , Z 三点共线。如图所示:
(证明五:) 这里l , m 即定理四中圆锥曲线的退化情形,对应的六边形为A B ′ C A ′ B C ′ 。
极点与极线
当知道在椭圆上的 pascal 定理后,回想起高中有同学科普圆锥曲线的极点极线相关的性质,觉得这两个应该可以关联起来。这里首先引出极点极线的定义(这里以椭圆为例):
(定义六,极点极线:)
若点 P 在椭圆内,过 P 作两条割线交椭圆于 A , B 和 C , D 。若直线 A C 与 B D 交于点 S ,A D 与 B C 交于点 T 。则 P 与直线 S T 为极点和极线。
若点 P 在椭圆外,则过 P 作椭圆的两条切线,对应的切点连线即为极点 P 的极线。
若点 P 在椭圆上,则过 P 作椭圆的切线即对应的极线。
而极点与极线一个最基本的性质就是配极原则,其叙述如下:
(推论七,配极原则:) 对于同一椭圆,如果点P 的极线经过点Q ,那么点Q 的极线经过点P 。
(证明七:) 这里提供一个仅使用 pascal 定理的纯几何证法。先考虑 P 在椭圆内的情况,我们按照椭圆内一极点 P ,按照定义做出其极线 I J :
原证明便转化为:要证点 Q 与椭圆的切点 D , K 满足 D , P , K 三点共线。我们沿Q 再作一条椭圆的割线 Q L ,并暂时隐去其他直线,便得到下图:
我们可以看到,H E L G F M 构成椭圆内接六边形。按照 pascal 定理,H E ― , G F ― 、E L ― , F M ― 、L G ― , M H ― 的三个交点 X , Y , Z 共线(这也间接说明了极线是一条直线):
显然,这里的点 X 就是前面的点 P ,所以我们可以说明 P 在直线 Y Z 上。而割线 Q L 的选取是任意的,如果让点 L , M 无限接近(即 Q L 与椭圆相切),我们可以得到Y , Z 与切点L 重合:
因此我们可以得到结论,直线 P Y Z 过切点 L ;同理,它也过点 Q 与椭圆的另一个切点L ′ 。根据圆外一点对应极线的定义,L L ′ 即为 Q 对应的极线。而根据两点确定一条直线,L L ′ 与 P Y Z 重合,所以 P 在 Q 对应的极线上。
P 在椭圆上的情况很简单,首先 P 的极线就是过 P 的切线。反过来的话,在切线上任取一个不同点 Q ,沿点 Q 作椭圆的两条切线,其中一个切点就是 P ,这样 P 自然也在两切点连线形成的极线上。
现在我们考虑 P 在椭圆外的情况,首先根据定义,我们过 P 作椭圆的两条切线。连接两个切点D , E ,即得到 P 对应的极线 D E 。之后我们在 D E 上取一点 Q ,按照定义作 Q 对应的极线 J K ,即可得到下图(原命题转化为证J , P , K 三点共线):
考虑椭圆内接六边形的退化情形 H H G F F I ,其交点分别为 H G 与 F I 的交点 K ,G F 与 I H 的交点 J ,以及 H ,F 各自与椭圆的切线形成的交点X (未画出)。根据 pascal 定理,J , X , K 共线。故 X 在点 Q 对应的极线 J K 上。
现在我们考虑将直线 H F 绕点 Q 旋转到 D E ,由于极线仅仅与点 Q 的位置有关,因此该操作不改变极线 J K 的位置。而由点 D E 的定义可知道 X 一定与点 P 重合,因此我们便证得 P 在 J K 上,即 J , P , K 三点共线。
参考资料
Elliptic Curves: Number Theory and Cryptography
https://www.bananaspace.org/wiki/Cayley–Bacharach_定理
https://en.wikipedia.org/wiki/Cayley–Bacharach_theorem