Skip to content

Commit

Permalink
Merge pull request #6273 from JohnCremona/ECNF-reals
Browse files Browse the repository at this point in the history
ECNF better display of invariants
  • Loading branch information
AndrewVSutherland authored Nov 28, 2024
2 parents 15eec76 + a23a996 commit 49cc378
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 31 deletions.
2 changes: 1 addition & 1 deletion lmfdb/ecnf/WebEllipticCurve.py
Original file line number Diff line number Diff line change
Expand Up @@ -487,7 +487,7 @@ def make_E(self):
self.ntors = web_latex(self.torsion_order)
self.tr = len(self.torsion_structure)
if self.tr == 0:
self.tor_struct_pretty = "trivial"
self.tor_struct_pretty = "$0$"
if self.tr == 1:
self.tor_struct_pretty = r"\(\Z/%s\Z\)" % self.torsion_structure[0]
if self.tr == 2:
Expand Down
84 changes: 64 additions & 20 deletions lmfdb/ecnf/templates/ecnf-curve.html
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ <h2>{{ KNOWL('ec.invariants', title='Invariants')}}</h2>
<table id="invariants" style="overflow:auto;">
<tr>
<td>{{KNOWL('ec.conductor', title='Conductor')}}:</td>
<td>$\frak{n}$</td>
<td>=</td>
<td>{{ ec.cond }}</td>
<td>=</td>
<td>{{ ec.fact_cond }}</td>
Expand All @@ -84,6 +86,8 @@ <h2>{{ KNOWL('ec.invariants', title='Invariants')}}</h2>

<tr>
<td>{{KNOWL('ec.conductor', title='Conductor norm')}}:</td>
<td>$N(\frak{n})$</td>
<td>=</td>
<td>{{ ec.cond_norm }}</td>
<td>=</td>
<td>{{ ec.fact_cond_norm }}</td>
Expand All @@ -92,6 +96,8 @@ <h2>{{ KNOWL('ec.invariants', title='Invariants')}}</h2>

<tr>
<td>{{KNOWL('ec.discriminant', title='Discriminant')}}:</td>
<td>$(\Delta)$</td>
<td>=</td>
<td>{{ ec.disc }}</td>
{% if ec.fact_disc %}
<td>=</td>
Expand All @@ -102,6 +108,8 @@ <h2>{{ KNOWL('ec.invariants', title='Invariants')}}</h2>
<tr><td colspan=4 style="padding:0;">{{ place_code('disc') }}</td></tr>
<tr>
<td>{{KNOWL('ec.discriminant', title='Discriminant norm')}}:</td>
<td>$N(\Delta)$</td>
<td>=</td>
<td>{{ ec.disc_norm }}</td>
<td>=</td>
<td>{{ ec.fact_disc_norm }}</td>
Expand All @@ -111,6 +119,8 @@ <h2>{{ KNOWL('ec.invariants', title='Invariants')}}</h2>
{% if not ec.is_minimal %}
<tr>
<td>{{KNOWL('ec.minimal_discriminant', title='Minimal discriminant')}}:</td>
<td>$\frak{D}_{\mathrm{min}}$</td>
<td>=</td>
<td>{{ ec.mindisc }}</td>
{% if ec.fact_mindisc %}
<td>=</td>
Expand All @@ -120,6 +130,8 @@ <h2>{{ KNOWL('ec.invariants', title='Invariants')}}</h2>

<tr>
<td>{{KNOWL('ec.minimal_discriminant', title='Minimal discriminant norm')}}:</td>
<td>$N(\frak{D}_{\mathrm{min}})$</td>
<td>=</td>
<td>{{ ec.mindisc_norm }}</td>
<td>=</td>
<td>{{ ec.fact_mindisc_norm }}</td>
Expand All @@ -128,6 +140,8 @@ <h2>{{ KNOWL('ec.invariants', title='Invariants')}}</h2>

<tr>
<td>{{ KNOWL('ec.j_invariant','j-invariant')}}:</td>
<td>$j$</td>
<td>=</td>
{% if ec.fact_j %}
<td>{{ ec.j }}</td>
<td>=</td>
Expand All @@ -140,25 +154,35 @@ <h2>{{ KNOWL('ec.invariants', title='Invariants')}}</h2>

