A closed-orthant row proof implies every contraction of its row #
the corresponding closed-row proof module moves a (domain closed) row proof down to the
same core's open-orthant obligation, by observing that a strictly positive
length vector has empty vanishing set. This file makes the other, larger
move: the closed orthant of a core C also contains, as a face, the whole
closed orthant of every equal-genus contraction C / F.
Concretely, let F be a slot set of C which is a forest and whose
contraction leaves no loop, and let C' be the contracted core. Send a
length vector ℓ' of C' to the length vector of C that is ℓ' on the
surviving slots and 0 on F. Its vanishing set is exactly F, so a closed
row proof of C applies there, and
Utilities.Certificate.DegenerateSpec.DegSpec.Contraction.laplacianEquiv identifies the resulting
degenerate graph with the honest subdivision of C'.
So one closed-orthant row proof discharges the open-orthant obligation of its core and of every core below it in the contraction order.
What the data has to supply, and why orientation is a real constraint #
DegenerateSpec.Contraction matches slots with their orientation: it asks
for vtx (C'.tail e') = rep (C.tail (slot e')), not for the unordered pair.
Slot reversal is deliberately not part of that structure — it is supplied
separately by SubdivisionGraph.Spec.Relabeling. ContractionData below
inherits that restriction, so it witnesses only orientation-exact
contractions. A contraction that needs a slot flipped has to be composed with
a Relabeling; that composition is not built here.
Where this does not reach #
Contracting a slot of a split loop (a bivalent marker w carrying two
parallel slots to its base v) is never admissible: contracting one of the
pair identifies v with w, so the other becomes a loop and IsLoopy holds;
contracting both is not a forest. The number of split loops is therefore
constant along every face reachable this way, and a loop-carrying row is never
a face of a loopless one. See the corresponding closed-row proof module.
A core is its two endpoint maps. Used by the RowNNNFromRowMMM files to
check, rather than assume, that the core they write out by hand is the one the
catalog names.
Data exhibiting core' as the contraction of core along the slot set
F, orientation included. Every field is decidable on concrete cores, so an
instance is built by decide.
The contracted slot set.
Which vertex of
corerepresents each vertex ofcore'.Which slot of
coreeach slot ofcore'is.- isForest : ContractionForestCensusGeneral.IsForest core self.F
Contracting
Fpreserves the genus. - notLoopy : ¬ContractionForestCensusGeneral.IsLoopy core self.F
Contracting
Fleaves no loop. - slot_inj : Function.Injective self.slot
- vtx_inj : Function.Injective self.vtx
Instances For
The length vector of core which is s.length on the surviving slots and
0 on F.
Instances For
The face {ℓ = 0 on F} of the closed orthant of core, matched with the
honest subdivision of the contracted core core'.
Equations
Instances For
The contraction bridge. A closed-orthant row proof for core
discharges the open-orthant row obligation of every orientation-exact
equal-genus contraction core' of core.