theorem extracted_formal_statement_66 {n m : ℕ+} {b : Fin ↑m → ℝ} {A : Matrix (Fin ↑m) (Fin ↑n) ℝ}
  (x : EuclideanSpace ℝ (Fin ↑n)) :
  let f := fun x => 1 / 2 * A *ᵥ x ⬝ᵥ A *ᵥ x;
  let f' := fun x => Aᵀ *ᵥ A *ᵥ x;
  HasGradientAt f (f' x) x →
    let h := fun x => b ⬝ᵥ A *ᵥ x;
    let h' := fun x => Aᵀ *ᵥ b;
    HasGradientAt h (h' x) x →
      let φ := fun x => 1 / 2 * ‖A *ᵥ x - b‖ ^ 2;
      (φ = fun x => f x - h x + 1 / 2 * b ⬝ᵥ b) →
        ∀ (y : EuclideanSpace ℝ (Fin ↑n)) (z : Fin ↑n),
          (Aᵀ *ᵥ (A *ᵥ y - b)) z = ((Aᵀ * A) *ᵥ y) z - (Aᵀ *ᵥ b) z →
            (Aᵀ *ᵥ A *ᵥ y - Aᵀ *ᵥ b) z = ((Aᵀ * A) *ᵥ y) z - (Aᵀ *ᵥ b) z := sorry

State before:
case h.h
n m : ℕ+
b : Fin ↑m → ℝ
A : Matrix (Fin ↑m) (Fin ↑n) ℝ
x : EuclideanSpace ℝ (Fin ↑n)
f : EuclideanSpace ℝ (Fin ↑n) → ℝ := fun x => 1 / 2 * A *ᵥ x ⬝ᵥ A *ᵥ x
f' : EuclideanSpace ℝ (Fin ↑n) → Fin ↑n → ℝ := fun x => Aᵀ *ᵥ A *ᵥ x
fgradient : HasGradientAt f (f' x) x
h : EuclideanSpace ℝ (Fin ↑n) → ℝ := fun x => b ⬝ᵥ A *ᵥ x
h' : EuclideanSpace ℝ (Fin ↑n) → Fin ↑n → ℝ := fun x => Aᵀ *ᵥ b
hgradient : HasGradientAt h (h' x) x
φ : EuclideanSpace ℝ (Fin ↑n) → ℝ := fun x => 1 / 2 * ‖A *ᵥ x - b‖ ^ 2
φ' : EuclideanSpace ℝ (Fin ↑n) → Fin ↑n → ℝ := fun x => Aᵀ *ᵥ (A *ᵥ x - b)
φeq : φ = fun x => f x - h x + 1 / 2 * b ⬝ᵥ b
y : EuclideanSpace ℝ (Fin ↑n)
z : Fin ↑n
⊢ (Aᵀ *ᵥ (A *ᵥ y - b)) z = ((Aᵀ * A) *ᵥ y) z - (Aᵀ *ᵥ b) z

Tactic: rw [Matrix.mulVec_sub Aᵀ]

State after:
[case h.h
 n m : ℕ+
 b : Fin ↑m → ℝ
 A : Matrix (Fin ↑m) (Fin ↑n) ℝ
 x : EuclideanSpace ℝ (Fin ↑n)
 f : EuclideanSpace ℝ (Fin ↑n) → ℝ := fun x => 1 / 2 * A *ᵥ x ⬝ᵥ A *ᵥ x
 f' : EuclideanSpace ℝ (Fin ↑n) → Fin ↑n → ℝ := fun x => Aᵀ *ᵥ A *ᵥ x
 fgradient : HasGradientAt f (f' x) x
 h : EuclideanSpace ℝ (Fin ↑n) → ℝ := fun x => b ⬝ᵥ A *ᵥ x
 h' : EuclideanSpace ℝ (Fin ↑n) → Fin ↑n → ℝ := fun x => Aᵀ *ᵥ b
 hgradient : HasGradientAt h (h' x) x
 φ : EuclideanSpace ℝ (Fin ↑n) → ℝ := fun x => 1 / 2 * ‖A *ᵥ x - b‖ ^ 2
 φ' : EuclideanSpace ℝ (Fin ↑n) → Fin ↑n → ℝ := fun x => Aᵀ *ᵥ (A *ᵥ x - b)
 φeq : φ = fun x => f x - h x + 1 / 2 * b ⬝ᵥ b
 y : EuclideanSpace ℝ (Fin ↑n)
 z : Fin ↑n
 ⊢ (Aᵀ *ᵥ A *ᵥ y - Aᵀ *ᵥ b) z = ((Aᵀ * A) *ᵥ y) z - (Aᵀ *ᵥ b) z]

Relevant lemmas:
Matrix.mulVec_sub : ∀ {m : Type u_2} {n : Type u_3} {α : Type v} [inst : NonUnitalNonAssocRing α] [inst_1 : Fintype n]
  (A : Matrix m n α) (x y : n → α), A *ᵥ (x - y) = A *ᵥ x - A *ᵥ y