A Theoretical Foundation for Mathematical Chemistry
This is a foundational theoretical paper in mathematical chemistry and chemical graph theory. It derives exact mathematical laws governing molecular topology. The paper also serves as a benchmark resource, establishing the first systematic isomer counts that corrected historical errors and whose recursive method remains the basis for modern molecular enumeration.
Historical Motivation and the Failure of Centric Trees
The primary motivation was the lack of a rigorous mathematical relationship between carbon content ($N$) and isomer count.
- Previous failures, reached by two different routes: Cayley (1875) (as cited by Henze and Blair, referring to the Berichte der deutschen chemischen Gesellschaft summary) built “centric” and “bicentric” trees and predicted counts through $C_{13}$, erring at $C_{12}$ and $C_{13}$. Schiff (1875), almost simultaneously, used combinations and permutations rather than trees, reached the dodecanes, and arrived at Cayley’s same wrong value there. Both errors were first corrected by Hermann around 1880, who typed the isomers by the number of branches on the fundamental chain; his method reaches $C_{13}$ and no further. Tiemann (1893), Delannoy (1894), Losanitsch (1897), Goldberg (1898), Trautz (1924), and David (1928) followed, as cited in the paper, none achieving general accuracy: Losanitsch’s $C_{12}$ and $C_{14}$ totals are wrong, and Goldberg’s formula fails above $C_{10}$.
- The theoretical gap, which has two independent causes: a formula anchored on a “centric” or “bicentric” center of symmetry fails once the carbon content is large enough to introduce additional centers of symmetry. Separately, a formula requiring one more term per unit increase in carbon content (Delannoy, and David after him) fails past the point where those terms have been established. The paper names these as alternatives; neither implies the other, and both put counts for larger molecules like $C_{40}$ out of reach.
This work aimed to develop a theoretically sound, generalizable method that could be extended to any number of carbons.
Core Innovation: Recursive Enumeration of Graphs
The core novelty is the proof that the count of hydrocarbons is a recursive function of the count of alkyl radicals (alcohols) of size $N/2$ or smaller. The authors rely on a preliminary calculation of the total number of isomeric alcohols (the methanol series) to make this hydrocarbon enumeration possible. By defining $T_k$ as the exact number of possible isomeric alkyl radicals strictly containing $k$ carbon atoms, graph enumeration transforms into a mathematical recurrence.
To prevent double-counting when several branches of the same carbon content attach to a central carbon, Henze and Blair applied combinations with repetition. Same carbon content does not mean same structure: there are $T_k$ structurally distinct radicals at size $k$, and it is precisely because branches of equal size may differ that a plain product would miscount. Because the branches are topologically unordered, connecting $x$ of them at size $k$ gives:
$$ \binom{T_k + x - 1}{x} $$
For example, if a Group B central carbon is bonded to three identical sub-branches of length $k$, the combinatoric volume for that precise topological partition resolves to:
$$ \frac{T_k (T_k + 1)(T_k + 2)}{6} $$
Summing these constrained combinatorial partitions across all valid branch sizes (governed by the Even/Odd bisection rules) yields the exact isomer count for $N$ without overestimating due to symmetric permutations.
The Symmetry Constraints: The paper rigorously divides the problem space to prevent double-counting:
- Group A (Centrosymmetric): Hydrocarbons that can be bisected into two smaller alkyl radicals.
- Even $N$: Split into two radicals of size $N/2$.
- Odd $N$: Split into sizes $(N+1)/2$ and $(N-1)/2$.
- Group B (Asymmetric): Hydrocarbons whose graphic formula cannot be symmetrically bisected. They contain exactly one central carbon atom attached to 3 or 4 branches. To prevent double-counting, Henze and Blair established strict maximum branch sizes:
- Even $N$: No branch can be larger than $(N/2 - 1)$ carbons.
- Odd $N$: No branch can be larger than $(N-3)/2$ carbons.
- The Combinatorial Partitioning: They further subdivided these into three cases for the 3-branch type (a) and five for the 4-branch type (b), each with its own closed-form expression. The axis is carbon content, not structure: type (a) splits into all three branches of different content, two equal and one different, and all three equal; type (b) adds four-equal and two-plus-two. Cases (b4) and (b5) are possible only at odd $N$, since they require $(N-1)$ to be divisible by four and by two respectively, and Table I carries no b4 or b5 rows at all in its even-carbon half.

