Unbounded Orbits for Outer Billiards

Outer billiards is a basic dynamical system, defined relative to a planar convex shape. This system was introduced in the 1950's by B.H. Neumann and later popularized in the 1970's by J. Moser. All along, one of the central questions has been: is there an outer billiards system with an unbounded orbit. We answer this question by proving that outer billiards defined relative to the Penrose Kite has an unbounded orbit. The Penrose kite is the quadrilateral that appears in the famous Penrose tiling. We also analyze some of the finer orbit structure of outer billiards on the penrose kite. This analysis shows that there is an uncountable set of unbounded orbits. Our method of proof relates the problem to self-similar tilings, polygon exchange maps, and arithmetic dynamics.


History of the Problem
Outer billiards is a basic dymamical system which serves as a toy model for celestial mechanics. See Sergei Tabachnikov's book [T], and also the survey [DT], for an exposition of the subject and many references.
To define an outer billiards system, one starts with a bounded convex set S ⊂ R 2 and considers a point x 0 ∈ R 2 − S. One defines x 1 to be the point such that the segment x 0 x 1 is tangent to S at its midpoint and S lies to the right of the ray − − → x 0 x 1 . (See Figure 1.1 below.) The point x 1 is not welldefined if x 0 x 1 is tangent to S along a segment. This will inevitably happen sometimes when S is a polygon. Nonetheless, the outer billiards construction is almost everywhere well defined. The iteration x 0 → x 1 → x 2 ... is called the forwards outer billiards orbit of x 0 . The backwards orbit is defined similarly.  [N]. J. Moser popularized the construction in the 1970s. Moser [M, p. 11] attributes the following question to Neumann circa 1960, though it is sometimes called Moser's Question.
Question: Is there an outer billiards system with an unbounded orbit?
There have been several results related to this question.
• Moser [M] sketches a proof, inspired by K.A.M. theory, that outer billiards on S has all bounded orbits provided that ∂S is at least C 6 smooth and positively curved. R. Douady gives a complete proof in his thesis, [D]. See [B] for related work.
• In [VS], [Ko], and (later, but with different methods) [GS], it is proved that outer billiards on a quasirational polygon has all orbits bounded. This class of polygons includes polygons with rational vertices and also regular polygons. In the rational case, all defined orbits are periodic.
• Tabachnikov analyzes the outer billiards system for the regular pentagon and shows that there are some non-periodic (but bounded) orbits. See [T, p 158] and the references there.
• Genin [G] shows that all orbits are bounded for the outer billiards systems associated to trapezoids. He also makes a brief numerical study of a particular irrational kite based on the square root of 2, observes possibly unbounded orbits, and indeed conjectures that this is the case.

The Main Result
The main goal of this paper is to prove: Theorem 1.1 Outer billiards on the Penrose kite has an unbounded orbit. In fact, both the forwards and backwards orbits of the point p shown in Figure  1.2 are entirely defined and unbounded. The Penrose kite is the convex quadrilateral that appears in the Penrose tiling. (In general, a kite is a convex quadrilateral with bilateral symmetry.) Figure 1.2 shows a classic construction of the Penrose kite-the shaded figurebased on a regular pentagon. The additional lines show how the point p is constructed. The significance of the points v and w will be explained in Theorem 1.2 below. In §2.1 we will give more traditional coordinates for the objects of interest to us.

Outline of the Proof
We will give a rigorous computer-assisted proof of Theorem 1.1. We think that our proof gets close to the conceptual core of what is going on, but we need a lot of computation to make it go. Here are the main ideas. Let Υ denote the square of the outer billiards map.
1. We replace the Penrose kite by an affinely equivalent kite S whose vertices lie in the ring Z[φ], where φ is the golden ratio. We show that the outer billiards map (and in particular Υ) is entirely defined on a set C(±), consisting of certain points whose first coordinates are positive and lie in 1 2 Z[φ] and whose second coordinates are ±1. See Figure 2.1. Let Υ R : C(±) → C(±) be the first return map of Υ.
2. Forgetting about the y-coordinate (which is always ±1) we identify C(±) with the set of vertices in Z 2 ∩ H, where H ⊂ R 2 is a certain halfplane. We then encode the dynamics of Υ R by a graph Γ ⊂ H. 3. The structure of Γ is controlled by a certain partition P of the square torus T 2 into 26 convex polygons, and an associated dynamical system akin to a polygon exchange map. See Figure 2.5. This structural result, which we call the Arithmetic Graph Lemma, is the central technical result in the paper.
4. The dynamical process described in Item 3 is compatible with a kind of multi-valued contraction, defined on various simply connected subsets of T 2 . The graph of this correspondence is an irrationally embedded complex line sitting inside T 2 × T 2 . Rick Kenyon tells me that this picture is essentially the same as what one sees in the cut and project method from the theory of quasi-crystals.
5. The compatibility discussed in Item 4 forces Γ to behave like an aperiodic tiling with an inflation rule. Compare [Ke]. That is, when we dilate Γ about the origin by φ 3 we find that the dilated image is very closely shadowed by the original image. This structure forces the connected component Γ 0 of Γ containing the origin to travel unboundedly far away from ∂H, and this translates into the unboundedness of the orbit of our point p shown in Figure 1.2.

Orbit Structure
Our proof of Theorem 1.1 gives us information about the fine orbit structure of outer billiards on the Penrose kite. We will see (Lemma 2.5) that the Euclidean norm of the nth point of O + (p) is a proper function of n.
Here O + (p) is the forward orbit of p.
is bounded for all n ∈ N .) In contrast, the backwards orbit O − (p) returns densely to a certain Cantor set. Given a horizontal interval I ⊂ R 2 and some λ ∈ (0, 1) let C(I, λ) ⊂ I denote the (Cantor set) limit set of the semigroup generated by the two contractions of strength λ that map I into itself and fix an endpoint of I. We say that a gap point of C = C(λ, I) is an endpoint of any component of I − C. We let C * denote C minus its countably many gap points.
Let γ 0 (respectively γ 1 ) be the similarity of strength −λ (reversing orientation on I) that maps C(λ, I) to its own right (respectively left) half. Let Z 2 denote the 2-adic integers. There is a unique homeomorphism θ 2 : Z 2 → C that conjugates γ j to the map x → 2x + j. Let p, v, w be as in Figure 1.2. We have set things up so that θ 2 (0) = p when I = [v, w] and λ = φ −3 .
where v and w are as in Figure 1.2 and φ is the golden ratio. The forwards and backwards orbits of every point of C * are defined and unbounded.
• If x ∈ C * − θ 2 (0) then the Υ-forwards orbit of x first returns to C * as x − , such that θ −1 2 (x − ) = θ −1 2 (x) − 1. The number of iterates between x and x − , as well as the maximum Euclidean norm of such an iterate, is a proper function of 1/ x − θ 2 (0) .
In the two items, we mean to consider just the even iterates in the orbits. Again, Υ is the square of the outer billiards map. Theorem 1.2 immediately implies that there are uncountably many unbounded orbits of the outer billiards map on the Penrose kite with the following wild behavior: If V is any neighborhood of the vertex v and U is any neighborhood of ∞, then both the forwards and backwards orbits oscillate between U and V infinitely often.

Discussion
Here are some remarks on the origins of Theorem 1.1. Let S ′ be the Penrose kite. It appears that R 2 − S ′ = A ∪ B ∪ C where • A is a dynamically invariant union of finite sided polygons. All the orbits in a polygon are periodic with the same combinatorial type.
• B is a countable union of line segments consisting of the points on which the outer billiard map is undefined. B is the so-called discontinuity set.
• C is a fractal set consisting entirely of unbounded orbits.
Tabachnikov develops a similar picture for the regular pentagon, except that his region C consists of non-periodic but bounded orbits. The general regular N-gon seems to have a similar kind of structure, though nobody has yet made a detailed study. Tabachnikov has a beautiful picture of the case N = 7 on the cover of his book [T]. Inspired by Tabachnikov's picture, I designed a computer program, Billiard King, 2 which draws these special sets for kites and explores their structure.
When the kite has rational vertices, C is empty and A is a locally finite tiling. I searched 3 through the parameter space of rational kites for examples where A featured small tiles having widely ranging orbits. Eventually I considered kites having vertices with Fibonacci number coordinates, and this led to the Penrose kite.
I hope to find purely conceptual proofs for the results in this paper, but my first goal is just to establish them as true statements. Many people do not like computer-aided proofs, so I would like to say several things in favor of the proof I have given. First of all, it is the best I could do and there are no other proofs for results like these. Second, the proof is not just a calculation−there are plenty of concepts in it. Finally, I was able to check essentially all the details in the proof using Billiard King, so this proof has a lot of computational safeguards that one might not see in a traditional proof. I tried as hard as possible to write a proof that is independent from Billiard King, but still the reader of this paper would get a much greater appreciation for what is going on by learning to use Billiard King. A few minutes playing with Billiard King is worth hours of reading the paper.

Organization of the Paper
Part 1: ( §2-5) In this part we prove all our main results modulo the Arithmetic Graph Lemma. (See Item 3 of §1.3.) In §2 we reduce Theorem 1.1 to the statement that Γ 0 , the component of the arithmetic graph of interest to us, admits what we call an inflation structure. Essentially this means that certain smallish subsets (which we call genes) of Γ 0 are, when dilated by φ 3 , closely shadowed by other subsets of Γ 0 . In §3 we tie the existence of an inflation structure to the dynamical behavior of the torus partition guaranteed by the Arithmetic Graph Lemma, and thereby reduce the problem to a finite calculation with integer arithmetic. In §4 we explain how we perform the calculation. In §5, we prove Theorem 1.2 by taking a close look at the specifics of our inflation structure.
Part 2: ( §6) In this part, we prove the Arithmetic Graph Lemma. To this end, we factor the return map Υ R (from Item 2 of §1.3) as the product of 8 simpler maps, which we call strip maps. (Actually, the decomposition involves a 9th map as well. See Equation 32 for a precise statement.) We then show how each strip map actually is compatible with a certain embedding of R 2 − S as a dense subspace of the 4-torus. Each strip map extends to act as a piecewise affine transformation of the 4-torus. We then embed the dynamics of Υ R as a 2-dimensional geodesic slice of this 4-dimensional dynamical system. The Arithmetic Graph Lemma is a consequence of this structure and some additional integer arithmetic calculations.
Part 3: ( §7-8) In §7 we describe our calculations using pesudo-code, in enough detail that the interested reader should be able to reproduce them. In §8 we include the data used in our calculations. All the calculations are implemented in Billiard King, a Java program. Billiard King is a massive program, but we have placed the smallish number of routines actually relevant to the proof in separate files so that they are easier to survey.
To clarify the logic of our argument, it is useful to consider a general value of A ∈ (0, 1) for the moment. We define T : Z 2 → R via the formula Lemma 2.1 The outer billiards orbit of any point in the set is entirely defined, both forwards and backwards. In particular, the entire orbit of the point in Equation 2 is defined.
Proof: Let L denote the family of horizontal lines in R 2 whose y-coordinates are odd integers. The outer billiards map preserves L. The only points where the first iterate of the outer billiards map is undefined are points of the form l ∩ e, where l is a line of L and e is a line extending an edge of our kite. One can check easily, given Equation 1, that all such points have first coordinates of the form m + An, where m, n ∈ Z. On the other hand, no point of T (Z 2 )×{±1} has this form, and no iterate of such a point has this form. ♠ Let Υ denote the square of the outer billiards map. Let C = T (Z 2 )×Z odd , where Z odd is the set of odd integers. The vector Υ(x)−x is always twice the difference between two of the vertices of our shape S. Given Equation 1.1, we see that the first coordinate of Υ(x) − x always has the form 2m + 2nA where m and n are integers. The second coordinate is always an even integer. Hence Υ is entirely defined on C and preserves this set.

