Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Project: Math 582b
Views: 2495

January 29, 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.

(quick review of last time then finish)

E = EllipticCurve('11a')
groups.matrix.GL(2,GF(3)).cardinality() # trivial formula, of course
48
%time f = E.division_polynomial(3) Ebar = E.change_ring(QQbar) v = f.roots(ring=QQbar, multiplicities=False) P = Ebar.lift_x(v[0]) Q = Ebar.lift_x(v[1]) P, Q
((-0.09067569590646533? : -0.50000000000000000? + 4.341913249450642?*I : 1), (6.406539804365758? : 11.25113961695525? : 1)) CPU time: 0.88 s, Wall time: 9.49 s
# "Random" element of K = Q(E[3]) -- doesn't work: d = P[1] + Q[1]; d
10.75113961695525? + 4.341913249450642?*I
%time g = d.minpoly()
CPU time: 19.94 s, Wall time: 20.76 s
g.degree()
24
# Another "random" element; works. d = P[1] - 2*Q[1]; d
-23.00227923391048? + 4.341913249450642?*I
%time g = d.minpoly()
CPU time: 6.88 s, Wall time: 7.65 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. However, it WORKS! %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.00 s, Wall time: 0.03 s
# Who wants to factor this number? # (theorem says it is divisible only by powers and 3 and 11. But...) D
149753103175932141499595239973366701461184974709212987882547323720834832634307575191544973968853498602258542753457025950288390410090071809883992772896292295579347266933450600313067116900445755163225234788722443965901789065388614408692426775081763619183853483917273584346967467258241033004107645776839277999909949066212678581155874157011541233426304990961080697634771165239392150997859312387470222416765858500354624472456467609624310739665462387938210688811142756134990327158988692043017073460778852865441245675415264609273901202363052111603932381016812068221219337888332477443944511541514056139654306655547027735675140143966257028370081133500612334331937918350552750276087288264939554197663720207910125410018003798710981690130058744703158888819355390318747996861426398958724045885815812047010523964691799302669386487256873719942644528861513391015377312862424521283474655748538172821671464964164008655305874196635198846368556106449599579794895271785775013731249628650848085637884221443613857089802256890374822902443723213862165674043768634204092785892573516732491396909407590260629141315620792093138191282513700161330749101854359394256703196491293332971177727402658718536048382207024533906760108157406947244873588049301124146141296087720865777091204562003918541075379618326788799213259945749510303533329212838687933039582786478522175075073774864051692850565719120154441045938973800794287774388556861214867206313851918973771052168290382906205660741552651161085778426475119899293325670422071108662116565427580329798211142212949063249340384642889420577278781566125978200579694322423865507851716431314955049632152755735709902682787573562073067095953593589400234593350965934452833782533161594972654104392589863095416521243729588429574934887821199079164426500393472419360123734049622618300971203156834983610778654733895754253606307744953274566517790928538038458170549107041619537752136005530452901923555638446528258063141313582496461586411604914032561923899500689505482832259054370975928714479112784262049675432634513670014890915662212654688122638557986936671806322715658592717683361210856404837421017795290680175403515967833141437417918754434396270406698714755003346743285298658297539705637483105497468737025678783764018211925742221483263442428261371428995095202567452839293212547032246667973158330574499570404481050057945035896766995479598712144475893413298800648263696494432091791064489587205522125153069629446048710083312231789745432197952124800930884739632911782359936545157126471989337544304644408646825646999709740013899058725223157193087266500624376489309739147932688180078389352973391993645441893086282438730251724038880817014345113398299261380380588735656482937556179770195157030767175383601412239694054710478270993527526119806979986872215177834597451865102877571797961484121116545792677552448152851521422829171458430305442266329304726908380094769586949448281721120952543437259909175973928996387201454011539589918293887349756367327609635127966984841192590999664367615148674592822006893180751480814204998652851729894070038015930618199477219472359627212217664961835316025038504307390583007763975509828540228775744432957860810315354599178391340890812091176439283472068973942704625891614759090220522492489410197275214370700251912001573656632725257081980051681457053269555925063723055146149435636424170026712377841049042977316038571033523664457265385736409561803410158713550392837463955644222217053005166176455827659936011078379330640095974697549019182795342501214008607228301290350501932770895395302010132670861221698607604920099817937401477464979530793205419340915373858536752438022825361612470196387856143048170318487167462207575538591082748361047032937837148453103189485769519705732663749462855698979098903394943187475935719604779389557712392153721925578875519048351744/15491274745137421274303920885223967470289581345999798528862476031467027585266591935942778052890921616447467517569397778550696569136084597290595444186804149937087266842747678521488361697943463238001898012811994196866883856063048134607173404348993852626151572779632598800179288226553854101797624855842039132292916864004415789042761274923453748344764221459023577440299496072718868524355885624361371447405112681387283145326205251211160172854993722021328408088732930828864154737397280430388342926666041776219615967841121270914806358713392177173050817734413737754168840846826111106093709122276600102777329100447028813811227551768642569363906986723838081725350247658609315708093867806163377719093483210042159694488155729164073779996979219517803049998686418666962381877553837131592342216711034084090895701216453837220597184578142048510038803492341285489154381085435797831759885418329835952362365337562701160287253770361822730305400737794589708533361191714166316178629202371852899855929
%time factor(D) # I gave up after 5 minutes...
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/arith.py", line 2469, in factor return n.factor(**kwds) File "sage/rings/rational.pyx", line 2807, in sage.rings.rational.Rational.factor (/projects/sage/sage-6.10/src/build/cythonized/sage/rings/rational.c:24115) return self.numerator().factor() * \ File "sage/rings/integer.pyx", line 3511, in sage.rings.integer.Integer.factor (/projects/sage/sage-6.10/src/build/cythonized/sage/rings/integer.c:22694) F = factor_using_pari(n, int_=int_, debug_level=verbose, proof=proof) File "sage/rings/factorint.pyx", line 352, in sage.rings.factorint.factor_using_pari (/projects/sage/sage-6.10/src/build/cythonized/sage/rings/factorint.c:6295) p, e = n._pari_().factor(proof=proof) File "sage/libs/pari/gen.pyx", line 8977, in sage.libs.pari.gen.gen.factor (/projects/sage/sage-6.10/src/build/cythonized/sage/libs/pari/gen.c:140617) 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: 295.96 s, Wall time: 306.69 s

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

Our goal now is to understand more deeply how these things work, and see if a more direct and informed approach will let us compute the factorization of primes and reduction of points on EE. When we learn each algorithm, we will see to what extent it applies here.

Algorithms we will learn next week:

  • Factoring integers of ZZ in number fields. Motivation: factor the first few primes in the field of degree 48 defined by gg above!

  • Reducing modulo a prime of K without having to compute the ring of integers of K. Motivation: reducing our two explicitly computed points so we can compute