forked from stmar89/AbVarFq
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtelescope_workshop_04.txt
100 lines (72 loc) · 2.45 KB
/
telescope_workshop_04.txt
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
AttachSpec("packages.spec");
P<x>:=PolynomialRing(Integers());
f:=x^6 - 3*x^4 - 4*x^3 - 15*x^2 + 125;
is_weil, q := IsWeil(f);
is_ordinary:=IsOrdinary(f);
g := Degree(f)/2;
K:= AssociativeAlgebra(f);
F:= PrimitiveElement(K);
V:= q/F;
R:= Order([F,q/F]);
OK := MaximalOrder(R);
//This is the basis that we are using for the LMFDB
std_beta := Reverse([V^i : i in [0..g-1]]) cat [F^i : i in [1..g] ]; //lmfdb-basis as power basis
chg_of_basis:=Transpose(Matrix(std_beta)); //lmfdb-basis to power-basis
inverse_chg_of_basis:=chg_of_basis^-1;
load "graph_maker.m";
icmR := ICM(R);
icmR_sorted := Sort(icmR,CompareLattice);
function FakeLabel(I);
i:=0;
found_it := False;
while found_it eq False do
i+:=1;
J:=icmR_sorted[i];
found_it = IsIsomorphic2(I,J);
end while;
return i;
end function;
num_ab := #icmR_sorted;
function RationalPointsLMFDB(I,r)
//elementary divisors for rational points
ab_group := RationalPoints(I,r);
elt_divs := ElementaryDivisors(ab_group);
return elt_divs;
end function;
function Dual(I)
Idual := TraceDual(ComplexConjugate(I));
return Idual;
end function;
/*
function FrobeniusTwist(I)
Iprime + (1/p) Iprimeprime
end function;
*/
//for J in icmR_sorted
//*********************************************************************************
// Things to pre-compute
//*********************************************************************************
OJ := MultiplicatorRing(J);
Jdual := Dual(J);
NSJ := Colon(J,Jdual); //Neron-Sevari lattice, containing all polarizations
Jftwist := FrobeniusTwist(J);
Jvtwist := VershiebungTwist(J);
//*********************************************************************************
// TUPLE MAKER
//*********************************************************************************
g;
q;
dJ,AJ,DMJ,TJ := HNFify(J); //third entry is the Deligne_Module in HNF coordinates
hw_matrix := Matrix(2,[2,2,2,2]) //There is code for this
dual_label := FakeLabel(Jdual);
frob_twist_label := FrobTwistLabel(Jftwist);
ver_twist_label := VerTwistLabel(Jvtwist);
//prin_polarizations, period_lattices
prin_polarizations := 0;
//period_lattice := PeriodMatrix(J,x0,phi); //x0 polarization, phi CMtype
period_lattice :=0;
points := [* RationalPointsLMFDB(I,j) : j in [1..g] *];
//kernel of Frobenius is a good one
big_tuple := [* label,g,q, DMJ, hw_matrix, dual_label,frob_twist_label,ver_twist_label, NS_label, , endo_order, points *]
print big tuple;
//end for;