Ramp firing scripts on positive subdivisions #
A ramp is constant, then affine with slope -1, 0, or 1 on a bounded
window of each edge slot, then constant again. This is the generic positive-
length infrastructure behind the readable genus-four pencil proofs.
theorem
Utilities.Certificate.SubdivisionRamp.divisor_ext
{n p : ℕ}
{spec : SubdivisionGraph.Spec n p}
{D E : CFDiv spec.graph}
(hcore : ∀ (v : Fin n), D (spec.coreVertex v) = E (spec.coreVertex v))
(hint :
∀ (edge : Fin p) (offset : Fin (spec.length edge - 1)),
D (spec.interiorVertex edge offset) = E (spec.interiorVertex edge offset))
:
Two divisors on a subdivision agree when they agree on core and interior vertices separately.
theorem
Utilities.Certificate.SubdivisionRamp.pathVertex_interior
{n p : ℕ}
(spec : SubdivisionGraph.Spec n p)
(edge : Fin p)
(k : ℕ)
(hk0 : 0 < k)
(hk : k < spec.length edge)
:
A strictly interior path position is its corresponding interior vertex.
theorem
Utilities.Certificate.SubdivisionRamp.interiorVertex_eq_iff
{n p : ℕ}
(spec : SubdivisionGraph.Spec n p)
(e e' : Fin p)
(off : Fin (spec.length e - 1))
(off' : Fin (spec.length e' - 1))
:
Distinct interior vertices are distinguished by slot and offset.
theorem
Utilities.Certificate.SubdivisionRamp.coreVertex_ne_interiorVertex
{n p : ℕ}
(spec : SubdivisionGraph.Spec n p)
(v : Fin n)
(e : Fin p)
(off : Fin (spec.length e - 1))
:
A core vertex cannot be an interior vertex.
def
Utilities.Certificate.SubdivisionRamp.rampValue
{n p : ℕ}
(spec : SubdivisionGraph.Spec n p)
(pot : Fin n → ℤ)
(sgn : Fin p → ℤ)
(lo : Fin p → ℕ)
(t : ℕ)
:
Path values of a ramp script.
Equations
Instances For
def
Utilities.Certificate.SubdivisionRamp.rampScript
{n p : ℕ}
(spec : SubdivisionGraph.Spec n p)
(pot : Fin n → ℤ)
(sgn : Fin p → ℤ)
(lo : Fin p → ℕ)
(t : ℕ)
:
firingScript spec.graph
The ramp firing script.
Equations
- Utilities.Certificate.SubdivisionRamp.rampScript spec pot sgn lo t = spec.slotValueScript pot (Utilities.Certificate.SubdivisionRamp.rampValue spec pot sgn lo t)
Instances For
structure
Utilities.Certificate.SubdivisionRamp.RampData
{n p : ℕ}
(spec : SubdivisionGraph.Spec n p)
(pot : Fin n → ℤ)
(sgn : Fin p → ℤ)
(lo : Fin p → ℕ)
(t : ℕ)
:
Consistency of ramp data with the endpoint potentials and edge lengths.
Instances For
theorem
Utilities.Certificate.SubdivisionRamp.rampCompatible
{n p : ℕ}
{spec : SubdivisionGraph.Spec n p}
{pot : Fin n → ℤ}
{sgn : Fin p → ℤ}
{lo : Fin p → ℕ}
{t : ℕ}
(h : RampData spec pot sgn lo t)
:
spec.SlotValueCompatible pot (rampValue spec pot sgn lo t)
theorem
Utilities.Certificate.SubdivisionRamp.isStepSlope_ramp
{n p : ℕ}
{spec : SubdivisionGraph.Spec n p}
{pot : Fin n → ℤ}
{sgn : Fin p → ℤ}
{lo : Fin p → ℕ}
{t : ℕ}
(h : RampData spec pot sgn lo t)
:
spec.IsStepSlope (rampScript spec pot sgn lo t) (rampSlope sgn lo t)
theorem
Utilities.Certificate.SubdivisionRamp.prin_ramp_interiorVertex
{n p : ℕ}
{spec : SubdivisionGraph.Spec n p}
{pot : Fin n → ℤ}
{sgn : Fin p → ℤ}
{lo : Fin p → ℕ}
{t : ℕ}
(h : RampData spec pot sgn lo t)
(edge : Fin p)
(offset : Fin (spec.length edge - 1))
:
(prin spec.graph) (rampScript spec pot sgn lo t) (spec.interiorVertex edge offset) = rampSlope sgn lo t edge (↑offset + 1) - rampSlope sgn lo t edge ↑offset