Lemma 16 ↔ Proposition 14 (round six, `paper_round_layer`)
ProvedGlueLayout.paper_round_layerLemma 16 ↔ Proposition 14. For a slot b ≤ h < b + qK, every axis takes part in round
h, and the round's selected bits act exactly as layerSel (2^A) K D (2^B) ρ: bit
ρ = (h-b) mod K of each of the D consecutive K-bit chunks of group j₀ (tgt_slot).
The following holds (Lean statement, in the scope of module Solutions.GlueLayout):
theorem GlueLayout.paper_round_layer (hK : 0 < K) (hℓ : 1 ≤ ℓ) {h : ℕ} (hb : bb ℓ K ≤ h)
(hh : h < bb ℓ K + qq ℓ K * K) (M : M2) {X : Type*} [AddCommMonoid X] [Module ℂ X]
(xs : List X) :
selOp (paperSel D ℓ K long hK hℓ h) (tens M) xs =
selOp (layerSel (2 ^ preA D ℓ K long h) K D (2 ^ sufB D ℓ K h) (rhoOf ℓ K h)
(rhoOf_lt ℓ K hK h)) (tens M) xs
Context. Glue 2a: the paper's layout as a CoordLayout, its selected bits, and the bridge to layerSel
- §0 bit arithmetic:
getBit_bitsum,bitsum_update(binary digit sums),getD_decode(a digit ofdecode),getD_decode_binSh(bits of a binary address). - §1
PosData/posSel: selected bits of a binary address given by bit positions;selOp_transport: two selected-bit structures related by an address map preserving the linear index give the sameselOpfor every tensor kernel. - §2
slotLayout: a slot arrangementarr(a list of slot namesnm i hcovering every sloth < a iexactly once) is aCoordLayout (binSh |arr|) a;slotSel(roundh, axesP) isSelCompatwith it (slot_compat). - §3
chunk_bridge: if the selected positions areA + iK + (K-1-ρ)in a binary address of lengthA + DK + B, the selected-bit operator islayerSel (2^A) K D (2^B) ρof §5. - §4 the paper's layout
tgtL(SynthLayoutPaper):paperLayout,paperSel,synth_forward_paper(§6.1 on the concrete layout: the rounds implementB F^-), andpaper_round_layer(for every slotb ≤ h < b + qKthe round's simultaneous layer is exactly Proposition 14'slayerH (2^A) K D (2^B) ρwithρ = (h-b) mod K, viatgt_slot).
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_K_Defs33
import Definitions.Def_IntMul_Kappa_R6_Defs1
import Mathlib
set_option autoImplicit false
set_option relaxedAutoImplicit false
set_option maxHeartbeats 1000000
open GlueLayout
open Finset Butterfly AModel Synth
variable {n : ℕ} {ι : Type*} [Fintype ι] [DecidableEq ι]
variable (D ℓ K : ℕ) [NeZero D] (long : Fin D → Bool)
variable {R : Type*} [CommRing R] [Algebra ℂ R] (y : Rˣ)
theorem GlueLayout.paper_round_layer (hK : 0 < K) (hℓ : 1 ≤ ℓ) {h : ℕ} (hb : bb ℓ K ≤ h)
(hh : h < bb ℓ K + qq ℓ K * K) (M : M2) {X : Type*} [AddCommMonoid X] [Module ℂ X]
(xs : List X) :
selOp (paperSel D ℓ K long hK hℓ h) (tens M) xs =
selOp (layerSel (2 ^ preA D ℓ K long h) K D (2 ^ sufB D ℓ K h) (rhoOf ℓ K h)
(rhoOf_lt ℓ K hK h)) (tens M) xs := by sorry