<tr>
<td>{{ KNOWL('ec.endomorphism_ring', title='Endomorphism ring') }}:</td>
<td>{% if ec.rational_cm %} {{ ec.End }} {% else %} \(\Z\) {% endif %}</td>
<td colspan="2">{% if ec.rational_cm %} ({{ KNOWL('ec.complex_multiplication', title='complex multiplication')}}) {% endif %}</td>
<td>$\mathrm{End}(E)$</td>
<td>=</td>
<td colspan="3">
{% if ec.rational_cm %} {{ ec.End }} {% else %} \(\Z\) {% endif %}
&nbsp;&nbsp;
{% if ec.rational_cm %} ({{ KNOWL('ec.complex_multiplication', title='complex multiplication')}}) {% endif %}
</td>
</tr>

<tr>
<td>{{ KNOWL('ec.geom_endomorphism_ring', title='Geometric endomorphism ring') }}:</td>
<td>{{ ec.End }}</td>
<td colspan="2">
{%if not ec.cm %}
<td>$\mathrm{End}(E_{\overline{\Q}})$</td>
<td>=</td>
<td colspan="3">
{{ ec.End }}
&nbsp;&nbsp;
{%if not ec.cm %}
(no {{ KNOWL('ec.complex_multiplication', title='potential complex multiplication')}})
{% elif not ec.rational_cm %}
{% elif not ec.rational_cm %}
({{ KNOWL('ec.complex_multiplication', title='potential complex multiplication')}})
{% endif %}
{% endif %}
</td>
</tr>

<tr><td colspan=4 style="padding:0;">{{ place_code('cm') }}</td></tr>
<tr>
<td>{{ KNOWL('st_group.definition', title='Sato-Tate group') }}:</td>
<td>$\mathrm{ST}(E)$</td>
<td>=</td>
<td>{{ ec.ST|safe }}</td>
</td>
</tr>
Expand All @@ -175,9 +199,13 @@ <h2> {{ KNOWL('ec.mordell_weil_group', title="Mordell-Weil group") }} </h2>
{% if ec.rank_bounds != "not available" %}
<td>\({{ ec.rk_lb }} \le r \le {{ec.rk_ub}}\)</td>
{% else %}
<td>$r$</td>
<td>&nbsp;</td>
<td>not available</td>
{% endif %}
{% else %}
<td>$r$</td>
<td>=</td>
<td>\({{ ec.rank }}\)</td>
{% endif %}
</tr>
Expand All @@ -186,14 +214,15 @@ <h2> {{ KNOWL('ec.mordell_weil_group', title="Mordell-Weil group") }} </h2>
<tr>
<td align = 'left'>
{% if ec.ngens==1 %}
{{KNOWL('ec.mw_generators','Generator')}}
{{KNOWL('ec.mw_generators','Non-torsion generator')}}:
{% else %}
{{KNOWL('ec.mw_generators','Generators')}}
{{KNOWL('ec.mw_generators','Non-torsion generators')}}:
{% endif %}
</td>
{% if ec.gens == 'not available' %}
<td>not available</td>
{% else %}
<td>$P$</td><td>=</td>
{% for gen in ec.gens %}
<td>{{ gen }}</td>
{% endfor %}
Expand All @@ -205,11 +234,12 @@ <h2> {{ KNOWL('ec.mordell_weil_group', title="Mordell-Weil group") }} </h2>
<tr>
<td align = 'left'>
{% if ec.ngens==1 %}
{{ KNOWL('ec.canonical_height', title="Height") }}
{{ KNOWL('ec.canonical_height', title="Height") }}:
{% else %}
{{ KNOWL('ec.canonical_height', title="Heights") }}
{{ KNOWL('ec.canonical_height', title="Heights") }}:
{% endif %}
</td>
<td>$\hat{h}(P)$</td><td>&approx;</td>
{% for h in ec.heights %}
<td>\({{ h }}\)</td>
{% endfor %}
Expand All @@ -218,13 +248,17 @@ <h2> {{ KNOWL('ec.mordell_weil_group', title="Mordell-Weil group") }} </h2>

