Skip to content

Commit

Permalink
Merge pull request #6166 from LMFDB/main
Browse files Browse the repository at this point in the history
main -> dev
  • Loading branch information
AndrewVSutherland authored Aug 22, 2024
2 parents 0de5847 + 0a9dc5b commit f43bfd2
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 10 deletions.
2 changes: 1 addition & 1 deletion lmfdb/elliptic_curves/web_ec.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ def gl2_subgroup_data(label):
data['Slabel'] = label
elif S_EXT_LABEL_RE.fullmatch(label):
in_modcurve_db = False
data = db.gps_gl2zhat_fine.lucky({'Slabel':label})
data = db.gps_gl2zhat_nonsurjdet.lucky({'Slabel':label})
else:
return "Unrecognized subgroup label format %s" % label
if data is None:
Expand Down
23 changes: 21 additions & 2 deletions lmfdb/modl_galois_representations/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
parse_bool,
parse_primes,
parse_rats,
parse_kerpol_string,
integer_divisors,
StatsDisplay,
comma,
Expand Down Expand Up @@ -204,6 +205,8 @@ def modlgal_search(info, query):
parse_bool(info, query, "is_solvable")
parse_bool(info, query, "is_absolutely_irreducible")
parse_bool(info, query, "determinant_index", process=lambda a: 1 if a else {"$gt":1})
parse_kerpol_string(info, query, 'kernel_polynomial')
parse_kerpol_string(info, query, "projective_kernel_polynomial")


class ModLGalRepSearchArray(SearchArray):
Expand Down Expand Up @@ -260,7 +263,7 @@ def __init__(self):
example="2",
example_span="2 or 4/3 or 1-1.5"
)
codomain_opts = ([('', ''), ('GL,1,2,1', 'GL(1,2)'), ('GL,2,2,1', 'GL(2,2)'), ('GL,2,3,1', 'GL(2,3)'), ('GL,2,5,1', 'GL(2,5)'), ('GSp,4,2,1', 'GSp(4,2)')])
codomain_opts = ([('', ''), ('GL,1,3,1', 'GL(1,3)'), ('GL,1,5,1', 'GL(1,5)'), ('GL,2,2,1', 'GL(2,2)'), ('GL,2,3,1', 'GL(2,3)'), ('GL,2,5,1', 'GL(2,5)'), ('GSp,4,2,1', 'GSp(4,2)')])
codomain = SelectBox(
name="codomain",
knowl="modlgal.codomain",
Expand Down Expand Up @@ -303,6 +306,20 @@ def __init__(self):
label="Image order",
example="2",
example_span="12, 10-20")
kernel_field = TextBox(
name="kernel_polynomial",
knowl="modlgal.min_sib_splitting_field",
label="Kernel polynomial",
example="3.1.175.1",
example_span="e.g. 3.1.175.1 or x^3 - x^2 + 2*x - 3 or a "
+ display_knowl("nf.nickname", "field nickname"))
projective_kernel_field = TextBox(
name="projective_kernel_polynomial",
knowl="modlgal.projective_kernel_polynomial",
label="Projective kernel polynomial",
example="2.2.8.1",
example_span="e.g. 2.2.8.1 or x^2 - 2 or a "
+ display_knowl("nf.nickname", "field nickname"))
count = CountBox()

self.browse_array = [
Expand All @@ -312,13 +329,15 @@ def __init__(self):
[conductor_primes, solvable],
[image_index, determinant_index],
[image_order, top_slope],
[kernel_field, projective_kernel_field],
[count]
]

self.refine_array = [
[base_ring_characteristic, dimension, conductor, conductor_primes],
[codomain, solvable, surjective, absolutely_irreducible],
[top_slope, image_index, image_order, determinant_index]
[top_slope, image_index, image_order, determinant_index],
[kernel_field, projective_kernel_field]
]

