Finding function field interpolation

In the previous post, I mentioned that we can efficiently find fF(E) such that

div(f)=i=0n1[Pi]n[O]

if given Pi satisfies Pi=O. Here are two methods to do this. You may skip the first technical writing with a simple idea.


Incremental construction

Suppose n=2k and y(Pi)0 for each i. The first method to find divisor witness is multiplying each line which interpolates Pi. Let Li(0) be the line interpolating P2i and P2i+1 for 0in/2. Each Li(0) intersects with E(Fq) at another point Pi(1). Now, find Li(1) interpolating Pi(1) and Pi+1(1) for 0in/4. And, Li(1) intersects at another Pi(2). Repeating this process, we will have Li(0),Li(1,,Li(k1). Multiplying all the lines,

div(j=0k1i=02kj11Li(j))=(i=02k1[Pi]+i=02k11[Pi(1)])+(i=02k11[Pi(1)]+i=02k21[Pi(2)])++(i=01[Pi(k1)]+[P0(k)])32k[O]

Our assumption Pi=O implies P0(k)=O. To remove each Pi(j) and (Pi(j)), we divide xx(Pi(j)) which is the line interpolates Pi(j),(Pi(j)),O.


Mumford representation

The main reference is Chapter 10 of Mathematics of Public Key Cryptography by Steven Galbraith. We define the notion of a semi-reduced divisor, a divisor

PE(F){O}nP[P]n[O]

is called semi-reduced if nQ=0 or 1 for y(Q)=0, and nP>0 implies nP=0. Given Pi, we can assume [Pi]n[O] is semi-reduced. If not, deleting an even number of Q for y(Q)=0 and a pair P,P makes it semi-reduced. Later we multiply a factor xx(Q) or xx(P) since

div(xx(Q))=2[Q]2[O]

div(xx(P))=[P]+[P]2[O]

Now, let

u(x)=i=0n1(xx(Pi))

Then, we can construct v(x)Fq[x] such that degv<n, v(x(Pi))=y(Pi), and

v(x)2x3+Ax+B mod u(x)

I will refer to Lemma 10.3.5 in the book for the construction. Note that gcd(u,v)=1 since v(x(Pi))0 for all i. By the Euclidean algorithm, consider the remainder sequence starting from u,v.

(r0=u,1,0),(r1=v,0,1),(r2,s2,t2),,(1,sk,tk)

such that ri=usi+bti. In the sequence, we have rl1 and rl such that degrl1>n2 and degrln2. Then, 

rl(x)=sl(x)u(x)+tl(x)v(x)

At each step, the degree increase of ti+1 compared to ti is at most degridegri1. So,

degtldegudegrl1<n2

The half-GCD algorithm computes sl(x),tl(x),rl(x) in O(n2logn) (or O(nlog2n) with FFT) multiplications (Theorem 8.17, 8.18 in [AHU]). Say (a,b,c)=(rl,tl,sl). Squaring

bva mod u

induces

b2(x3+Ax+B)a2 mod u

Consider

f(x,y)=a(x)yb(x)F(E)

The zeros of f(x,y)f(x,y) is either P or P, which have the same x-coordinate.

f(x,y)f(x,y)=a(x)2(x3+Ax+B)b(x)2

is divided by u, so f has zeros at Pi. It is known that the number of zeros of f equals degf which is defined by

degf=max{2dega,2degb+3}

From the above, we know that degan2 and degb<n2. If n=2k is even, then degbk1 so

degfmax{2k,2(k1)+3}=n+1

If n=2k+1 is odd, then degak and degb<k+21 so

degfmax{2k,2k+3}=n+2

In both cases, degfn+2. We already have n zeros of f, so suppose we have other zeros P,Q of f. Then,

div(f)=i=0n1[Pi]+[P]+[Q](n+1)[O]

This implies that i=0n1Pi=PQ=O. So, Q=P. Suppose PO and b(x(P))0. Then, y(P)=a(x(P))b(x(P)) is uniquely determined so Q=P=P=O, which is contradiction. Only possible case is b(x(P))=0, which implies a(x(P))=c(x(P))=0. So, we may divide f by (xx(P)) to make degf=n. With the assumption that have another one zero, that zero must be O. So, we obtained the desired f automatically.

댓글