Block two, scalars (`blk2_sc`)
ProvedIntMul.Kappa.R6.Bit.NB.blk2_scBlock two, scalars.
The following holds (Lean statement, in the scope of module Solutions.R6BitNBNetC):
theorem IntMul.Kappa.R6.Bit.NB.blk2_sc {a : ℕ} (ha : a < 1771) (v : Wr → FVN N) (hv : ∀ w, w < 45413 → v (ι2 a w) = u2 ch N a w) :
True ∧ (∀ w, w < 45413 → (blk2 ch a).foldl scalarStepM v (ι2 a w) = fin2S ch N a w) ∧
∀ x, (∀ w, w < 45413 → ι2 a w ≠ x) → (blk2 ch a).foldl scalarStepM v x = v x
Context. Round six, bit network: the scalar circuit and formal correctness (FormalOK)
The module-valued scalar circuit (formal values over ZMod 2) of the whole program: stage one
adds X(T, b) into Y(T, b), stage two adds Y(a, S) into X(a, S), the correction adds
X into τ and τ into Y. With the labels of R6BitNBNetB and formal_labels, every role
ρ w ends with (swapMat, w).
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_Defs52
set_option autoImplicit false
set_option relaxedAutoImplicit false
set_option maxHeartbeats 1000000
open IntMul IntMul.Kappa IntMul.Kappa.R6 IntMul.Kappa.R6.Bit IntMul.Kappa.R6.Bit.NB
open Matrix R6Chk R6Chk.Bit R6Chk.Bit.Loc AModel AModelFac
variable {N : ℕ}
variable (ch : Ch)
theorem IntMul.Kappa.R6.Bit.NB.blk2_sc {a : ℕ} (ha : a < 1771) (v : Wr → FVN N) (hv : ∀ w, w < 45413 → v (ι2 a w) = u2 ch N a w) :
True ∧ (∀ w, w < 45413 → (blk2 ch a).foldl scalarStepM v (ι2 a w) = fin2S ch N a w) ∧
∀ x, (∀ w, w < 45413 → ι2 a w ≠ x) → (blk2 ch a).foldl scalarStepM v x = v x := by sorry