\(X=\mathrm{SL}_2/\mathrm{SO}_2\), Part II: the tree
This part builds the Bruhat–Tits tree of \(\mathrm{SL}_2\) from lattices, one layer at a time, and draws every lattice as a picture of dots. Part III puts \(LX\) in the tree. Matrices only: Part I.
Every statement and proof on this page works for any field \(k\). The Proposition uses \(k=\mathbb C\), and Parts I and III work there. They also need \(i=\sqrt{-1}\in k\); for \(k=\mathbb F_q\) that means \(q\equiv1\bmod 4\).
1 Vertices are lattices
Drawing a lattice
A lattice is an infinite set, but the lattices near \(v_0\) are determined by finitely many coefficients. Take \(M\) with \(t^2\mathfrak o^2\subset M\subset\mathfrak o^2\). Then \(M\) is determined by which of the \(q^4\) pairs \((x_0+x_1t,\ y_0+y_1t)\) it contains, that is, by its image in \(\mathfrak o^2/t^2\mathfrak o^2\).
? Why \(q^4\) pairs, and why they determine \(M\)
- \(\mathfrak o/t^2\mathfrak o\) has \(q^2\) elements. Every \(x\in\mathfrak o\) is \(x=(x_0+x_1t)+t^2(x_2+x_3t+\cdots)\), so \(x\equiv x_0+x_1t\bmod t^2\). Two different pairs \((x_0,x_1)\ne(x_0',x_1')\) give different classes, since their difference is not divisible by \(t^2\). So the classes are the \(q\cdot q\) choices of \((x_0,x_1)\in k^2\).
- \(\mathfrak o^2/t^2\mathfrak o^2=(\mathfrak o/t^2)^2\) has \(q^2\cdot q^2=q^4\) elements, the pairs \((x_0+x_1t,\ y_0+y_1t)\).
- \(M\) is the full preimage of its image. Write \(\pi:\mathfrak o^2\to\mathfrak o^2/t^2\mathfrak o^2\). If \(\pi(v)=\pi(m)\) with \(m\in M\), then \(v=m+(v-m)\) and \(v-m\in t^2\mathfrak o^2\subset M\), so \(v\in M\). Hence \(M=\pi^{-1}(\pi(M))\): to know \(M\), it is enough to know the finite set \(\pi(M)\).
- So each dot stands for infinitely many vectors: all \((x,y)\in\mathfrak o^2\) with the given first two coefficients. They are all in \(M\) or all outside it, by (3).
- Which subsets occur? Exactly the \(\mathfrak o\)-submodules of \(\mathfrak o^2/t^2\mathfrak o^2\) (correspondence theorem for submodules). A lattice further from \(v_0\) needs a deeper window \(\mathfrak o^2/t^n\mathfrak o^2\): \(n\) nested levels and \(q^{2n}\) dots. The scaling picture below uses three levels. \(\square\)
The picture puts the pair at the point \(\big(x_0+\tfrac{x_1+1/2}{q},\ y_0+\tfrac{y_1+1/2}{q}\big)\). The constant terms \((x_0,y_0)\in k^2\) choose one of \(q^2\) blocks, and the \(t\)-coefficients \((x_1,y_1)\) choose a dot inside the block. A large blue dot is in \(M\); a small grey dot is not. In every picture you can hover a dot to read its vector. Drawing a \(p\)-adic number digit by digit as a sequence of nested regions follows Cuoco [Cuoco 1991] and Holly [Holly 2001]; here there are two coordinates.
Seeing scaling, and the action of \(\mathrm{GL}_2(F)\)
To watch a lattice grow and shrink, the window has to be one level deeper: \(x=x_{-1}t^{-1}+x_0+x_1t \bmod t^2\). Now the whole square is \(t^{-1}\mathfrak o^2\), the corner big block is \(\mathfrak o^2\), and the block inside it is \(t\mathfrak o^2\) (both dashed). Each button applies a matrix \(h\in\mathrm{GL}_2(F)\), \(M\mapsto hM\).
- Multiplying by \(t\) shifts every coefficient one place, \(x_{-1}t^{-1}+x_0+x_1t\mapsto x_{-1}+x_0t+\cdots\). So the picture shrinks by a factor \(q\) into the corner. The shape is the same, and so is the vertex.
- \(\operatorname{diag}(t,1)\) shifts only the \(x\)-coefficients. The square becomes a rectangle \(q\) times thinner: a new shape, and a neighbouring vertex.
- \(\begin{pmatrix}1&1\\0&1\end{pmatrix}\) lies in \(\mathrm{GL}_2(\mathfrak o)\), so it fixes \(\mathfrak o^2\). It shears every other lattice without changing its distance from \(v_0\).
Proof. Both sides say that the columns of \(g'\) are \(\mathfrak o\)-combinations of those of \(g\), and conversely. \(\square\)
2 Edges, and the neighbours of \(v_0\)
The same chain, drawn for \(M=\mathfrak o^2\) and \(q=3\):
Each lattice is a third of the one before. Since \(M'\supset tM\), it is a union of whole blocks. The blocks of \(M\) are the elements of \(M/tM=k^2\), and \(M'\) is closed under addition and under multiplication by \(k\), so its blocks form a line through the origin of \(k^2\). That is the whole proof below.
Proof. A lattice \(M'\) with \(t\mathfrak o^2\subsetneq M'\subsetneq\mathfrak o^2\) is the preimage of a line \(\ell\subset k^2\) (the blocks it fills). If \(\ell\) is spanned by \((c,1)\), then \(M'\) is spanned by \((c,1),(t,0),(0,t)\), and \((0,t)=t(c,1)-c(t,0)\). If \(\ell\) is spanned by \((1,0)\), then \(M'=\mathfrak o\oplus t\mathfrak o\). There are \(q\) lines of the first kind and one of the second. Every vertex looks like \(v_0\), since \(\mathrm{GL}_2(F)\) acts transitively (Serre, Trees, II.1.1; Casselman, Geometry of the tree, §4). \(\square\)
The tree near \(v_0\)
Repeating step 2 at each neighbour gives the tree to distance 2: \(v_0\) has \(q+1\) neighbours, labelled \(c\in k\) for \(M_c\) and \(\infty\) for \(M_\infty\). Each of them has \(q\) further neighbours, plus the edge back to \(v_0\). The vertex labelled \(z=c+c't\) is the lattice \(\mathfrak o\,(z,1)+t^2\mathfrak o^2\); step 4 explains this labelling. Click a vertex: the path from \(v_0\) turns blue, and the block picture below follows.
The same lattices, drawn as blocks
How to read the picture (step 1):
- Block = the constant terms \((x_0,y_0)\in k^2\), written in its corner. A block is shaded when \(M\) has vectors with those constant terms.
- Dot inside a block = the \(t\)-coefficients \((x_1,y_1)\). Large blue: in \(M\). Hover a dot for its vector.
- Dashed orange block = \(t\mathfrak o^2\), the vectors with both constant terms \(0\).
| vertex | shaded blocks | dots per shaded block | dots in all | \([\mathfrak o^2:M]\) |
|---|---|---|---|---|
| \(v_0\) | all \(q^2\) | all \(q^2\) | \(q^4\) | 1 |
| distance 1: \(M_c\), \(M_\infty\) | \(q\): a line in \(k^2\) | all \(q^2\) | \(q^3\) | \(q\) |
| distance 2 | the same \(q\) as its neighbour | \(q\): a line inside the block | \(q^2\) | \(q^2\) |
The pattern. Each step away from \(v_0\) keeps \(1/q\) of the lattice, and the cut happens one coefficient deeper. The first step chooses a line of blocks. The second chooses a line of dots inside each of those blocks, the same choice one level down. This self-similarity is why the graph is a tree, with every vertex looking like \(v_0\) (step 3).
3 Distance
\(\operatorname{dist}\) is a metric on vertices. Every \(h\in\mathrm{GL}_2(F)\) is an isometry: \(tM\subsetneq M'\subsetneq M\) implies \(t\,hM\subsetneq hM'\subsetneq hM\), so \(h\) maps paths to paths.
Proof. \(\mathfrak o e_1\oplus\mathfrak o e_2=\mathfrak o^2\) because \(k\in\mathrm{GL}_2(\mathfrak o)\), and \(g\mathfrak o^2=t^a M^{(n)}\). Edges: \(tM^{(j)}=t\mathfrak o e_1\oplus t^{j+1}\mathfrak o e_2\subsetneq M^{(j+1)}\subsetneq M^{(j)}\). No backtracking: \([\mathfrak o^2:M^{(j)}]=q^j\) and scaling by \(t^i\) multiplies the index by \(q^{2i}\), so \([M^{(j+1)}]=[M^{(j-1)}]\) would force \(M^{(j+1)}=tM^{(j-1)}=t\mathfrak oe_1\oplus t^{j}\mathfrak oe_2\), which is false. In a tree a path without backtracking is the shortest one. \(\square\)
| \(g\) | \((a,b)\) | \(\operatorname{dist}(v_0,gv_0)\) |
|---|---|---|
| \(tI\) (scaling) | \((1,1)\) | 0 |
| \(\begin{pmatrix}t&c\\0&1\end{pmatrix}\), i.e. \(M_c\) | \((0,1)\) | 1 |
| \(\operatorname{diag}(t,t^{-1})\) | \((-1,1)\) | 2 |
| \(\begin{pmatrix}t^n&z\\0&1\end{pmatrix}\) | \((0,n)\) | \(n\) |
4 Walking outward: the vertices at distance \(n\)
Proof. \(\mathfrak o(z',1)+t^{n+1}\mathfrak o^2\subset\mathfrak o(z,1)+t^n\mathfrak o^2\) exactly when \(z'\equiv z\bmod t^n\), and the quotient is then \(\mathfrak o/t\). \(\square\)

| distance | point | lattice \(M=g\,\mathfrak o^2\) |
|---|---|---|
| 1 | \([1:1]\) | \(\begin{pmatrix}t&1\\0&1\end{pmatrix}\) |
| 2 | \([1+t:1]\) | \(\begin{pmatrix}t^2&1+t\\0&1\end{pmatrix}\) |
| 3 | \([1+t+t^2:1]\) | \(\begin{pmatrix}t^3&1+t+t^2\\0&1\end{pmatrix}\) |
5 Ends: the boundary \(\mathbb P^1(F)\)
Proof. The two rays pass through the same vertex at distance \(n\) exactly when \(z_1\equiv z_2\bmod t^n\), i.e. when \(n\le\operatorname{val}(z_1-z_2)\). After that they separate for good, since the graph is a tree. \(\square\)
6 \(\mathrm{SL}_2(F)\) acts: even and odd vertices
Proof. \(\operatorname{val}\det g\bmod 2\) is well defined on vertices, since rescaling \(M\) by \(t\) changes it by 2. It flips along each edge (step 2: \(\det\) of \(\begin{pmatrix}t&c\\0&1\end{pmatrix}\) is \(t\)), so it is the distance mod 2. Elements of \(\mathrm{SL}_2(F)\) have \(\det=1\). Conversely, a vertex at distance \(2m\) is \(g\,\mathfrak o^2\) with \(\det g=t^{2m}\), and \(t^{-m}g\in\mathrm{SL}_2(F)\) sends \(v_0\) to it. \(\square\)
- The variety in the Proposition is \(\mathrm{SL}_2/\mathrm{SO}_2\), so \(G=\mathrm{SL}_2\). Its coweights are \((m,-m)\) and its orbits \(\mathcal O_a\) are indexed by one integer \(a\ge0\).
- For \(\mathrm{SL}_2\), the tree loses nothing. \(\mathrm{Gr}_{\mathrm{SL}_2}\) is exactly the set of even vertices (above), one point per vertex.
- For \(\mathrm{GL}_2\), the tree loses the centre. \(\mathrm{Gr}_{\mathrm{GL}_2}=\mathrm{GL}_2(F)/\mathrm{GL}_2(\mathfrak o)\) is the set of all lattices, not up to scaling, so each vertex carries a whole \(\mathbb Z\) of points \(t^jM\), told apart by \(\operatorname{val}\det\). The central loop \(t^{(1,1)}=tI\) moves every lattice but fixes every vertex. The analogous space \(\mathrm{GL}_2/\mathrm O_2\) (all non-degenerate quadratic forms) has orbits indexed by pairs \((a\ge b)\), with \(a+b=\operatorname{val}\det A\) invisible in the tree.