The edges of the Bruhat-Tits graph #
In this file we define the edge relation of the Bruhat-Tits graph. Two vertices
are connected by an edge if they are neighbours, i.e. if their distance, in the
sense of inv, is one.
Main definitions #
BruhatTits.IsNeighbour: verticesxandyare neighbours ifinv x y = 1.BruhatTits.IsStandardNeighbour: latticesLandMare standard neighbours, ifϖ • L < M < L.List.IsBTChain: a non-empty list of lattices is a chain, if adjacent elements are standard neighbours.List.IsBTSimpleChain: a chain is simple if it does not backtrack.List.IsBTStandard: a simple chainL₀, ..., Lₙis standard if there exists a basisb = (b₁, b₂)ofL₀such thatLᵢis the span of(ϖ ^ i • b₁, b₂)for alli.
Main results #
BruhatTits.isNeighbour_iff: vertices are neighbours if and only if there exist standard neighbour representatives.BruhatTits.length_eq_dist_add_one_of_isStandard: the length of a standard chain agrees with the distance of its endpoints plus one.BruhatTits.exists_trafo_to_isStandard: every simple chain can be transformed into a standard chain by the action ofGL₂(K).
Two vertices x and y in the Bruhat-Tits tree are neighbours if inv L M = 1.
For a common alternative definition see BruhatTits.isNeighbour_iff.
Equations
- BruhatTits.IsNeighbour x y = (BruhatTits.inv x y = 1)
Instances For
If M is a lattice and x a neighbour of ⟦M⟧, there exists a representative
L of x such that L ≤ M and dist M L = 1.
GL₂(K) preserves IsStandardNeighbour.
If b = (b₁, b₂) is a basis of Fin 2 → K, the span of (ϖ • b₁, b₂) is a standard neighbour
of the span of b.
If M is a standard neighbour of L, the vertices ⟦M⟧ and ⟦L⟧ are neighbours.
If M is a lattice with neighbour x, there exists a representative L of x such that
L is a standard neighbour of M.
Two vertices are neighbours if and only if there exist representatives L and M and a uniformizer ϖ
such that ϖ • L < M < L, i.e. if L is a standard neighbour of M.
This is a common alternative way of defining BruhatTits.IsNeighbour.
A list (Lᵢ) of lattices is a chain, if Lᵢ ≤ Lᵢ₊₁ and dist Lᵢ Lᵢ₊₁ = 1 forall i.
- isStandardNeighbour : IsChain BruhatTits.IsStandardNeighbour l
Instances For
A chain is simple if it does not backtrack in the interior (i.e. in principle first and last entry can coincide). We will show that every chain is simple.
- no_backtrack : Forall id (zipWith₃ (fun (L₁ x L₃ : BruhatTits.Lattice R) => ¬BruhatTits.Lattice.IsSimilar R L₁ L₃) l l.tail l.tail.tail)
Instances For
A chain (Lᵢ) is a standard chain, if L₀ has a basis b such that
each Lᵢ is given by b.ntwist₂ hϖ n 0.
- no_backtrack : Forall id (zipWith₃ (fun (L₁ x L₃ : BruhatTits.Lattice R) => ¬BruhatTits.Lattice.IsSimilar R L₁ L₃) l l.tail l.tail.tail)
Instances For
Equations
- BruhatTits.instSMulGeneralLinearGroupFinOfNatNatListLattice = { smul := fun (g : GL (Fin 2) K) (l : List (BruhatTits.Lattice R)) => List.map (fun (L : BruhatTits.Lattice R) => g • L) l }
GL₂(K) preserves IsBTSimpleChain.
If L₀, ..., Lₙ is a standard chain of length n + 1, dist L₀ Lₙ = n.
Transformation of a simple chain to a standard chain #
In this section we show that every simple chain can be transformed under GL₂(K) to a standard
chain. This is done by induction on the length of the chain.
If M is a lattice, b = (b₁, b₂) a basis of K^2 and M is a standard
neighbour of b.toLattice, there exists g : GL₂(K) preserving b.toLattice and
transforming M into the span of (ϖ • b₁, b₂).
Core of induction step in Lattice.exists_GL_smul_eq_ntwist₂_of_isSimpleChain_cons:
If M is a lattice and b a basis of K^2 such that
Mis a standard neighbour of the lattice spanned by(ϖ ^ (n + 1) • b₁, b₂), andMis not equal to the lattice spanned by(ϖ ^ n • b₁, b₂), then there exists a unipotent matrix transformingMto(ϖ ^ (n + 2) • b₁, b₂).
In more geometric terms, when we later apply this to a walk in the Bruhat-Tits graph, the second condition requires the walk to not backtrack, i.e. to be a trail.
Core of lemma 2.2 in Casselman: If M :: l is a simple chain of lattices and b a basis of K^2
such that l is a standard chain defined by b, then there exists x : R such that the upper
unipotent matrix defined by x transforms M into the lattice spanned by
(ϖ ^ (l.length - 1) • b₁, b₂).
We don't yet show that this transformation does not change the entries in l, see
Lattice.exists_forall_GL_smul_eq_ntwist₂_of_isSimpleChain_cons for the full result.
Implementation detail: We require that the n-th entry of l equals the lattice generated by
(ϖ ^ (l.length - n - 1) • b₁, b₂) and not (ϖ ^ n • b₁, b₂), because it is easier
to work with M :: l than with l ++ [M].
Lemma 2.2 in Casselman and the induction step of exists_trafo_to_isStandard (used via:
IsBTSimpleChain.exists_GL_forall_smul):
If M :: l is a simple chain of lattices and b a basis of K^2
such that l is a standard chain defined by b, then there exists g : GL₂(K)
such that g • M :: g • l is a standard chain defined by b.
Implementation detail: We require that the n-th entry of l equals the lattice generated by
(ϖ ^ (l.length - n - 1) • b₁, b₂) and not (ϖ ^ n • b₁, b₂), because it is easier
to work with M :: l than with l ++ [M].
(Implementation detail) Intermediate lemma for exists_trafo_to_isStandard, more adapted
to induction.
Any simple chain of lattices can be transformed by an element of GL₂(K) to a standard
chain, i.e. up to a change of coordinates is every simple chain a standard chain.
This is later used to show acyclicity of the Bruhat-Tits graph.
Prop. 2.1 in Casselman.