Terminal finite-cyclic word normalization #
This file discharges the final completed-block seam of the Gallier--Xu normalization argument.
Boundary loops are commuted behind the closed-surface blocks, handles are converted to crosscaps
when a crosscap is present, and the resulting ordered word is signed-relabelled to the single
project-owned NormalForm.canonicalPresentation.
The distinct-name spine respects block-sequence concatenation.
A name occurs in the exact block word precisely when it occurs in the block name spine.
Permuting completed blocks permutes their exact concatenated words.
Permuting completed blocks permutes their distinct-name spines.
Permuting completed blocks preserves the unoriented edge-occurrence multiset.
Surface validity transports across a permutation of completed blocks.
Boolean classifier for completed boundary-loop blocks.
Equations
- One or more equations did not get rendered due to their size.
- LeanEval.Topology.ClassificationOfSurfaces.FiniteCyclicPresentation.WordReduction.Pairing.TerminalNormalization.isBoundary x✝ = false
Instances For
Boolean classifier for completed crosscap blocks.
Equations
- One or more equations did not get rendered due to their size.
- LeanEval.Topology.ClassificationOfSurfaces.FiniteCyclicPresentation.WordReduction.Pairing.TerminalNormalization.isCrosscap x✝ = false
Instances For
Boolean classifier for completed handle blocks.
Equations
- One or more equations did not get rendered due to their size.
- LeanEval.Topology.ClassificationOfSurfaces.FiniteCyclicPresentation.WordReduction.Pairing.TerminalNormalization.isHandle x✝ = false
Instances For
Closed-surface blocks, retaining their original relative order.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Boundary-loop blocks, retaining their original relative order.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Stable partition with every boundary-loop block placed last.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Replace every completed handle block by the two crosscap blocks contributed in the presence of a fixed ambient crosscap.
Equations
Instances For
Canonical orientable edge names in the same order as the canonical handle and boundary blocks.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Canonical nonorientable edge names in crosscap-then-boundary order.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The canonical orientable name enumeration contains no duplicate edge.
Every canonical orientable edge occurs in its name enumeration.
The canonical nonorientable name enumeration contains no duplicate edge.
Every canonical nonorientable edge occurs in its name enumeration.
The stable boundary partition is a permutation of the original block sequence.
Boundary partitioning remains a permutation in arbitrary list context.
The recursive crosscap count is the corresponding Boolean list count.
The recursive handle count is the corresponding Boolean list count.
The recursive boundary count is the corresponding Boolean list count.
The distinct-name spine has one name per crosscap, two per handle, and two per boundary loop.
Block permutation preserves all three normal-form block counts.
Permuting completed blocks does not change the selected normal form.
Ordinary validity forces every ambient Fin edge to occur in the terminal name spine.
Equivalence obtained by pairing two duplicate-free exhaustive name enumerations position by position.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The enumeration equivalence maps the entire source name list to the target list exactly.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Forget the edge names and signs of one completed block.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Shape sequence of a completed block word.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Final orientation bit assigned to each edge name by its unique completed block.
Equations
- One or more equations did not get rendered due to their size.
- LeanEval.Topology.ClassificationOfSurfaces.FiniteCyclicPresentation.WordReduction.Pairing.TerminalNormalization.reverseForBlocks [] x✝ = false
Instances For
Positively normalized spelling of one completed block after applying an edge equivalence.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Positively normalize a full completed block sequence.
Equations
Instances For
Reconstruct a positively oriented block word from a shape list and its flat edge-name spine. Malformed shape/name pairs are assigned the empty word; completed block sequences always land in the exact-shape cases.
Equations
- One or more equations did not get rendered due to their size.
- LeanEval.Topology.ClassificationOfSurfaces.FiniteCyclicPresentation.WordReduction.Pairing.TerminalNormalization.wordFromKinds [] x✝ = []
- LeanEval.Topology.ClassificationOfSurfaces.FiniteCyclicPresentation.WordReduction.Pairing.TerminalNormalization.wordFromKinds x✝¹ x✝ = []
Instances For
Positive normalization is determined entirely by the block shapes and mapped name spine.
Filtering out the boundary blocks leaves exactly one boundary shape per boundary count.
With no crosscaps, the closed portion consists of exactly the counted handles.
With no handles, the closed portion consists of exactly the counted crosscaps.
After stable boundary partitioning, an orientable block list has exactly the canonical handle-then-boundary shape.
After stable boundary partitioning, a handle-free block list has exactly the canonical crosscap-then-boundary shape.
Consume an arbitrary list of named handle blocks before a remaining shape/name context.
Consume an arbitrary list of named crosscap blocks before a remaining shape/name context.
Consume a complete list of named boundary blocks.
The canonical orientable name spine and shape list reconstruct the existing canonical word exactly.
The canonical nonorientable name spine and shape list reconstruct the existing canonical word exactly.
A name belonging to the tail is not captured by the head block's orientation lookup.
The signed relabeling selected by the unique block-name spine positively normalizes every completed block.
An already ordered orientable completed word relabels exactly to the existing canonical orientable finite-cyclic presentation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An already ordered nonorientable completed word relabels exactly to the existing canonical nonorientable finite-cyclic presentation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Handle conversion merely permutes the distinct edge-name spine.
Handle conversion preserves the unoriented edge-occurrence multiset of the exact word.
Converting all handles produces no remaining handle block.
Each converted handle contributes exactly two completed crosscaps.
Handle conversion leaves the number of boundary-loop blocks unchanged.
Convert one displayed handle in the presence of a positive anchor crosscap.
Recursively convert every handle following a fixed positive anchor crosscap.
Expose one completed crosscap whenever the recursive crosscap count is nonzero.
Reverse a negative crosscap at the head of a completed block sequence.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Normalize the sign of a displayed head crosscap without changing the remaining block word.
Result of converting every handle after choosing an existing crosscap anchor.
- target : TerminalCompletedWord
The
targetdeclaration. - equivalent : NormalizationEquivalent terminal.validPresentation self.target.validPresentation
- crosscapCount_eq : CompletedBlock.crosscapCount self.target.blocks = CompletedBlock.crosscapCount terminal.blocks + 2 * CompletedBlock.handleCount terminal.blocks
- boundaryCount_eq : CompletedBlock.boundaryCount self.target.blocks = CompletedBlock.boundaryCount terminal.blocks
Instances For
Type-valued crosscap decomposition used by the constructive conversion result.
- before : List (CompletedBlock n)
The
beforedeclaration. - anchor : Fin n
The
anchordeclaration. - negative : Bool
The
negativedeclaration. - after : List (CompletedBlock n)
The
afterdeclaration.
Instances For
Select one crosscap decomposition from a nonzero crosscap count.
Equations
Instances For
In the presence of a crosscap, rotate one crosscap to the head, normalize its sign, and convert every handle into two additional crosscaps.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A raw one-face context containing one completed boundary loop.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Reversing only a boundary carrier identifies its negative- and positive-carrier spellings while fixing a context that avoids that carrier.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Commute one positive-carrier boundary loop past the following completed block, in arbitrary cyclic context.
Commute a completed boundary loop of either carrier orientation past the following block.
The duplicate-free block invariant supplies every freshness condition needed by an adjacent boundary commute.
Commute one completed boundary loop across an arbitrary finite block interval.
Stably partition every completed boundary loop behind all closed-surface blocks, in arbitrary cyclic context.
The stable boundary partition as another completed terminal word.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Boundary sorting preserves the exact normal form selected by block counts.
Every completed terminal word is normalization-equivalent to its stable boundary partition.
Handle conversion preserves the exact normal form selected by the original nonorientable completed word.
The completed-block terminal seam: stable-sort boundary blocks, convert all handles when a
crosscap is present, normalize every edge orientation, and relabel positionally to the single
canonical finite-cyclic presentation selected by TerminalCompletedWord.normalForm.
The fully discharged token-level terminal normalizer consumed by the terminating marked-word recursion.
Equations
Instances For
Normalize any valid connected finite-cyclic surface presentation to the one canonical
presentation selected by an admissible NormalForm.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Universal Gallier--Xu normalization theorem at the faithful polygonal-realization interface: every surface-valid connected finite-cyclic presentation is polygonally equivalent to the existing canonical presentation of an Eval-admissible normal form.