Research

Thomson, One N at a Time

How the N = 7 proof works, what the proofs so far have in common, and which N we expect to come next.

Jacob Stavrianos
Jacob Stavrianos 10/27/2026
Thomson, One N at a Time

Recently, we published a solution of the Thomson problem for N=7N = 7 electrons, showing that seven electrons on a sphere have the lowest energy when they form a regular pentagonal bipyramid: two poles, with a pentagon around the equator. It took ten Claude Sonnet 5.5 agents around 15 hours to come up with a 17,895-line proof of the statement in Lean. This post sheds light on the underlying method and suggests some values of NN to tackle next.

The short version: the proofs in this post bound the energy from below by sums that can’t be negative. Bounds built from pairs of points are exact only for the most balanced NN, while bounds built from triangles of points, plus a case split, are what proved N=7N = 7 and 88. Our numerics suggest the same recipe should reach N=10N = 10 then 99 next, but that N=32N = 32 will need a new idea.

1. The problem

Let e1,…,eNe_1, \dots, e_N be points on the unit sphere in R3\mathbb{R}^3.1 They repel like electrons—each pair has electrical potential energy inversely proportional to their distance, which we denote dist⁡(ei,ej)\operatorname{dist}(e_i, e_j). The Thomson problem asks for the configuration of points that minimizes the total electrical potential energy E=∑i<jdist⁡(ei,ej)−1E = \sum_{i<j} \operatorname{dist}(e_i, e_j)^{-1}.

Before we prove anything, there’s a simple algorithm for finding good configurations: start from random points and let the charges push each other around until they settle. Adding a dissipative drag force, we see that potential energy decreases over time, guiding the system toward a local minimum.

Electrons on a sphere

Drag an electron to move it, then let go and watch the others push it back into place. Drag empty space to rotate the sphere.

Energy
0.000000
Lowest known
9.985281

Settling…

But how can we prove that the resulting configuration is a global minimum? To do so, we need a global lower bound on the energy, achieved at our proposed configuration. Concretely, we’re looking for a constant BB such that E≥BE \ge B for all configurations and E=BE = B for the proposed minimal configuration.

2. Some minimal configurations

Here are the answers for NN up to 12,2 and whether and how each one has been proved. Three of them are regular polyhedra: the tetrahedron, the octahedron and the icosahedron.3 We lean on two throughout: N=7N = 7, the subject of our previous post, and N=12N = 12, the cleanest case where our method works perfectly.

Lowest-energy configurations

Pentagonal bipyramid proved, Lean

N
7
Energy
14.452977
Distinct ⟨eᵢ,eⱼ⟩
4

Hung's Lean package (September 2026).

N = 2, 3, 4, 6 and 12 use exact coordinates; the rest come from numerical approximation. Distinct ⟨eᵢ,eⱼ⟩ counts how many different angles occur between pairs of points. Few distinct angles turns out to matter.

3. A lower bound from polynomials

Most of the proofs above start from one idea, due to Delsarte and adapted to energy by Yudin. The plan is to find a sum, built from the angles between points, that can never be negative for any configuration, and then use it to bound the energy from below. We state the key fact first, check it by hand in two simple cases, turn it into a bound, and then ask when the bound is exact.

Setup: energy depends only on angles

Take two points ei,eje_i,e_j on the unit sphere and let tij=⟨ei,ej⟩t_{ij}=\langle e_i,e_j\rangle be the cosine of the angle between them. So tij=1t_{ij}=1 means the same point and tij=−1t_{ij}=-1 means opposite points.

Lemma 1 · energy depends only on angles

The distance between two unit vectors is ∥ei−ej∥=2−2tij\lVert e_i-e_j\rVert=\sqrt{2-2t_{ij}}. So a pair costs f(tij)f(t_{ij}), where f(t)=1/2−2tf(t)=1/\sqrt{2-2t}, and the total energy is E=12∑i≠jf(tij)E=\tfrac12\sum_{i\ne j}f(t_{ij}).

Proof. Both vectors have length 1, so:

∥ei−ej∥2=∥ei∥2−2⟨ei,ej⟩+∥ej∥2=2−2tij.\begin{aligned} \lVert e_i-e_j\rVert^2 &= \lVert e_i\rVert^2-2\langle e_i,e_j\rangle+\lVert e_j\rVert^2\\ &= 2-2t_{ij}. \end{aligned}

Recall that the electrical potential energy between eie_i and eje_j is the inverse of dist(ei,ej)(e_i,e_j), which is precisely f(tij)f(t_{ij}). Summing over every pair once gives E=∑i<jf(tij)E=\sum_{i\lt j}f(t_{ij}). Summing over ordered pairs (i,j)(i,j) with i≠ji\ne j counts each pair twice, because tij=tjit_{ij}=t_{ji}, which gives the factor 12\tfrac12. □\square

We use the ordered version because sums over all ordered pairs turn into squared lengths, as we’re about to see. From here on, tijt_{ij} is the only thing we track about a pair of points, and ff is the energy curve that everything below is measured against.

3.1 Legendre polynomials

The polynomials P0,P1,P2,…P_0,P_1,P_2,\dots are the Legendre polynomials. You get them by running the Gram–Schmidt orthogonalization process on 1,t,t2,…1,t,t^2,\dots over the interval [−1,1][-1,1] and rescaling so that Pk(1)=1P_k(1)=1. The first few are P0=1P_0=1, P1=tP_1=t, P2=12(3t2−1)P_2=\tfrac12(3t^2-1), P3=12(5t3−3t)P_3=\tfrac12(5t^3-3t).

Legendre polynomials P₀ to P₄
P₀P₁P₂P₃P₄
−1−0.500.51−1−0.500.51t = cosine of the angle between two points

Each PkP_k equals 1 at t=1t=1 (a point paired with itself), stays between −1-1 and 11, and crosses zero kk times. P0P_0 is the constant 1.

For each kk there is a map φk\varphi_k from the sphere into a space of dimension 2k+12k+1 with Pk(⟨x,y⟩)=⟨φk(x),φk(y)⟩P_k(\langle x,y\rangle)=\langle\varphi_k(x),\varphi_k(y)\rangle. This is the addition theorem for spherical harmonics. Granting it, the bound takes one line. Add Pk(tij)P_k(t_{ij}) over every ordered pair, including i=ji=j, and call the total SkS_k:

Sk=∑i,jPk(tij)=∑i,j⟨φk(ei),φk(ej)⟩=∥∑i=1Nφk(ei)∥2  ≥  0.\begin{aligned} S_k &= \sum_{i,j}P_k(t_{ij}) = \sum_{i,j}\langle\varphi_k(e_i),\varphi_k(e_j)\rangle\\ &= \Bigl\lVert\sum_{i=1}^{N}\varphi_k(e_i)\Bigr\rVert^2\;\ge\;0. \end{aligned}

