-- File: optlib/Optlib/Algorithm/LASSO.lean
Theorem statement:
theorem extracted_formal_statement_71 {n m : ℕ+} {b : Fin ↑m → ℝ} {A : Matrix (Fin ↑m) (Fin ↑n) ℝ}
  (h_original_goal : ConvexOn ℝ Set.univ fun x => 1 / 2 * ‖A *ᵥ x - b‖ ^ 2) : Convex ℝ Set.univ := sorry

Tactic state before:
n m : ℕ+
b : Fin ↑m → ℝ
A : Matrix (Fin ↑m) (Fin ↑n) ℝ
⊢ ConvexOn ℝ Set.univ fun x => 1 / 2 * ‖A *ᵥ x - b‖ ^ 2

Tactic: apply monotone_gradient_convex'

Tactic state after:
[case h₁
 n m : ℕ+
 b : Fin ↑m → ℝ
 A : Matrix (Fin ↑m) (Fin ↑n) ℝ
 ⊢ Convex ℝ Set.univ,
 case hf
 n m : ℕ+
 b : Fin ↑m → ℝ
 A : Matrix (Fin ↑m) (Fin ↑n) ℝ
 ⊢ ∀ x ∈ Set.univ, HasGradientAt (fun x => 1 / 2 * ‖A *ᵥ x - b‖ ^ 2) (?f' x) x,
 case mono
 n m : ℕ+
 b : Fin ↑m → ℝ
 A : Matrix (Fin ↑m) (Fin ↑n) ℝ
 ⊢ ∀ x ∈ Set.univ, ∀ y ∈ Set.univ, inner (?f' x - ?f' y) (x - y) ≥ 0,
 case f'
 n m : ℕ+
 b : Fin ↑m → ℝ
 A : Matrix (Fin ↑m) (Fin ↑n) ℝ
 ⊢ EuclideanSpace ℝ (Fin ↑n) → EuclideanSpace ℝ (Fin ↑n)]

Premises used:
monotone_gradient_convex' : ∀ {E : Type u_1} [inst : NormedAddCommGroup E] [inst_1 : InnerProductSpace ℝ E]
  [inst_2 : CompleteSpace E] {f : E → ℝ} {f' : E → E} {s : Set E},
  Convex ℝ s →
    (∀ x ∈ s, HasGradientAt f (f' x) x) → (∀ x ∈ s, ∀ y ∈ s, inner (f' x - f' y) (x - y) ≥ 0) → ConvexOn ℝ s f