-
Notifications
You must be signed in to change notification settings - Fork 0
/
Test_1_Conjecture_6_local.sage
52 lines (41 loc) · 1.36 KB
/
Test_1_Conjecture_6_local.sage
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
def FindGenerator(Level):
for PossibleGenerator in range(1,Level):
for Exponent in range(1,Level):
if Exponent == Level - 1:
return PossibleGenerator
elif PossibleGenerator**Exponent % Level == 1:
print('here')
def MorphismFromUnits2Cyclic(Level, Generator, Number):
for PossibleImage in range(1, Level):
if (Generator**PossibleImage - Number) % Level == 0:
return PossibleImage
Label = '11.a1'
Prime = 11
E = EllipticCurve(Label)
TE = E.tate_curve(Prime)
q_e = TE.parameter()
ordq_E = E.j_invariant().denominator().valuation(Prime)
q_l = Integer(q_e.unit_part().expansion()[0])
M = E.modular_symbol(+1, implementation="sage")
LMS = []
LMSD = []
for a in range(Prime):
V = M(a/Prime)
LMSD.append(V.denominator())
LMS.append(V)
D = lcm(LMSD)
R = q_l^(LMS[0] * D)
L = 1
a = 1
for b in LMS[1:]:
L = L*a^(D * b * ordq_E)
a = a+1
if L%Prime != R%Prime and L%Prime != -R%Prime:
for ell in list(factor(Prime - 1)):
if gcd(ell[0], E.modular_degree()) > 1:
continue
generator = FindGenerator(Prime)
Image_Left = MorphismFromUnits2Cyclic(Prime, generator, L)
Image_Right = MorphismFromUnits2Cyclic(Prime, generator, R)
if Image_Left % ell[0]**(ell[1]) != Image_Right % ell[0]**(ell[1]):
print('The elliptic curve {} and the layer {} does not satisfy the local multiplicative version of conjecture 6'.format(Label, Prime))