# Atlas of full medial tire graphs with |A(T)| = 9

This note collects every full medial tire graph whose annular cycle `A(T)` has
nine vertices, generated exhaustively from the structural properties in
Definitions/Remarks 3.1–3.9 of `paper.tex`.

## What is being enumerated

A full medial tire graph of size `n = |A(T)|` is determined by:

- a tooth word in `{U, D}^n` — one up (`U`) or down (`D`) tooth per annular
  edge (Def. 3.4), with **at least three up teeth** (Rem. 3.6);
- a **non-crossing matching** of the down edges into *bites* — pairs of down
  teeth sharing an apex (Rem. 3.5, Def. 3.7); unmatched down teeth are
  singletons. The two annular edges of a bite must be **non-incident**
  (Def. 3.7): they share no annular vertex, so cyclically adjacent edges
  cannot pair;
- subject to the **bite-face condition** (Rem. 3.8): in `B(T) = A(T) + bite
  apexes`, every interior non-tooth face must contain `0` or `≥ 3`
  down-tooth apexes in its interior (equivalently, no face holds exactly one
  or two singleton down teeth).

Graphs are identified up to the dihedral symmetry of the annular cycle
(rotations and reflections), since these give isomorphic plane graphs.

## The atlas

![All full medial tire graphs with |A(T)| = 9](full_medial_tire_n9.png)

High-resolution vector copy: [`full_medial_tire_n9.pdf`](full_medial_tire_n9.pdf).
Full textual index: [`full_medial_tire_n9_index.txt`](full_medial_tire_n9_index.txt).

In each diagram the thick black ring is `A(T)`; **blue** outer apexes are up
teeth, **red** inner apexes are singleton down teeth, and a **dark-red** inner
apex with four spokes is a bite (its two paired annular edges). The label under
each diagram is the tooth word and the bite pairs (edge indices).

## Counts

There are **81** classes for `n = 9` (cf. `3:1, 4:1, 5:2, 6:6, 7:13, 8:36,
9:81` for `n = 3..9`, with the non-incidence stipulation in force). Breakdown
of the 81 classes:

| down teeth | classes |   | bites | classes |   | up teeth | classes |
|-----------:|--------:|---|------:|--------:|---|---------:|--------:|
| 0          | 1       |   | 0     | 35      |   | 3        | 23      |
| 2          | 3       |   | 1     | 35      |   | 4        | 29      |
| 3          | 7       |   | 2     | 8       |   | 5        | 18      |
| 4          | 18      |   | 3     | 3       |   | 6        | 7       |
| 5          | 29      |   |       |         |   | 7        | 3       |
| 6          | 23      |   |       |         |   | 9        | 1       |

46 of the 81 classes contain at least one bite. (Every singleton down tooth
must sit in a face holding `≥ 3` of them, so e.g. words with exactly one or two
down teeth only survive when those down teeth are paired into a bite — and now
only when the paired edges are non-incident, which is why the counts fall
sharply from the unrestricted `n = 9` total of 159.)

## Reproduce

```sh
# from this directory, using the repo .venv
../../../.venv/bin/python plot_full_medial_tire_n9.py        # figure + index
python full_medial_tire_generator.py --min-n 9 --max-n 9 --dedup --show 5
```

`full_medial_tire_generator.py` is the generator (`generate(n, dedup=True)`
yields `FullMedialTireGraph` objects); `plot_full_medial_tire_n9.py` draws the
atlas.
