5 · Example · Part II of III

\(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.

Convention on this page \(k=\mathbb F_q\) is a finite field with \(q\) elements, \(\mathfrak o=k[\![t]\!]\) and \(F=k(\!(t)\!)\). An element of \(\mathfrak o\) is a power series \(x=x_0+x_1t+x_2t^2+\cdots\) with every \(x_j\in k\). A finite \(k\) makes the tree countable and drawable: each vertex has \(q+1\) neighbours.

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

Definition A lattice is an \(\mathfrak o\)-submodule \(M=g\,\mathfrak o^2\subset F^2\) with \(g\in\mathrm{GL}_2(F)\): the \(\mathfrak o\)-span of the two columns of \(g\). A vertex of the tree is a lattice up to scaling (defined below). The base vertex is \(v_0=[\mathfrak o^2]\).

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\)
  1. \(\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\).
  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)\).
  3. \(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)\).
  4. 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).
  5. 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.

\(\mathfrak o^2\) itself, for \(q=3\): every dot is in it. Each block is labelled by its constant terms \((x_0,y_0)\). The orange block \((2,1)\) is magnified on the right.
Inside a block, the dot at \((x_1,y_1)\) is the vector with those \(t\)-coefficients. The orange dot \((x_1,y_1)=(0,2)\) in block \((2,1)\) is \((x,y)=(2,\ 1+2t)\).
Instance, drawn
\(g=\operatorname{diag}(t,1)\) gives \(M=t\mathfrak o\oplus\mathfrak o\), the pairs with \(x_0=0\). And \(g=\begin{pmatrix}t&1\\0&1\end{pmatrix}\) gives the lattice spanned by \((t,0)\) and \((1,1)\): the pairs \((x,y)\in\mathfrak o^2\) with \(x\equiv y \bmod t\), i.e. \(x_0=y_0\).
\(t\mathfrak o\oplus\mathfrak o\): the column of blocks with \(x_0=0\), each block full.
\(\{x_0=y_0\}\): the diagonal blocks \((0,0),(1,1),(2,2)\), each full.
Both are one third of \(\mathfrak o^2\): index \(q\). Each fills whole blocks because each contains \(t\mathfrak o^2\): changing the \(t\)-coefficients of a vector never takes it out of \(M\).
Scaling Scaling \(M\) means multiplying every vector in it by one fixed \(c\in F^\times\): \(M\mapsto cM\). Since \(c=t^ju\) with \(u\in\mathfrak o^\times\) a unit, and \(uM=M\), only the power of \(t\) matters: \[ [M]=[M']\iff M'=t^jM\ \text{ for some }j\in\mathbb Z . \] So \(\mathfrak o^2\), \(t\,\mathfrak o^2\) and \(t^{-3}\mathfrak o^2\) are one vertex, but \(\mathfrak o\oplus t\,\mathfrak o\) is a different vertex: it scales the two coordinates differently.

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\).

The readout gives the elementary divisors \(t^a,t^b\) of \(g\): \(M=h\,(t^a\mathfrak o\oplus t^b\mathfrak o)\) with \(h\in\mathrm{GL}_2(\mathfrak o)\). Scaling adds the same integer to \(a\) and \(b\), and \(b-a\) is the distance \(\operatorname{dist}(v_0,[M])\) (step 3). Buttons that would leave the window are disabled.

Proved here \(g\,\mathfrak o^2=g'\mathfrak o^2\iff g^{-1}g'\in\mathrm{GL}_2(\mathfrak o)\). So the vertices are \(\mathrm{GL}_2(F)/F^\times\mathrm{GL}_2(\mathfrak o)\), and \(\mathrm{GL}_2(F)\) acts by \(h\cdot[M]=[hM]\).

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\)

