Firing scripts, potentials and the Laplacian on the closed length orthant #
This is the DegSpec counterpart of Certificate/SubdivisionGraph.lean's
prin_eq_sum_steps and of Certificate/SlopeScript.lean. Nothing in
SubdivisionGraph.Spec or SlopeScript is touched; these are separate
statements about DegSpec.graph, so the strictly positive path keeps working
verbatim while the closed-orthant path is proved out beside it.
The one statement that makes the whole design pay #
prin_coreVertex_eq_endpointSum below is word for word the Spec statement
with rep applied to the two endpoints:
prin d.graph script (d.coreVertex r) =
∑ e : Fin p, ((if d.rep (d.core.tail e) = d.rep r then slope e 0 else 0) +
(if d.rep (d.core.head e) = d.rep r then
-slope e (d.length e - 1) else 0))
In particular the sum still runs over every slot of the uncontracted core,
vanishing slots included. That is not an accident and it is not free: a
vanishing slot emits no unit steps, so it contributes nothing to the left-hand
side, and it contributes nothing to the right-hand side either because its two
endpoints lie in one rep-class (rep_zero) and its two endpoint terms are
slope e 0 and -slope e (d.length e - 1) = -slope e 0. That is exactly
DegSpec.zero_slot_cancels.
Consequently prin_coreVertex_eq_classSum says the Laplacian at a contracted
class is the sum over the class members of the uncontracted per-vertex
formula. A row's per-core-vertex value lemmas are therefore reusable at
every face by addition, rather than being reproved once per face. That is the
whole economic argument for the closed-orthant layer, and it is a theorem
here.
Which unit steps meet a given vertex #
The Laplacian as a sum over unit steps #
Slope data #
A slope datum for a firing script: the script rises by slope edge k
across the k-th unit step of slot edge. Vanishing slots impose no
condition, since they carry no unit step.
Equations
Instances For
Endpoint sums, including the vanishing slots #
The load-bearing formula. At a contracted core class the Laplacian is
the endpoint sum over all slots of the uncontracted core. Vanishing slots
appear in the sum and contribute zero, by zero_slot_cancels.
At an interior vertex the Laplacian is the difference of the two adjacent slopes. Unchanged in form from the strictly positive case: an interior vertex only ever exists on a slot of length at least two.
The fibre form: a row's per-core-vertex lemmas, reused by addition #
Additivity across a face. The Laplacian at a contracted class is the
sum, over the members of that class, of the uncontracted per-core-vertex
endpoint formula — the same expression SlopeScript's
prin_coreVertex_eq_endpointSum produces on a strictly positive Spec.
This is what makes a retrofit additive rather than per-face: a row proves its
value lemmas once, at each of the n core vertices, and every face reads them
off by summing over classes.
Reachability transfers across a face for free: a class value dominates any one member's value once every member is non-negative.
Scripts assembled from per-slot path values #
The script whose value at path position k of slot edge is
value edge k, and potential (rep v) at the class of the core vertex v.
Equations
- d.slotValueScript potential value (Sum.inl c) = potential ↑c
- d.slotValueScript potential value (Sum.inr interior) = value interior.fst (↑interior.snd + 1)
Instances For
Compatibility of the per-slot values with the core potential.
On a vanishing slot the two conditions collide at index 0 and force
potential (rep (tail e)) = potential (rep (head e)) — which rep_zero
already grants. So a compatible slot-value script is automatically a
well-defined function on the contracted graph, with no extra field.
Instances For
Agreement with the strictly positive layer #
At a strictly positive length vector rep is the identity, so every statement
above is the corresponding SlopeScript statement transported along
laplacianEquivToSpec. Nothing in SlopeScript is restated or weakened.
On the interior the class sum degenerates to a single term, so
prin_coreVertex_eq_classSum reduces literally to the Spec formula.
Consistency with the strictly positive layer: on the interior the class
sum collapses to a single term and the formula is literally
SubdivisionGraph.Spec.prin_coreVertex_eq_endpointSum.