The Arithmetic Graph
Let where T is as in Equation 3, and A = φ −3 . (Henceforth we take A = φ −3 .) The set C(±) is dense in the union of two rays starting at (0, ±1) and parallel to (1, 0). The point in Equation 2 belongs to C(−). Υ does not preserve C(±), but we have 4 the first return map: Our idea is to encode the structure of Υ R graphically. We join x 1 , x 2 ∈ Z 2 by a segment iff T (x j ) > 0 for j = 1, 2, and there are choices There is a subtlety in our definition, caused by the asymmetric roles played by x 1 and x 2 in the construction. One might worry that this asymmetry could lead to an inconsistency, whereby we are told to join x 1 , x 2 by an edge, but then told not to join x 2 , x 1 by an edge! However, we observe that reflection in the X-axis interchanges C(+) and C(−) and conjugates the outer billiards map to its inverse. Therefore Hence, our definition is consistent. We let Γ ⊂ H denote the graph resulting from our construction. Here H = T −1 (R + ) ⊂ R 2 is an open halfplane containing Γ. We call Γ the arithmetic graph.    3 shows more of Γ 0 , again drawn in black. The origin is denoted by a little vertical line segment touching ∂H at its top endpoint. We have erased the other components and deleted the grid, to get a clearer picture.
(The reader should use Billiard King to see really great pictures of Γ.) The curve Γ 0 , and indeed all of Γ, behaves like the self-similar inflationary tilings studied in [Ke]. One might call Γ a "large-scale fractal".
Here is what we mean by inflationary: In Figure 2.3, there is also a grey curve running alongside Γ 0 . This grey curve is the dilated image φ 3 Γ 0 . In other words, we dilate Γ 0 by φ 3 (about the origin), color it grey, and superimpose it on the original picture. From what we can see of the picture, it looks like Γ 0 and φ 3 Γ 0 closely follow each other. One might say that Γ 0 is quasiinvariant under a dilation. If this is true−and we will prove it below−then both ends of Γ 0 must exit every tubular neighborhood of ∂H. (Below we formulate this principle precisely.) Theorem 1.1 follows immediately from the fact that both ends of Γ 0 exit every tubular neighborhood of ∂H.

The Arithmetic Graph Lemma
Let T 2 = (R/Z) 2 be the square torus. Given p ∈ R 2 let [p] denote the projection to T 2 . We define Ψ : Z 2 → T 2 with the equation Here T is the map from Equation 3. The second equation is a direct calculation, which we omit. Ψ(Z 2 ) is dense in T 2 .
Given v ∈ Z 2 ∩ H we define the local type of v to be the translation equivalence class of the union of edges of Γ emanating from v. It turns out that there are 16 types (including the type where no edges emanate from v) but we prefer to label these 16 types by the integers 1, ..., 26 according to We have changed the aspect ratio so as to get a nicer picture. The true geometric picture is contained in the unit square, with sides identified as usual. The origin (0, 0) is the bottom left corner. The only polygon that "wraps" around is P 26 . In §6 we will prove Lemma 2.2 (Arithmetic Graph) Ψ maps each x ∈ Z 2 ∩ H into some open polygon of P, and x has local type k if and only if Ψ(x) ∈ P k . The next lemma is not needed for our theorems, but it is a nice fact to know and it illustrates the power of the Arithmetic Graph Lemma.

Lemma 2.3
The arithmetic graph is an embedded union of polygons and polygonal arcs.
Proof: (Sketch.) First of all, we check the list of types that appear in the Arithmetic Graph Lemma and we observe that every vertex in the graph has valence 2. Thus, the only kind of crossing that can occur is a transversal crossing, where the cross point is not in Z 2 . In particular, there would have to be a point (x, y) of type a and a point (x + 1, y) of type b, where a ∈ {4, 6, 8} and b ∈ {2, 4, 9, 12, 14}. But v = Ψ(x + 1, y) − Ψ(x, y) is the vector (φ −3 , φ −4 ). This vector is the one that points from the lower left corner of P 3 to the upper right corner or P 3 in Figure 2.5, when it is anchored at the point (0, 0). Looking carefully at Figure 2.5 we see that no position of v has this property. ♠

Inflation Structures
As we mentioned above, the basic idea in our proof that Γ 0 rises unboundedly far away from ∂H is to show that Γ 0 is quasi-invariant under the dilation Φ(x, y) = (φ 3 x, φ 3 y).
In this section we formalize this idea. Say that a gene is a (combinatorial) length 6 connected component of Γ 0 . It turns out that there are 75 genes up to translation equivalence. Each gene A has a core B, consisting of the central path of length 2. The left hand side of Figure 2.6 shows a gene and its core. We say that p ′ ∈ Z 2 shadows p ∈ R 2 if p − p ′ < 4. (Here 4 is a convenient cutoff.) Let B be a gene core, as above. We say that a finite polygonal path A ′ ⊂ Γ shadows Φ(B) if each endpoint of A ′ shadows a corresponding endpoint of Φ (B). Figure 2.6 shows a combinatorially accurate example.  Let G denote the set of all genes. Let X denote the set of all finite polygonal paths of Γ. We say that an inflation structure is an assignment χ, to each gene A ∈ G a path A ′ = χ(A) in X which shadows Φ (B). We emphasize that χ(A) only shadows the dilated core Φ (B), but perhaps depends on all of A for its definition. We also emphasize that the translation type of χ(A) only depends on the gene type of A. Billiard King computes part of an inflation structure and allows the interested user to interact with it.
We say that a inflation structure is coherent if • If A is the gene whose center vertex is (0, 0), then A ⊂ χ(A). We call A the zeroth gene.
• If A 1 and A 2 are two consecutive genes, then χ(A 1 ) ∪ χ(A 2 ) is a single polygonal path. In other words, χ(A 1 ) and χ(A 2 ) splice together seamlessly, just as A 1 and A 2 splice together.
Lemma 2.4 If Γ 0 admits a coherent inflation structure then either direction of Γ 0 rises unboundedly far away from ∂H, and hence Theorem 1.1 is true.
Proof: We see explicitly by direct computation that either direction of Γ 0 contains a polygonal arc which starts at (0, 0) and rises 100 units away from ∂H. Let Γ 1 be one of these two directions. Say that we have already shown that Γ 1 rises up d ≥ 100 units away from ∂H. Let A 0 , A 1 , A 2 , ... be the consecutive genes of Γ 1 , rising up to this height, chosen so that A 0 is the zeroth gene. Then A 0 ⊂ χ(A 0 ) and the consecutive paths χ(A 0 ), χ(A 1 ), χ(A 2 ),... fit together. These paths therefore trace out Γ 1 and rise up at least (say) φ 3 d − 100, a quantity larger than 2d. Thus, we have now shown that Γ 1 rises up 2d units from ∂H in the same direction. Iterating, we get our result. ♠ Lemma 2.5 If Γ 0 admits a coherent inflation structure then the distance from the Nth point of O + (p) to the origin is a proper function of N.
Proof: Let Γ + 0 be the component of Γ 0 − (0, 0) whose first (say) 100 iterates are contained in the positive quadrant R 2 + . (See Figure 2.3.) An argument just like the one given for Lemma 2.4 shows that Γ + 0 ⊂ R 2 + . As we trace out Γ + 0 , a non-periodic curve with integer vertices, we can only return to any given compact neighborhood of (0, 0) finitely many times. Hence, the distance from the Nth vertex of Γ + 0 to (0, 0) is a proper function of N. Since Γ + 0 ⊂ R 2 + and ∂H has negative slope, we now see that the distance from the Nth vertex of Γ + 0 to ∂H is a proper function of N. Hence the Euclidean norm of the Nth point of O + (p) ∩ C(±) is a proper function of N. But now observe that the norms of the points in O + (p) between two consecutive points of O + (p) ∩ C(±) are, up to a uniformly bounded factor, the same as the norms as the two points of O + (p)∩C(±). (See Figure 6.1. and the Pinwheel Lemma of §6.2.) ♠

Manufacturing an Inflation Structure
In this chapter we assume the Arithmetic Graph Lemma and use it to delve more deeply into the connection between the arithmetic graph Γ and the torus partition P.

Pointed Strands and Dynamical Polygons
Say that a pointed strand of Γ is a pair (X, x), where X is a finite polygonal arc of Γ having length at least 2, and x is a vertex of X. Say that two pointed strands (X 1 , x 1 ) and (X 2 , x 2 ) are equivalent if there is a translation of Z 2 carrying one to the other, and Ψ(x 1 ), Ψ(x 2 ) belong to the same polygon P j of P. Say that a pointed strand type of length n is an equivalence class of pointed strands, where the strands have n segments. Let Σ σ denote those

Lemma 3.1 (Dynamical Polygon)
There exists an open convex polygon P σ ⊂ T 2 such that a ∈ Σ σ if and only if Ψ(a) ∈ P σ .
By the Arithmetic Graph Lemma, this lemma is true for the local types. The vertex slide argument now establishes this lemma for all pointed strand types of length 2. Now suppose that σ = [(X, x)] has length at least 3. By the vertex slide argument, we can assume that x is an interior vertex of X. Hence X = X 1 ∪ X 2 where x ∈ X j and X j is a shorter strand than X. By induction there are open convex polygons P σ 1 and P σ 2 such that a ∈ Σ σ j iff Ψ(a) ∈ P σ j . Let P σ = P σ 1 ∩ P σ 2 . Evidently P σ is an open convex polygon. If a ∈ Σ σ then a ∈ Σ σ 1 ∩ Σ σ 2 and by induction Ψ(a) ∈ P σ 1 ∩ P σ 2 = P σ . Conversely suppose that Ψ(a) ∈ P σ . Then Ψ(a) ∈ P σ j and hence there is a strand A j such that Hence a ∈ Σ σ . This completes the induction step. ♠ We call P σ a dynamical polygon because, as we explain in §4, it can be produced by a dynamical process.

Inflation Maps
In this section and the next we build some machinery for describing the interaction between the dilation map Φ(x, y) = (φ 3 x, φ 3 y) and the map Ψ : Z 2 → T 2 given in Equation 7. That is, Our goal is to define, in a canonical way, a kind of integral approximation to Φ. Such approximations are vital to the creation of an inflation structure. We say that a small polygon is an open convex polygon of T 2 that is contained inside a square of side length 1/2. The polygons of interest to us will all be small. Let P be a small polygon. We say that a map γ : P → T 2 is a special similarity if, relative to local Euclidean coordinates on P and γ(P ) the map γ is just multiplication by −φ −3 . Put another way, γ is a holomorphic map on P whose complex derivative is constantly equal to −φ −3 . Define If P = P σ then Σ(P ) ∩ H = Σ σ , the set defined in the last section. We say that a map β : Σ(P ) → Z 2 is an inflation map if Ψ(β(a)) = γ(Ψ(a)); ∀a ∈ Σ(P ), for some special similarity γ : P → T 2 . In the next section we prove the existence of such maps. Here we investigate some of their abstract properties.
Lemma 3.2 Suppose that β is an inflation map defined relative to P . Let β be the new map defined by the equation β(a) = β(a) + b 0 for some b 0 ∈ Z 2 . Then β is also an inflation map defined relative to P .
Here C is some constant and γ is some other special similarity which differs from γ only by a translation. Our equation makes sense because T 2 = R 2 /Λ is canonically an abelian group. ♠ Lemma 3.3 Suppose that β is an inflation map defined relative to P . Given Then β is an inflation map defined relative to P .
Here C is some constant. The rest of the proof is as in the previous lemma. ♠ Lemma 3.4 Let β 1 and β 2 be two inflation maps defined relative to the same polygon P . If β 1 (a) = β 2 (a) for some a ∈ Σ(P ) then β 1 = β 2 .
Proof: In light of Lemma 3.4, we must have, for all a ∈ Σ(P ), the identity. β(a) = β(a)+a 0 for some a 0 ∈ Z 2 . The result is obvious from this identity. ♠

The Shadow Lemma
Recall that convex polygon P ⊂ T 2 is small if P is contained inside an open square of radius 1/2 in T 2 .
Lemma 3.6 (Shadow) Let P be a small polygon. There exists an 4-pseudo-Lipschitz inflation map β defined relative to P .
It suffices to prove the Shadow Lemma for the map which differs from Ψ by a translation of T 2 . That is, we will produce a special similarity γ such that Ψ 0 (β(a)) = γ(Ψ 0 (a)) for all a ∈ Σ(P ). Given that P is small, there are intervals I 1 , I 2 ⊂ R, each having length less than 1/2 with the following property: For a = (x, y) ∈ A, we have unique integers m and n such that We Since φ 3 ∼ 2φ −1 and −2φ −4 ∼ 3φ −3 and x, y ∈ Z we have Proof: Let (ǫ 1j , ǫ 2j ) be constants associated to the point a j = (x j , y j ) as in Equation 13. Let δ j = ǫ 1j − ǫ 2j for j = 1, 2. First, we have The matrix associated to the linear map (δ 1 , δ 2 ) → (δ 2 , 2δ 1 + 3δ 2 ) has L 2norm equal to √ 14 < 4 and hence the map itself is 4-Lipschitz. ♠ We compute But Our last equation comes from Equations 13 and 14. Plugging Equation 19 into Equation 18 and grouping terms, we have This completes the proof ♠ Equation 17 and Lemma 3.8 together show that Ψ 0 ( x, y) = −φ −3 Ψ 0 (x, y) in local isometric coordinates. This is what we wanted to prove. This completes the proof of the Shadow Lemma.

Inflation Maps and Dynamical Polygons
Now we put together the material from the previous two sections. The result we prove here, an immediate consequence of what we have already done, provides the key step in constructing a coherent inflation structure from a finite amount of computational information.
Let σ 1 and σ 2 be two pointed strand types. Let P σ 1 and P σ 2 be the associated dynamical polygons. We write if there is a inflation map β, defined relative to P σ 1 and having the property that Here γ is the special similarity associated to β.

The Inflation Generator
Now we turn our attention to the genes we discussed at the end of §2. Recall that a gene is a polygonal arc of length 6 contained in Γ 0 . Here Γ 0 is the component of Γ that contains (0, 0). Each gene A gives rise to a pointed strand (A, a) where a is the central vertex of A. Each gene A j therefore gives rise to the dynamical polygon P j associated to the pointed strand type [(A j , a j )]. It turns out that there are 75 such dynamical polygons, corresponding to 75 distinct combinatorial types of gene. The corresponding polygons are the dark-shaded polygons in Figure 3.1. (We will explain the significance of the 24 light-shaded polygons in the next chapter.) One can see easily from the picture, or from inspecting the list in §8.1, that any two points in the same dynamical polygon P j are within 1/4 of each other. In particular, these polygons are all small. We say that the gene A (with central vertex a and gene core B) is nicely shadowed by a polygonal arc A ′ if there is a vertex a ′ of A ′ such that the following is true: • There exists an inflation map β with the properties that β(a) = a ′ and • Each endpoint of Φ(B) is within 3 units of an endpoint of A ′ .
We say that an inflation generator is a list G of 75 pairs of the form {(A i , A ′ i )} such that each gene of Γ 0 is translation equivalent to one gene A i on the list, and A ′ i ⊂ Γ nicely shadows A i . Let A be some gene. There is some gene A j on our list such that A and A j have the same type. Let a be the central vertex of A and let a j be the central vertex of A j . Let β j , A ′ j , and a ′ j be the objects associated to A j , as above. From Lemma 3.9 there is a pointed strand Lemma 3.10 χ is an inflation structure.
Proof: For an arbitrary gene A, with gene core B, we need to show that each endpoint of χ(A) is within 4 units of the corresponding endpoint of Φ (B). We write A ′ = χ(A). Let b be one of the endpoints of B. For ease of labelling let's assume that A 1 is the gene on our list of 75 that has the same type as A. Let B 1 be the core of A 1 and let b 1 be the vertex of B 1 corresponding to B. Let β be the inflation map associated to A 1 . Let b ′ 1 be the endpoint of A ′ 1 that is within 3 units of B(b 1 ). Let P 1 denote the dynamical polygon associated to [(A 1 , a 1 )] and let P 1 be the dynamical polygon associated to [(A 1 , b 1 )]. Note that P 1 and P 1 are translates of each other.
Consider a new map β defined by the rule By Lemmas 3.2 and 3.3, together with the fact that P 1 is the relevant translate of P 1 , we see that β is a inflation map defined on Σ( P 1 ). By the Shadow Lemma β is 4-pseudo-Lipschitz, and hence so is β. By translation equiva- The starred equality comes from Equation 22. The 1/4 in this last calculation comes from the fact that any two points in the same dynamical polygon are within 1/4 of each other. ♠

Coherence
Here we explain how to check that the inflation structure χ is coherent. Our inflation generator gives rise to a list β 1 , ..., β 75 of inflation maps, where β j is defined on Σ(P j ). Here P j is the dynamical polygon associated to [(A j , a j )]. Say that an extended gene is a polygonal arc of Γ having length 7. An extended gene is just the union of two consecutive genes. Say that an extended gene type is an equivalence class, up to translation, of extended genes. It turns out that there are 89 extended gene types. Given an extended gene X we define χ(X) = χ(X 1 ) ∪ χ(X 2 ), where X 1 and X 2 are the two genes comprising X.
Lemma 3.11 (Coherence) Suppose there is a list X 1 , ..., X 89 of extended genes, representing all the types, such that χ(X j ) is a polygonal arc for all j = 1, ..., 89. Then χ is coherent.
Proof: Let X be an arbitrary extended gene and let X be the translation equivalent extended gene on our list of 89. It suffices to show that χ(X) and χ( X) are translates of each other. For each object Y we associate to X, we let Y be the corresponding object for X.
Let X 1 and X 2 be the two genes comprising X. Let x 1 and x 2 be the two center points of these genes. Let β 1 and β 2 be the inflation maps associated to the gene types of X 1 and X 2 . To prove that X is translate equivalent to X it suffices to prove This is what we will do. Since Ψ is affine and injective on Z 2 it suffices to show that Let p j = Ψ(x j ) and p j = Ψ( x j ). Since X and X are translation equivalent, we have Let γ j : P j → T 2 be the special similarity associated to β j . We work in local Euclidean coordinates, so that γ j (x, y) = −φ −3 (x, y) + C j for some constant C j . Then Hence But we also know that Recall that a gene is a polygonal arc of length 6 contained in Γ 0 , the component of the arithmetic graph containing (0, 0). We are trying to verify the existence of an inflation generator. This inflation generator consists of a length 75 list of the form {(A j , A ′ j )}, where A j is a gene and A ′ j is a path that nicely shadows A j in the sense of §3.5. We associate some auxilliary objects to our list, namely: • Let P j be the dynamical polygon associated to A j .
• Let β j be the inflation map associated to (A j , A ′ j ).
• Let γ j : P j → T 2 be the special similarity associated to β j . Here γ j • Ψ = Ψ • β j , whenever all maps are defined.
Given these basic objects, here are the things we need to check: 1. Each endpoint of A ′ j is within 3 units of the corresponding endpoint of Φ(B j ), the dilation of the core B j of A j . We have a list of all the vertices involved and we just check this directly. See §8.
2. For each gene A j , with center vertex a j , we have correctly computed the dynamical polygons P j associated to [(A j , a j )].
3. We have γ j (P j ) ⊂ P ′ j , where P ′ j is the dynamical polygon associated to the pointed strand type [(A ′ j , a ′ j )]. Our method will not require us to compute P ′ j explicitly. 4. There is a complete list X 1 , ..., X 89 of representatives of extended genes such that χ(X j ) is a polygonal arc for j = 1, ..., 89. Here complete list means that every extended gene type is represented.
5. Our list A 1 , ..., A 75 of gene types is exhaustive and our list X 1 , ..., X 89 of extended gene types is exhaustive. There are no other gene types or extended gene types.
In this chapter we will explain the main theoretical points of our verifications. In §7 we will write enough pseudo-code so that the interested reader can see explicitly how we do all the calculations.