A single term can be negative: P1(t)=tP_1(t)=t is negative for an obtuse pair. Only the sum over the whole configuration is guaranteed to be non-negative.

But what is this mysterious map φk\varphi_k? The next two sections answer that question for k=1k=1 and k=2k=2.

3.2 The centre of mass

Let’s start with k=1k=1, where P1(t)=tP_1(t)=t. Add P1(tij)P_1(t_{ij}) over every ordered pair, including i=ji=j, and call the total S1S_1:

S1=∑i=1N∑j=1NP1(tij)=∑i,j⟨ei,ej⟩=⟨∑i=1Nei, ∑j=1Nej⟩=∥∑i=1Nei∥2  ≥  0.\begin{aligned} S_1 &= \sum_{i=1}^{N}\sum_{j=1}^{N} P_1(t_{ij})\\ &= \sum_{i,j}\langle e_i,e_j\rangle\\ &= \Bigl\langle \sum_{i=1}^{N}e_i,\ \sum_{j=1}^{N}e_j\Bigr\rangle\\ &= \Bigl\lVert \sum_{i=1}^{N}e_i\Bigr\rVert^2\;\ge\;0. \end{aligned}

The sum of all the cosines is the squared length of e1+⋯+eNe_1+\dots+e_N, which is NN times the centre of mass. A squared length can’t be negative, and it is zero exactly when the centre of mass sits at the origin.

The NN terms with i=ji=j each equal tii=1t_{ii}=1, so they contribute NN. Moving them across gives ∑i≠jtij≥−N\sum_{i\ne j}t_{ij}\ge -N. In words, the average cosine over the N(N−1)N(N-1) ordered pairs of distinct points is at least −1/(N−1)-1/(N-1),4 so the points can’t all be far apart from each other. For N=4N=4 the floor is −1/3-1/3, and the regular tetrahedron puts every one of its pairs exactly on it.

There is another way to read S1=0S_1=0 that carries over to larger kk. Rotate the whole configuration about the origin and the vector ∑iei\sum_i e_i rotates with it. The only vector that stays put under every rotation is 00. So S1=0S_1=0 says the average position of the points doesn’t change when you rotate the configuration.

3.3 The same trick with a matrix

At k=2k=2, P2(t)=12(3t2−1)P_2(t)=\tfrac12(3t^2-1) involves t2t^2, and a squared inner product is a quadratic form in an outer product5: tij2=eiT(ejejT)eit_{ij}^2=e_i^{\mathsf T}(e_je_j^{\mathsf T})e_i. So where k=1k=1 added up the vectors eie_i, k=2k=2 adds up their outer products into the 3×33\times3 matrix M=∑i=1NeieiTM=\sum_{i=1}^{N}e_ie_i^{\mathsf T}, whose entries are Mab=∑i=1N(ei)a(ei)bM_{ab}=\sum_{i=1}^{N}(e_i)_a(e_i)_b. Its diagonal entry MaaM_{aa} is the total squared extent of the configuration along axis aa, and its trace is tr⁡M=∑i∥ei∥2=N\operatorname{tr}M=\sum_i\lVert e_i\rVert^2=N.

Step 1. Write ∑tij2\sum t_{ij}^2 in terms of MM:

∑i,jtij2=∑i,j(eiTej)(ejTei)=∑i,jeiT (ejejT) ei=∑i,jtr⁡[(ejejT)(eieiT)]=tr⁡[(∑jejejT)(∑ieieiT)]=tr⁡(M2).\begin{aligned} \sum_{i,j}t_{ij}^2 &= \sum_{i,j}(e_i^{\mathsf T}e_j)(e_j^{\mathsf T}e_i)\\ &= \sum_{i,j}e_i^{\mathsf T}\,(e_je_j^{\mathsf T})\,e_i\\ &= \sum_{i,j}\operatorname{tr}\bigl[(e_je_j^{\mathsf T})(e_ie_i^{\mathsf T})\bigr]\\ &= \operatorname{tr}\Bigl[\Bigl(\sum_{j}e_je_j^{\mathsf T}\Bigr)\Bigl(\sum_{i}e_ie_i^{\mathsf T}\Bigr)\Bigr]\\ &= \operatorname{tr}(M^2). \end{aligned}

Line 3 uses the identity vTBv=tr⁡(B vvT)v^{\mathsf T}Bv=\operatorname{tr}(B\,vv^{\mathsf T}).

Step 2. Put that into S2S_2. There are N2N^2 ordered pairs, and each contributes −12-\tfrac12:

S2=∑i,jP2(tij)=∑i,j3tij2−12=32∑i,jtij2−12N2=32tr⁡(M2)−12N2.\begin{aligned} S_2 &= \sum_{i,j}P_2(t_{ij}) = \sum_{i,j}\frac{3t_{ij}^2-1}{2}\\ &= \tfrac32\sum_{i,j}t_{ij}^2-\tfrac12N^2\\ &= \tfrac32\operatorname{tr}(M^2)-\tfrac12N^2. \end{aligned}

Step 3. Complete the square. The Frobenius norm of a matrix, ∥A∥F2=tr⁡(ATA)\lVert A\rVert_F^2=\operatorname{tr}(A^{\mathsf T}A), is the sum of its squared entries. Using that MM is symmetric, tr⁡M=N\operatorname{tr}M=N and tr⁡I=3\operatorname{tr}I=3:

∥M−N3I∥F2=tr⁡[(M−N3I)T(M−N3I)]=tr⁡[(M−N3I)2]=tr⁡(M2)−2N3tr⁡(M)+N29tr⁡(I)=tr⁡(M2)−2N23+N23=tr⁡(M2)−N23.\begin{aligned} \Bigl\lVert M-\tfrac N3I\Bigr\rVert_F^2 &= \operatorname{tr}\Bigl[\bigl(M-\tfrac N3I\bigr)^{\mathsf T}\bigl(M-\tfrac N3I\bigr)\Bigr] = \operatorname{tr}\Bigl[\bigl(M-\tfrac N3I\bigr)^2\Bigr]\\ &= \operatorname{tr}(M^2)-\tfrac{2N}{3}\operatorname{tr}(M)+\tfrac{N^2}{9}\operatorname{tr}(I)\\ &= \operatorname{tr}(M^2)-\tfrac{2N^2}{3}+\tfrac{N^2}{3}\\ &= \operatorname{tr}(M^2)-\tfrac{N^2}{3}. \end{aligned}