Definition \([M]\) and \([M']\) are joined by an edge when, for suitable representatives, \(tM\subsetneq M'\subsetneq M\).

The same chain, drawn for \(M=\mathfrak o^2\) and \(q=3\):

\(M=\mathfrak o^2\): all 9 blocks.
\(M'=M_1\): the 3 blocks on the line through \((1,1)\).
\(tM=t\mathfrak o^2\): the single block \((0,0)\).

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.

Proved here The neighbours of \(v_0\) are the lattices between \(t\mathfrak o^2\) and \(\mathfrak o^2\), i.e. the lines in \(\mathfrak o^2/t\mathfrak o^2=k^2\). So they form a \(\mathbb P^1(k)\), which has \(q+1\) points: \[ M_c=\begin{pmatrix}t&c\\0&1\end{pmatrix}\mathfrak o^2=\mathfrak o\,(c,1)+t\,\mathfrak o^2\ \ (c\in k),\qquad M_\infty=\begin{pmatrix}1&0\\0&t\end{pmatrix}\mathfrak o^2 . \]

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):

Table 1. vertex and shaded blocks and dots per shaded block
vertexshaded blocksdots per shaded blockdots 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 2the 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

Definition A path of length \(n\) from \(v\) to \(v'\) is a sequence of vertices \(v=w_0,w_1,\dots,w_n=v'\) with \(w_{j-1},w_j\) joined by an edge. The distance is the length of a shortest path, and the distance to a set \(S\) of vertices (e.g. a line, step 5) is the distance to its closest vertex: \[ \operatorname{dist}(v,v')=\min\{n:\ \text{a path of length }n\text{ joins }v,v'\},\qquad \operatorname{dist}(v,S)=\min_{w\in S}\operatorname{dist}(v,w). \]

\(\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.

Proved (cited) [Serre, Trees, Ch. II.1.1] The graph is a tree. For two vertices, choose representatives with \(M'\subset M\) and \(M'\not\subset tM\); then \(M/M'\cong\mathfrak o/t^n\) and \(\operatorname{dist}([M],[M'])=n\). In matrix form, write \(g=k\,\operatorname{diag}(t^a,t^b)\,k'\) with \(k,k'\in\mathrm{GL}_2(\mathfrak o)\) and \(a\le b\) (elementary divisors). Then \[ \operatorname{dist}(v_0,\,g v_0)=b-a=\operatorname{val}\det g-2\min_{i,j}\operatorname{val}g_{ij}, \] since \(a=\min_{i,j}\operatorname{val}g_{ij}\) and \(a+b=\operatorname{val}\det g\).
Proved here The path from \(v_0\) to \(gv_0\). Let \(e_1,e_2\) be the columns of \(k\) and \(n=b-a\). Then \[ \mathfrak o^2=M^{(0)}\supsetneq M^{(1)}\supsetneq\cdots\supsetneq M^{(n)},\qquad M^{(j)}=\mathfrak o\,e_1\oplus t^{j}\mathfrak o\,e_2,\qquad [M^{(n)}]=gv_0, \] and consecutive \(M^{(j)}\) are joined by an edge. It is the shortest path.

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\)

Instance
Table 2. \(g\) and \((a,b)\) and \(\operatorname{dist}(v_0,gv_0)\)
\(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\)
The last row is the general vertex of step 4. For \(g\in\mathrm{SL}_2(F)\), \(\operatorname{dist}=-2\min\operatorname{val}g_{ij}\) is twice the worst pole order: always even (step 6).

4 Walking outward: the vertices at distance \(n\)

Proved (cited) [Serre, Trees, Ch. II.1.1] By step 3, the vertices at distance \(n\) from \(v_0\) are the lattices \(M\) with \(t^n\mathfrak o^2\subset M\subset\mathfrak o^2\) and \(\mathfrak o^2/M\cong\mathfrak o/t^n\). Explicitly, \[ \begin{aligned} M&=\mathfrak o\,(z,1)+t^n\mathfrak o^2=\begin{pmatrix}t^n&z\\0&1\end{pmatrix}\mathfrak o^2 &&(z\in\mathfrak o/t^n),\ \text{or}\\ M&=\begin{pmatrix}1&0\\w&t^n\end{pmatrix}\mathfrak o^2 &&(w\in t\mathfrak o/t^n). \end{aligned} \] So the sphere of radius \(n\) is \(\mathbb P^1(\mathfrak o/t^n)\): the points \([z:1]\) and \([1:w]\).
Proved here One step out adds one Taylor coefficient. The neighbours of \([z:1]\) at distance \(n+1\) are \([z+c\,t^n:1]\), \(c\in k\). Together with the one neighbour at distance \(n-1\) (drop the last coefficient), these are the \(q+1\) points of the \(\mathbb P^1(k)\) of step 2.

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\)

