In 1981, the mathematician Morwen Thistlethwaite realised: rather than directly solving G, decompose it into a chain of four nested subgroups, each phase solving one constraint at a time:
Each step "patches" one defect:
G → G₁: orient edges (EO = 0).
G₁ → G₂: orient corners (CO = 0) and bring UD-slice edges home.
G₂ → G₃: corners and edges in their G₃-orbits.
G₃ → G₄: finish using only half-turns.
Thistlethwaite originally bounded each phase at 7 / 13 / 15 / 17 moves, totalling 52 moves for any state. Kociemba later collapsed this into a 2-phase chain G → G₁ → {e}, each phase ≤ 12 moves, total ≤ 24. This is the famous two-phase algorithm behind every modern fast solver.
Climb from G down to {e} through four fixed subgroups. Input an alg, see what depth its state is "inside".
Each Thistlethwaite step's quotient size equals the number of states to look up at that phase. These numbers directly drive a solver's memory footprint:
Kociemba consolidated this 4-phase chain into a 2-phase one: G → G_1 → {e}, with quotient sizes 2 × 10⁹ and 1.95 × 10¹⁰. The two pruning tables fit in ~100 MB, and solve any state in milliseconds (typically ≤ 24 moves). Every cube app (Cube Explorer, csTimer's built-in solver, ...) is powered by this structure.
The Thistlethwaite solver's key idea: map cube states to cosets, ignoring the fine structure within a coset. Each phase moves to the next (smaller) coset until reaching G_4 = {e}. Cosets are the trick that turns an exponential problem into a polynomial one.
The most basic theorem in group theory says: any subgroup's order must divide 4.3 × 10¹⁹. So ⟨R, U⟩ has order 73,483,200 | |G|, ⟨U⟩ has order 4 | |G|, |G_3| = 663,552 | |G| — all automatic.
For each phase, the number of states (cosets) and the BFS diameter on that coset graph:
| Phase | Coset size | Diameter (HTM) | Coordinate |
|---|---|---|---|
| 2¹¹ = 2,048 | 7 | 12-edge orientation (11 free) | |
| 3⁷ · = 2187 · 495 = 1,082,565 | 10 | 7-corner orient. + UD-slice edge placement | |
| 29,400 | 13 | corners and edges into 4-orbits | |
| 663,552 | 15 | half-turn-only "domino" group | |
| Total upper bound | 7 + 10 + 13 + 15 = 45 | original 1981 Thistlethwaite gave 52; later refined | |
Reid (1995) tightened the upper bound to ≤ 52 HTM (matching Thistlethwaite's original); Korf's later experiments showed ≤ 38 empirically. Rokicki (2010) then merged "G → G₂ direct search" — described in §11 — to drive the worst case to exactly 20.
Thistlethwaite used 4 stages because each coset table had to fit into 1980s RAM (≤ 10⁶). Kociemba (1990s) noticed that the combined jump has
By Lagrange, , so — matching the known value. IDA* with a ~2 GB pruning table searches G → G₂, then BFS finishes within G₂ — the modern two-phase solver (Kociemba 1992; Reid's cube20 refinements). Average ~21 HTM, worst case 20.