Chunking: with coefficients below
ProvedIntMul.HvdH.chunk_productinteger-multiplicationnumber-theory
Splitting into chunks. Let , and . Write the base- digits and for , and for . Put
Then
This is step (1) of Proposition 5.4: with and we have , , and , whose coefficients are small enough to be recovered exactly and recombined by overlap-add.
Formalization Note All quantities are natural numbers; the digits are written with / and %.
Preamble
import Mathlib open Finset
Formal statement
namespace IntMul.HvdH
theorem chunk_product (b N f g : ℕ) (hN : 1 ≤ N) (hf : f < 2 ^ (b * N)) (hg : g < 2 ^ (b * N)) :
f * g = ∑ j ∈ range (2 * N - 1),
(∑ k ∈ range (j + 1),
(if k < N then f / 2 ^ (b * k) % 2 ^ b else 0) *
(if j - k < N then g / 2 ^ (b * (j - k)) % 2 ^ b else 0)) * 2 ^ (b * j) ∧
∀ j, (∑ k ∈ range (j + 1),
(if k < N then f / 2 ^ (b * k) % 2 ^ b else 0) *
(if j - k < N then g / 2 ^ (b * (j - k)) % 2 ^ b else 0)) < N * 2 ^ (2 * b) := by sorry
end IntMul.HvdHSource
D. Harvey and J. van der Hoeven, Integer multiplication in time O(n log n), Annals of Mathematics 193 (2021), no. 2, 563–617, https://doi.org/10.4007/annals.2021.193.2.4, §5.3 proof of Proposition 5.4, step (1) (split f, g into N chunks of b bits, f = F(2^b), g = G(2^b), fg = (FG)(2^b), 0 ≤ H_j < 2^{2b} N)