This classification is the key insight that enables the recursive formulas. By exhaustively partitioning hydrocarbons into these mutually exclusive groups, the authors could derive separate combinatorial expressions for each and sum them without double-counting.
For each structural class, combinatorial formulas are derived that depend on the number of isomeric alcohols ($T_k$) where $k < N$. This transforms the problem of counting large molecular graphs into a recurrence relation based on the counts of smaller, simpler sub-graphs.
Two Hand-Enumerations: The Fitting Set and the Held-Out Check
The paper contains two separate hand-enumerations, and they play opposite roles.
- The fitting set, $C_4$ through $C_{10}$: in the paper’s own words, “the data utilized in deriving these recursion formulas were the totals of the isomers of the series $\mathrm{C_4H_{10}}$ to $\mathrm{C_{10}H_{22}}$ inclusive as obtained by actual writing of their structural formulas.” Seven hand-counted totals are what the recursion was built against.
- The held-out set, $C_{11}$ through $C_{14}$: because the calculated tridecane and tetradecane totals “differed from the totals previously accepted in the literature, it seemed desirable also to write and count all the structural formulas … of the undecanes, dodecanes, tridecanes and tetradecanes.” The enumeration was run because the formulas contradicted the incumbent numbers, and it came back agreeing with the formulas: “The numbers so obtained agree exactly with the totals as calculated.”
- Key correction: the count for tetradecane ($C_{14}$) is 1,858, against erroneous values previously published by Losanitsch (1897), whose results for $C_{12}$ and $C_{14}$ the paper identifies as incorrect.
- Extrapolation to $N = 40$, reaching over $6.2 \times 10^{13}$ isomers, far beyond anything previously computed and four times past the largest hand-verified point.
Read as an experiment, this is a seven-point fit with a four-point held-out test, and the test was triggered by the formulas disagreeing with the accepted answer rather than by a pre-registered protocol. That is a stronger validation than it first looks in one respect, since the held-out counts were produced by a method entirely unlike the formulas, and a weaker one in another, since nothing beyond $C_{14}$ was ever checked by hand.
Table I is the paper’s other tabulated result. It reports how many terms each of the eight cases contributes at every carbon content through $C_{40}$, growing from 1 term at $C_3$ to 274 at $C_{40}$. Its practical use is as the work estimate for a hand calculation, and its structural use is the odd-only behavior of cases (b4) and (b5) noted above.
Benchmark Outcomes and Scaling Limits
- The Constitutional Limit: The paper establishes the mathematical ground truth for organic molecular graphs by strictly counting constitutional (structural) isomers. The derivation completely excludes 3D stereoisomerism (enantiomers and diastereomers). For modern geometric deep learning applications (e.g., generating 3D conformers), Henze and Blair’s scaling sequence serves as a lower bound, representing a severe underestimation of the true number of spatial configurations feasible within chemical space.
- Theoretical outcome: The paper proves that the problem’s inherent complexity requires a recursive approach.
- Benchmark resource, with the verified range bounded: Table II publishes counts up to $C_{40}$, correcting historical errors and establishing the first systematic tabulation across this range. The hand-verified range ends at $C_{14}$; everything above it is the recursion carried forward by hand arithmetic, and the published $C_{40}$ is wrong. The recursive method itself is exact and remains the basis for the accepted values in OEIS A000602, which is why an independent implementation of it (below) reproduces 1,858 at $C_{14}$ and disagrees with the paper only where the hand arithmetic ran long.

