The rebuild of a gate computes `gateApply` (`sumS_gate`)
ProvedIntMul.Kappa.R6.IL.sumS_gateThe rebuild of a gate computes gateApply.
The following holds (Lean statement, in the scope of module Solutions.R6ILNet):
theorem IntMul.Kappa.R6.IL.sumS_gate {v : ℕ} (g : Matrix (Fin W ⊕ Fin T) (Fin W ⊕ Fin T) (ZMod 2))
(S : Finset (Fin W ⊕ Fin T)) (st : Fin W ⊕ Fin T → List (ZMod 2))
(h : ∀ x, (st x).length = v) (n : ℕ) (hn : n < T + W) :
sumS (tabS st) v (srcT (ngOf g S) n) = tabS (Bit.gateApply v g S st) n
Context. Round six, item language: a QHNet program on a table of T + W streams
The wires Fin W ⊕ Fin T of a round-six network are laid out as a table of T + W streams of
length v on stack 0 (temporaries first: inr t ↦ t, inl w ↦ T + w, eqv).
gateH_fsp: a gate(g, S)is one fine rebuildrebuildCU (T + W) (srcT (ngOf g S))(frozen KIL3/KFD table code), with denotationgateApply;instrH,netH: the code of an instruction / of a program, an edge(x, e)being run in place byapplyCFwith an edge codeE e;netH_runs: the program code computesnetRunH v impl progwhenever every edge code computesimpl eon single streams (under the invariantInv G0).
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_Defs13
set_option autoImplicit false
set_option relaxedAutoImplicit false
set_option maxHeartbeats 1000000
open IntMul IntMul.Kappa IntMul.Kappa.R6 IntMul.Kappa.R6.IL
open IntMul NLogN NLogN.RS NLogN.KIL NLogN.KFD AModel AModelL12 Finset
variable {W T m : ℕ}
theorem IntMul.Kappa.R6.IL.sumS_gate {v : ℕ} (g : Matrix (Fin W ⊕ Fin T) (Fin W ⊕ Fin T) (ZMod 2))
(S : Finset (Fin W ⊕ Fin T)) (st : Fin W ⊕ Fin T → List (ZMod 2))
(h : ∀ x, (st x).length = v) (n : ℕ) (hn : n < T + W) :
sumS (tabS st) v (srcT (ngOf g S) n) = tabS (Bit.gateApply v g S st) n := by sorry