The endpoint layer for a marked script #
ConfigurationCommon reads the Laplacian at a contracted core class as a sum,
over the slots of the uncontracted core, of one endpointPair. This file is
the same reading for DegSpec.splitScript, the script that may bend downward at
one marked offset per slot (SplitRampScript.lean).
Two facts make the marked layer cheap.
- An unmarked slot is not new. Setting
mark e = 0andmarkValue e = potential (rep (tail e))makes the marked endpoint pair equal toConfigurationCommon.endpointPair(endpointPair_of_unmarked). A row therefore marks only the one or two slots carrying an interior chip and keeps the existing single-ramp ledger -- and the existing configuration files' arithmetic -- everywhere else. - A marked slot splits into two ordinary arms. Its tail endpoint sees the
canonical ramp of rise
markRiseInovermark esteps, and its head endpoint the canonical ramp of risemarkRiseOutoverlength e - mark esteps (endpointPair_marked_tail,endpointPair_marked_head). So the one-edge ledger ofConfigurationFive-- stated on bare naturals, independent of any core -- applies to each half unchanged.
Both AR rows that need this (05, the sixth family, and 08, the seventh)
place their interior chips so that one of the two rises is always zero, which
is also the hypothesis under which the chip pays for the kink; see
Utilities/Subdivision/SplitRampArithmetic.lean.
The two endpoint terms one original core slot contributes to one contracted
core class, for a marked script. As in ConfigurationCommon.endpointPair,
keeping them paired is what makes a collapsed slot cancel.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The core-class Laplacian of a marked script is the sum of its endpoint
pairs. This is prin_splitScript_coreVertex_eq_endpointSum with the summand
named.
Unmarked slots #
On an unmarked slot the outgoing rise is the ordinary core rise.
An unmarked slot is not new. Its marked endpoint pair is literally the single-ramp one.
Marked slots #
A marked slot is read as two ordinary arms. The hypotheses below are the ones a configuration supplies anyway: the mark lies strictly inside its slot exactly when neither half has collapsed.
At the tail of a marked slot the script is the canonical ramp of rise
markRiseIn over mark e steps.
At the head of a marked slot the script is the canonical ramp of rise
markRiseOut over length e - mark e steps.
A marked slot whose incoming ramp is flat contributes nothing at its tail. This is the shape both AR rows use at the far end of a marked leg.
A marked slot whose outgoing ramp is flat contributes nothing at its head.
Where a marked slot contributes nothing #
A marked slot whose chip lies strictly inside it touches only one contracted
class: the one carrying the height. The chip's own cost is paid at the marked
interior vertex, by prin_splitScript_interiorVertex_ge_neg_one, not at any
core class. These three lemmas are what makes a row's class bookkeeping short.
The hypothesis mark e < d.length e (resp. 0 < mark e) is not cosmetic: when
the mark reaches an end of its slot the chip is that core vertex, the split
ramp degenerates to a single ramp, and the slot behaves like an ordinary arm
with its chip at a core class. A row must case-split there; see the module
docstring of ConfigurationSeven.
Both ramps flat: the slot moves nothing anywhere.
A marked slot read from its tail: nothing reaches any class other than the tail's.
A marked slot read from its head: nothing reaches any class other than the head's.