Computing the Polygons
Let A = A j denote one of the genes on our list. Let a −2 , ..., a 2 denote the 5 interior vertices of A. We are interested in computing the dynamical polygon P associated to the pointed strand type [(A, a 0 )]. Here we explain how P is computed. We don't actually need to know how to compute P for our proof−we just need to verify the answer is correct−but the method of computation suggests how we verify that the answer is correct.
We define a dynamical translation of the torus T 2 to be a map of the form (28) This operation makes sense because T 2 = R 2 /Z 2 is canonically an abelian group. We remind the reader that [(x, y)] is the equivalence class of the point (x, y) in T 2 . We say that (ǫ 1 , ǫ 2 ) is the type of the dynamical translation. Recall that P is partitioned into 26 open polygons (and their boundaries) as in Figure 2.5. We associate to A a list Q −2 , ..., Q 2 of 5 open polygons of the partition P. Here Q j is the polygon having the same local type as the vertex a j . Depending on A there are 4 dynamical translations T −2 , T −1 , T 1 , T 2 with the property that x ∈ P if and only if We call these four conditions Property X . Given this information we have Billiard King simply computes this intersection. If we replace each set Q j by its closure Q j , then we arrive at a criterion for when x ∈ P . We call this criterion Property X. Figure 3.1 (which we repeat as Figure 4.1 below, for convenience) shows the 75 dynamical polygons in dark grey. We list the actual coordinates in §8.2. The 24 light polygons comprise the complement. Here is their interpretation: A vertex p in the arithmetic graph lies on a closed polygon of length 5 or 7 if and only if Ψ(p) lies in the interior of one of the light polygons. We do not use these light polygons in this paper, but we note that they "round out"  For the first stage of our verification, we use the Billiard King algorithm to compute P to high precision. Next, we use the fact that the vertices of P are elements of 1 2 Z[φ] to guess the exact expression for the vertices. Let P G denote this guess. Our goal is simply to verify that P G = P .
First we check that each vertex of P G satisfies Property X. This tells us that P G ⊂ P . If P G is a proper subset of P then there is some edge e of P G such that every point x on the interior of e satisfies Property X. We rule this out by explicitly choosing one point per each edge of P G and showing that it fails to have Property X. In §7 we explain the calculation in detail.
When we run the computation for each of the 75 cases it works. Of course, the fact that Figure 4.1 is a partition of the torus gives extremely strong visual evidence that we have guessed correctly in the first place.

Checking the Shadowing Property
Our method here is quite similar to our method for verifying that P G = P . Let A = A j be one of our genes. Let β = β j , etc. be the objects associated to A. Our goal is to check that γ(P ) ⊂ P ′ . Let .. be the sequence of polygons in the partition P associated to the vertices of A ′ . We set up the indices so that the 0th vertex of A ′ is the distinguished point a ′ that shadows Φ(a). (Here a is the center of the gene A.) Just as we did for A, we generate the sequence of dynamical translations for the strand A ′ . This is a sequence whose length varies with the choice of gene. The length typically varies from 10 to 20. The condition that x ∈ P ′ amounts to checking that x satisfies what we call Property X ′ : We also have the corresponding Property X ′ , the closed version. We simply check that each vertex of γ(P ) satisfies Property X ′ . This means that the closure of γ(P ) is contained in the closure of P ′ . Hence γ(P ) ∈ P ′ . Billiard King computes all these quantities and displays them visually so that the user can see in each case that γ(P ) ⊂ P ′ .

Checking the Coherence
We will use the forwards direction of Γ 0 to check the coherence. In order to make the construction to follow we first need to know something about a certain finite portion of Γ 0 . We verify by direct inspection that Γ 0 contains a polygonal arc of combinatorial length 2 14 , connecting (0, 0) to a point in the positive quadrant.
In this section we will use the notation and terminology from §3.6 and the Coherence Lemma. In particular X 1 , ..., X 89 is a complete list of representatives of the extended gene types.
For N ≤ 13 let Γ N 0 denote the first 2 N segments of Γ 0 , starting from (0, 0) and moving in the direction of the positive quadrant. We call N sufficiently large if each extended gene type has a representative on Γ N 0 . We show by a direct computation that N = 10 is sufficiently large. Once we have our list of 89 gene types it is a completely straightforward matter of checking that they all occur on Γ 10 0 A forteriori , the polygonal arc Γ 10 0 contains each of our genes A 1 , ..., A 75 .
Our inflation generator gives rise to the inflation structure χ. Our goal is to prove that χ is coherent. Here is the strategy. Given any gene A ⊂ Γ 10 0 , we let a be the center point of A. We know that A has the same gene type as some gene A j in our inflation generator. The center point a j of A j is such that Φ(a j ) is close to the point β j (a j ). We record the gene type of the gene centered at β j (a j ) and then find a point a ′ ∈ Γ 13 0 which is near Φ(a). We then verify by direct computation that β j (a) = a ′ . Now we know that χ(A) ⊂ Γ 0 . We check explicitly that the points a ′ 1 , ..., a ′ 1024 occur in order on Γ 13 0 . This means that the two strands χ(A 1 ) and χ(A 2 ) overlap whenever A 1 and A 2 are consecutive genes on Γ 10 0 . But then χ(A 1 ) ∪ χ(A 2 ) is a polygonal arc. This works for all consecutive genes on Γ 10 0 , including the 89 we need for the Coherence Lemma. Applying the Coherence Lemma, we see that χ is coherent. See §7 for more details.

Checking the Completeness of the Lists
We compute explicitly that Γ 10 0 contains 75 gene types and 89 extended gene types. We also compute explicitly that Γ 13 0 has 75 gene types and 89 extended gene types. That is, when we go out 8 times as far, we see no new genes or gene types. We also recall that Γ 10 0 is shadowed by a subset of Γ 13 0 . This means that the process of replacing A j by χ(A j ), for each of j = 1, ..., 75 produces no new gene types and no new extended gene types. Iterating, and applying induction we see that our list of gene types and extended gene types is complete, in the forwards direction. We then make all the same checks in the backwards direction.
Remark: We could take a different approach to the completeness of our list of genes. Figure 4.1 shows a partition of the grey polygons of P into 75 light grey polygons and 24 dark grey polygons. As we mentioned above, the dark grey polygons correspond to points in the arithmetic graph contained on closed 5-gons or closed 7-gons. Our list of genes is complete because the remaining part of P is completely partitioned by the 75 corresponding dynamical polygons. Any additional gene type would have a dynamical polygon that overlaps with one of the ones we already have plotted. We do not insist on this approach because it requires an analysis of the 24 dark gray polygons in the picture, something we have not attempted. A similar picture would reveal the completeness of the list of 89 extended gene types. 5 Proof of Theorem 1.2

Existence of the Orbits
Under our affine map S ′ → S, discussed in §2.1, the Cantor set C from Theorem 1.2 is the Cantor set on the line {y = −1} with similarity constant φ −3 and endpoints (0, −1) and (2φ −3 , −1). For ease of discussion we identify C with a subset of R by dropping the second coordinate.
Lemma 5.1 The orbit of every point in C * is entirely defined.
We argue by descent. Suppose x = a + bφ ∈ C * , with a, b ∈ 2Z. We must have a = 0. We take |a| ≥ 2 as small as possible. If a < −2 then has |a ′ | < |a|. Hence a ≥ −2. If a = −2 then we must have b > 0. But −2 + 2φ is already too large to lie in C * . Hence a ≥ 2.
Case 2: Suppose x lies in the right half of C * . The map α(x) = 2 − φ 3 x maps the right half of C * back into C * . We compute By minimality |2 − a − 2b| ≥ a. If 2 − a − 2b ≥ a then a + b ≤ 1. Since a and b are even, this forces a + b ≤ 0. But then a + bφ < 0 and x ∈ C * . If 2 − a − 2b ≤ −a then b > 0 and a + bφ > 2. Again x ∈ C.
This takes care of all the cases. ♠

A Gap Phenomenon
Let Γ − denote the backwards half of Γ 0 . We want to see that Γ − rises away from ∂H and then back to ∂H infinitely often (in a precise way). Our main idea is to observe that some initial portion of Γ − rises and falls, and then to propagate this property using the self-similarity. One worry is that the approximate nature of the self-similarity of Γ − causes the "lowest points of approach" to drift away from ∂H. A gap phenomenon comes to the rescue. Let Equation 7  Lemma 5.2 Suppose that x ∈ (0, 16) and ψ(x) ∈ P 3 . Then x ∈ (0, 2φ −3 ).
Proof: Looking at Figure 2.5 we see that P 3 is the little parallelogram in the bottom left corner. The corner vertex of P 3 is (0, 0) and the opposite vertex It is now an easy exercise to check that the segment ψ([2, 16]) is disjoint from P 3 . One way to do this exercise is to plot the ψ-image of the 2000 maximally and evenly spaced points in the interval [2,16] and observe that none of them is within .0001 of P 3 . Since ψ is 1-Lipschitz, our plot guarantees that no point of [2, 16] lies in P 3 . We omit the details. ♠ Given a point p ∈ H, the halfplane containing the arithmetic graph, let v(p) denote the length of the vertical line segment connecting p to the line through the origin parallel to ∂H. For instance v(0, m) = m. (The line ∂H lies slightly below the origin.) Corollary 5.3 (Gap Phenomenon) Suppose p is a point of the arithmetic graph having type 3. If v(p) < 7 then v(p) < φ −3 .

