The multi-break interpolated script #
AffinePositionMultiBreak names a passive multi-break slope script by a
list of affine-positioned breaks and computes its Laplacian exactly: the
endpoint sum at a core vertex, the jump of the break list at an interior
vertex, and in particular the vanishing of that jump away from every
named break. What it does not yet supply is the value at a named
break, or the small amount of vertex-by-vertex bookkeeping (effective,
Reaches) that every concrete instance of it would otherwise have to
restate. Both are entirely row-independent, so both are proved here once,
directly on top of AffinePositionMultiBreak (component 1).
Sorted break lists.
SegmentReflection.value/slopehard-code a three-piece step function (down, flat, up), andGenusFourCore100.rampSlope/capSlopehard-code two- and three-piece step functions viamin/max. The multi-break format of component 1 allows an arbitrary number of pieces, named by an arbitrary (unsorted) list;BreakSortedisolates the case that every script actually produces — start positions strictly increasing along the list — andbreakSlope_eq_of_breakSortedgives, once, for any number of pieces, the same kind of closed form those files hard-code by hand: the value of a sorted break list at one of its own start positions is exactly that entry's slope. The supporting lemmabreakSlope_append_cons_eqis more general still: it needs no global sortedness, only that nothing after the chosen entry in list order also starts at or before the query point.March data.
AffinePosition.SlopeScript.MarchDatabundles the closing balance condition ofAffinePosition.SlopeScript.Balancedwith sortedness on every slot — the affine-positioned analogue ofGenusFourCore100.RampData, generalized from one window per slot to an arbitrary sorted sequence of them.sortedBreaks_of_coordinate_ltgives a convenient sufficient condition for sortedness (breaks listed in increasing coordinate order by script index), andprin_firingScript_atBreakcomputes the Laplacian of a march at one of its own named breaks in closed form, generalizingGenusFourCore100.rampSlope_diff/capSlope_diffto an arbitrary sorted sequence of breaks.Effectiveness and reachability bookkeeping.
effective_of_casesandreaches_of_script, restated verbatim in every direct genus-four row (GenusFourCore100.leanetc.) for its own fixedn, p, are proved once here for an arbitrarySubdivisionGraph.Spec n p, so no row needs to restate them again.
Nothing here is row specific, and nothing here is decidable-by-decide: the
only Boolean checks anywhere in the stack are the fail-closed bound checks
already introduced by AffinePosition.
Generic effectiveness and reachability bookkeeping #
Effectivity is checked vertex by vertex: core vertices and interior
vertices separately. Row-independent generalization of the
effective_of_cases helper otherwise restated for each direct genus-four
row (e.g. GenusFourCore100.effective_of_cases).
An explicit firing script realizing an effective representative with a
chip at q proves that D reaches q. Row-independent generalization of
the reaches_of_script helper otherwise restated for each direct
genus-four row (e.g. GenusFourCore100.reaches_of_script).
Sorted break lists #
Pure list combinatorics on List (ℕ × ℤ): none of it mentions a
SubdivisionGraph.Spec, but it is housed in the same namespace as
breakSlope/breakSlopeFrom (AffinePositionMultiBreak.lean) for
discoverability.
A break list is sorted when its start positions strictly increase along
the list, in list order. Every break list actually produced by a script
whose entries are supplied in increasing-coordinate order has this shape
(AffinePosition.SlopeScript.sortedBreaks_of_coordinate_lt).
Equations
- Utilities.Certificate.SubdivisionGraph.Spec.BreakSorted breaks = List.Pairwise (fun (a b : ℕ × ℤ) => a.1 < b.1) breaks
Instances For
The value of the scan at a chosen entry's own start position: whatever
precedes the entry is irrelevant (the entry itself applies once reached,
since entry.1 ≤ k for k = entry.1), and nothing after it in the list can
override it once everything after it starts strictly later than k. This
is the closed form SegmentReflection.value/GenusFourCore100.rampSlope/
capSlope hard-code for two or three pieces, given here once for any
number of pieces and needing no global sortedness hypothesis.
The value of a sorted break list at any point k at or after a member
entry, as long as no other member of the list starts strictly between
entry and k, is exactly entry's slope: sortedness places every other
member either at or before entry (irrelevant, entry overrides it) or
strictly after k (irrelevant, it is never reached). This is the general
"current regime" reading of a sorted break list; evaluating it at k = entry.1 recovers breakSlope_eq_of_breakSorted below.
The value of a sorted break list at one of its own start positions is
exactly that entry's slope. Special case of breakSlope_eq_of_breakSorted_le
at k = entry.1.
Affine-positioned marches #
If a script entry names edge, its decoded (coordinate, slope) pair is
a member of the decoded break list for edge. Converse of
exists_of_mem_breaks.
Every slot's decoded break list is sorted.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Sufficient condition for SortedBreaks: on every slot, breaks named by
an earlier script index have a strictly smaller decoded coordinate than
breaks named by a later one. This is the condition a script author actually
establishes (breaks are written down in the order the chip should pass
through them), and it is enough to make every slot's decoded break list
sorted, without ever materializing that list.
Consistency data for a multi-break script that marches through its
breaks in coordinate order on every slot: the closing balance condition of
Balanced, together with sortedness of every slot's decoded break list.
The affine-positioned analogue of GenusFourCore100.RampData, generalized
from one window per slot to an arbitrary sorted sequence of them.
- balanced : Balanced certificate script potential point core_nonempty hValid hCone
- sorted : SortedBreaks certificate script point
Instances For
The Laplacian of a march at one of its own named breaks: the entry's
slope minus the running value just before it. Generalizes
GenusFourCore100.rampSlope_diff/capSlope_diff to an arbitrary sorted
sequence of affine-positioned breaks.