-- File: optlib/Optlib/Algorithm/LASSO.lean
Theorem statement:
theorem extracted_formal_statement_72 {n m : ℕ+} {b : Fin ↑m → ℝ} {A : Matrix (Fin ↑m) (Fin ↑n) ℝ}
  (x : EuclideanSpace ℝ (Fin ↑n)) (a : x ∈ Set.univ) (y : EuclideanSpace ℝ (Fin ↑n)) (a_1 : y ∈ Set.univ)
  (h_original_goal : inner (Aᵀ *ᵥ (A *ᵥ x - b) - Aᵀ *ᵥ (A *ᵥ y - b)) (x - y) ≥ 0) :
  Aᵀ *ᵥ (A *ᵥ x - A *ᵥ y) ⬝ᵥ (x - y) ≥ 0 := sorry

Tactic state before:
case mono
n m : ℕ+
b : Fin ↑m → ℝ
A : Matrix (Fin ↑m) (Fin ↑n) ℝ
x : EuclideanSpace ℝ (Fin ↑n)
a✝¹ : x ∈ Set.univ
y : EuclideanSpace ℝ (Fin ↑n)
a✝ : y ∈ Set.univ
⊢ inner (Aᵀ *ᵥ (A *ᵥ x - b) - Aᵀ *ᵥ (A *ᵥ y - b)) (x - y) ≥ 0

Tactic: rw [Matrix.mulVec_sub, Matrix.mulVec_sub, ← sub_add, sub_add_eq_add_sub, sub_add_cancel, ←
  Matrix.mulVec_sub, real_inner_eq_dot]

Tactic state after:
[case mono
 n m : ℕ+
 b : Fin ↑m → ℝ
 A : Matrix (Fin ↑m) (Fin ↑n) ℝ
 x : EuclideanSpace ℝ (Fin ↑n)
 a✝¹ : x ∈ Set.univ
 y : EuclideanSpace ℝ (Fin ↑n)
 a✝ : y ∈ Set.univ
 ⊢ Aᵀ *ᵥ (A *ᵥ x - A *ᵥ y) ⬝ᵥ (x - y) ≥ 0]

Premises used:
sub_add_eq_add_sub : ∀ {α : Type u_1} [inst : SubtractionCommMonoid α] (a b c : α), a - b + c = a + c - b
real_inner_eq_dot : ∀ {m : ℕ+} (x y : EuclideanSpace ℝ (Fin ↑m)), inner x y = x ⬝ᵥ y
sub_add_cancel : ∀ {G : Type u_1} [inst : AddGroup G] (a b : G), a - b + b = a
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
sub_add : ∀ {α : Type u_1} [inst : SubtractionCommMonoid α] (a b c : α), a - b + c = a - (b - c)