Step 4. Compare Steps 2 and 3:

S2=32(tr⁡(M2)−N23)=32∥M−N3I∥F2  ≥  0.\begin{aligned} S_2 &= \tfrac32\Bigl(\operatorname{tr}(M^2)-\tfrac{N^2}{3}\Bigr)\\ &= \tfrac32\Bigl\lVert M-\tfrac N3I\Bigr\rVert_F^2\;\ge\;0. \end{aligned}

This has the same shape as k=1k=1: a sum over all pairs turned into a squared length. It also has the same rotation reading. Rotating the configuration by a rotation RR turns MM into RMRTRMR^{\mathsf T}, and the only matrices that survive every rotation unchanged are multiples of the identity. So S2=0S_2=0 means M=N3IM=\tfrac N3I: the configuration extends equally far along every axis, with no preferred direction at second order.

Two examples we’ll keep using. For the icosahedron (N=12N=12), symmetry forces M=4I=123IM=4I=\tfrac{12}{3}I, so S2=0S_2=0. For the pentagonal bipyramid (N=7N=7), the ring contributes 52\tfrac52 along each of the two horizontal axes and the two poles contribute 22 along the vertical one, so M=diag⁡(52,52,2)M=\operatorname{diag}(\tfrac52,\tfrac52,2). That isn’t 73I\tfrac73I, and

S2=32(136+136+19)=14>0.S_2=\tfrac32\Bigl(\tfrac1{36}+\tfrac1{36}+\tfrac19\Bigr)=\tfrac14\gt 0.

In summary, we find familiar objects in φ1(x)=x\varphi_1(x)=x and φ2(x)=3/2 (xxT−13I)\varphi_2(x)=\sqrt{3/2}\,\bigl(xx^{\mathsf T}-\tfrac13I\bigr). For larger kk, the coordinates of φk\varphi_k are the degree-kk spherical harmonics, the sphere’s version of Fourier modes. If you’re familiar with kernels from machine learning: Pk(⟨x,y⟩)P_k(\langle x,y\rangle) is a positive-definite kernel and φk\varphi_k is its feature map.

kkfeature map φk(x)\varphi_k(x)lives inSk=∥∑iφk(ei)∥2S_k=\bigl\lVert\sum_i\varphi_k(e_i)\bigr\rVert^2Sk=0S_k=0 means
011R1\mathbb R^1N2N^2never happens
1xxR3\mathbb R^3∥∑iei∥2\lVert\sum_ie_i\rVert^2centre of mass at the origin
23/2 (xxT−13I)\sqrt{3/2}\,\bigl(xx^{\mathsf T}-\tfrac13I\bigr)R5\mathbb R^5 (traceless symmetric matrices)32∥M−N3I∥F2\tfrac32\lVert M-\tfrac N3I\rVert_F^2MM looks the same from every direction
kkdegree-kk spherical harmonicsR2k+1\mathbb R^{2k+1}∥∑iφk(ei)∥2\bigl\lVert\sum_i\varphi_k(e_i)\bigr\rVert^2degree-kk averages look rotation-invariant

Why k=0k=0 is special. The first row is the odd one out. The map φ0(x)=1\varphi_0(x)=1 gives every point the same one-dimensional feature, so S0=(1+1+⋯+1)2=N2S_0=(1+1+\dots+1)^2=N^2 for every configuration. It never changes and is never zero. Think of P0P_0 as the average level of a signal, like the constant offset of a sound wave, and of PkP_k for k≥1k\ge1 as the wiggles on top. The wiggle sums SkS_k depend on the configuration, are never negative, and are zero exactly when the configuration is balanced at that level. This difference is why the constant term a0a_0 gets special treatment in the next subsection.

A configuration with S1=⋯=Ss=0S_1=\dots=S_s=0 is called a spherical ss-design: averages of polynomials up to degree ss over its points match the averages over the whole sphere. Which SkS_k vanish for a given configuration will decide whether this method gives the exact answer. We’ll compare N=12N=12 and N=7N=7 in 3.5.

3.4 The polynomial program

Now combine the PkP_k into a polynomial h(t)=∑k=0dakPk(t)h(t)=\sum_{k=0}^{d}a_kP_k(t). Two rules:

  • ak≥0a_k\ge0 for every k≥1k\ge1. This makes hh a positive combination of things whose sums are non-negative.
  • h(t)≤f(t)h(t)\le f(t) for all t∈[−1,1)t\in[-1,1). This keeps hh below the energy curve.

Then for any configuration:

2E=∑i≠jf(tij)≥∑i≠jh(tij)since h≤f=∑i,jh(tij)−N h(1)add and subtract the N terms with i=j=∑k=0dakSk−N h(1)since h=∑kakPk=a0N2+∑k≥1akSk−N h(1)since S0=N2≥a0N2−N h(1)since ak≥0 and Sk≥0 for k≥1.\begin{aligned} 2E &= \sum_{i\ne j}f(t_{ij})\\ &\ge \sum_{i\ne j}h(t_{ij}) &&\text{since } h\le f\\ &= \sum_{i,j}h(t_{ij})-N\,h(1) &&\text{add and subtract the } N \text{ terms with } i=j\\ &= \sum_{k=0}^{d}a_kS_k-N\,h(1) &&\text{since } h=\textstyle\sum_k a_kP_k\\ &= a_0N^2+\sum_{k\ge1}a_kS_k-N\,h(1) &&\text{since } S_0=N^2\\ &\ge a_0N^2-N\,h(1) &&\text{since } a_k\ge0 \text{ and } S_k\ge0 \text{ for } k\ge1. \end{aligned}

The last line doesn’t mention the configuration at all, so it is a lower bound for every configuration at once. This is where P0P_0 is treated differently. The term a0S0=a0N2a_0S_0=a_0N^2 is known exactly, so we keep it. The terms akSka_kS_k with k≥1k\ge1 are unknown but non-negative, so we throw them away. That is why only a1,a2,…a_1,a_2,\dots need a sign condition: we never discard a0a_0‘s term, so there is no inequality for a sign to protect.

Every Pk(1)=1P_k(1)=1, so h(1)=a0+a1+⋯+adh(1)=a_0+a_1+\dots+a_d, and the bound simplifies to

E  ≥  12[N(N−1) a0−N∑k≥1ak].E\;\ge\;\tfrac12\Bigl[N(N-1)\,a_0-N\sum_{k\ge1}a_k\Bigr].

Each unit of a0a_0 earns N(N−1)/2N(N-1)/2 and each unit of aka_k with k≥1k\ge1 costs N/2N/2. So you want hh as high as the curve ff allows, using as few wiggles as possible. Finding the best such hh is a linear program in the coefficients, and the answer is usually called the LP bound.