#sort_knowl = "modlgal.sort_order"
Expand Down
6 changes: 2 additions & 4 deletions lmfdb/modl_galois_representations/templates/modlgal_rep.html
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,9 @@ <h2>Invariants</h2>
{% if not rep.is_surjective %}
<tr><td>{{ KNOWL('modlgal.codomain', 'Codomain') }}:<td>{{ rep.codomain }}</td></tr>
{% endif %}
<tr><td>{{ KNOWL('modlgal.image', 'Image') }}:<td>{{ rep.image_pretty | safe }} {% if rep.image_abstract %}
$\cong$ {{ rep.image_abstract | safe }}
{% endif %}
<tr><td>{{ KNOWL('modlgal.image', 'Image') }}:<td>{{ rep.image_pretty_with_abstract | safe }}
</td></tr>
<tr><td>{{ KNOWL('modlgal.determinant_index', 'Determinant index') }}:<td>{{ rep.determinant_index }}
<tr><td>{{ KNOWL('modlgal.determinant_index', 'Determinant index') }}:<td>${{ rep.determinant_index }}$
{% if rep.determinant_index == 1 %}
(determinant is surjective)
{% else %}
Expand Down
9 changes: 8 additions & 1 deletion lmfdb/modl_galois_representations/web_modlgal.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,10 @@ def image_pretty_with_abstract(image_label, is_surjective, algebraic_group, dime
return "$" + s + "$"
if dimension==1:
return image_label
t = display_knowl('gl2.subgroup_data', title=image_label, kwargs={'label':image_label}) if dimension == 2 else image_label
if algebraic_group=='GSp' and dimension==4 and base_ring_order==2:
t = display_knowl('gsp4.subgroup_data', title=image_label, kwargs={'label':image_label})
else:
t = display_knowl('gl2.subgroup_data', title=image_label, kwargs={'label':image_label}) if dimension == 2 else image_label
if image_abstract_group:
t += r" $\ \cong$ "+ abstract_group_display_knowl(image_abstract_group)
return t
Expand Down Expand Up @@ -149,6 +152,10 @@ def factored_conductor(self):
def codomain(self):
return codomain(self.algebraic_group, self.dimension, self.base_ring_order, self.base_ring_is_field)

@lazy_attribute
def image_pretty_with_abstract(self):
return image_pretty_with_abstract(self.image_label, self.image_index==1, self.algebraic_group, self.dimension, self.base_ring_order, self.base_ring_is_field, self.image_abstract_group, codomain=False)

@lazy_attribute
def image_pretty(self):
return image_pretty(self.image_label, self.image_index==1, self.algebraic_group, self.dimension, self.base_ring_order, self.base_ring_is_field, codomain=False)
Expand Down
5 changes: 3 additions & 2 deletions lmfdb/utils/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
'parse_rational_to_list', 'parse_inertia', 'parse_group_label_or_order',
'parse_rats', 'parse_bracketed_posints', 'parse_bracketed_rats', 'parse_bool',
'parse_bool_unknown', 'parse_primes', 'parse_element_of', 'parse_not_element_of',
'parse_subset', 'parse_submultiset', 'parse_list',
'parse_subset', 'parse_submultiset', 'parse_list', 'parse_kerpol_string',
'parse_list_start', 'parse_string_start', 'parse_restricted', 'parse_regex_restricted',
'parse_noop', 'parse_equality_constraints', 'parse_gap_id', 'parse_interval',
'parse_galgrp', 'parse_nf_string', 'parse_subfield', 'parse_nf_elt', 'parse_nf_jinv',
Expand Down Expand Up @@ -138,7 +138,8 @@
parse_ints, parse_signed_ints, parse_posints,
parse_floats, parse_mod1, parse_rational,
parse_rational_to_list, parse_padicfields, parse_rats, parse_inertia,
parse_bracketed_posints, parse_bracketed_rats, parse_bool, parse_bool_unknown, parse_primes,
parse_bracketed_posints, parse_bracketed_rats, parse_bool,
parse_bool_unknown, parse_primes, parse_kerpol_string,
parse_element_of, parse_not_element_of, parse_subset, parse_submultiset, parse_list,
parse_list_start, parse_string_start, parse_restricted,
parse_regex_restricted, parse_noop, parse_group_label_or_order,
Expand Down
6 changes: 6 additions & 0 deletions lmfdb/utils/search_parsing.py
Original file line number Diff line number Diff line change
Expand Up @@ -1383,6 +1383,12 @@ def parse_subfield(inp, query, qfield):
def parse_nf_string(inp, query, qfield):
query[qfield] = nf_string_to_label(inp)

@search_parser
def parse_kerpol_string(inp, query, qfield):
label = nf_string_to_label(inp)
from lmfdb import db
query[qfield] = db.nf_fields.lookup(label, projection='coeffs')

def pol_string_to_list(pol, deg=None, var=None):
if var is None:
from lmfdb.hilbert_modular_forms.hilbert_field import findvar
Expand Down

0 comments on commit f43bfd2

Please sign in to comment.