Round-six lemma `sp_setup`
ProvedIntMul.Kappa.R6.sp_setupAn 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.R6SSetup):
theorem IntMul.Kappa.R6.sp_setup (P : Prm) (hP : P.Ok) (n : ℕ) (G : Good P n) (hW : WinOK6 P n)
(hl2 : 2 ≤ ℓP6 P n) (a c : ℕ) (hc : 0 < c) (hε : P.ε = (a : ℝ) / c) (s : IState HS) :
∃ g, Sp (setRS a c P.x) (encK s (f0S n (bP6 n))) (encK s g)
(cSet P n a c * kU (BbS P n a c)) ∧ SetOK P n g
Context. Round-six setup, part 8: the whole register program
setRS a c x = parameters, sources, descriptors, register file. sp_setup: from the managed
state with n on 23 and b on 24 it reaches a managed state whose stacks carry the values
the round-six BaseOK6 asks for, at cost cSet · kU Bb.
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_R6_Defs70 set_option autoImplicit false set_option relaxedAutoImplicit false set_option maxHeartbeats 1000000 open IntMul IntMul.Kappa IntMul.Kappa.R6 open IntMul NLogN NLogN.KIL NLogN.KFM NLogN.RS Finset Function
theorem IntMul.Kappa.R6.sp_setup (P : Prm) (hP : P.Ok) (n : ℕ) (G : Good P n) (hW : WinOK6 P n)
(hl2 : 2 ≤ ℓP6 P n) (a c : ℕ) (hc : 0 < c) (hε : P.ε = (a : ℝ) / c) (s : IState HS) :
∃ g, Sp (setRS a c P.x) (encK s (f0S n (bP6 n))) (encK s g)
(cSet P n a c * kU (BbS P n a c)) ∧ SetOK P n g := by sorry