Polynomial program

Variables: the coefficients a0,a1,…,ada_0,a_1,\dots,a_d.

Constraints: ak≥0a_k\ge0 for k≥1k\ge1, and ∑kakPk(t)≤f(t)\sum_ka_kP_k(t)\le f(t) everywhere on [−1,1)[-1,1).6

Maximise: 12[N(N−1)a0−N∑k≥1ak]\tfrac12\bigl[N(N-1)a_0-N\sum_{k\ge1}a_k\bigr].

Output: a proof. Any feasible hh gives a valid lower bound for every configuration, and checking it doesn’t require trusting the software that found it.

3.5 When is the bound exact?

For the bound to equal the energy of a particular configuration, both inequalities we used must be equalities for it:

  • Touching: h(t)=f(t)h(t)=f(t) at every angle tt that occurs in the configuration, so that hh meets ff from below at those points.
  • Balance: akSk=0a_kS_k=0 for every k≥1k\ge1, so Sk=0S_k=0 at every level where the polynomial has ak>0a_k\gt 0.

How many coefficients does touching take? Meeting ff from below at an interior angle forces the two curves to have the same height and the same slope there, which is two conditions. At the endpoint t=−1t=-1 only the height has to match, which is one. The icosahedron has three angles besides t=1t=1, namely −1-1 and ±1/5\pm1/\sqrt5, so touching costs 1+2+2=51+2+2=5 conditions. A degree-4 polynomial has exactly five coefficients, a0,…,a4a_0,\dots,a_4, so the touching polynomial is fully determined. Solving that system gives non-negative aka_k, and the resulting hh stays below ff everywhere. The icosahedron is also balanced at every level up to k=5k=5, so nothing the polynomial uses costs anything.

In general, mm touching angles mean up to 2m2m conditions, hence a polynomial of degree up to 2m−12m-1, hence balance needed up to level 2m−12m-1. This is why Cohn and Kumar’s sharp configurations are the ones with mm distinct angles that are also (2m−1)(2m-1)-designs. Every one of them gets an exact bound. On the sphere, those are exactly N=2,3,4,6,12N=2,3,4,6,12.

Both conditions hold for the icosahedron, so the bound equals its energy exactly. Call the difference between the true minimum energy and the best bound the gap; for the icosahedron it is zero.

Which balance sums vanish?

The icosahedron has Sk=0S_k=0 for k=1k=1 to 55, so a polynomial built from those levels pays nothing for imbalance. The pentagonal bipyramid is balanced only at k=1k=1 and 33. Its S2S_2 is 14\tfrac14 and its S4S_4 is about 15, so every unit of a2a_2 or a4a_4 costs it.

The best polynomial, measured against f
The icosahedron. The curve f − h reaches zero at all three of its angles (dashed lines): at −1, and tangentially at ±1/√5. Both inequalities in the derivation are equalities, so the bound equals the icosahedron's energy exactly.

The pentagonal bipyramid fails both conditions. Its angles are −1-1, cos⁡144∘\cos144^\circ, 00 and cos⁡72∘\cos72^\circ. No polynomial that obeys the rules can touch ff at all four of them and also avoid paying for imbalance, so the best one compromises. Its bound is about 14.40 against the true energy of about 14.45, a shortfall of 0.36%. Of the 0.052 gap, 0.027 comes from hh sitting below ff at the real angles, and 0.025 comes from the balance payments akSka_kS_k, mostly at k=2k=2.

3.6 The adversary program

The polynomial program never looks at the points themselves. It sees only the list of N(N−1)N(N-1) ordered-pair angles and the facts Sk≥0S_k\ge0. That suggests a mirror-image question. Suppose an adversary wants to beat our bound by proposing a list of angles, with no points behind it, that merely passes every balance test Sk≥0S_k\ge0. How low can the energy of such a list go?

Describe a list by a distribution μ\mu on [−1,1)[-1,1) that puts one unit of mass at the angle of each ordered pair. The NN terms with i=ji=j contribute NN to every SkS_k, so the test Sk≥0S_k\ge0 reads ∫Pk dμ≥−N\int P_k\,d\mu\ge-N.

Adversary program

Variables: a distribution μ≥0\mu\ge0 of angles on [−1,1)[-1,1), with total mass N(N−1)N(N-1).

Constraints: ∫Pk dμ≥−N\int P_k\,d\mu\ge-N for every k=1,…,dk=1,\dots,d, with the same degree dd as the polynomial program.

Minimise: the energy 12∫f dμ\tfrac12\int f\,d\mu.

Output: the lowest energy any angle list can have while passing every test. If no real configuration has that list, call it a fake.

These two programs are duals of each other. Every variable in one is a constraint in the other:

Adversary programPolynomial program
total mass N(N−1)N(N-1)the coefficient a0a_0
balance test at level kk: ∫Pk dμ≥−N\int P_k\,d\mu\ge-Nthe coefficient ak≥0a_k\ge0, the price of cheating at level kk
mass at angle tt must be ≥0\ge0h(t)≤f(t)h(t)\le f(t) at that angle
minimise the energy 12∫f dμ\tfrac12\int f\,d\mumaximise the bound 12[N(N−1)a0−N∑k≥1ak]\tfrac12\bigl[N(N-1)a_0-N\sum_{k\ge1}a_k\bigr]

If you write the adversary program with a Lagrange multiplier for each of its constraints, those multipliers are exactly a0a_0 and a1,a2,…a_1,a_2,\dots, and the polynomial program falls out.

Duality has two consequences. First, every polynomial gives a number below every adversary’s energy. That is the derivation from 3.4, applied to the adversary’s list instead of a real configuration’s. Second, the best polynomial and the best adversary meet.7 At the meeting point the two exactness conditions from 3.5 become optimality conditions: the adversary puts mass only at angles where hh touches ff, and ak>0a_k\gt 0 only at levels where the adversary’s test is tight, which means Sk=0S_k=0.

A real configuration is itself an adversary, because its own list of angles passes every test. So the bound is exact precisely when the real minimal configuration is also the best adversary. In that case there is no gap, and no fake beats the real thing.

Real configuration versus the adversary's best list
The adversary's best list is the icosahedron's own list: the same three angles, with the same number of pairs at each. No fake does better, so the best polynomial bound is exactly the icosahedron's energy.

That is the gap in concrete terms. For N=7N=7, the 0.052 is the energy the adversary saves with a list of angles that no seven points can have. Every improvement from here on is a new test that fakes fail and real configurations pass.

4. Three-point bounds and cuts

