Round-six lemma `touch_sub`
ProvedNLogN.KFW.RS.touch_subAn auxiliary lemma of the round-six development, published as a separate node because its proof is long or shared.
The following holds (Lean statement, in the scope of module Solutions.KFWSub):
theorem NLogN.KFW.RS.touch_sub (σ : Fin HS → Option ℤ) : ∀ (p : NLogN.RS), ∀ i ∈ touch p,
i ∈ touch (RS.sub σ p) ∨ (σ i).isSome
Context. KFW: literals read from registers (the uniformity meta-theorem for register programs)
A uniform register program U reads its run-time parameters from registers (tops of stacks).
RS.sub σ U replaces each register i with σ i = some v by the literal v; the result is
the (non-uniform) program with baked-in literals, for which a spec is usually already proved.
FSp.of_sub: if FSp (U.sub σ) s t c, the registers of σ hold their values in s
(Agree σ s) and U never writes them, then FSp U s t (400 c). Also fok_of_sub.
Formalization Note. Part of the Lean formalization of the round-six κ-improvement (integer-multiplication-kappa campaign, target IntMul.Kappa.jain_round6_framework). The statement is copied verbatim from the Lean development; the platform node carries the same declaration name. Definitions it mentions live in the IntMul_Kappa_R6_Defs* bundles (on top of the published κ bundles IntMul_Kappa_K_Defs*).
-- Round-six κ development (integer-multiplication-kappa), generated by skeleton subtraction. import Definitions.Def_IntMul_Kappa_K_Defs33 import Definitions.Def_IntMul_Kappa_R6_Defs1 import Mathlib import Definitions.Def_IntMul_HvdH_M_Defs8 import Definitions.Def_IntMul_MultitapeModel set_option autoImplicit false set_option relaxedAutoImplicit false set_option maxHeartbeats 1000000 open NLogN NLogN.KFW open IntMul NLogN.KFW.RS NLogN.RS NLogN.KFD
theorem NLogN.KFW.RS.touch_sub (σ : Fin HS → Option ℤ) : ∀ (p : NLogN.RS), ∀ i ∈ touch p,
i ∈ touch (RS.sub σ p) ∨ (σ i).isSome := by sorry