p-derivation Deformation Class

of an elliptic curve for p an odd prime number

Let M^0 = Z_p[c1,c2,Discriminant^-1] and let d be a p-derivation on M^0 that takes c1 to d(c1) and c2 to d(c2). Let M^1 = Z_p[c1,c2,d(c1),d(c2),Discriminant^-1]. Let E be an elliptic curve defined by the equation in the next section over M^0. Let U be the open set associated to Z<>0 and V the open set associated to Y<>0. So U corresponds to the equation f(x,y) in the next section and V corresponds to the equation g(u,z) in the next section. Hence

x = X/Z

y = Y/Z

u = X/Y

z = Z/Y.

Set M_0^0 = F_p[c1,c2,Discriminant^-1] and M_0^1 = F_p[c1,c2,d(c1),d(c2),Discriminant^-1]. Then the purpose of this document is to first calculate p-derivations lifting d to

d_U: O(U) \to O(U) \otimes M_0^1

d_V: O(V) \to O(V) \otimes M_0^1

and then to calculate (d_U - d_V )(x) \in O(U \cap V) \otimes M_0^1 = M_0^1[x,y,y^-1]. So first we define the elliptic curve.

>

Defining the Elliptic Curve E.

Computation of d(f(x,y)) and d(g(u,z))

Addition and Multiplication Functions for p-derivations

Computation of d(f(x,y))

Computation of d(g(u,z))

Computation of d_U

Let O_Ux = O(U_\partial f / \partial x ) and O_Uy = O(U_\partial f / \partial y ). To define d_U, we first define the following two derivations

d_(U,\partial f / \partial x ): O_Ux \to O_Ux \otimes M_0^1

and

d_(U,\partial f / \partial y ): O_Uy \to O_Uy \otimes M_0^1

which will be referred to as dparx and dpary respectively from now on. These are defined by assuming that dparx(y) = 0, dparx(x) = d(x),

dpary(y) = d(y), and dpary(x) = 0, by making the assumption that d(f(x,y))=0, and then by using this assumption to solve for dpary(y) and dparx(x) on O_Uy and O_Ux respectively. Note that all computations here are modulo p, because in computing dparx(x) and dpary(y) we are computing something that is in the image of the dparx and dpary maps.

Computation of dparx(x)

Computation of dpary(y)

Here we need to let frodo be the term such that -p*frodo = (x*c1)^p + c2^p - y^(2p) + x^(3p), and note that (y^2 -x^3 -x*c1 -c2)^p = 0. Then by using frodo we can substitute into dparx(x) and dpary(y) and factor out the p in the denominator. After we do this we note that that dparx(x) = dali / ((\partial f / \partial x)^p) where dali is an element in M_0^1 [x,y] and dpary(y) = dante / ((\partial f / \partial y)^p ) where dante is also an element in M_0^1 [x,y]. (Note: The Little Fermat Theorem is necessary here to convert 3 to 3^p and 2 to 2^p.) This next subsection is the substitution of frodo in as necessary and then defining dali and dante for Maple. Note that the minus sign is necessary in dali since the \partial f / \partial x is in fact a negative term.

Defining dali and dante

Now since we are on a smooth curve, \partial f / \partial x and \partial f / \partial y are relatively prime. This means that there exists polynomials A and B in M_0^0[x,y] such that

A*(\partial f / \partial x) + B*(\partial f / \partial y) = 1.

On the other hand, since we are working modulo p, (A*(\partial f / \partial x) + B*(\partial f / \partial y))^p = A^p*(\partial f / \partial x)^p + B^p*(\partial f / \partial y)^p = 1. So in this next subsection we find these polynomials A and B.

Computing A and B such that A*(\partial f / \partial x) + B*(\partial f / \partial y) = 1.

Now we make use of the following lemma:

LEMMA: If d_1, d_2: C \to D are two p-derivations lifting d:M^0 \to M^1 where the diagram

M^0 \to M^1

\downarrow \downarrow

C \to D

is a commutative diagram of rings, if char D = p, and if b_1, b_2 \in D are such that b_1 + b_2 = 1, then b_1*d_1 + b_2*d_2 : C \to D is a p-derivation lifting d.

This means that

A^p*(\partial f / \partial x)^p *dparx + B^p*(\partial f / \partial y)^p * dpary

is a p-derivation d_U with values in O(U) \otimes M_0^1. This is because d_U(x) = A^p *dali and d_U(y) = B^p*dante. This last maple line inputs d_U(x) into Maple for later use.

> dUx:=Ap*dali;

[Maple Math]

>

Computation of d_V

Let O_Vu = O(V_\partial g / \partial u ) and O_Vz = O(V_\partial g / \partial z ). To define d_V, we first define the following two derivations

d_(V,\partial g / \partial u ): O_Vu \to O_Vu \otimes M_0^1

and

d_(V,\partial g / \partial z ): O_Vz \to O_Vz \otimes M_0^1

which will be referred to as dparu and dparz respectively from now on. These are defined by assuming that dparu(z) = 0, dparu(u) = d(u), dparz(z) = d(z), and dparz(u) = 0 on the equations dparu(g(u,z)) and dparz(g(u,z)), by making the assumption that d(g(u,z))=0, and then by using this assumption to solve for dparu(u) and dparz(z) on O_Vu and O_Vz respectively. Note that all computations here are modulo p, because in computing dparu(u) and dparz(z) we are computing something that is in the image of the dparu and dparz maps.

Computation of dparu(u)

Computation of dparz(z)

> g(u,z);

[Maple Math]