Section 3 ended with an adversary who beats the polynomial bound by proposing lists of angles that no real configuration could have. The polynomial program only sees pairs, so the adversary never has to make its angles fit together into triangles. Three points carry more structure than their three pair angles taken separately: given two of the angles, the third can’t be arbitrary. The three-point bound of Bachoc and Vallentin, adapted to energy by Cohn and Woo, adds some of those tests. Section 3 built the two-point bound from a squared length. This section builds the three-point bound from a squared length too, but one that lives at each point of the configuration separately.

This is the most technical part of the post. If you only want the story, skip to 4.4: the one thing to take from 4.1 to 4.3 is that triangles give the bound new tests, which shrink the room fakes have.

4.1 Looking from one point

Fix one point xx of the configuration and put it at the north pole. Every other point yy has a height u=⟨x,y⟩u=\langle x,y\rangle, the cosine of its angle from xx, and a bearing θy\theta_y, its longitude as seen from xx. The picture below lets you move two such points around.

Two points, seen from x
Here σ = θy − θz = 95°, so t = uv + √((1−u²)(1−v²))·cos σ = −0.46, somewhere in [−0.96, 0.14].

Dashed circles join points at the same height. In the strip, the shaded band is every value tt can take for the current heights, and the marker is where the two bearings put it.

Writing out coordinates, two other points y,zy,z with heights u,vu,v and bearings θy,θz\theta_y,\theta_z have these coordinates and this inner product:

y=(1−u2cos⁡θy, 1−u2sin⁡θy, u),z=(1−v2cos⁡θz, 1−v2sin⁡θz, v),t=⟨y,z⟩=uv+(1−u2)(1−v2) (cos⁡θycos⁡θz+sin⁡θysin⁡θz)=uv+(1−u2)(1−v2) cos⁡(θy−θz).\begin{aligned} y &= \bigl(\sqrt{1-u^2}\cos\theta_y,\ \sqrt{1-u^2}\sin\theta_y,\ u\bigr),\\ z &= \bigl(\sqrt{1-v^2}\cos\theta_z,\ \sqrt{1-v^2}\sin\theta_z,\ v\bigr),\\ t=\langle y,z\rangle &= uv+\sqrt{(1-u^2)(1-v^2)}\,\bigl(\cos\theta_y\cos\theta_z+\sin\theta_y\sin\theta_z\bigr)\\ &= uv+\sqrt{(1-u^2)(1-v^2)}\,\cos(\theta_y-\theta_z). \end{aligned}

Up to rotating or reflecting the sphere, a triple of points x,y,zx,y,z is determined by its three mutual inner products, u=⟨x,y⟩u=\langle x,y\rangle, v=⟨x,z⟩v=\langle x,z\rangle and t=⟨y,z⟩t=\langle y,z\rangle. We call (u,v,t)(u,v,t) the triple’s triangle type. It records the shape of the triangle the three points form, and the order in which we list the three numbers doesn’t matter. The three numbers can’t be chosen freely, though. Given uu and vv, the formula above forces tt into the interval uv±(1−u2)(1−v2)uv\pm\sqrt{(1-u^2)(1-v^2)}, and the bearing difference σ=θy−θz\sigma=\theta_y-\theta_z decides where in that interval it lands. So the triangle types that can occur fill a three-dimensional region, not the whole cube [−1,1]3[-1,1]^3. A list of pair angles never says which pairs share a point, so the adversary of 3.6 never had to fit its angles into real triangles. The three-point bound closes part of that loophole.

4.2 Fourier modes seen from one point

In section 3, positivity came from a sum of vectors: SkS_k was the squared length of ∑iφk(ei)\sum_i\varphi_k(e_i). Here we do the same thing around each base point xx. Seen from xx, every other point is just a height and a bearing, so the points form a pattern around a circle.

A pattern of bearings θy\theta_y has Fourier coefficients. The kk-th one, ∑yeikθy\sum_ye^{ik\theta_y}, is a complex number, which is a vector in the plane. For k=1k=1 it adds up the points’ directions, and for k=2k=2 it first doubles every bearing, and so on. Its squared length is non-negative, and expands as ∣∑yeikθy∣2=∑y,zcos⁡(k(θy−θz))≥0\bigl|\sum_ye^{ik\theta_y}\bigr|^2=\sum_{y,z}\cos\bigl(k(\theta_y-\theta_z)\bigr)\ge0. This is the circle version of the squared-length trick from 3.2.

So far every point’s bearing counts the same, whatever its height. But the three-point bound needs to see bearing and height together, because a triple’s inner products (u,v,t)(u,v,t) involve both. The squared-length argument gives us a way in, since it works for any weights. Give each point yy a weight W(uy)W(u_y) that depends only on its height uyu_y, and form the complex number ∑yW(uy) eikθy\sum_yW(u_y)\,e^{ik\theta_y}. Its squared length is non-negative whatever WW is. Every choice of WW gives its own non-negative quantity, and we want a whole family of them.

We build the family from polynomials, for two reasons:

  1. everything in the end has to be a polynomial in the inner products, because a semidefinite program can check polynomial inequalities.
  2. polynomials of higher degree can approximate richer weightings, so the degree of the certificate controls how many weightings it can use.

Concretely, take the weights Wa(u)=pa(u) (1−u2)k/2W_a(u)=p_a(u)\,(1-u^2)^{k/2} for a=0,1,2,…a=0,1,2,\dots. Here pap_a is the aa-th Legendre polynomial (any polynomial basis would do), and the extra factor (1−u2)k/2(1-u^2)^{k/2} gives no weight to a point at either pole, u=±1u=\pm1, where its bearing means nothing. It also keeps the algebra polynomial, as we’ll see. For k≥1k\ge1, the weight with a=0a=0 is positive away from the poles and largest at the equator. The weight with a=1a=1 counts points in the northern half positively and points in the southern half negatively. The weight with a=2a=2 gives points near the equator the opposite sign from points nearer the poles. For each level kk and weight number aa, attach to xx the complex number

wa(x)=∑ypa(uy) (1−uy2)k/2 eikθy.w_a(x)=\sum_{y}p_a(u_y)\,(1-u_y^2)^{k/2}\,e^{ik\theta_y}.

The sum runs over every point of the configuration, and xx itself drops out for k≥1k\ge1 because its height is 1. For k=1k=1 and a=0a=0, w0(x)w_0(x) is exactly the horizontal part of ∑yy\sum_yy, the vector from 3.2.

For example, consider our solution for N = 7, the pentagonal bipyramid, and stand at one of its poles. The picture shows what the other points look like from there, and the arrows that add up to w0(x)w_0(x) at each level kk.

