Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
| Download
Project: Math 582b
Views: 2495

January 27, 2016: Much harder (?) -- explicitly computing the mod-3 representation attached to 11a

Let's compute ρE,3:GQGL2(F3)\rho_{E,3}:G_{\QQ} \to \text{GL}_2(\FF_3) for E=11aE=11a.

This is much more challenging that ρE,5\rho_{E,5}, since ρE,3\rho_{E,3} is irreducible.

E = EllipticCurve('11a')

Compute with the Galois representation...

rho = E.galois_representation(); rho
Compatible family of Galois representations associated to the Elliptic Curve defined by y^2 + y = x^3 - x^2 - 10*x - 20 over Rational Field
rho. ︠7a2b0371-f365-4f34-a5aa-bb66332a6cb7︠ rho.reducible_primes()
[5]
rho.non_surjective()
[5]
E.galois_representation().is_surjective(3)
True
groups.matrix.GL(2,GF(3)).cardinality() # trivial formula, of course
48

Next:

  • Can we find K=Q(E[3])K = \QQ(E[3]) explicitly in Sage?

  • Can we explicitly compute E(K)[3]E(K)[3] in Sage?

f = E.division_polynomial(3)
show(f)
3x44x360x2237x21\displaystyle 3 x^{4} - 4 x^{3} - 60 x^{2} - 237 x - 21
show(f.factor())
(3)(x443x320x279x7)\displaystyle \left(3\right) \cdot (x^{4} - \frac{4}{3} x^{3} - 20 x^{2} - 79 x - 7)
%time L = NumberField(f,'a').galois_closure('b') L
CPU time: 0.00 s, Wall time: 0.00 s Number Field in b with defining polynomial x^24 - 15*x^23 - 840*x^22 + 988*x^21 + 409335*x^20 + 4469322*x^19 - 84389399*x^18 - 2252311857*x^17 - 5973386580*x^16 + 421555126680*x^15 + 6059185783074*x^14 - 2052044922573*x^13 - 959356252096146*x^12 - 11142641154135348*x^11 - 17043681264842151*x^10 + 979064092107248616*x^9 + 13821533892566149347*x^8 + 100225159471040012559*x^7 + 444972334181459138604*x^6 + 1195536554454967754724*x^5 + 2274638855864779944099*x^4 + 7233535306023956689248*x^3 + 31743785089110517065360*x^2 + 44841677808700961294616*x + 32436478209228874786224

So LL is a quadratic subfield of K=Q(E[3])K = \QQ(E[3]).

M.<a> = NumberField(f); M
Number Field in a with defining polynomial 3*x^4 - 4*x^3 - 60*x^2 - 237*x - 21
E_M = E.change_ring(M)
E_M.lift_x(a) # expected -- since we need a quadratic extension
Error in lines 1-1 Traceback (most recent call last): File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 905, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/sage/schemes/elliptic_curves/ell_generic.py", line 799, in lift_x raise ValueError("No point with x-coordinate %s on %s"%(x, self)) ValueError: No point with x-coordinate a on Elliptic Curve defined by y^2 + y = x^3 + (-1)*x^2 + (-10)*x + (-20) over Number Field in a with defining polynomial 3*x^4 - 4*x^3 - 60*x^2 - 237*x - 21
Ebar = E.change_ring(QQbar) P = Ebar.lift_x(f.roots(ring=QQbar)[0][0]) P
(-0.09067569590646533? : -0.50000000000000000? + 4.341913249450642?*I : 1)
P[0].minpoly()
x^4 - 4/3*x^3 - 20*x^2 - 79*x - 7
P[1].minpoly()
x^8 + 4*x^7 - 4813/27*x^6 - 4939/9*x^5 + 54181/9*x^4 + 349907/27*x^3 + 89032/9*x^2 + 29885/9*x - 101306819/27
L.<b> = NumberField(P[1].minpoly())
%time M.<c> = L.galois_closure() # I gave up waiting.

Try two construct field via generators instead using two points.