Infinite Return
In this section we prove that O − (p) returns to every neighborhood of p infinitely often. We think of this as a warm-up to the proof of Theorem 1.2. Let A 0 be the gene through the origin. Let A ′ 0 be the strand that shadows it. Figure 5.1 shows the picture. The gene A 0 and its shadow A ′ 0 . The dynamical polygon P 0 associated to A 0 is contained in P 3 , because the center of A 0 has type 3. Thus P 0 is a small tile in the bottom left corner of Figure 2.5. Here we show a plot, and describe all the plotted objects in order of decreasing size. Each polygon is contained in the previous one. Referring to Figure 5.2: • The big L is the corner of our fundamental domain for T 2 .
• The big parallelogram is P 3 .
• The big triangle is P 0 .
• The small parallelogram is P ′ 0 , the polygon associated to A ′ 0 . • The small triangle is γ(P 0 ), where γ is the special similarity fixing Ψ(0, 0). Let A be some occurrence of A 0 on Γ − . Let a be the center point of A. The first site is (−21, 5). Let A ′ = χ(A) be the strand that shadows A. Let a ′ be the center point of A ′ . Our analysis shows that Ψ(a) and Ψ(a ′ ) both lie in P 0 . The point is that P ′ 0 ⊂ P 0 . Let's assume by induction that v(a) < φ −3 . Then, by the triangle inequality, and the definition of our inflation structure, v(a ′ ) < φ 3 × φ −3 + 4 = 5.
Since a ′ also has type 3, our Corollary above now says that v(a ′ ) < φ −3 . We can now start with the copy of A 0 based at a ′ . This produces a further point a ′′ , centered on a copy of A 0 , such that v(a ′′ ) < φ −3 . Thus we produce distinct points a, a ′ , a ′′ , ... ∈ Γ − all within φ −3 of ∂H. Let a (n) be the nth point produced by this process and let x (n) = T (a (n) ). The points x (n) all belong to O − (p).

Cantor Set Structure
Our argument above came from considering just the gene A 0 . We get the Cantor set structure by considering the action of two genes. Notice that A ′ 0 contains two genes having a core of type 3. Figure 5.3 shows the other gene A 1 with this property. Let A ′ 1 be the strand that shadows A 1 . It turns out that A ′ 1 and A ′ 0 have the same type. Moreover, the center point a ′ 1 of A ′ 1 is the center of another copy of A 0 . Figure 5.4 shows the corresponding dynamical polygons. This time P 1 , the little triangle in the bottom left corner, is disjoint from P ′ 1 . The map γ is the same one as for P 0 , and the parallelogram is again P ′ 0 = P ′ 1 . The tiny triangle inside P ′ 1 is γ(P 1 ). We set K = P 3 and K 0 = P ′ 0 and γ 0 = γ. There are several geometric pieces of information we now record. First, γ 0 (K) = K 0 . Second, let a 0 and a 1 be the two type-3 points of A ′ 0 . For instance, we might take A ′ 0 such that a 0 = (0, 0) and a 1 = (−5, 1). From Equation 7 we compute that Geometrically, the translated parallelogram K 1 = τ (K 0 ) has (0, 0) as a vertex and fits exactly into the lower left corner of K. Figure  5.5 shows a schematic picture. Let γ 1 = τ • γ 0 . Then γ j (K) = K j . We define K 00 = γ 0 (K 0 ) and K 01 = γ 0 (K 1 ), etc. Figure 5.5 shows a schematic picture of the first few of these sets. The reader might expect K 00 to be on the top and K 11 on the bottom, rather than in the middle. This twisting of the labelling comes from the fact that the multiplier of γ is −φ −3 , a negative number. The fixed point of γ is the nested intersection K 0 ∩ K 00 ∩ K 000 ... The limit set C ′ of the semigroup γ 0 , γ 1 is a Cantor set whose endpoints are the far opposite vertices of K 0 . Now we can explain the Cantor set structure. Suppose that X is a type 3 point Γ − such that X is the center of a gene A that is a copy of either A 0 or A 1 . Suppose also that v(X) < φ −3 . Let X 0 and X 1 be the two points of A ′ having type 3. Our notation is such that X 0 is the center of a copy of the gene A 0 and X 1 is the center of the copy of the gene A 1 . The point X 0 shadows the dilated point φ 3 X, and the point X 1 is several units to the right. Our arguments above show that • v(X 0 ) and v(X 1 ) are both less than φ −3 .
Inflating again, we produce the 8 points, corresponding to the binary strings of length 3, and so on. In general, we produce one point X β ∈ Γ − for each finite binary string β. (These points are not all distinct, e.g. X 00 = X 0 .) By construction Ψ(X β ) ⊂ K β .
Therefore, the closure of the vertex set of Ψ(Γ − ) contains the Cantor set C ′ . Let I 0 = [0, 2φ −3 ]. We have already remarked that ψ(I 0 ) is long diagonal of P 3 , the segment that connects the two endpoints of C ′ . Recall that T maps the vertices of Γ − into the backwards orbit O − (p). Also Ψ = ψ • T . Therefore C ′ = ψ(C), where C ⊂ I 0 is an affine image of C ′ . Indeed, C is the Cantor set from Theorem 1.

2-adic Structure
Since ψ(I 0 ) is the long diagonal of P 3 , the two conditions x ∈ Z 2 ∩ H and T (x) < 2φ −3 imply that x has type 3. We say that such points are basepoints of Γ.
Examining our construction we see that the two basepoints X β and X β ′ are equal if and only if n(β) = n(β ′ ). Moreover, as we travel along Γ − away from (0, 0) we encounter the points X β in order of the integers they represent! Let θ 2 : Z 2 → C be the homeomorphism from Theorem 1.2. By construction, we have θ −1 2 (0) = p. Let T : Z 2 → [0, ∞) be the map from Equation 3. Let X and X 0 and X 1 be the points referred to in our shadowing construction above. We have already mentioned that Ψ(X 0 ) = γ j (X); j = 0, 1.
But, by construction T (X β ) is the nth point of O − (p) ∩ I 0 , which is the same as the nth point of O − (p) ∩ C. Hence θ 2 maps the nth point of O − (p) ∩ C to n. This is a special case of the first statement of Theorem 1.2. Now we will deal with the question of return times and excursion distances for the points of O − (n). Given a basepoint X, let Γ + (X) be the forwards portion of Γ 0 which starts at X. Let X and X 0 and X 1 be as in the previous section, so that X 0 is the basepoint that shadows φ 3 X.
By the inflation property, Γ + (X 0 ) closely follows φ 3 Γ + (X). Also, one can see by looking at a single example that the initial portion of Γ + (X 0 ) rises up at least 10 units from ∂H before coming back towards ∂H. Moreover, the next basepoint (after X 0 ) encountered by Γ + (X 0 ) is the one that shadows the dilation of the next basepoint encountered by Γ + (X). These properties show that Γ + (X 0 ) rises up about φ 3 times as high as Γ + (X), and takes about φ 3 times as long to return to the next basepoint as does Γ + (X). The next basepoint encountered by Γ + (X 0 ) is the one that shadows the dilation of the next basepoint encountered by Γ + (X). On the other hand, Γ + (X 1 ) just travels a few units to the right before returning to the basepoint Γ + (X).
Given any binary string β, let ν(β) denote the number of 0s on the right of β. For instance ν(11000) = 3. Equivalently, ν(β) equals the highest power of 2 dividing n(β). Given X = X β let ν = ν β . Applied inductively, our arguments show that Γ + (X) rises up roughly φ 3ν units before returning to the next basepoint after roughly φ 3ν units of time. Here X = X β . Hence the excursion distances and return times for the forward orbit of the nth point x n of O − (p) ∩ C are proper functions of the 2-adic distance from θ −1 2 (x n ) to 0.
By simply reversing the direction of Γ + (X) we see that the excursion distances and return times for the forwards orbit of x n are proper functions of the 2-adic distance from θ 2 (x n ) to −1. The point here is that θ 2 maps n and n − 1 respectively to the endpoint of Γ + (β) and the first basepoint it encounters when travelling to the right.
There is one more observation we want to make. If X is a basepoint and ν(X) is very large, then a very long initial portion of Γ + (X) looks exactly like Γ + (0, 0), the forward portion of Γ 0 that starts at (0, 0). This is because both strands are "produced" by many iterates of the same inflation process. An equivalent way to see this is that any finite portion of Γ 0 is determined by some small dynamical polygon in T 2 containing Ψ(0, 0). If X is some point with ν(X) large, then Ψ(X) belongs to this same dynamical polygon.

Extension to the Cantor Set
Now we put everything together and finish the proof of Theorem 1.2.
Lemma 5.4 (Rising) For each positive constant K and each lattice point X ∈ Γ − , there exists a constant K ′ = K ′ (K, X) with the following property: If we take K ′ steps in either direction along Γ − , starting at X, then we rise at least K units above ∂H.
Proof: Consider the forwards direction. The backwards direction is similar. It this lemma is false then we can encounter a long string of basepoints {X i } such that ν(X i ) is always small. But the map x → x − 1, when iterated, brings any point very close 2-adically to 0 within a uniform number of steps. Hence, we don't have to walk very long from X before we hit a basepoint with high ν-value, and then we rise up steadily away from ∂H for a long time. This comes from the fact that a long initial portion of Γ + (X) is a translate of a long initial portion of Γ + (0, 0), as we remarked above. ♠ Lemma 5.5 For any y ∈ C * and any K > 0 there are positive integers n + = n + (y, K) and n − = n − (y, K) such that the (n + )th point of O + (k) and the (n − )th point of O − (y) are at both least K units from the origin.
Proof: We can find a sequence {x n } ∈ O − (p) converging to y. For n sufficiently large, the first K ′ iterates of x n and y will have the same combinatorial structure. Here K ′ → ∞ as n → ∞. But then the first K ′ iterates of y remain (say) within 1-unit of the corresponding K ′ iterates of x n . Letting K ′ be as in the Rising Lemma, we see then that some point of x n rises up K units and therefore some iterate of y rises up at least K − 1 units. Since K is arbitrary, the orbit of y (in either direction) is unbounded. ♠ We continue with the notation from the lemma. Let x n,− denote the forward return to C * of the point x n . As long as y = p, there is some uniform K such that x n and x n,− are separated by at most K units. Here K depends on y but not on n. This we see that y − and y are separated by at most K units. For n large enough the orbit of x n has the same combinatorial structure as the orbit of y for the first K iterates. Hence y − −y = x n,− −x n . Therefore, by continuity, θ −1 2 (y − ) = θ −1 2 (y) − 1. The same continuity argument takes care of the statement about the return times and excursion distances for the forward orbit. This proves the first statement of Theorem 1.2, and the second statement has essentially the same proof.
6 Proof of the Arithmetic Graph Lemma