<tr>
<td align='left'>{{KNOWL('ec.torsion_subgroup','Torsion structure')}}:</td>
<td>$E(K)_{\mathrm{tor}}$</td>
<td>$\cong$</td>
<td>{{ ec.tor_struct_pretty }}</td>
</tr>
<tr><td colspan=2> {{ place_code('tors') }}</td></tr>
<!-- <tr><td colspan=2> {{ place_code('ntors') }}</td></tr> -->
{% if ec.tr %}
<tr>
<td align='left'>{% if ec.tr==1 %}{{KNOWL('ec.mw_generators','Torsion generator')}}{% else %}{{KNOWL('ec.mw_generators','Torsion generators')}}{% endif %}:</td>
<td align='left'>{% if ec.tr==1 %}{{KNOWL('ec.mw_generators','Torsion generator')}}{% else %}{{KNOWL('ec.mw_generators','Torsion generators')}}{% endif %}:</td>
<td>$T$</td>
<td>=</td>
{% for gen in ec.torsion_gens %}
<td>{{ gen }}</td>
{% endfor %}
Expand All @@ -242,6 +276,7 @@ <h2> {{ KNOWL('ec.bsdconjecture', title='BSD invariants') }}</h2>

<tr>
<td align='left'>{{ KNOWL('lfunction.analytic_rank', title='Analytic rank') }}:</td>
<td>$r_{\mathrm{an}}$</td><td>=</td>
<td>
{{ ec.ar }}
</td>
Expand All @@ -256,12 +291,16 @@ <h2> {{ KNOWL('ec.bsdconjecture', title='BSD invariants') }}</h2>
<tr>
<td align='left'>{{ KNOWL('ec.rank', title="Mordell-Weil rank")}}:</td>
{% if ec.rk == "not available" %}
<td>$r$?</td>
<td>&nbsp;</td>
{% if ec.rank_bounds != "not available" %}
<td>\({{ ec.rk_lb }} \le r \le {{ec.rk_ub}}\)</td>
{% else %}
<td>not available</td>
{% endif %}
{% else %}
<td>$r$</td>
<td>=</td>
<td>\({{ ec.rank }}\)</td>
{% endif %}
</tr>
Expand All @@ -273,6 +312,8 @@ <h2> {{ KNOWL('ec.bsdconjecture', title='BSD invariants') }}</h2>
{{ KNOWL('ec.regulator', title='Regulator') }}:
{% endif %}
</td>
<td>$\mathrm{Reg}(E/K)$</td>
<td>{% if ec.rk == 0 %}={% else %}&approx;{% endif %}</td>
<td>
{% if ec.reg=='not available' %}
not available
Expand All @@ -284,11 +325,13 @@ <h2> {{ KNOWL('ec.bsdconjecture', title='BSD invariants') }}</h2>

<tr>
<td align='left'>{{ KNOWL('ec.period', title='Period') }}:</td>
<td>$\Omega(E/K)$</td><td>&approx;</td>
<td> {{ ec.omega }}</td>
</tr>

<tr>
<td align='left'>{{ KNOWL('ec.tamagawa_number', title='Tamagawa product') }}:</td>
<td>$\prod_{\frak{p}}c_{\frak{p}}$</td><td>=</td>
<td> {{ ec.tamagawa_product }}
{% if ec.tamagawa_factors %}
&nbsp;=&nbsp; \({{ ec.tamagawa_factors }}\)
Expand All @@ -298,18 +341,18 @@ <h2> {{ KNOWL('ec.bsdconjecture', title='BSD invariants') }}</h2>

<tr>
<td align='left'>{{ KNOWL('ec.torsion_order', title='Torsion order') }}:</td>
<td>$E(K)_{\mathrm{tors}}$</td><td>=</td>
<td>\({{ ec.torsion_order }}\)</td>
</tr>

