The free-product data used by Kurosh's theorem #
This file starts the Bass--Serre extension of the finite Schreier development.
The ambient free product is Mathlib's Monoid.CoprodI; in particular, the
reduced-word normal form is not redefined here. The definitions below keep
the two pieces of Kurosh data explicit:
- the canonical copy of each factor in the free product; and
- the subgroup obtained by intersecting a conjugate of that copy with a subgroup of the ambient free product.
The main decomposition theorem will use these definitions rather than an unstructured existential statement. This makes the double-coset indexing, the factor embeddings, and the final free-product equivalence visible to the kernel checker and to the Palomar statement surface.
The orbit type is Mathlib's MulAction.orbitRel.Quotient. Proof scaffolding
shared between this project's modules lives in GraphCoveringTheory.Kurosh.Internal.
Adapted for Lean Pool from Arthur742Ramos/KuroshSubgroupTheorem,
commit 911707126c8b9bb0c764bf853008fe1053c0aad9: imports, API compatibility,
and proof organization were revised.
Classical equality used locally in this part of the Kurosh construction.
Equations
Instances For
The indexed free product of a family of groups.
Equations
Instances For
The canonical inclusion of a factor into its free product.
Equations
Instances For
Conjugate intersections #
The subgroup is deliberately defined inside the ambient group first. A later
construction restricts it to the subgroup H, which gives the factors that
appear literally in the Kurosh decomposition.
Conjugation of a subgroup by an ambient-group element.
Equations
Instances For
The ambient subgroup obtained from a Kurosh factor.
Equations
Instances For
The same factor regarded as a subgroup of H, so its inclusion into H is canonical.
Equations
Instances For
The double-coset indexing type #
Mathlib's DoubleCoset.Quotient is exactly H \ G / K. Defining the
factor index this way records the classical indexing without choosing
representatives prematurely. Representatives are selected only when the
decomposition construction needs them.
Double cosets of H and the image of the indexed free factor.
Equations
Instances For
A chosen representative of a double coset.
Equations
Instances For
Right-coset normal forms #
The Bass--Serre action is a left action on right cosets. The indexed coproduct API exposes the first syllable directly, so right-coset normal forms are obtained by applying the same operation to the inverse word. The small word reversal API here is useful independently of the later tree construction.
Invert a reduced word by reversing its letters and inverting each letter.
Equations
Instances For
The factor index of the last letter, or none for the empty word.
Instances For
Removing a rightmost syllable #
This is the right-coset counterpart of Word.equivPair: the inverse word is
split at its first syllable and then inverted again. It supplies the
canonical representative of a right coset of a factor.
Remove the terminal letter in factor i, if present.
Equations
Instances For
The terminal factor-i letter, or the identity if the word ends in another factor.
Equations
Instances For
Reduced words representing cosets g * Gᵢ, obtained by removing the terminal
i-factor.
Equations
Instances For
The right tail bundled with the fact that its last index differs from i.
Equations
Instances For
Append a nonidentity factor-i letter to a word ending in a different factor.
Equations
Instances For
Append a nonidentity letter to a canonical representative for its factor coset.
Equations
- GraphCoveringTheory.Kurosh.rightAppendCanonical i w a ha = GraphCoveringTheory.Kurosh.rightAppend i (↑w) a ha ⋯
Instances For
The explicit Bass--Serre tree #
The central vertices are reduced words. A factor vertex records a reduced word which is already canonical on the right for one factor. The two edge families are the central-to-factor edge and the edge obtained by appending a nontrivial factor syllable. This is the usual normal-form model of the Bass--Serre tree of an indexed free product.
The word model of Bass-Serre vertices: reduced words and canonical factor-coset words.
- central {ι : Type v} {G : ι → Type u} [(i : ι) → Group (G i)] (w : Monoid.CoprodI.Word G) : BassSerreVertex G
- factor {ι : Type v} {G : ι → Type u} [(i : ι) → Group (G i)] (i : ι) (w : RightFactorWord i) : BassSerreVertex G
Instances For
The directed edges of the word model, oriented away from the empty word.
- centralFactor {ι : Type v} {G : ι → Type u} [(i : ι) → Group (G i)] (w : Monoid.CoprodI.Word G) (i : ι) (hw : wordLastIdx w ≠ some i) : BassSerreEdge G (BassSerreVertex.central w) (BassSerreVertex.factor i ⟨w, hw⟩)
- factorCentral {ι : Type v} {G : ι → Type u} [(i : ι) → Group (G i)] (i : ι) (w : RightFactorWord i) (a : G i) (ha : a ≠ 1) : BassSerreEdge G (BassSerreVertex.factor i w) (BassSerreVertex.central (rightAppendCanonical i w a ha))
Instances For
Equations
A geodesic spanning tree of the symmetrified word model.
Equations
Instances For
Right cosets and the natural action #
The canonical-word vertices above are convenient for connectivity proofs. For the group action it is cleaner to use the quotient of a group by right multiplication by a subgroup. The quotient is kept elementary here so that the stabilizer calculation does not depend on a choice of representatives.
Cosets represented by a * K, using the right-multiplication equivalence relation.
Equations
Instances For
The coset represented by a group element.
Equations
Instances For
Equations
- GraphCoveringTheory.Kurosh.rightCosetMulAction K = { smul := fun (g : P) => Quotient.lift (fun (a : P) => GraphCoveringTheory.Kurosh.rightCosetMk K (g * a)) ⋯, mul_smul := ⋯, one_smul := ⋯ }
Cosets of the image of a free factor in the ambient free product.
Equations
Instances For
The factor coset represented by an element of the free product.
Equations
Instances For
Bass-Serre vertices represented by group elements and factor cosets.
- central {ι : Type v} {G : ι → Type u} [(i : ι) → Group (G i)] (g : FreeProduct G) : RawBassSerreVertex G
- factor {ι : Type v} {G : ι → Type u} [(i : ι) → Group (G i)] (i : ι) (c : FactorCoset G i) : RawBassSerreVertex G
Instances For
An edge joins an ambient group element to its coset in a free factor.
- centralFactor {ι : Type v} {G : ι → Type u} [(i : ι) → Group (G i)] (g : FreeProduct G) (i : ι) : RawBassSerreEdge G (RawBassSerreVertex.central g) (RawBassSerreVertex.factor i (factorCosetMk G i g))
Instances For
Equations
A geodesic spanning tree of the symmetrified group-and-coset model.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Pairs of a free-factor index and a corresponding double coset.
Equations
- GraphCoveringTheory.Kurosh.KuroshFactorIndex G H = ((i : ι) × GraphCoveringTheory.Kurosh.DoubleCosetIndex H i)
Instances For
The chosen ambient group element for an indexed double coset.
Equations
Instances For
The intersection with a conjugate free factor, regarded as a subgroup of H.
Equations
Instances For
A central Bass–Serre vertex has trivial stabilizer.
The quotient graph seen by the subgroup #
The raw tree is the universal Bass--Serre tree. The next layer records the quotient graph without choosing representatives of its vertices or edges. This is the graph on which the free part of the Kurosh decomposition is the fundamental-group contribution; the factor vertices retain the stabilizers defined above.
The standard Mathlib quotient of an action by its orbit relation.
Equations
Instances For
Send a point to its group-action orbit.
Equations
Instances For
Orbit equality expressed by an element carrying the first point to the second. Mathlib's orbit relation uses the reverse orientation.
An unbundled Bass-Serre edge is a group element paired with a factor index.
Equations
Instances For
The central vertex at the source of an unbundled edge.
Equations
Instances For
The factor coset at the target of an unbundled edge.
Equations
Instances For
Translate an unbundled edge by left multiplication on its group coordinate.
Instances For
Equations
- GraphCoveringTheory.Kurosh.rawBassSerreEdgeDataMulAction G = { smul := GraphCoveringTheory.Kurosh.rawBassSerreEdgeDataAction G, mul_smul := ⋯, one_smul := ⋯ }
Equations
- GraphCoveringTheory.Kurosh.rawBassSerreVertexSubgroupMulAction G H = { smul := fun (h : ↥H) (x : GraphCoveringTheory.Kurosh.RawBassSerreVertex G) => ↑h • x, mul_smul := ⋯, one_smul := ⋯ }
Equations
- GraphCoveringTheory.Kurosh.rawBassSerreEdgeDataSubgroupMulAction G H = { smul := fun (h : ↥H) (e : GraphCoveringTheory.Kurosh.rawBassSerreEdgeData G) => ↑h • e, mul_smul := ⋯, one_smul := ⋯ }
Forget the endpoints of a bundled Bass-Serre edge.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Translate a Bass-Serre edge and both endpoints by a group element.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Translate either orientation of a Bass-Serre edge.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Translate every edge and endpoint of a symmetrified Bass-Serre path.
Equations
Instances For
Vertex orbits for the action of the subgroup H on the Bass-Serre graph.
Equations
Instances For
Edge orbits for the action of the subgroup H on the Bass-Serre graph.
Equations
Instances For
The factor vertex in the quotient graph represented by a Kurosh index.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The source vertex orbit of an edge orbit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The target vertex orbit of an edge orbit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The quotient quiver whose edges are subgroup orbits with prescribed endpoints.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The subgroup orbit of an unbundled Bass-Serre edge.
Equations
Instances For
Bundle an edge orbit with its source and target vertex orbits.
Equations
Instances For
Project a Bass-Serre edge to the quotient quiver.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The projection from the Bass-Serre quiver to its subgroup-orbit quiver.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The orbit projection with values in the symmetrified quotient quiver.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Extend the orbit projection to both edge orientations.
Equations
Instances For
A geodesic spanning tree of the symmetrified quotient graph.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
The unique path from the chosen root to a vertex of the quotient spanning tree.
Equations
Instances For
The subgroup orbit of the central vertex represented by the identity.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Choose an element of H carrying one representative of an orbit to another.
Equations
Instances For
The prefunctor forgetting membership in a wide subquiver.
Equations
- GraphCoveringTheory.Kurosh.wideSubquiverInclusion W = { obj := id, map := fun {X Y : WideSubquiver.toType V W} (e : X ⟶ Y) => ↑e }
Instances For
Include the quotient spanning tree into the symmetrified quotient graph.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Forget a quotient-tree edge's membership proof.
Equations
Instances For
The quotient spanning tree expressed as a quiver on the ambient vertex type.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Forget tree-membership proofs along a path in the quotient spanning tree.
Equations
Instances For
The root of the quotient spanning tree on the ambient vertex type.
Instances For
The unique rooted tree path to a quotient vertex.
Equations
Instances For
Choose a representative of a path endpoint by successively lifting quotient edges.
Equations
- One or more equations did not get rendered due to their size.
- GraphCoveringTheory.Kurosh.rawTreeLiftPath G H Quiver.Path.nil = ⟨GraphCoveringTheory.Kurosh.RawBassSerreVertex.central 1, ⋯⟩
Instances For
The orbit representative obtained by lifting the chosen rooted tree path.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Choose an unbundled representative of an edge in the quotient graph.
Equations
Instances For
Align an edge representative's source with the chosen orbit representative.
Equations
Instances For
The target after translating an edge to align its source.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Align the source-adjusted target with its chosen orbit representative.
Equations
Instances For
Align the raw target directly with its chosen orbit representative.
Equations
Instances For
The subgroup label of a quotient edge, normalized to the identity on tree edges.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Choose a source alignment compatible with the normalized edge label.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Label quotient edges by subgroup elements in the one-object groupoid.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Interpret a symmetric quiver path as a morphism in its free groupoid.
Equations
- One or more equations did not get rendered due to their size.
- GraphCoveringTheory.Kurosh.freeGroupoidPathHom Quiver.Path.nil = CategoryTheory.CategoryStruct.id ((Quiver.FreeGroupoid.of V).obj a)
- GraphCoveringTheory.Kurosh.freeGroupoidPathHom (p.cons (Sum.inl f)) = CategoryTheory.CategoryStruct.comp (GraphCoveringTheory.Kurosh.freeGroupoidPathHom p) ((Quiver.FreeGroupoid.of V).map f)
Instances For
Recover the original vertex from an object of the free groupoid.
Equations
Instances For
The quiver underlying the category structure of the free groupoid.
Instances For
Original quiver arrows, lifted to the universe of free groupoid morphisms.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Include a lifted generating arrow into the free groupoid.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
The free group contributed by loops in the quotient Bass--Serre graph.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Evaluate loops in the quotient graph as elements of the subgroup H.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The chosen tree path as a morphism in the quotient graph's free groupoid.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Close a quotient edge to a based loop using the chosen tree paths.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Evaluate a morphism of the quotient free groupoid using subgroup edge labels.
Equations
Instances For
The subgroup label of an oriented quotient edge, inverted for reverse edges.
Equations
Instances For
Multiply the labels along a symmetrified quotient path.
Equations
Instances For
The root of the quotient spanning tree as an ambient quotient vertex.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Map a tree path to the symmetrified quotient graph without bundled tree vertices.
Equations
Instances For
Include a rooted tree path and transport its source to the specified quotient root.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The chosen quotient-tree path with its source transported to the specified root.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Index set for the visible Kurosh factors together with the free part.
Equations
Instances For
The component group at a Kurosh factor or at the free quotient graph.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
The vertex-group version is the convenient graph-of-groups presentation. It retains the (trivial) central vertex groups until the final reduction to the usual factor-only Kurosh indexing.
The stabilizer in H of the chosen representative of a quotient vertex.
Equations
Instances For
All quotient vertices, together with one additional index for the free part.
Equations
Instances For
The family of vertex stabilizers together with the quotient graph's loop group.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
The free product of all vertex stabilizers and the free part.
Equations
Instances For
Map each stabilizer by inclusion and the free part by evaluation in H.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The homomorphism induced by the stabilizer inclusions and free-part evaluation.
Equations
Instances For
Include a vertex stabilizer as a factor in the tree Kurosh product.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Include the quotient graph's loop group as the free factor in the tree product.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The explicit free product whose factors are the Kurosh stabilizers and free part.