Schreier Graphs #
This module defines Schreier graphs as quivers with labelled edges.
Given a monoid M acting on a type V and a map ι : S → M, the Schreier graph has
vertices V and a directed edge x → ι(s) • x for each x : V and s : S.
Main definitions #
SchreierGraph V ι- The Schreier graph of an action, with vertices of typeVand edges labelled by elements ofSviaι : S → M.SchreierGraph.labelling- The prefunctor from a Schreier graph toSingleObj Sthat extracts edge labels.SchreierGraph.evalWord- Evaluation of a word in generators and their inverses as an element of the ambient group, by lifting the corresponding element of the free group alongFreeGroup.lift.SchreierGraph.pathFromWord- The path in the symmetrified Schreier graph induced by a word of generators (forward edges) and inverses (backward edges).
Main results #
SchreierGraph.labelling_isCovering- The labelling prefunctor is a covering when we have a group action.SchreierGraph.evalWord_mem_closure- The evaluation of any word lies in the subgroup generated by the image ofι.SchreierGraph.exists_evalWord_of_mem_closure- Conversely, every element of that subgroup is the evaluation of some word.SchreierGraph.reachable_iff- Two vertices of a Schreier graph are connected by a path in its symmetrification iff they are related by an element of the subgroup generated byι.
Examples #
- The (left) Cayley graph of a group
Mwith generatorsι : S → Mis the Schreier graph whereV = Mand the action is left multiplication.
Implementation notes #
Although referred to informally as graphs, Schreier graphs have multiple, directed, labelled edges between nodes and so are implemented here as quivers.
References #
- [Y. Vorobets, Notes on the Schreier graphs of the Grigorchuk group][Vorobets2012]
A Schreier graph for a monoid M acting on V with generators ι : S → M.
Vertices are elements of V, and there is an edge from x to y for each s : S
such that ι s • x = y.
- ofVertex :: (
- toVertex : V
The underlying vertex.
- )
Instances For
Equivalence between the original vertex type and the Schreier graph type.
Equations
- Quiver.SchreierGraph.equiv V ι = { toFun := Quiver.SchreierGraph.ofVertex, invFun := Quiver.SchreierGraph.toVertex, left_inv := ⋯, right_inv := ⋯ }
Instances For
Transport the scalar multiplication to the Schreier graph vertices.
Equations
- Quiver.SchreierGraph.schreierGraphSMul V ι = { smul := fun (x : M) (y : Quiver.SchreierGraph V ι) => { toVertex := x • y.toVertex } }
The quiver structure on a Schreier graph. An arrow from x to y exists when
there is an s : S such that (ι s) • x = y.
The labelling of arrows in a Schreier graph by elements of S.
This is encoded as a prefunctor to SingleObj S.
Equations
- Quiver.SchreierGraph.labelling V ι = { obj := fun (x : Quiver.SchreierGraph V ι) => Quiver.SingleObj.star S, map := fun {X Y : Quiver.SchreierGraph V ι} (e : X ⟶ Y) => ↑e }
Instances For
The monoid acts on the vertices of the Schreier graph.
Equations
- Quiver.SchreierGraph.instMulAction V ι = { toSMul := Quiver.SchreierGraph.schreierGraphSMul V ι, mul_smul := ⋯, one_smul := ⋯ }
Schreier graphs for group actions #
When we have a group action, the labelling becomes a covering.
The star map of the labelling prefunctor as an equivalence.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The costar map of the labelling prefunctor as an equivalence.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The labelling prefunctor is a covering for Schreier graphs with group actions.
If a prefunctor between Schreier graphs commutes with the labelling (i.e., labels are preserved), then it commutes with the group action. In other words, morphisms that preserve edge labels also preserve the group structure.
Word evaluation #
Evaluating a word (list of generators tagged with a boolean for forward/inverse direction)
as an element of the ambient group, by lifting it through the free group. Words are kept in
list form because pathFromWord recurses on the list: distinct words give distinct paths,
even when they evaluate to the same group element.
Evaluate a word List (S × Bool) as an element of the group M. A pair (s, true)
contributes ι s; a pair (s, false) contributes (ι s)⁻¹.
Equations
- Quiver.SchreierGraph.evalWord ι w = (FreeGroup.lift ι) (FreeGroup.mk w)
Instances For
Reachability in symmetrified Schreier graphs #
Reachability in the symmetrified Schreier graph characterises the orbit of the subgroup
generated by ι.
Construct a path in the symmetrified Schreier graph from a Bool-tagged word.
A pair (s, true) contributes a forward edge for ι s; (s, false) contributes a backward
edge, representing motion along (ι s)⁻¹.
Equations
- Quiver.SchreierGraph.pathFromWord ι x [] = Quiver.Path.cast ⋯ ⋯ Quiver.Path.nil
- Quiver.SchreierGraph.pathFromWord ι x ((s, true) :: w) = Quiver.Path.cast ⋯ ⋯ ((Quiver.SchreierGraph.pathFromWord ι x w).cons (Sum.inl ⟨s, ⋯⟩))
- Quiver.SchreierGraph.pathFromWord ι x ((s, false) :: w) = Quiver.Path.cast ⋯ ⋯ ((Quiver.SchreierGraph.pathFromWord ι x w).cons (Sum.inr ⟨s, ⋯⟩))
Instances For
If g lies in the subgroup generated by the image of ι, then g • y is reachable from
y in the symmetrification, for every vertex y of the Schreier graph.
A path in the symmetrified Schreier graph exhibits an element of the subgroup generated by
ι that carries the source to the target.
Two vertices of a Schreier graph are connected by a path in the symmetrified quiver iff
some element of the subgroup generated by ι carries one to the other.