Round-six lemma `copy_facts`
ProvedJ6Seg.ChB.copy_factscomplexity-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.J6SegAxBud8):
theorem J6Seg.ChB.copy_facts (hD : dP6 P n = D + 1) (hk : k ≤ D) :
let post := axpost6 P n D k; let pre := axpre6 P n D k
let Bs := axBcp6 P ap n src D k
2 ≤ Bs ∧ zsz (k : ℤ) ≤ Bs ∧ zsz ((axs6 src k : ℕ) : ℤ) ≤ Bs ∧
zsz ((axt6 P n k : ℕ) : ℤ) ≤ Bs ∧
zsz ((axt6 P n k : ℤ) * post) ≤ Bs ∧ zsz ((pre : ℤ) * ((axt6 P n k : ℤ) * post)) ≤ Bs ∧
zsz (2 * ((pre : ℤ) * ((axt6 P n k : ℤ) * post))) ≤ Bs
Context. B-line axis budget 8: axBudget6_of (assembly of AxBudget6)
copy_facts: the copy / swap descriptor facts atBs = axBcp6(every value≤ 2T);axBudget6_of P hP ap : SideCost6 P ap → JBudget6 P ap → ChunkBudget6 P ap → AxBudget6 P ap(constants added, exponents maximised).
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_Defs70
set_option autoImplicit false
set_option relaxedAutoImplicit false
set_option maxHeartbeats 1000000
open J6Seg J6Seg.ChB
open IntMul NLogN NLogN.KIL NLogN.KFB IntMul.Kappa.R6 J6Seg J6Seg.KR
variable {P : Prm} {n : ℕ} {src : ℕ → ℕ} {D k : ℕ} (ap : AxPlan6) (h : Side.AxJ P n src D k)
include h
Formal statement
theorem J6Seg.ChB.copy_facts (hD : dP6 P n = D + 1) (hk : k ≤ D) :
let post := axpost6 P n D k; let pre := axpre6 P n D k
let Bs := axBcp6 P ap n src D k
2 ≤ Bs ∧ zsz (k : ℤ) ≤ Bs ∧ zsz ((axs6 src k : ℕ) : ℤ) ≤ Bs ∧
zsz ((axt6 P n k : ℕ) : ℤ) ≤ Bs ∧
zsz ((axt6 P n k : ℤ) * post) ≤ Bs ∧ zsz ((pre : ℤ) * ((axt6 P n k : ℤ) * post)) ≤ Bs ∧
zsz (2 * ((pre : ℤ) * ((axt6 P n k : ℤ) * post))) ≤ Bs := 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 `J6Seg.ChB.copy_facts`, Solutions/J6SegAxBud8.lean (lines 47–88) of the round-six development.