Chapter 8 · Part IV — Matroids are linear spaces
A Matroid Walks Into a Fan
Take the vectors out of linear algebra and what remains — a matroid — still has a geometry: a fan in which the combinatorics is drawn, ray by ray.
Part II counted curves; the interlude did linear algebra. Part IV
puts the two together: what is a tropical linear space? The answer
is one of the cleanest in the subject — a matroid is a tropical
linear space, and its picture is a fan, the Bergman fan B(M).
A matroid is linear algebra with the vectors removed: a ground set
E = {0, …, n−1} and a family of bases (the would-be bases of a
vector configuration), governed by the basis-exchange axiom. Its
flats are the would-be subspaces (closed sets), its circuits the
minimal dependencies. Nothing in the definition mentions coordinates
— which is the point: some matroids come from no vector configuration
at all (a later chapter meets one), and tropical geometry believes
them anyway.
Prediction, in the book’s usual order: if a purely combinatorial object really is a geometric one, then independent definitions of its geometry, written down by different people for different reasons, should land on the same set — and the geometry should be able to see the combinatorics. Both predictions are checked below, in code.
8.1 Three definitions, one fan
The Bergman fan B(M) ⊂ R^n / R·1 of a rank-r matroid has three
descriptions, from three different papers, and the chapter program
proves them equal by computation — on random weights, all three
tests agree:
- Initial matroids (Ardila–Klivans; Fry’s thesis):
w ∈ B(M)iff the matroidM^wofw-maximal bases is loop-free — no element is in no maximum-weight basis. - Chains of flats: to a chain
∅ ⊊ F₁ ⊊ … ⊊ F_k ⊊ Eof flats assign the cone generated by the indicator vectorse_{F_i};B(M)is the union of these cones (mod the lineR·1). - Circuit hyperplanes:
w ∈ B(M)iff on every circuitC, the minimum ofwoverCis attained at least twice —wlies on every tropical hyperplane the circuits define.
Honest Box — sign conventions are where fan code goes to be wrong quietly. The literature splits between min-weight/negative-ray and max-weight/positive-ray conventions; they are negatives of each other, and each description pairs with exactly one circuit condition. The study’s first write-up paired the max convention with max-twice on circuits — the assertions killed it, and the code now determines the pairing computationally: with the max/positive convention used here, the circuit condition is min-twice. Let the assertions choose.
The agreement is not spot-checked on a few nice weights: for each
matroid below, the three tests are run on 300 random integer weights
(150 for U(3,5), whose fan membership is an LP per chain), and the
loop-free ⇔ circuit pair on 2000 more. They never disagree.
8.2 Three matroids, three fans
U(2,4) — the uniform matroid (every 2-subset a basis): 6 flats,
4 circuits. Its fan is 4 rays e_0, …, e_3 in R⁴/R·1: a tropical
line with 4 ends — Chapter 1’s tripod, with one more leg. Balanced
at the origin: Σ e_i = (1,1,1,1) ≡ 0 mod 1.
The parallel-pair matroid (rank 2 on 4 elements, with 0 ∥ 1 —
the pair {0,1} is a rank-1 flat): the fan has only 3 rays,
e_0+e_1, e_2, e_3, still balancing to (1,1,1,1). Merging two
parallel elements merged their rays. The fan remembers the
matroid: the face poset of the fan is the chain poset of the
flats, so a simple matroid can be read back off its fan’s shape.
U(3,4): 12 flats, 1 circuit ({0,1,2,3}). The fan is pure of
dimension r − 1 = 2, with 10 rays — one e_F for every proper
nonempty flat (e_i and e_i+e_j) — and 12 triangular 2-cones
cone(e_i, e_i+e_j): the fine subdivision of the 6 coarse cones
cone(e_i, e_j). Balanced at every ray, checked exactly. This is
the tropical plane, and Chapter 9 will do Hodge theory on its
Chow ring.
A fourth matroid, U(3,5) (17 flats, 5 circuits), runs as a larger
cross-check: the three descriptions agree there too, and its fan has
15 rays and 20 two-dimensional cones — the ray count is the number
of proper nonempty flats, as it is for every matroid here, and the
finishing pass read it off the re-run rather than trusting a draft.
| Matroid | rank | flats | circuits | rays of B(M) | dim |
|---|---|---|---|---|---|
U(2,4) | 2 | 6 | 4 | 4 | 1 |
| parallel pair | 2 | 5 | 3 | 3 | 1 |
U(3,4) | 3 | 12 | 1 | 10 | 2 |
U(3,5) | 3 | 17 | 5 | 15 | 2 |
Figure 8.1 — A: B(U(2,4)), four rays; B: the parallel-pair fan,
merged ray e_0+e_1 labelled; C: B(U(3,4)) in 3D, 4 singleton
rays + 6 pair rays, 12 triangles = the tropical plane. The ray
vectors drawn are read from the chapter program’s own summary, and
every count in every panel was asserted before rendering.
Figure 8.2 — The table above, drawn. Rays = proper nonempty flats
in every row (flats minus the empty flat and E itself); the
parallel pair, on the same ground set and rank as U(2,4), has
exactly one flat and one ray fewer — the merger, visible as a
missing bar segment.
8.3 The whole chapter, as a program
Everything in this chapter is one runnable program: ch08_matroids.py — self-contained apart from numpy/scipy. The assertions are the chapter’s claims: the flat/circuit/ray counts in the table of §8.2 (including U(3,5)’s 15 rays and 20 two-cones, and U(3,4)’s 12 fine cones subdividing exactly 6 coarse ones); purity dim = r − 1 for every matroid; triple agreement (chains-of-flats LP membership ⇔ M^w loop-free ⇔ circuit min-twice) on the sampled weights; balancing at the origin for the rank-2 fans and at every ray for U(3,4) and U(3,5); the parallel-pair ray merger (3 rays, the merged one e_0+e_1, with e_0 and e_1 absent as separate rays); and, asserted as the Try It answer key, B(U(2,5)) has 5 rays. Run it, and if it prints its final line, the claims are what we said they are. (This section used to print the listing inline; a screenful of code you can download is just a download with extra scrolling.)
8.4 Try It
- How many rays does
B(U(2,5))have? (Count its proper nonempty flats first.) - The parallel-pair fan has 3 rays, not 4. What single fact about the matroid does the missing ray record?
- What is the dimension of
B(U(3,4)), and which formula gives it?
Answers
- 1. 5.
U(2,5)has 7 flats — the empty set, the whole set, and the 5 singletons, which are exactly its proper nonempty flats, so the fan has 5 rays (a tropical line with 5 ends). The chapter program asserts this, triple agreement included. - 2. That
{0,1}is a single rank-1 flat: 0 and 1 are parallel — each closes to the same flat, so there is one raye_0+e_1where the uniform matroid has two. The fan’s ray set is the matroid’s rank-1 flats, mergers included. - 3. 2, by
dim B(M) = r − 1withr = 3: the fan is pure of dimension 2 — a plane’s worth of cones, which is why panel C of Figure 8.1 is a surface, not a tripod.
What we learned
- A matroid is a tropical linear space, three times over. The initial-matroid, chains-of-flats and circuit-hyperplane descriptions define the same fan — not as a cited theorem but as a computation that ran on thousands of sampled weights without a single disagreement.
- The fan remembers the matroid. Rays are proper nonempty flats; merging parallel elements merges rays; the face poset of the fan is the chain poset of the flats. Geometry here is not a picture of the combinatorics — it is the combinatorics, drawn.
- Fans are balanced. At the origin for the lines, at every ray
for the plane: the neighbouring cone generators sum to zero mod
the ray and the line
R·1— the same balancing condition as Chapter 1’s tripod, one dimension up.
Next
The Bergman fan of U(3,4) — the tropical plane of panel C — has a
Chow ring, and on that ring lives the mechanism behind June Huh’s
Fields Medal work: Chapter 9 computes A*(U(3,4)), recovers its
intersection numbers three independent ways, and verifies the
Hodge–Riemann relations exactly. Hodge theory, with no Hodge theory
underneath.
Source & provenance: Day 6 (2026-10-16) of the tropical geometry
study — code hidden_files/code/day06_matroids.py (run log
hidden_files/day06-run.log), figure
files/figures/day06-bergman-fans.png, study log Day 6 entry.
Sources: Ardila–Klivans / Fry arXiv:1910.00627; chains of flats
arXiv:1010.3967; circuit tropical hyperplanes arXiv:1901.06893;
Huh hook: the Chow ring of this fan is Chapter 9’s subject (Baker,
arXiv:1705.07960). The chapter program was re-run end-to-end on
2026-11-05 while finishing this chapter: all assertions passed,
including the table’s counts, the U(3,5) ray count of 15 read off
that re-run, and the U(2,5) Try It count. Figures regenerated as
SVG the same day: code hidden_files/code/ch08_extra_figures.py,
which re-runs the chapter program, asserts every value it draws
(the ray vectors themselves are read from the program’s summary),
and only then renders.
Chapter code
The full program behind this chapter, as a download: ch08_matroids.py — the same file §8.3 points at. Its assertions are the chapter’s claims; run it.