The Bruhat–Tits tree of SL2 near v0, vertices labelled by z mod t^n, with the ray towards z = 1 + t + t^2 + ... highlighted
Each label is \(z\bmod t^n\); reading outward along the orange ray gives the Taylor series \(z=1+t+t^2+\cdots\).
Instance: three vertices along the orange ray
Table 3. distance and point and lattice \(M=g\,\mathfrak o^2\)
distancepointlattice \(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}\)

Drawn for \(q=2\), to distance 5: every vertex has \(q+1=3\) neighbours, and the coefficients are \(0,1\in\mathbb F_2\). Click any vertex. The path from \(v_0\) is drawn in blue, the dashed circle is the sphere it lies on, and the readout gives its lattice.

5 Ends: the boundary \(\mathbb P^1(F)\)

Proved here A ray \(v_0,v_1,v_2,\dots\) leaving \(v_0\) is a sequence of compatible truncations \(z\bmod t^n\), so it is a power series \(z\in\mathfrak o\) (or a \(w\in t\mathfrak o\)). Hence the ends of the tree are \(\mathbb P^1(\mathfrak o)=\mathbb P^1(F)\). Two ends \(z_1\neq z_2\in\mathfrak o\) share their first \(\operatorname{val}(z_1-z_2)\) steps: \[ \operatorname{dist}\big(v_0,\ \text{line from }z_1\text{ to }z_2\big)=\operatorname{val}(z_1-z_2). \]

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\)

Instance
\(z_1=1/(1-t)=1+t+t^2+\cdots\) is the orange end in the figure. When \(i=\sqrt{-1}\in k\) (e.g. \(q=5\), \(i=2\)), the ends \(z_1=i\,t^a\) and \(z_2=-i\,t^a\) have \(\operatorname{val}(z_1-z_2)=a\), so the line between them passes at distance \(a\) from \(v_0\). This is how Part III reads off the orbit of a point of \(LX\).

6 \(\mathrm{SL}_2(F)\) acts: even and odd vertices

Proved (cited) [Serre, Trees, Ch. II.1] \(\mathrm{SL}_2(F)\) acts on the tree, the stabilizer of \(v_0\) is \(K=\mathrm{SL}_2(\mathfrak o)\), and \[ g\in Kt^{(m,-m)}K\iff \operatorname{dist}(v_0,\,gv_0)=2m . \]
Proved here The vertices of the form \(gv_0\), \(g\in\mathrm{SL}_2(F)\), are exactly those at even distance from \(v_0\). So \(\mathrm{Gr}_{\mathrm{SL}_2}\) is the set of even vertices, and the sphere of radius \(2m\) is \(\mathrm{Gr}_{(m,-m)}\).

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\)

Instance
\(t^{(1,-1)}=\operatorname{diag}(t,t^{-1})\) sends \(\mathfrak o^2\) to \(t\mathfrak o\oplus t^{-1}\mathfrak o\sim t^2\mathfrak o\oplus\mathfrak o\), the vertex \([0:1]\) at distance 2: the point \(z\equiv0\bmod t^2\). In the explorer above, filled vertices are even and hollow ones odd.
Why \(\mathrm{SL}_2\) and not \(\mathrm{GL}_2\) The tree is the same for \(\mathrm{GL}_2\), \(\mathrm{SL}_2\) and \(\mathrm{PGL}_2\); the groups differ in what they see of it.
  • 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.