The arrows behind w₀(x)
From the pole x, at level k = 1: |w0(x)|² = 0.

Left: the other points of the N = 7 minimal configuration, seen from above its pole xx. The opposite pole sits directly below xx with no bearing, so it drops out. Right: each point contributes an arrow of length (1−u2)k/2(1-u^2)^{k/2} pointing in direction kθk\theta. The arrows are laid end to end, and the thick line is their sum w0(x)w_0(x). Its squared length is never negative, and it is zero exactly when the arrows close up into a polygon.

Collect the numbers w0(x),w1(x),…w_0(x),w_1(x),\dots and form the matrix of their inner products. Here it is for three weights, with wˉ\bar w the complex conjugate:

Mk(x)=(Re⁡(w0wˉ0)Re⁡(w0wˉ1)Re⁡(w0wˉ2)Re⁡(w1wˉ0)Re⁡(w1wˉ1)Re⁡(w1wˉ2)Re⁡(w2wˉ0)Re⁡(w2wˉ1)Re⁡(w2wˉ2)).M_k(x)=\begin{pmatrix} \operatorname{Re}(w_0\bar w_0) & \operatorname{Re}(w_0\bar w_1) & \operatorname{Re}(w_0\bar w_2)\\ \operatorname{Re}(w_1\bar w_0) & \operatorname{Re}(w_1\bar w_1) & \operatorname{Re}(w_1\bar w_2)\\ \operatorname{Re}(w_2\bar w_0) & \operatorname{Re}(w_2\bar w_1) & \operatorname{Re}(w_2\bar w_2) \end{pmatrix}.

A matrix of inner products is always positive semidefinite, written ⪰0\succeq0, which means cTMc≥0c^{\mathsf T}Mc\ge0 for every real vector cc. The reason is the same as for a squared length being non-negative. For our matrix, cTMk(x) c=∣∑acawa(x)∣2≥0c^{\mathsf T}M_k(x)\,c=\bigl|\sum_ac_aw_a(x)\bigr|^2\ge0. Multiplying out, the bearings drop out: each entry of Mk(x)M_k(x) is a sum over pairs of points y,zy,z of a polynomial in the three inner products ⟨x,y⟩,⟨x,z⟩,⟨y,z⟩\langle x,y\rangle,\langle x,z\rangle,\langle y,z\rangle. Collect these polynomials into a matrix YkY_k, and add up over every choice of base point xx:

Mk=∑xMk(x)=∑x,y,zYk(⟨x,y⟩,⟨x,z⟩,⟨y,z⟩)  ⪰  0.M_k=\sum_{x}M_k(x)=\sum_{x,y,z}Y_k\bigl(\langle x,y\rangle,\langle x,z\rangle,\langle y,z\rangle\bigr)\;\succeq\;0.

The sum runs over all ordered triples, repeats included. A sum of positive semidefinite matrices is positive semidefinite, so Mk⪰0M_k\succeq0 for every configuration and every level kk.8 This is the three-point version of Sk≥0S_k\ge0.

In the polynomial program each SkS_k came with a weight ak≥0a_k\ge0; here each matrix MkM_k gets a matrix weight Fk⪰0F_k\succeq0, and tr⁡(FkMk)\operatorname{tr}(F_kM_k) plays the role of akSka_kS_k; setting every Fk=0F_k=0 gives back the polynomial program.

polynomial program (section 3)three-point program
the fact usedSk=∑Pk(tij)≥0S_k=\sum P_k(t_{ij})\ge0, a numberMk=∑Yk(u,v,t)⪰0M_k=\sum Y_k(u,v,t)\succeq0, a matrix
why it holdsa squared length, ∥∑φk(ei)∥2\lVert\sum\varphi_k(e_i)\rVert^2a matrix of inner products at each base point, summed over base points
unknowns of the certificateak≥0a_k\ge0Fk⪰0F_k\succeq0, together with the aka_k
used asakSk≥0a_kS_k\ge0tr⁡(FkMk)≥0\operatorname{tr}(F_kM_k)\ge0
fakes it rules outangle lists that fail Sk≥0S_k\ge0the same, plus lists of triangles that fail Mk⪰0M_k\succeq0 or fall outside the region
inequality to checkh(t)≤f(t)h(t)\le f(t), at each angle ttinequality (T) of 4.3, at each triangle type (u,v,t)(u,v,t)

4.3 The three-point program

The facts Mk⪰0M_k\succeq0 do the same job as Sk≥0S_k\ge0 did in 3.4. For any configuration, tr⁡(FkMk)≥0\operatorname{tr}(F_kM_k)\ge0, because the trace of a product of two positive semidefinite matrices is non-negative. So these terms can be added to an inequality for free and then thrown away, as before.

What ties the certificate to the energy is a per-triple inequality. A triple of points has an energy share, 13(f(u)+f(v)+f(t))\tfrac13\bigl(f(u)+f(v)+f(t)\bigr), the average of its three pair energies, where f(t)=1/2−2tf(t)=1/\sqrt{2-2t} is the energy curve from Lemma 1. Each pair of points lies in N−2N-2 triples, so adding the shares of all (N3)\binom{N}{3} triples gives N−23E\tfrac{N-2}{3}E.

On the certificate’s side, each triple gets a matching term R(u,v,t)R(u,v,t), assembled from pieces we have already met. The formula below is schematic: the repeated-point terms are real bookkeeping that we don’t spell out.

R(u,v,t)  =  (N−2)∑ktr⁡(Fk Yk(u,v,t))+13(g(u)+g(v)+g(t))+(terms for repeated points).\begin{aligned} R(u,v,t)\;=\;&(N-2)\sum_k\operatorname{tr}\bigl(F_k\,Y_k(u,v,t)\bigr)\\ &+\tfrac13\bigl(g(u)+g(v)+g(t)\bigr)\\ &+\text{(terms for repeated points)}. \end{aligned}
  • The first line is the matrices YkY_k of 4.2, weighted by FkF_k, just as aka_k weighted PkP_k in 3.4.
  • The second line is the wiggles of the polynomial from 3.4, with g(t)=∑j≥1ajPj(t)g(t)=\sum_{j\ge1}a_jP_j(t). The constant a0a_0 of 3.4 is absorbed into the bound ee.
  • The third line is the same bookkeeping as the i=ji=j terms in 3.4, for triples in which two points coincide.

Add RR up over the (N3)\binom{N}{3} distinct triples of a configuration. The repeated-point terms fill in the triples with repeated points that MkM_k and SjS_j include and (T) does not, and the pieces become a positive multiple of ∑ktr⁡(FkMk)+∑j≥1ajSj\sum_k\operatorname{tr}(F_kM_k)+\sum_{j\ge1}a_jS_j, which can’t be negative. So for a number ee that we hope is a lower bound, the requirement is

