Orbit reduction at the bare core: the generic transport #
The repository certifies "only a fundamental domain of the core's
automorphism group" at several different packagings of the same core data.
This module states the transport once at the common denominator, which is a
bare ExplicitPotential.Core n p together with a positive length vector. No
row structure, no catalog metadata and no marked data enter the statement. A
CoreSymmetry is an occurrence-sensitive automorphism of the ordered core: it
permutes core vertices and edge slots, and may independently reverse the
reading direction of each slot. Given any two positive length vectors matched
along the slot permutation, such a symmetry produces a
SubdivisionGraph.Spec.Relabeling, hence a LaplacianEquiv and a
CFGraphIso, and therefore transports BNExists in both directions.
The declarations use the established Utilities.Certificate.CoreOrbitReduction
namespace for API compatibility.
The general symmetry datum #
An occurrence-sensitive automorphism of a bare ordered core.
slotPerm acts on edge occurrences, so parallel core edges are never
identified. reversed edge = true records that the image slot is read from
the image of the head to the image of the tail; the two endpoint equations
certify exactly that reading.
- vertexPerm : Equiv.Perm (Fin n)
Permutation of core vertices.
- slotPerm : Equiv.Perm (Fin p)
Permutation of edge slots (occurrences, not endpoint pairs).
Per-slot orientation reversal flag.
Instances For
The identity symmetry.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A pure slot permutation of a core, i.e. a permutation of edge occurrences fixing every endpoint. This is the shape used by the genus-four catalog rows to sort parallel slot pairs.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The smart constructor for hand-written or generated automorphisms.
Build a CoreSymmetry from raw vertex- and slot-permutation functions
together with a reversal flag, checking bijectivity by injectivity (a finite
endofunction is bijective iff it is injective) rather than carrying an
inverse function by hand. At a concrete core all four hypotheses are
by decide.
This is the public successor of the retired
Certificate/CoreAutomorphismOrbit.lean's mkCoreSymmetry, which was
specialized to eight-vertex, twelve-slot cores.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The kernel-transparent constructor.
ofMaps is the convenient one — it checks bijectivity by injectivity — but it
builds its permutations with Equiv.ofBijective, and Equiv.symm of such a
permutation does not reduce in the kernel. Forward application still
reduces (ofMaps_vertexPerm and ofMaps_slotPerm above are both rfl), so a
decide about vertexPerm cannot tell the two constructions apart. What
breaks is reindexLength, which is fun edge => length (slotPerm.symm edge),
and with it every consumer of it — ClosedCoreSymmetry.targetLength and the
closed-orthant orbit and chamber arguments.
ofInverses takes the two inverse functions explicitly, so every projection,
forward and backward, reduces. Use it whenever the symmetry will be fed to
reindexLength; reindexLength_ofInverses below is the one-line regression
test that the reduction is really there.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The composite of two core symmetries: apply first, then second.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Reindexing a length vector #
Transport a length vector along the slot permutation.
Equations
- symmetry.reindexLength length edge = length ((Equiv.symm symmetry.slotPerm) edge)
Instances For
The regression test for the kernel-reduction hazard. For a symmetry
built by ofInverses, reindexing a length vector is definitionally the
composite with the supplied slot inverse — the rfl is the whole point. The
same statement for ofMaps is not provable by rfl, because
Equiv.ofBijective's inverse is opaque; that is the difference the two
constructors exist to record.
The compatibility hypothesis required by relabeling, in the canonical
reindexLength case.
The general relabeling #
The subdivision of core at a positive length vector.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The general transport datum. A core symmetry, together with any two
positive length vectors matched along its slot permutation, is a checked
slotwise relabeling from the subdivision at length to the subdivision at
length'.
Stating the two length vectors independently (rather than forcing
length' = reindexLength length) is what lets the same lemma serve both the
row packaging, which reindexes, and the catalog rows, which sort a chosen
pair of parallel slots.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The Laplacian equivalence carried by a core symmetry.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The graph isomorphism carried by a core symmetry.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The vertex bijection carried by a core symmetry.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The transport corollary #
Transport of Brill--Noether existence, in both directions. A core symmetry makes the subdivisions at two matched length vectors carry exactly the same existence statements.
Forward direction of bnExists_iff, spelled out.
Backward direction of bnExists_iff, spelled out. This is the direction
the catalog rows use: solve the sorted chamber, conclude at arbitrary
lengths.
The reindexing shape used by the genus-four catalog rows that sort a
parallel slot pair by permuting the length vector (GenusFourCore034):
solve at the reindexed lengths, conclude at the original lengths. Here the
compatibility hypothesis is discharged automatically.
The genus-four slot-permutation transport, re-derived #
The statement below was MarkedGraphs.Certificate.GenusFourCore066.bnExists_of_slotPerm,
copied verbatim (only the name is primed); that row's cover has since been
retired, and this is now the only copy. It is proved as a corollary of
CoreSymmetry.bnExists_iff rather than by building a Spec.Relabeling by
hand, which is the evidence that the abstraction of this file really does
subsume that instance.
Existence transports along a tail- and head-preserving permutation of the
edge slots of a fixed core: the subdivision at lengths length ∘ σ is
isomorphic to the subdivision at length. This is the special case of
SubdivisionIso with the identity vertex relabeling and no reversed slots; it
is what discharges a parallel-slot ordering row.
One sorting step. If existence is known on the half-space
L a ≤ L b under a side condition C that the transposition of the parallel
slot pair {a, b} preserves, then it holds everywhere C does: an unsorted
length vector is sorted by the transposition, and existence transports back
along it by bnExists_of_slotPerm'.
This is what discharges the parallel-slot ordering rows a mixed cover's
advertised base chamber may retain, one pair at a time, instead of by a
2 ^ (number of pairs) case split. It came from GenusFourCore066.lean,
whose cover was retired on 2026-08-18 in favour of
the corresponding closed-row proof module; the lemma is general and outlives that row.