coloring_nested_tire_graphs: S_3-orbit decomposition of step-2 intersections

Adds orbit_decomposition note + script answering: do structurally
different (T_1, T_2) pairs share the same canonical orbits in
S_1 ∩ S_2?

Findings across the 23 step-2 pairs:

1. EVERY intersection is closed under S_3 color permutation
   (structural sanity check, follows from color-symmetry of
   proper edge 3-coloring).

2. EVERY S_3-orbit has size exactly 6, with one exception: the
   constant orbit {(c,c,c,c) : c ∈ {1,2,3}} of size 3 at γ=4,
   T_1=T_2=(4,-,SR).  So |S_1 ∩ S_2| = 6 × (# S_3-orbits) almost
   always.

3. The RAINBOW orbit (a,b,c,b,c,a) at γ=6 appears in 3 different
   (T_1, T_2) pairs -- all with T_1 = (6, (0,3), SP).  The two-
   chord SP tire (6, (0,2)(3,5), SP) never produces the rainbow
   orbit.  So rainbow is associated with the antipodal-chord
   topology, not the pair as a whole.

4. Other canonical orbits recur across structurally different
   pairs.  E.g. (1,2,1,3) at γ=4 appears in 7 of 12 tested
   γ=4 pairs.

This upgrades the step-2 finding: the intersection isn't just
non-empty -- it has full S_3-symmetric structure, contains at
least one size-6 orbit in essentially all cases, and shares
canonical orbits across varied (T_1, T_2) pairings.

Files:
  experiments/orbit_decomposition.py
  experiments/orbit_decomposition_data.txt
  notes/orbit_decomposition.tex (3 pages)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-26 03:18:25 -04:00
parent 8dd9d537f9
commit 030ca67afb
6 changed files with 854 additions and 0 deletions
@@ -0,0 +1,171 @@
"""Decompose S_1 ∩ S_2 into S_3-orbits for each (T_1, T_2) pair in step-2.
Question: for structurally different (T_1, T_2) sharing γ, does the same
canonical orbit show up across pairs, or is each intersection a different
orbit? Are intersections always unions of complete S_3-orbits?
"""
from itertools import permutations
from tire_fiber_step2 import (
CASES,
project_T1_D,
project_T2_U,
intersect_with_reflection,
fmt_cfg,
)
def s3_orbit(sigma):
"""Return the S_3 orbit of sigma under color permutations.
Acts on each entry of sigma by pi : {1,2,3} -> {1,2,3}, generating
up to 6 elements (fewer if sigma has fewer than 3 distinct colors).
"""
orbit = set()
for pi in permutations([1, 2, 3]):
# pi is a permutation of (1,2,3); color c maps to pi[c-1]
mapped = tuple(pi[c - 1] for c in sigma)
orbit.add(mapped)
return orbit
def cyclic_rotations(sigma):
"""Cyclic rotations of sigma, as a set."""
n = len(sigma)
return {tuple(sigma[(i + k) % n] for i in range(n)) for k in range(n)}
def canonical_orbit_rep(sigma):
"""Return a canonical representative of sigma's combined orbit under
S_3 color action AND cyclic rotation of positions: the lexicographically
smallest element of (S_3 cyclic) closure."""
closure = set()
for pi in permutations([1, 2, 3]):
for k in range(len(sigma)):
rot = tuple(pi[sigma[(i + k) % len(sigma)] - 1] for i in range(len(sigma)))
closure.add(rot)
return min(closure)
def decompose_into_s3_orbits(S):
"""Decompose set S into S_3-orbits (color permutation, NOT cyclic).
Returns dict {canonical_rep -> list of all elements in that orbit}."""
orbits = {}
seen = set()
for sigma in sorted(S):
if sigma in seen:
continue
orb = s3_orbit(sigma)
orb_in_S = orb & S
rep = min(orb_in_S)
orbits[rep] = sorted(orb_in_S)
seen |= orb_in_S
return orbits
def decompose_into_combined_orbits(S):
"""Decompose into orbits under S_3 color action AND cyclic position
rotation. Returns dict {canonical_rep -> elements}."""
orbits = {}
seen = set()
for sigma in sorted(S):
if sigma in seen:
continue
closure = set()
for pi in permutations([1, 2, 3]):
for k in range(len(sigma)):
rot = tuple(pi[sigma[(i + k) % len(sigma)] - 1]
for i in range(len(sigma)))
closure.add(rot)
in_S = closure & S
rep = min(in_S)
orbits[rep] = sorted(in_S)
seen |= in_S
return orbits
def is_complete_s3_closed(S):
"""Check if S is closed under S_3 color permutations."""
for sigma in S:
for tau in s3_orbit(sigma):
if tau not in S:
return False
return True
def main():
rep_to_pairs = {} # canonical rep -> list of (T1, T2) pairs in which it appears
pair_to_orbits = [] # list of (T1, T2, orbits_dict)
print(f"{'γ':>2} {'T1':<32s} {'T2':<32s} "
f"{'|S1∩S2|':>7s} {'S3-closed?':>10s} "
f"{'#S3-orbits':>10s} {'orbit sizes':>15s}")
print("-" * 120)
for gamma, t1, t2 in CASES:
m_1, ch1, model1 = t1
k_2, ch2, model2 = t2
S1 = project_T1_D(gamma, m_1, ch1, model1)
S2 = project_T2_U(gamma, k_2, ch2, model2)
forward, reverse = intersect_with_reflection(S1, S2)
# use the larger of forward, reverse for analysis (typically same)
S = forward if len(forward) >= len(reverse) else reverse
if not S:
continue
closed = is_complete_s3_closed(S)
orbits = decompose_into_s3_orbits(S)
orbit_sizes = sorted(len(o) for o in orbits.values())
# Combined orbits (S_3 + cyclic) -- to identify canonical patterns
combined = decompose_into_combined_orbits(S)
for rep in combined:
rep_to_pairs.setdefault(rep, []).append(
(gamma, fmt_cfg(m_1, ch1, model1), fmt_cfg(k_2, ch2, model2))
)
pair_to_orbits.append((gamma, t1, t2, orbits, combined))
print(
f"{gamma:>2} {fmt_cfg(m_1, ch1, model1):<32s} "
f"{fmt_cfg(k_2, ch2, model2):<32s} "
f"{len(S):>7d} {('yes' if closed else 'NO'):>10s} "
f"{len(orbits):>10d} {str(orbit_sizes):>15s}"
)
print("-" * 120)
print()
print("=== Combined (S_3 + cyclic) orbit canonical representatives ===")
print(" Showing canonical rep, orbit size, and which (T_1, T_2) pairs contain it.")
print()
for rep, pairs in sorted(rep_to_pairs.items(),
key=lambda kv: (-len(kv[1]), kv[0])):
# Compute full combined orbit size
closure = set()
for pi in permutations([1, 2, 3]):
for k in range(len(rep)):
rot = tuple(pi[rep[(i + k) % len(rep)] - 1]
for i in range(len(rep)))
closure.add(rot)
print(f" rep {rep} |orbit| = {len(closure)} appears in {len(pairs)} pair(s):")
for g, t1s, t2s in pairs:
print(f" γ={g} T_1={t1s} T_2={t2s}")
# Highlight the rainbow rep
print()
print("=== Rainbow pattern check ===")
rainbow_reps = []
for rep in rep_to_pairs:
if len(rep) == 6:
# Check if pattern is (a,b,c,b,c,a)
a, b, c = rep[0], rep[1], rep[2]
if (rep == (a, b, c, b, c, a)
and len({a, b, c}) == 3):
rainbow_reps.append(rep)
print(f"Found {len(rainbow_reps)} canonical reps matching (a,b,c,b,c,a) pattern:")
for rep in rainbow_reps:
n = len(rep_to_pairs[rep])
print(f" {rep} appears in {n} pair(s)")
if __name__ == '__main__':
main()
@@ -0,0 +1,177 @@
γ T1 T2 |S1∩S2| S3-closed? #S3-orbits orbit sizes
------------------------------------------------------------------------------------------------------------------------
3 (3, —, SR) (3, —, SR) 27 yes 5 [3, 6, 6, 6, 6]
3 (3, —, SR) (4, [(0, 2)], SP) 24 yes 4 [6, 6, 6, 6]
3 (3, —, SP) (3, —, SP) 6 yes 1 [6]
3 (3, —, SP) (4, [(0, 2)], SP) 6 yes 1 [6]
4 (4, —, SR) (4, —, SR) 81 yes 14 [3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6]
4 (4, [(0, 2)], SP) (4, [(0, 2)], SP) 36 yes 6 [6, 6, 6, 6, 6, 6]
4 (4, [(0, 2)], SP) (4, —, SR) 36 yes 6 [6, 6, 6, 6, 6, 6]
4 (4, —, SR) (4, [(0, 2)], SP) 54 yes 9 [6, 6, 6, 6, 6, 6, 6, 6, 6]
4 (3, [(0, 2)], SP) (4, [(0, 2)], SP) 36 yes 6 [6, 6, 6, 6, 6, 6]
4 (4, [(0, 2)], SP) (5, [(0, 2)], SP) 12 yes 2 [6, 6]
4 (4, [(0, 2)], SP) (6, [(0, 3)], SP) 6 yes 1 [6]
4 (4, [(0, 2)], SP) (6, [(0, 2), (3, 5)], SP) 36 yes 6 [6, 6, 6, 6, 6, 6]
5 (5, [(0, 2)], SP) (3, —, SR) 18 yes 3 [6, 6, 6]
5 (5, [(0, 2)], SP) (5, [(0, 2)], SP) 36 yes 6 [6, 6, 6, 6, 6, 6]
5 (5, [(0, 2)], SP) (5, [(0, 3)], SP) 36 yes 6 [6, 6, 6, 6, 6, 6]
5 (5, [(0, 3)], SP) (5, [(0, 3)], SP) 36 yes 6 [6, 6, 6, 6, 6, 6]
5 (5, [(0, 2)], SR) (5, [(0, 2)], SP) 90 yes 15 [6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6]
6 (6, [(0, 3)], SP) (6, [(0, 3)], SP) 36 yes 6 [6, 6, 6, 6, 6, 6]
6 (6, [(0, 3)], SP) (6, [(0, 2), (3, 5)], SP) 36 yes 6 [6, 6, 6, 6, 6, 6]
6 (6, [(0, 2), (3, 5)], SP) (6, [(0, 2), (3, 5)], SP) 216 yes 36 [6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6]
6 (6, [(0, 3)], SP) (3, —, SR) 6 yes 1 [6]
6 (6, [(0, 2), (3, 5)], SP) (3, —, SR) 108 yes 18 [6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6]
6 (6, [(0, 2), (3, 5)], SP) (4, [(0, 2)], SP) 108 yes 18 [6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6]
------------------------------------------------------------------------------------------------------------------------
=== Combined (S_3 + cyclic) orbit canonical representatives ===
Showing canonical rep, orbit size, and which (T_1, T_2) pairs contain it.
rep (1, 2, 1, 3) |orbit| = 12 appears in 7 pair(s):
γ=4 T_1=(4, —, SR) T_2=(4, —, SR)
γ=4 T_1=(4, [(0, 2)], SP) T_2=(4, [(0, 2)], SP)
γ=4 T_1=(4, [(0, 2)], SP) T_2=(4, —, SR)
γ=4 T_1=(4, —, SR) T_2=(4, [(0, 2)], SP)
γ=4 T_1=(3, [(0, 2)], SP) T_2=(4, [(0, 2)], SP)
γ=4 T_1=(4, [(0, 2)], SP) T_2=(5, [(0, 2)], SP)
γ=4 T_1=(4, [(0, 2)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
rep (1, 2, 1, 2) |orbit| = 6 appears in 6 pair(s):
γ=4 T_1=(4, —, SR) T_2=(4, —, SR)
γ=4 T_1=(4, [(0, 2)], SP) T_2=(4, [(0, 2)], SP)
γ=4 T_1=(4, [(0, 2)], SP) T_2=(4, —, SR)
γ=4 T_1=(4, —, SR) T_2=(4, [(0, 2)], SP)
γ=4 T_1=(3, [(0, 2)], SP) T_2=(4, [(0, 2)], SP)
γ=4 T_1=(4, [(0, 2)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
rep (1, 2, 2, 1) |orbit| = 12 appears in 5 pair(s):
γ=4 T_1=(4, [(0, 2)], SP) T_2=(4, [(0, 2)], SP)
γ=4 T_1=(4, [(0, 2)], SP) T_2=(4, —, SR)
γ=4 T_1=(3, [(0, 2)], SP) T_2=(4, [(0, 2)], SP)
γ=4 T_1=(4, [(0, 2)], SP) T_2=(6, [(0, 3)], SP)
γ=4 T_1=(4, [(0, 2)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
rep (1, 2, 2, 3) |orbit| = 24 appears in 5 pair(s):
γ=4 T_1=(4, [(0, 2)], SP) T_2=(4, [(0, 2)], SP)
γ=4 T_1=(4, [(0, 2)], SP) T_2=(4, —, SR)
γ=4 T_1=(3, [(0, 2)], SP) T_2=(4, [(0, 2)], SP)
γ=4 T_1=(4, [(0, 2)], SP) T_2=(5, [(0, 2)], SP)
γ=4 T_1=(4, [(0, 2)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
rep (1, 2, 3) |orbit| = 6 appears in 4 pair(s):
γ=3 T_1=(3, —, SR) T_2=(3, —, SR)
γ=3 T_1=(3, —, SR) T_2=(4, [(0, 2)], SP)
γ=3 T_1=(3, —, SP) T_2=(3, —, SP)
γ=3 T_1=(3, —, SP) T_2=(4, [(0, 2)], SP)
rep (1, 2, 1, 1, 3, 2) |orbit| = 36 appears in 3 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(3, —, SR)
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(4, [(0, 2)], SP)
rep (1, 2, 1, 1, 3, 3) |orbit| = 36 appears in 3 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(3, —, SR)
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(4, [(0, 2)], SP)
rep (1, 2, 1, 2, 1, 2) |orbit| = 6 appears in 3 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(3, —, SR)
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(4, [(0, 2)], SP)
rep (1, 2, 1, 2, 3) |orbit| = 30 appears in 3 pair(s):
γ=5 T_1=(5, [(0, 2)], SP) T_2=(5, [(0, 2)], SP)
γ=5 T_1=(5, [(0, 2)], SP) T_2=(5, [(0, 3)], SP)
γ=5 T_1=(5, [(0, 2)], SR) T_2=(5, [(0, 2)], SP)
rep (1, 2, 2, 1, 3) |orbit| = 30 appears in 3 pair(s):
γ=5 T_1=(5, [(0, 2)], SP) T_2=(3, —, SR)
γ=5 T_1=(5, [(0, 2)], SP) T_2=(5, [(0, 2)], SP)
γ=5 T_1=(5, [(0, 2)], SP) T_2=(5, [(0, 3)], SP)
rep (1, 2, 2, 2, 3, 1) |orbit| = 36 appears in 3 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(3, —, SR)
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(4, [(0, 2)], SP)
rep (1, 2, 2, 2, 3, 3) |orbit| = 36 appears in 3 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(3, —, SR)
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(4, [(0, 2)], SP)
rep (1, 2, 3, 1, 3, 2) |orbit| = 18 appears in 3 pair(s):
γ=6 T_1=(6, [(0, 3)], SP) T_2=(6, [(0, 3)], SP)
γ=6 T_1=(6, [(0, 3)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(4, [(0, 2)], SP)
rep (1, 2, 3, 2, 3, 1) |orbit| = 36 appears in 3 pair(s):
γ=6 T_1=(6, [(0, 3)], SP) T_2=(6, [(0, 3)], SP)
γ=6 T_1=(6, [(0, 3)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
γ=6 T_1=(6, [(0, 3)], SP) T_2=(3, —, SR)
rep (1, 1, 2) |orbit| = 18 appears in 2 pair(s):
γ=3 T_1=(3, —, SR) T_2=(3, —, SR)
γ=3 T_1=(3, —, SR) T_2=(4, [(0, 2)], SP)
rep (1, 1, 2, 2) |orbit| = 12 appears in 2 pair(s):
γ=4 T_1=(4, —, SR) T_2=(4, —, SR)
γ=4 T_1=(4, —, SR) T_2=(4, [(0, 2)], SP)
rep (1, 1, 2, 3) |orbit| = 24 appears in 2 pair(s):
γ=4 T_1=(4, —, SR) T_2=(4, —, SR)
γ=4 T_1=(4, —, SR) T_2=(4, [(0, 2)], SP)
rep (1, 2, 1, 1, 2, 2) |orbit| = 36 appears in 2 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(3, —, SR)
rep (1, 2, 1, 2, 1, 3) |orbit| = 36 appears in 2 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(3, —, SR)
rep (1, 2, 1, 2, 3, 3) |orbit| = 36 appears in 2 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(4, [(0, 2)], SP)
rep (1, 2, 1, 3, 2, 2) |orbit| = 36 appears in 2 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(3, —, SR)
rep (1, 2, 2, 1, 2, 3) |orbit| = 36 appears in 2 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(4, [(0, 2)], SP)
rep (1, 2, 2, 1, 3, 3) |orbit| = 18 appears in 2 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(4, [(0, 2)], SP)
rep (1, 2, 2, 3, 1) |orbit| = 30 appears in 2 pair(s):
γ=5 T_1=(5, [(0, 2)], SP) T_2=(5, [(0, 2)], SP)
γ=5 T_1=(5, [(0, 2)], SP) T_2=(5, [(0, 3)], SP)
rep (1, 2, 2, 3, 2, 1) |orbit| = 36 appears in 2 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(4, [(0, 2)], SP)
rep (1, 2, 3, 1, 2, 3) |orbit| = 6 appears in 2 pair(s):
γ=6 T_1=(6, [(0, 3)], SP) T_2=(6, [(0, 3)], SP)
γ=6 T_1=(6, [(0, 3)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
rep (1, 2, 3, 3, 2, 1) |orbit| = 18 appears in 2 pair(s):
γ=6 T_1=(6, [(0, 3)], SP) T_2=(6, [(0, 3)], SP)
γ=6 T_1=(6, [(0, 3)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
rep (1, 1, 1) |orbit| = 3 appears in 1 pair(s):
γ=3 T_1=(3, —, SR) T_2=(3, —, SR)
rep (1, 1, 1, 1) |orbit| = 3 appears in 1 pair(s):
γ=4 T_1=(4, —, SR) T_2=(4, —, SR)
rep (1, 1, 1, 2) |orbit| = 24 appears in 1 pair(s):
γ=4 T_1=(4, —, SR) T_2=(4, —, SR)
rep (1, 1, 2, 2, 3) |orbit| = 30 appears in 1 pair(s):
γ=5 T_1=(5, [(0, 2)], SR) T_2=(5, [(0, 2)], SP)
rep (1, 1, 2, 3, 2) |orbit| = 30 appears in 1 pair(s):
γ=5 T_1=(5, [(0, 2)], SR) T_2=(5, [(0, 2)], SP)
rep (1, 2, 1, 1, 2, 3) |orbit| = 36 appears in 1 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
rep (1, 2, 1, 2, 3, 2) |orbit| = 36 appears in 1 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(4, [(0, 2)], SP)
rep (1, 2, 1, 3, 2) |orbit| = 30 appears in 1 pair(s):
γ=5 T_1=(5, [(0, 2)], SP) T_2=(3, —, SR)
rep (1, 2, 1, 3, 2, 3) |orbit| = 18 appears in 1 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
rep (1, 2, 2, 1, 2, 1) |orbit| = 36 appears in 1 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(4, [(0, 2)], SP)
rep (1, 2, 2, 2, 1, 1) |orbit| = 18 appears in 1 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
rep (1, 2, 2, 2, 1, 3) |orbit| = 36 appears in 1 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(6, [(0, 2), (3, 5)], SP)
rep (1, 2, 2, 3, 1, 3) |orbit| = 36 appears in 1 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(3, —, SR)
rep (1, 2, 2, 3, 2, 3) |orbit| = 36 appears in 1 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(4, [(0, 2)], SP)
rep (1, 2, 3, 1, 2) |orbit| = 30 appears in 1 pair(s):
γ=5 T_1=(5, [(0, 3)], SP) T_2=(5, [(0, 3)], SP)
rep (1, 2, 3, 2, 1) |orbit| = 30 appears in 1 pair(s):
γ=5 T_1=(5, [(0, 3)], SP) T_2=(5, [(0, 3)], SP)
rep (1, 2, 3, 3, 1) |orbit| = 30 appears in 1 pair(s):
γ=5 T_1=(5, [(0, 3)], SP) T_2=(5, [(0, 3)], SP)
rep (1, 2, 3, 3, 2, 2) |orbit| = 36 appears in 1 pair(s):
γ=6 T_1=(6, [(0, 2), (3, 5)], SP) T_2=(3, —, SR)
=== Rainbow pattern check ===
Found 1 canonical reps matching (a,b,c,b,c,a) pattern:
(1, 2, 3, 2, 3, 1) appears in 3 pair(s)
@@ -0,0 +1,6 @@
\relax
\newlabel{obs:s3-closed}{{}{1}}
\newlabel{obs:orbit-sizes}{{}{1}}
\newlabel{obs:rainbow-source}{{}{2}}
\newlabel{obs:universal-orbits}{{}{2}}
\gdef \@abspage@last{3}
@@ -0,0 +1,332 @@
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 26 MAY 2026 03:18
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
**orbit_decomposition.tex
(./orbit_decomposition.tex
LaTeX2e <2021-11-15> patch level 1
L3 programming layer <2022-02-24>
(/usr/local/texlive/2022/texmf-dist/tex/latex/base/article.cls
Document Class: article 2021/10/04 v1.4n Standard LaTeX document class
(/usr/local/texlive/2022/texmf-dist/tex/latex/base/size11.clo
File: size11.clo 2021/10/04 v1.4n Standard LaTeX file (size option)
)
\c@part=\count185
\c@section=\count186
\c@subsection=\count187
\c@subsubsection=\count188
\c@paragraph=\count189
\c@subparagraph=\count190
\c@figure=\count191
\c@table=\count192
\abovecaptionskip=\skip47
\belowcaptionskip=\skip48
\bibindent=\dimen138
)
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsmath.sty
Package: amsmath 2021/10/15 v2.17l AMS math features
\@mathmargin=\skip49
For additional information on amsmath, use the `?' option.
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amstext.sty
Package: amstext 2021/08/26 v2.01 AMS text
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsgen.sty
File: amsgen.sty 1999/11/30 v2.0 generic functions
\@emptytoks=\toks16
\ex@=\dimen139
))
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsbsy.sty
Package: amsbsy 1999/11/29 v1.2d Bold Symbols
\pmbraise@=\dimen140
)
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsopn.sty
Package: amsopn 2021/08/26 v2.02 operator names
)
\inf@bad=\count193
LaTeX Info: Redefining \frac on input line 234.
\uproot@=\count194
\leftroot@=\count195
LaTeX Info: Redefining \overline on input line 399.
\classnum@=\count196
\DOTSCASE@=\count197
LaTeX Info: Redefining \ldots on input line 496.
LaTeX Info: Redefining \dots on input line 499.
LaTeX Info: Redefining \cdots on input line 620.
\Mathstrutbox@=\box50
\strutbox@=\box51
\big@size=\dimen141
LaTeX Font Info: Redeclaring font encoding OML on input line 743.
LaTeX Font Info: Redeclaring font encoding OMS on input line 744.
\macc@depth=\count198
\c@MaxMatrixCols=\count199
\dotsspace@=\muskip16
\c@parentequation=\count266
\dspbrk@lvl=\count267
\tag@help=\toks17
\row@=\count268
\column@=\count269
\maxfields@=\count270
\andhelp@=\toks18
\eqnshift@=\dimen142
\alignsep@=\dimen143
\tagshift@=\dimen144
\tagwidth@=\dimen145
\totwidth@=\dimen146
\lineht@=\dimen147
\@envbody=\toks19
\multlinegap=\skip50
\multlinetaggap=\skip51
\mathdisplay@stack=\toks20
LaTeX Info: Redefining \[ on input line 2938.
LaTeX Info: Redefining \] on input line 2939.
)
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amssymb.sty
Package: amssymb 2013/01/14 v3.01 AMS font symbols
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amsfonts.sty
Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
\symAMSa=\mathgroup4
\symAMSb=\mathgroup5
LaTeX Font Info: Redeclaring math symbol \hbar on input line 98.
LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold'
(Font) U/euf/m/n --> U/euf/b/n on input line 106.
))
(/usr/local/texlive/2022/texmf-dist/tex/latex/amscls/amsthm.sty
Package: amsthm 2020/05/29 v2.20.6
\thm@style=\toks21
\thm@bodyfont=\toks22
\thm@headfont=\toks23
\thm@notefont=\toks24
\thm@headpunct=\toks25
\thm@preskip=\skip52
\thm@postskip=\skip53
\thm@headsep=\skip54
\dth@everypar=\toks26
)
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphicx.sty
Package: graphicx 2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR)
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty
Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
\KV@toks@=\toks27
)
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphics.sty
Package: graphics 2021/03/04 v1.4d Standard LaTeX Graphics (DPC,SPQR)
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/trig.sty
Package: trig 2021/08/11 v1.11 sin cos tan (DPC)
)
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
)
Package graphics Info: Driver file: pdftex.def on input line 107.
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics-def/pdftex.def
File: pdftex.def 2020/10/05 v1.2a Graphics/color driver for pdftex
))
\Gin@req@height=\dimen148
\Gin@req@width=\dimen149
)
(/usr/local/texlive/2022/texmf-dist/tex/latex/geometry/geometry.sty
Package: geometry 2020/01/02 v5.9 Page Geometry
(/usr/local/texlive/2022/texmf-dist/tex/generic/iftex/ifvtex.sty
Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead.
(/usr/local/texlive/2022/texmf-dist/tex/generic/iftex/iftex.sty
Package: iftex 2022/02/03 v1.0f TeX engine tests
))
\Gm@cnth=\count271
\Gm@cntv=\count272
\c@Gm@tempcnt=\count273
\Gm@bindingoffset=\dimen150
\Gm@wd@mp=\dimen151
\Gm@odd@mp=\dimen152
\Gm@even@mp=\dimen153
\Gm@layoutwidth=\dimen154
\Gm@layoutheight=\dimen155
\Gm@layouthoffset=\dimen156
\Gm@layoutvoffset=\dimen157
\Gm@dimlist=\toks28
)
(/usr/local/texlive/2022/texmf-dist/tex/latex/booktabs/booktabs.sty
Package: booktabs 2020/01/12 v1.61803398 Publication quality tables
\heavyrulewidth=\dimen158
\lightrulewidth=\dimen159
\cmidrulewidth=\dimen160
\belowrulesep=\dimen161
\belowbottomsep=\dimen162
\aboverulesep=\dimen163
\abovetopsep=\dimen164
\cmidrulesep=\dimen165
\cmidrulekern=\dimen166
\defaultaddspace=\dimen167
\@cmidla=\count274
\@cmidlb=\count275
\@aboverulesep=\dimen168
\@belowrulesep=\dimen169
\@thisruleclass=\count276
\@lastruleclass=\count277
\@thisrulewidth=\dimen170
)
(/usr/local/texlive/2022/texmf-dist/tex/latex/caption/caption.sty
Package: caption 2022/03/01 v3.6b Customizing captions (AR)
(/usr/local/texlive/2022/texmf-dist/tex/latex/caption/caption3.sty
Package: caption3 2022/03/17 v2.3b caption3 kernel (AR)
\caption@tempdima=\dimen171
\captionmargin=\dimen172
\caption@leftmargin=\dimen173
\caption@rightmargin=\dimen174
\caption@width=\dimen175
\caption@indent=\dimen176
\caption@parindent=\dimen177
\caption@hangindent=\dimen178
Package caption Info: Standard document class detected.
)
\c@caption@flags=\count278
\c@continuedfloat=\count279
)
(/usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
File: l3backend-pdftex.def 2022-02-07 L3 backend support: PDF output (pdfTeX)
\l__color_backend_stack_int=\count280
\l__pdf_internal_box=\box52
)
No file orbit_decomposition.aux.
\openout1 = `orbit_decomposition.aux'.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 16.
LaTeX Font Info: ... okay on input line 16.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 16.
LaTeX Font Info: ... okay on input line 16.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 16.
LaTeX Font Info: ... okay on input line 16.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 16.
LaTeX Font Info: ... okay on input line 16.
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 16.
LaTeX Font Info: ... okay on input line 16.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 16.
LaTeX Font Info: ... okay on input line 16.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 16.
LaTeX Font Info: ... okay on input line 16.
(/usr/local/texlive/2022/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
\scratchcounter=\count281
\scratchdimen=\dimen179
\scratchbox=\box53
\nofMPsegments=\count282
\nofMParguments=\count283
\everyMPshowfont=\toks29
\MPscratchCnt=\count284
\MPscratchDim=\dimen180
\MPnumerator=\count285
\makeMPintoPDFobject=\count286
\everyMPtoPDFconversion=\toks30
) (/usr/local/texlive/2022/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4
85.
(/usr/local/texlive/2022/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
e
))
*geometry* driver: auto-detecting
*geometry* detected driver: pdftex
*geometry* verbose mode - [ preamble ] result:
* driver: pdftex
* paper: <default>
* layout: <same size as paper>
* layoutoffset:(h,v)=(0.0pt,0.0pt)
* modes:
* h-part:(L,W,R)=(72.26999pt, 469.75502pt, 72.26999pt)
* v-part:(T,H,B)=(72.26999pt, 650.43001pt, 72.26999pt)
* \paperwidth=614.295pt
* \paperheight=794.96999pt
* \textwidth=469.75502pt
* \textheight=650.43001pt
* \oddsidemargin=0.0pt
* \evensidemargin=0.0pt
* \topmargin=-37.0pt
* \headheight=12.0pt
* \headsep=25.0pt
* \topskip=11.0pt
* \footskip=30.0pt
* \marginparwidth=59.0pt
* \marginparsep=10.0pt
* \columnsep=10.0pt
* \skip\footins=10.0pt plus 4.0pt minus 2.0pt
* \hoffset=0.0pt
* \voffset=0.0pt
* \mag=1000
* \@twocolumnfalse
* \@twosidefalse
* \@mparswitchfalse
* \@reversemarginfalse
* (1in=72.27pt=25.4mm, 1cm=28.453pt)
Package caption Info: Begin \AtBeginDocument code.
Package caption Info: End \AtBeginDocument code.
LaTeX Font Info: Trying to load font information for U+msa on input line 17.
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsa.fd
File: umsa.fd 2013/01/14 v3.01 AMS symbols A
)
LaTeX Font Info: Trying to load font information for U+msb on input line 17.
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsb.fd
File: umsb.fd 2013/01/14 v3.01 AMS symbols B
)
Overfull \hbox (72.00633pt too wide) in paragraph at lines 29--31
[]\OT1/cmr/m/n/10.95 Script: \OT1/cmtt/m/n/10.95 experiments/orbit[]decompositi
on.py\OT1/cmr/m/n/10.95 ; raw out-put: \OT1/cmtt/m/n/10.95 experiments/orbit[]d
ecomposition[]data.txt\OT1/cmr/m/n/10.95 .
[]
[1
{/usr/local/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
LaTeX Warning: Reference `obs:s3-closed' on page 2 undefined on input line 130.
[2] [3] (./orbit_decomposition.aux)
LaTeX Warning: There were undefined references.
LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
)
Here is how much of TeX's memory you used:
4573 strings out of 478268
74153 string characters out of 5846347
373398 words of memory out of 5000000
22758 multiletter control sequences out of 15000+600000
481067 words of font info for 74 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191
55i,8n,63p,253b,198s stack positions out of 10000i,1000n,20000p,200000b,200000s
{/usr/local/texlive/2022/texmf-dist/fonts/enc/dvips/cm-super/cm-super-ts1.enc
}</usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb>
</usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb><
/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb></
usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></u
sr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi12.pfb></us
r/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi8.pfb></usr/
local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/lo
cal/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb></usr/loca
l/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr17.pfb></usr/local/
texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb></usr/local/tex
live/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/local/texl
ive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb></usr/local/texli
ve/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb></usr/local/texliv
e/2022/texmf-dist/fonts/type1/public/cm-super/sfrm1095.pfb>
Output written on orbit_decomposition.pdf (3 pages, 166513 bytes).
PDF statistics:
85 PDF objects out of 1000 (max. 8388607)
51 compressed objects within 1 object stream
0 named destinations out of 1000 (max. 500000)
1 words of extra memory for PDF output out of 10000 (max. 10000000)
@@ -0,0 +1,168 @@
\documentclass[11pt]{article}
\usepackage{amsmath,amssymb,amsthm}
\usepackage{graphicx}
\usepackage{geometry}
\usepackage{booktabs}
\usepackage{caption}
\geometry{margin=1in}
\title{$S_3$-orbit decomposition of $S_1 \cap S_2$\\
Do structurally different tires share the same canonical orbits?}
\author{}
\date{}
\newtheorem*{obs}{Observation}
\begin{document}
\maketitle
\section*{The question}
Step~2 (\texttt{tire\_fiber\_step2.tex}) reported $|S_1 \cap S_2|$ for
$23$ adjacent-tire pairs and found all $23$ compatible. A follow-up
question is whether structurally different $(T_1, T_2)$ pairs that
share a cycle-length $|\gamma| = k$ have intersections with the
\emph{same orbit structure} --- i.e.\ whether a canonical pattern like
the rainbow $(a,b,c,b,c,a)$ persists when we vary $T_1$ and $T_2$, or
whether each pair gives its own pair-specific orbit.
Script: \texttt{experiments/orbit\_decomposition.py}; raw output:
\texttt{experiments/orbit\_decomposition\_data.txt}.
\section*{$S_3$-closure: a structural sanity check}
Permuting the three colors is a symmetry of proper edge $3$-coloring,
so for any fixed tire $T$, both $S_1$ and $S_2$ must be closed under
the diagonal $S_3$ action on $\{1,2,3\}^k$. Hence so is $S_1 \cap
S_2$.
\begin{obs}[$S_3$-closure]
\label{obs:s3-closed}
In every one of the $23$ pairs, $S_1 \cap S_2$ is closed under the
$S_3$ color action. This is structural rather than coincidental.
\end{obs}
\section*{Orbit size distribution}
For $\sigma \in \{1,2,3\}^k$ with $3$ distinct color-values, the $S_3$
orbit has size exactly $6$. For $\sigma$ using $2$ distinct color values,
the orbit has size $6$ (since $S_3$ acts on the $\binom{3}{2}\cdot 2$ ways
of placing them). For $\sigma$ constant (one color), the orbit has size $3$.
\begin{obs}[Uniform orbit sizes]
\label{obs:orbit-sizes}
Across all $23$ pairs, every $S_3$-orbit in $S_1 \cap S_2$ has size
exactly $6$, with one single exception: the constant orbit
$\{(1,\dots,1), (2,\dots,2), (3,\dots,3)\}$ of size $3$, which
appears only in the case $\gamma = 4$, $T_1 = T_2 = (4, -, \mathrm{SR})$.
\end{obs}
So intersection sizes are essentially $6 \cdot (\text{number of orbits})$
in all but one case.
\section*{The rainbow orbit reappears across structurally different pairs}
Combining $S_3$ color action with cyclic rotation of $\gamma$ gives a
larger symmetry group; the combined orbit of $(1,2,3,2,3,1)$ has size
$36$. This single combined orbit appears in three different $(T_1, T_2)$
pairs at $\gamma = 6$:
\begin{center}
\begin{tabular}{l l l}
\toprule
$\gamma$ & $T_1$ & $T_2$ \\
\midrule
$6$ & $(6, (0,3), \mathrm{SP})$ & $(6, (0,3), \mathrm{SP})$ \\
$6$ & $(6, (0,3), \mathrm{SP})$ & $(6, (0,2)(3,5), \mathrm{SP})$ \\
$6$ & $(6, (0,3), \mathrm{SP})$ & $(3, -, \mathrm{SR})$ \\
\bottomrule
\end{tabular}
\end{center}
All three have $T_1 = (6, (0,3), \mathrm{SP})$ --- the side with the
\emph{antipodal} chord. The three different $T_2$ structures range
from another antipodal-chord SP tire to a chord-less SP tire to a
chordless SR tire. In every case the rainbow orbit is part of (or
all of) the intersection.
\begin{obs}[Rainbow orbit is $T_1$-driven at $\gamma=6$]
\label{obs:rainbow-source}
At $\gamma=6$, the rainbow combined orbit $(a,b,c,b,c,a)$ appears
\emph{iff} $T_1 = (6, (0,3), \mathrm{SP})$ --- the antipodal-chord
SP tire. The two-chord SP tire $T_1 = (6, (0,2)(3,5), \mathrm{SP})$
yields different orbits, never the rainbow. So the rainbow pattern
is associated with antipodal $O$-chord topology rather than with the
pair $(T_1, T_2)$ as a whole.
\end{obs}
\section*{Most-shared canonical orbits}
Other canonical combined orbits appear across many structurally
different pairs. Top entries:
\begin{center}
\begin{tabular}{r l r l}
\toprule
$|\gamma|$ & canonical rep & \# distinct pairs & combined-orbit size \\
\midrule
$4$ & $(1,2,1,3)$ & $7$ & $12$ \\
$4$ & $(1,2,1,2)$ & $6$ & $6$ \\
$4$ & $(1,2,2,1)$ & $5$ & $12$ \\
$4$ & $(1,2,2,3)$ & $5$ & $24$ \\
$3$ & $(1,2,3)$ & $4$ & $6$ \\
$5$ & $(1,2,1,2,3)$ & $3$ & $30$ \\
$6$ & $(1,2,3,2,3,1)$ (rainbow) & $3$ & $36$ \\
\bottomrule
\end{tabular}
\end{center}
\begin{obs}[Universal orbits dominate]
\label{obs:universal-orbits}
At each cycle length $k$, the most-shared canonical orbit appears in
roughly $30$--$40\%$ of tested pairs at that $k$. These ``universal''
orbits are typically of the form $(a, b, a, c)$ or $(a, b, a, b)$ at
$\gamma = 4$, $(a, b, c)$ at $\gamma = 3$, etc. They survive across
chord placements and across SR/SP model choices.
\end{obs}
\section*{What this means for chain pigeonhole}
If $S_1 \cap S_2$ is always $S_3$-closed (Obs.~\ref{obs:s3-closed})
and always contains at least one full $S_3$-orbit (which, given
size $6$ for non-constant orbits, is essentially the same as saying
$|S_1 \cap S_2| > 0$), then \emph{chain pigeonhole at a single shared
cycle is not just a counting fact but a structural one}: the
intersection respects color symmetry, never collapses to a thin
exotic subset, and contains canonical orbits that recur across
structurally varied pairs.
This is a real upgrade on the step-$2$ data:
\begin{itemize}
\item Step $2$ only reported $|S_1 \cap S_2| > 0$; it could in
principle be a single weird configuration with no symmetry.
\item The orbit decomposition shows the intersections always have
the full $S_3$-symmetric shape, with at least one orbit of
size $6$ (or $3$ in the trivial case).
\item Several canonical orbits recur across structurally different
pairs --- evidence that chain compatibility is detecting
something structural about $\gamma$ and the tire-pair
topology, not a coincidence of one specific configuration.
\end{itemize}
\section*{Caveats}
\begin{enumerate}
\item Still empirical for $k \le 6$, chord counts $\le 2$, and the
$23$ pairs from step~$2$.
\item ``Same combined orbit'' is taken modulo $S_3 \times C_k$ (color
permutation $\times$ cyclic rotation of $\gamma$). Reflection
of $\gamma$ is \emph{not} quotiented out --- some orbits would
coincide if it were.
\item The rainbow orbit's persistence is tied to the antipodal
chord; a structural proof would need to show that the
antipodal-chord $\mathrm{SP}$ tire's projection support
$\pi_D$ always contains the rainbow orbit, independently of
the outer tire.
\end{enumerate}
\end{document}