van Doorn's bound on Erdős #290 — 0.54 < liminf (b(a)−a)/log a < 0.61, where b(a) is the first b > a at which adding 1/b shrinks the denominator of 1/a + … + 1/b — rests on one constant c, assembled from the Galois groups of the polynomials fd(x) = Σi=0..dΠj≠i(x−j), the derivative of Πj=0..d(x−j). At three degrees, d = 8, 24, 48, that group is not the expected one. The paper's Lemma 32 records exactly that — “Gd is isomorphic to Sl+ for all even d ≤ 60, except for d = 8, 24, 48” — and gives no positive identification, bounding the missing terms by δ ≤ 1 instead. On the problem page van Doorn later called the needed group data an open request. I pin all three exactly — then find two the paper never reached, d = 80 and d = 120. Those five are precisely 4k(k+1), k ≤ 5 — which I first wrote down as a conjecture, tested blind at k = 6, and then proved: disc(fd) = (d+1)(2l·l!·disc h)², so the discriminant is square exactly when d+1 is, and for even d that means d = 4k(k+1) — which no other degree can satisfy, for any k. Along the way c is enclosed in [0.8291, 0.8332] — a seventh of the paper's width, every bound an exact fraction.
node kernel.js · node tail-sweep.js · node pattern-check.js — minutes, not hourskernel.js prints beside the decimals — re-deriving them from the 12-digit
decimals shown here can differ in the last digit, so check against the fractions.The contribution is not one number, it is a mechanism: every density pinned exactly
removes an interval of uncertainty from c. Drag the handle to add what this project certified,
one degree at a time. Nothing here is illustrative — each bracket is recomputed by the
same exact-rational arithmetic as the result, by narrowing.js, which also asserts
that knowing more never widens a bracket.
On the problem page, van Doorn himself set out the open task, in November 2025: “one can define a constant c (which turns out to depend on the properties of Galois groups of certain polynomials) for which we have 0.82 < c < 0.85 and 1/(1+c) ≤ liminf ≤ 1/(2c). The lower bound is likely the correct value here, and the decimal expansion of this value would be a worthwhile addition to the OEIS. In order to calculate it, one needs specific information on certain (large) Galois groups, which someone well-versed in using Sage or Magma can perhaps take a stab at.” Terence Tao replied the next morning suggesting it be raised as a help-wanted issue — which is where the request now sits.
So the object wanted is 1/(1+c), and the blocker is the Galois groups. This note supplies the groups and therefore the expansion:
| Quantity | Value | Standing |
|---|---|---|
| 1/(1+c), certified | [0.545485611000, 0.546712849449] | Width 1.2e−3. Takes the paper’s Magma group identifications for even d ≤ 60 as given (see “What this is not”); beyond that, no assumption. |
| 1/(1+c), conditional | 0.546229310400104587412660585438363… | Under the tail assumption stated below — verified at every degree where the group has been determined, now through d = 120. |
Neither Sage nor Magma was used. Everything below runs in plain Node.js over exact rationals, which is the reason the determination could be pushed past the d ≤ 60 range where the paper’s own computations stopped — and it means the next person to extend it does not need a licence.
With the sweep closed through d = 120, the exceptional degrees — where Gal(fd) is the index-2 subgroup rather than the full hyperoctahedral group; equivalently, by theorem in one direction and computation in the other, where disc(fd) is a perfect square — are exactly {8, 24, 48, 80, 120}. These are precisely d = 4k(k+1), k = 1…5. (A reader searching the paper for “120” will find one in its §4.2 — that is a different d, the exponent in Σri/id, not the degree of fd. The paper does not mention either of these degrees in the Galois sense.)
So I wrote the prediction down before computing anything: if the pattern is real, disc(f168) must be a perfect square, and disc(fd) for every other even d between 122 and 170 must not. Both halves came back right. disc(f168) — 45,336 digits, computed exactly by CRT — is a perfect square; all 24 even non-members in that range are certified nonsquare by an explicit quadratic non-residue witness, with control anchors in both directions at d = 118 and d = 120. (Squareness is what the pattern predicts and what was tested; whether the group actually drops at d = 168 — whether it is exceptional — is the separate per-degree question, open past d = 120.)
Six members and 24 controls is evidence, not proof — this page said exactly that, and added that a proof “would presumably go through the resultant structure of fd(x + d/2) = h(x²)”. That was the right guess, and it was one afternoon away. For even d = 2l:
disc(fd) = (d + 1) · (2l · l! · disc(h))²
Two facts give it. First, h(0) = fd(l) = Πj≠l(l−j) = (−1)l(l!)², because every summand of fd(l) except i = l carries the factor (l−l). Second, for any h of degree l with leading coefficient a, disc(h(x²)) = (−1)l22l·a·h(0)·disc(h)². This second ingredient is not new. For monic f of degree m with constant term c₀ and n = mk, Disc(f(xk)) = (−1)n(n−m)/2·kn·c₀k−1·Disc(f)k — Altmann, Awtrey, Cryan, Shannon & Touchette, J. Algebra Appl. 19 (2020) 2050014, Thm 2.4; restated as Chen–Chin–Tan, arXiv:2210.10257, Prop. 2.8. At k = 2, m = l it is the identity above — for monic h. Here h is not monic: a = lead(h) = lead(fd) = d + 1, because fd is the derivative of a monic polynomial of degree d + 1, and the non-monic version follows from disc(c·q) = c2 deg q−2disc(q). That factor is the entire point: applied in its published monic form the square criterion would read (−1)lh(0) = (l!)² — always a square — and it is precisely the leading coefficient d+1 that makes the condition non-trivial. What is specific to fd is the pair h(0) = (−1)l(l!)² and lead(h) = d+1. Since disc(fd) = disc(fd(x+l)) = disc(h(x²)), substituting the first into the second gives the identity.
The bracketed factor is a perfect square and disc(h) ≠ 0 (not an assumption: P = Π(x−j) has d+1 distinct real roots, so by Rolle fd has d distinct real roots, so h is separable), so disc(fd) is a perfect square if and only if d + 1 is. For even d that forces d + 1 = (2k+1)², i.e. d = 4k(k+1) — for every k, not merely across the range that has been computed. For even d, the degrees with square discriminant are 8, 24, 48, 80, 120, 168, 224, 288, … and no other — so no other degree can drop into the even-weight subgroup E. (Odd d are out of the question for a different reason — d/2 is a rational root, δ = 1 — and the even-only theorem does not constrain their discriminants: disc(f₁) = 1 is a square.)
Necessary, and — so far — sufficient. A square discriminant is what lets Gal(fd) sit in the even-weight subgroup E; the theorem says only these degrees have one, for every k. Whether the group actually drops there is a separate, per-degree question, answered yes at every one computed (d = 8, 24, 48, 80, 120) and open beyond d = 120. And one scope line, stated so the title cannot be read as more than it is: “exceptional” here means the drop into E. A drop to a proper subgroup not contained in A2l would evade the discriminant entirely and is not excluded by this identity — at every degree where the group has been determined (every even d ≤ 120), no such drop occurs and every exceptional degree is exactly the E-drop, but past d = 120 that is verification, not theorem. So the theorem is an upper bound on the degrees that can drop into E; the exceptional set equals {d = 4k(k+1) : d ≤ 120} as far as it has been computed.
The parity restriction turns out to need no apology either. For odd d the centre d/2 is a rational root of fd, so δ = 1 and the degree never enters the question at all. That is also where the log 2 in the enclosure comes from: Σd odd 1/(d(d+1)) = log 2, about 83% of c, known exactly.
theorem.js checks every line of this as an exact integer identity at every even d ≤ 80, and carries three falsifiers that must break it — one of them the off-by-one definition of fd (index from 1 rather than 0), a real mistake that briefly reached a draft of the submission text and is now a tested property rather than a convention nobody checks.
What the theorem does not do. It settles which degrees have square discriminant, hence which Gal(fd) can sit in the even-weight subgroup. It does not determine the group there — that is the per-degree work above, done one degree at a time — and it says nothing about a drop that avoids A2l altogether, which no computed degree exhibits but no identity here forbids.
I was not looking for the exceptional degrees. I was checking that fd is irreducible over ℚ — routine housekeeping — by finding, for each d, one prime at which fd stays irreducible mod p. A single such prime is a complete certificate. The search succeeded at every even d ≤ 60 but three: d = 8, 24 and 48. Those are exactly the three degrees where van Doorn's Magma runs found the unexpected Galois group. Two computations with no shared step — Rabin's test over 𝔽p here, Magma group identification there — returned the same three numbers. (One caveat carried everywhere it applies: the two computations have different authors, but the checks on this side share one — so this is corroboration across methods, and only van Doorn's half is independent of me.)
And the coincidence is structural, not luck. A witness prime exists only if the Galois group contains a full 2l-cycle. The hyperoctahedral group Sl+ has one; its index-2 subgroup does not. So the irreducibility search had to fail exactly where the group is exceptional. What began as a prerequisite turned out to be a cheap detector for the exceptional degrees — corroboration from an unrelated computation, though not the machinery the sweep itself uses: past d = 60 the classification runs on the exact CRT discriminant and the five-candidate elimination, not on Rabin witnesses. (Irreducibility at those three degrees is certified another way, by subset-sum exclusion over the observed factorization patterns: no proper factor degree is consistent with every pattern, so fd is irreducible there too.)
The enclosure decomposes c into four pieces, each with its own evidence class:
| Piece | Value | Evidence |
|---|---|---|
| Odd d (δ = 1, paper Lemma 37 — a proved identity) | log 2, enclosed to 15 digits | Certified here: rational bounds via 2 atanh(1/3) with a geometric tail bound. |
| Even d = 2l, l ≤ 30, l ∉ {4,12,24} | 0.128138628094938 (exact) | Exact rational (Lemma 40 derangement formula), conditional on the paper's Galois facts (Gal ≅ Sl+, author: Magma). Irreducibility half independently certified here (see below). |
| Exception d = 8 | δ(f₈) = 25/64 = 75/192, exact | Certified by elimination (galois8.js): Dedekind cycle types over 1997 good primes + square discriminant (⇒ G ⊆ A₈) + transitivity leave exactly one of the 1659 subgroups of S₄+ standing — order 192, index 2. Its non-derangement proportion is 75/192. The hyperoctahedral formula would give 151/384; the exception costs exactly one non-derangement in 384. |
| Exceptions d = 24, 48 | δ(f₂₄) = 35090142217/89181388800 δ(f₄₈) = 12719809044827249231493399463/ |
Certified by structural elimination (galois-exceptions.js): S₁₂+ cannot be enumerated, so structure replaces enumeration. The kernel K = G ∩ C₂l is normalised by G, hence a π(G)-submodule — one of four (0, ⟨diag⟩, even-weight, full), since the Al-submodule lattice of 𝔽₂l coincides with the Sl one — and the two small ones are excluded by a certified kernel element of even weight strictly between 0 and l (weights {2,4,6,8,10} at l=12, {2,…,22} at l=24, each an lcm-power of an observed Frobenius), which forces K ⊇ the even-weight submodule. π ⊇ Al comes from a Jordan certificate with its hypotheses in order: h is irreducible (so π is transitive); an observed Frobenius element has a power that is a genuine prime p-cycle with l/2 < p ≤ l−3 — the lower bound doing double duty, forcing primitivity and making that power a single cycle (at l=12 the witness at p=23 has h-type 1+1+3+7, whose lcm-power is a 7-cycle; at l=24, a 13-cycle at p=29) — and Jordan then gives π ⊇ Al. With cycle-sign = weight-parity this collapses everything to five explicit groups — Sl+ itself, C₂l⋊Al, and the three even-weight-kernel groups ES0, ESs, EA0 — a list that is complete because K ∈ {even-weight, full}, π ∈ {Al, Sl}, and the weight-parity character has two lifts on Sl, one on Al. disc(f), computed exactly by CRT (508 and 2580 digits), is a perfect square in both cases — killing every candidate with an odd-weight element; disc(h) is not — killing π = Al. One survivor each: the index-2 group ES0, δ = δhyp − 1/(2ll!) — and the shorter counting route closes the same door: |G| = |K|·|π(G)| ≥ 2l−1·l! = |E| with G ⊆ E forces G = E. The pipeline cross-validates against the d=8 enumeration at l=4. |
| Tail l = 31…60 | all 30 δ certified exactly | Tail sweep, 30/30 closed (tail-sweep.js, ~10 min): the five-candidate squeeze run at every even d = 62…120. 28 degrees are full hyperoctahedral; two are the index-2 group — d = 80 and d = 120, new exceptional degrees beyond the paper's d ≤ 60 Magma range. |
| Tail l > 60 | δ ∈ [0, 1]; weight = 0.0041152 — the whole remaining width | Certified, and exact by telescoping: Σl>60 1/(2l(2l+1)) = (1 − log 2) − Σl≤60, outward-rounded through the log 2 enclosure — no partial sum, no remainder estimate. |
Under one labeled assumption — for every even d ≥ 122, Gal(fd) is either Sl+ or its index-2 subgroup, which is true at every degree where the group has been determined (every even d ≤ 120 now is: hyperoctahedral except at {8, 24, 48, 80, 120}) — the tail telescopes into δ∞·(an exact alternating partial sum − log 2) with δ∞ = 1 − e−1/2 standing in for δhyp(l) at the cost of two error terms the kernel carries explicitly — the index-2 allowance 1/(2ll!) and the alternating-series deviation 1/(2l+1(l+1)!), both below 10−100 at l = 61 — every piece enclosed in exact rationals, and c is pinned to 33 digits. Two things about the assumption, stated so it does not read as a formality: it subsumes the irreducibility of fd for every even d ≥ 122 (both allowed groups are transitive), which is certified here only through d = 120; and the 33 digits rest on it plus the three exceptional densities alone — the sweep's contribution is to the unconditional bracket and to the assumption's evidence base, thirty more degrees where it holds.
The direction of that identity matters, and this page had it backwards until 2026-08-03 — which put a wrong constant here from the sixth decimal. Σl>N 1/(2l(2l+1)) equals Σm≤2N+1(−1)m+1/m − log 2, not log 2 − Σm≤2N. The one-line check: since 1/(2l(2l+1)) = 1/(2l) − 1/(2l+1), the whole sum telescopes to 1 − log 2 = 0.3069, never to log 2. It is recorded in the errata log.
c* = 0.8307329558487356638503727480334797… (± 1 in the 34th place)
The unconditional certified statement stays the bracket above; the conditional value is reported as conditional, never blended into it — the kernel checks that c* ∈ [clo, chi] on every run.
How many digits survive if the assumption fails. The assumption enters only at even
d ≥ 122, where degree d carries weight 1/(d(d+1)) and δ can move by at most
max(δ∞, 1−δ∞) < 0.607.
So if it first fails at degree d₀, c moves by at most
0.607/(d₀(d₀+1)) — and 1/(1+c), which shrinks moves by the factor
1/(1+c)² ≈ 0.298, by at most 0.182/(d₀(d₀+1)). The surviving
digits are then a matter of decimal boundaries, not magnitudes, so they are computed
by interval containment of the perturbed enclosure — kernel.js prints and
asserts them: a single failure at d₀ = 122 leaves
0.5462 of 1/(1+c*) intact (four digits); at d₀ = 500,
0.54622 (five); at d₀ = 1000,
0.546229 (six). All 33 digits need the assumption at every even
degree. Failure on a positive-density set of degrees falls all
the way back to the unconditional bracket, which pins two digits. That is why the OEIS
proposal writes the assumption into the definition: a future failure at some d₀ amends
the entry by raising d₀, instead of retracting it.
The first draft bounded the tail remainder by Σl>N 1/(4l(l+1)) = 1/(4(N+1)). That under-bounds: 4l(l+1) > 2l(2l+1), so the comparison runs the wrong way. Falsifier X2 — then “a lazier partial sum must give a wider enclosure, never a tighter one” — went red on the draft and the bound was corrected to the telescoping 1/(4N) before any number left the kernel. The partial-sum-plus-remainder route has since been retired entirely (the tail weight is now the exact telescoped closed form, which is also 7.5×10−9 tighter), and X2 now plants the historical tail-identity error — log 2 where 1 − log 2 belongs — which must break paper-consistency. The defect and its catch stay recorded in the kernel source, per house rule: a bound a falsifier cannot reject is not a bound.
Not an unconditional enclosure. The even-part values inherit the paper's Magma Galois-group identifications for even d ≤ 60; I certified the irreducibility half independently but not the group half. Not the liminf itself. Theorem 8 brackets the liminf between 1/(1+c) and 1/(2c); the constant's exact value stays open. Not independently verified. The checks and the code share an author, so they rule out slips but not a shared misconception. An independent recomputation of δ(f₈) = 25/64 in Sage or Magma would take an afternoon, and it is the thing this note most wants.
The tail sweep through l = 60 is done (30/30). The one remaining lever is more of the same — extend the sweep past l = 60, each degree shrinking the width by exactly its weight 1/(2l(2l+1)) at growing compute cost (d = 120 took the longest single run). Unconditional digits of c beyond what sweeping can reach require a theorem about all large l, not a computation — stated here so the limit of the method is on the page, not discovered by a referee. (The 4k(k+1) law is settled by the theorem above, so no further degree is needed to test it — d = 224 would only extend the group determination.)
Plain Node.js. No dependencies, no Sage, no Magma. Put all ten files in one directory and run any of the programs; each prints its own checks and exits non-zero if one fails. theorem.js is the proof of the square-discriminant law and runs in about fifteen seconds; kernel.js is the enclosure, about twenty; tail-sweep.js is the long one at roughly ten minutes.
The last three are the shared pieces: rational.js is the exact BigInt rational arithmetic, vendored so that the no-dependencies promise is literally true; tail-deltas.json holds the swept densities — which kernel.js re-derives from each entry’s declared group, and gates by the square-discriminant theorem, rather than trusting the file it just read; and narrowing.json is the figure’s data, written by narrowing.js and shipped so the figure is inspectable without a run — narrowing.js also cross-checks every number this page hardcodes (the conditional constant, the 58-point data array, the axis labels) against the generated copies when it runs beside the page.