13(f(u)+f(v)+f(t))−e(N2)  ≥  R(u,v,t)for all triangle types.(T)\tfrac13\bigl(f(u)+f(v)+f(t)\bigr)-\frac{e}{\binom{N}{2}}\;\ge\;R(u,v,t)\qquad\text{for all triangle types}.\tag{T}

Sum (T) over the (N3)\binom{N}{3} triples of a configuration. The left side adds up to N−23(E−e)\tfrac{N-2}{3}(E-e), the right side to something non-negative, and so E≥eE\ge e.

There is one inequality (T) for every possible triangle type, which is infinitely many, but each is linear in the unknowns. Because the unknowns include positive semidefinite matrices, this is a semidefinite program (SDP) and not a linear one. To solve it in practice, sample a grid of triangle types, solve the resulting problem, find the triple where (T) fails worst, add it to the list, and repeat. The final certificate is then checked over the whole region in exact arithmetic. So the three-point bound keeps every test from section 3 and adds the matrix tests on top, which means the best three-point bound is never weaker than the best polynomial bound.

As in 3.5, the bound is exact for a configuration when two things hold. Inequality (T) must be an equality at every triangle type the configuration has, and tr⁡(FkMk)=0\operatorname{tr}(F_kM_k)=0 at every level the certificate uses. The triangle types of the minimal configuration play the role the angles played before. N = 7 and N = 8 have 5 each, and N = 9 and N = 10 have 12 each. The adversary of 3.6 now proposes a list of triangles instead of a list of angles. It has to pass the three-point tests as well, so it has fewer fakes available and the bound can only go up.

4.4 Cutting the space

The second tool is a case split. Suppose we only care about configurations in which every pair has its inner product in some range, such as “no pair closer than θ”. Then (T) only has to hold for triples whose three inner products all lie in that range. That is fewer constraints, so more certificates are allowed and the best bound can only go up. In the adversary’s picture the cut adds a constraint instead: its list must stay inside the range, which removes the fakes that lived outside it.

A cut also has to be paid for. A separate argument must show that any configuration breaking the cut has energy above the minimum. The proof then has two cases: either some pair breaks the cut, or none does and the restricted bound applies.

N = 7: a split on the smallest inner product

Hung splits on the smallest inner product, m=min⁡i≠jtijm=\min_{i\ne j}t_{ij}. If m≥−0.9m\ge-0.9, a single three-point bound clears E(P)E(P) with margin 3×10−43\times10^{-4}. Otherwise five slabs and a cap each get a typed three-point certificate. The cap m<−0.99m\lt -0.99 contains the minimal configuration, and a rigidity argument plus an exact second-order local-minimum theorem finish it. The triangle marks where the minimal configuration sits.

N = 8: a cut on the largest inner product

Tooby-Smith–Zughaid cut on the largest inner product, M=max⁡i≠jtijM=\max_{i\ne j}t_{ij}. A cheap bound first shows any configuration with E≤19.6753E\le19.6753 has M≤0.5373M\le0.5373, so no two points are close. On that restricted domain the three-point bound is exactly equal to the antiprism’s energy, and uniqueness comes from its equality case. The triangle marks where the minimal configuration sits.

The two proofs look different, but they run the same algorithm.

Branch and bound over inner products

  1. Branch. Cut configuration space by inequalities on inner products.
  2. Bound. On each piece, solve the three-point SDP with the domain restricted to that piece.
  3. Close. Every piece either has a bound above the minimum energy, or is a small neighbourhood of the minimal configuration, where a local argument applies.

For N = 7, Hung chose cuts on the most-antipodal pair, because the minimal configuration has an antipodal pair, its poles. For N = 8, Tooby-Smith and Zughaid chose a cut on the closest pair. Nothing in the method fixes the choice.

The local step at the end depends on how flat the energy is near the minimal configuration. At N = 7 the smallest nonzero eigenvalue of the Hessian (modulo rotations) is 0.0092, which makes the last step delicate. At N = 9 and 10 it is 0.144 and 0.096, 10 to 16 times larger.9

5. What the numbers say

Which N are close to provable? A natural guess is that the fewer distinct inner products a minimal configuration has, the fewer touching points hh needs, and so the smaller the gap. Comparing the two bounds across many N tests it.

Relative gap (E* − bound) / E*, log scale

Numbers beside the three-point points are the minimal configuration’s count of distinct inner products. Exact means the gap is below numerical precision. The triangle at N = 8 is the three-point bound combined with the cut from section 4.

The guess fails for the LP bound and mostly holds for the three-point bound.

  • In the N we tested, LP gaps track N, not symmetry. N = 5 has only 3 distinct inner products but the worst LP gap of all. Past the sharp cases, the relative LP gap shrinks fairly steadily with N, from about 10⁻³ near N = 10 to 2×10⁻⁴ at N = 32. N = 32’s small LP gap reflects its size, not its symmetry.
  • Three-point gaps track symmetry. The three-point bound is numerically tight at N = 5, in line with de Laat’s result for a related bound. At the symmetric N = 9 and 10 it shrinks the LP gap by a factor of 13 to 25. At the low-symmetry N = 11 and 13 it only roughly halves it, leaving relative gaps 10 to 25 times larger than at 9 and 10. N = 14 sits in between.

Working hypothesis

The LP bound only sees how many pairs sit at each angle, and its error depends mostly on N. The three-point bound also sees how triangles fit together, and that is where symmetry pays off: a minimal configuration with few distinct inner products and triangle types leaves fewer ways for a fake to undercut it. Cuts then remove the fakes that remain.

6. From one N to all N

A general proof for every N is out of reach. Nobody even knows the minimal configurations for large N except numerically, and even finding near-optimal configurations efficiently, for the closely related log energy, is Smale’s 7th problem. What does look reachable is making each N routine.

  • The bounds can always be made exact in principle. De Laat (2020) built a hierarchy of kk-point bounds and proved it becomes exact by level NN, though turning that into a finite, exactly checkable certificate is a separate problem. The practical question is whether low levels plus a few cuts suffice, and the data so far say yes for small symmetric N.
  • Automate the branching. Read off which fakes the SDP can’t exclude, choose the cut that removes them, and repeat, generating exact certificates for each piece. Then a new N costs compute, not an 18,000-line hand-built proof.
  • Reuse structure across N. N = 10, 12 and 14 are the same shape with ring size 4, 5 and 6. A proof with the ring size as a parameter could cover the family.

6.1 Next targets

