The Verification Venue · a coincidence that had to grow a proof
The Coincidence That Grew a Character
196884 = 196883 + 1 is where monstrous moonshine started. It is not why anyone believes it. Expand j minus 744 here in exact integers, then replace the dimensions with Monster traces and watch a seven-column certificate refuse every wrong answer.
Two numbers, from two countries that had no border crossing.
The first, 196884, is the coefficient of q in the expansion of J = j - 744, where j is the modular function that nineteenth-century complex analysis handed down. Nothing in its definition mentions a group.
The second, 196883, is the degree of the smallest nontrivial irreducible complex representation of the Monster, the largest sporadic finite simple group. In 1978, when John McKay noticed that the first number is the second plus one, the Monster had not yet been constructed. Conway and Norton made the noticing precise in 1979 and called it monstrous moonshine. Frenkel, Lepowsky and Meurman built the graded object it needed. Borcherds proved the conjecture in 1992.
The addition is the easy part. This page is about what had to happen next.
One: expand the function
No coefficient below is stored. The page builds the Eisenstein series E4 = 1 + 240 ∑ σ3(n) qn from divisor cubes, builds Δ/q = ∏ (1 - qn)24 from its product, divides the two formal series in exact integers, and subtracts 744.
Bench 1 · the q-expansion of J = j - 744
Each is an exact BigInt. Every quantity this page displays is an exact integer or an exact ratio of integers: no coefficient, trace, determinant or multiplicity is ever a floating point number. Slider positions and array indices are ordinary machine numbers, as they have to be.
| n | coefficient of qn in J | digits |
|---|
Press a button. The page will write that coefficient as a sum of Monster representation degrees, greedily, largest degree first. Dimensions only: no element of the group has acted yet.
Two: why that addition proves nothing
The Monster's trivial representation has degree 1. Once you may use copies of it freely, every positive integer is a nonnegative combination of Monster degrees, and a dimension match costs nothing. Type a number that has no business being there and watch it decompose just as obligingly.
Bench 2 · the free lunch
Nothing decomposed yet.
Greedy over the first seven irreducible degrees, remainder paid in copies of the trivial representation. It always succeeds. That is the point.
So a dimension-only decomposition is not evidence. It is arithmetic with a spare part. The conjecture only becomes falsifiable when the graded pieces are asked to be representations of the Monster, which means every element g of the group acts on them and every action has a trace.
Three: stop adding dimensions, start taking traces
Write Vn for the n-th graded piece of the moonshine module. If it decomposes as a1χ1 + a2χ2 + … into irreducibles, then the dimension is only one of its numbers. For each conjugacy class g there is another, Tr(g | Vn) = ∑ aiχi(g), and the same multiplicity vector has to produce all of them at once.
Those traces arrive from the other country. Conway and Norton attached a modular function to each class, and the page expands three of them from their own product formulas. The identity class gives J itself. The class 2B is the Frenkel-Lepowsky-Meurman product R = q-1 ∏ (1 + qn)-24, which is the eta quotient (η(τ)/η(2τ))24. The class 2A is R + 4096/R, the same series plus 4096 times its reciprocal. That constant is quoted from Conway and Norton, not derived here, and it is the one input a reader could not have reconstructed from the sentence before it, so it is stated rather than buried: the engine builds R once, inverts it as a formal series, and adds 4096 times the inverse. Only coefficients of qn with n ≥ 1 are ever used, so the additive constant that different sources attach to these Hauptmoduln never enters. The character values come from the ATLAS. The two sources never touch until the solve.
Bench 3 · three classes, three characters, one exact solve
| class g | Tr(g | Vn) from modular side | χ₁(g) | χ₂(g) | χ₃(g) |
|---|
Solving.
The 3 by 3 character block is invertible over the rationals, so this system has exactly one solution. It happens to be a vector of nonnegative integers. Nothing forced that.
Four: Borcherds's seven-column certificate
Three classes fix the first two graded pieces because only three irreducibles are small enough to appear. By V₅ the first seven are in play, and the eighth is not: Borcherds writes, "The only irreducible representations of the monster with dimension at most that of V5 are the first seven". The eighth irreducible character has degree 3879214937598 and dim V₅ is 333202640600, so nothing past the seventh irreducible can occur in these five pieces at all. Seven independent columns are what is needed, and enough. In section 9 of the 1992 proof, Borcherds picks exactly seven: the involution class 2B, plus six classes of odd order whose Leech lattice automorphisms fix no nonzero vector, namely 3B, 5B, 7B, 9B, 13B, 15D. He records their cycle shapes, which is what this page expands into trace series, and he records that the determinant of the seven by seven matrix of character values is 35672555520, printed in the paper as 222 35 51 71.
The page recomputes that determinant by fraction-free Bareiss elimination on the ATLAS fixture. If our character table were wrong in a single entry, the determinant would almost certainly not land on his.
Bench 4 · the certificate, and the reader's chance to break it
| χi | degree |
|---|
Computing the determinant.
| class g | trace used | rebuilt from multiplicities | residual |
|---|
Solving.
Five graded pieces times seven classes is 35 places to move a trace by one. Press the button and every one of them is re-solved from scratch.
Five: the recurrences that leave no room
Five graded pieces would be a small coincidence if the rest were free. They are not. Borcherds derives, from the twisted denominator identity (8.3) of the monster Lie algebra, four explicit recursion formulas he labels (9.1). They express cg(n) for n = 4 and every n > 5 purely in terms of earlier coefficients of g and of g². As he puts it in the paper, "if we know all the coefficients cg(n) for n = 1, 2, 3, and 5 and all elements g of the monster then we can work out all the coefficients cg(n)."
So here is a prediction with nowhere to hide. Pick a class and a target n. The page evaluates (9.1) term by term from coefficients it has already fixed, and separately expands the class's own product formula out to qn. Those two numbers were computed by code that shares nothing but arithmetic.
Bench 5 · recurrence (9.1), term by term
Notation follows the paper: c(k) is Tr(g | Vk) and c2(k) is Tr(g² | Vk). Every index on the right is smaller than the target, so nothing here is circular.
Selecting a class.
| term of (9.1) | value |
|---|
Evaluating.
Seven classes and eight reachable targets is 56 forced coefficients, and the walk button runs all of them. Every one is a place the whole structure could have come apart and did not.
The check
Everything below was recomputed in your browser while this page loaded, from the equations, not from a table of answers. An offline program re-derives the same mathematics independently, then reads this exact file, executes the arithmetic engine inside it, and compares the engine's output value by value against its own.
What that catches, precisely: any change to a character-table entry (both the seven by seven fixture and the three by three head block), to a degree, to a class name, to a cycle shape, to the power map, to a series formula, to a multiplicity, to the recurrence, or to any run of four or more digits printed in the prose outside the engine. What it does not do is run a browser. The rendering code that copies engine values into these tables is checked by pattern, not by execution: the verifier asserts that each cell is still written from the engine value and that the rendering block contains no stray numeric literal, which is weaker than executing it. That gap, and how it was measured, is written down in the README beside the verifier.
External anchors this reproduces
- Borcherds prints the head of the expansion as q-1 + 196884q + 21493760q². The page's series engine agrees.
- Borcherds prints the seven-class determinant as 35672555520 = 222 35 51 71. Bareiss elimination on the ATLAS fixture agrees, and the page factorises its own result.
- Borcherds states, at the end of his section 3, four decompositions. Written out: V₁ = χ₁ + χ₂; V₂ = χ₁ + χ₂ + χ₃; V₃ = 2χ₁ + 2χ₂ + χ₃ + χ₄; V₅ = 4χ₁ + 5χ₂ + 3χ₃ + 2χ₄ + χ₅ + χ₆ + χ₇. The solve above lands on all four. Those four strings are themselves regenerated from the engine's multiplicity vectors by the offline check, so a typo in this list fails it.
- The head block on 1A, 2A, 2B is the ATLAS one: χ₁ is (1, 1, 1), χ₂ is (196883, 4371, 275), χ₃ is (21296876, 91884, -2324). Its determinant is -68719476736 = -236, and the two solves it forces are (1, 1, 0) and (1, 1, 1).
- The 2A and 2B series the page builds have heads 4372, 96256, 1240002, 10698752, 74428120 and 276, -2048, 11202, -49152, 184024, which are the published McKay-Thompson series of those two classes.
- The ATLAS gives the smallest nontrivial irreducible degree as 196883 = 47 × 59 × 71, the product of the three largest primes dividing the order of the Monster.
Every uncertainty and every free choice on this page
- Free choice: the seven classes. 2B, 3B, 5B, 7B, 9B, 13B and 15D are Borcherds's selection, not a canonical one. Any seven classes whose character matrix is nonsingular would do. His remark that at least one even-order class is needed is a real constraint: the first seven characters are linearly dependent on odd-order elements.
- Free choice: the five graded pieces. The certificate is run at n = 1 through 5 because seven columns determine exactly those. What makes seven enough is a bound, not a hope: the eighth irreducible character has degree 3879214937598, larger than dim V₅ = 333202640600, so nothing past the seventh can appear in these pieces. That degree is an ATLAS input here, read from the same GAP table as the seven the page uses, and the comparison is recomputed live in the ledger above. Borcherds's own text states the decompositions for n = 1, 2, 3 and 5. The V₄ row here is computed by the solve, not quoted from him. It is a consequence of the same certificate, and it is labelled as such.
- Free choice: the mutation. Plus one and minus one on a single trace. Larger or multi-column perturbations are not swept, and some of them would certainly survive the integrality test while still being wrong.
- Free choice: the recurrence targets. n in {4, 6, 7, 8, 9, 10, 11, 12}. Borcherds's formulas determine n = 4 and every n greater than 5; n = 5 degenerates to an identity and n = 1, 2, 3 are inputs, so those are excluded.
- Assumed, not derived here: the character table. The seven by seven fixture is the ATLAS table, cross-read against the GAP character table library. The existence of a degree-196883 irreducible character is an input to this page, not an output of it. The 2024 re-verification of the Monster's character table by Breuer, Magaard and Wilson is a preprint and states its own starting hypotheses, including that degree. Treat it as a reproducibility audit, not an independent derivation.
- Assumed, not derived here: the trace series. The identity class is expanded from E4 and Delta. The 2B series is the Frenkel-Lepowsky-Meurman product R = q-1 ∏ (1 + qn)-24. The 2A series is R + 4096/R, which is an extra input the page states rather than derives: the constant 4096 is quoted from the Conway-Norton assignment for that class, and the check on it is numerical, the first five coefficients agreeing with the published 2A McKay-Thompson series. The six odd-order classes use the cycle shapes Borcherds lists, and the series taken is the reciprocal of the eta product of the shape, which is his f = 1/ηg. That these eta quotients are the right Conway-Norton Hauptmoduln is quoted, not proved here.
- A transcription, and how it was tested. The family for n = 4k + 1, which is the second of the four formulas as (9.1) prints them and the fourth branch in this page's code, contains the term (c(2k)² + cg²(2k))/2. The paper prints that plus sign unambiguously and this page uses it. The real hazard in the line is next to the sign, not on it: cg(2k)² and cg²(2k) differ only in where the 2 sits, and they are different numbers. The transcription was checked numerically as well as read: as shipped, all 56 predictions reproduce independently expanded coefficients, and flipping that plus to a minus fails five of them, all at n = 9. That is evidence the transcription is right, not a proof.
- Assumed: the squaring power map. Recurrence (9.1) needs cg². The map used is the ATLAS one: 2B squares to the identity class, and each of the six odd-order classes squares back into itself. Both facts are read off the published power map, not derived.
- Grading convention. Following Borcherds, Vn is the piece whose dimension is the coefficient of qn in J, so V-1 is one dimensional and V₀ is zero. Vertex-operator-algebra sources usually shift the index by one and call the same space V♮n+1. The letter J is j - 744 here; other papers normalise J differently.
- Scope. The browser is reproducing finite certificates and consequences of the cited equations. It is not constructing the Monster, not constructing the moonshine module, not replaying the no-ghost theorem, and not proving the genus zero property. A reader who accepts every number on this page has still not been shown Borcherds's theorem. The theorem is what makes these numbers worth checking.
- Attribution. Frenkel, Lepowsky and Meurman constructed the moonshine module. Borcherds proved the Conway-Norton Hauptmodul claim for it. Neither sentence is interchangeable with the other.
Run it yourself: node research/moonshine-196884/verify-moonshine-196884.mjs
What the coincidence actually was, and what it was not
McKay's observation was an addition sum. What made it a conjecture rather than a curiosity is that it did not stop: the next coefficient split as 1 + 196883 + 21296876, and the one after that as 2 + 2(196883) + 21296876 + 842609326, always with small nonnegative integers, always using the smallest available irreducibles. Thompson proposed that a graded module was hiding behind it. Conway and Norton went further and attached a genus zero modular function to every conjugacy class, which is the claim that actually had teeth, and the claim this page's traces test.
What the coincidence was not: proof, evidence in isolation, or a statement about the smallest faithful representation. The 196883 here is the smallest nontrivial irreducible complex representation. Faithfulness follows because the Monster is simple, so any nontrivial representation has trivial kernel. Over the field of two elements there is a faithful representation of dimension 196882, one smaller, which is a different question.
And the proof, when it came, did not come from checking more coefficients. Borcherds built a generalized Kac-Moody algebra whose denominator identity forces the recursions, then used the finite certificate above to pin the first five graded pieces. The finite part is the part a browser can carry.