Skip to content

Commit d455e65

Browse files
authored
Merge pull request #6442 from jwj61/regularfamilys
Seems like there was enough time for comments. Of course, it can always be improved.
2 parents d875307 + 03a8205 commit d455e65

2 files changed

Lines changed: 49 additions & 2 deletions

File tree

lmfdb/galois_groups/templates/gg-show-group.html

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ <h2>{{KNOWL('group.complex_character_table', 'Character table')}}</h2>
118118

119119
<p>{{place_code('char_table')}}</p>
120120

121-
122121
{% if info.int_reps %}
123122
<h2>{{ KNOWL('gg.int_modules', title='Indecomposable integral representations') }}</h2>
124123
<table>
@@ -165,4 +164,20 @@ <h2>{{ KNOWL('gg.int_modules', title='Indecomposable integral representations')
165164
{% endif %}
166165
{% endif %}
167166

167+
<h2>{{ KNOWL('gg.regular_extension', title='Regular extensions') }}</h2>
168+
{% if not info.wgg.regulars %}
169+
<p>Data not computed</p>
170+
{% else %}
171+
<p>
172+
<table>
173+
{% for model in info.wgg.regulars %}
174+
<tr><td style="vertical-align: top">$f_{ {{ loop.index }} } =$</td>
175+
<td> {{ model[0]|safe }}</td></tr>
176+
<tr><td></td><td> {{ model[1]|safe }}</td></tr>
177+
{% endfor %}
178+
</table>
179+
</p>
180+
{% endif %}
181+
182+
168183
{% endblock %}

lmfdb/galois_groups/transitive_group.py

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import yaml
99
from flask import render_template
1010

11-
from lmfdb.utils import list_to_latex_matrix, integer_divisors, sparse_cyclotomic_to_mathml
11+
from lmfdb.utils import list_to_latex_matrix, integer_divisors, sparse_cyclotomic_to_mathml, raw_typeset, display_knowl
1212
from lmfdb.groups.abstract.main import abstract_group_namecache, abstract_group_display_knowl
1313
from lmfdb.groups.abstract.web_groups import WebAbstractGroup
1414

@@ -74,6 +74,16 @@ def cyclestrings(perm):
7474
def compress_cycle_type(ct):
7575
bits = [(str(z), f'^{{{c}}}' if c > 1 else '' ) for z, c in sorted(Counter(ct).items(),reverse=True)]
7676
return ','.join(z + e for z,e in bits)
77+
78+
def quick_latex(s):
79+
str = s.replace('*',' ')
80+
str = str.replace('(',r'\left(')
81+
str = str.replace(')',r'\right)')
82+
# multidigit exponents
83+
str = re.sub(r'\^\s*(\d+)', r'^{\1}',str)
84+
return '$'+str+'$'
85+
86+
7787
############ Galois group object
7888

7989

@@ -248,6 +258,28 @@ def can_chartable(self):
248258
return False
249259
return self.wag.complex_characters_known
250260

261+
@lazy_attribute
262+
def regulars(self):
263+
t = list(db.gps_regular_polynomials.search({'label':self.label})) # it will be a short list
264+
if t:
265+
genknowl = display_knowl("gg.generic_polynomial", "generic")
266+
267+
def msg(code):
268+
if code is None:
269+
return ''
270+
if code == []:
271+
return f' is {genknowl} for any base field $K$'
272+
if code == [0]:
273+
return fr' is {genknowl} for the base field $\Q$'
274+
code = ','.join(str(z) for z in code)
275+
return fr' is {genknowl} for any base field $K$ of characteristic $\neq$ {code}'
276+
277+
regdata= [(raw_typeset(z['polynomial'], quick_latex(z['polynomial'])), msg(z.get('generic'))) for z in t]
278+
for j, (poly, msg) in enumerate(regdata):
279+
if msg:
280+
regdata[j] = (poly, f'The polynomial $f_{{{j+1}}}$ {msg}')
281+
return regdata
282+
251283
def chartable(self):
252284
self.conjclasses # called to load info in self
253285
return render_template("character-table.html", gp=self,

0 commit comments

Comments
 (0)