NMinimal configurationWhy it looks promisingConcern
10capped square antiprismsingle local minimum; antipodal poles, so N = 7’s split applies; room of 6×10⁻³ at the cut; three-point relative gap 1.7×10⁻⁴optimum has no succinct closed form,10 so the local step needs a high-precision enclosure
9tricapped triangular prismsingle local minimum; best three-point gap among the open N tested; stiff Hessianno antipodal pair, and margins either side of a split are tiny (≈2×10⁻⁴), so it probably needs an exact bound like N = 8’s

6.2 Challenge: N = 32

Its conjectured minimal configuration, an icosahedron nested with its dual dodecahedron, is about as symmetric as 32 points can be: the full icosahedral group of 120 symmetries, with no free parameters.

N = 32

Icosahedron plus dodecahedron (12 + 20 points) open

N
32
Energy
412.261275
Distinct ⟨eᵢ,eⱼ⟩
11

The conjectured minimal configuration for N = 32: an icosahedron (12 points) with a dodecahedron (20 points) sitting over its faces. Both use exact coordinates.

The three-point bound barely improves on the polynomial bound there, and no cut we know of changes that. So the method above stops short, and something new is needed: a stronger bound, a better case split, or an argument we haven’t thought of.

6.3 Prove it to me

Our expectation is that N = 10 falls next, then N = 9, each with the machinery above: a three-point certificate, a few cuts, and an exact check of every piece. Apart from the theorems we cite, the bounds and gaps in this post come from floating-point solvers, and the gap between “our solver says it is nearly exact” and “Lean accepts it” is the whole difficulty.

Finally, our challenge to you, dear reader: produce an exact, machine-checkable certificate for N = 32 and we’ll write it up and credit you. We’re just as excited for N = 10 or N = 9, if you get there first - the exact Lean statements for all three are on Prove2Me, where any proof can be submitted and checked.

A failure is worth reporting too. If the method above breaks on N = 9 or 10, tell us where. The sharpest version of that failure, a fake that no cut removes, would be a real result in its own right.

Bibliography & Footnotes

  1. N. N. Andreev, An extremal property of the icosahedron, East J. Approx. 2 (1996), 459–462.
  2. C. Bachoc, F. Vallentin, New upper bounds for kissing numbers from semidefinite programming, J. Amer. Math. Soc. 21 (2008). arXiv:math/0608426
  3. H. Cohn, A. Kumar, Universally optimal distribution of points on spheres, J. Amer. Math. Soc. 20 (2007). arXiv:math/0607446
  4. H. Cohn, J. Woo, Three-point bounds for energy minimization, J. Amer. Math. Soc. 25 (2012). arXiv:1103.0485
  5. P. Delsarte, J. M. Goethals, J. J. Seidel, Spherical codes and designs, Geom. Dedicata 6 (1977), 363–388. doi:10.1007/BF03187604
  6. R. E. Schwartz, The five-electron case of Thomson’s problem, Exp. Math. 22 (2013). arXiv:1001.3702
  7. D. de Laat, Moment methods in energy minimization, Trans. Amer. Math. Soc. (2020). arXiv:1610.04905
  8. Kryvonos, Liehr, Taylor, Energy minimization for eight points on the sphere (2026). arXiv:2609.22077
  9. J. Tooby-Smith, A. Zughaid, Thomson-N-8-Warrant (2026). github.com/jstoobysmith/Thomson-N-8-Warrant
  10. V. A. Yudin, Minimum potential energy of a point system of charges, Diskret. Mat. 4 (1992), 115–121 (in Russian); English translation in Discrete Math. Appl. 3 (1993), 75–81.
  11. Thomson N = 7 Lean proof package, snapshot 2026-09-27. github.com/huwngtran/thomson-n7-lean

Footnotes

  1. We keep every point on the surface, but lose nothing by doing so: freeze every point but one; the energy that point feels at position xx is U(x)=∑j1/∥x−ej∥U(x)=\sum_j 1/\lVert x-e_j\rVert, a sum of shifted copies of 1/r1/r, which is harmonic in three dimensions. Harmonic functions have the mean-value property: the value at any point equals the average over any small sphere centred there. So UU can’t have a minimum inside the ball. Moving an interior point to wherever UU is lowest on the surface therefore lowers the energy, and repeating this for each interior point puts every point on the sphere. ↩

  2. N=1N = 1 has zero potential energy wherever you put the single electron. ↩

  3. These are the three regular polyhedra whose faces are all equilateral triangles. The other two regular polyhedra are not minimal. For N=8N = 8, rotating one square face of the cube by 45° gives the square antiprism, which has lower energy. For N=20N = 20, the dodecahedron is also beaten by a less symmetric configuration. ↩

  4. For N=2N=2 the floor is −1/(2−1)=−1-1/(2-1)=-1, and two antipodal points reach it exactly: t12=−1t_{12}=-1. So the bound already identifies the N=2N=2 answer. ↩

  5. The outer product of a column vector vv with itself is the matrix vvTvv^{\mathsf T}, whose (a,b)(a,b) entry is vavbv_av_b (it is sometimes called a dyad). Where the inner product vTwv^{\mathsf T}w collapses two vectors to one number, the outer product keeps every pairwise product of coordinates. The identity used here is uT(vvT)u=(uTv)2u^{\mathsf T}(vv^{\mathsf T})u=(u^{\mathsf T}v)^2: sandwiching an outer product between copies of uu gives the squared inner product. ↩

  6. The interval stops short of t=1t=1 because t=1t=1 would mean two points coincide, where f(t)=1/2−2tf(t)=1/\sqrt{2-2t} blows up. ↩

  7. This is the duality theorem of linear programming: when a linear program and its dual both have feasible solutions, their optimal values are equal. Strictly, these two programs have a constraint or a variable for every angle tt, which takes an infinite-dimensional version of the theorem. In practice both are solved on a fine grid of angles, which makes them ordinary finite linear programs. ↩

  8. Just as in 3.1, nothing is claimed about a single term: one triple’s matrix Yk(u,v,t)Y_k(u,v,t) is not positive semidefinite in general. Only the sum over the whole configuration is. ↩

  9. Take another look at our physics simulator for N=7N = 7: the flat energy landscape makes it settle noticeably more slowly than its neighbours. ↩

  10. By symmetry the configuration has one free parameter, the height ±h\pm h of the two squares, and the minimum sits at h≈0.42269h\approx0.42269. Every distance is a square root of a polynomial in hh and 1−h2\sqrt{1-h^2}, so the optimal hh is a root of a polynomial equation, but almost certainly one of high degree with no usable expression. A proof can’t write it down exactly, so it has to work with a certified interval known to contain it. ↩