csage.server.notebook.notebook Notebook q)q}q(U_Notebook__worksheetsq}q(Upadicq(csage.server.notebook.worksheet Worksheet qoq}q (U_Worksheet__filenameq Upadicq U_Worksheet__cellsq ]q ((csage.server.notebook.cell TextCell qoq}q(U_TextCell__worksheetqhU_TextCell__textqTz

Iwasawa theory and $p$-adic Analogues of the BSD Conjecture




Christian Wuthrich and I are finishing a paper right now called Computations About Tate-Shafarevich Groups Using Iwasawa Theory, which combines a range of theorems of Kato, Perrin-Riou, Schneider, and others to prove the following result in the rank 1 case (among other things):

Theorem (p-adic Iwasawa-style bound): Let $E$ be an elliptic curve over ${\bf Q}$ with analytic rank $1$ having good ordinary reduction at an odd prime $p$. Suppose that representation $\overline{\rho}_{E,p}$ is either surjective or reducible and that the $p$-adic regulator ${\rm Reg}_p(E)$ is nonzero. Then $$ {\rm ord}_p(\#{\rm Sha}(E/{\bf Q})) \leq {\rm ord}_p\left(\mbox{the BSD conjectural order of Sha}\right). $$

NOTE: I didn't mention either Iwasawa theory or $p$-adic $L$-functions in the statement of the theorem! However, there is an important refinement of this theorem at bad multiplicative and supersingular primes, which gives an explicit bound in terms of certain $p$-adic regulators that we will not define here.

The case of primes of additive reduction remains problematic.


qU _TextCell__idqM2Aub(csage.server.notebook.cell Cell qoq}q(U _Cell__inqU/E = EllipticCurve('141a'); E #autoqU_Cell__introspect_htmlqU!
qU_Cell__worksheetqhU_Cell__completionsqU_Cell__introspectqU_Cell__out_htmlqUU	_Cell__idq M3AU_Cell__timeq!U_Cell__is_htmlq"U_before_preparseq#Uos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/padic/cells/307")
E = EllipticCurve('141a'); E              #autoq$U
_Cell__dirq%U(sage_notebook/worksheets/padic/cells/307q&U
_Cell__outq'UO
Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational Field

q(Uhas_new_outputq)U_Cell__versionq*KU_Cell__sageq+csage.interfaces.sage0
reduce_load_Sage
q,)Rq-U_Cell__typeq.Uwrapq/U_Cell__interruptedq0ub(hoq1}q2(hUshow(factor(141))q3hU!
q4hhhhhUh M4Ah!h"h#Ulos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/padic/cells/308")
show(factor(141))q5h%U(sage_notebook/worksheets/padic/cells/308q6h'U3
3 \cdot 47
q7h)h*Kh+h-h.h/h0ub(hoq8}q9(hhhUD

Note that 7 is a prime of good ordinary reduction for $E$:q:hM5Aub(hoq;}q<(hU=print E.is_good(7), E.is_ordinary(7) print E.is_surjective(7)q=hU!
q>hhhhhUh M6Ah!h"h#Uos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/padic/cells/310")
print E.is_good(7), E.is_ordinary(7)
print E.is_surjective(7)q?h%U(sage_notebook/worksheets/padic/cells/310q@U_word_being_completedqAU
E.is_surjeqBh)h*Kh+h-h0h.h/h'U
True True
(True, None)

qCub(hoqD}qE(hhhTS

Next we compute the $7$-adic regulator and verify that it is nonzero. Due to a recent paper of Mazur-Stein-Tate that builds on Kedlaya's algorithm, and much optimization work of David Harvey, SAGE can quite quickly compute $p$-adic heights to very high precision and for surprisingly large $p$.qFhM7Aub(hoqG}qH(hU-time reg7 = E.padic_regulator(7,6) show(reg7)qIhU!
qJhhhhhUh M8Ah!h"h#Uos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/padic/cells/312")
__SAGE_t__=cputime()
__SAGE_w__=walltime()
reg7 = E.padic_regulator(7,6)
show(reg7)qKh%U(sage_notebook/worksheets/padic/cells/312qLh'U
4\cdot 7^{-1} + 3 + 4\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 3\cdot 7^{5} + O(7^{6})
CPU time: 0.27 s, Wall time: 0.57 s qMh)h*Kh+h-h.UwrapqNh0ub(hoqO}qP(hhhT 

Since $p=7$ is a good ordinary prime and $E$ has rank $1$, it's not necessary to compute the $7$-adic $L$-function of $E$. Nonetheless we do that for fun (and it would have been needed if $p$ were supersingular or a prime of multiplicative reduction):qQhM9Aub(hoqR}qS(hU"L7 = E.padic_lseries(7,prec=6); L7qThU!
qUhhhhhUh M:Ah!h"h#U}os.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/padic/cells/314")
L7 = E.padic_lseries(7,prec=6); L7qVh%U(sage_notebook/worksheets/padic/cells/314qWh'Ub
7-adic L-series of Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational Field

qXh)h*Kh+h-h.h/h0ub(hoqY}qZ(hUshow(L7.approx(3))q[hU!
q\hhhhhUh M;Ah!h"h#Umos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/padic/cells/315")
show(L7.approx(3))q]h%U(sage_notebook/worksheets/padic/cells/315q^h'TJ
\left(1 + 3\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 6\cdot 7^{5} + O(7^{6})\right)T + \left(6\cdot 7 + 5\cdot 7^{2} + 6\cdot 7^{4} + 6\cdot 7^{5} + O(7^{6})\right)T^{2} + \left(6 + 4\cdot 7 + 2\cdot 7^{3} + 5\cdot 7^{4} + 2\cdot 7^{5} + O(7^{6})\right)T^{3} + O(\text{T}^{4})
q_h)h*Kh+h-h.h/h0ub(hoq`}qa(hhhT

ASIDE: There is a formula of Perrin-Riou that one could also use to compute $\mathcal{L}_p'(E,0)$ when $p$ is good ordinary: $$ \frac{1}{\Reg(E/\QQ)} \cdot \frac{L'(E,1)}{\Omega_E} =\frac{1}{\Reg_p(E/\QQ)}\cdot \frac{\mathcal{L}_p'(E,0)}{(1-\frac{1}{\alpha})^2\cdot \log(\kappa(\gamma))} $$ which is an equality of rational numbers.

This formula is why we didn't have to mention $p$-adic $L$-functions in the theorem above.

NEXT: Conclusion -- BSD is true for 141a

qbhM=Aub(hoqc}qd(hUhhhhUh M>Ah%U(sage_notebook/worksheets/padic/cells/318qeh'Uh)h*Kh+Nh.Uhiddenqfh0ub(hoqg}qh(hUhhhhUh M?Ah%U(sage_notebook/worksheets/padic/cells/319qih'Uh)h*Kh+Nh.hfh0ubeU_Worksheet__synchroqjKWU_Worksheet__nameqkUpadicqlU_Worksheet__dirqmUsage_notebook/worksheets/padicqnU_Worksheet__attachedqo}qpU/Users/was/.sage/init.sageqqGAjesU_Worksheet__queueqr]qsU_Worksheet__next_idqtMAAU_Worksheet__passcryptquU_Worksheet__comp_is_runningqvU_Worksheet__saltqwU1170852461.195640qxU_Worksheet__notebookqyhU_Worksheet__systemqzNU_Worksheet__next_block_idq{KU_Worksheet__idq|KU_Worksheet__passcodeq}U 11G3BJNEUV/Pkq~ubUbsdintroq(hoq}q(h Ubsdintroqh ]q((hoq}q(hhhT(

1. The Birch and Swinnerton-Dyer Conjecture

Let $E$ be an elliptic curve over $\bf Q$: $$ y^2 + a_1 xy + a_3 y = x^3 + a_2 x^2 + a_4 x + a_6. $$ The BSD conjecture asserts that
  1. The rank $r$ of $E({\bf Q})$ equals $r_{\rm an} = {\rm ord}_{s=1}L(E,s)$.

  2. We have $$ \frac{L^{(r)}(E,1)}{r!} = \frac{\#{\rm Sha}(E) \cdot \Omega_{E} \cdot {\rm Reg}_E\cdot {\prod_{p\mid N} c_p},} {\#E({\bf Q})_{\rm tor}^2} $$ where $N$ is the conductor of $E$.

This talk is about computing quantities appearing in the above conjecture and in $p$-adic analogues of it.


Let's give it a shot...
First we look up a curve that will illustrate a range of methods in Cremona's tables:qhM#ub(hoq}q(hU@E = EllipticCurve('141a1') #auto loadqhU!
qhhhhhUh M#h!h"h#Uos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1016")
E = EllipticCurve('141a1')                            #auto loadqh%U,sage_notebook/worksheets/bsdintro/cells/1016qh'U

qh)h*Kh+h-h.h/h0ub(hoq}q(hhhU!Here's the equation of the curve:qhM#ub(hoq}q(hUshow(E)qhU!
qhhhhhUh M#h!h"h#Ufos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1018")
show(E)qh%U,sage_notebook/worksheets/bsdintro/cells/1018qh'UG
y^2 + y = x^3 + x^2 - 12x + 2
qh)h*Kh+h-h.h/h0ub(hoq}q(hhhU=The conductor is a product of two primes: $141 = 3 \cdot 47$.qhM#ub(hoq}q(hUshow(factor(141))qhU!
qhhhhhUh M#h!h"h#Upos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1020")
show(factor(141))qh%U,sage_notebook/worksheets/bsdintro/cells/1020qh'U3
3 \cdot 47
qh)h*Kh+h-h.h/h0ub(hoq}q(hhhUDThe graph of the real points on the curve is connected (and pretty):qhM#ub(hoq}q(hU#show(plot(E, hue=0.8, thickness=3))qhU!
qhhhhhUDqh M#h!h"h#Uos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1022")
show(plot(E, hue=0.8, thickness=3))qh%U,sage_notebook/worksheets/bsdintro/cells/1022qh'U

qh)h*Kh+h-h.h/h0ub(hoq}q(hhhUzWe next plot a bunch of rational points on the curve using a 3-d ray tracer (for fun).
Lighter points have larger height.qhM#ub(hoq}q(hT%hide # 3d plot of rational points
t = Tachyon(xres=800, yres=500, camera_center=(2,20,6), look_at=(2,-5,-2), raydepth=6)
t.light((25,3,2), 1, (1,1,1))
t.light((25,-3,2), 1, (1,1,1))
t.light((25,-3,10), 1, (1,1,1))
t.texture('black', color=(0,0,0))
t.texture('red', color=(1,0,0))
t.texture('white', color=(1,1,1))
t.plane((0,0,0),(0,0,1),'white')
t.cylinder((0,0,0),(1,0,0),.05,'black')
t.cylinder((0,0,0),(0,1,0),.05,'black')
F = E.change_ring(RDF)
P = E.point([-3,4,1],check=False)
Q = P
n = 200
for i in range(n):  
    Q = Q + P
    c = i/n + .1
    t.texture('r%s'%i,color=(float(i/n),0,0))
    t.sphere((Q[0], -Q[1], .01), .1, 'r%s'%i)

show(t)qhU!
qhhhhhUDqh M$h!h"h#Tos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1024")
%hide # 3d plot of rational points
t = Tachyon(xres=800, yres=500, camera_center=(2,20,6), look_at=(2,-5,-2), raydepth=6)
t.light((25,3,2), 1, (1,1,1))
t.light((25,-3,2), 1, (1,1,1))
t.light((25,-3,10), 1, (1,1,1))
t.texture('black', color=(0,0,0))
t.texture('red', color=(1,0,0))
t.texture('white', color=(1,1,1))
t.plane((0,0,0),(0,0,1),'white')
t.cylinder((0,0,0),(1,0,0),.05,'black')
t.cylinder((0,0,0),(0,1,0),.05,'black')
F = E.change_ring(RDF)
P = E.point([-3,4,1],check=False)
Q = P
n = 200
for i in range(n):  
    Q = Q + P
    c = i/n + .1
    t.texture('r%s'%i,color=(float(i/n),0,0))
    t.sphere((Q[0], -Q[1], .01), .1, 'r%s'%i)

show(t)qh%U,sage_notebook/worksheets/bsdintro/cells/1024qh'U

qh)h*Kh+h-h.h/h0ub(hoq}q(hhhU~




We use Tim Dokchitser's $L$-functions program to compute with the $L$-function of this elliptic curve.qhM$ub(hoq}q(hUL = E.Lseries_dokchitser(); LqhU!
qhhhhhUh M$h!h"h#U|os.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1026")
L = E.Lseries_dokchitser(); Lqh%U,sage_notebook/worksheets/bsdintro/cells/1026qh'Us
Dokchitser L-function associated to Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational Field

qh)h*Kh+h-h.h/h0ub(hoq}q(hhhULFor example, here is the Taylor expansion about $z=(s-1)$ of the $L$-series.qhM$ub(hoq}q(hU%T = L.taylor_series(a=1,k=5); show(T)qhU!
qhhhhhUh M$h!h"h#Uos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1028")
T = L.taylor_series(a=1,k=5); show(T)qh%U,sage_notebook/worksheets/bsdintro/cells/1028qh'U
\text{0.718550172498336}z + \left(\text{-0.0426008377591305}\right)z^{2} + \left(\text{-0.322488300418669}\right)z^{3} + \text{0.307082078154713}z^{4} + O(\text{z}^{5})
qh)h*Kh+h-h.h/h0ub(hoq}q(hhhU.Of course the derivative at $1$ is consistent:qhM$ub(hoq}q(hUL(0)qhU!
qhhhhhUh M$h!h"h#Ucos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1030")
L(0)qh%U,sage_notebook/worksheets/bsdintro/cells/1030qh'U
0

qh)h*Kh+h-h.h/h0ub(hoq}q(hhhUNext we plot the $L$-series:qhM$ub(hoq}q(hU[P = plot(lambda x: real(L(x)), -1,3, rgbcolor=(1,0,0), thickness=3, plot_points=30)
show(P)qhU!
qhhhhhUDqh M$h!h"h#Uos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1032")
P = plot(lambda x: real(L(x)), -1,3, rgbcolor=(1,0,0), thickness=3, plot_points=30)
show(P)qh%U,sage_notebook/worksheets/bsdintro/cells/1032qh'U

qh)h*Kh+h-h.h/h0ub(hoq}q(hhhUUAnd it does in fact vanish at 1 because the sign in the functional equation
is $-1$.qhM	$ub(hoq}q(hUBprint 'eps = ', E.root_number()
print 'L(E,1) = ', E.Lseries_at1()qhU!
qhhhhhUh M
$h!h"h#Uos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1034")
print 'eps = ', E.root_number()
print 'L(E,1) = ', E.Lseries_at1()qh%U,sage_notebook/worksheets/bsdintro/cells/1034qh'U
eps =  -1
L(E,1) =  0

qh)h*Kh+h-h.h/h0ub(hoq}q(hhhUv
We can also compute the zeros of the $L$-function on the critical line using Mike Rubinstein's Lcalc program:qhM $ub(hoq}q(hUi%time Z = E.Lseries_zeros(20) show(point([(0.5, y) for y in Z], pointsize=50, hue=0.62), xmin=0, xmax=1)qhU!
qhhhhhUDqh M$h!h"h#Uos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1036")
__SAGE_t__=cputime()
__SAGE_w__=walltime()
Z = E.Lseries_zeros(20)
show(point([(0.5, y) for y in Z], pointsize=50, hue=0.62), xmin=0, xmax=1)qh%U,sage_notebook/worksheets/bsdintro/cells/1036qh'U'
CPU time: 0.17 s,  Wall time: 0.68 s

qh)h*Kh+h-h.h/h0ub(hoq}q(hhhUc




Our curve has rank and analytic rank both 1, in accord with the conjecture.qhM $ub(hoq}q(hUE.analytic_rank()qhU!
qhhhhhUh M$h!h"h#Upos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1038")
E.analytic_rank()qh%U,sage_notebook/worksheets/bsdintro/cells/1038qh'U
1

qh)h*Kh+h-h.h/h0ub(hor}r(hUE.rank()rhU!
rhhhhhUh M$h!h"h#Ugos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1039")
E.rank()rh%U,sage_notebook/worksheets/bsdintro/cells/1039rh'U
1

rh)h*Kh+h-h.h/h0ub(hor}r(hhhU1We compute a generator of the Mordell-Weil group:r	hM$ub(hor
}r(hUE.gens()rhU!
r
hhhhhUh M$h!h"h#Ugos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1041")
E.gens()rh%U,sage_notebook/worksheets/bsdintro/cells/1041rh'U
[(-3 : 4 : 1)]

rh)h*Kh+h-h.h/h0ub(hor}r(hhhUThe regulator is as follows.rhM$ub(hor}r(hU
E.regulator()rhU!
rhhhhhUh M$h!h"h#Ulos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1043")
E.regulator()rh%U,sage_notebook/worksheets/bsdintro/cells/1043rh'U
0.0344867750175524

rh)h*Kh+h-h.h/h0ub(hor}r(hhhU"The Tamagawa number at $3$ is $7$.rhM$ub(hor}r(hUE.tamagawa_numbers()r hU!
r!hhhhhUh M$h!h"h#Usos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1045")
E.tamagawa_numbers()r"h%U,sage_notebook/worksheets/bsdintro/cells/1045r#h'U	
[7, 1]

r$h)h*Kh+h-h.h/h0ub(hor%}r&(hhhU+The regulator $\Omega_E$ is about $2.9765$.r'hM$ub(hor(}r)(hU	E.omega()r*hU!
r+hhhhhUh M$h!h"h#Uhos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1047")
E.omega()r,h%U,sage_notebook/worksheets/bsdintro/cells/1047r-h'U
2.976504024814575615165574

r.h)h*Kh+h-h.h/h0ub(hor/}r0(hhhUIThe curve has trivial torsion subgroup, so $\# E({\bf Q})_{\rm tor} = 1$.r1hM$ub(hor2}r3(hUE.torsion_order()r4hU!
r5hhhhhUh M$h!h"h#Upos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1049")
E.torsion_order()r6h%U,sage_notebook/worksheets/bsdintro/cells/1049r7h'U
1

r8h)h*Kh+h-h.h/h0ub(hor9}r:(hhhU




Now we put it all together: $$ \frac{L^{(r)}(E,1)}{r!} = \frac{\#{\rm Sha}(E) \cdot \Omega_{E} \cdot {\rm Reg}_E} {\#E({\bf Q})_{\rm tor}^2} \cdot {\prod_{p\mid N} c_p}, $$r;hM$ub(hor<}r=(hUL1 = L.derivative(1); r = 1; Omega = E.omega(); T = E.torsion_order(); Reg = E.regulator(); c = E.tamagawa_product() print "L1 = ", L1 print "rhs = %s * Sha"%( (Omega * Reg * c)/T^2 )r>hU!
r?hhhhhUh M$h!h"h#Tos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1051")
L1 = L.derivative(1); r = 1; Omega = E.omega(); 
T = E.torsion_order(); Reg = E.regulator(); c = E.tamagawa_product()

print "L1 = ", L1
print "rhs = %s * Sha"%(   (Omega * Reg * c)/T^2   )r@h%U,sage_notebook/worksheets/bsdintro/cells/1051rAh'U8
L1 =  0.718550172498336
rhs = 0.718550172498336 * Sha

rBh)h*Kh+h-h.h/h0ub(horC}rD(hhhT


We Conclude

Thus the BSD conjecture asserts in this case that $\#{\rm Sha}(E)= 1$. We will compute $\#{\rm Sha}(E)$ and hence prove the conjecture. The methods we use are fairly general (assuming that $r<2$), though much interesting work remains to be done.

$$ {\rm Sha}(E) = \ker\left(H^1({\bf Q},E) \to \bigoplus H^1({\bf Q}_v, E)\right) =_{\rm BSD} \{ 0 \}. $$


The 2-Selmer Group

We can get some information about ${\rm Sha}(E)$ by computing the 2-Selmer group. From this we see that $\#{\rm Sha}$ is odd.

From the first calculation we see that the rank of the elliptic curve is at most $1$ (this uses mwrank):rEhM$ub(horF}rG(hUE.selmer_rank_bound()rHhU!

rIhhhhhUh M$h!h"h#Utos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1053")
E.selmer_rank_bound()rJh%U,sage_notebook/worksheets/bsdintro/cells/1053rKh'U
1

rLh)h*Kh+h-h.h/h0ub(horM}rN(hhhUNSince the curve is known to have rank 1, this means that ${\rm Sha}(E)[2] =0$.rOhM$ub(horP}rQ(hUE.two_selmer_shabound()rRhTJ
File:        /Users/was/s/local/lib/python2.5/site-packages/sage/schemes/elliptic_curves/ell_rational_field.py
Type:        <type 'instancemethod'>
Definition:  E.two_selmer_shabound()
Docstring: 

        Returns a bound on the dimension of Sha(E)[2], computed using
        a 2-descent.
rShhhh]rT(UE.two_selmer_shabound?rUUehUh M$h!h"h#Uuos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1055") E.two_selmer_shabound?rVh%U,sage_notebook/worksheets/bsdintro/cells/1055rWh'U 0 rXh)h*Kh+h-h.h/h0ub(horY}rZ(hhhUqAlternatively, we can compute the rank of the $2$-Selmer group using Denis Simon's algebraic 2-descent program.r[hM $ub(hor\}r](hUE.simon_two_descent()r^hU!
r_hhhhhUh M!$h!h"h#Utos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/bsdintro/cells/1057")
E.simon_two_descent()r`h%U,sage_notebook/worksheets/bsdintro/cells/1057rah'U
(1, 1, [(-15 : 729 : 1)])

rbh)h*Kh+h-h.h/h0ub(horc}rd(hhhU

This talk is about how it is becoming possible to in practice to systematically compute much more about $\Sha(E)$.

Next: Theorems of Kolyvagin and KatorehM"$ubehjKhkUbsdintrorfhmU!sage_notebook/worksheets/bsdintrorgho}rhU/Users/was/.sage/init.sageriGAjeshr]rjhtM#$huhvhwU1170851871.339754rkhyhhzNh{Kgh|Kh}U 11G3BJNEUV/PkrlubUnextrm(horn}ro(h Unextrph ]rq((horr}rs(hjnhT

Summary of Results and The Goal




Theorem 1 (Stein and Grigorov, Jorza, Patrikis, Tarnita)

Theorem 1: Suppose that $E$ is a non-CM elliptic curve of rank $\leq 1$, conductor $\leq 1000$ and that $p$ is a prime. If $p$ is odd, assume further that the mod $p$ representation $\overline{\rho}_{E,p}$ is irreducible and $p$ does not divide any Tamagawa number of $E$. Then ${\rm BSD}(E,p)$ is true.

  1. The proof involves combining refinements of the theorems of Kolyvagin and Kato with explicit 2 and 3-descents.

  2. Much work goes into just making this computation practical.

  3. One can completely carry it out using SAGE, except for the 3-descents, which rely on code that Michael Stoll wrote for MAGMA, and three 4-Selmer group computations, which are also available nowhere but in MAGMA. These are the only curves in Cremona's book that conjecturally have nontrivial Sha:
       571a    681b   960d   960n
        4       9      4      4
    



Theorem 2 (Stein and Lum)

Theorem 2: Suppose that $E$ is a CM elliptic curve of rank $\leq 1$ (59 rank 0 and 56 rank 1), conductor $\leq 5000$ and that $p\geq 5$ is a prime of good reduction for $E$. Then ${\rm BSD}(E,p)$ is true.


  1. The proof in the rank 0 case is basically an application of a theorem of Rubin.

  2. When $E$ has rank 1, a theorem of Mazur and Swinnerton-Dyer gives ${\rm BSD}(E,p)$ at split primes, and for inert primes we do an explicit Heegner point calculation and use Kolyvagin's bound.




Anticipated Theorem 3 (Stein and Wuthrich)

Anticipaed Theorem 3: Suppose that $E$ is a non-CM elliptic curve of rank $\leq 1$, conductor $\leq 1000$ and that $p\geq 5$ is a prime that divides a Tamagawa number of $E$ or such that the mod $p$ representation $\overline{\rho}_{E,p}$ is reducible. Assume further that $E$ has good ordinary or bad multiplicative reduction at $p$. Then ${\rm BSD}(E,p)$ is true.



  1. Wuthrich implemented a program that should do this in Magma, and I am close to finishing one that does it in SAGE.




Once we finish the proof of Theorem 3, we will almost have:

Eventual Goal: Suppose that $E$ is an elliptic curve of rank $\leq 1$ in Cremona's book. Then the full Birch and Swinnerton-Dyer conjecture is true for $E$.

In theory, all that remains is to deal with pairs $(E,p)$ with $p\geq 5$ such that:
  1. $E$ is a CM elliptic curve of rank $1$ with conductor divisible by $p$, or
  2. $E$ is a non-CM curve with additive reduction at $p$ such that either
    1. $p$ divides a Tamagawa number of $E$ and $\overline{\rho}_{E,p}$ is not surjective, or
    2. the representation $\overline{\rho}_{E,p}$ is reducible.




What is Left?

We finish the talk by computing all pairs $(E,p)$ in Cremona's book so that none of the above results (or their known refiniments) prove ${\rm BSD}(E,p)$. This is a concrete challenge.

We first compute a list of all the (optimal) curves in Cremona's book:rthM`ub(horu}rv(hU5cremona = list(cremona_optimal_curves(range(1,1001)))rwhU!
rxhjnhhhUh M`h!h"h#Uos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/next/cells/214")
cremona = list(cremona_optimal_curves(range(1,1001)))ryh%U'sage_notebook/worksheets/next/cells/214rzh'U

r{h)h*Kh+h-h.h/h0ub(hor|}r}(hjnhUThere are 2463 of them.r~hM`ub(hor}r(hUlen(cremona)rhU!
rhjnhhhUh M`h!h"h#Ufos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/next/cells/216")
len(cremona)rh%U'sage_notebook/worksheets/next/cells/216rh'U
2463

rh)h*Kh+h-h.h/h0ub(hor}r(hjnhUOnly 44 have CM.rhM`ub(hor}r(hU/cm = [e for e in cremona if e.has_cm()]
len(cm)rhU!
rhjnhhhUh M`h!h"h#Uos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/next/cells/218")
cm = [e for e in cremona if e.has_cm()]
len(cm)rh%U'sage_notebook/worksheets/next/cells/218rh'U
44

rh)h*Kh+h-h.h/h0ub(hor}r(hjnhUOf these, 19 have rank 1:rhM`ub(hor}r(hU0cm1 = [e for e in cm if e.rank() == 1]; len(cm1)rhU!
rhjnhhhUh M`h!h"h#Uos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/next/cells/220")
cm1 = [e for e in cm if e.rank() == 1]; len(cm1)rh%U'sage_notebook/worksheets/next/cells/220rh'U
19

rh)h*Kh+h-h.h/h0ub(hor}r(hUbad_cm = []
for e in cm1:
    for p in prime_divisors(e.conductor()):
        if p >= 5: 
            bad_cm.append((e.cremona_label(), p))
print len(bad_cm)
print Sequence(bad_cm, cr=True)rhU!
rhjnhhhUh M`h!h"h#Tos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/next/cells/221")
bad_cm = []
for e in cm1:
    for p in prime_divisors(e.conductor()):
        if p >= 5: 
            bad_cm.append((e.cremona_label(), p))
print len(bad_cm)
print Sequence(bad_cm, cr=True)rh%U'sage_notebook/worksheets/next/cells/221rh'U
10
[
('121b1', 11),
('225a1', 5),
('361a1', 19),
('441b1', 7),
('441d1', 7),
('675a1', 5),
('784h1', 7),
('800h1', 5),
('800a1', 5),
('900c1', 5)
]

rh)h*Kh+h-h.h/h0ub(hor}r(hT8bad_noncm = []
for e in cremona:
    if not e.has_cm():
       for p, f in factor(e.conductor()):
           if p >= 5 and f >= 2:    # additive prime >= 5.
               c = e.tamagawa_product()
               if c % p == 0:
                   if not e.is_surjective(p):
                       z = (e.cremona_label(), e.rank(), p, 'tamagawa'); print z
                       bad_noncm.append(z)
               elif e.is_reducible(p):
                       z = (e.cremona_label(), e.rank(), p); print z
                       bad_noncm.append(z)
print len(bad_noncm)rh M`hhhUhjnh!h"h#Tos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/next/cells/222")
bad_noncm = []
for e in cremona:
    if not e.has_cm():
       for p, f in factor(e.conductor()):
           if p >= 5 and f >= 2:    # additive prime >= 5.
               c = e.tamagawa_product()
               if c % p == 0:
                   if not e.is_surjective(p):
                       z = (e.cremona_label(), e.rank(), p, 'tamagawa'); print z
                       bad_noncm.append(z)
               elif e.is_reducible(p):
                       z = (e.cremona_label(), e.rank(), p); print z
                       bad_noncm.append(z)
print len(bad_noncm)rh%U'sage_notebook/worksheets/next/cells/222rh'T
('50a1', 0, 5)
('75a1', 0, 5)
('121a1', 0, 11)
('121c1', 0, 11)
('150a1', 0, 5)
('150b1', 0, 5)
('175a1', 1, 5)
('175c1', 0, 5)
('225e1', 1, 5)
('225d1', 0, 5)
('275b1', 0, 5)
('294a1', 0, 7)
('294b1', 0, 7)
('325d1', 0, 5)
('400b1', 0, 5)
('400c1', 1, 5)
('450a1', 0, 5)
('450b1', 0, 5)
('450c1', 1, 5)
('450d1', 0, 5)
('490f1', 0, 7)
('490k1', 0, 7)
('550f1', 1, 5)
('550k1', 0, 5)
('550b1', 0, 5)
('637a1', 1, 7)
('637c1', 1, 7)
('775c1', 0, 5)rh)h*Kh+Nh.h/h0ub(hor}r(hjnhTz

Only 41 pairs $(E,p)$ remain!

And in every case the mod $p$ representation is reducible. This should be doable via descent.




Tim Dokchitser and I are tentatively planning to run a workshop somewhere in about a year on the BSD conjecture, from a half/half theoretical/computational perspective. If you're interested, let me know.rhM`ubeU_Worksheet__synchrorKThkUnextrho}rU/Users/was/.sage/init.sagerGAjeshmUsage_notebook/worksheets/nextrhr]rhtM`huhvhwU1170896661.741525rhyhh|KU_Worksheet__next_block_idrK!hzNh}U 11G3BJNEUV/PkrubU _scratch_r(hor}r(U_Worksheet__filenamerU _scratch_rU_Worksheet__cellsr]r((hor}r(U _Cell__inrUtime a=matrix(ZZ,100,1000)rU_Cell__introspect_htmlrU!
rU_Cell__worksheetrjU_Cell__completionsrU_Cell__introspectrU_Cell__out_htmlrUU	_Cell__idrK+U_Cell__is_htmlrU_before_preparserUos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/43")
__SAGE_t__=cputime()
__SAGE_w__=walltime()
a=matrix(ZZ,100,1000)rU
_Cell__dirrU+sage_notebook/worksheets/_scratch_/cells/43rU
_Cell__outrU'
CPU time: 0.02 s,  Wall time: 0.01 s

rUhas_new_outputrU_Cell__versionrKU_Cell__sagerh-U_Cell__typerhNU_Cell__timerU_Cell__interruptedrub(hor}r(jU
time b=a+arjU!
rjjjjjUjK,jjUos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/44")
__SAGE_t__=cputime()
__SAGE_w__=walltime()
b=a+arjU+sage_notebook/worksheets/_scratch_/cells/44rjU'
CPU time: 0.03 s,  Wall time: 0.02 s

rjjKjh-jhNjjub(hor}r(jU$time for i in range(10^6): x = int()rjU!
rjjjjjUjK)jjUos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/41")
__SAGE_t__=cputime()
__SAGE_w__=walltime()
for i in range(10^6): x = int()rjU+sage_notebook/worksheets/_scratch_/cells/41rjU'
CPU time: 0.35 s,  Wall time: 0.38 s

rjjK	jh-jhNjjub(hor}r(jU&time for i in range(10^6): x = 939r +irjU!
rjjjjjUjK.jjUos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/46")
__SAGE_t__=cputime()
__SAGE_w__=walltime()
for i in range(10^6): x = 939r +irjU+sage_notebook/worksheets/_scratch_/cells/46rjU'
CPU time: 0.23 s,  Wall time: 0.25 s

rjjK	jh-jhNjjub(hor}r(jUa = 10rjU!
rjjjjjUjK2jjUdos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/50")
a = 10rjU+sage_notebook/worksheets/_scratch_/cells/50rjU

rjjKjh-jhNjjub(hor}r(jU-time for i in range(10^6): x = a + Integer(i)rjU!
rjjjjjUjK1jjUos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/49")
__SAGE_t__=cputime()
__SAGE_w__=walltime()
for i in range(10^6): x = a + Integer(i)rjU+sage_notebook/worksheets/_scratch_/cells/49rjU'
CPU time: 1.76 s,  Wall time: 1.83 s

rjjKjh-jhNjjub(hor}r(jUa = 939r + 1r; b=939r + 1rrjU!
rjjjjjUjK/jjUxos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/47")
a = 939r + 1r; b=939r + 1rrjU+sage_notebook/worksheets/_scratch_/cells/47rjU

rjjKjh-jhNjjub(hor}r(jUa is brjU!
rjjjjjUjK0jjUdos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/48")
a is brjU+sage_notebook/worksheets/_scratch_/cells/48rjU
False

rjjKjh-jhNjjub(hor}r(jUInteger() is Integer()rjU!
rjjjjjUjK-jjUtos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/45")
Integer() is Integer()rjU+sage_notebook/worksheets/_scratch_/cells/45rjU
False

r	jjKjh-jhNjjub(hor
}r(hU(time for i in range(10^6): x = Integer()rjU!
r
hjhjhUh K&jjUos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/38")
__SAGE_t__=cputime()
__SAGE_w__=walltime()
for i in range(10^6): x = Integer()rh%U+sage_notebook/worksheets/_scratch_/cells/38rh'U'
CPU time: 0.76 s,  Wall time: 0.80 s

rh)h*Kjh-h.hNjh0ub(hor}r(jU%sagex

from sage.all import cputime, Integer

def foo(n):
  t = cputime()
  for i in range(n): x = Integer()
  return cputime(t)
rjU!
rjjjjjT__Users_was_talks_2007_02_07_banff_bsd_sage_notebook_worksheets__scratch__code_sage5_spyx.crjK'jjUos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/39")
%sagex

from sage.all import cputime, Integer

def foo(n):
  t = cputime()
  for i in range(n): x = Integer()
  return cputime(t)rjU+sage_notebook/worksheets/_scratch_/cells/39rjU

rjjKjh-jhNjjub(hor}r(hU	foo(10^6)rhU!
rhjhhhUh K!h"h#Ugos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/33")
foo(10^6)rh%U+sage_notebook/worksheets/_scratch_/cells/33rh'U
0.66999999999999993

rh)h*Kh+h-h.hNh!h0ub(hor }r!(jUjjjjUjK(jU+sage_notebook/worksheets/_scratch_/cells/40r"jUjjKjhNjub(hor#}r$(hU	b = a^100r%hU!
r&hjhhhUh K h"h#Ugos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/32")
b = a^100r'h%U+sage_notebook/worksheets/_scratch_/cells/32r(h'U

r)h)h*Kh+h-h.h/h!h0ub(hor*}r+(U	_Cell__inr,UE = EllipticCurve('121a'); Er-U_Cell__introspect_htmlr.U!
r/U_Cell__worksheetr0jU_Cell__completionsr1U_Cell__introspectr2U_Cell__out_htmlr3UU	_Cell__idr4K	U_Cell__timer5U_Cell__is_htmlr6U_before_preparser7Uyos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/9")
E = EllipticCurve('121a'); Er8U
_Cell__dirr9U*sage_notebook/worksheets/_scratch_/cells/9r:U
_Cell__outr;UV
Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational Field

r<Uhas_new_outputr=U_Cell__versionr>KU_Cell__sager?h-U_Cell__typer@h/U_Cell__interruptedrAub(horB}rC(U	_Cell__inrDUE.isogeny_class()rEj.U!
rFU_Cell__worksheetrGjU_Cell__completionsrHj2U_Cell__out_htmlrIUU	_Cell__idrJKj6j7Uoos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/23")
E.isogeny_class()rKU
_Cell__dirrLU+sage_notebook/worksheets/_scratch_/cells/23rMU_word_being_completedrNUE.isogenrOUhas_new_outputrPU_Cell__versionrQKU_Cell__sagerRh-U_Cell__interruptedrSU_Cell__typerTh/j5U
_Cell__outrUU
([Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational Field, Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 305*x + 7888 over Rational Field], [ 0 11]
[11  0])

rVub(horW}rX(hUE.rank()rYhU!
rZhjhhhUh K%h"h#Ufos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/37")
E.rank()r[h%U+sage_notebook/worksheets/_scratch_/cells/37r\h'U
0

r]h)h*Kh+h-h.h/h!h0ub(hor^}r_(jDUE.is_surjective(7)[0]r`j.U!
rajGjjHj2jIUjJKj6j7Usos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/22")
E.is_surjective(7)[0]rbjLU+sage_notebook/worksheets/_scratch_/cells/22rcjNU	E.is_surjrdjPjQKjRh-jSjTUwraprej5jUU
True

rfub(horg}rh(jDUE = EllipticCurve('121a'); Erij.U!
rjjGjjHj2jIUjJKj6j7Uzos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/26")
E = EllipticCurve('121a'); ErkjLU+sage_notebook/worksheets/_scratch_/cells/26rljUUV
Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational Field

rmjPjQKjRh-jTjej5jSub(horn}ro(jDUE.is_reducible(7)rpj.U!
rqjGjjHj2jIUjJKj6j7Uoos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/24")
E.is_reducible(7)rrjLU+sage_notebook/worksheets/_scratch_/cells/24rsjNU	E.is_redurtjPjQKjRh-jSjTjej5jUU
False

ruub(horv}rw(jDUE.is_reducible(11)rxj.U!
ryjGjjHj2jIUjJKj6j7Upos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/27")
E.is_reducible(11)rzjLU+sage_notebook/worksheets/_scratch_/cells/27r{jUU
True

r|jPjQKjRh-jTjej5jSub(hor}}r~(jDU$EllipticCurve('11a').is_reducible(5)rj.U!
rjGjjHj2jIUjJKj6j7Uos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/28")
EllipticCurve('11a').is_reducible(5)rjLU+sage_notebook/worksheets/_scratch_/cells/28rjUU
True

rjPjQKjRh-jTjej5jSub(hor}r(jDU+e = EllipticCurve('11a2')
e.is_reducible(5)rj.U!
rjGjjHj2jIUjJKj6j7Uos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/29")
e = EllipticCurve('11a2')
e.is_reducible(5)rjLU+sage_notebook/worksheets/_scratch_/cells/29rjUU
True

rjPjQKjRh-jTjej5jSub(hor}r(jDUe.torsion_order()rj.U!
rjGjjHj2jIUjJKj6j7Uoos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/31")
e.torsion_order()rjLU+sage_notebook/worksheets/_scratch_/cells/31rjNUe.torsion_orrjPjQKjRh-jSjTjej5jUU
1

rub(hor}r(jDUjGjjHjIUjJKjLU+sage_notebook/worksheets/_scratch_/cells/30rjUUjPjQKjTjejSub(hor}r(j,UE.shabound_kolyvagin()rj0jj1j3Uj4K
j9U+sage_notebook/worksheets/_scratch_/cells/10rj;U([2], 1)rj=j>Kj?Nj@UwraprjAub(hor}r(j,UE = EllipticCurve('141a')rj0jj1j3Uj4Kj9U+sage_notebook/worksheets/_scratch_/cells/11rj;Uj=j>Kj?Nj@jjAub(hor}r(j,U
E.sha_an()rj0jj1j3Uj4Kj9U+sage_notebook/worksheets/_scratch_/cells/12rj;U1j=j>Kj?Nj@jjAub(hor}r(j,UE.shabound_kolyvagin()rj0jj1j3Uj4K
j9U+sage_notebook/worksheets/_scratch_/cells/13rj;U([2, 7], 49)rj=j>Kj?Nj@jjAub(hor}r(j,UE = EllipticCurve('389a')rj0jj1j3Uj4Kj9U+sage_notebook/worksheets/_scratch_/cells/14rj;Uj=j>Kj?Nj@jjAub(hor}r(U_TextCell__worksheetrjU_TextCell__textrU-No information, since the curve has rank $2$.rU
_TextCell__idrKub(hor}r(j,UE.shabound_kolyvagin()rj0jj1j3Uj4Kj9U+sage_notebook/worksheets/_scratch_/cells/16rj;U(0, 0)rj=j>Kj?Nj@jjAub(hor}r(j,UE = EllipticCurve('681b')rU_Cell__introspect_htmlrU!
rj0jj1U_Cell__introspectrj3Uj4KU_Cell__timerU_Cell__is_htmlrU_before_preparserUwos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/17")
E = EllipticCurve('681b')rj9U+sage_notebook/worksheets/_scratch_/cells/17rj;U

rj=j>Kj?h-j@jjAub(hor}r(j,U
E.sha_an()rjU!
rj0jj1jj3Uj4KjjUhos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/18")
E.sha_an()rj9U+sage_notebook/worksheets/_scratch_/cells/18rj;U
9

rj=j>Kj?h-j@jjjAub(hor}r(j,UE.shabound_kolyvagin()rjU!
rj0jj1jj3Uj4KjjUtos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/19")
E.shabound_kolyvagin()rj9U+sage_notebook/worksheets/_scratch_/cells/19rj;U
([2, 3], 9)

rj=j>Kj?h-j@jjjAub(hor}r(j,Ua = 2^20rhU!
rj0jj1hj3Uj4Kh"h#Ufos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/21")
a = 2^20rj9U+sage_notebook/worksheets/_scratch_/cells/21rj;U

rj=j>Kh+h-j@h/h!jAub(hor}r(hUfactor(441)rhU!
rhjhhhUh K"h"h#Uios.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/_scratch_/cells/34")
factor(441)rh%U+sage_notebook/worksheets/_scratch_/cells/34rh'U
3^2 * 7^2

rh)h*Kh+h-h.h/h!h0ub(hor}r(hUhjhhUh K#h%U+sage_notebook/worksheets/_scratch_/cells/35rh'Uh)h*Kh.h/h0ubeU_Worksheet__synchrorKU_Worksheet__comp_is_runningrU_Worksheet__dirrU"sage_notebook/worksheets/_scratch_rU_Worksheet__attachedr}rU/Users/was/.sage/init.sagerGAjesU_Worksheet__queuer]rU_Worksheet__next_idrK3U_Worksheet__passcryptrU_Worksheet__namerU	_scratch_rU_Worksheet__saltrU1170848803.679597rU_Worksheet__notebookrhU_Worksheet__idrKU_Worksheet__next_block_idrKThe Explicit Upper Bounds of Kolyvagin and KatorhM\4ub(hor}r(hU6E = EllipticCurve('141a'); E                     #autorhjhhUh M]4h%U,sage_notebook/worksheets/kolykato/cells/1117rh'ULElliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational Fieldrh)h*Kh+Nh.hfh0ub(hor}r(hjhT


Kato's Explicit Bound

Refining work of Kato on Euler systems involving $K$-groups of elliptic curves, people (e.g., Matsuno, Wuthrich, etc.) have obtained the following theorem:

Theorem (Refined Kato Bound): Let $E$ be a non-CM elliptic curve with $L(E,1)\neq 0$. Then $$ \#{\rm Sha}(E) \mid C \cdot \frac{L(E,1)}{\Omega_E} \cdot \frac{(\#E({\bf Q})_{\rm tors})^2}{\prod c_v}. $$ Here if $p$ divides $C$, then either $p$ is a bad prime, $p=2$, or $E$ has additive reduction at $p$, or the mod $p$ representation $\overline{\rho}_{E,p}$ is irreducible but not surjective. (Wuthrich proved last year that if $\overline{\rho}_{E,p}$ is reducible then the BSD upper bound holds at $p$!)


For our curve 141a, the above theorem yields no information since the analytic rank of our curve is 1.rhM^4ub(hor}r (hU E.Lseries(1)r hjhhUh M_4h%U,sage_notebook/worksheets/kolykato/cells/1119r h'U0.000000000000000r h)h*Kh+Nh.hfh0ub(hor }r(hUE.analytic_rank()rhjhhUh M`4h%U,sage_notebook/worksheets/kolykato/cells/1120rh'U1h)h*Kh+Nh.hfh0ub(hor}r(hUE.shabound_kato()rhjhhUh Ma4h%U,sage_notebook/worksheets/kolykato/cells/1121rh'UFalserh)h*Kh+Nh.hfh0ub(hor}r(hjhTC





SAGE has a command that gives all primes for which $\overline{\rho}_{E,p}$ is not surjective, and why. It uses results of Cojocaru, Kani, and Serre. This surjectivity hypothesis is important in many of theorems we will discuss. SAGE can also test for reducibility of $\overline{\rho}_{E,p}$rhMb4ub(hor}r(hUE.non_surjective()rhjhhUh Mc4h%U,sage_notebook/worksheets/kolykato/cells/1123rh'U[]rh)h*Kh+Nh.hfh0ub(hor}r(hU-e = EllipticCurve('14a1') e.non_surjective()r hjhhUh Md4h%U,sage_notebook/worksheets/kolykato/cells/1124r!h'U$[(2, '2-torsion'), (3, '3-torsion')]r"h)h*Kh+Nh.hfh0ub(hor#}r$(hUe.is_reducible(3)r%hjhhUh Me4h%U,sage_notebook/worksheets/kolykato/cells/1125r&h'UTruer'h)h*Kh+Nh.hfh0ub(hor(}r)(hjhT


Kolyvagin's Explicit Bound

Refined Version of Kolyvagin's Theorem Suppose $E$ is a non-CM elliptic curve over ${\bf Q}$. Suppose $K$ is a quadratic imaginary field that satisfies the Heegner hypothesis and $p$ is an odd prime such that $p\not\,\,\mid \#E'(K)_{\rm tor}$ for any curve $E'$ that is $\bf Q$-isogenous to $E$. Then $$ {\rm ord}_p (\#{\rm Sha}(E)) \leq 2 {\rm ord}_p ([E(K): {\rm Z} y_K]), $$ unless ${\rm disc}(K)$ is divisible by exactly one prime $\ell$, in which case the conclusion is only valid if $p\neq \ell$. Here $y_K \in E(K)$ is the Heegner point associated to $K$.

Kolyvagin's theorem tells us that $\#{\rm Sha}(E)$ divides $49$. This is a huge statement: it tells us that either $\#{\rm Sha}(E)=1$ or $\#{\rm Sha}(E) = 49$.r*hMf4ub(hor+}r,(hUE.shabound_kolyvagin(-11)r-hU!
r.hjhhhUh Mg4h!h"h#Uxos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/kolykato/cells/1127")
E.shabound_kolyvagin(-11)r/h%U,sage_notebook/worksheets/kolykato/cells/1127r0h'U
([2, 7], 49)

r1h)h*Kh+h-h.h/h0ub(hor2}r3(hjhTThe output of the shabound_kolyvagin command is a list of
primes that could possibly divide $\#{\rm Sha}(E)$, followed by the
square of odd part of the index $[E(K): {\rm Z} y_K]$.









Conclusion: Either $\#{\rm Sha}(E) = 1$ or $\#{\rm Sha}(E) = 49$.

Even using more Heegner discriminants doesn't help. In fact the BSD conjecture implies that they are all divisible by $7$:r4hMh4ub(hor5}r6(hU#v = E.heegner_discriminants(200); vr7hU!
r8hjhhhUh Mi4h!h"h#Uos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/kolykato/cells/1129")
v = E.heegner_discriminants(200); vr9h%U,sage_notebook/worksheets/kolykato/cells/1129r:h'UA
[-11, -20, -23, -35, -104, -107, -116, -152, -164, -167, -179]

r;h)h*Kh+h-h.h/h0ub(hor<}r=(hU!for D in v:
   E.heegner_index(D)r>hU!
r?hjhhhUh Mj4h!h"h#Uos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/kolykato/cells/1130")
for D in v:
   E.heegner_index(D)r@h%U,sage_notebook/worksheets/kolykato/cells/1130rAh'T6
[48.999572 ... 49.000367]
[48.999633 ... 49.000306]
[48.999572 ... 49.000306]
[48.999633 ... 49.000367]
[-0.000026629976 ... 0.000026629976]
[440.99609 ... 441.00293]
[48.999633 ... 49.000306]
[195.99853 ... 196.00098]
[-0.000033440826 ... 0.000033440826]
[48.999633 ... 49.000245]
[48.999633 ... 49.000306]

rBh)h*Kh+h-h.h/h0ub(horC}rD(hjhUD

Kolyvagin's Method does get us pretty far though...


rEhMk4ub(horF}rG(hUfor e in cremona_optimal_curves(range(100,120)): try: print e.cremona_label(), e.shabound_kolyvagin(), e.tamagawa_numbers() except: print "problem computing bound for rank %s curve %s"%(e.rank(), e.cremona_label())rHhU!
rIhjhhhUh Ml4h!h"h#TLos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/kolykato/cells/1132")
for e in cremona_optimal_curves(range(100,120)):
    try:
       print e.cremona_label(),  e.shabound_kolyvagin(), e.tamagawa_numbers()
    except:
       print "problem computing bound for rank %s curve %s"%(e.rank(), e.cremona_label())rJh%U,sage_notebook/worksheets/kolykato/cells/1132rKh'T
100a1 ([2, 3], 1) [1, 2]
101a1 ([2], 1) [1]
102a1 ([2], 1) [2, 2, 1]
102c1 problem computing bound for rank 0 curve 102c1
102b1 problem computing bound for rank 0 curve 102b1
104a1 ([2], 1) [1, 1]
105a1 problem computing bound for rank 0 curve 105a1
106a1 ([2, 3], 1) [3, 1]
106c1 ([2, 3], 1) [24, 1]
106b1 ([2], 1) [2, 1]
106d1 ([2], 1) [1, 1]
108a1 (0, 0) [3, 1]
109a1 ([2], 1) [1]
110a1 problem computing bound for rank 0 curve 110a1
110c1 problem computing bound for rank 0 curve 110c1
110b1 problem computing bound for rank 0 curve 110b1
112a1 ([2], 1) [4, 1]
112c1 ([2, 3], 1) [4, 1]
112b1 ([2], 1) [2, 1]
113a1 ([2], 1) [2]
114a1 problem computing bound for rank 0 curve 114a1
114c1 problem computing bound for rank 0 curve 114c1
114b1 problem computing bound for rank 0 curve 114b1
115a1 ([2], 1) [1, 1]
116a1 ([2, 3], 9) [3, 1]
116c1 ([2], 1) [1, 2]
116b1 ([2, 3], 1) [3, 1]
117a1 ([2], 1) [4, 1]
118a1 ([2], 1) [2, 1]
118c1 ([2], 1) [1, 1]
118b1 ([2, 5], 1) [10, 1]
118d1 ([2], 1) [1, 1]

rLh)h*Kh+h-h.h/h0ub(horM}rN(hjhT


Next we compute all curves (of any rank) in Cremona's book of rank $1$ that have a prime $p\geq 5$ that divides a Tamagawa number. For all other curves of rank $1$ in Cremona's book (and most of rank $0$), we are able to rule out the possibility that any other primes divide $\#{\rm Sha}(E)$ using a calculation like above and Kato's theorem (and 3-descent). (This involves an exciting mix of tricks and techniques -- see my paper.)
rOhMm4ub(horP}rQ(hTUv = [] for e in cremona_optimal_curves(range(1,1001)): if e.rank() == 1: for c in e.tamagawa_numbers(): if c > 1 and max(prime_divisors(c)) >= 5: v.append(e) print e.cremona_label(), e.rank(use_database=True), \ prime_divisors(e.tamagawa_product()) print len(v)rRhU!
rShjhhhUh Mn4h!h"h#Tos.chdir("/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/kolykato/cells/1134")
v = []
for e in cremona_optimal_curves(range(1,1001)):
    if e.rank() == 1:
        for c in e.tamagawa_numbers():
             if c > 1 and max(prime_divisors(c)) >= 5:
                 v.append(e)
                 print e.cremona_label(), e.rank(use_database=True),                      prime_divisors(e.tamagawa_product())
print len(v)rTh%U,sage_notebook/worksheets/kolykato/cells/1134rUh'T<
123a1 1 [5]
141a1 1 [7]
155a1 1 [5]
190a1 1 [2, 11]
214a1 1 [7]
238a1 1 [2, 7]
258c1 1 [2, 5]
262a1 1 [11]
274a1 1 [7]
280b1 1 [2, 3, 5]
285a1 1 [2, 5]
286b1 1 [2, 13]
302a1 1 [3, 5]
302c1 1 [5]
303a1 1 [2, 7]
309a1 1 [5]
318d1 1 [2, 11]
322d1 1 [2, 5]
326b1 1 [5]
346b1 1 [7]
348d1 1 [3, 7]
350f1 1 [2, 3, 11]
354f1 1 [2, 7]
357d1 1 [2, 7]
362b1 1 [7]
364a1 1 [3, 5]
366g1 1 [2, 5]
381a1 1 [5]
408d1 1 [2, 5]
414d1 1 [2, 5]
418b1 1 [2, 13]
430b1 1 [5]
430d1 1 [3, 5]
430d1 1 [3, 5]
434d1 1 [2, 5]
446b1 1 [2, 7]
458b1 1 [2, 5]
462e1 1 [2, 3, 7]
470f1 1 [2, 3, 7]
470c1 1 [2, 7]
474b1 1 [2, 5]
490g1 1 [2, 5]
494d1 1 [2, 3, 13]
497a1 1 [5]
498b1 1 [2, 5]
506f1 1 [13]
506d1 1 [5]
522i1 1 [2, 5]
522j1 1 [2, 13]
530c1 1 [2, 5]
542b1 1 [7]
550i1 1 [2, 3, 7]
550j1 1 [2, 11]
551c1 1 [2, 7]
558f1 1 [2, 3, 5]
558g1 1 [2, 7]
560e1 1 [2, 5]
561b1 1 [2, 5]
574g1 1 [11]
574i1 1 [3, 7]
574i1 1 [3, 7]
582c1 1 [2, 5]
585i1 1 [2, 7]
594d1 1 [2, 5]
598d1 1 [2, 17]
600e1 1 [2, 3, 7]
605a1 1 [3, 5]
605c1 1 [5]
608e1 1 [2, 5]
615b1 1 [2, 7]
618f1 1 [7, 11]
618f1 1 [7, 11]
618e1 1 [5]
618d1 1 [2, 3, 5]
620b1 1 [2, 3, 5]
622a1 1 [7]
629d1 1 [5]
642c1 1 [2, 13]
650k1 1 [2, 3, 7]
658e1 1 [2, 11]
665a1 1 [5]
665d1 1 [2, 5]
665d1 1 [2, 5]
666e1 1 [2, 13]
666d1 1 [2, 5]
670a1 1 [11]
670c1 1 [5]
670d1 1 [19]
672b1 1 [2, 3, 5]
674c1 1 [31]
678c1 1 [2, 7]
681e1 1 [2, 5]
682b1 1 [3, 19]
690e1 1 [2, 5]
696c1 1 [2, 5]
700d1 1 [2, 3, 5]
702k1 1 [3, 7]
702m1 1 [3, 19]
702l1 1 [2, 3, 5]
705b1 1 [3, 5]
705e1 1 [5]
706b1 1 [23]
706d1 1 [2, 5]
710c1 1 [2, 7]
710b1 1 [2, 17]
715b1 1 [3, 7]
726g1 1 [2, 3, 5]
726e1 1 [2, 5]
730i1 1 [7]
730j1 1 [3, 7]
735f1 1 [2, 3, 7]
738f1 1 [2, 11]
738e1 1 [2, 5]
742g1 1 [2, 5]
742e1 1 [2, 5]
762e1 1 [2, 3, 11]
762d1 1 [2, 5]
777g1 1 [2, 5]
777e1 1 [5]
786h1 1 [2, 7]
786j1 1 [3, 7]
786l1 1 [5, 7]
786l1 1 [5, 7]
794c1 1 [5]
798g1 1 [2, 3, 5]
798h1 1 [2, 3, 7]
798c1 1 [2, 5]
798d1 1 [2, 5]
804d1 1 [3, 7]
806c1 1 [2, 5]
806d1 1 [2, 3, 11]
814b1 1 [5]
816i1 1 [2, 11]
817b1 1 [2, 5]
822d1 1 [2, 5]
830c1 1 [2, 5]
831a1 1 [2, 5]
834f1 1 [2, 7]
834g1 1 [2, 5]
834g1 1 [2, 5]
842b1 1 [13]
850l1 1 [2, 7]
850d1 1 [2, 7]
854d1 1 [2, 3, 7]
858f1 1 [2, 5, 11]
858f1 1 [2, 5, 11]
861c1 1 [5, 7]
861c1 1 [5, 7]
861b1 1 [17]
861d1 1 [5]
862e1 1 [2, 5]
870f1 1 [2, 5, 7]
870f1 1 [2, 5, 7]
874e1 1 [5]
874e1 1 [5]
874d1 1 [5]
876b1 1 [3, 5]
880g1 1 [2, 5]
882h1 1 [2, 3, 5]
885d1 1 [5]
885d1 1 [5]
886e1 1 [5]
886d1 1 [2, 19]
890f1 1 [13]
890g1 1 [5]
890g1 1 [5]
894f1 1 [5]
894g1 1 [7, 11]
894g1 1 [7, 11]
894e1 1 [2, 23]
897e1 1 [2, 5]
897d1 1 [2, 3, 5]
901e1 1 [3, 5]
906h1 1 [5, 11]
906h1 1 [5, 11]
910f1 1 [2, 5, 11]
910f1 1 [2, 5, 11]
910g1 1 [2, 5]
910h1 1 [2, 3, 17]
910k1 1 [2, 5, 7]
910k1 1 [2, 5, 7]
912h1 1 [2, 5]
918h1 1 [3, 11]
918j1 1 [2, 3, 5]
920a1 1 [2, 3, 5]
924h1 1 [3, 5]
924b1 1 [3, 5]
924e1 1 [3, 5]
930h1 1 [2, 3, 5]
930d1 1 [2, 7]
933b1 1 [11]
938b1 1 [2, 5]
939c1 1 [5]
942c1 1 [2, 5]
954i1 1 [2, 5]
954h1 1 [2, 7]
954j1 1 [2, 17]
974h1 1 [3, 5]
975i1 1 [2, 3, 7]
975j1 1 [2, 5]
978f1 1 [2, 11]
978g1 1 [2, 7]
986e1 1 [2, 5, 7]
986e1 1 [2, 5, 7]
987e1 1 [2, 3, 5]
988b1 1 [3, 13]
996b1 1 [3, 13]
207

rVh)h*Kh+h-h.h/h0ub(horW}rX(hjhT


Another Example: 894e1


Another difficult example is the curve 894e1.

rYhMo4ub(horZ}r[(hU$e = EllipticCurve('894e1'); e.rank()r\hjhhUh Mp4h%U,sage_notebook/worksheets/kolykato/cells/1136r]h'U1h)h*Kh+Nh.hfh0ub(hor^}r_(hUe.shabound_kolyvagin()r`hjhhUh Mq4h%U,sage_notebook/worksheets/kolykato/cells/1137rah'U(0, 0)rbh)h*Kh+Nh.hfh0ub(horc}rd(hUe.heegner_discriminants(100)rehjhhUh Mr4h%U,sage_notebook/worksheets/kolykato/cells/1138rfh'U [-47, -95]rgh)h*Kh+Nh.hfh0ub(horh}ri(hUe.heegner_index(-47)rjhjhhUh Ms4h%U,sage_notebook/worksheets/kolykato/cells/1139rkh'U"[-0.00018561213 ... 0.00018561213]rlh)h*Kh+Nh.hfh0ub(horm}rn(hUe.heegner_index(-95)rohjhhUh Mt4h%U,sage_notebook/worksheets/kolykato/cells/1140rph'U[2115.9843 ... 2116.0118]rqh)h*Kh+Nh.hfh0ub(horr}rs(hUe.shabound_kolyvagin(-95)rthjhhUh Mu4h%U,sage_notebook/worksheets/kolykato/cells/1141ruh'U([2, 23], 529)rvh)h*Kh+Nh.hfh0ub(horw}rx(hjhUc

Note that $p=23$ is a good ordinary prime, and that the $p$-adic regulator is nonzero...ryhMv4ub(horz}r{(hU#e.is_good(23) and e.is_ordinary(23)r|hjhhUh Mw4h%U,sage_notebook/worksheets/kolykato/cells/1143r}h'UTruer~h)h*Kh+Nh.hfh0ub(hor}r(hU e.padic_regulator(23,5) # !!!!rhjhhUh Mx4h%U,sage_notebook/worksheets/kolykato/cells/1144rh'U<12*23^-1 + 14 + 10*23 + 16*23^2 + 20*23^3 + 8*23^4 + O(23^5)rh)h*Kh+Nh.hfh0ub(hor}r(hUhjhhUh My4h%U,sage_notebook/worksheets/kolykato/cells/1145rh'Uh)h*Kh+Nh.hfh0ub(hor}r(hjhU`

NEXT: Iwasawa theory and $p$-adic Analogues of the BSD Conjecture

rhMz4ub(hor}r(hUhjhhUh M{4h%U,sage_notebook/worksheets/kolykato/cells/1147rh'Uh)h*Kh+Nh.hfh0ubehjKhkUkolykatorhmU!sage_notebook/worksheets/kolykatorho}rU/Users/was/.sage/init.sagerGAjeshr]rhtM|4huhvhwU1170852451.587369rhyhhzNh{KYh|Kh}U 11G3BJNEUV/PkrubUcontentsr(hor}r(h Ucontentsrh ]r(hor}r(hjhT*

The BSD Conjecture and Computation of Shafarevich-Tate Groups of Elliptic Curves


William Stein
University of Washington


$$ {\rm Sha}(E) = {\rm Ker}\left(H^1({\bf Q},E) \to \bigoplus_v H^1({\bf Q}_v, E)\right). $$
This is joint work with Christian Wuthrich, students (Grigor Grigorov, Andrei Jorza, Stefan Patrikis, and Corina Tarnita), with input from John Cremona, Ralph Greenberg, Robert Pollack, Michael Stoll, and Stephen Donnelly.












1. The Birch and Swinnerton-Dyer Conjecture

2. The Explicit Upper Bounds of Kolyvagin and Kato

3. Iwasawa theory and p-adic Analogues of the BSD Conjecture

4. BSD is true for 141a

5. Summary of Results and The Goal



$$ \frac{L^{(r)}(E,1)}{r!} = \frac{\#{\rm Sha}(E) \cdot \Omega_{E} \cdot {\rm Reg}_E} {\#E({\bf Q})_{\rm tor}^2} \cdot {\prod_{p\mid N} c_p}, $$ rhM"ubahjKhkUcontentsrhmU!sage_notebook/worksheets/contentsrho}rU/Users/was/.sage/init.sagerGAjeshr]rhtM#huhvhwU1170851897.832629rhyhhzNh{Kh|Kh}U 11G3BJNEUV/PkrubU conclusionr(hor}r(h U conclusionrh ]r(hor}r(hjhTT

BSD is true for 141a



Summary of Proof:

  1. For $p=2$: Cremona verified this several years ago via a $2$-descent.

  2. For all $p\geq 3$ with $p\neq 7$: Kolyvagin's bound implies that $p\not\,\,\mid \#{\rm Sha}(E)$.

  3. For $p=7$: we computed the $7$-adic regulator, found that it was nonzero. Then using that the mod-$7$ representation is surjective, the bounds coming from Iwasawa theory, and thoerems of Kato, Perrin-Riou, Schneider, and others imply that ${\rm ord}_7({\rm Sha}(E)) =0$.

  4. We conclude that the full BSD conjecture is true for the elliptic curve 141a.





Key Point

Applying the general theory is now fairly straightforward. Combining together the wide range of theorems people have proved toward BSD gives quite a lot, and illustrates and motivates work to fill in the remaining gaps.

NEXT: Summary of Results and The Goal

rhMPubahkU conclusionrho}rhmU#sage_notebook/worksheets/conclusionrhr]rhtMPhuhvhwU1170852467.700093rhyhh|KhzNh}U 11G3BJNEUV/PkrubuU_Notebook__historyr]r(U\# Worksheet 'next' (2007-02-08 at 01:20) sage: rank2 = [e for e in cremona if e.rank() > 1] rT# Worksheet 'next' (2007-02-08 at 01:20) sage: rank2 [Elliptic Curve defined by y^2 + y = x^3 + x^2 - 2*x over Rational Field, Elliptic Curve defined by y^2 + x*y = x^3 +1 over Rational Field, Elliptic Curve defined by y^2 + x*y = x^3 - x^2 - 4*x + 4 over Rational Field, Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 15*x + 16 over Rational Field, Elliptic Curve defined by y^2 + y = x^3 + x^2 - 4*x + 2 over Rational Field, Elliptic Curve defined by y^2 + x*y = x^3 - 4*x + 3 over Rational Field, Ell...rUl# Worksheet 'next' (2007-02-08 at 01:20) sage: rank2 = [e.cremona_label() for e in cremona if e.rank() > 1] rU# Worksheet 'next' (2007-02-08 at 01:20) sage: rank2 ['389a1', '433a1', '446d1', '563a1', '571b1', '643a1', '655a1', '664a1', '681c1', '707a1', '709a1', '718b1', '794a1', '817a1', '916c1', '944e1', '997c1', '997b1']rT# Worksheet 'next' (2007-02-08 at 01:20) sage: rank2 = [e.cremona_label() for e in cremona if e.rank() > 1]; rank2 ['389a1', '433a1', '446d1', '563a1', '571b1', '643a1', '655a1', '664a1', '681c1', '707a1', '709a1', '718b1', '794a1', '817a1', '916c1', '944e1', '997c1', '997b1']rU~# Worksheet 'kolykato' (2007-02-08 at 01:23) sage: EllipticCurve('14a1').non_surjective() [(2, '2-torsion'), (3, '3-torsion')]rU# Worksheet 'kolykato' (2007-02-08 at 01:25) sage: E.non_surjective() Traceback (most recent call last): ... NameError: name 'E' is not definedrU# Worksheet 'kolykato' (2007-02-08 at 01:25) sage: E = EllipticCurve('141a'); E #auto Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrUF# Worksheet 'kolykato' (2007-02-08 at 01:25) sage: E.analytic_rank() 1rUJ# Worksheet 'kolykato' (2007-02-08 at 01:25) sage: E.shabound_kato() FalserUH# Worksheet 'kolykato' (2007-02-08 at 01:25) sage: E.non_surjective() []rU~# Worksheet 'kolykato' (2007-02-08 at 01:25) sage: EllipticCurve('14a1').non_surjective() [(2, '2-torsion'), (3, '3-torsion')]rU# Worksheet 'padic' (2007-02-08 at 01:27) sage: E = EllipticCurve('141a'); E #auto Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrUq# Worksheet 'padic' (2007-02-08 at 01:27) sage: show(factor(141))
3 \cdot 47
rU[# Worksheet 'padic' (2007-02-08 at 01:27) sage: E.is_good(7), E.is_ordinary(7) (True, True)rT# Worksheet 'padic' (2007-02-08 at 01:27) sage: reg7 = E.padic_regulator(7); show(reg7)
4\cdot 7^{-1} + 3 + 4\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 3\cdot 7^{5} + 3\cdot 7^{6} + 7^{7} + 6\cdot 7^{9} + 3\cdot 7^{10} + 6\cdot 7^{11} + 7^{12} + 2\cdot 7^{13} + 4\cdot 7^{14} + 6\cdot 7^{15} + 4\cdot 7^{16} + 5\cdot 7^{18} + 7^{19} + O(7^{20})
rU# Worksheet 'padic' (2007-02-08 at 01:27) sage: L7 = E.padic_lseries(7,prec=10); L7 7-adic L-series of Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrT# Worksheet 'padic' (2007-02-08 at 01:27) sage: show(L7.approx(3))
\left(1 + 3\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 6\cdot 7^{5} + 3\cdot 7^{6} + 6\cdot 7^{7} + 3\cdot 7^{8} + 3\cdot 7^{9} + O(7^{10})\right)T + \left(6\cdot 7 + 5\cdot 7^{2} + 6\cdot 7^{4} + 6\cdot 7^{5} + 4\cdot 7^{6} + 7^{7} + 3\cdot 7^{9} + O(7^{10})\right)T^{2} + \left(6 + 4\cdot 7 + 2\cdot 7^{3} + 5\cdot 7^{4} + 2\cdot 7^{5} + 6\cdot 7^{6} + 2\cdot 7^{8} + 3\cdot 7^{9} + O(7^{10})\right)T^{3} + O(\text{T}^{4})<...rU# Worksheet 'padic' (2007-02-08 at 01:28) sage: L7 = E.padic_lseries(7,prec=6); L7 7-adic L-series of Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrT# Worksheet 'padic' (2007-02-08 at 01:28) sage: show(L7.approx(3))
\left(1 + 3\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 6\cdot 7^{5} + O(7^{6})\right)T + \left(6\cdot 7 + 5\cdot 7^{2} + 6\cdot 7^{4} + 6\cdot 7^{5} + O(7^{6})\right)T^{2} + \left(6 + 4\cdot 7 + 2\cdot 7^{3} + 5\cdot 7^{4} + 2\cdot 7^{5} + O(7^{6})\right)T^{3} + O(\text{T}^{4})
rT*# Worksheet 'next' (2007-02-08 at 01:37) sage: cm = [e for e in cremona if e.has_cm()]; cm [Elliptic Curve defined by y^2 + y = x^3 - 7 over Rational Field, Elliptic Curve defined by y^2 = x^3 + 4*x over Rational Field, Elliptic Curve defined by y^2 = x^3 +1 over Rational Field, Elliptic Curve defined by y^2 + x*y = x^3 - x^2 - 2*x -1 over Rational Field, Elliptic Curve defined by y^2 = x^3 - 4*x over Rational Field, Elliptic Curve defined by y^2 = x^3 + 4 over Rational Field, Elliptic Curve defined by y^2 + y = x^3 - x^2 - 7*x + 10 over Ra...rUg# Worksheet 'next' (2007-02-08 at 01:37) sage: cm = [e for e in cremona if e.has_cm()] sage: len(cm) 44rUb# Worksheet 'next' (2007-02-08 at 01:46) sage: cm1 = [e for e in cm if e.rank() == 1]; len(cm1) 19rT"# Worksheet 'next' (2007-02-08 at 01:46) sage: for e in cm1: ... for p in prime_divisors(e.conductor()): ... if p >= 5: print (e.cremona_label(), p) ('121b1', 11) ('225a1', 5) ('361a1', 19) ('441b1', 7) ('441d1', 7) ('675a1', 5) ('784h1', 7) ('800h1', 5) ('800a1', 5) ('900c1', 5)rU4# Worksheet 'next' (2007-02-08 at 01:47) sage: 2+2 4rUM# Worksheet '_scratch_' (2007-02-08 at 01:53) sage: E = EllipticCurve('37a') rUS# Worksheet '_scratch_' (2007-02-08 at 01:53) sage: E.is_surjective(7) (True, None)rUN# Worksheet '_scratch_' (2007-02-08 at 01:53) sage: E.is_surjective(7)[0] TruerT# Worksheet 'next' (2007-02-08 at 01:54) sage: for e in cremona: ... if not e.has_cm(): ... for p, f in factor(e.conductor()): ... if p >= 5 and f >= 2: # additive prime >= 5. ... c = e.tamagawa_product() ... if c % p == 0: ... print (e.cremona_label(), p, 'tamagawa') ... else: ... t, why = e.is_surjective(p) ... if not t: ... print (e.cremona_label(), p, why) ('50a1', 5, [1]) ('50b1', 5, 'tamagawa') ('75a1', 5, [1]) ('75c1', 5, 'tamagawa') ('121a1', 11, [1]) ('121c1', 11, [1]) ('150a1', 5, [1]) ('150b1', 5, [1]) ('175a1', 5, [1]) ('175c1', 5, [1]) ('225e1', 5, [1]) ('225d1', 5, [1]) ('275b1', 5, [1]) ('294a1', 7, [1]) ('294b1', 7, [1]) ('325e1', 5, 'tamagawa') ('325d1', 5, [1]) ('400b1', 5, [1]) ('400c1', 5, [1]) ('450a1', 5, [1]) ('450b1', 5, [1]) ('450c1', 5, [1]) ('450d1', 5, [1]) ('490f1', 7, [1]) ('490k1',...rTo# Worksheet 'next' (2007-02-08 at 01:57) sage: bad_cm = [] sage: for e in cm1: ... for p in prime_divisors(e.conductor()): ... if p >= 5: ... bad_cm.append((e.cremona_label(), p)) ... sage: print bad_cm [('121b1', 11), ('225a1', 5), ('361a1', 19), ('441b1', 7), ('441d1', 7), ('675a1', 5), ('784h1', 7), ('800h1', 5), ('800a1', 5), ('900c1', 5)]rT# Worksheet 'next' (2007-02-08 at 01:57) sage: bad_cm = [] sage: for e in cm1: ... for p in prime_divisors(e.conductor()): ... if p >= 5: ... bad_cm.append((e.cremona_label(), p)) ... sage: print Sequence(bad_cm, cr=True) [ ('121b1', 11), ('225a1', 5), ('361a1', 19), ('441b1', 7), ('441d1', 7), ('675a1', 5), ('784h1', 7), ('800h1', 5), ('800a1', 5), ('900c1', 5) ]rT# Worksheet 'next' (2007-02-08 at 01:57) sage: bad_cm = [] sage: for e in cm1: ... for p in prime_divisors(e.conductor()): ... if p >= 5: ... bad_cm.append((e.cremona_label(), p)) ... sage: print Sequence(bad_cm, cr=True), len(bad_cm) [ ('121b1', 11), ('225a1', 5), ('361a1', 19), ('441b1', 7), ('441d1', 7), ('675a1', 5), ('784h1', 7), ('800h1', 5), ('800a1', 5), ('900c1', 5) ] 10rT# Worksheet 'next' (2007-02-08 at 01:57) sage: bad_cm = [] sage: for e in cm1: ... for p in prime_divisors(e.conductor()): ... if p >= 5: ... bad_cm.append((e.cremona_label(), p)) ... sage: print len(bad_cm) sage: print Sequence(bad_cm, cr=True) 10 [ ('121b1', 11), ('225a1', 5), ('361a1', 19), ('441b1', 7), ('441d1', 7), ('675a1', 5), ('784h1', 7), ('800h1', 5), ('800a1', 5), ('900c1', 5) ]rT:# Worksheet 'next' (2007-02-08 at 01:58) sage: bad_noncm = [] sage: for e in cremona: ... if not e.has_cm(): ... for p, f in factor(e.conductor()): ... if p >= 5 and f >= 2: # additive prime >= 5. ... c = e.tamagawa_product() ... if c % p == 0: ... bad_noncm.append((e.cremona_label(), p, 'tamagawa')) ... else: ... t, why = e.is_surjective(p) ... if not t: ... bad_noncm.append((e.cremona_label(), p, why)) ... sage: print len(bad_noncm) sage: print Sequence(bad_noncm,cr=True) 45 [ ('50a1', 5, [1]), ('50b1', 5, 'tamagawa'), ('75a1', 5, [1]), ('75c1', 5, 'tamagawa'), ('121a1', 11, [1]), ('121c1', 11, [1]), ('150a1', 5, [1]), ('150b1', 5, [1]), ('175a1', 5, [1]), ('175c1', 5, [1]), ('225e1', 5, [1]), ('225d1', 5, [1]), ('275b1', 5, [1]), ('294a1', 7, [1]), ('294b1', 7, [1]), ('325e1', 5, 'tamagawa'), ('325d1', 5, [1]), ('400b1', 5, [1]), ('400c1', 5, [1]), ('450a1', 5, [1]), ('450b1', 5, [1]), ('450c1', 5, [1]), ('450d1', 5, [1]),...rUt# Worksheet 'bsdintro' (2007-02-08 at 01:59) sage: E = EllipticCurve('141a1') #auto load rU~# Worksheet 'bsdintro' (2007-02-08 at 01:59) sage: show(E)
y^2 + y = x^3 + x^2 - 12x + 2
rUt# Worksheet 'bsdintro' (2007-02-08 at 02:00) sage: E = EllipticCurve('141a1') #auto load rU~# Worksheet 'bsdintro' (2007-02-08 at 02:00) sage: show(E)
y^2 + y = x^3 + x^2 - 12x + 2
rUt# Worksheet 'bsdintro' (2007-02-08 at 02:00) sage: show(factor(141))
3 \cdot 47
rUW# Worksheet 'bsdintro' (2007-02-08 at 02:00) sage: show(plot(E, hue=0.8, thickness=3)) rT# Worksheet 'bsdintro' (2007-02-08 at 02:00) sage: %hide # 3d plot of rational points sage: t = Tachyon(xres=1000, yres=800, camera_center=(2,15,5), look_at=(2,-5,-2), raydepth=4) sage: t.light((15,3,2), 1, (1,1,1)) sage: t.light((15,-3,2), 1, (1,1,1)) sage: t.light((15,-3,10), 1, (1,1,1)) sage: t.texture('black', color=(0,0,0)) sage: t.texture('red', color=(1,0,0)) sage: t.texture('white', color=(1,1,1)) sage: t.plane((0,0,0),(0,0,1),'white') sage: t.cylinder((0,0,0),(1,0,0),.01,'black') sage: t.cylinder((0,0,0),(0,1,0),.01,'black') sage: P = E([-3,4]) sage: Q = P sage: n = 100 sage: for i in range(n): ... Q = Q + P ... c = i/n + .1 ... t.texture('r%s'%i,color=(float(i/n),0,0)) ... t.sphere((Q[0], -Q[1], .01), .1, 'r%s'%i) ... sage: show(t) rU# Worksheet 'bsdintro' (2007-02-08 at 02:00) sage: L = E.Lseries_dokchitser(); L Dokchitser L-function associated to Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrT# Worksheet 'bsdintro' (2007-02-08 at 02:00) sage: T = L.taylor_series(a=1,k=4); show(T)
\text{0.718550172498336}z + \left(\text{-0.0426008377591305}\right)z^{2} + \left(\text{-0.322488300418669}\right)z^{3} + O(\text{z}^{4})
rUT# Worksheet 'bsdintro' (2007-02-08 at 02:00) sage: L.derivative(1) 0.718550172498336rU# Worksheet 'bsdintro' (2007-02-08 at 02:01) sage: P = plot(lambda x: real(L(x)), -1,3, rgbcolor=(1,0,0), thickness=3, plot_points=30) sage: show(P) rUD# Worksheet 'bsdintro' (2007-02-08 at 02:01) sage: E.Lseries_at1() 0rU# Worksheet 'bsdintro' (2007-02-08 at 02:01) sage: Z = E.Lseries_zeros(10) sage: show(point([(0.5, y) for y in Z], pointsize=50, hue=0.62), xmin=0, xmax=1) rUY# Worksheet 'kolykato' (2007-02-08 at 02:06) sage: E.Lseries(1) sage: E.analytic_rank() 1rUF# Worksheet 'kolykato' (2007-02-08 at 02:06) sage: E.analytic_rank() 1rU# Worksheet 'kolykato' (2007-02-08 at 02:06) sage: E = EllipticCurve('141a'); E #auto Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrUQ# Worksheet 'kolykato' (2007-02-08 at 02:06) sage: E.Lseries(1) 0.000000000000000rUF# Worksheet 'kolykato' (2007-02-08 at 02:06) sage: E.analytic_rank() 1rUJ# Worksheet 'kolykato' (2007-02-08 at 02:06) sage: E.shabound_kato() FalserUC# Worksheet 'kolykato' (2007-02-08 at 02:08) sage: factor(529) 23^2rU# Worksheet 'kolykato' (2007-02-08 at 02:08) sage: e.shabound_kolyvagin(-95) Traceback (most recent call last): ... AttributeError: 'E' object has no attribute 'shabound_kolyvagin'rUY# Worksheet 'kolykato' (2007-02-08 at 02:08) sage: e = EllipticCurve('894e1'); e.rank() 1rU[# Worksheet 'kolykato' (2007-02-08 at 02:08) sage: e.shabound_kolyvagin(-95) ([2, 23], 529)rU[# Worksheet 'kolykato' (2007-02-08 at 02:08) sage: e.is_good(23) and e.is_ordinary(23) TruerUe# Worksheet 'next' (2007-02-08 at 02:14) sage: cremona = list(cremona_optimal_curves(range(1,1001))) rU@# Worksheet 'next' (2007-02-08 at 02:14) sage: len(cremona) 2463rUg# Worksheet 'next' (2007-02-08 at 02:14) sage: cm = [e for e in cremona if e.has_cm()] sage: len(cm) 44rUb# Worksheet 'next' (2007-02-08 at 02:14) sage: cm1 = [e for e in cm if e.rank() == 1]; len(cm1) 19rT# Worksheet 'next' (2007-02-08 at 02:14) sage: bad_cm = [] sage: for e in cm1: ... for p in prime_divisors(e.conductor()): ... if p >= 5: ... bad_cm.append((e.cremona_label(), p)) ... sage: print len(bad_cm) sage: print Sequence(bad_cm, cr=True) 10 [ ('121b1', 11), ('225a1', 5), ('361a1', 19), ('441b1', 7), ('441d1', 7), ('675a1', 5), ('784h1', 7), ('800h1', 5), ('800a1', 5), ('900c1', 5) ]rT:# Worksheet 'next' (2007-02-08 at 02:15) sage: bad_noncm = [] sage: for e in cremona: ... if not e.has_cm(): ... for p, f in factor(e.conductor()): ... if p >= 5 and f >= 2: # additive prime >= 5. ... c = e.tamagawa_product() ... if c % p == 0: ... bad_noncm.append((e.cremona_label(), p, 'tamagawa')) ... else: ... t, why = e.is_surjective(p) ... if not t: ... bad_noncm.append((e.cremona_label(), p, why)) ... sage: print len(bad_noncm) sage: print Sequence(bad_noncm,cr=True) 45 [ ('50a1', 5, [1]), ('50b1', 5, 'tamagawa'), ('75a1', 5, [1]), ('75c1', 5, 'tamagawa'), ('121a1', 11, [1]), ('121c1', 11, [1]), ('150a1', 5, [1]), ('150b1', 5, [1]), ('175a1', 5, [1]), ('175c1', 5, [1]), ('225e1', 5, [1]), ('225d1', 5, [1]), ('275b1', 5, [1]), ('294a1', 7, [1]), ('294b1', 7, [1]), ('325e1', 5, 'tamagawa'), ('325d1', 5, [1]), ('400b1', 5, [1]), ('400c1', 5, [1]), ('450a1', 5, [1]), ('450b1', 5, [1]), ('450c1', 5, [1]), ('450d1', 5, [1]),...rU# Worksheet '_scratch_' (2007-02-08 at 02:16) sage: E.isogeny_class() ([Elliptic Curve defined by y^2 + y = x^3 - x over Rational Field], [0])rUM# Worksheet '_scratch_' (2007-02-08 at 02:16) sage: E = EllipticCurve('37b') rTP# Worksheet '_scratch_' (2007-02-08 at 02:16) sage: E.isogeny_class() ([Elliptic Curve defined by y^2 + y = x^3 + x^2 - 23*x - 50 over Rational Field, Elliptic Curve defined by y^2 + y = x^3 + x^2 - 3*x +1 over Rational Field, Elliptic Curve defined by y^2 + y = x^3 + x^2 - 1873*x - 31833 over Rational Field], [0 3 3] [3 0 0] [3 0 0])rU# Worksheet '_scratch_' (2007-02-08 at 02:18) sage: E = EllipticCurve('37b'); E Elliptic Curve defined by y^2 + y = x^3 + x^2 - 23*x - 50 over Rational FieldrU# Worksheet '_scratch_' (2007-02-08 at 02:18) sage: E = EllipticCurve('141a'); E Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrU# Worksheet '_scratch_' (2007-02-08 at 02:18) sage: E.isogeny_class() ([Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational Field], [0])rU# Worksheet '_scratch_' (2007-02-08 at 02:18) sage: E = EllipticCurve('121a'); E Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational FieldrT# Worksheet '_scratch_' (2007-02-08 at 02:18) sage: E.isogeny_class() ([Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational Field, Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 305*x + 7888 over Rational Field], [ 0 11] [11 0])rT# Worksheet '_scratch_' (2007-02-08 at 02:19) sage: E.isogeny_class('database') ([Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 305*x + 7888 over Rational Field, Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational Field], None)rU# Worksheet '_scratch_' (2007-02-08 at 02:19) sage: E = EllipticCurve('121a'); E Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational FieldrUN# Worksheet '_scratch_' (2007-02-08 at 02:19) sage: E.is_surjective(7)[0] TruerUN# Worksheet '_scratch_' (2007-02-08 at 02:19) sage: E.is_surjective(7)[0] TruerU# Worksheet '_scratch_' (2007-02-08 at 02:19) sage: E.is_reducible() Traceback (most recent call last): ... TypeError: is_reducible() takes exactly 2 arguments (1 given)rU# Worksheet '_scratch_' (2007-02-08 at 02:19) sage: E.is_reducible(7) Traceback (most recent call last): ... NotImplementedError: not implemented.rU# Worksheet '_scratch_' (2007-02-08 at 02:20) sage: E = EllipticCurve('121a'); E Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational FieldrU# Worksheet '_scratch_' (2007-02-08 at 02:20) sage: E.is_reducible(7) Traceback (most recent call last): ... NotImplementedError: not implemented.rU# Worksheet '_scratch_' (2007-02-08 at 02:20) sage: E = EllipticCurve('121a'); E Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational FieldrU# Worksheet '_scratch_' (2007-02-08 at 02:20) sage: E.is_reducible(7) Traceback (most recent call last): ... NotImplementedError: not implemented.rU# Worksheet '_scratch_' (2007-02-08 at 02:20) sage: E = EllipticCurve('121a'); E Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational FieldrUK# Worksheet '_scratch_' (2007-02-08 at 02:20) sage: E.is_reducible(7) FalserU# Worksheet '_scratch_' (2007-02-08 at 02:20) sage: E = EllipticCurve('121a'); E Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational FieldrUK# Worksheet '_scratch_' (2007-02-08 at 02:21) sage: E.is_reducible(7) FalserUK# Worksheet '_scratch_' (2007-02-08 at 02:21) sage: E.is_reducible(7) Falser UK# Worksheet '_scratch_' (2007-02-08 at 02:21) sage: E.is_reducible(11) Truer UK# Worksheet '_scratch_' (2007-02-08 at 02:21) sage: E.is_reducible(11) Truer U]# Worksheet '_scratch_' (2007-02-08 at 02:21) sage: EllipticCurve('11a').is_reducible(5) Truer U]# Worksheet '_scratch_' (2007-02-08 at 02:21) sage: EllipticCurve('11a').is_reducible(5) Truer U^# Worksheet '_scratch_' (2007-02-08 at 02:21) sage: EllipticCurve('11a2').is_reducible(5) TruerU^# Worksheet '_scratch_' (2007-02-08 at 02:21) sage: EllipticCurve('11a2').is_reducible(5) TruerUj# Worksheet '_scratch_' (2007-02-08 at 02:21) sage: e = EllipticCurve('11a2') sage: e.is_reducible(5) TruerUG# Worksheet '_scratch_' (2007-02-08 at 02:21) sage: e.torsion_order() 1rT# Worksheet 'next' (2007-02-08 at 02:23) sage: bad_noncm = [] sage: for e in cremona: ... if not e.has_cm(): ... for p, f in factor(e.conductor()): ... if p >= 5 and f >= 2: # additive prime >= 5. ... c = e.tamagawa_product() ... if c % p == 0: ... bad_noncm.append((e.cremona_label(), p, 'tamagawa')) ... else: ... if e.is_reducible(p): ... bad_noncm.append((e.cremona_label(), p, why)) ... sage: print len(bad_noncm) sage: print Sequence(bad_noncm,cr=True) Traceback (most recent call last): ... NameError: name 'cremona' is not definedrUe# Worksheet 'next' (2007-02-08 at 02:23) sage: cremona = list(cremona_optimal_curves(range(1,1001))) rU@# Worksheet 'next' (2007-02-08 at 02:23) sage: len(cremona) 2463rUg# Worksheet 'next' (2007-02-08 at 02:23) sage: cm = [e for e in cremona if e.has_cm()] sage: len(cm) 44rUb# Worksheet 'next' (2007-02-08 at 02:23) sage: cm1 = [e for e in cm if e.rank() == 1]; len(cm1) 19rT# Worksheet 'next' (2007-02-08 at 02:23) sage: bad_cm = [] sage: for e in cm1: ... for p in prime_divisors(e.conductor()): ... if p >= 5: ... bad_cm.append((e.cremona_label(), p)) ... sage: print len(bad_cm) sage: print Sequence(bad_cm, cr=True) 10 [ ('121b1', 11), ('225a1', 5), ('361a1', 19), ('441b1', 7), ('441d1', 7), ('675a1', 5), ('784h1', 7), ('800h1', 5), ('800a1', 5), ('900c1', 5) ]rT# Worksheet 'next' (2007-02-08 at 02:23) sage: bad_noncm = [] sage: for e in cremona: ... if not e.has_cm(): ... for p, f in factor(e.conductor()): ... if p >= 5 and f >= 2: # additive prime >= 5. ... c = e.tamagawa_product() ... if c % p == 0: ... bad_noncm.append((e.cremona_label(), p, 'tamagawa')) ... else: ... if e.is_reducible(p): ... bad_noncm.append((e.cremona_label(), p, why)) ... sage: print len(bad_noncm) sage: print Sequence(bad_noncm,cr=True) Traceback (most recent call last): ... NameError: name 'why' is not definedrTW# Worksheet 'next' (2007-02-08 at 02:24) sage: bad_cm = [] sage: for e in cm1: ... for p in prime_divisors(e.conductor()): ... if p >= 5: ... bad_cm.append((e.cremona_label(), p)) ... sage: print len(bad_cm) sage: print Sequence(bad_cm, cr=True) Traceback (most recent call last): ... NameError: name 'cm1' is not definedrUe# Worksheet 'next' (2007-02-08 at 02:25) sage: cremona = list(cremona_optimal_curves(range(1,1001))) rU@# Worksheet 'next' (2007-02-08 at 02:25) sage: len(cremona) 2463rUg# Worksheet 'next' (2007-02-08 at 02:25) sage: cm = [e for e in cremona if e.has_cm()] sage: len(cm) 44rUb# Worksheet 'next' (2007-02-08 at 02:25) sage: cm1 = [e for e in cm if e.rank() == 1]; len(cm1) 19rT# Worksheet 'next' (2007-02-08 at 02:25) sage: bad_cm = [] sage: for e in cm1: ... for p in prime_divisors(e.conductor()): ... if p >= 5: ... bad_cm.append((e.cremona_label(), p)) ... sage: print len(bad_cm) sage: print Sequence(bad_cm, cr=True) 10 [ ('121b1', 11), ('225a1', 5), ('361a1', 19), ('441b1', 7), ('441d1', 7), ('675a1', 5), ('784h1', 7), ('800h1', 5), ('800a1', 5), ('900c1', 5) ]rT# Worksheet 'next' (2007-02-08 at 02:26) sage: bad_noncm = [] sage: for e in cremona: ... if not e.has_cm(): ... for p, f in factor(e.conductor()): ... if p >= 5 and f >= 2: # additive prime >= 5. ... c = e.tamagawa_product() ... if c % p == 0: ... z = (e.cremona_label(), p, 'tamagawa'); print z ... bad_noncm.append(z) ... else: ... if e.is_reducible(p): ... z = (e.cremona_label(), p); print z ... bad_noncm.append(z) ... sage: print len(bad_noncm) sage: print Sequence(bad_noncm,cr=True) Traceback (most recent call last): ... NameError: name 'cremona' is not definedrUe# Worksheet 'next' (2007-02-08 at 02:26) sage: cremona = list(cremona_optimal_curves(range(1,1001))) r U@# Worksheet 'next' (2007-02-08 at 02:26) sage: len(cremona) 2463r!Ug# Worksheet 'next' (2007-02-08 at 02:26) sage: cm = [e for e in cremona if e.has_cm()] sage: len(cm) 44r"Ub# Worksheet 'next' (2007-02-08 at 02:26) sage: cm1 = [e for e in cm if e.rank() == 1]; len(cm1) 19r#T# Worksheet 'next' (2007-02-08 at 02:26) sage: bad_cm = [] sage: for e in cm1: ... for p in prime_divisors(e.conductor()): ... if p >= 5: ... bad_cm.append((e.cremona_label(), p)) ... sage: print len(bad_cm) sage: print Sequence(bad_cm, cr=True) 10 [ ('121b1', 11), ('225a1', 5), ('361a1', 19), ('441b1', 7), ('441d1', 7), ('675a1', 5), ('784h1', 7), ('800h1', 5), ('800a1', 5), ('900c1', 5) ]r$T]# Worksheet 'next' (2007-02-08 at 02:27) sage: bad_noncm = [] sage: for e in cremona: ... if not e.has_cm(): ... for p, f in factor(e.conductor()): ... if p >= 5 and f >= 2: # additive prime >= 5. ... c = e.tamagawa_product() ... if c % p == 0: ... z = (e.cremona_label(), p, 'tamagawa'); print z ... bad_noncm.append(z) ... else: ... if e.is_reducible(p): ... z = (e.cremona_label(), p); print z ... bad_noncm.append(z) ... sage: print len(bad_noncm) sage: print Sequence(bad_noncm,cr=True) ('50a1', 5) ('50b1', 5, 'tamagawa') ('75a1', 5) ('75c1', 5, 'tamagawa') ('121a1', 11) ('121c1', 11) ('150a1', 5) ('150b1', 5) ('175a1', 5) ('175c1', 5) ('225e1', 5) ('225d1', 5) ('275b1', 5) ('294a1', 7) ('294b1', 7) ('325e1', 5, 'tamagawa') ('325d1', 5) ('400b1', 5) ('400c1', 5) ('450a1', 5) ('450b1', 5) ('450c1', 5) ('450d1', 5) ('490f1', 7) ('490k1', 7) ('550f1', 5) ('550k1', 5) ('550b1', 5) ('637a1', 7) ('637c1', 7) ('700d1', 5, 'tamagawa') ('735f1', 7...r%Ut# Worksheet 'bsdintro' (2007-02-08 at 11:14) sage: E = EllipticCurve('141a1') #auto load r&U~# Worksheet 'bsdintro' (2007-02-08 at 11:14) sage: show(E)
y^2 + y = x^3 + x^2 - 12x + 2
r'Ut# Worksheet 'bsdintro' (2007-02-08 at 11:14) sage: show(factor(141))
3 \cdot 47
r(UW# Worksheet 'bsdintro' (2007-02-08 at 11:14) sage: show(plot(E, hue=0.8, thickness=3)) r)T# Worksheet 'bsdintro' (2007-02-08 at 11:14) sage: %hide # 3d plot of rational points sage: t = Tachyon(xres=1000, yres=800, camera_center=(2,15,5), look_at=(2,-5,-2), raydepth=4) sage: t.light((15,3,2), 1, (1,1,1)) sage: t.light((15,-3,2), 1, (1,1,1)) sage: t.light((15,-3,10), 1, (1,1,1)) sage: t.texture('black', color=(0,0,0)) sage: t.texture('red', color=(1,0,0)) sage: t.texture('white', color=(1,1,1)) sage: t.plane((0,0,0),(0,0,1),'white') sage: t.cylinder((0,0,0),(1,0,0),.01,'black') sage: t.cylinder((0,0,0),(0,1,0),.01,'black') sage: P = E([-3,4]) sage: Q = P sage: n = 100 sage: for i in range(n): ... Q = Q + P ... c = i/n + .1 ... t.texture('r%s'%i,color=(float(i/n),0,0)) ... t.sphere((Q[0], -Q[1], .01), .1, 'r%s'%i) ... sage: show(t) r*Tw# Worksheet 'bsdintro' (2007-02-08 at 11:14) sage: %hide # 3d plot of rational points sage: t = Tachyon(xres=1000, yres=800, camera_center=(2,15,5), look_at=(2,-5,-2), raydepth=4) sage: t.light((15,3,2), 1, (1,1,1)) sage: t.light((15,-3,2), 1, (1,1,1)) sage: t.light((15,-3,10), 1, (1,1,1)) sage: t.texture('black', color=(0,0,0)) sage: t.texture('red', color=(1,0,0)) sage: t.texture('white', color=(1,1,1)) sage: t.plane((0,0,0),(0,0,1),'white') sage: t.cylinder((0,0,0),(1,0,0),.01,'black') sage: t.cylinder((0,0,0),(0,1,0),.01,'black') sage: F = E.change_ring(RDF) sage: P = E.point([-3,4],check=False) sage: Q = P sage: n = 100 sage: for i in range(n): ... Q = Q + P ... c = i/n + .1 ... t.texture('r%s'%i,color=(float(i/n),0,0)) ... t.sphere((Q[0], -Q[1], .01), .1, 'r%s'%i) ... sage: show(t) Traceback (most recent call last): ... IndexError: list index out of ranger+T/# Worksheet 'bsdintro' (2007-02-08 at 11:15) sage: %hide # 3d plot of rational points sage: t = Tachyon(xres=1000, yres=800, camera_center=(2,15,5), look_at=(2,-5,-2), raydepth=4) sage: t.light((15,3,2), 1, (1,1,1)) sage: t.light((15,-3,2), 1, (1,1,1)) sage: t.light((15,-3,10), 1, (1,1,1)) sage: t.texture('black', color=(0,0,0)) sage: t.texture('red', color=(1,0,0)) sage: t.texture('white', color=(1,1,1)) sage: t.plane((0,0,0),(0,0,1),'white') sage: t.cylinder((0,0,0),(1,0,0),.01,'black') sage: t.cylinder((0,0,0),(0,1,0),.01,'black') sage: F = E.change_ring(RDF) sage: P = E.point([-3,4,1],check=False) sage: Q = P sage: n = 100 sage: for i in range(n): ... Q = Q + P ... c = i/n + .1 ... t.texture('r%s'%i,color=(float(i/n),0,0)) ... t.sphere((Q[0], -Q[1], .01), .1, 'r%s'%i) ... sage: show(t) r,T/# Worksheet 'bsdintro' (2007-02-08 at 11:15) sage: %hide # 3d plot of rational points sage: t = Tachyon(xres=1000, yres=800, camera_center=(2,15,5), look_at=(2,-5,-2), raydepth=4) sage: t.light((15,3,2), 1, (1,1,1)) sage: t.light((15,-3,2), 1, (1,1,1)) sage: t.light((15,-3,10), 1, (1,1,1)) sage: t.texture('black', color=(0,0,0)) sage: t.texture('red', color=(1,0,0)) sage: t.texture('white', color=(1,1,1)) sage: t.plane((0,0,0),(0,0,1),'white') sage: t.cylinder((0,0,0),(1,0,0),.01,'black') sage: t.cylinder((0,0,0),(0,1,0),.01,'black') sage: F = E.change_ring(RDF) sage: P = E.point([-3,4,1],check=False) sage: Q = P sage: n = 200 sage: for i in range(n): ... Q = Q + P ... c = i/n + .1 ... t.texture('r%s'%i,color=(float(i/n),0,0)) ... t.sphere((Q[0], -Q[1], .01), .1, 'r%s'%i) ... sage: show(t) r-T.# Worksheet 'bsdintro' (2007-02-08 at 11:16) sage: %hide # 3d plot of rational points sage: t = Tachyon(xres=700, yres=500, camera_center=(3,15,7), look_at=(2,-5,-2), raydepth=4) sage: t.light((15,3,2), 1, (1,1,1)) sage: t.light((15,-3,2), 1, (1,1,1)) sage: t.light((15,-3,10), 1, (1,1,1)) sage: t.texture('black', color=(0,0,0)) sage: t.texture('red', color=(1,0,0)) sage: t.texture('white', color=(1,1,1)) sage: t.plane((0,0,0),(0,0,1),'white') sage: t.cylinder((0,0,0),(1,0,0),.01,'black') sage: t.cylinder((0,0,0),(0,1,0),.01,'black') sage: F = E.change_ring(RDF) sage: P = E.point([-3,4,1],check=False) sage: Q = P sage: n = 200 sage: for i in range(n): ... Q = Q + P ... c = i/n + .1 ... t.texture('r%s'%i,color=(float(i/n),0,0)) ... t.sphere((Q[0], -Q[1], .01), .1, 'r%s'%i) ... sage: show(t) r.T.# Worksheet 'bsdintro' (2007-02-08 at 11:16) sage: %hide # 3d plot of rational points sage: t = Tachyon(xres=700, yres=500, camera_center=(2,20,6), look_at=(2,-5,-2), raydepth=5) sage: t.light((15,3,2), 1, (1,1,1)) sage: t.light((15,-3,2), 1, (1,1,1)) sage: t.light((15,-3,10), 1, (1,1,1)) sage: t.texture('black', color=(0,0,0)) sage: t.texture('red', color=(1,0,0)) sage: t.texture('white', color=(1,1,1)) sage: t.plane((0,0,0),(0,0,1),'white') sage: t.cylinder((0,0,0),(1,0,0),.01,'black') sage: t.cylinder((0,0,0),(0,1,0),.01,'black') sage: F = E.change_ring(RDF) sage: P = E.point([-3,4,1],check=False) sage: Q = P sage: n = 200 sage: for i in range(n): ... Q = Q + P ... c = i/n + .1 ... t.texture('r%s'%i,color=(float(i/n),0,0)) ... t.sphere((Q[0], -Q[1], .01), .1, 'r%s'%i) ... sage: show(t) r/T-# Worksheet 'bsdintro' (2007-02-08 at 11:17) sage: %hide # 3d plot of rational points sage: t = Tachyon(xres=700, yres=500, camera_center=(2,20,6), look_at=(2,-5,-2), raydepth=5) sage: t.light((15,3,2), 1, (1,1,1)) sage: t.light((15,-3,2), 1, (1,1,1)) sage: t.light((15,-3,10), 1, (1,1,1)) sage: t.texture('black', color=(0,0,0)) sage: t.texture('red', color=(1,0,0)) sage: t.texture('white', color=(1,1,1)) sage: t.plane((0,0,0),(0,0,1),'white') sage: t.cylinder((0,0,0),(1,0,0),.01,'black') sage: t.cylinder((0,0,0),(0,1,0),.01,'black') sage: F = E.change_ring(RDF) sage: P = E.point([-3,4,1],check=False) sage: Q = P sage: n = 20 sage: for i in range(n): ... Q = Q + P ... c = i/n + .1 ... t.texture('r%s'%i,color=(float(i/n),0,0)) ... t.sphere((Q[0], -Q[1], .01), .1, 'r%s'%i) ... sage: show(t) r0T,# Worksheet 'bsdintro' (2007-02-08 at 11:17) sage: %hide # 3d plot of rational points sage: t = Tachyon(xres=700, yres=500, camera_center=(2,20,6), look_at=(2,-5,-2), raydepth=5) sage: t.light((15,3,2), 1, (1,1,1)) sage: t.light((15,-3,2), 1, (1,1,1)) sage: t.light((15,-3,10), 1, (1,1,1)) sage: t.texture('black', color=(0,0,0)) sage: t.texture('red', color=(1,0,0)) sage: t.texture('white', color=(1,1,1)) sage: t.plane((0,0,0),(0,0,1),'white') sage: t.cylinder((0,0,0),(1,0,0),.05,'black') sage: t.cylinder((0,0,0),(0,1,0),.05,'black') sage: F = E.change_ring(RDF) sage: P = E.point([-3,4,1],check=False) sage: Q = P sage: n = 5 sage: for i in range(n): ... Q = Q + P ... c = i/n + .1 ... t.texture('r%s'%i,color=(float(i/n),0,0)) ... t.sphere((Q[0], -Q[1], .01), .1, 'r%s'%i) ... sage: show(t) r1T.# Worksheet 'bsdintro' (2007-02-08 at 11:17) sage: %hide # 3d plot of rational points sage: t = Tachyon(xres=700, yres=500, camera_center=(2,20,6), look_at=(2,-5,-2), raydepth=5) sage: t.light((15,3,2), 1, (1,1,1)) sage: t.light((15,-3,2), 1, (1,1,1)) sage: t.light((15,-3,10), 1, (1,1,1)) sage: t.texture('black', color=(0,0,0)) sage: t.texture('red', color=(1,0,0)) sage: t.texture('white', color=(1,1,1)) sage: t.plane((0,0,0),(0,0,1),'white') sage: t.cylinder((0,0,0),(1,0,0),.05,'black') sage: t.cylinder((0,0,0),(0,1,0),.05,'black') sage: F = E.change_ring(RDF) sage: P = E.point([-3,4,1],check=False) sage: Q = P sage: n = 200 sage: for i in range(n): ... Q = Q + P ... c = i/n + .1 ... t.texture('r%s'%i,color=(float(i/n),0,0)) ... t.sphere((Q[0], -Q[1], .01), .1, 'r%s'%i) ... sage: show(t) r2T.# Worksheet 'bsdintro' (2007-02-08 at 11:18) sage: %hide # 3d plot of rational points sage: t = Tachyon(xres=800, yres=500, camera_center=(2,20,6), look_at=(2,-5,-2), raydepth=6) sage: t.light((25,3,2), 1, (1,1,1)) sage: t.light((25,-3,2), 1, (1,1,1)) sage: t.light((25,-3,10), 1, (1,1,1)) sage: t.texture('black', color=(0,0,0)) sage: t.texture('red', color=(1,0,0)) sage: t.texture('white', color=(1,1,1)) sage: t.plane((0,0,0),(0,0,1),'white') sage: t.cylinder((0,0,0),(1,0,0),.05,'black') sage: t.cylinder((0,0,0),(0,1,0),.05,'black') sage: F = E.change_ring(RDF) sage: P = E.point([-3,4,1],check=False) sage: Q = P sage: n = 200 sage: for i in range(n): ... Q = Q + P ... c = i/n + .1 ... t.texture('r%s'%i,color=(float(i/n),0,0)) ... t.sphere((Q[0], -Q[1], .01), .1, 'r%s'%i) ... sage: show(t) r3U# Worksheet 'bsdintro' (2007-02-08 at 11:18) sage: L = E.Lseries_dokchitser(); L Dokchitser L-function associated to Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational Fieldr4T# Worksheet 'bsdintro' (2007-02-08 at 11:18) sage: T = L.taylor_series(a=1,k=4); show(T)
\text{0.718550172498336}z + \left(\text{-0.0426008377591305}\right)z^{2} + \left(\text{-0.322488300418669}\right)z^{3} + O(\text{z}^{4})
r5UT# Worksheet 'bsdintro' (2007-02-08 at 11:18) sage: L.derivative(1) 0.718550172498336r6U# Worksheet 'bsdintro' (2007-02-08 at 11:18) sage: P = plot(lambda x: real(L(x)), -1,3, rgbcolor=(1,0,0), thickness=3, plot_points=30) sage: show(P) r7UD# Worksheet 'bsdintro' (2007-02-08 at 11:18) sage: E.Lseries_at1() 0r8U# Worksheet 'bsdintro' (2007-02-08 at 11:19) sage: Z = E.Lseries_zeros(10) sage: show(point([(0.5, y) for y in Z], pointsize=50, hue=0.62), xmin=0, xmax=1) r9UF# Worksheet 'bsdintro' (2007-02-08 at 11:19) sage: E.analytic_rank() 1r:U=# Worksheet 'bsdintro' (2007-02-08 at 11:19) sage: E.rank() 1r;UJ# Worksheet 'bsdintro' (2007-02-08 at 11:19) sage: E.gens() [(-3 : 4 : 1)]r<US# Worksheet 'bsdintro' (2007-02-08 at 11:19) sage: E.regulator() 0.0344867750175524r=UN# Worksheet 'bsdintro' (2007-02-08 at 11:19) sage: E.tamagawa_numbers() [7, 1]r>UW# Worksheet 'bsdintro' (2007-02-08 at 11:19) sage: E.omega() 2.976504024814575615165574r?UF# Worksheet 'bsdintro' (2007-02-08 at 11:19) sage: E.torsion_order() 1r@T7# Worksheet 'bsdintro' (2007-02-08 at 11:19) sage: L1 = L.derivative(1); r = 1; Omega = E.omega(); sage: T = E.torsion_order(); Reg = E.regulator(); c = E.tamagawa_product() sage: print "L1 = ", L1 sage: print "rhs = %s * Sha"%( (Omega * Reg * c)/T^2 ) L1 = 0.718550172498336 rhs = 0.718550172498336 * SharAU# Worksheet 'kolykato' (2007-02-08 at 11:20) sage: E = EllipticCurve('141a'); E #auto Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrBUQ# Worksheet 'kolykato' (2007-02-08 at 11:23) sage: E.Lseries(1) 0.000000000000000rCUF# Worksheet 'kolykato' (2007-02-08 at 11:23) sage: E.analytic_rank() 1rDUJ# Worksheet 'kolykato' (2007-02-08 at 11:23) sage: E.shabound_kato() FalserEUH# Worksheet 'kolykato' (2007-02-08 at 11:23) sage: E.non_surjective() []rFU~# Worksheet 'kolykato' (2007-02-08 at 11:23) sage: EllipticCurve('14a1').non_surjective() [(2, '2-torsion'), (3, '3-torsion')]rGU# Worksheet 'kolykato' (2007-02-08 at 11:24) sage: E = EllipticCurve('141a'); E #auto Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrHUQ# Worksheet 'kolykato' (2007-02-08 at 11:24) sage: E.Lseries(1) 0.000000000000000rIUF# Worksheet 'kolykato' (2007-02-08 at 11:24) sage: E.analytic_rank() 1rJUJ# Worksheet 'kolykato' (2007-02-08 at 11:24) sage: E.shabound_kato() FalserKUQ# Worksheet 'kolykato' (2007-02-08 at 11:24) sage: E.Lseries(1) 0.000000000000000rLUQ# Worksheet 'kolykato' (2007-02-08 at 11:24) sage: E.Lseries(1) 0.000000000000000rMUF# Worksheet 'kolykato' (2007-02-08 at 11:24) sage: E.analytic_rank() 1rNUJ# Worksheet 'kolykato' (2007-02-08 at 11:25) sage: E.shabound_kato() FalserOUH# Worksheet 'kolykato' (2007-02-08 at 11:25) sage: E.non_surjective() []rPU~# Worksheet 'kolykato' (2007-02-08 at 11:25) sage: EllipticCurve('14a1').non_surjective() [(2, '2-torsion'), (3, '3-torsion')]rQU~# Worksheet 'kolykato' (2007-02-08 at 11:25) sage: EllipticCurve('14a1').non_surjective() [(2, '2-torsion'), (3, '3-torsion')]rRT1# Worksheet 'kolykato' (2007-02-08 at 11:25) sage: e = EllipticCurve('14a1') sage: print e.non_surjective() sage: print e.is_reducible() [(2, '2-torsion'), (3, '3-torsion')] Traceback (most recent call last): File "", line 1, in File "/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/worksheets/kolykato/code/12.py", line 6, in exec compile(ur'print e.is_reducible()' + '\n', '', 'single') File "/Users/was/talks/2007-02-07-banff-bsd/", line 1, in TypeError: is_reducible() takes exactly 2 arguments (1 given)rSU# Worksheet 'kolykato' (2007-02-08 at 11:25) sage: e = EllipticCurve('14a1') sage: print e.non_surjective() sage: print e.is_reducible(2) [(2, '2-torsion'), (3, '3-torsion')] TruerTU# Worksheet 'kolykato' (2007-02-08 at 11:25) sage: e = EllipticCurve('14a1') sage: print e.non_surjective() sage: print e.is_reducible(3) [(2, '2-torsion'), (3, '3-torsion')] TruerUUY# Worksheet 'kolykato' (2007-02-08 at 11:29) sage: E.shabound_kolyvagin(-11) ([2, 7], 49)rVUk# Worksheet 'kolykato' (2007-02-08 at 11:29) sage: v = E.heegner_discriminants(100); v [-11, -20, -23, -35]rWU# Worksheet 'kolykato' (2007-02-08 at 11:29) sage: for D in v: ... E.heegner_index(D) [48.999572 ... 49.000367] [48.999633 ... 49.000306] [48.999572 ... 49.000306] [48.999633 ... 49.000367]rXU;# Worksheet '_scratch_' (2007-02-08 at 11:29) sage: 2 + 2 4rYU9# Worksheet '_scratch_' (2007-02-08 at 11:29) sage: 2^3 8rZU# Worksheet '_scratch_' (2007-02-08 at 11:29) sage: 5^100 7888609052210118054117285652827862296732064351090230047702789306640625r[U9# Worksheet '_scratch_' (2007-02-08 at 11:29) sage: 2^3 8r\U@# Worksheet '_scratch_' (2007-02-08 at 11:29) sage: 2^20 1048576r]U=# Worksheet '_scratch_' (2007-02-08 at 11:29) sage: a = 2^20 r^U># Worksheet '_scratch_' (2007-02-08 at 11:29) sage: a = 5^100 r_Ut# Worksheet 'bsdintro' (2007-02-08 at 13:48) sage: E = EllipticCurve('141a1') #auto load r`U~# Worksheet 'bsdintro' (2007-02-08 at 13:48) sage: show(E)
y^2 + y = x^3 + x^2 - 12x + 2
raUt# Worksheet 'bsdintro' (2007-02-08 at 13:49) sage: show(factor(141))
3 \cdot 47
rbUW# Worksheet 'bsdintro' (2007-02-08 at 13:49) sage: show(plot(E, hue=0.8, thickness=3)) rcT.# Worksheet 'bsdintro' (2007-02-08 at 13:49) sage: %hide # 3d plot of rational points sage: t = Tachyon(xres=800, yres=500, camera_center=(2,20,6), look_at=(2,-5,-2), raydepth=6) sage: t.light((25,3,2), 1, (1,1,1)) sage: t.light((25,-3,2), 1, (1,1,1)) sage: t.light((25,-3,10), 1, (1,1,1)) sage: t.texture('black', color=(0,0,0)) sage: t.texture('red', color=(1,0,0)) sage: t.texture('white', color=(1,1,1)) sage: t.plane((0,0,0),(0,0,1),'white') sage: t.cylinder((0,0,0),(1,0,0),.05,'black') sage: t.cylinder((0,0,0),(0,1,0),.05,'black') sage: F = E.change_ring(RDF) sage: P = E.point([-3,4,1],check=False) sage: Q = P sage: n = 200 sage: for i in range(n): ... Q = Q + P ... c = i/n + .1 ... t.texture('r%s'%i,color=(float(i/n),0,0)) ... t.sphere((Q[0], -Q[1], .01), .1, 'r%s'%i) ... sage: show(t) rdU# Worksheet 'bsdintro' (2007-02-08 at 13:49) sage: L = E.Lseries_dokchitser(); L Dokchitser L-function associated to Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldreT# Worksheet 'bsdintro' (2007-02-08 at 13:49) sage: T = L.taylor_series(a=1,k=4); show(T)
\text{0.718550172498336}z + \left(\text{-0.0426008377591305}\right)z^{2} + \left(\text{-0.322488300418669}\right)z^{3} + O(\text{z}^{4})
rfUT# Worksheet 'bsdintro' (2007-02-08 at 13:50) sage: L.derivative(1) 0.718550172498336rgU# Worksheet 'bsdintro' (2007-02-08 at 13:50) sage: P = plot(lambda x: real(L(x)), -1,3, rgbcolor=(1,0,0), thickness=3, plot_points=30) sage: show(P) rhUc# Worksheet 'bsdintro' (2007-02-08 at 13:50) sage: print E.root_number() sage: E.Lseries_at1() -1 0riUi# Worksheet 'bsdintro' (2007-02-08 at 13:50) sage: print E.root_number() sage: print E.Lseries_at1() -1 0rjU# Worksheet 'bsdintro' (2007-02-08 at 13:50) sage: print 'eps = ', E.root_number() sage: print 'L(E,1) = ', E.Lseries_at1() eps = -1 L(E,1) = 0rkU# Worksheet 'bsdintro' (2007-02-08 at 13:50) sage: Z = E.Lseries_zeros(10) sage: show(point([(0.5, y) for y in Z], pointsize=50, hue=0.62), xmin=0, xmax=1) rlUF# Worksheet 'bsdintro' (2007-02-08 at 13:51) sage: E.analytic_rank() 1rmU=# Worksheet 'bsdintro' (2007-02-08 at 13:51) sage: E.rank() 1rnUJ# Worksheet 'bsdintro' (2007-02-08 at 13:51) sage: E.gens() [(-3 : 4 : 1)]roUS# Worksheet 'bsdintro' (2007-02-08 at 13:51) sage: E.regulator() 0.0344867750175524rpUN# Worksheet 'bsdintro' (2007-02-08 at 13:51) sage: E.tamagawa_numbers() [7, 1]rqUW# Worksheet 'bsdintro' (2007-02-08 at 13:51) sage: E.omega() 2.976504024814575615165574rrT7# Worksheet 'bsdintro' (2007-02-08 at 13:53) sage: L1 = L.derivative(1); r = 1; Omega = E.omega(); sage: T = E.torsion_order(); Reg = E.regulator(); c = E.tamagawa_product() sage: print "L1 = ", L1 sage: print "rhs = %s * Sha"%( (Omega * Reg * c)/T^2 ) L1 = 0.718550172498336 rhs = 0.718550172498336 * SharsU# Worksheet 'kolykato' (2007-02-08 at 13:53) sage: E = EllipticCurve('141a'); E #auto Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrtUQ# Worksheet 'kolykato' (2007-02-08 at 13:56) sage: E.Lseries(1) 0.000000000000000ruUF# Worksheet 'kolykato' (2007-02-08 at 13:56) sage: E.analytic_rank() 1rvUJ# Worksheet 'kolykato' (2007-02-08 at 13:56) sage: E.shabound_kato() FalserwU# Worksheet 'kolykato' (2007-02-08 at 13:59) sage: E = EllipticCurve('141a'); E #auto Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational Field CPU time: 0.27 s, Wall time: 0.28 srxUF# Worksheet 'kolykato' (2007-02-08 at 13:59) sage: E.analytic_rank() 1ryUJ# Worksheet 'kolykato' (2007-02-08 at 13:59) sage: E.shabound_kato() FalserzUH# Worksheet 'kolykato' (2007-02-08 at 13:59) sage: E.non_surjective() []r{U# Worksheet 'kolykato' (2007-02-08 at 13:59) sage: e = EllipticCurve('14a1') sage: e.non_surjective() [(2, '2-torsion'), (3, '3-torsion')]r|UI# Worksheet 'kolykato' (2007-02-08 at 13:59) sage: e.is_reducible(3) Truer}UY# Worksheet 'kolykato' (2007-02-08 at 14:01) sage: E.shabound_kolyvagin(-11) ([2, 7], 49)r~Uk# Worksheet 'kolykato' (2007-02-08 at 14:02) sage: v = E.heegner_discriminants(100); v [-11, -20, -23, -35]rU# Worksheet 'kolykato' (2007-02-08 at 14:02) sage: v = E.heegner_discriminants(200); v [-11, -20, -23, -35, -104, -107, -116, -152, -164, -167, -179]rT# Worksheet 'kolykato' (2007-02-08 at 14:02) sage: for D in v: ... E.heegner_index(D) [48.999572 ... 49.000367] [48.999633 ... 49.000306] [48.999572 ... 49.000306] [48.999633 ... 49.000367] [-0.000026629976 ... 0.000026629976] [440.99609 ... 441.00293] [48.999633 ... 49.000306] [195.99853 ... 196.00098] [-0.000033440826 ... 0.000033440826] [48.999633 ... 49.000245] [48.999633 ... 49.000306]rUI# Worksheet '_scratch_' (2007-02-08 at 14:02) sage: factor(196) 2^2 * 7^2rUI# Worksheet '_scratch_' (2007-02-08 at 14:02) sage: factor(441) 3^2 * 7^2rT~# Worksheet 'kolykato' (2007-02-08 at 14:03) sage: for E in cremona_optimal_curves(range(1,100)): ... print E.cremona_label(), E.shabound_kolyvagin(), E.tamagawa_numbers() 11a1 ([2, 5], 1) [5] 14a1 ([2, 3], 1) [2, 3] 15a1 ([2], 1) [2, 4] 17a1 ([2], 1) [4] 19a1 ([2, 3], 1) [3] 20a1 ([2, 3], 1) [3, 2] 21a1 ([2], 1) [4, 2] 24a1 ([2], 1) [4, 2] 26a1 ([2, 3], 1) [1, 3] 26b1 ([2, 7], 1) [7, 1] 27a1 (0, 0) [3] 30a1 ([2, 3], 1) [2, 3, 1] 32a1 (0, 0) [4] 33a1 ([2], 1) [2, 2] 34a1 ([2, 3], 1) [6, 1] 35a1 ([2, 3], 1) [1, 3] 36a1 (0, 0) [3, 2] 37a1 ([2], 1) [1] 37b1 ([2, 3], 1) [3] 38a1 ([2, 3], 1) [1, 3] 38b1 ([2, 5], 1) [5, 1] 39a1 ([...rT4# Worksheet 'kolykato' (2007-02-08 at 14:06) sage: v = [] sage: for e in cremona_optimal_curves(range(1,1001)): ... for c in e.tamagawa_numbers(): ... if max([1] + prime_divisors(c)) >= 5: ... v.append(e) ... print e.cremona_label(), e.rank(use_database=True), \ ... prime_divisors(e.tamagawa_product()) 11a1 0 [5] 26b1 0 [7] 38b1 0 [5] 50b1 0 [5] 57c1 0 [2, 5] 58b1 0 [2, 5] 66c1 0 [2, 5] 66c1 0 [2, 5] 75c1 0 [5] 110a1 0 [5] 110a1 0 [5] 114c1 0 [2, 5] 118b1 0 [2, 5] 123a1 1 [5] 141a1 1 [7] 155a1 1 [5] 158c1 0 [2, 5] 170c1 0 [3, 7] 174a1 0 [3, 7] 174b1 0 [7] 174b1 0 [7] 182a1 0 [2, 5] 186b1 0 [5] 186b1 0 [5] 190a1 1 [2, 11] 203a1 0 [5] 214a1 1 [7] 238a1 1 [2, 7] 246b1 0 [5] 246b1 0 [5] 258f1 0 [2, 7] 258f1 0 [2, 7] 258c1 1 [2, 5] 262a1 1 [11] 264d1 0 [2, 7]...rT8# Worksheet 'kolykato' (2007-02-08 at 14:07) sage: v = [] sage: for e in cremona_optimal_curves(range(1,1001)): ... for c in e.tamagawa_numbers(): ... if c > 1 and max(prime_divisors(c)) >= 5: ... v.append(e) ... print e.cremona_label(), e.rank(use_database=True), \ ... prime_divisors(e.tamagawa_product()) 11a1 0 [5] 26b1 0 [7] 38b1 0 [5] 50b1 0 [5] 57c1 0 [2, 5] 58b1 0 [2, 5] 66c1 0 [2, 5] 66c1 0 [2, 5] 75c1 0 [5] 110a1 0 [5] 110a1 0 [5] 114c1 0 [2, 5] 118b1 0 [2, 5] 123a1 1 [5] 141a1 1 [7] 155a1 1 [5] 158c1 0 [2, 5] 170c1 0 [3, 7] 174a1 0 [3, 7] 174b1 0 [7] 174b1 0 [7] 182a1 0 [2, 5] 186b1 0 [5] 186b1 0 [5] 190a1 1 [2, 11] 203a1 0 [5] 214a1 1 [7] 238a1 1 [2, 7] 246b1 0 [5] 246b1 0 [5] 258f1 0 [2, 7] 258f1 0 [2, 7] 258c1 1 [2, 5] 262a1 1 [11] 264d1 0 [2, 7]...rTO# Worksheet 'kolykato' (2007-02-08 at 14:07) sage: v = [] sage: for e in cremona_optimal_curves(range(1,1001)): ... for c in e.tamagawa_numbers(): ... if c > 1 and max(prime_divisors(c)) >= 5: ... v.append(e) ... print e.cremona_label(), e.rank(use_database=True), \ ... prime_divisors(e.tamagawa_product()) ... sage: print len(v) 11a1 0 [5] 26b1 0 [7] 38b1 0 [5] 50b1 0 [5] 57c1 0 [2, 5] 58b1 0 [2, 5] 66c1 0 [2, 5] 66c1 0 [2, 5] 75c1 0 [5] 110a1 0 [5] 110a1 0 [5] 114c1 0 [2, 5] 118b1 0 [2, 5] 123a1 1 [5] 141a1 1 [7] 155a1 1 [5] 158c1 0 [2, 5] 170c1 0 [3, 7] 174a1 0 [3, 7] 174b1 0 [7] 174b1 0 [7] 182a1 0 [2, 5] 186b1 0 [5] 186b1 0 [5] 190a1 1 [2, 11] 203a1 0 [5] 214a1 1 [7] 238a1 1 [2, 7] 246b1 0 [5] 246b1 0 [5] 258f1 0 [2, 7] 258f1 0 [2, 7] 258c1 1 [2, 5] 262a1 1 [11] 264d1 0 [2, 7]...rUY# Worksheet 'kolykato' (2007-02-08 at 14:08) sage: e = EllipticCurve('894e1'); e.rank() 1rUY# Worksheet 'kolykato' (2007-02-08 at 14:09) sage: e = EllipticCurve('894e1'); e.rank() 1rUP# Worksheet 'kolykato' (2007-02-08 at 14:09) sage: e.shabound_kolyvagin() (0, 0)rUZ# Worksheet 'kolykato' (2007-02-08 at 14:09) sage: e.heegner_discriminants(100) [-47, -95]rUj# Worksheet 'kolykato' (2007-02-08 at 14:09) sage: e.heegner_index(-47) [-0.00018561213 ... 0.00018561213]rUa# Worksheet 'kolykato' (2007-02-08 at 14:09) sage: e.heegner_index(-95) [2115.9843 ... 2116.0118]rU[# Worksheet 'kolykato' (2007-02-08 at 14:09) sage: e.shabound_kolyvagin(-95) ([2, 23], 529)rU[# Worksheet 'kolykato' (2007-02-08 at 14:09) sage: e.shabound_kolyvagin(-95) ([2, 23], 529)rU[# Worksheet 'kolykato' (2007-02-08 at 14:09) sage: e.is_good(23) and e.is_ordinary(23) TruerU[# Worksheet 'kolykato' (2007-02-08 at 14:09) sage: e.is_good(23) and e.is_ordinary(23) TruerUC# Worksheet 'kolykato' (2007-02-08 at 14:09) sage: factor(529) 23^2rU# Worksheet 'kolykato' (2007-02-08 at 14:09) sage: e.padic_regulator(23,5) 12*23^-1 + 14 + 10*23 + 16*23^2 + 20*23^3 + 8*23^4 + O(23^5)rU# Worksheet 'kolykato' (2007-02-08 at 14:09) sage: e.padic_regulator(23,5) # !!!! 12*23^-1 + 14 + 10*23 + 16*23^2 + 20*23^3 + 8*23^4 + O(23^5)rU# Worksheet 'padic' (2007-02-08 at 14:11) sage: E = EllipticCurve('141a'); E #auto Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrUq# Worksheet 'padic' (2007-02-08 at 14:11) sage: show(factor(141))
3 \cdot 47
rU[# Worksheet 'padic' (2007-02-08 at 14:11) sage: E.is_good(7), E.is_ordinary(7) (True, True)rT# Worksheet 'padic' (2007-02-08 at 14:11) sage: reg7 = E.padic_regulator(7); show(reg7)
4\cdot 7^{-1} + 3 + 4\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 3\cdot 7^{5} + 3\cdot 7^{6} + 7^{7} + 6\cdot 7^{9} + 3\cdot 7^{10} + 6\cdot 7^{11} + 7^{12} + 2\cdot 7^{13} + 4\cdot 7^{14} + 6\cdot 7^{15} + 4\cdot 7^{16} + 5\cdot 7^{18} + 7^{19} + O(7^{20})
rT# Worksheet 'padic' (2007-02-08 at 14:11) sage: time reg7 = E.padic_regulator(7); show(reg7)
4\cdot 7^{-1} + 3 + 4\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 3\cdot 7^{5} + 3\cdot 7^{6} + 7^{7} + 6\cdot 7^{9} + 3\cdot 7^{10} + 6\cdot 7^{11} + 7^{12} + 2\cdot 7^{13} + 4\cdot 7^{14} + 6\cdot 7^{15} + 4\cdot 7^{16} + 5\cdot 7^{18} + 7^{19} + O(7^{20})
CPU time: 0.47 s, Wall time: 0.48 srT# Worksheet 'padic' (2007-02-08 at 14:11) sage: time reg7 = E.padic_regulator(7) sage: show(reg7)
4\cdot 7^{-1} + 3 + 4\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 3\cdot 7^{5} + 3\cdot 7^{6} + 7^{7} + 6\cdot 7^{9} + 3\cdot 7^{10} + 6\cdot 7^{11} + 7^{12} + 2\cdot 7^{13} + 4\cdot 7^{14} + 6\cdot 7^{15} + 4\cdot 7^{16} + 5\cdot 7^{18} + 7^{19} + O(7^{20})
CPU time: 0.47 s, Wall time: 0.48 srT4# Worksheet 'padic' (2007-02-08 at 14:11) sage: time reg7 = E.padic_regulator(7,40) sage: show(reg7)
4\cdot 7^{-1} + 3 + 4\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 3\cdot 7^{5} + 3\cdot 7^{6} + 7^{7} + 6\cdot 7^{9} + 3\cdot 7^{10} + 6\cdot 7^{11} + 7^{12} + 2\cdot 7^{13} + 4\cdot 7^{14} + 6\cdot 7^{15} + 4\cdot 7^{16} + 5\cdot 7^{18} + 7^{19} + 4\cdot 7^{20} + 6\cdot 7^{21} + 6\cdot 7^{22} + 6\cdot 7^{23} + 4\cdot 7^{24} + 6\cdot 7^{26} + 5\cdot 7^{27} + 4\cdot 7^{28} + 2\cdot 7^{29} + 3\cdot 7^{31} + 2\cdot 7^{32} + 7...rT# Worksheet 'padic' (2007-02-08 at 14:11) sage: time reg7 = E.padic_regulator(7,5) sage: show(reg7)
4\cdot 7^{-1} + 3 + 4\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + O(7^{5})
CPU time: 0.23 s, Wall time: 0.23 srU# Worksheet 'padic' (2007-02-08 at 14:11) sage: time reg7 = E.padic_regulator(7,4) sage: show(reg7)
4\cdot 7^{-1} + 3 + 4\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + O(7^{4})
CPU time: 0.23 s, Wall time: 0.22 srU# Worksheet 'padic' (2007-02-08 at 14:11) sage: time reg7 = E.padic_regulator(7,3) sage: show(reg7)
4\cdot 7^{-1} + 3 + 4\cdot 7 + 6\cdot 7^{2} + O(7^{3})
CPU time: 0.22 s, Wall time: 0.21 srU# Worksheet 'padic' (2007-02-08 at 14:11) sage: time reg7 = E.padic_regulator(7,2) sage: show(reg7)
4\cdot 7^{-1} + 3 + 4\cdot 7 + O(7^{2})
CPU time: 0.20 s, Wall time: 0.21 srT# Worksheet 'padic' (2007-02-08 at 14:11) sage: time reg7 = E.padic_regulator(7,5) sage: show(reg7)
4\cdot 7^{-1} + 3 + 4\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + O(7^{5})
CPU time: 0.23 s, Wall time: 0.24 srT# Worksheet 'padic' (2007-02-08 at 14:12) sage: time reg7 = E.padic_regulator(7,6) sage: show(reg7)
4\cdot 7^{-1} + 3 + 4\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 3\cdot 7^{5} + O(7^{6})
CPU time: 0.26 s, Wall time: 0.26 srT!# Worksheet 'padic' (2007-02-08 at 14:12) sage: time reg7 = E.padic_regulator(7,7) sage: show(reg7)
4\cdot 7^{-1} + 3 + 4\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 3\cdot 7^{5} + 3\cdot 7^{6} + O(7^{7})
CPU time: 0.28 s, Wall time: 0.28 srT)# Worksheet 'padic' (2007-02-08 at 14:12) sage: time reg7 = E.padic_regulator(7,8) sage: show(reg7)
4\cdot 7^{-1} + 3 + 4\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 3\cdot 7^{5} + 3\cdot 7^{6} + 7^{7} + O(7^{8})
CPU time: 0.30 s, Wall time: 0.30 srT# Worksheet 'padic' (2007-02-08 at 14:12) sage: time reg7 = E.padic_regulator(7,6) sage: show(reg7)
4\cdot 7^{-1} + 3 + 4\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 3\cdot 7^{5} + O(7^{6})
CPU time: 0.25 s, Wall time: 0.26 srU# Worksheet 'padic' (2007-02-08 at 14:12) sage: L7 = E.padic_lseries(7,prec=6); L7 7-adic L-series of Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrT# Worksheet 'padic' (2007-02-08 at 14:12) sage: show(L7.approx(3))
\left(1 + 3\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 6\cdot 7^{5} + O(7^{6})\right)T + \left(6\cdot 7 + 5\cdot 7^{2} + 6\cdot 7^{4} + 6\cdot 7^{5} + O(7^{6})\right)T^{2} + \left(6 + 4\cdot 7 + 2\cdot 7^{3} + 5\cdot 7^{4} + 2\cdot 7^{5} + O(7^{6})\right)T^{3} + O(\text{T}^{4})
rUe# Worksheet 'next' (2007-02-08 at 14:17) sage: cremona = list(cremona_optimal_curves(range(1,1001))) rUe# Worksheet 'next' (2007-02-08 at 14:18) sage: cremona = list(cremona_optimal_curves(range(1,1001))) rU@# Worksheet 'next' (2007-02-08 at 14:18) sage: len(cremona) 2463rUe# Worksheet 'next' (2007-02-08 at 14:18) sage: cremona = list(cremona_optimal_curves(range(1,1001))) rU@# Worksheet 'next' (2007-02-08 at 14:18) sage: len(cremona) 2463rUg# Worksheet 'next' (2007-02-08 at 14:18) sage: cm = [e for e in cremona if e.has_cm()] sage: len(cm) 44rUb# Worksheet 'next' (2007-02-08 at 14:18) sage: cm1 = [e for e in cm if e.rank() == 1]; len(cm1) 19rT# Worksheet 'next' (2007-02-08 at 14:18) sage: bad_cm = [] sage: for e in cm1: ... for p in prime_divisors(e.conductor()): ... if p >= 5: ... bad_cm.append((e.cremona_label(), p)) ... sage: print len(bad_cm) sage: print Sequence(bad_cm, cr=True) 10 [ ('121b1', 11), ('225a1', 5), ('361a1', 19), ('441b1', 7), ('441d1', 7), ('675a1', 5), ('784h1', 7), ('800h1', 5), ('800a1', 5), ('900c1', 5) ]rT5# Worksheet 'next' (2007-02-08 at 14:19) sage: bad_noncm = [] sage: for e in cremona: ... if not e.has_cm(): ... for p, f in factor(e.conductor()): ... if p >= 5 and f >= 2: # additive prime >= 5. ... c = e.tamagawa_product() ... if c % p == 0: ... z = (e.cremona_label(), p, 'tamagawa'); print z ... bad_noncm.append(z) ... else: ... if e.is_reducible(p): ... z = (e.cremona_label(), p); print z ... bad_noncm.append(z) ... sage: print len(bad_noncm) ('50a1', 5) ('50b1', 5, 'tamagawa') ('75a1', 5) ('75c1', 5, 'tamagawa') ('121a1', 11) ('121c1', 11) ('150a1', 5) ('150b1', 5) ('175a1', 5) ('175c1', 5) ('225e1', 5) ('225d1', 5) ('275b1', 5) ('294a1', 7) ('294b1', 7) ('325e1', 5, 'tamagawa') ('325d1', 5) ('400b1', 5) ('400c1', 5) ('450a1', 5) ('450b1', 5) ('450c1', 5) ('450d1', 5) ('490f1', 7) ('490k1', 7) ('550f1', 5) ('550k1', 5) ('550b1', 5) ('637a1', 7) ('637c1', 7) ('700d1', 5, 'tamagawa') ('735f1', 7...rUt# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: E = EllipticCurve('141a1') #auto load rU~# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: show(E)
y^2 + y = x^3 + x^2 - 12x + 2
rUt# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: show(factor(141))
3 \cdot 47
rUW# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: show(plot(E, hue=0.8, thickness=3)) rU# Worksheet 'kolykato' (2007-02-08 at 14:37) sage: E = EllipticCurve('141a'); E #auto Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrUQ# Worksheet 'kolykato' (2007-02-08 at 14:37) sage: E.Lseries(1) 0.000000000000000rUF# Worksheet 'kolykato' (2007-02-08 at 14:37) sage: E.analytic_rank() 1rUH# Worksheet 'kolykato' (2007-02-08 at 14:37) sage: E.non_surjective() []rT.# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: %hide # 3d plot of rational points sage: t = Tachyon(xres=800, yres=500, camera_center=(2,20,6), look_at=(2,-5,-2), raydepth=6) sage: t.light((25,3,2), 1, (1,1,1)) sage: t.light((25,-3,2), 1, (1,1,1)) sage: t.light((25,-3,10), 1, (1,1,1)) sage: t.texture('black', color=(0,0,0)) sage: t.texture('red', color=(1,0,0)) sage: t.texture('white', color=(1,1,1)) sage: t.plane((0,0,0),(0,0,1),'white') sage: t.cylinder((0,0,0),(1,0,0),.05,'black') sage: t.cylinder((0,0,0),(0,1,0),.05,'black') sage: F = E.change_ring(RDF) sage: P = E.point([-3,4,1],check=False) sage: Q = P sage: n = 200 sage: for i in range(n): ... Q = Q + P ... c = i/n + .1 ... t.texture('r%s'%i,color=(float(i/n),0,0)) ... t.sphere((Q[0], -Q[1], .01), .1, 'r%s'%i) ... sage: show(t) rU# Worksheet 'padic' (2007-02-08 at 14:37) sage: E = EllipticCurve('141a'); E #auto Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrU# Worksheet 'kolykato' (2007-02-08 at 14:37) sage: e = EllipticCurve('14a1') sage: e.non_surjective() [(2, '2-torsion'), (3, '3-torsion')]rUq# Worksheet 'padic' (2007-02-08 at 14:37) sage: show(factor(141))
3 \cdot 47
rUJ# Worksheet 'kolykato' (2007-02-08 at 14:37) sage: E.shabound_kato() FalserU# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: L = E.Lseries_dokchitser(); L Dokchitser L-function associated to Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrT# Worksheet 'padic' (2007-02-08 at 14:37) sage: time reg7 = E.padic_regulator(7,6) sage: show(reg7)
4\cdot 7^{-1} + 3 + 4\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 3\cdot 7^{5} + O(7^{6})
CPU time: 0.26 s, Wall time: 0.26 srUI# Worksheet 'kolykato' (2007-02-08 at 14:37) sage: e.is_reducible(3) TruerUJ# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: E.selmer_rank_bound() 1rU[# Worksheet 'padic' (2007-02-08 at 14:37) sage: E.is_good(7), E.is_ordinary(7) (True, True)rUY# Worksheet 'kolykato' (2007-02-08 at 14:37) sage: E.shabound_kolyvagin(-11) ([2, 7], 49)rT# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: T = L.taylor_series(a=1,k=4); show(T)
\text{0.718550172498336}z + \left(\text{-0.0426008377591305}\right)z^{2} + \left(\text{-0.322488300418669}\right)z^{3} + O(\text{z}^{4})
rU# Worksheet 'padic' (2007-02-08 at 14:37) sage: L7 = E.padic_lseries(7,prec=6); L7 7-adic L-series of Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrUU# Worksheet 'kolykato' (2007-02-08 at 14:37) sage: e.shabound_kolyvagin() ([2, 3], 1)rUL# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: E.two_selmer_shabound() 0rU# Worksheet 'kolykato' (2007-02-08 at 14:37) sage: v = E.heegner_discriminants(200); v [-11, -20, -23, -35, -104, -107, -116, -152, -164, -167, -179]rUT# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: L.derivative(1) 0.718550172498336rT# Worksheet 'kolykato' (2007-02-08 at 14:37) sage: for D in v: ... E.heegner_index(D) [48.999572 ... 49.000367] [48.999633 ... 49.000306] [48.999572 ... 49.000306] [48.999633 ... 49.000367] [-0.000026629976 ... 0.000026629976] [440.99609 ... 441.00293] [48.999633 ... 49.000306] [195.99853 ... 196.00098] [-0.000033440826 ... 0.000033440826] [48.999633 ... 49.000245] [48.999633 ... 49.000306]rU# Worksheet 'kolykato' (2007-02-08 at 14:37) sage: e.heegner_index(-95) Traceback (most recent call last): ... ArithmeticError: Discriminant (=-95) must be a fundamental discriminant that satisfies the Heegner hypothesis.rT# Worksheet 'padic' (2007-02-08 at 14:37) sage: show(L7.approx(3))
\left(1 + 3\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 6\cdot 7^{5} + O(7^{6})\right)T + \left(6\cdot 7 + 5\cdot 7^{2} + 6\cdot 7^{4} + 6\cdot 7^{5} + O(7^{6})\right)T^{2} + \left(6 + 4\cdot 7 + 2\cdot 7^{3} + 5\cdot 7^{4} + 2\cdot 7^{5} + O(7^{6})\right)T^{3} + O(\text{T}^{4})
rU# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: P = plot(lambda x: real(L(x)), -1,3, rgbcolor=(1,0,0), thickness=3, plot_points=30) sage: show(P) rU# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: print 'eps = ', E.root_number() sage: print 'L(E,1) = ', E.Lseries_at1() eps = -1 L(E,1) = 0rU# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: Z = E.Lseries_zeros(10) sage: show(point([(0.5, y) for y in Z], pointsize=50, hue=0.62), xmin=0, xmax=1) rUe# Worksheet 'next' (2007-02-08 at 14:37) sage: cremona = list(cremona_optimal_curves(range(1,1001))) rUF# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: E.analytic_rank() 1rU@# Worksheet 'next' (2007-02-08 at 14:37) sage: len(cremona) 2463rU=# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: E.rank() 1rUg# Worksheet 'next' (2007-02-08 at 14:37) sage: cm = [e for e in cremona if e.has_cm()] sage: len(cm) 44rUJ# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: E.gens() [(-3 : 4 : 1)]rUb# Worksheet 'next' (2007-02-08 at 14:37) sage: cm1 = [e for e in cm if e.rank() == 1]; len(cm1) 19rUS# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: E.regulator() 0.0344867750175524rT# Worksheet 'next' (2007-02-08 at 14:37) sage: bad_cm = [] sage: for e in cm1: ... for p in prime_divisors(e.conductor()): ... if p >= 5: ... bad_cm.append((e.cremona_label(), p)) ... sage: print len(bad_cm) sage: print Sequence(bad_cm, cr=True) 10 [ ('121b1', 11), ('225a1', 5), ('361a1', 19), ('441b1', 7), ('441d1', 7), ('675a1', 5), ('784h1', 7), ('800h1', 5), ('800a1', 5), ('900c1', 5) ]rUN# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: E.tamagawa_numbers() [7, 1]rUW# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: E.omega() 2.976504024814575615165574rUF# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: E.torsion_order() 1rT7# Worksheet 'bsdintro' (2007-02-08 at 14:37) sage: L1 = L.derivative(1); r = 1; Omega = E.omega(); sage: T = E.torsion_order(); Reg = E.regulator(); c = E.tamagawa_product() sage: print "L1 = ", L1 sage: print "rhs = %s * Sha"%( (Omega * Reg * c)/T^2 ) L1 = 0.718550172498336 rhs = 0.718550172498336 * SharT~# Worksheet 'kolykato' (2007-02-08 at 14:37) sage: for E in cremona_optimal_curves(range(1,100)): ... print E.cremona_label(), E.shabound_kolyvagin(), E.tamagawa_numbers() 11a1 ([2, 5], 1) [5] 14a1 ([2, 3], 1) [2, 3] 15a1 ([2], 1) [2, 4] 17a1 ([2], 1) [4] 19a1 ([2, 3], 1) [3] 20a1 ([2, 3], 1) [3, 2] 21a1 ([2], 1) [4, 2] 24a1 ([2], 1) [4, 2] 26a1 ([2, 3], 1) [1, 3] 26b1 ([2, 7], 1) [7, 1] 27a1 (0, 0) [3] 30a1 ([2, 3], 1) [2, 3, 1] 32a1 (0, 0) [4] 33a1 ([2], 1) [2, 2] 34a1 ([2, 3], 1) [6, 1] 35a1 ([2, 3], 1) [1, 3] 36a1 (0, 0) [3, 2] 37a1 ([2], 1) [1] 37b1 ([2, 3], 1) [3] 38a1 ([2, 3], 1) [1, 3] 38b1 ([2, 5], 1) [5, 1] 39a1 ([...rTO# Worksheet 'kolykato' (2007-02-08 at 14:38) sage: v = [] sage: for e in cremona_optimal_curves(range(1,1001)): ... for c in e.tamagawa_numbers(): ... if c > 1 and max(prime_divisors(c)) >= 5: ... v.append(e) ... print e.cremona_label(), e.rank(use_database=True), \ ... prime_divisors(e.tamagawa_product()) ... sage: print len(v) 11a1 0 [5] 26b1 0 [7] 38b1 0 [5] 50b1 0 [5] 57c1 0 [2, 5] 58b1 0 [2, 5] 66c1 0 [2, 5] 66c1 0 [2, 5] 75c1 0 [5] 110a1 0 [5] 110a1 0 [5] 114c1 0 [2, 5] 118b1 0 [2, 5] 123a1 1 [5] 141a1 1 [7] 155a1 1 [5] 158c1 0 [2, 5] 170c1 0 [3, 7] 174a1 0 [3, 7] 174b1 0 [7] 174b1 0 [7] 182a1 0 [2, 5] 186b1 0 [5] 186b1 0 [5] 190a1 1 [2, 11] 203a1 0 [5] 214a1 1 [7] 238a1 1 [2, 7] 246b1 0 [5] 246b1 0 [5] 258f1 0 [2, 7] 258f1 0 [2, 7] 258c1 1 [2, 5] 262a1 1 [11] 264d1 0 [2, 7]...rUY# Worksheet 'kolykato' (2007-02-08 at 14:38) sage: e = EllipticCurve('894e1'); e.rank() 1rUZ# Worksheet 'kolykato' (2007-02-08 at 14:38) sage: e.heegner_discriminants(100) [-47, -95]rUj# Worksheet 'kolykato' (2007-02-08 at 14:38) sage: e.heegner_index(-47) [-0.00018561213 ... 0.00018561213]rU[# Worksheet 'kolykato' (2007-02-08 at 14:38) sage: e.shabound_kolyvagin(-95) ([2, 23], 529)rT5# Worksheet 'next' (2007-02-08 at 14:38) sage: bad_noncm = [] sage: for e in cremona: ... if not e.has_cm(): ... for p, f in factor(e.conductor()): ... if p >= 5 and f >= 2: # additive prime >= 5. ... c = e.tamagawa_product() ... if c % p == 0: ... z = (e.cremona_label(), p, 'tamagawa'); print z ... bad_noncm.append(z) ... else: ... if e.is_reducible(p): ... z = (e.cremona_label(), p); print z ... bad_noncm.append(z) ... sage: print len(bad_noncm) ('50a1', 5) ('50b1', 5, 'tamagawa') ('75a1', 5) ('75c1', 5, 'tamagawa') ('121a1', 11) ('121c1', 11) ('150a1', 5) ('150b1', 5) ('175a1', 5) ('175c1', 5) ('225e1', 5) ('225d1', 5) ('275b1', 5) ('294a1', 7) ('294b1', 7) ('325e1', 5, 'tamagawa') ('325d1', 5) ('400b1', 5) ('400c1', 5) ('450a1', 5) ('450b1', 5) ('450c1', 5) ('450d1', 5) ('490f1', 7) ('490k1', 7) ('550f1', 5) ('550k1', 5) ('550b1', 5) ('637a1', 7) ('637c1', 7) ('700d1', 5, 'tamagawa') ('735f1', 7...rU[# Worksheet 'kolykato' (2007-02-08 at 14:38) sage: e.is_good(23) and e.is_ordinary(23) TruerU# Worksheet 'kolykato' (2007-02-08 at 14:38) sage: e.padic_regulator(23,5) # !!!! 12*23^-1 + 14 + 10*23 + 16*23^2 + 20*23^3 + 8*23^4 + O(23^5)rUt# Worksheet 'bsdintro' (2007-02-08 at 14:39) sage: E = EllipticCurve('141a1') #auto load rU~# Worksheet 'bsdintro' (2007-02-08 at 14:39) sage: show(E)
y^2 + y = x^3 + x^2 - 12x + 2
rUt# Worksheet 'bsdintro' (2007-02-08 at 14:39) sage: show(factor(141))
3 \cdot 47
rUW# Worksheet 'bsdintro' (2007-02-08 at 14:39) sage: show(plot(E, hue=0.8, thickness=3)) rT.# Worksheet 'bsdintro' (2007-02-08 at 14:40) sage: %hide # 3d plot of rational points sage: t = Tachyon(xres=800, yres=500, camera_center=(2,20,6), look_at=(2,-5,-2), raydepth=6) sage: t.light((25,3,2), 1, (1,1,1)) sage: t.light((25,-3,2), 1, (1,1,1)) sage: t.light((25,-3,10), 1, (1,1,1)) sage: t.texture('black', color=(0,0,0)) sage: t.texture('red', color=(1,0,0)) sage: t.texture('white', color=(1,1,1)) sage: t.plane((0,0,0),(0,0,1),'white') sage: t.cylinder((0,0,0),(1,0,0),.05,'black') sage: t.cylinder((0,0,0),(0,1,0),.05,'black') sage: F = E.change_ring(RDF) sage: P = E.point([-3,4,1],check=False) sage: Q = P sage: n = 200 sage: for i in range(n): ... Q = Q + P ... c = i/n + .1 ... t.texture('r%s'%i,color=(float(i/n),0,0)) ... t.sphere((Q[0], -Q[1], .01), .1, 'r%s'%i) ... sage: show(t) rU# Worksheet 'bsdintro' (2007-02-08 at 14:40) sage: L = E.Lseries_dokchitser(); L Dokchitser L-function associated to Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrT# Worksheet 'bsdintro' (2007-02-08 at 14:40) sage: T = L.taylor_series(a=1,k=4); show(T)
\text{0.718550172498336}z + \left(\text{-0.0426008377591305}\right)z^{2} + \left(\text{-0.322488300418669}\right)z^{3} + O(\text{z}^{4})
rT# Worksheet 'bsdintro' (2007-02-08 at 14:40) sage: T = L.taylor_series(a=1,k=10); show(T)
\text{0.718550172498336}z + \left(\text{-0.0426008377591305}\right)z^{2} + \left(\text{-0.322488300418669}\right)z^{3} + \text{0.307082078154713}z^{4} + \left(\text{-0.146667646086057}\right)z^{5} + \text{0.0274615330312989}z^{6} + \text{0.0150684571901296}z^{7} + \left(\text{-0.0162711837662345}\right)z^{8} + \text{0.00817960548837091}z^{9} + O(\text{z}^{10})
rU# Worksheet 'bsdintro' (2007-02-08 at 14:40) sage: T = L.taylor_series(a=1,k=20); show(T) Traceback (most recent call last): ... SyntaxError: invalid syntax (, line 1) Error using SAGE to evaluate '***polcoeff:nonexistentcomponentintruecoeff.'rT)# Worksheet 'bsdintro' (2007-02-08 at 14:41) sage: T = L.taylor_series(a=1,k=15); show(T)
\text{0.718550172498336}z + \left(\text{-0.0426008377591305}\right)z^{2} + \left(\text{-0.322488300418669}\right)z^{3} + \text{0.307082078154713}z^{4} + \left(\text{-0.146667646086057}\right)z^{5} + \text{0.0274615330312989}z^{6} + \text{0.0150684571901296}z^{7} + \left(\text{-0.0162711837662345}\right)z^{8} + \text{0.00817960548837091}z^{9} + \left(\text{-0.00266982983499600}\right)z^{10} + \text{0.000502580563774754}z^{11} + \text...rT&# Worksheet 'bsdintro' (2007-02-08 at 14:41) sage: T = L.taylor_series(a=1,k=5); show(T)
\text{0.718550172498336}z + \left(\text{-0.0426008377591305}\right)z^{2} + \left(\text{-0.322488300418669}\right)z^{3} + \text{0.307082078154713}z^{4} + O(\text{z}^{5})
rUT# Worksheet 'bsdintro' (2007-02-08 at 14:41) sage: L.derivative(1) 0.718550172498336rU# Worksheet 'bsdintro' (2007-02-08 at 14:41) sage: P = plot(lambda x: real(L(x)), -1,3, rgbcolor=(1,0,0), thickness=3, plot_points=30) sage: show(P) rU# Worksheet 'bsdintro' (2007-02-08 at 14:41) sage: print 'eps = ', E.root_number() sage: print 'L(E,1) = ', E.Lseries_at1() eps = -1 L(E,1) = 0rU# Worksheet 'bsdintro' (2007-02-08 at 14:42) sage: Z = E.Lseries_zeros(10) sage: show(point([(0.5, y) for y in Z], pointsize=50, hue=0.62), xmin=0, xmax=1) rU# Worksheet 'bsdintro' (2007-02-08 at 14:42) sage: Z = E.Lseries_zeros(20) sage: show(point([(0.5, y) for y in Z], pointsize=50, hue=0.62), xmin=0, xmax=1) rUF# Worksheet 'bsdintro' (2007-02-08 at 14:42) sage: E.analytic_rank() 1rUF# Worksheet 'bsdintro' (2007-02-08 at 14:42) sage: E.analytic_rank() 1rU=# Worksheet 'bsdintro' (2007-02-08 at 14:42) sage: E.rank() 1rUJ# Worksheet 'bsdintro' (2007-02-08 at 14:42) sage: E.gens() [(-3 : 4 : 1)]rUS# Worksheet 'bsdintro' (2007-02-08 at 14:42) sage: E.regulator() 0.0344867750175524rUN# Worksheet 'bsdintro' (2007-02-08 at 14:42) sage: E.tamagawa_numbers() [7, 1]rUW# Worksheet 'bsdintro' (2007-02-08 at 14:42) sage: E.omega() 2.976504024814575615165574rUF# Worksheet 'bsdintro' (2007-02-08 at 14:42) sage: E.torsion_order() 1rUF# Worksheet 'bsdintro' (2007-02-08 at 14:43) sage: E.torsion_order() 1rT7# Worksheet 'bsdintro' (2007-02-08 at 14:43) sage: L1 = L.derivative(1); r = 1; Omega = E.omega(); sage: T = E.torsion_order(); Reg = E.regulator(); c = E.tamagawa_product() sage: print "L1 = ", L1 sage: print "rhs = %s * Sha"%( (Omega * Reg * c)/T^2 ) L1 = 0.718550172498336 rhs = 0.718550172498336 * SharUJ# Worksheet 'bsdintro' (2007-02-08 at 14:47) sage: E.selmer_rank_bound() 1rUL# Worksheet 'bsdintro' (2007-02-08 at 14:47) sage: E.two_selmer_shabound() 0rUb# Worksheet 'bsdintro' (2007-02-08 at 14:48) sage: E.simon_two_descent() (1, 1, [(-15 : 729 : 1)])rUb# Worksheet 'bsdintro' (2007-02-08 at 14:48) sage: E.simon_two_descent() (1, 1, [(-15 : 729 : 1)])rU# Worksheet 'kolykato' (2007-02-08 at 14:51) sage: E = EllipticCurve('141a'); E #auto Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrUQ# Worksheet 'kolykato' (2007-02-08 at 14:52) sage: E.Lseries(1) 0.000000000000000rUF# Worksheet 'kolykato' (2007-02-08 at 14:52) sage: E.analytic_rank() 1rUQ# Worksheet 'kolykato' (2007-02-08 at 14:52) sage: E.Lseries(1) 0.000000000000000rUF# Worksheet 'kolykato' (2007-02-08 at 14:52) sage: E.analytic_rank() 1rUJ# Worksheet 'kolykato' (2007-02-08 at 14:52) sage: E.shabound_kato() FalserUH# Worksheet 'kolykato' (2007-02-08 at 14:52) sage: E.non_surjective() []r U# Worksheet 'kolykato' (2007-02-08 at 14:52) sage: e = EllipticCurve('14a1') sage: e.non_surjective() [(2, '2-torsion'), (3, '3-torsion')]r U# Worksheet 'kolykato' (2007-02-08 at 14:52) sage: e = EllipticCurve('14a1') sage: e.non_surjective() [(2, '2-torsion'), (3, '3-torsion')]r UI# Worksheet 'kolykato' (2007-02-08 at 14:52) sage: e.is_reducible(3) Truer UY# Worksheet 'kolykato' (2007-02-08 at 14:53) sage: E.shabound_kolyvagin(-11) ([2, 7], 49)r U# Worksheet 'kolykato' (2007-02-08 at 14:53) sage: v = E.heegner_discriminants(200); v [-11, -20, -23, -35, -104, -107, -116, -152, -164, -167, -179]rT# Worksheet 'kolykato' (2007-02-08 at 14:53) sage: for D in v: ... E.heegner_index(D) [48.999572 ... 49.000367] [48.999633 ... 49.000306] [48.999572 ... 49.000306] [48.999633 ... 49.000367] [-0.000026629976 ... 0.000026629976] [440.99609 ... 441.00293] [48.999633 ... 49.000306] [195.99853 ... 196.00098] [-0.000033440826 ... 0.000033440826] [48.999633 ... 49.000245] [48.999633 ... 49.000306]rT~# Worksheet 'kolykato' (2007-02-08 at 14:53) sage: for E in cremona_optimal_curves(range(1,100)): ... print E.cremona_label(), E.shabound_kolyvagin(), E.tamagawa_numbers() 11a1 ([2, 5], 1) [5] 14a1 ([2, 3], 1) [2, 3] 15a1 ([2], 1) [2, 4] 17a1 ([2], 1) [4] 19a1 ([2, 3], 1) [3] 20a1 ([2, 3], 1) [3, 2] 21a1 ([2], 1) [4, 2] 24a1 ([2], 1) [4, 2] 26a1 ([2, 3], 1) [1, 3] 26b1 ([2, 7], 1) [7, 1] 27a1 (0, 0) [3] 30a1 ([2, 3], 1) [2, 3, 1] 32a1 (0, 0) [4] 33a1 ([2], 1) [2, 2] 34a1 ([2, 3], 1) [6, 1] 35a1 ([2, 3], 1) [1, 3] 36a1 (0, 0) [3, 2] 37a1 ([2], 1) [1] 37b1 ([2, 3], 1) [3] 38a1 ([2, 3], 1) [1, 3] 38b1 ([2, 5], 1) [5, 1] 39a1 ([...rTO# Worksheet 'kolykato' (2007-02-08 at 14:54) sage: v = [] sage: for e in cremona_optimal_curves(range(1,1001)): ... for c in e.tamagawa_numbers(): ... if c > 1 and max(prime_divisors(c)) >= 5: ... v.append(e) ... print e.cremona_label(), e.rank(use_database=True), \ ... prime_divisors(e.tamagawa_product()) ... sage: print len(v) 11a1 0 [5] 26b1 0 [7] 38b1 0 [5] 50b1 0 [5] 57c1 0 [2, 5] 58b1 0 [2, 5] 66c1 0 [2, 5] 66c1 0 [2, 5] 75c1 0 [5] 110a1 0 [5] 110a1 0 [5] 114c1 0 [2, 5] 118b1 0 [2, 5] 123a1 1 [5] 141a1 1 [7] 155a1 1 [5] 158c1 0 [2, 5] 170c1 0 [3, 7] 174a1 0 [3, 7] 174b1 0 [7] 174b1 0 [7] 182a1 0 [2, 5] 186b1 0 [5] 186b1 0 [5] 190a1 1 [2, 11] 203a1 0 [5] 214a1 1 [7] 238a1 1 [2, 7] 246b1 0 [5] 246b1 0 [5] 258f1 0 [2, 7] 258f1 0 [2, 7] 258c1 1 [2, 5] 262a1 1 [11] 264d1 0 [2, 7]...rUY# Worksheet 'kolykato' (2007-02-08 at 14:54) sage: e = EllipticCurve('894e1'); e.rank() 1rUP# Worksheet 'kolykato' (2007-02-08 at 14:54) sage: e.shabound_kolyvagin() (0, 0)rUZ# Worksheet 'kolykato' (2007-02-08 at 14:55) sage: e.heegner_discriminants(100) [-47, -95]rUj# Worksheet 'kolykato' (2007-02-08 at 14:55) sage: e.heegner_index(-47) [-0.00018561213 ... 0.00018561213]rUa# Worksheet 'kolykato' (2007-02-08 at 14:55) sage: e.heegner_index(-95) [2115.9843 ... 2116.0118]rU[# Worksheet 'kolykato' (2007-02-08 at 14:55) sage: e.shabound_kolyvagin(-95) ([2, 23], 529)rU[# Worksheet 'kolykato' (2007-02-08 at 14:55) sage: e.is_good(23) and e.is_ordinary(23) TruerU# Worksheet 'kolykato' (2007-02-08 at 14:55) sage: e.padic_regulator(23,5) # !!!! 12*23^-1 + 14 + 10*23 + 16*23^2 + 20*23^3 + 8*23^4 + O(23^5)rU># Worksheet '_scratch_' (2007-02-08 at 14:57) sage: a = 2 + 2 rU># Worksheet '_scratch_' (2007-02-08 at 14:57) sage: b = a^100 rU# Worksheet '_scratch_' (2007-02-08 at 14:57) sage: E = EllipticCurve('121a'); E Traceback (most recent call last): ... AttributeError: 'LargeCremonaDatabase' object has no attribute '_init'rU# Worksheet '_scratch_' (2007-02-08 at 14:57) sage: E = EllipticCurve('121a'); E Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational FieldrU# Worksheet 'padic' (2007-02-08 at 14:58) sage: E = EllipticCurve('141a'); E #auto Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrUq# Worksheet 'padic' (2007-02-08 at 14:58) sage: show(factor(141))
3 \cdot 47
rU[# Worksheet 'padic' (2007-02-08 at 14:58) sage: E.is_good(7), E.is_ordinary(7) (True, True)r T# Worksheet 'padic' (2007-02-08 at 14:58) sage: time reg7 = E.padic_regulator(7,6) sage: show(reg7)
4\cdot 7^{-1} + 3 + 4\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 3\cdot 7^{5} + O(7^{6})
CPU time: 0.26 s, Wall time: 0.27 sr!U# Worksheet 'padic' (2007-02-08 at 14:58) sage: L7 = E.padic_lseries(7,prec=6); L7 7-adic L-series of Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational Fieldr"T# Worksheet 'padic' (2007-02-08 at 14:58) sage: time reg7 = E.padic_regulator(7,6) sage: show(reg7)
4\cdot 7^{-1} + 3 + 4\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 3\cdot 7^{5} + O(7^{6})
CPU time: 0.25 s, Wall time: 0.26 sr#U# Worksheet 'padic' (2007-02-08 at 14:58) sage: L7 = E.padic_lseries(7,prec=6); L7 7-adic L-series of Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational Fieldr$T# Worksheet 'padic' (2007-02-08 at 14:58) sage: show(L7.approx(3))
\left(1 + 3\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 6\cdot 7^{5} + O(7^{6})\right)T + \left(6\cdot 7 + 5\cdot 7^{2} + 6\cdot 7^{4} + 6\cdot 7^{5} + O(7^{6})\right)T^{2} + \left(6 + 4\cdot 7 + 2\cdot 7^{3} + 5\cdot 7^{4} + 2\cdot 7^{5} + O(7^{6})\right)T^{3} + O(\text{T}^{4})
r%Ue# Worksheet 'next' (2007-02-08 at 14:59) sage: cremona = list(cremona_optimal_curves(range(1,1001))) r&U@# Worksheet 'next' (2007-02-08 at 14:59) sage: len(cremona) 2463r'Ug# Worksheet 'next' (2007-02-08 at 14:59) sage: cm = [e for e in cremona if e.has_cm()] sage: len(cm) 44r(Ub# Worksheet 'next' (2007-02-08 at 14:59) sage: cm1 = [e for e in cm if e.rank() == 1]; len(cm1) 19r)T# Worksheet 'next' (2007-02-08 at 14:59) sage: bad_cm = [] sage: for e in cm1: ... for p in prime_divisors(e.conductor()): ... if p >= 5: ... bad_cm.append((e.cremona_label(), p)) ... sage: print len(bad_cm) sage: print Sequence(bad_cm, cr=True) 10 [ ('121b1', 11), ('225a1', 5), ('361a1', 19), ('441b1', 7), ('441d1', 7), ('675a1', 5), ('784h1', 7), ('800h1', 5), ('800a1', 5), ('900c1', 5) ]r*T# Worksheet 'next' (2007-02-08 at 15:00) sage: bad_cm = [] sage: for e in cm1: ... for p in prime_divisors(e.conductor()): ... if p >= 5: ... bad_cm.append((e.cremona_label(), e.rank(), p)) ... sage: print len(bad_cm) sage: print Sequence(bad_cm, cr=True) 10 [ ('121b1', 1, 11), ('225a1', 1, 5), ('361a1', 1, 19), ('441b1', 1, 7), ('441d1', 1, 7), ('675a1', 1, 5), ('784h1', 1, 7), ('800h1', 1, 5), ('800a1', 1, 5), ('900c1', 1, 5) ]r+T# Worksheet 'next' (2007-02-08 at 15:00) sage: bad_cm = [] sage: for e in cm1: ... for p in prime_divisors(e.conductor()): ... if p >= 5: ... bad_cm.append((e.cremona_label(), p)) ... sage: print len(bad_cm) sage: print Sequence(bad_cm, cr=True) 10 [ ('121b1', 11), ('225a1', 5), ('361a1', 19), ('441b1', 7), ('441d1', 7), ('675a1', 5), ('784h1', 7), ('800h1', 5), ('800a1', 5), ('900c1', 5) ]r,U# Worksheet '_scratch_' (2007-02-08 at 15:00) sage: E = EllipticCurve('121a'); E Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational Fieldr-T# Worksheet '_scratch_' (2007-02-08 at 15:00) sage: E.isogeny_class('database') ([Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 305*x + 7888 over Rational Field, Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational Field], None)r.T# Worksheet '_scratch_' (2007-02-08 at 15:00) sage: E.isogeny_class() ([Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational Field, Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 305*x + 7888 over Rational Field], [ 0 11] [11 0])r/T5# Worksheet 'next' (2007-02-08 at 15:00) sage: bad_noncm = [] sage: for e in cremona: ... if not e.has_cm(): ... for p, f in factor(e.conductor()): ... if p >= 5 and f >= 2: # additive prime >= 5. ... c = e.tamagawa_product() ... if c % p == 0: ... z = (e.cremona_label(), p, 'tamagawa'); print z ... bad_noncm.append(z) ... else: ... if e.is_reducible(p): ... z = (e.cremona_label(), p); print z ... bad_noncm.append(z) ... sage: print len(bad_noncm) ('50a1', 5) ('50b1', 5, 'tamagawa') ('75a1', 5) ('75c1', 5, 'tamagawa') ('121a1', 11) ('121c1', 11) ('150a1', 5) ('150b1', 5) ('175a1', 5) ('175c1', 5) ('225e1', 5) ('225d1', 5) ('275b1', 5) ('294a1', 7) ('294b1', 7) ('325e1', 5, 'tamagawa') ('325d1', 5) ('400b1', 5) ('400c1', 5) ('450a1', 5) ('450b1', 5) ('450c1', 5) ('450d1', 5) ('490f1', 7) ('490k1', 7) ('550f1', 5) ('550k1', 5) ('550b1', 5) ('637a1', 7) ('637c1', 7) ('700d1', 5, 'tamagawa') ('735f1', 7...r0UD# Worksheet '_scratch_' (2007-02-08 at 15:01) sage: E.has_cm() Falser1U># Worksheet '_scratch_' (2007-02-08 at 15:01) sage: E.rank() 0r2TI# Worksheet 'next' (2007-02-08 at 15:01) sage: bad_noncm = [] sage: for e in cremona: ... if not e.has_cm(): ... for p, f in factor(e.conductor()): ... if p >= 5 and f >= 2: # additive prime >= 5. ... c = e.tamagawa_product() ... if c % p == 0: ... z = (e.cremona_label(), e.rank(), p, 'tamagawa'); print z ... bad_noncm.append(z) ... else: ... if e.is_reducible(p): ... z = (e.cremona_label(), e.rank(), p); print z ... bad_noncm.append(z) ... sage: print len(bad_noncm) ('50a1', 0, 5) ('50b1', 0, 5, 'tamagawa') ('75a1', 0, 5) ('75c1', 0, 5, 'tamagawa') ('121a1', 0, 11) ('121c1', 0, 11) ('150a1', 0, 5) ('150b1', 0, 5) ('175a1', 1, 5) ('175c1', 0, 5) ('225e1', 1, 5) ('225d1', 0, 5) ('275b1', 0, 5) ('294a1', 0, 7) ('294b1', 0, 7) ('325e1', 0, 5, 'tamagawa') ('325d1', 0, 5) ('400b1', 0, 5) ('400c1', 1, 5) ('450a1', 0, 5) ('450b1', 0, 5) ('450c1', 1, 5) ('450d1', 0, 5) ('490f1', 0, 7) ('490k1', 0, 7) ('550f1', 1, 5) ('550k1', ...r3T# Worksheet 'next' (2007-02-08 at 15:02) sage: bad_noncm = [] sage: for e in cremona: ... if not e.has_cm(): ... for p, f in factor(e.conductor()): ... if p >= 5 and f >= 2: # additive prime >= 5. ... c = e.tamagawa_product() ... if c % p == 0: ... if not e.is_surjective(p): ... z = (e.cremona_label(), e.rank(), p, 'tamagawa'); print z ... bad_noncm.append(z) ... else: ... if e.is_reducible(p): ... z = (e.cremona_label(), e.rank(), p); print z ... bad_noncm.append(z) ... sage: print len(bad_noncm) ('50a1', 0, 5) ('75a1', 0, 5) ('121a1', 0, 11) ('121c1', 0, 11) ('150a1', 0, 5) ('150b1', 0, 5) ('175a1', 1, 5) ('175c1', 0, 5) ('225e1', 1, 5) ('225d1', 0, 5) ('275b1', 0, 5) ('294a1', 0, 7) ('294b1', 0, 7) ('325d1', 0, 5) ('400b1', 0, 5) ('400c1', 1, 5) ('450a1', 0, 5) ('450b1', 0, 5) ('450c1', 1, 5) ('450d1', 0, 5) ('490f1', 0, 7) ('490k1', 0, 7) ('550f1', 1, 5) ('550k1', 0, 5) ('550b1', 0, 5) ('637a1', 1, 7) ('637c1', 1, 7) ('775c1', 0, 5) ('882c1', 0,...r4Th# Worksheet 'next' (2007-02-08 at 15:04) sage: bad_noncm = [] sage: for e in cremona: ... if not e.has_cm(): ... for p, f in factor(e.conductor()): ... if p >= 5 and f >= 2: # additive prime >= 5. ... c = e.tamagawa_product() ... if c % p == 0: ... if not e.is_surjective(p): ... z = (e.cremona_label(), e.rank(), p, 'tamagawa'); print z ... bad_noncm.append(z) ... elif e.is_reducible(p): ... z = (e.cremona_label(), e.rank(), p); print z ... bad_noncm.append(z) ... sage: print len(bad_noncm) ('50a1', 0, 5) ('75a1', 0, 5) ('121a1', 0, 11) ('121c1', 0, 11) ('150a1', 0, 5) ('150b1', 0, 5) ('175a1', 1, 5) ('175c1', 0, 5) ('225e1', 1, 5) ('225d1', 0, 5) ('275b1', 0, 5) ('294a1', 0, 7) ('294b1', 0, 7) ('325d1', 0, 5) ('400b1', 0, 5) ('400c1', 1, 5) ('450a1', 0, 5) ('450b1', 0, 5) ('450c1', 1, 5) ('450d1', 0, 5) ('490f1', 0, 7) ('490k1', 0, 7) ('550f1', 1, 5) ('550k1', 0, 5) ('550b1', 0, 5) ('637a1', 1, 7) ('637c1', 1, 7) ('775c1', 0, 5) ('882c1', 0,...r5UW# Worksheet 'bsdintro' (2007-02-08 at 15:17) sage: show(plot(E, hue=0.8, thickness=3)) r6T.# Worksheet 'bsdintro' (2007-02-08 at 15:17) sage: %hide # 3d plot of rational points sage: t = Tachyon(xres=800, yres=500, camera_center=(2,20,6), look_at=(2,-5,-2), raydepth=6) sage: t.light((25,3,2), 1, (1,1,1)) sage: t.light((25,-3,2), 1, (1,1,1)) sage: t.light((25,-3,10), 1, (1,1,1)) sage: t.texture('black', color=(0,0,0)) sage: t.texture('red', color=(1,0,0)) sage: t.texture('white', color=(1,1,1)) sage: t.plane((0,0,0),(0,0,1),'white') sage: t.cylinder((0,0,0),(1,0,0),.05,'black') sage: t.cylinder((0,0,0),(0,1,0),.05,'black') sage: F = E.change_ring(RDF) sage: P = E.point([-3,4,1],check=False) sage: Q = P sage: n = 200 sage: for i in range(n): ... Q = Q + P ... c = i/n + .1 ... t.texture('r%s'%i,color=(float(i/n),0,0)) ... t.sphere((Q[0], -Q[1], .01), .1, 'r%s'%i) ... sage: show(t) r7T# Worksheet 'kolykato' (2007-02-08 at 15:19) sage: for E in cremona_optimal_curves(range(380,400)): ... print E.cremona_label(), E.shabound_kolyvagin(), E.tamagawa_numbers() 380a1 ([2], 1) [1, 1, 2] 380b1 ([2, 3], 9) [3, 1, 2] 381a1 ([2, 5], 25) [5, 1] 381b1 ([2], 1) [1, 1] 384f1 ([2], 1) [1, 2] 384g1 ([2], 1) [2, 1] 384h1 ([2, 3], 9) [2, 3] 384a1 ([2], 1) [2, 1] 384b1 ([2], 1) [1, 2] 384c1 ([2], 1) [1, 2] 384e1 ([2, 3], 9) [1, 6] 384d1 (0, 0) [2, 1] 385a1 ([2], 1) [2, 1, 4] 385b1 ([2], 1) [2, 1, 2] 387a1 ([2], 1) [2, 1] 387c1 ([2], 1) [2, 1] 387e1 ([2], 1) [2, 1] 387b1 ([2], 1) [2, 1] 387d1 ([2], 1) [4, 1] 389a1 (0, 0) [1] 39...r8Ta# Worksheet 'kolykato' (2007-02-08 at 15:20) sage: for e in cremona_optimal_curves(range(390,400)): ... print (e.cremona_label(), e.shabound_kolyvagin(e.regulator(use_database=True)), ... e.tamagawa_numbers()) Traceback (most recent call last): ... TypeError: unsupported operand type(s) for %: 'sage.rings.real_mpfr.RealNumber' and 'int'r9T# Worksheet 'kolykato' (2007-02-08 at 15:21) sage: for e in cremona_optimal_curves(range(390,400)): ... print (e.cremona_label(), ... e.shabound_kolyvagin(regulator=e.regulator(use_database=True)), ... e.tamagawa_numbers()) Traceback (most recent call last): ... RuntimeError: Problem in shabound_kolyvagin; square of index is not an integer -- D=-191, I=[47.413050345704476 ... 47.496409073836631].r:T# Worksheet 'kolykato' (2007-02-08 at 15:22) sage: for e in cremona_optimal_curves(range(390,400)): ... print e.cremona_label(), e.shabound_kolyvagin(), e.tamagawa_numbers() 390f1 ([2], 1) [2, 1, 2, 1] 390g1 Traceback (most recent call last): print e.cremona_label(), e.shabound_kolyvagin(), e.tamagawa_numbers() File "/Users/was/talks/2007-02-07-banff-bsd/", line 2, in File "/Users/was/s/local/lib/python2.5/site-packages/sage/schemes/elliptic_curves/ell_rational_field.py", line 3380, in shabound_kolyvagin hZ = F.regulator(use_database=True)/2 File "/Users/was/s/local/lib/python2.5/site-packages/s...r;T# Worksheet 'kolykato' (2007-02-08 at 15:25) sage: for e in cremona_optimal_curves(range(100,120)): ... try: ... print e.cremona_label(), e.shabound_kolyvagin(), e.tamagawa_numbers() ... except: ... print "problem computing bound for rank %s curve %s"%(e.rank(), e.cremona_label()) 100a1 ([2, 3], 1) [1, 2] 101a1 ([2], 1) [1] 102a1 ([2], 1) [2, 2, 1] 102c1 problem computing bound for rank 0 curve 102c1 102b1 problem computing bound for rank 0 curve 102b1 104a1 ([2], 1) [1, 1] 105a1 problem computing bound for rank 0 curve 105a1 106a1 ([2, 3], 1) [3, 1] 106c1 ([2, 3], 1) [24, 1] 106b1 ([2], 1) [2, 1] 106d1 ([2], 1) [1, 1] 108a1 (0, 0) [3, 1] 109a1 ([2], 1) [1] 110a1 problem computing bound for rank 0 curve 110a1 110c1 problem computing...r<Tz# Worksheet 'kolykato' (2007-02-08 at 15:27) sage: v = [] sage: for e in cremona_optimal_curves(range(1,1001)): ... if e.rank() == 1: ... for c in e.tamagawa_numbers(): ... if c > 1 and max(prime_divisors(c)) >= 5: ... v.append(e) ... print e.cremona_label(), e.rank(use_database=True), \ ... prime_divisors(e.tamagawa_product()) ... sage: print len(v) 123a1 1 [5] 141a1 1 [7] 155a1 1 [5] 190a1 1 [2, 11] 214a1 1 [7] 238a1 1 [2, 7] 258c1 1 [2, 5] 262a1 1 [11] 274a1 1 [7] 280b1 1 [2, 3, 5] 285a1 1 [2, 5] 286b1 1 [2, 13] 302a1 1 [3, 5] 302c1 1 [5] 303a1 1 [2, 7] 309a1 1 [5] 318d1 1 [2, 11] 322d1 1 [2, 5] 326b1 1 [5] 346b1 1 [7] 348d1 1 [3, 7] 350f1 1 [2, 3, 11] 354f1 1 [2, 7] 357d1 1 [2, 7] 362b1 1 [7] 364a1 1 [3, 5] 366g1 1 [2, 5] 381a1 1 [5] 408d1 1 [2, 5] 414d1 1 [2, 5] 418b1 1 [2, 13] 430b1 1 [5] 430d1 1...r=Ut# Worksheet 'bsdintro' (2007-02-08 at 16:08) sage: E = EllipticCurve('141a1') #auto load r>U~# Worksheet 'bsdintro' (2007-02-08 at 16:08) sage: show(E)
y^2 + y = x^3 + x^2 - 12x + 2
r?Ut# Worksheet 'bsdintro' (2007-02-08 at 16:09) sage: show(factor(141))
3 \cdot 47
r@UW# Worksheet 'bsdintro' (2007-02-08 at 16:09) sage: show(plot(E, hue=0.8, thickness=3)) rAT.# Worksheet 'bsdintro' (2007-02-08 at 16:09) sage: %hide # 3d plot of rational points sage: t = Tachyon(xres=800, yres=500, camera_center=(2,20,6), look_at=(2,-5,-2), raydepth=6) sage: t.light((25,3,2), 1, (1,1,1)) sage: t.light((25,-3,2), 1, (1,1,1)) sage: t.light((25,-3,10), 1, (1,1,1)) sage: t.texture('black', color=(0,0,0)) sage: t.texture('red', color=(1,0,0)) sage: t.texture('white', color=(1,1,1)) sage: t.plane((0,0,0),(0,0,1),'white') sage: t.cylinder((0,0,0),(1,0,0),.05,'black') sage: t.cylinder((0,0,0),(0,1,0),.05,'black') sage: F = E.change_ring(RDF) sage: P = E.point([-3,4,1],check=False) sage: Q = P sage: n = 200 sage: for i in range(n): ... Q = Q + P ... c = i/n + .1 ... t.texture('r%s'%i,color=(float(i/n),0,0)) ... t.sphere((Q[0], -Q[1], .01), .1, 'r%s'%i) ... sage: show(t) rBU# Worksheet 'bsdintro' (2007-02-08 at 16:10) sage: L = E.Lseries_dokchitser(); L Dokchitser L-function associated to Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrCT&# Worksheet 'bsdintro' (2007-02-08 at 16:10) sage: T = L.taylor_series(a=1,k=5); show(T)
\text{0.718550172498336}z + \left(\text{-0.0426008377591305}\right)z^{2} + \left(\text{-0.322488300418669}\right)z^{3} + \text{0.307082078154713}z^{4} + O(\text{z}^{5})
rDUT# Worksheet 'bsdintro' (2007-02-08 at 16:10) sage: L.derivative(1) 0.718550172498336rEUk# Worksheet 'bsdintro' (2007-02-08 at 16:10) sage: L.derivative(1+I) 0.914542375894834 - 1.04522356506640*IrFUT# Worksheet 'bsdintro' (2007-02-08 at 16:10) sage: L.derivative(1) 0.718550172498336rGU# Worksheet 'bsdintro' (2007-02-08 at 16:11) sage: P = plot(lambda x: real(L(x)), -1,3, rgbcolor=(1,0,0), thickness=3, plot_points=30) sage: show(P) rHUa# Worksheet 'bsdintro' (2007-02-08 at 16:11) sage: L(1+I) 0.308619176194767 + 0.886920756037224*IrIU9# Worksheet 'bsdintro' (2007-02-08 at 16:11) sage: L(0) 0rJU# Worksheet 'bsdintro' (2007-02-08 at 16:12) sage: print 'eps = ', E.root_number() sage: print 'L(E,1) = ', E.Lseries_at1() eps = -1 L(E,1) = 0rKU# Worksheet 'bsdintro' (2007-02-08 at 16:12) sage: Z = E.Lseries_zeros(20) sage: show(point([(0.5, y) for y in Z], pointsize=50, hue=0.62), xmin=0, xmax=1) rLU# Worksheet 'bsdintro' (2007-02-08 at 16:12) sage: %time sage: Z = E.Lseries_zeros(20) sage: show(point([(0.5, y) for y in Z], pointsize=50, hue=0.62), xmin=0, xmax=1) CPU time: 0.17 s, Wall time: 0.68 srMUF# Worksheet 'bsdintro' (2007-02-08 at 16:13) sage: E.analytic_rank() 1rNU=# Worksheet 'bsdintro' (2007-02-08 at 16:13) sage: E.rank() 1rOUJ# Worksheet 'bsdintro' (2007-02-08 at 16:13) sage: E.gens() [(-3 : 4 : 1)]rPUS# Worksheet 'bsdintro' (2007-02-08 at 16:13) sage: E.regulator() 0.0344867750175524rQUN# Worksheet 'bsdintro' (2007-02-08 at 16:13) sage: E.tamagawa_numbers() [7, 1]rRUW# Worksheet 'bsdintro' (2007-02-08 at 16:13) sage: E.omega() 2.976504024814575615165574rSUF# Worksheet 'bsdintro' (2007-02-08 at 16:14) sage: E.torsion_order() 1rTT7# Worksheet 'bsdintro' (2007-02-08 at 16:14) sage: L1 = L.derivative(1); r = 1; Omega = E.omega(); sage: T = E.torsion_order(); Reg = E.regulator(); c = E.tamagawa_product() sage: print "L1 = ", L1 sage: print "rhs = %s * Sha"%( (Omega * Reg * c)/T^2 ) L1 = 0.718550172498336 rhs = 0.718550172498336 * SharUUL# Worksheet 'bsdintro' (2007-02-08 at 16:20) sage: E.two_selmer_shabound() 0rVUb# Worksheet 'bsdintro' (2007-02-08 at 16:21) sage: E.simon_two_descent() (1, 1, [(-15 : 729 : 1)])rWUJ# Worksheet 'bsdintro' (2007-02-08 at 16:22) sage: E.selmer_rank_bound() 1rXU# Worksheet 'kolykato' (2007-02-08 at 16:23) sage: E = EllipticCurve('141a'); E #auto Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrYUY# Worksheet 'kolykato' (2007-02-08 at 16:33) sage: E.shabound_kolyvagin(-11) ([2, 7], 49)rZU# Worksheet 'kolykato' (2007-02-08 at 16:35) sage: v = E.heegner_discriminants(200); v [-11, -20, -23, -35, -104, -107, -116, -152, -164, -167, -179]r[T# Worksheet 'kolykato' (2007-02-08 at 16:35) sage: for D in v: ... E.heegner_index(D) [48.999572 ... 49.000367] [48.999633 ... 49.000306] [48.999572 ... 49.000306] [48.999633 ... 49.000367] [-0.000026629976 ... 0.000026629976] [440.99609 ... 441.00293] [48.999633 ... 49.000306] [195.99853 ... 196.00098] [-0.000033440826 ... 0.000033440826] [48.999633 ... 49.000245] [48.999633 ... 49.000306]r\T# Worksheet 'kolykato' (2007-02-08 at 16:38) sage: for e in cremona_optimal_curves(range(100,120)): ... try: ... print e.cremona_label(), e.shabound_kolyvagin(), e.tamagawa_numbers() ... except: ... print "problem computing bound for rank %s curve %s"%(e.rank(), e.cremona_label()) 100a1 ([2, 3], 1) [1, 2] 101a1 ([2], 1) [1] 102a1 ([2], 1) [2, 2, 1] 102c1 problem computing bound for rank 0 curve 102c1 102b1 problem computing bound for rank 0 curve 102b1 104a1 ([2], 1) [1, 1] 105a1 problem computing bound for rank 0 curve 105a1 106a1 ([2, 3], 1) [3, 1] 106c1 ([2, 3], 1) [24, 1] 106b1 ([2], 1) [2, 1] 106d1 ([2], 1) [1, 1] 108a1 (0, 0) [3, 1] 109a1 ([2], 1) [1] 110a1 problem computing bound for rank 0 curve 110a1 110c1 problem computing...r]Tz# Worksheet 'kolykato' (2007-02-08 at 16:41) sage: v = [] sage: for e in cremona_optimal_curves(range(1,1001)): ... if e.rank() == 1: ... for c in e.tamagawa_numbers(): ... if c > 1 and max(prime_divisors(c)) >= 5: ... v.append(e) ... print e.cremona_label(), e.rank(use_database=True), \ ... prime_divisors(e.tamagawa_product()) ... sage: print len(v) 123a1 1 [5] 141a1 1 [7] 155a1 1 [5] 190a1 1 [2, 11] 214a1 1 [7] 238a1 1 [2, 7] 258c1 1 [2, 5] 262a1 1 [11] 274a1 1 [7] 280b1 1 [2, 3, 5] 285a1 1 [2, 5] 286b1 1 [2, 13] 302a1 1 [3, 5] 302c1 1 [5] 303a1 1 [2, 7] 309a1 1 [5] 318d1 1 [2, 11] 322d1 1 [2, 5] 326b1 1 [5] 346b1 1 [7] 348d1 1 [3, 7] 350f1 1 [2, 3, 11] 354f1 1 [2, 7] 357d1 1 [2, 7] 362b1 1 [7] 364a1 1 [3, 5] 366g1 1 [2, 5] 381a1 1 [5] 408d1 1 [2, 5] 414d1 1 [2, 5] 418b1 1 [2, 13] 430b1 1 [5] 430d1 1...r^U# Worksheet 'padic' (2007-02-08 at 16:45) sage: E = EllipticCurve('141a'); E #auto Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational Fieldr_U# Worksheet 'padic' (2007-02-08 at 16:45) sage: E = EllipticCurve('141a'); E #auto Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational Fieldr`Uq# Worksheet 'padic' (2007-02-08 at 16:45) sage: show(factor(141))
3 \cdot 47
raU[# Worksheet 'padic' (2007-02-08 at 16:45) sage: E.is_good(7), E.is_ordinary(7) (True, True)rbUt# Worksheet 'padic' (2007-02-08 at 16:45) sage: E.is_good(7), E.is_ordinary(7) sage: E.is_surjective(7) (True, None)rcU# Worksheet 'padic' (2007-02-08 at 16:45) sage: print E.is_good(7), E.is_ordinary(7) sage: print E.is_surjective(7) True True (True, None)rdT# Worksheet 'padic' (2007-02-08 at 16:46) sage: time reg7 = E.padic_regulator(7,6) sage: show(reg7)
4\cdot 7^{-1} + 3 + 4\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 3\cdot 7^{5} + O(7^{6})
CPU time: 0.26 s, Wall time: 0.27 sreT# Worksheet 'padic' (2007-02-08 at 16:47) sage: time reg7 = E.padic_regulator(389,6) sage: show(reg7)
173 + 60\cdot 389 + 190\cdot 389^{2} + 3\cdot 389^{3} + 385\cdot 389^{4} + 88\cdot 389^{5} + O(389^{6})
CPU time: 1.83 s, Wall time: 1.89 srfU# Worksheet 'padic' (2007-02-08 at 16:48) sage: L7 = E.padic_lseries(7,prec=6); L7 7-adic L-series of Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrgT# Worksheet 'padic' (2007-02-08 at 16:48) sage: show(L7.approx(3))
\left(1 + 3\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 6\cdot 7^{5} + O(7^{6})\right)T + \left(6\cdot 7 + 5\cdot 7^{2} + 6\cdot 7^{4} + 6\cdot 7^{5} + O(7^{6})\right)T^{2} + \left(6 + 4\cdot 7 + 2\cdot 7^{3} + 5\cdot 7^{4} + 2\cdot 7^{5} + O(7^{6})\right)T^{3} + O(\text{T}^{4})
rhUe# Worksheet 'next' (2007-02-08 at 16:57) sage: cremona = list(cremona_optimal_curves(range(1,1001))) riU@# Worksheet 'next' (2007-02-08 at 16:57) sage: len(cremona) 2463rjUg# Worksheet 'next' (2007-02-08 at 16:57) sage: cm = [e for e in cremona if e.has_cm()] sage: len(cm) 44rkUb# Worksheet 'next' (2007-02-08 at 16:57) sage: cm1 = [e for e in cm if e.rank() == 1]; len(cm1) 19rlT# Worksheet 'next' (2007-02-08 at 16:57) sage: bad_cm = [] sage: for e in cm1: ... for p in prime_divisors(e.conductor()): ... if p >= 5: ... bad_cm.append((e.cremona_label(), p)) ... sage: print len(bad_cm) sage: print Sequence(bad_cm, cr=True) 10 [ ('121b1', 11), ('225a1', 5), ('361a1', 19), ('441b1', 7), ('441d1', 7), ('675a1', 5), ('784h1', 7), ('800h1', 5), ('800a1', 5), ('900c1', 5) ]rmU# Worksheet 'padic' (2007-02-13 at 14:30) sage: E = EllipticCurve('141a'); E #auto Elliptic Curve defined by y^2 + y = x^3 + x^2 - 12*x + 2 over Rational FieldrnT# Worksheet 'padic' (2007-02-13 at 14:30) sage: time reg7 = E.padic_regulator(7,6) sage: show(reg7)
4\cdot 7^{-1} + 3 + 4\cdot 7 + 6\cdot 7^{2} + 3\cdot 7^{3} + 3\cdot 7^{4} + 3\cdot 7^{5} + O(7^{6})
CPU time: 0.27 s, Wall time: 0.57 sroU# Worksheet '_scratch_' (2007-02-13 at 20:42) sage: time for i in range(100000): x = Integer() CPU time: 0.09 s, Wall time: 0.09 srpU# Worksheet '_scratch_' (2007-02-13 at 20:42) sage: %sagex sage: from sage.all import cputime, Integer sage: t = cputime() sage: for i in range(100000): x = Integer() sage: print cputime(t) 0.1rqU# Worksheet '_scratch_' (2007-02-13 at 20:42) sage: %sagex sage: from sage.all import cputime, Integer sage: def foo(n): ... t = cputime() ... for i in range(n): x = Integer() ... return cputime(t) rrUR# Worksheet '_scratch_' (2007-02-13 at 20:42) sage: foo(10^5) 0.060000000000000053rsUR# Worksheet '_scratch_' (2007-02-13 at 20:42) sage: foo(10^5) 0.070000000000000284rtUR# Worksheet '_scratch_' (2007-02-13 at 20:42) sage: foo(10^5) 0.060000000000000053ruU# Worksheet '_scratch_' (2007-02-13 at 20:42) sage: time for i in range(10^5): x = Integer() CPU time: 0.08 s, Wall time: 0.08 srvU# Worksheet '_scratch_' (2007-02-13 at 20:42) sage: time for i in range(10^5): x = Integer() CPU time: 0.08 s, Wall time: 0.09 srwU# Worksheet '_scratch_' (2007-02-13 at 20:42) sage: time for i in range(10^5): x = Integer() CPU time: 0.07 s, Wall time: 0.10 srxU# Worksheet '_scratch_' (2007-02-13 at 20:42) sage: time for i in range(10^6): x = Integer() CPU time: 0.78 s, Wall time: 0.82 sryUQ# Worksheet '_scratch_' (2007-02-13 at 20:43) sage: foo(10^6) 0.66999999999999993rzU}# Worksheet '_scratch_' (2007-02-13 at 20:43) sage: time for i in range(10^6): x = int() CPU time: 0.35 s, Wall time: 0.37 sr{U}# Worksheet '_scratch_' (2007-02-13 at 20:43) sage: time for i in range(10^6): x = int() CPU time: 0.35 s, Wall time: 0.37 sr|U}# Worksheet '_scratch_' (2007-02-13 at 20:43) sage: time for i in range(10^6): x = int() CPU time: 0.35 s, Wall time: 0.37 sr}U# Worksheet '_scratch_' (2007-02-13 at 20:43) sage: time for i in range(10^6): x = Rational() CPU time: 0.85 s, Wall time: 0.88 sr~U}# Worksheet '_scratch_' (2007-02-13 at 20:43) sage: time for i in range(10^6): x = int() CPU time: 0.34 s, Wall time: 0.36 srU;# Worksheet '_scratch_' (2007-02-13 at 20:43) sage: int() 0rU# Worksheet '_scratch_' (2007-02-13 at 20:43) sage: time for i in range(10^6): x = 930823r CPU time: 0.18 s, Wall time: 0.19 srU~# Worksheet '_scratch_' (2007-02-13 at 20:43) sage: time for i in range(10^6): x = 930823 CPU time: 0.90 s, Wall time: 0.94 srU# Worksheet '_scratch_' (2007-02-13 at 20:43) sage: time for i in range(10^6): x = 930823r CPU time: 0.18 s, Wall time: 0.22 srU~# Worksheet '_scratch_' (2007-02-13 at 20:43) sage: time for i in range(10^6): x = 930823 CPU time: 0.90 s, Wall time: 0.94 srU# Worksheet '_scratch_' (2007-02-13 at 20:44) sage: a = 9308; b =39028 sage: t=cputime() sage: for i in range(10^6): x = a+b sage: print cputime(t) 0.83rU# Worksheet '_scratch_' (2007-02-13 at 20:44) sage: a = 9308; b =39028 sage: t=cputime() sage: for i in range(10^6): x = a+b sage: print cputime(t) 0.83rU# Worksheet '_scratch_' (2007-02-13 at 20:44) sage: a = 9308r; b =39028r sage: t=cputime() sage: for i in range(10^6): x = a+b sage: print cputime(t) 0.27rU# Worksheet '_scratch_' (2007-02-13 at 20:44) sage: a = 9308r; b =39028r sage: t=cputime() sage: for i in range(10^6): x = a+b sage: print cputime(t) 0.26rU# Worksheet '_scratch_' (2007-02-13 at 20:44) sage: a = 9308r; b =39028r sage: t=cputime() sage: for i in range(10^6): x = a+b sage: print cputime(t) 0.26rU# Worksheet '_scratch_' (2007-02-13 at 20:44) sage: time for i in range(10^6): x = 930823r CPU time: 0.17 s, Wall time: 0.20 srU}# Worksheet '_scratch_' (2007-02-13 at 20:45) sage: time for i in range(10^6): x = int() CPU time: 0.35 s, Wall time: 0.38 srU# Worksheet '_scratch_' (2007-02-13 at 20:45) sage: time for i in range(10^6): x = Integer() CPU time: 0.76 s, Wall time: 0.80 srU# Worksheet '_scratch_' (2007-02-13 at 20:45) sage: time for i in range(10^6): x = Integer() CPU time: 0.76 s, Wall time: 0.80 srUs# Worksheet '_scratch_' (2007-02-13 at 20:45) sage: time a=matrix(ZZ,100,1000) CPU time: 0.02 s, Wall time: 0.01 srUc# Worksheet '_scratch_' (2007-02-13 at 20:45) sage: time b=a+a CPU time: 0.03 s, Wall time: 0.02 srUG# Worksheet '_scratch_' (2007-02-13 at 20:48) sage: int() is int() TruerUP# Worksheet '_scratch_' (2007-02-13 at 20:49) sage: Integer() is Integer() FalserUy# Worksheet '_scratch_' (2007-02-13 at 20:49) sage: time for i in range(10^6): x = i CPU time: 0.20 s, Wall time: 0.22 srU}# Worksheet '_scratch_' (2007-02-13 at 20:49) sage: time for i in range(10^6): x = int() CPU time: 0.35 s, Wall time: 0.37 srU# Worksheet '_scratch_' (2007-02-13 at 20:49) sage: time for i in range(10^6): x = int(17r) CPU time: 0.40 s, Wall time: 0.43 srU|# Worksheet '_scratch_' (2007-02-13 at 20:49) sage: time for i in range(10^6): x = 939r CPU time: 0.17 s, Wall time: 0.20 srUE# Worksheet '_scratch_' (2007-02-13 at 20:49) sage: 939r is 939r TruerUJ# Worksheet '_scratch_' (2007-02-13 at 20:49) sage: 939r is 9399083r FalserUM# Worksheet '_scratch_' (2007-02-13 at 20:49) sage: 9399083r is 9399083r TruerUK# Worksheet '_scratch_' (2007-02-13 at 20:50) sage: a = 999038r; b=999038r rU?# Worksheet '_scratch_' (2007-02-13 at 20:50) sage: a is b TruerUI# Worksheet '_scratch_' (2007-02-13 at 20:50) sage: a = 999038; b=999038 rU@# Worksheet '_scratch_' (2007-02-13 at 20:50) sage: a is b FalserUO# Worksheet '_scratch_' (2007-02-13 at 20:51) sage: a = 939r + 1r; b=939r + 1r rU@# Worksheet '_scratch_' (2007-02-13 at 20:51) sage: a is b FalserU# Worksheet '_scratch_' (2007-02-13 at 20:51) sage: time for i in range(10^6): x = 939r + 1r CPU time: 0.19 s, Wall time: 0.21 srU|# Worksheet '_scratch_' (2007-02-13 at 20:51) sage: time for i in range(10^6): x = 939r CPU time: 0.19 s, Wall time: 0.22 srU# Worksheet '_scratch_' (2007-02-13 at 20:51) sage: time for i in range(10^6): x = 939r +1r CPU time: 0.18 s, Wall time: 0.20 srU# Worksheet '_scratch_' (2007-02-13 at 20:51) sage: time for i in range(10^6): x = 939r +i CPU time: 0.23 s, Wall time: 0.25 srU# Worksheet '_scratch_' (2007-02-13 at 20:51) sage: time for i in range(10^6): x = 939r +i CPU time: 0.23 s, Wall time: 0.25 srU# Worksheet '_scratch_' (2007-02-13 at 20:52) sage: time for i in range(10^6): x = a + Integer(i) CPU time: 4.28 s, Wall time: 4.48 srU;# Worksheet '_scratch_' (2007-02-13 at 20:52) sage: a = 10 rU# Worksheet '_scratch_' (2007-02-13 at 20:52) sage: time for i in range(10^6): x = a + Integer(i) CPU time: 1.76 s, Wall time: 1.83 sreU_Notebook__defaultsr}r(Ucell_output_colorrU#0000EErUmax_history_lengthrMUcell_input_colorrU#0000000rUword_wrap_colsrKPuU_Notebook__worksheet_dirrUsage_notebook/worksheetsrU_Notebook__history_countrKU_Notebook__log_serverrU_Notebook__filenamerUsage_notebook/nb.sobjrU_Notebook__default_worksheetrjU_Notebook__server_logr]rU_Notebook__next_worksheet_idrK U_Notebook__kill_idlerKU_Notebook__systemrNU_Notebook__show_debugrU_Notebook__dirrU sage_notebookrU_Notebook__authrU:U_Notebook__colorrNU_Notebook__object_dirrUsage_notebook/objectsrU_default_filenamerU;/Users/was/talks/2007-02-07-banff-bsd/sage_notebook/nb.sobjrU_Notebook__splashpagerub.