Ebar = E.change_ring(QQbar) r = f.roots(ring=QQbar, multiplicities=False) P = Ebar.lift_x(r[0]) Q = Ebar.lift_x(r[1]) P, Q
((-0.09067569590646533? : -0.50000000000000000? + 4.341913249450642?*I : 1), (6.406539804365758? : 11.25113961695525? : 1))
d = P[1] + Q[1]; d
10.75113961695525? + 4.341913249450642?*I
%time g = d.minpoly()
CPU time: 12.90 s, Wall time: 13.07 s
d = P[1] - 2*Q[1]; d
-23.00227923391048? + 4.341913249450642?*I
%time g = d.minpoly()
CPU time: 5.17 s, Wall time: 5.20 s
g.degree()
48
g
x^48 - 24*x^47 - 47482/9*x^46 + 1131002/9*x^45 + 3069218125/243*x^44 - 72596086816/243*x^43 - 358635226365481/19683*x^42 + 2809575921554956/6561*x^41 + 1048413273460232728/59049*x^40 - 24498066338701224440/59049*x^39 - 19830687248245501291063/1594323*x^38 + 460847110215177831092332/1594323*x^37 + 842908498678002723462203942/129140163*x^36 - 2163203659297677445065786226/14348907*x^35 - 3078827123802885778473364645900/1162261467*x^34 + 70494699375054945800814135705254/1162261467*x^33 + 26844701640637925450964833040788134/31381059609*x^32 - 605797643726551413193755517659805504/31381059609*x^31 - 1721702467541366662849112894886333623218/7625597484987*x^30 + 12637505723689788591786868051864063201640/2541865828329*x^29 + 3429916867723701106101650280051199066590211/68630377364883*x^28 - 72615578533069663455437121036725396503843730/68630377364883*x^27 - 17655991311596206518820746116648430340511892295/1853020188851841*x^26 + 352201183225605173175715524291029143045899131740/1853020188851841*x^25 + 241590840133898052356290641554136395378353679447587/150094635296999121*x^24 - 1475893210531715105893414018491979127248591293767254/50031545098999707*x^23 - 12315883262410736834675356504214624204337910168191655/50031545098999707*x^22 + 606390725543562817119578431505002287175930818312167258/150094635296999121*x^21 + 1705571100003519864942214596040352286856869061521011861/50031545098999707*x^20 - 24610334581580258640092807206090849992484832413995976138/50031545098999707*x^19 - 209126333065027990036500853853357065771027946610062727292/50031545098999707*x^18 + 97325336681615325759356508064386420559697221943329994320/1853020188851841*x^17 + 7313713518708011175810715979993976446028926291567464761931/16677181699666569*x^16 - 715679316702111494646398665907360696063014300878981971397610/150094635296999121*x^15 - 1917753597912877250650087569957318683056645068585028623155924/50031545098999707*x^14 + 17824953201755262032469409469482312037828875221939591293986534/50031545098999707*x^13 + 424616232555622533361727325593428524990465285092532451729674971/150094635296999121*x^12 - 1092653611091029342028377043863974604622384335239303940613486824/50031545098999707*x^11 - 8797816627701127114455282107074063138587398285914239483361669138/50031545098999707*x^10 + 163381947624085057885623053780540552081121797579534205727131433954/150094635296999121*x^9 + 129411542275240391381974138011310762309299428836372265790989086771/16677181699666569*x^8 - 630835085249595798748271169071367149642827175091157248848805058030/16677181699666569*x^7 - 30011428166255278850485543727458144808295463842477505706152203486722/150094635296999121*x^6 + 36876773922484418268270458401251878659910187665704076246557418117342/50031545098999707*x^5 + 198563884876039575669754029511480269896318779722697525374191743850927/50031545098999707*x^4 - 153637443088713327619857329856501373607401936352205020703648962469758/16677181699666569*x^3 + 3945013409893223168390701072737974291351070715511247073965940699890361/16677181699666569*x^2 - 3866035068868356341800539441224194673580691429935874995298565409224080/16677181699666569*x + 222262372782880068141953471823237271416155744917395861231802867601093371/150094635296999121
K.<a> = NumberField(g)
EK = E.change_ring(K)
%time T = EK.torsion_points() # I gave up after 37s
Error in lines 1-1 Traceback (most recent call last): File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 905, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/sage/schemes/elliptic_curves/ell_number_field.py", line 2256, in torsion_points T = self.torsion_subgroup() # make sure it is cached File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/sage/schemes/elliptic_curves/ell_number_field.py", line 2136, in torsion_subgroup self.__torsion_subgroup = ell_torsion.EllipticCurveTorsionSubgroup(self) File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/sage/schemes/elliptic_curves/ell_torsion.py", line 185, in __init__ bound = E._torsion_bound(number_of_places=20) File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/sage/schemes/elliptic_curves/ell_number_field.py", line 2061, in _torsion_bound OK = K.ring_of_integers() File "sage/rings/number_field/number_field_base.pyx", line 54, in sage.rings.number_field.number_field_base.NumberField.ring_of_integers (/projects/sage/sage-6.10/src/build/cythonized/sage/rings/number_field/number_field_base.c:1821) return self.maximal_order() File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/sage/rings/number_field/number_field.py", line 7295, in maximal_order return self._maximal_order(self._normalize_prime_list(v)) File "sage/misc/cachefunc.pyx", line 1888, in sage.misc.cachefunc.CachedMethodCaller.__call__ (/projects/sage/sage-6.10/src/build/cythonized/sage/misc/cachefunc.c:11864) w = self._cachedmethod._instance_call(self._instance, *args, **kwds) File "sage/misc/cachefunc.pyx", line 2544, in sage.misc.cachefunc.CachedMethod._instance_call (/projects/sage/sage-6.10/src/build/cythonized/sage/misc/cachefunc.c:15495) return self._cachedfunc.f(inst, *args, **kwds) File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/sage/rings/number_field/number_field.py", line 7317, in _maximal_order B = [self(b, check=False) for b in self._pari_integral_basis(v=v)] File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/sage/rings/number_field/number_field.py", line 5142, in _pari_integral_basis f = self.pari_polynomial("y") File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/sage/rings/number_field/number_field.py", line 3438, in pari_polynomial return self._pari_absolute_structure()[0].change_variable_name(name) File "sage/misc/cachefunc.pyx", line 2215, in sage.misc.cachefunc.CachedMethodCallerNoArgs.__call__ (/projects/sage/sage-6.10/src/build/cythonized/sage/misc/cachefunc.c:14346) self.cache = f(self._instance) File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/sage/rings/number_field/number_field.py", line 3373, in _pari_absolute_structure g, alpha = f.polredbest(flag=1) File "sage/libs/pari/auto_gen.pxi", line 14070, in sage.libs.pari.gen.gen_auto.polredbest (/projects/sage/sage-6.10/src/build/cythonized/sage/libs/pari/gen.c:78814) pari_catch_sig_on() File "sage/ext/interrupt/interrupt.pyx", line 88, in sage.ext.interrupt.interrupt.sig_raise_exception (/projects/sage/sage-6.10/src/build/cythonized/sage/ext/interrupt/interrupt.c:924) raise KeyboardInterrupt KeyboardInterrupt
CPU time: 6.67 s, Wall time: 7.00 s
# The real work is finding the roots of f in K=Q(E[3]), but # this is hard to do quickly.... %time z = f.roots(K)
CPU time: 118.25 s, Wall time: 132.47 s
%time P0 = EK.lift_x(z[0][0])
CPU time: 62.50 s, Wall time: 66.54 s
%time P1 = EK.lift_x(z[1][0])
CPU time: 57.68 s, Wall time: 60.37 s
# This likely tries to compute the ring of integers of K, which is probably not do-able (?). %time factor2 = K.factor(2)
Error in lines 1-1 Traceback (most recent call last): File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 905, in execute exec compile(block+'\n', '', 'single') in namespace, locals File "", line 1, in <module> File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/sage/rings/number_field/number_field.py", line 4833, in factor return self.ideal(n).factor() File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/sage/rings/number_field/number_field_ideal.py", line 1883, in factor I = K.ideal(F[j,0]) File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/sage/rings/number_field/number_field.py", line 2795, in ideal return self.fractional_ideal(*gens, **kwds) File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/sage/rings/number_field/number_field.py", line 2852, in fractional_ideal return self._fractional_ideal_class_()(self, gens, **kwds) File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/sage/rings/number_field/number_field_ideal.py", line 1802, in __init__ NumberFieldIdeal.__init__(self, field, gens) File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/sage/rings/number_field/number_field_ideal.py", line 194, in __init__ gens = [ZZ(gens.pr_get_p()), field(gens.pr_get_gen())] File "sage/structure/parent.pyx", line 1111, in sage.structure.parent.Parent.__call__ (/projects/sage/sage-6.10/src/build/cythonized/sage/structure/parent.c:9821) return mor._call_(x) File "sage/structure/coerce_maps.pyx", line 104, in sage.structure.coerce_maps.DefaultConvertMap_unique._call_ (/projects/sage/sage-6.10/src/build/cythonized/sage/structure/coerce_maps.c:4435) return C._element_constructor(x) File "/projects/sage/sage-6.10/local/lib/python2.7/site-packages/sage/rings/number_field/number_field.py", line 1512, in _element_constructor_ x = x(beta).lift() File "sage/libs/pari/gen.pyx", line 8096, in sage.libs.pari.gen.gen.__call__ (/projects/sage/sage-6.10/src/build/cythonized/sage/libs/pari/gen.c:135983) return self.eval(*args, **kwds) File "sage/libs/pari/gen.pyx", line 8023, in sage.libs.pari.gen.gen.eval (/projects/sage/sage-6.10/src/build/cythonized/sage/libs/pari/gen.c:135634) pari_catch_sig_on() File "sage/ext/interrupt/interrupt.pyx", line 88, in sage.ext.interrupt.interrupt.sig_raise_exception (/projects/sage/sage-6.10/src/build/cythonized/sage/ext/interrupt/interrupt.c:924) raise KeyboardInterrupt KeyboardInterrupt
CPU time: 20.71 s, Wall time: 21.13 s
%time D = K.defining_polynomial().discriminant()
CPU time: 0.03 s, Wall time: 0.06 s
# Who wants to factor this number? D
149753103175932141499595239973366701461184974709212987882547323720834832634307575191544973968853498602258542753457025950288390410090071809883992772896292295579347266933450600313067116900445755163225234788722443965901789065388614408692426775081763619183853483917273584346967467258241033004107645776839277999909949066212678581155874157011541233426304990961080697634771165239392150997859312387470222416765858500354624472456467609624310739665462387938210688811142756134990327158988692043017073460778852865441245675415264609273901202363052111603932381016812068221219337888332477443944511541514056139654306655547027735675140143966257028370081133500612334331937918350552750276087288264939554197663720207910125410018003798710981690130058744703158888819355390318747996861426398958724045885815812047010523964691799302669386487256873719942644528861513391015377312862424521283474655748538172821671464964164008655305874196635198846368556106449599579794895271785775013731249628650848085637884221443613857089802256890374822902443723213862165674043768634204092785892573516732491396909407590260629141315620792093138191282513700161330749101854359394256703196491293332971177727402658718536048382207024533906760108157406947244873588049301124146141296087720865777091204562003918541075379618326788799213259945749510303533329212838687933039582786478522175075073774864051692850565719120154441045938973800794287774388556861214867206313851918973771052168290382906205660741552651161085778426475119899293325670422071108662116565427580329798211142212949063249340384642889420577278781566125978200579694322423865507851716431314955049632152755735709902682787573562073067095953593589400234593350965934452833782533161594972654104392589863095416521243729588429574934887821199079164426500393472419360123734049622618300971203156834983610778654733895754253606307744953274566517790928538038458170549107041619537752136005530452901923555638446528258063141313582496461586411604914032561923899500689505482832259054370975928714479112784262049675432634513670014890915662212654688122638557986936671806322715658592717683361210856404837421017795290680175403515967833141437417918754434396270406698714755003346743285298658297539705637483105497468737025678783764018211925742221483263442428261371428995095202567452839293212547032246667973158330574499570404481050057945035896766995479598712144475893413298800648263696494432091791064489587205522125153069629446048710083312231789745432197952124800930884739632911782359936545157126471989337544304644408646825646999709740013899058725223157193087266500624376489309739147932688180078389352973391993645441893086282438730251724038880817014345113398299261380380588735656482937556179770195157030767175383601412239694054710478270993527526119806979986872215177834597451865102877571797961484121116545792677552448152851521422829171458430305442266329304726908380094769586949448281721120952543437259909175973928996387201454011539589918293887349756367327609635127966984841192590999664367615148674592822006893180751480814204998652851729894070038015930618199477219472359627212217664961835316025038504307390583007763975509828540228775744432957860810315354599178391340890812091176439283472068973942704625891614759090220522492489410197275214370700251912001573656632725257081980051681457053269555925063723055146149435636424170026712377841049042977316038571033523664457265385736409561803410158713550392837463955644222217053005166176455827659936011078379330640095974697549019182795342501214008607228301290350501932770895395302010132670861221698607604920099817937401477464979530793205419340915373858536752438022825361612470196387856143048170318487167462207575538591082748361047032937837148453103189485769519705732663749462855698979098903394943187475935719604779389557712392153721925578875519048351744/15491274745137421274303920885223967470289581345999798528862476031467027585266591935942778052890921616447467517569397778550696569136084597290595444186804149937087266842747678521488361697943463238001898012811994196866883856063048134607173404348993852626151572779632598800179288226553854101797624855842039132292916864004415789042761274923453748344764221459023577440299496072718868524355885624361371447405112681387283145326205251211160172854993722021328408088732930828864154737397280430388342926666041776219615967841121270914806358713392177173050817734413737754168840846826111106093709122276600102777329100447028813811227551768642569363906986723838081725350247658609315708093867806163377719093483210042159694488155729164073779996979219517803049998686418666962381877553837131592342216711034084090895701216453837220597184578142048510038803492341285489154381085435797831759885418329835952362365337562701160287253770361822730305400737794589708533361191714166316178629202371852899855929

Still, by understanding what is really going on regarding computation of maximal orders, factoring primes, etc., explicit computation of this Galois representation is possible. At least I believe it is. I don't know if anybody has done it though.