Here we need to let bombieri (Yes, I know this is a living mathematician and I really shouldn't use his name, but it is such an interesting sounding name, and it will be changed later.) be the term such that

-p*bombieri = u^(3p) + (u*z^2*c1)^p + (z^3 *c2)^p - z^p,

and note that (z -u^3 -u*z^2*c1 -z^3*c2)^p = 0. Then by using bombieri it is possible to simplify dparu(u) and dparz(z) such that the p in the denominator can be factored out. At that point it is easy to see that dparu(u) = defoe/(\partial g / \partial u)^p and dparz(z) = delillo/(\partial g / \partial z)^p where defoe and delillo are in M_0^1[u,z]. This next subsection is devoted to executing these things.

Note that the minus sign is necessary in obtaining defoe and delillo because of the way maple handles simplification and signs.

Defining defoe and delillo

This next section is going to be somewhat more complicated that its counterpart in the computation of d_U. Since we are on a smooth curve, \partial g / \partial u and \partial g / \partial z are relatively prime. Hence there does exist polynomials Av and Bv in M_0^0[u,z] such that

Av*(\partial g / \partial u) + Bv*(\partial g / \partial z) = 1.

Similarly, everything can be raised to the power p and we will then have Av^p*(\partial g / \partial u)^p + Bv^p*(\partial g / \partial z)^p = 1. Where things get more complicating is in the reduction of finding these polynomials into a single variable problem is is necessary to use maple. In the previous case it was a simple substitution. Here it is not.

Computing Av and Bv such that Av*(\partial g / \partial u) + Bv*(\partial g / \partial z) = 1.

Once again we use of this following lemma:

LEMMA: If d_1, d_2: C \to D are two p-derivations lifting d:M^0 \to M^1 where the diagram

M^0 \to M^1

\downarrow \downarrow

C \to D

is a commutative diagram of rings, if char D = p, and if b_1, b_2 \in D are such that b_1 + b_2 = 1, then b_1*d_1 + b_2*d_2 : C \to D is a p-derivation lifting d.

This means that

Av^p*(\partial g / \partial u)^p *dparu + Bv^p*(\partial g / \partial z)^p * dparz

is a p-derivation, d_V, that takes values in O(V) \otimes M_0^1. Then d_V(u) = Av^p*defoe and d_V(z) = Bv^p*delillo. To calculate d_V(x) we need to use the fact that x = u/v. The procedure is in fact to calculate d_V(u/z) and then transform this into a polynomial in x and y by using the equivalences u = x/y and z = 1/y.

Computation of d_V(u/z)

The final result of this section is called whale. Whale is in fact d_V(u/z).

> d_V(z):=Bvp*delillo;

[Maple Math]

> d_V(u):=Avp*defoe;

[Maple Math]

Now we have a duz which is d_V modulo p applied to u/z.

> duz:=u^p*(-d_V(z)/z^(2*p)) + (1/z^p)*d_V(u);

[Maple Math]
[Maple Math]

> ahab:=subs({(-3/2*c2*z^2-z*c1*u+1)^p = (-(3/2*c2*z^2)^p -(z*c1*u)^p +1), (u*(-3/2*c2*z-c1*u))^p = (u^p*(-(3/2*c2*z)^p -(c1*u)^p))},duz);

[Maple Math]
[Maple Math]

> whale:=simplify(ahab,power,symbolic);

[Maple Math]

>

Transformation of d_V(u/z) into the variables x and y.

First we must transform bombieri. For this we transform u^(3p) + (u*z^2*c1)^p + (z^3 *c2)^p - z^p and then divide by -p.

> bomba:=u^(3*p) + (u*z^2*c1)^p + (z^3 *c2)^p - z^p;

[Maple Math]

> bombatrans:=subs({u = x/y, z = 1/y},bomba);

[Maple Math]

> bombat:=(1/y^(3*p))*simplify(y^(3*p)*bombatrans,power,symbolic);

[Maple Math]

Now we remember that -p*frodo = (x*c1)^p + c2^p - y^(2p) + x^(3p), and hence the denominator here is in fact -p*frodo. So then when we divide out by -p as mentioned, it follows that

> bombieritrans:=frodo/y^(3*p);

[Maple Math]

Now that bombieri has been transformed, it is easy to transform the rest of whale.

> dVxtr:=subs({u=x/y, z=1/y, bombieri = bombieritrans},whale);

[Maple Math]

> dVxtrot:=simplify(simplify(dVxtr,power,sybolic),power, symbolic);

[Maple Math]

> dVxtrans:=(1/y^(2*p))*simplify(y^(2*p)*dVxtrot,power,symbolic);

[Maple Math]

>

>

Computation of (d_U - d_V) (x)

Since in the two previous sections we have computed d_U(x) = dUx and d_V(x)=dVxtrans, the final matter that remains is to take the difference of these two quantities. This is the equation which will be used in later documents to compute fdef.

> newhedda:=dUx - dVxtrans;

[Maple Math]

> willa:=subs((-(4*c1^2+6*x^2*c1-9*x*c2)/(4*c1^3+27*c2^2))^p = ((4*c1^(2*p) + 6*x^(2*p)*c1^p - 9*x^p *c2^p)/(-4*c1^3 - 27*c2^2)^p), newhedda);

[Maple Math]
[Maple Math]

Here we find heddagabler where newhedda = y^p*heddagabler. This is the expression in M_0^1[x,y,y^-1] that will be transformed into normal form and then have the x^2/y coefficient taken to give fdef as this is the image under the defined homology maps.

> heddagabler:=collect(simplify((1/y^p)*newhedda), [d(c1),d(c2)]);

[Maple Math]
[Maple Math]

>