<tr>
<td align='left'>{{ KNOWL('lfunction.leading_coeff', title='Leading coefficient') }}:</td>
<td>
{% if ec.Lvalue=='not available' %}
not available
{% else %}
{{ ec.Lvalue }}
{% endif %}
</td>
<td>$L^{(r)}(E/K,1)/r!$</td>
{% if ec.Lvalue=='not available' %}
<td></td><td>not available</td>
{% else %}
<td>&approx;</td><td>{{ ec.Lvalue }}</td>
{% endif %}
</tr>

<tr>
Expand All @@ -320,7 +363,8 @@ <h2> {{ KNOWL('ec.bsdconjecture', title='BSD invariants') }}</h2>
{{ KNOWL('ec.analytic_sha_order', title='Analytic order of &#1064;') }}:
{% endif %}
</td>
<td> {{ ec.sha }} </td>
<td>&#1064;${}_{\mathrm{an}}$</td><td>=</td>
<td> {{ ec.sha }} </td>
</tr>
</table>
</p>
Expand Down
2 changes: 1 addition & 1 deletion lmfdb/elliptic_curves/templates/congruent_number_data.html
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ <h2>Data files</h2>
</form>
</td>
<td>
{{ KNOWL('ec.q.canonical_height', 'Heights') }}
{{ KNOWL('ec.canonical_height', 'Heights') }}
</td>
<td>
<pre>000137 [8.4621365965410101565417149184287484305,10.575571190572966907642306531966335545]</pre>
Expand Down
20 changes: 11 additions & 9 deletions lmfdb/elliptic_curves/templates/ec-curve.html
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,9 @@ <h2> {{ KNOWL('ec.mordell_weil_group', title='Mordell-Weil group') }} structure<

{% if data.mwbsd.rank!=0 %}
{% if data.mwbsd.rank==1 %}
<h3> Infinite order Mordell-Weil generator and {{KNOWL('ec.q.canonical_height','height')}}</h3>
<h3> {{ KNOWL('ec.mw_generators', title='Non-torsion Mordell-Weil generator') }} and {{KNOWL('ec.canonical_height','height')}}</h3>
{% else %}
<h3> Infinite order Mordell-Weil generators and {{KNOWL('ec.q.canonical_height','heights')}}</h3>
<h3> {{ KNOWL('ec.mw_generators', title='Non-torsion Mordell-Weil generators') }} and {{KNOWL('ec.canonical_height','heights')}}</h3>
{% endif %}
{% if data.mwbsd.ngens==0 %}
No {% if data.mwbsd.rank==1 %} generator {% else %} generators {% endif %} computed
Expand All @@ -130,7 +130,7 @@ <h3> Infinite order Mordell-Weil generators and {{KNOWL('ec.q.canonical_height',
{%endif%}

{% if data.mwbsd.torsion!=1 %}
<h2> {{ KNOWL('ec.torsion_subgroup', title='Torsion generators') }}</h2>
<h2> {{ KNOWL('ec.mw_generators', title='Torsion generators') }}</h2>
<p> {{ data.mwbsd.tor_gens |safe }} </p>
{{ place_code('tors') }}
{%endif %}
Expand Down Expand Up @@ -183,13 +183,15 @@ <h2> Invariants </h2>

<tr>
<td>{{ KNOWL('ec.geom_endomorphism_ring', title='Geometric endomorphism ring') }}:</td>
<td>$\mathrm{End}(E_{\overline{\Q}})$</td><td>&nbsp;=&nbsp;</td>
<td>$\mathrm{End}(E_{\overline{\Q}})$</td>
<td>&nbsp;=&nbsp;</td>
<td colspan=3>{{ data.data.EndE }}
{%if not data.data.CMD %}
&nbsp;&nbsp;(no {{ KNOWL('ec.complex_multiplication', title='potential complex multiplication')}})
{% else %}
&nbsp;&nbsp;({{ KNOWL('ec.complex_multiplication', title='potential complex multiplication')}})
{% endif %}
&nbsp;&nbsp;
{%if not data.data.CMD %}
(no {{ KNOWL('ec.complex_multiplication', title='potential complex multiplication')}})
{% else %}
({{ KNOWL('ec.complex_multiplication', title='potential complex multiplication')}})
{% endif %}
</td>
<td>{{ place_code('cm') }}</td>
</tr>
Expand Down

0 comments on commit 49cc378

Please sign in to comment.