forked from stmar89/AbVarFq
-
Notifications
You must be signed in to change notification settings - Fork 0
/
rational_points.m
32 lines (24 loc) · 982 Bytes
/
rational_points.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/* vim: set syntax=magma :*/
freeze;
/////////////////////////////////////////////////////
//// Group of rational points
//// Stefano Marseglia, Utrecht University, [email protected]
//// http://www.staff.science.uu.nl/~marse004/
///////////////////////////////////////////////////////
intrinsic RationalPoints(I::AlgAssVOrdIdl,r::RngIntElt)-> GrpAb , Map
{Computes the group FF_(q^r) rational points G of the abelian variety determined by I and returns G,g, where g is a surjective map I->G}
A:=Algebra(Order(I));
F:=PrimitiveElement(A);
zb:=ZBasis(I);
Fr:=FreeAbelianGroup(#zb);
rel:=[ Fr!Eltseq(c) : c in Coordinates( [(1-F^r)*g : g in zb],zb ) ];
Q,q:=quo<Fr|rel>;
mIQ:=map< A->Q | x:->q(Fr ! Eltseq(Coordinates([x],zb)[1])),
y:->A ! ((&+[ zb[j]*Eltseq(y)[j] : j in [1..#zb]])@@q)>;
assert #Q eq Evaluate(DefiningPolynomial(A),1);
return Q,mIQ;
end intrinsic;
//function Kernel(I,J,alpha)
/*
Find the group scheme of the kernel of a particular isogeny
*/