Imports

Chapter 26 extension — parallel Strassen recurrences: all-input bounds

This module lifts the compatibility extension's exact power-of-two work and span solutions to all positive input sizes.

namespace CLRSnamespace Chapter27 private theorem strassenWork_exactPower_bounds (k : ) : 7 ^ k strassenWork (2 ^ k) strassenWork (2 ^ k) 3 * 7 ^ k := by have hexact := strassenWork_pow_two k rw [pow_succ (4 : ) k, pow_succ (7 : ) k] at hexact have hpow : 4 ^ k 7 ^ k := Nat.pow_le_pow_left (by norm_num) k constructor <;> omega private theorem strassenWork_exactPower_bigTheta : Chapter03.isBigTheta (fun k : => (strassenWork (2 ^ k) : )) (fun k : => (7 : ) ^ k) := by constructor · refine (Chapter03.isBigO_iff _ _).mpr 3, by norm_num, 0, ?_ intro k _ rw [abs_of_nonneg (Nat.cast_nonneg _), abs_of_nonneg (by positivity)] have hreal : (strassenWork (2 ^ k) : ) ((3 * 7 ^ k : ) : ) := by exact_mod_cast (strassenWork_exactPower_bounds k).2 simpa [Nat.cast_mul, Nat.cast_pow] using hreal · refine (Chapter03.isBigOmega_iff _ _).mpr 1, by norm_num, 0, ?_ intro k _ rw [abs_of_nonneg (by positivity : 0 (7 : ) ^ k), abs_of_nonneg (Nat.cast_nonneg _)] have hreal : ((7 ^ k : ) : ) (strassenWork (2 ^ k) : ) := by exact_mod_cast (strassenWork_exactPower_bounds k).1 simpa [Nat.cast_pow] using hreal private theorem strassenSpan_exactPower_bigTheta : Chapter03.isBigTheta (fun k : => (strassenSpan (2 ^ k) : )) (fun k : => (k : ) + 1) := by have hfun : (fun k : => (strassenSpan (2 ^ k) : )) = (fun k : => (k : ) + 1) := by funext k rw [strassenSpan_pow_two] push_cast norm_num rw [hfun] exact Chapter03.isBigTheta_refl _

Parallel Strassen has work n^(log₂ 7) on every positive input size.

theorem strassenWork_allInput_bigTheta : Chapter03.isBigTheta (fun n : => (strassenWork n : )) (Chapter04.realLogScale 7 2) := by have hcritical : Chapter03.isBigTheta (fun n : => (strassenWork n : )) (Chapter04.criticalPowerScale 7 2) := Chapter04.allInput_bigTheta_of_criticalPowerScale 7 2 (fun n : => (strassenWork n : )) (by norm_num) (by norm_num) (Chapter04.monotoneAbs_natCast strassenWork_monotone) strassenWork_exactPower_bigTheta exact Chapter03.isBigTheta_trans hcritical (Chapter04.criticalPowerScale_isBigTheta_realLogScale 7 2 (by norm_num) (by norm_num))

Parallel Strassen has logarithmic span on every positive input size.

theorem strassenSpan_allInput_bigTheta : Chapter03.isBigTheta (fun n : => (strassenSpan n : )) (Chapter04.polynomialLogScale 2 0) := by have hcritical : Chapter03.isBigTheta (fun n : => (strassenSpan n : )) (Chapter04.criticalPowerLogScale 1 2) := Chapter04.allInput_bigTheta_of_criticalPowerLogScale 1 2 (fun n : => (strassenSpan n : )) (by norm_num) (by norm_num) (Chapter04.monotoneAbs_natCast strassenSpan_monotone) (by simpa only [Nat.cast_one, one_pow, mul_one] using strassenSpan_exactPower_bigTheta) exact Chapter03.isBigTheta_trans hcritical (by simpa using Chapter04.criticalPowerLogScale_isBigTheta_polynomialLogScale 2 0 (by norm_num))
end Chapter27end CLRS