The occurrence presentation of a unit-length subdivision spec #
regularSubdivision G k (Utilities/Gonality/GonalityTransport.lean) builds
σ_k(G) on the occurrence presentation of G, which labels vertices and edge
occurrences by arbitrary Fintype.equivFin bijections. A graph that is already
given as spec.graph for a unit-length spec : Spec n p therefore has two
descriptions of σ_k, and this module shows they agree:
Nonempty (LaplacianEquiv (spec.scale k hk).graph (regularSubdivision spec.graph k hk))
The content is a slot correspondence. spec.graph.edges is
Multiset.map spec.unitEdge univ, so its multiset-as-type
(x : V × V) × Fin (count x) is equivalent to spec.Step — compatibly with
unitEdge, which is the only property the endpoint conditions of a
Spec.Relabeling need. With unit lengths spec.Step ≃ Fin p and
spec.Vertex ≃ Fin n, and the relabeling assembles.
The payoff is that the tricycle gap can be stated for
regularSubdivisionGonality : CFGraph → ℕ, with no Spec in the statement.
The multiset of edges, as a type #
The slot correspondence. The edge multiset of a subdivision, viewed as
a type, enumerates the unit steps — compatibly with unitEdge.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Unit-length specs #
With all lengths one there are no interior vertices.
Equations
- spec.unitVertexEquiv hlen = { toFun := spec.coreVertex, invFun := Sum.elim id fun (y : spec.Interior) => absurd ⋯ ⋯, left_inv := ⋯, right_inv := ⋯ }
Instances For
The relabeling #
The vertex labelling used by the occurrence presentation, restricted to the core vertices.
Equations
- spec.unitCoreEquiv hlen = (spec.unitVertexEquiv hlen).trans (Utilities.Certificate.UnitSubdivisionPresentation.vertexEquiv spec.graph)
Instances For
The slot labelling used by the occurrence presentation.
Equations
- spec.unitSlotEquiv hlen = ((spec.unitStepEquiv hlen).trans spec.stepEquivEdges).trans (Utilities.Certificate.UnitSubdivisionPresentation.edgeEquiv spec.graph)
Instances For
The two presentations of σ_k agree.
Equations
- spec.scaleRelabeling hlen k hk = { coreEquiv := spec.unitCoreEquiv hlen, slotEquiv := spec.unitSlotEquiv hlen, reversed := fun (x : Fin p) => false, length_eq := ⋯, tail_eq := ⋯, head_eq := ⋯ }
Instances For
The bridge. For a unit-length subdivision specification, scaling the
specification by k and building σ_k on the occurrence presentation of its
graph give the same graph up to Laplacian equivalence.
Equations
- spec.scaleLaplacianEquiv hlen k hk = (spec.scale k hk).laplacianEquiv ((Utilities.Certificate.UnitSubdivisionPresentation.spec spec.graph).scale k hk) (spec.scaleRelabeling hlen k hk)