Division-free arithmetic programs over a field and their operation counts.
def
MatrixMultiplicationAllFields.MatrixMultiplication.Arithmetic.Program.registerCost
{F : Type u_1}
{Input : Type u_2}
{r : ℕ}
:
Charge each register only for the arithmetic operation that created it.
Equations
- MatrixMultiplicationAllFields.MatrixMultiplication.Arithmetic.Program.nil.registerCost = Fin.elim0
- (p.step g).registerCost = fun (i : Fin (n + 1)) => Fin.cases g.cost p.registerCost i
Instances For
theorem
MatrixMultiplicationAllFields.MatrixMultiplication.Arithmetic.Program.sum_registerCost
{F : Type u_1}
{Input : Type u_2}
{r : ℕ}
(p : Program F Input r)
:
theorem
MatrixMultiplicationAllFields.MatrixMultiplication.Arithmetic.Program.eval_eq_constant_or_input_of_registerCost_eq_zero
{F : Type u_1}
{Input : Type u_2}
[Field F]
{r : ℕ}
(p : Program F Input r)
(i : Fin r)
(hi : p.registerCost i = 0)
:
theorem
MatrixMultiplicationAllFields.MatrixMultiplication.Arithmetic.MatrixAlgorithm.output_injective
{F : Type u_1}
[Field F]
{a b c : ℕ}
(P : MatrixAlgorithm F a b c)
(hb : 1 ≤ b)
(hP : P.Correct)
:
Function.Injective fun (o : Fin a × Fin c) => P.output o.1 o.2
theorem
MatrixMultiplicationAllFields.MatrixMultiplication.Arithmetic.MatrixAlgorithm.one_le_output_registerCost
{F : Type u_1}
[Field F]
{a b c : ℕ}
(P : MatrixAlgorithm F a b c)
(hb : 1 ≤ b)
(hP : P.Correct)
(i : Fin a)
(k : Fin c)
:
theorem
MatrixMultiplicationAllFields.MatrixMultiplication.Arithmetic.rectangularAdmissibleExponent_two_le
{F : Type u_1}
[Field F]
{k τ : ℝ}
(hτ : RectangularAdmissibleExponent F k τ)
:
theorem
MatrixMultiplicationAllFields.MatrixMultiplication.Arithmetic.rectangularOmega_le_of_admissibleExponent
{F : Type u_1}
[Field F]
{k τ : ℝ}
(hτ : RectangularAdmissibleExponent F k τ)
:
theorem
MatrixMultiplicationAllFields.MatrixMultiplication.Arithmetic.admissibleExponent_iff_rectangular_one
(F : Type u_1)
[Field F]
(τ : ℝ)
:
theorem
MatrixMultiplicationAllFields.MatrixMultiplication.Arithmetic.admissibleExponent_two_le
{F : Type u_1}
[Field F]
{τ : ℝ}
(hτ : AdmissibleExponent F τ)
:
theorem
MatrixMultiplicationAllFields.MatrixMultiplication.Arithmetic.omega_le_of_admissibleExponent
{F : Type u_1}
[Field F]
{τ : ℝ}
(hτ : AdmissibleExponent F τ)
:
@[simp]
theorem
MatrixMultiplicationAllFields.MatrixMultiplication.Arithmetic.rectangularOmega_one
(F : Type u_1)
[Field F]
: