diff --git a/lmfdb/ecnf/WebEllipticCurve.py b/lmfdb/ecnf/WebEllipticCurve.py index 5992ac678c..85e3228bd6 100644 --- a/lmfdb/ecnf/WebEllipticCurve.py +++ b/lmfdb/ecnf/WebEllipticCurve.py @@ -483,6 +483,13 @@ def make_E(self): except AttributeError: self.qc = "not determined" + # Mordell-Weil group + try: + invs = [0 for a in range(self.rank)] + list(self.torsion_structure) + self.mw_struct = "trivial" if len(invs) == 0 else r'\(' + r' \oplus '.join((r'\Z' if n == 0 else r'\Z/{%s}\Z' % n) for n in invs) + r'\)' + except AttributeError: # if self.rank not set + self.mw_struct = "unknown" + # Torsion self.ntors = web_latex(self.torsion_order) self.tr = len(self.torsion_structure) @@ -494,6 +501,7 @@ def make_E(self): self.tor_struct_pretty = r"\(\Z/%s\Z\oplus\Z/%s\Z\)" % tuple(self.torsion_structure) self.torsion_gens = [web_point(parse_point(K,P)) for P in self.torsion_gens] + self.tor_gens_and_orders = list(zip(self.torsion_gens, self.torsion_structure)) # BSD data # @@ -568,8 +576,10 @@ def make_E(self): # Generators try: self.gens = [web_point(parse_point(K, P)) for P in self.gens] + self.gens_and_heights = list(zip(self.gens,self.heights)) except AttributeError: self.gens = [] + self.gens_and_orders = [] # Global period try: diff --git a/lmfdb/ecnf/templates/ecnf-curve.html b/lmfdb/ecnf/templates/ecnf-curve.html index 4d030ff796..baed8cc381 100644 --- a/lmfdb/ecnf/templates/ecnf-curve.html +++ b/lmfdb/ecnf/templates/ecnf-curve.html @@ -70,6 +70,37 @@
+ {% if ec.rk == "not available" %} + Not computed ($ {{ec.rk_lb}} \le r \le {{ec.rk_ub}} $) + {% else %} + {{ ec.mw_struct}} + {%endif%} +
+ +{% if ec.ngens > 0 or ec.torsion_order > 1 %} + ++ {% if ec.ngens < ec.rk_ub %} + {% if ec.ngens > 0 %} Only {{ec.ngens}} {% else %} No {% endif %} non-torsion + {% if ec.ngens == 1 %} generator is {% else %} generators are {% endif %} known. + {% endif %} +
$P$ | {{ KNOWL('ec.canonical_height', title="$\hat{h}(P)$")}} | Order |
---|---|---|
{{P}} | ${{h}}$ | $\infty$ |
{{T}} | $0$ | ${{n}}$ |
-
{{ KNOWL('ec.rank', title="Rank")}}: | -{% if ec.rk == "not available" %} -{% if ec.rank_bounds != "not available" %} -\({{ ec.rk_lb }} \le r \le {{ec.rk_ub}}\) | -{% else %} -$r$ | -- | not available | -{% endif %} -{% else %} -$r$ | -= | -\({{ ec.rank }}\) | -{% endif %} -
- {% if ec.ngens==1 %} - {{KNOWL('ec.mw_generators','Non-torsion generator')}}: - {% else %} - {{KNOWL('ec.mw_generators','Non-torsion generators')}}: - {% endif %} - | - {% if ec.gens == 'not available' %} -not available | - {% else %} -$P$ | = | - {% for gen in ec.gens %} -{{ gen }} | - {% endfor %} -{% endif %} -|||
- {% if ec.ngens==1 %} - {{ KNOWL('ec.canonical_height', title="Height") }}: - {% else %} - {{ KNOWL('ec.canonical_height', title="Heights") }}: - {% endif %} - | -$\hat{h}(P)$ | ≈ | - {% for h in ec.heights %} -\({{ h }}\) | - {% endfor %} -||||
{{KNOWL('ec.torsion_subgroup','Torsion structure')}}: | -$E(K)_{\mathrm{tor}}$ | -$\cong$ | -{{ ec.tor_struct_pretty }} | -||||
{{ place_code('tors') }} | |||||||
{% if ec.tr==1 %}{{KNOWL('ec.mw_generators','Torsion generator')}}{% else %}{{KNOWL('ec.mw_generators','Torsion generators')}}{% endif %}: | -$T$ | -= | -{% for gen in ec.torsion_gens %} -{{ gen }} | -{% endfor %} -||||
{{ place_code('torgens') }} |
{{ place_code('mwgroup') }}
+ {% if data.mwbsd.rank > 0 or data.mwbsd.torsion > 1 %} ++
$P$ | {{ KNOWL('ec.canonical_height', title="$\hat{h}(P)$")}} | Order |
---|---|---|
${{P}}$ | ${{h}}$ | $\infty$ |
${{T}}$ | $0$ | ${{n}}$ |
{{ data.mwbsd.tor_gens |safe }}
{{ place_code('tors') }} {%endif %} +#} - + {% if data.mwbsd.rank > 0 or data.mwbsd.torsion > 1 %}@@ -148,6 +167,7 @@
{{ place_code('analytic_rank') }} | +|||||||
{{ KNOWL('ec.rank', title='Mordell-Weil rank') }}: | +$r$ | = | $ {{ data.rank }}$ + | +{{ place_code('rank') }} | +|||
{{ KNOWL('ec.regulator', title='Regulator') }}: | {% if data.mwbsd.reg == '?' %} @@ -269,10 +296,16 @@|||||||
{{ KNOWL('ec.torsion_order', title='Torsion order') }}: | -$E(\Q)_{\mathrm{tors}}$ | = | ${{ data.mwbsd.torsion }}$ | +$\#E(\Q)_{\mathrm{tor}}$ | = | ${{ data.mwbsd.torsion }}$ | {{ place_code('ntors') }} |
{{KNOWL('ec.special_value', title='Special value', special_value = data.special_value)}}: | +$ {{ data.mwbsd.lder_name }}$ | ≈ | ${{ data.mwbsd.special_value }} $ | +{{ place_code('L1') }} | +|||
{{ KNOWL('ec.analytic_sha_order', title='Analytic order of Ш') }}: | {% if data.mwbsd.sha == '?' %}Not computed{% else %} Ш${}_{\mathrm{an}}$ | @@ -293,15 +326,10 @@${{ data.mwbsd.regsha }}$ | |||||
{{KNOWL('ec.q.special_value', title='Special value', special_value = data.special_value)}}: | -$ {{ data.mwbsd.lder_name }}$ | ≈ | ${{ data.mwbsd.special_value }} $ | -{{ place_code('L1') }} | -
$\displaystyle {{ data.mwbsd.formula|safe }}$
diff --git a/lmfdb/elliptic_curves/templates/sw_ecdb.html b/lmfdb/elliptic_curves/templates/sw_ecdb.html index df74af9404..4f7a352356 100644 --- a/lmfdb/elliptic_curves/templates/sw_ecdb.html +++ b/lmfdb/elliptic_curves/templates/sw_ecdb.html @@ -39,7 +39,7 @@