Generalized Prop. 11, denotation (round six, `progH_correct`)
ProvedIntMul.Kappa.R6.Bit.progH_correctcomplexity-theoryinteger-multiplicationkappa-improvement
Generalized Prop. 11, denotation.
The following holds (Lean statement, in the scope of module Solutions.R6BitRec):
theorem IntMul.Kappa.R6.Bit.progH_correct (C : QHNet R W T m) {q : ℕ} (hq : 1 ≤ q) (hm : 2 ≤ m)
(hOK : ∀ f, C.OK (q ^ f)) :
∀ (e P L : ℕ) (A B Cs : Shape) (xs : List R), W ^ depH m e ∣ L →
xs.length = vol (P :: L :: hdShape A B Cs e q) →
progH C q e P L A B Cs xs =
pull (P :: L :: hdShape A B Cs e q) (P :: L :: hdShape A B Cs e q)
(blockSwap (A.length + 2) (A.length + B.length + e + 2) e) 0 xs
Context. Round six, bit side: denotation of progH for every width
progH_correct: if C.OK (q ^ f) for every f and W ^ depH m e ∣ L, then progH C q e …
is the block swap of the two runs of e radix-q digits, for every e.
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*).
Preamble
-- Round-six κ development (integer-multiplication-kappa), generated by skeleton subtraction.
import Definitions.Def_IntMul_Kappa_R6_Defs4
set_option autoImplicit false
set_option relaxedAutoImplicit false
set_option maxHeartbeats 1000000
open IntMul IntMul.Kappa IntMul.Kappa.R6 IntMul.Kappa.R6.Bit
open AModel AModelFac Matrix
variable {R : Type*} [CommRing R] {W T m : ℕ} [NeZero W]
Formal statement
theorem IntMul.Kappa.R6.Bit.progH_correct (C : QHNet R W T m) {q : ℕ} (hq : 1 ≤ q) (hm : 2 ≤ m)
(hOK : ∀ f, C.OK (q ^ f)) :
∀ (e P L : ℕ) (A B Cs : Shape) (xs : List R), W ^ depH m e ∣ L →
xs.length = vol (P :: L :: hdShape A B Cs e q) →
progH C q e P L A B Cs xs =
pull (P :: L :: hdShape A B Cs e q) (P :: L :: hdShape A B Cs e q)
(blockSwap (A.length + 2) (A.length + B.length + e + 2) e) 0 xs := by sorrySource
S. Jain, round-six networks for the integer-multiplication κ-improvement campaign (https://github.com/Swapnil-jain/integer-mult-kappa, commit 5868dc7) and D. Colkitt, integer-mult-bounds (https://github.com/CrocSwap/integer-mult-bounds); target `IntMul.Kappa.jain_round6_framework`. Lean declaration `IntMul.Kappa.R6.Bit.progH_correct`, Solutions/R6BitRec.lean (lines 30–105) of the round-six development.