Computing the conductor and index of orders generated by character values: an exact, dependency-free Python tool for SU(n), Sp(2m) and GL(n) (segmento.py)
Abstract
One file, Python 3 standard library only. No Sage, no numpy, nothing to install. Take every irreducible character of SU(n), Sp(2m) or GL(n), evaluate them all at one element of finite order q, and they generate a ring A inside the ring of integers O of the field they span. This tool computes what that ring is missing — its conductor, and the index [O:A] prime by prime — from the segment of eigenvalue exponents alone, never from the group. Thirty seconds. python segmento.py autotest recomputes from nothing the worked examples of the underlying notes — layer profiles, indices, the shortcut against the slow path, two counts — exercises every guard, and ends with SELF-TEST: all correct. If it says anything else, the notes and the code disagree and the notes are the ones to distrust. The archived run ships with it. What it does. One routine per statement, named after it, usable as a library and as a command line: familias(n, q) — which primes can divide [O:A] at all, from divisibility alone: no lattice, no matrix. perfil(exps, M, p) — the layer dimensions W0, W1, … of A at p. indice(exps, M, p) — vp([O:A]) as the sum of all the layer defects, flagged as a lower bound when the profile is cut before it fills; the honest slow path, kept as the control. puente(n, q, p) — the same for the non-real ring of GL(n), at half the degree, via the free quadratic extension B = R ⊕ θR: 2 vp([O+:R]) + P d instead of closing a lattice in degree φ(q). ceros(f) — how many components vanish on the diagonal, f prime; one multiplicative order. fila(m) — whether row m can be occupied at all; one Legendre symbol. Why it may be useful outside the notes. The object is an order in a cyclotomic field and the question is its conductor — the everyday computation in the algorithmics of complex multiplication, where the conductor of a CM order is what one computes in order to identify an endomorphism ring or to place a curve in an isogeny graph. Two routines replace a computation by a formula: familias is a filter for the primes that can divide the index, proved up to one named step, that one can run over millions of pairs (n, q) before touching a lattice, and puente halves the degree. In the nine timed cells of medir_atajo.py both paths return the same integer every time, in about half the wall clock at the largest, φ(q) = 132; the factor is the ratio of the two degrees and not an asymptotic claim, since both routes run the same layer code and differ only in the degree at which they close. What it refuses to do. Where the underlying notes mark a statement measured and not proved, the routine says so instead of returning a number it cannot justify: ceros declines on composite f, and fila separates its two halves — (2|n) = −1 empties the row and (2|n) = +1 gives an occupied row, both proved (the second in the note on vanishing weighted sums below); the routine says which half answered. That is the honesty floor of the notes, moved into the code. Where it comes from. Three notes carry the proofs: Where the character values of Sp(2m) at a torsion element fail to generate the ring of integers (the real case, the local structure, the class-number criterion), and Orders generated by character values of SU(n), Sp(2m) and GL(n) at elements of finite order: the index depends only on the segment of exponents (segment invariance, the support criterion, and the quadratic bridge that puente implements; doi:10.5281/zenodo.22847476), and Zeros of weighted partial sums of completely multiplicative functions: Dirichlet characters, the Euler factor at 2 and Conrey’s sine series (the vanishing components and the rows, which ceros and fila implement; doi:10.5281/zenodo.22847374). The tool is not a summary of any of them — it is the part of them that computes. Released into the public domain under CC0 1.0: use it, cut it up, rewrite it or ship it inside something else, without asking and without attribution. A citation is welcome and is not required.
Publication details
- Journal / source
- Zenodo (CERN European Organization for Nuclear Research)
- Publication date
- 19 September 2026
- Language
- EN