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.
Main results #
SchreierGraph.labelling_isCovering- The labelling prefunctor is a covering when we have a group action.
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 #
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.