The Computational Evidence
Before we launch into the proof of the Arithmetic Graph Lemma we discuss how 5 we discovered that it was true. Our proof of the Arithmetic Graph Lemma is logically independent from the way we discovered it, but the computations we made during the discovery process will serve us below at a certain step in our proof, namely the step where we show that Lemmas 6.6 and 6.7 below are equivalent to the Arithmetic Graph Lemma.
Recall that Γ ⊂ H, a certain halfplane in R 2 . We thought of Γ as a union of paths of physical particles, and we got the idea to partition H into parallel bands, each of which has width φ. We thought of these bands as semipermeable membranes, letting various particles pass through and deflecting others. Experimentally, we noticed that the permeability of the nth band depended somehow on the decimal part of n/φ. In particular, the bands indexed by Fibonacci numbers are the least permeable and behave the most like mirrors. Thus, the quantity δ(n/φ), an R/Z valued coordinate, seemed relevant to the "physics" of a particle in the nth band. Here δ(x) is the decimal part of x.
The other quantity that seemed to influence the "physics" of a particle was the relative position of the particle within the band that contained it. Like our first coordinate, this is another coordinate that takes values in R/Z. Thus, the local properties of Γ seemed to be determined by two coordinates in R/Z, which we considered as a point in T 2 . When we wrote down the formulas for these coordinates and tuned them, we arrived at our map Ψ from Equation 7.
Once we had Ψ we performed an experiment. We took some huge sample of Γ, and fixed some local type. Sampling lattice points p, we plotted Ψ(p) if and only if p had that local type. We noticed that the resulting plot was very dense in either a single convex polygon, or else the union of several convex polygons, depending on the type. (Later we indexed the types so that each type corresponds to a single polygon.) It was easy to guess the vertices of the polygons from the plots, and this is how we determined the partition P. Indeed, Billiard King draws Γ in two ways, using the partition and using the dynamics, and the picture is the same. Now we turn to the proof.

Factoring the Return Map
Say that a strip is a region A ⊂ R 2 bounded by 2 parallel lines, ∂ 0 A and ∂ 1 A. Let V be a vector such that ∂ 0 A + V = ∂ 1 A. Given the pair (A, V ) we (generically) define a map E : R 2 → A by the formula E(x) = x − nV where n is the unique integer such that E(x) ∈ A. This map is well defined unless x lies in a discrete infinite family of parallel lines.
There is a unique affine functional f (x, y) = a 1 x + a 2 y + a 3 such that f L (V ) = 1, and f (x, y) ∈ (0, 1) iff (x, y) ∈ A. Here f L (x, y) = a 1 x + a 2 y is the linear part of f . Given f we have the following explicit formula: Equation 31 is defined unless f (p) is an integer. We say that α = (a 1 , a 2 , a 3 ) is the triple associated to (A, V ). Each strip A j in Figure 6.1 is obtained by extending an edge of the side of S, and then rotating this extended side through one of the vertices that does not contain the edge. Each vector V j is twice the difference between a pair of vertices on the kite. Let E 1 , E 2 , E 3 , E 4 be the corresponding strip maps. Here is the data associated to these maps: Let E j+4 = E j for j = 1, 2, 3, 4.
. Then x 8 and Υ R (x 0 ) lie on the same vertical line.
Proof: Let V j+4 = −V j for j = 1, 2, 3, 4. For any x on which Υ is defined, where V x is twice one of the vectors pointing from one vertex of S to another. The vectors V 1 , ..., V 8 have this form. The lines comprising our strips divide R 2 into a finite number of bounded regions and a finite number of unbounded regions. Let K denote the closure of the union of bounded regions. One can check, with a little experimentation, that the finitely many iterates p, Υ(p), ..., Υ R (p) avoid the set K provided that p = (x 0 , ±1) and x 0 > 4. We will consider such points first.
The complement of K is divided into 8 sectors Σ 1 , ..., Σ 8 . Each sector Σ j is bounded by one line of A j−1 and one line of A j , and contains a noncompact subset of A j−1 . The left hand side of Figure 6.1 indicates half of these sectors. It is easy to check that q ∈ Σ j implies V q = V j . This result immediately implies our lemma for points (x 0 , ±1) where x 0 > 4 and all maps are defined. When x 0 < 4 we can just check the few cases by hand. Indeed, to be sure we sampled 1 million evenly spaced points in the two intervals (0, 10)×{±1}. ♠ The Pinwheel Lemma lets us factor the return map. The composition E 8 ...E 1 maps x 0 ∈ C(±) to x 8 ∈ R 2 , and the y-coordinate of x 8 is ±1 + 4k. In each case, Ψ R (x 0 ) ∈ C(±). Hence

Four Dimensional Compactificaton
We say that a strip map E, with associated triple (a 1 , a 2 , a 3 ) and vector By inspection, the strip maps from Equation 32 are all special.
Let T 4 8 = (R/8Z) 4 . Consider the following embedding of R 2 into T 4 8 : Here [v] 8 denotes the image of v ∈ R 4 in T 4 8 . We only care about the next result for our 4 maps, but the argument is easy to make in general. We give explicit formulas for the extensions of our 4 maps in §7.8. Proof: We fix p 1 ∈ R 2 on which E is defined, and consider points p 2 such that ψ(p 1 ) and ψ(p 2 ) are close together in T 4 8 . Setting p = p 2 −p 1 , this means that the coordinates of ψ(p) are all near 0. We make this assumption about the coordinates of ψ(p) and treat these coordinates as small real numbers.
Let f be the functional associated to E. Since Z The special property of our map implies that u ± = 1 2 (u 1 ± u 2 ) ∈ Z for u = s, t. We have From equation 35 and the reduction principle, f (p 1 )−f (p 2 ) is extremely near an integer, and much closer to an integer than f (p 1 ). Hence f (p 2 ) is not an integer and E is defined on p 2 . Let N j be the floor of f (p j ). The properties of f (p 1 ) − f (p 2 ) and f (p j ) just mentioned imply that N 2 − N 1 is the integer closest to f (p 2 ) − f (p 1 ).

Equation 35 gives us
Let V = (v 1 , v 2 ) be the vector associated to E. Equation 31 yields To prove the existence of E it suffices to show that each coordinate of ψ(2KV ) is a Z[φ] linear combination of the coordinates of ψ(p). Let 2KV = (w 1 , w 2 ). By hypotheses v 1 ± v 2 ∈ 4Z[φ]. Hence φ a (w 1 ± w 2 ) ∈ 8Z[φ] for any exponent a ∈ Z. (We only care about a = 0, −1.) In light of this observation, it suffices to show that δ(Kφ) is near 0 and also a 1 8 Z[φ] linear combination of the coordinates of ψ(p).
Equation 36 gives The starred inequality comes from the fact that δ(β) is near 0. From the reduction principle and the real multiplication principle we see that both δ(β) and δ(φβ) are near 0 and 1 8 Z linear combinations of the coordinates ψ(p). This proves what we want about the coordinates if ψ(2KV ).
It only remains to find the domain of definition for E on T 4 8 . The map E is defined on the complement of an infinite union of evenly spaced lines in R 2 . These lines consist of points (x, y) satisfying the integral linear equations s 3 , s 4 , t 3 , t 4 ∈ Z. Applying the map ψ we see that the image of these points is contained in a finite union of flat embedded 3-tori. Our construction shows that E is defined and locally affine on each component of T 4 8 − Y . ♠

Geometry of the Return Map
We begin with a consequence of the Pinwheel Lemma. Let π 1 : R 2 → R be projection onto the first coordinate.
Proof: To see this note that the "octagonal spiral" Σ in Figure 6.1 connecting the points x 0 , ..., x 8 , ζ(x 8 ) is within a bounded distance of being symmetric about the origin. In other words, the image of Σ under reflection through the origin lies within a uniformly bounded tubular neighborhood of Σ. In terms of the displacement vectors x 1 −x 0 , x 2 −x 1 , ..., we see that the opposite sides of Σ cancel, up to a uniformly bounded error. Hence there are uniformly bounded integers α j , depending on (x, 1), such that Υ R (x, 1) − (x, 1) = α j V j . ♠ We now return to the theme taken up in the previous section. The analog of the Extension Lemma is not quite true for the map ζ in Equation 32 but nonetheless a similar result holds. The domain for ζ is the union L of horizontal lines whose y-coordinates are odd integers. Consider the map ψ : C(±) → T 2 given by Lemma 6.4 There is a locally affine map ζ : T 4 8 → T 2 such that ζ • ψ = ψ•ζ.
Proof: We define ζ : R 4 → T 2 by the formula The image in T 2 is unchanged if we add multiples of 8 to the x i coordinates. Hence ζ factors through a locally affine map (which we give the same name) ζ : T 4 8 → T 2 . Letting m be an odd integer, we compute The choice of sign for ±1 depends on the congruence of m mod 4. ♠
Notice that the first and third (or second and fourth) coordinates of ψ completely determine the whole image of C(+) in T 4 8 . Thus T 2 (+) is a flat 2-dimensional torus. The same goes for T 2 (−).
Let E j be the extension to T 4 8 of E j . We give the explicit formula in §7.8. Referring to Lemma 6.4 we define Combining the Extension Lemma with Lemma 6.4 we have Lemma 6.5 (Constancy Lemma) Suppose that X ⊂ T 2 (±) is a path connected open set on which the map Υ R is entirely defined. Suppose that p 1 , p 2 ∈ C(±) are points such that ψ(p j ) ∈ X for j = 1, 2. Then Proof: Assume without loss of generality that the path is on T 2 (+). Since Υ R is entirely defined on X it is also continous on X. The map is a continuous function of α ∈ X.
A dense subset of X has the form ψ(y, 1), where y ∈ R. For such points we have v( ψ(y, 1)) = 1 Υ R • ψ(y, 1) − ζ • ψ(y, 1) = 2 ψ • Υ R (y, 1) − ψ • ζ(y, 1) = 3 ψ • Υ R (y, 1) − ψ(y, 1) = 4 ψ • π 1 (Υ R (y, 1) − y, 1) The first equality is by definition; the second one is Equation 42 and Lemma 6.4; the third one is the fact that ζ is the identity on C(±); the fourth one comes from linearity, and from the fact that ψ only depends on the first coordinate. By Lemma 6.3, the last expression in Equation 43 takes on only finitely many values. Therefore, v(y, 1) takes on only finitely many values. Now we know that the continuous map v only takes finitely many values on a dense subset of the path connected subset X. Therefore v is constant on X. Since v is constant on X, the calculation in Equation 43 gives the same answer for all y ∈ C(+) such that ψ(y) ∈ X. The conclusion of the lemma follows immediately from setting y = x 1 , x 2 . ♠

