Round-six lemma `fsR_sp`
ProvedJ6A.FS.fsR_spAn 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.J6AIL13):
theorem J6A.FS.fsR_sp {X dF : Fin HS} (hXr : X ∉ rg) (hX5 : X.val < 56) (hXT : X ≠ sTmp)
(hXC : X ≠ cRdC) (hXQ : ∀ i, Q dF i ≠ X)
{ea ey : Ex HS} (hea : J6A.PA.OnRg ea) (hey : J6A.PA.OnRg ey) (hpa : Plain ea = true)
(hpy : Plain ey = true) {fl : ℕ}
(s : IState HS) (F : Fin HS → List ℤ) (hrg : ∀ j ∈ rg, F j = []) (h13 : F cL = [])
(hQ : ∀ i, F (Q dF i) = [])
{k pre post sr t p α d W : ℕ} (hc : F X = J6A.PA.dL k pre post sr t p α d)
(hL : ∀ x ∈ J6A.PA.dL k pre post sr t p α d, |x| < 2 ^ W)
(hp : 1 ≤ p) (hα : 1 ≤ α) (hmW : sWidth p α + 4 ≤ W) (hfl : fl ≤ 2 ^ W)
(hta : Tame (2 ^ W) ea) (hty : Tame (2 ^ W) ey) {a y : ℤ}
(hA : ∀ v c, J6A.PA.PV pre post sr t p α W v → ev v c ea = a)
(hY : ∀ v c, J6A.PA.PV pre post sr t p α W v → ev v c ey = y) :
Sp (fsR X ea ey fl dF) (encK s F) (encK s (fsG F dF ((p + 2 : ℕ) : ℤ) fl a y))
(cFsR W p (sWidth p α) ea ey fl)
Context. A lines, IL side 13: the fine-descriptor set-ups
For a fine descriptor descFine w f a y with w = p + 2, f a literal and a, y expressions in
the registers of parAX X:
fsR X ea ey fl Q: enter the register file,parAX X, pushw, f, a, yon four temporariesQ 0 … Q 3(outsiderg, away fromdF), leave the register file;fsUp: then copyy, a, f, wontodFand drop the temporaries;fsDn: drop four fromdF.
fsUp_runs / fsDn_runs.
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_Defs64 set_option autoImplicit false set_option relaxedAutoImplicit false set_option maxHeartbeats 1000000 open J6A J6A.FS open IntMul NLogN NLogN.KIL NLogN.RS J6Seg.PJ IntMul.HvdH Function J6A.PA IntMul.Kappa.R6
theorem J6A.FS.fsR_sp {X dF : Fin HS} (hXr : X ∉ rg) (hX5 : X.val < 56) (hXT : X ≠ sTmp)
(hXC : X ≠ cRdC) (hXQ : ∀ i, Q dF i ≠ X)
{ea ey : Ex HS} (hea : J6A.PA.OnRg ea) (hey : J6A.PA.OnRg ey) (hpa : Plain ea = true)
(hpy : Plain ey = true) {fl : ℕ}
(s : IState HS) (F : Fin HS → List ℤ) (hrg : ∀ j ∈ rg, F j = []) (h13 : F cL = [])
(hQ : ∀ i, F (Q dF i) = [])
{k pre post sr t p α d W : ℕ} (hc : F X = J6A.PA.dL k pre post sr t p α d)
(hL : ∀ x ∈ J6A.PA.dL k pre post sr t p α d, |x| < 2 ^ W)
(hp : 1 ≤ p) (hα : 1 ≤ α) (hmW : sWidth p α + 4 ≤ W) (hfl : fl ≤ 2 ^ W)
(hta : Tame (2 ^ W) ea) (hty : Tame (2 ^ W) ey) {a y : ℤ}
(hA : ∀ v c, J6A.PA.PV pre post sr t p α W v → ev v c ea = a)
(hY : ∀ v c, J6A.PA.PV pre post sr t p α W v → ev v c ey = y) :
Sp (fsR X ea ey fl dF) (encK s F) (encK s (fsG F dF ((p + 2 : ℕ) : ℤ) fl a y))
(cFsR W p (sWidth p α) ea ey fl) := by sorry