Block two (round six, `blk2_lab`)
ProvedIntMul.Kappa.R6.Bit.NB.blk2_labBlock two.
The following holds (Lean statement, in the scope of module Solutions.R6BitNBNetB):
theorem IntMul.Kappa.R6.Bit.NB.blk2_lab {a : ℕ} (ha : a < 1771) (L : Wr → FMat 529 N)
(hL : ∀ w, w < 45413 → L (ι2 a w) = pre2 ch N a w) :
LabGates N (blk2 ch a) L ∧ (∀ w, w < 45413 → (blk2 ch a).foldl (labStepH N) L (ι2 a w) = fin2 ch N a w) ∧
∀ x, (∀ w, w < 45413 → ι2 a w ≠ x) → (blk2 ch a).foldl (labStepH N) L x = L x
Context. Round six, bit network: frame labels (LabGates for the whole program)
At field size N, under EOK ch N (flag basis, good denominators and the frame matrices of the
chosen edges), the whole program is label consistent from the initial labels L0, and the final
labels are: swapMat on X(a, s), A₁, A₂, and Φ₂(a, ND(s + 1)) on Y(a, s).
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 {ch : Ch} {N : ℕ} (h : EOK ch N)
include h
attribute [local irreducible] LabGates
theorem IntMul.Kappa.R6.Bit.NB.blk2_lab {a : ℕ} (ha : a < 1771) (L : Wr → FMat 529 N)
(hL : ∀ w, w < 45413 → L (ι2 a w) = pre2 ch N a w) :
LabGates N (blk2 ch a) L ∧ (∀ w, w < 45413 → (blk2 ch a).foldl (labStepH N) L (ι2 a w) = fin2 ch N a w) ∧
∀ x, (∀ w, w < 45413 → ι2 a w ≠ x) → (blk2 ch a).foldl (labStepH N) L x = L x := by sorry