The Proof Modulo the Question of Definedness
Referring to Equations 7 and 39, we have Ψ = ψ • T , assuming that we identify the range of T with either C(+) or C(−) by padding the second coordinate with a ±1. Given x + ∈ C(+), let x − be the point in C(−) with the same first coordinate. Let Lemma 6.6 The point ψ(x + ) = ψ(x − ) lies in an open polygon of the partition P of T 2 , and this polygon determines the unordered pair {v( Computing just a single point per polygon−we computed millions−we check that the quantities given in Lemma 6.6, when hit with the map T −1 , match the types shown in Figure 2.5. Therefore Lemma 6.6 (and this small computation) implies the Arithmetic Graph Lemma.
The polygons of P do not determine the ordered pair of numbers in Lemma 6.6. For this we need to pass to a finite cover. The map ζ : T 4 8 → T 2 from Lemma 6.4 gives a finite covering map from T 2 (+) to T 2 . We lift the partition P to a finite partition P of T 2 (+). We do the same thing for T 2 (−).
Lemma 6.7 The point ψ(x + ) lies in an open polygon of P and this polygon determines v(x + ). Likewise for v(x − ).
A small amount of computation shows that Lemma 6.7 implies Lemma 6.6. Hence Lemma 6.7 implies the Arithmetic Graph Lemma.
Lemma 6.8 Suppose that Υ R is defined on each open polygon of the partition P of T 2 (±). Then Lemma 6.7 is true.
Proof: It follows immediately from Lemma 6.8 and from the Constancy Lemma that if ψ(x + ) lies in an open polygon of P, then v(x + ) is determined by this polygon. Likewise for x − . We just have to rule out the possibility that ψ(x + ) lies in the boundary of one of the polygons. The point x − has the same treatment.
Suppose that ψ(x + ) lies in the boundary of some tile of P. We know Υ R is defined at x + . But then Υ R would be defined and continuous in a neighborhood of ψ(x + ) on T 2 (+). But then two adjacent tiles of P on T 2 (+) would determine the same v values. But then two adjacent tiles of P would determine the same unordered pair of v values. We check computationally that this does not happen. Contradiction. ♠

Verifying the Definedness
At this point we have reduced the Arithmetic Graph Lemma to verifying the hupotheses of Lemma 6.8. We will explain how we make the verification.
We know that E j+4 = E j for j = 1, 2, 3, 4, but for notational purposes, it is convenient to just write E 1 , ..., E 8 . We let F k = E k ... E 1 . We interpret F 0 as the identity map. Also, Υ R = ζ • F 8 . To show that Υ R is defined at some point x it suffices to show that the maps F 1 , ..., F 8 are all defined on x.
We will see from the explicit description of our map E k , given in §7.8, that there is a union Y k of two 3-tori, such that T 4 8 − Y k consists of two connected components C k (0) and C k (1) on which the map E k is entirely defined and locally affine.
If Υ R is defined on a point x ∈ T 4 8 then we can define a length 8 binary sequence ǫ 1 , ..., ǫ 8 , by the property that F k−1 (x) ∈ C k (ǫ k ) for k = 1, ..., 8. In short, we can associate a canonical binary sequence of length 8 to any point x on which Υ R is defined. We call this sequence the itinerary of x.
Here we define a slightly more general notion of an itinerary. Given an itinerary ǫ 1 , ..., ǫ 8 we can define E k on Y k by demanding that E k extends continuously to the closure of C k (ǫ k ). Then E k is completely defined on T 4 8 . It is continuous on the closure of C k (ǫ k ) and on the interior of C k (1 − ǫ k ), but not globally continuous. With this definition, we say that x ∈ T 4 8 has extended itinerary ǫ 1 , ..., ǫ 8 if the maps F k (when extended) are all defined on x and F k−1 (x) lies in the closure of C k (ǫ k ) for k = 1, ..., 8. Put another way, x has extended itinerary ǫ provided there exist points arbitrarily close to x that have itinerery ǫ.
We define the stretch of a convex polygon P to be the maximum distance in T 4 8 between consecutive vertices of P . We denote this by σ(P ).
Lemma 6.9 (Definedness Criterion) Suppose that • Υ R is defined on some point of P , and this point has itinerary ǫ.
• All the vertices of P have extended itinerary ǫ.
Then Υ R is defined on all points of P , and all these points have itinerary ǫ.
Proof: Looking at explicit formulas for our maps given in §7.8.1, we see that the Euclidean distance between separare components of Y k is at least 2 √ 2. Hence, if v 1 , v 2 are two points in the closure of C k (ǫ k ) which are less than 2 √ 2 apart, then the line segment v 1 v 2 lies in the closure C k (ǫ k ). Suppose we have shown by induction that F k−1 is defined on P . Let P ′ = F k−1 (P ). The hypotheses of this lemma say that every edge of P ′ has length less than 2 √ 2, and the endpoints of such an edge are in C k (ǫ k ). Hence, all the edges of P ′ lie in C k (ǫ k ). Since ∂C k (ǫ k ) is three dimensional, and (by induction) P ′ is a planar polygon, we must have P ′ ⊂ C k (ǫ k ).
If some point of the open P ′ actually lies in ∂C k (ǫ k ) then all of P ′ must lie in ∂C k (ǫ k ). The point here is that the tangent plane at this bad point must be contained in the tangent space to Y k , because there is no crossing allowed. We also know that some point of P ′ lies in C k (ǫ k ), so the above bad situation cannot occur. Hence all points of P ′ lie in C k (ǫ k ). This completes the induction step. ♠ We now mention a trick that makes the Definedness Criterion more useful. Given a line segment s ∈ T 4 8 , with endpoints p 1 and p 2 , we let s ′ denote the partition of s into the two segments [p 1 , q] and [q, Note that q ∈ s because φ −1 + φ −2 = 1. We might have chosen q to be the midpoint of s, but our choice interacts better with Z[φ]. Given a polygon P , we let P ′ denote the polygon, with twice as many vertices, obtained by subdividing each edge of P . In general, let P (n) = (P (n−1) ) ′ . Then P (n) has 2 n times as many vertices as P and the stretch of P (n) is φ −n times the stretch of P . Thus, by taking a sufficiently large integer n, we can guarantee the last condition of the Discreteness Criterion without even computing the stretch. We take each polygon P of our partition P and perform the following calculation. We take the 10th subdivision P (10) and check the Definedness Criterion. (This is overkill.) This verifies the hypotheses of Lemma 6.8 and thereby completes the proof of the Arithmetic Graph Lemma.
We give details of our calculation in §7.8.

Arithmetic Operations
We do all our computations with complex numbers of the form Here I = √ −1. We call such a number an IntegerComplex and represent it as a sequence Given a and b, both IntegerComplex objects, we perform the following operations: • a + b and a − b are computed by adding or subtracting components.
• 2ab, another IntegerComplex, is computed by expanding out all the terms and grouping them.
• The conjugate a is obtained by negating the third and fourth coordinates of a.
Now we explain how we test the sign of the number a = a 0 + a 1 φ. Since φ is irrational, we need a trick. The idea is to consider f 50 = 12586269025; f 51 = 20365011074 f 52 = 32951280099. (48) Here f n is the nth Fibonacci number. The quantity a 0 + a 1 φ is positive (respectively negative) provided that both sums are positive (respectively negative). This works because the sign of the difference φ − f n+1 /f n alternates with n. We implement our routine, called sign, using the BigInteger class in Java, which does integer arithmetic correctly on huge integers. The routine sign certainly could fail for some inputs, but it never fails for the inputs we give it. The point is that we always give it inputs involving pretty small integers.
Our routine dec takes the decimal part of a IntegerComplex and returns a IntegerComplex in [−1/2, 1/2]. In defining dec we take the decimal part of a IntegerComplex using floating point arithmetic to compute the nearest integer. The computation does not use exact integer arithmetic, but then we use the sign routine to check rigorously that our guess always lies in [−1/2, 1/2], thereby guaranteeing that get the same answer as if we had used purely integer arithmetic calculations.
With these preliminaries in place, we describe the IntegerComplex version of our map Ψ given in Equation 7.

Classification into Types
An IntegerPolygon is a finite list of IntegerComplexes, namely the vertices. Given an IntegerComplex z and an IntegerPolygon P , let T i (z, P ) denote the triangle determined by the ordered triple of IntegerComplexes z, P (i) and P (i + 1). The indices are taken cyclically. Using our sign routine, we have a straightforward routine signArea that computes the orientation of a triangle of IntegerComplexes and vanishes of the points are collinear. The following routine returns a 1 if z is contained in the interior of P and a 0 otherwise. A straightforward variant, IsContainedClosed checks if z ∈ P .
isContainedOpen(z,P ): loop for the number of vertices of P : check that T i (z, P ) and T i+1 (z, P ) have nonzero signArea if(false) return(0) check that T i (z, P ) and T i+1 (z, P ) have the same signArea if(false) return(0) endloop return (1) Recall that the arithmetic graph Γ is a certain subset of Z 2 ∩ H, where H is a certain half-plane. Each point (x, y) ∈ Z 2 has a type, which we compute by determining which open polygon of P contains Ψ(x, y) ∈ T 2 . Here we explain how we compute this in practice. Lifting P to R 2 we get a tiling P of R 2 . We treat psi(x,y) as a point in R 2 and check which tile of P it lands in. We have arranged that the image of psi is fairly close to the origin, and so we only have to check a smallish portion of the tiling.
We accomplish our goal using two routines. The first of our routines checks whether or not an IntegerComplex z near the origin in R 2 is contained in a union of integral translates of a given IntegerPolygon P . The program returns a 1 if the answer is yes.
isLatticeContainedOpen(z,P ): loop over i from −3 to 3 and over j from −3 to 3 if(isContainedOpen(z + (i, j),P )= 1 then return (1)  endloop We always take P as one of the polygons from our partition P. These polygons are listed in §7.5. (See also Figure 2.5.) Our routine classify combines our routine psi with the routine isLatticeContainedOpen to classify each point of Z 2 into the local types.
We use the routine isContainedClosed in place of isContainedOpen in case we want to check that a given point is contained in a closed polygon.

Types and Dynamical Translations
There are 23 nontrivial local types of vertex in the arithmetic graph, as shown in Figure 2.4. We list these types here (rather than in the appendix.) The array indicates that one of the edges emanating from a vertex of type T j . is (a 1 , a 2 ) and the other one is (b 1 , b 2 ). In other words, the two columns of the matrix encode the type. The ordering of the two columns is arbitrary. We list the types T 1 , T 3 , ..., T 23 . Similar to what happens above, T 2j is obtained by negating all the entries of T 2j−1 , for j = 1, ..., 11. Here is the list: For each of these types, there are two associated dynamical translations of T 2 . Referring to the matrix in Equation 50, the two maps are: (51) These maps relate the points Ψ(v) and Ψ(v ′ ) where v is the vertex and v ′ is one of the vertices connected to v by the arithmetic graph. The following routine starts with a pair (x, y) obtained from one of the columns of the above matrices and returns the IntegerComplex z which effects the corresponding dynamical translation. That is, on R 2 the dynamical translation is given by w → w + z. The next routine gets the IntegerComplex by which we translate. Here x, y ∈ {−1, 0, 1}.

The Sequence Generator
If v 1 and v 2 are two consecutive vertices of the arithmetic graph, then one of the two maps associated to v 1 coincides with one of the two maps associated to v 2 . For instance, if a vertex of type 1 is connected to a vertex of type 21 we could write T 1 T 21 1 0 0 1 1 −1 or 1 21 1 0 1 1 The second notation system is a simplification of the first. We drop off the last column because it is not of interest to us. The information in the right

Checking the Dynamical Polygons
Each array A determines a dynamical polygon P = P (A), as in §4.2. Here we explain how to check directly that a point s ∈ T 2 lies in the closure of P or else in the interior of P (depending on our interest.) The point s is always given as the projection to T 2 of a certain lift s ∈ R 2 which we give the same name. Let P j denote the jth tile in the partition P of T 2 . As above, we identify P j with a particular lift to R 2 . The following routine returns a 1 provided that s is contained in the interior of P .

matchOrbitOpen(s,A):
let S = s loop for i = 1 to length of A check that isLatticeContainedOpen(S,P a i )= 1. if false return(0) if true then: let z =getMap(x i ,y i ) let S = S + z (act on S by the dynamical translation) endloop As a variant, we check that s is contained in the closure of P by using isLatticeContainedClosed in place of isLatticeContainedOpen.
We can now explain exactly how we check our guess P G for the 75 dynamical polygons associated to the 75 genes. Here is the 3-step process.
• For the jth gene A j we let (x j , y j ) be the location of the center a j of A j . We use getOrbit(x j ,y j ) to generate the 3-itinerary A = (L j , R j ).
• We check that each IntegerComplex v representing a vertex of P G is contained in the closure of P = P A using matchOrbitClosed(v,L j ) and then matchOrbitClosed(v,R j ).
• For each edge e of P G we produce a IntegerComplex v contained in the interior of e by applying interpolate to the two endpoints of e.
Given v we then check that one of the two runs matchOrbitOpen(v,L j ) and matchOrbitOpen(v,R j ) returns a 0. This is to say that v is not contained in the interior of P .
We list the dynamical polygons P 0 , ..., P 74 in §8.2. We list the centers for our genes in §8.3.

The Shadowing Property
We begin by recalling the basic setup. Let A be a gene from our inflation generator and let B be the gene core. Let a be the center vertex of A. Let A ′ be the strand which shadows Φ(A). Recall that Φ is dilation by φ 3 . Let P be the dynamical polygon associated to A and let P ′ be the dynamical polygon associated to A ′ . Let β be the inflation map and let γ : P → T 2 be the associated special similarity. We want to verify that γ(P ) ⊂ P ′ .
The first main task is to compute the dymamical sequences associated to A ′ We store A ′ as a triple {(x j , y j )} of points. Here (x 2 , y 2 ) is the point a ′ that comes close to Φ(a), and (x 1 , y 1 ) and (x 3 , y 3 ) are the two endpoints of A ′ . In §8.4 we give the list of triples.
A variant of getOrbit recovers the sequence of types from the triple. This variant starts at a ′ and moves out in either direction until it encounters the two endpoints. In other words, we just replace line 4 of getOrbit with a check that the current point equals neither (x 1 , y 1 ) nor (x 3 , y 3 ). Technically we could avoid this reconstruction problem just by saving the sequences attached to A ′ 1 , ..., A ′ 75 , but we prefer not to store so much data. Below we will list out the 75 triples. Now we explain how to compute γ. We have already defined the routine psi above, which chooses some lift of Ψ(a) to R 2 . Here we explain an improved version, which chooses the lift of Ψ(a) that is contained in P . The idea is to find a "correction vector" λ ∈ {−7, 7} 2 such that psi(a)+λ ∈ P . This always works, and we call the result canonicalPsi. It is a better lift of Ψ. From the way we have constructed A ′ , we know that γ maps canonicalPsi(a) into P ′ . Thus, we can use our knowledge of canonicalPsi(a) to compute γ. We seek a pair of integers (m, n) such that We set y =canonicalPsi(a) and then test small integer choices of m and n until we find a choice which leads to γ(y) ∈ P ′ . To test that γ(y) ∈ P ′ we don't need to compute P ′ . We simply check that γ(y) follows the dynamical sequences associated to A ′ . In other words, we just go back to the definition of P ′ . We make the same kind of loop as in the routine canonicalPsi, with |m|, |n| ≤ 7. This always works.
Once we have γ we list out the vertices of P as P 1 , ..., P k and check that γ(P i ) follows the dynanical sequences associated to P ′ . Here k ≤ 5 for each of the 75 choices.

Checking Coherence
Let g 1 , ..., g 1024 be the first 1024 points along Γ 0 . The point g j is the center of a gene G j . Let β j be the inflation map we associate to G j using our inflation structure χ. The list β 1 , ..., β 1024 consists of multiple references to the same 75 inflation maps. For each index j we produce a point g ′ j ∈ Γ 0 , always within 3 units of Φ(g j ), such that

Checking the Partition
Here we explain the calculations from the end of §6.6.

Explicit Formulas
Let E j be the extension of E j to T 4 8 guaranteed by the Extension Lemma. We can rigorously compute the formulas for these maps just by making a few calculations. (We checked the formulas on millions of points.) One general feature of the map E j is that the corresponding "undefined set" Y j consists of two parallel 3-tori. The complementary region T 4 8 − Y j consists of two regions. This feature is not necessarily clear from our description below, because we describe our maps in terms of coordinates on the set (−4, 4) 4 , which is the interior of a fundamental domain for T 4 8 . The action on T 4 is obtained by piecing together the definitions across the boundaries of [−4, 4] 4 . In all cases, we will list the following data: • The linear part L of E j .
• For each interval I of the partition we give an array of the form v(I) = a 11 a 21 a 31 a 41 a 12 a 22 a 32 a 42 This array stands for the vector a 11 + a 12 φ 2 , a 21 + a 22 φ 2 , a 31 + a 32 φ 2 , a 41 + a 42 φ 2 In case all the entries of the array are 0 we will save space by just writing [0] in place of the array. Our map is then given by E(x) = L(x) + v(I), where I is such that d(x) ∈ I. This definition makes sense except for the points x where d(x) lies in one of the dividing points listed above.

Reducing to Planar Polygons
The polygons in the partition P are subsets of the torus T 4 8 . In this section we explain how we arrange our computation so that we just have to consider polygons which are subsets of R 4 . Let T 2 4 = R 2 /(4Z 2 ). Then T 2 4 is a square torus which is naturally a 16-fold cover of T 2 . Let P denote the lift of P to T 4 2 . If P k is a polygon of P, then P k is the projection to T 2 of the convex hull of certain vertices {v k1 , ..., v kn }. For each (ǫ 1 , ǫ 2 ) ∈ {0, 1, 2, 3} 2 we can form the convex polygon P k (ǫ 1 , ǫ 2 ) with vertex list {v k1 + (ǫ 1 , ǫ 2 ), ..., v kn + (ǫ 1 , ǫ 2 )} and project it into T 2 4 . Call the resulting polygon P k (ǫ 1 , ǫ 2 ). The union of the polygons P k (ǫ 1 , ǫ 2 ), taken over all indices, gives us the partition P. So, just to be clear, P k (ǫ 1 , ǫ 2 ) is some concrete lift to R 2 of a polygon of the partition P .
It follows from this last equation that µ + maps the polygons of P to the polygons of P which partition T 2 (+). A similar statement holds for µ − . We can think of µ + and µ − as being defined on R 2 , and thus the polygons of P all have the form µ ± (P k (ǫ 1 , ǫ 2 )) for k = 1, ..., 26 and ǫ j ∈ {0, 1, 2, 3}.

The Calculation
Here's the routine that produces a lift of the a 2 nd point of µ ± (Q), where Q = Q a 1 (a 3 , a 4 ). The integer a 5 ∈ {0, 1} toggles µ + and µ − .
Our routine subdivide starts with a polygon P ⊂ R 4 and adds one new point interpolate(v i ,v i+1 ) between consecutive vertices v i and v i+1 of P . This, the new polygon has twice as many vertices as the old one. Our routine getPolygon subdivides a polygon in R 4 ten times and then projects it into T 4 8 using dec8 componentwise on all the vertices. We use a routine getTracePoint to get an interior point of Q. This routine returns the point interpolate(x 3 , interpolate(x 1 , x 2 )) where x 1 , x 2 , x 3 are the first three vertices of Q.
For each of the relevant indices (a 1 , a 3 , a 4 , a 5 ) we let P be the polygon produced by getPolygon and we let x ∈ P be the point produced by getTracePoint. Our routine getItinerary computes the itinerary of x in a straightforward way, just by computing the orbit and checking which component C k (ǫ k ) contains the relevant point x k of the orbit for k = 1, ..., 8. The itinerary is then ǫ 1 , ..., ǫ 8 , as in §6.6. Finally, for each vertex y of P we perform the following routine verifyItinerary(ǫ,y): Let y 1 = y. loop from k = 1 to 8.
Verify that y k ∈ C k (ǫ k ). If false then return(false). Otherwise continue. Let y k+1 = E k (y k ) using the ǫ k extension of E k . return(true) 8 Appendix

The Polygons in the Partition
Here we list out the coordinates of the polygons in our partition P of T 2 . These polygons are drawn in Figure 2.5. Each vertex of P j has the form a 0 + a 1 φ 2 , a 2 + a 3 φ 2 .
We will simply list such a vertex as a row a 0 a 1 a 2 a 3 in an array whose other rows correspond to the other vertices of P j .

The Dynamical Polygons
Here we list the 75 dynamical polygons associated to the 75 genes. We use the same notation as above.

The Gene Locations
Here we list the coordinates for the points a 0 , ..., a 74 . The point a j is the central vertex of the gene A j .