Ordinary initialized wanted-position inputs #
Main definitions #
Wanted.input: four raw headers followed by the ordinary interleaved coordinate words.Wanted.inputPairs: a zero extension of that original finite list for natural-index invariants.
Main results #
Wanted.input_fits: the original header, length and coordinate words fit the admitted width.Wanted.input_word: initialized memory contains each original coordinate at its actual address.Wanted.exec_input: the fixed program computes the grouped arrays from actualState.init.
No powers, valid masks, tile keys, offsets, query codes or permutation words occur in the input.
theorem Cslib.Algorithms.WordRAM.MatrixMultiplication.Schonhage.Wanted.input_fits {w L m N : ℕ} (hm : m ≤ L) (qs : List (Fin N × Fin N)) (hfit : WordRAM.Fits w (wordBudget L m N qs.length)) :
WordRAM.InputFits w (input L m qs)
Header, length and every coordinate word fit from the same original numerical budget.
theorem Cslib.Algorithms.WordRAM.MatrixMultiplication.Schonhage.Wanted.exec_input {w L m N : ℕ} (hm : m ≤ L) (qs : List (Fin N × Fin N)) (hfit : WordRAM.Fits w (wordBudget L m N qs.length)) :
WordRAM.InputFits w (input L m qs) ∧ ∃ (y : WordRAM.Data 96),
WordRAM.ExecWithin w program (WordRAM.State.init (input L m qs)).data y (timeBound L m N qs.length) ∧ Parameters L m N qs.length y ∧ WordRAM.Data.Bounded w y ∧ (∀ (i : Fin qs.length),
y.mem (codeAddress L m N qs.length + CountingSort.position (tileKey L m N ∘ inputPairs qs) qs.length ↑i) = ↑(PrunedQuery.queryIndex
(MatrixMultiplication.Schonhage.outStrOfPos (MatrixMultiplication.Schonhage.MaskTable.layout hm)
↑(qs.get i).1 ↑(qs.get i).2)) ∧ y.mem
(originalAddress L m N qs.length + CountingSort.position (tileKey L m N ∘ inputPairs qs) qs.length ↑i) = ↑i) ∧ (∀ t ≤ MatrixMultiplication.Schonhage.numBands L m N ^ 2,
y.mem (offsetAddress L m N qs.length + t) = Nat.count (fun (k : ℕ) => (tileKey L m N ∘ inputPairs qs) k < t) qs.length) ∧ y.mem (offsetAddress L m N qs.length + MatrixMultiplication.Schonhage.numBands L m N ^ 2) = qs.length ∧ ∀ (a : ℕ),
a < inputLimit qs.length ∨ memoryLimit L m N qs.length ≤ a →
y.mem a = (WordRAM.State.init (input L m qs)).data.mem a
Complete execution from the actual initialized list, with guaranteed input fit and a bounded returned state. All auxiliary tables, counts, offsets and codes are computed natively.