The plot above illustrates the growth rate, and the Table II figures behind it are worth stating exactly. Methane ($C_1$) through propane ($C_3$) each have exactly one isomer, then the count accelerates: 2 at $C_4$, 75 at $C_{10}$, 1,858 at $C_{14}$, 366,319 at $C_{20}$, 36,797,588 at $C_{25}$, 4,111,846,763 at $C_{30}$, and 62,491,178,805,831 at $C_{40}$. The modern OEIS-verified value at $C_{40}$ is 62,481,801,147,341, so the paper’s figure is high by 9,377,658,490, about 0.015%. The recursion is exact; what drifts is thirteen digits of hand arithmetic. This super-exponential scaling is why brute-force enumeration stops being an option and why the recurrence was necessary.
- Foundational impact: This work established the mathematical framework that would later evolve into modern chemical graph theory and computational chemistry approaches for molecular enumeration. In the context of AI for molecular generation, this is an early form of expressivity analysis, defining the size of the chemical space that generative models must learn to cover.
Reproducibility Details
Algorithms: The exact mathematical recursive formulas and combinatorial partitioning logic are fully provided in the text, allowing for programmatic implementation.
Evaluation: hand-enumeration of structural formulas, used twice and for opposite purposes. $C_4$ to $C_{10}$ is the data the recursion was derived from; $C_{11}$ to $C_{14}$ is the held-out check, run after the formulas disagreed with the accepted literature totals, and it agreed exactly with them. Nothing above $C_{14}$ was ever hand-verified.
Data: Table I gives the number of terms contributed by each of the eight cases at every carbon content through $C_{40}$ (1 term at $C_3$, 274 at $C_{40}$). Table II gives the isomer counts themselves through $C_{40}$. The counts are exact through $C_{14}$ and accumulate arithmetic error beyond it. The corrected integer sequence is maintained in the On-Line Encyclopedia of Integer Sequences (OEIS) as A000602.
Code: The OEIS page provides Mathematica and Maple implementations. The following pure Python implementation uses the OEIS generating functions (which formalize Henze and Blair’s recursive method) to compute the corrected isomer counts up to any arbitrary $N$:
def compute_alkane_isomers(max_n: int) -> list[int]: """ Computes the number of alkane structural isomers C_nH_{2n+2} up to max_n using the generating functions from OEIS A000602. """ if max_n == 0: return [1] # Helper: multiply two polynomials (cap at degree max_n) def poly_mul(a: list[int], b: list[int]) -> list[int]: res = [0] * (max_n + 1) for i, v_a in enumerate(a): for j, v_b in enumerate(b): if i + j <= max_n: res[i + j] += v_a * v_b else: break return res # Helper: evaluate P(x^k) by spacing out terms def poly_pow(a: list[int], k: int) -> list[int]: res = [0] * (max_n + 1) for i, v in enumerate(a): if i * k <= max_n: res[i * k] = v else: break return res # T represents the alkyl radicals (OEIS A000598), T[0] = 1 T = [0] * (max_n + 1) T[0] = 1 # Iteratively build coefficients of T # We only need to compute the (n-1)-th degree terms at step n for n in range(1, max_n + 1): # Extract previously calculated slices t_prev = T[:n] # T(x^2) and T(x^3) terms up to n-1 t2_term = T[(n - 1) // 2] if (n - 1) % 2 == 0 else 0 t3_term = T[(n - 1) // 3] if (n - 1) % 3 == 0 else 0 # T(x)^2 and T(x)^3 terms up to n-1 t_squared_n_1 = sum(t_prev[i] * t_prev[n - 1 - i] for i in range(n)) t_cubed_n_1 = sum( T[i] * T[j] * T[n - 1 - i - j] for i in range(n) for j in range(n - i) ) # T(x) * T(x^2) term up to n-1 t_t2_n_1 = sum( T[i] * T[j] for i in range(n) for j in range((n - 1 - i) // 2 + 1) if i + 2*j == n - 1 ) T[n] = (t_cubed_n_1 + 3 * t_t2_n_1 + 2 * t3_term) // 6 # Calculate Alkanes (OEIS A000602) from fully populated T T2 = poly_pow(T, 2) T3 = poly_pow(T, 3) T4 = poly_pow(T, 4) T_squared = poly_mul(T, T) T_cubed = poly_mul(T_squared, T) T_fourth = poly_mul(T_cubed, T) term2 = [(T_squared[i] - T2[i]) // 2 for i in range(max_n + 1)] term3_inner = [ T_fourth[i] + 6 * poly_mul(T_squared, T2)[i] + 8 * poly_mul(T, T3)[i] + 3 * poly_mul(T2, T2)[i] + 6 * T4[i] for i in range(max_n + 1) ] alkanes = [1] + [0] * max_n for n in range(1, max_n + 1): alkanes[n] = T[n] - term2[n] + term3_inner[n - 1] // 24 return alkanes # Calculate and verify isomers = compute_alkane_isomers(40) print(f"C_14 isomers: {isomers[14]}") # Output: 1858 print(f"C_40 isomers: {isomers[40]}") # Output: 62481801147341Hardware: Derived analytically and enumerated manually by the authors in 1931 without computational hardware.
Paper Information
Citation: Henze, H. R., & Blair, C. M. (1931). The number of isomeric hydrocarbons of the methane series. Journal of the American Chemical Society, 53(8), 3077-3085. https://doi.org/10.1021/ja01359a034
Publication: Journal of the American Chemical Society (JACS) 1931
@article{henze1931number,
title={The number of isomeric hydrocarbons of the methane series},
author={Henze, Henry R and Blair, Charles M},
journal={Journal of the American Chemical Society},
volume={53},
number={8},
pages={3077--3085},
year={1931},
publisher={ACS Publications}
}
