feat(Archive): voltage graphs on K₂, Heawood and Möbius-Kantor graphs#39651
feat(Archive): voltage graphs on K₂, Heawood and Möbius-Kantor graphs#39651RaggedR wants to merge 13 commits into
Conversation
This adds the first connection between Mathlib's `MulAction` and `SimpleGraph` libraries, defining what it means for a group action to preserve adjacency and providing the standard transitivity predicates used in algebraic graph theory. The `GraphAction` class asserts that `g • u` is adjacent to `g • v` whenever `u` is adjacent to `v`. For group actions this is automatically an iff (`adj_smul_iff`), and each group element induces a graph isomorphism (`toIso`). On top of this, `IsVertexTransitive` combines `GraphAction` with `IsPretransitive`, and `IsArcTransitive` requires transitivity on ordered adjacent pairs. The main result is the characterization theorem: a vertex-transitive graph that is locally transitive (the stabilizer of each vertex acts transitively on its neighbors) is arc-transitive, and conversely an arc-transitive graph with no isolated vertices is vertex-transitive. This is the standard equivalence between arc-transitivity and the combination of vertex-transitivity with local transitivity, used throughout the theory of symmetric graphs.
Defines voltageGraphK2, a cubic covering construction over ZMod m,
and two instances: the Heawood graph (Z₇, voltages {0,4,6}) and the
Möbius-Kantor graph (Z₈, voltages {0,1,3}). Both quotient to K₂
under the fibre projection.
|
Could a maintainer please add the |
Welcome new contributor!Thank you for contributing to Mathlib! If you haven't done so already, please review our contribution guidelines, as well as the style guide and naming conventions. In particular, we kindly remind contributors that we have guidelines regarding the use of AI when making pull requests. We use a review queue to manage reviews. If your PR does not appear there, it is probably because it is not successfully building (i.e., it doesn't have a green checkmark), has the If you haven't already done so, please come to https://leanprover.zulipchat.com/, introduce yourself, and mention your new PR. Thank you again for joining our community. |
PR summary 7c657ef3ec
|
| Files | Import difference |
|---|---|
Mathlib.Combinatorics.SimpleGraph.Action (new file) |
644 |
Mathlib.Combinatorics.SimpleGraph.CosetGraph (new file) |
837 |
Mathlib.Combinatorics.SimpleGraph.Representation (new file) |
838 |
Mathlib.Combinatorics.SimpleGraph.Symmetric (new file) |
839 |
Mathlib.Combinatorics.SimpleGraph.QuotientGraph (new file) |
962 |
Declarations diff (regex)
+ GraphAction
+ IsArcTransitive
+ IsConnectionSet
+ IsLocallyTransitive
+ IsVertexTransitive
+ SimpleGraph.cosetGraph
+ SimpleGraph.quotientGraph
+ adj_mk
+ adj_smul_iff
+ connectionSet
+ connectionSet_eq_doubleCoset
+ cosetQuotientMap
+ cosetQuotientMap_mk
+ disjoint_stabilizer
+ doubleCoset_isConnectionSet
+ double_coset_stable
+ expandConnectionSet
+ expandConnectionSet_isConnectionSet
+ graphAction
+ heawoodG
+ heawoodS_mem
+ heawoodSabidussiIso
+ heawoodSwap
+ heawoodSwap_adj
+ heawoodT_mem
+ heawoodTranslation
+ heawoodTranslation_adj
+ heawoodVoltage
+ heawoodVoltage_directedEdges
+ heawoodVoltage_quotient_complete
+ heawoodVoltage_regular
+ heawoodWitElem
+ heawoodWitElem_correct
+ heawoodWitElem_mem
+ instance : DecidableRel (heawoodVoltage.quotientGraph
+ instance : DecidableRel (mobiusKantorVoltage.quotientGraph
+ instance : DecidableRel heawoodVoltage.Adj := by
+ instance : DecidableRel mobiusKantorVoltage.Adj := by
+ instance : GraphAction heawoodG (Fin 2 × ZMod 7) heawoodVoltage
+ instance : GraphAction mkG (Fin 2 × ZMod 8) mobiusKantorVoltage
+ instance : MulAction heawoodG (Fin 2 × ZMod 7)
+ instance : MulAction mkG (Fin 2 × ZMod 8)
+ instance : MulAction.IsPretransitive heawoodG (Fin 2 × ZMod 7)
+ instance : MulAction.IsPretransitive mkG (Fin 2 × ZMod 8)
+ inv_eq_self_of_sq_eq_one
+ inv_mem
+ isArcTransitive_of_vertexTransitive_locallyTransitive
+ isConnectionSet
+ locallyTransitive_at_one
+ locallyTransitive_everywhere
+ lorimer_forward
+ lorimer_reverse
+ mkG
+ mkS_mem
+ mkSabidussiIso
+ mkSwap
+ mkSwap_adj
+ mkT_mem
+ mkTranslation
+ mkTranslation_adj
+ mkWitElem
+ mkWitElem_correct
+ mkWitElem_mem
+ mobiusKantorVoltage
+ mobiusKantorVoltage_directedEdges
+ mobiusKantorVoltage_quotient_complete
+ mobiusKantorVoltage_regular
+ quotient_cosetGraph_iso
+ sabidussiEquiv
+ sabidussiEquiv_smul
+ sabidussiEquiv_symm_mk
+ sabidussiIso
+ sabidussiSymmetricGraph
+ stabilizer_transitive_on_neighbors
+ toIso
+ toIso_apply
+ toIso_mul
+ toIso_symm
+ voltageGraphK2
++ isVertexTransitive
++ one_not_mem
You can run this locally as follows
## from your `mathlib4` directory:
git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci
## summary with just the declaration names:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh <optional_commit>
## more verbose report:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh long <optional_commit>The doc-module for scripts/pr_summary/declarations_diff.sh in the mathlib-ci repository contains some details about this script.
Declarations diff (Lean -- pending)
Computed after the build finishes.
No changes to strong technical debt.
Increase in weak tech debt: (relative, absolute) = (5.00, 0.00)
| Current number | Change | Type (weak) |
|---|---|---|
| 4995 | 5 | exposed public sections |
Current commit 7c657ef3ec
Reference commit 88d006abbc
This script lives in the mathlib-ci repository. To run it locally, from your mathlib4 directory:
git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci
../mathlib-ci/scripts/reporting/technical-debt-metrics.sh pr_summary
- The
relativevalue is the weighted sum of the differences with weight given by the inverse of the current value of the statistic. - The
absolutevalue is therelativevalue divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).
Link to symmetry-aware drawings hosted in the symmetric-graphs repo.
|
LLM-generated |
Add heawoodSabidussiIso and mkSabidussiIso: both voltage graphs are proved to be coset graphs via the Sabidussi representation theorem. Generators defined by formulas (no lookup tables): - Heawood: Z₇ translation + fibre swap with negation (D₁₄ action) - MK: Z₈ translation + fibre swap with ×5 (D₁₆ action) Adjacency preservation by native_decide, transitivity by explicit witness elements (translation^k and translation^k * swap).
06a201d to
488d031
Compare
|
Please add the |
|
This pull request is now in draft mode. No active bors state needed cleanup. While this PR remains draft, bors will ignore commands on this PR. Mark it ready for review before using commands like |
|
This pull request has conflicts, please merge |
|
This pull request has conflicts, please merge |
# Conflicts: # Mathlib.lean
|
This pull request has conflicts, please merge |
This defines
voltageGraphK2, a cubic covering construction on K₂ with cyclic voltage groupZMod m. Vertices areFin 2 × ZMod m, with edges(0, g) ~ (1, g + vⱼ)for three voltages.Two instances are provided. The Heawood graph (F014A) is
voltageGraphK2 7 0 4 6, the Levi graph of the Fano plane PG(2,2): 14 vertices, cubic, girth 6, equal to Sab(G₄₂, C₃) where G₄₂ = Z₇ ⋊ Z₆. The Möbius-Kantor graph (F016A) isvoltageGraphK2 8 0 1 3, the generalised Petersen graph GP(8,3): 16 vertices, cubic, girth 6, equal to Sab(GL(2,3), C₃).Both quotient to K₂ under the fibre projection
Prod.fst, recovering the base graph.The voltage graph construction and named graph instances follow Langer, arXiv:1306.4798, and Gross & Tucker, Topological Graph Theory.
Depends on #39551 (quotient graphs and Lorimer's theorem).
LLM tools were used to assist with Lean formalization. The mathematical content is the author's own work.