Round-six lemma `recStep_sound`
ProvedIntMul.Kappa.R6.Bit.recStep_soundcomplexity-theoryinteger-multiplicationkappa-improvement
An 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.R6BitNBScalA):
theorem IntMul.Kappa.R6.Bit.recStep_sound (r : Rec) (hn : r.1 < 2 ^ 16) (acc : (Bool × ℕ) × List (ℕ × ℕ × ℕ))
(hg : GateOK supG (acc.2.headD (0, 0, 0))) (h : (recStep acc r).1.1 = true) (z : ℕ → M)
(hz : IdInv x acc.1.2 z) : IdInv x (recStep acc r).1.2 (xrL (recEl r) z)
Context. Round six, bit network: the producer computes the node values (B A C = I)
Over a module M of characteristic two, for inputs x : ℕ → M:
- XOR-run algebra:
xrLis additive, is inverted by the reversed run, and acts on read/write separated gate lists by adding the sources; msum x mask = Σ_{i ∈ mask} x_i;prod_vals: after copyingx_tinto the source slots (Cg) and running the producer (Ag), slotqholdsmsum x (supG (idF IDS3 q))(the node-id simulation, checked by the kernel inR6BitNBIdB0..2);reads_eq: the six slots read for targetTsum tox_T(R6BitNBIdRd).
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_Defs51
set_option autoImplicit false
set_option relaxedAutoImplicit false
set_option maxHeartbeats 1000000
open IntMul IntMul.Kappa IntMul.Kappa.R6 IntMul.Kappa.R6.Bit
open R6Chk R6Chk.Bit R6Chk.Bit.Loc
variable {M : Type*} [AddCommGroup M] (h2 : ∀ a : M, a + a = 0) (x : ℕ → M)
include h2
Formal statement
theorem IntMul.Kappa.R6.Bit.recStep_sound (r : Rec) (hn : r.1 < 2 ^ 16) (acc : (Bool × ℕ) × List (ℕ × ℕ × ℕ))
(hg : GateOK supG (acc.2.headD (0, 0, 0))) (h : (recStep acc r).1.1 = true) (z : ℕ → M)
(hz : IdInv x acc.1.2 z) : IdInv x (recStep acc r).1.2 (xrL (recEl r) z) := 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.recStep_sound`, Solutions/R6BitNBScalA.lean (lines 209–250) of the round-six development.