-- File: optlib/Optlib/Algorithm/BCD/Scheme.lean
Theorem statement:
theorem extracted_formal_statement_20.{u_2, u_1} {E : Type u_1} {F : Type u_2} [inst : NormedAddCommGroup E]
  [inst_1 : InnerProductSpace ℝ E] [inst_2 : CompleteSpace E] [inst_3 : NormedAddCommGroup F]
  [inst_4 : InnerProductSpace ℝ F] [inst_5 : CompleteSpace F] {H : WithLp 2 (E × F) → ℝ} (h : Differentiable ℝ H)
  (z : WithLp 2 (E × F)) (h₁ : HasGradientAt (fun y => H (z.1, y)) (grad_snd H z.1 z.2) z.2)
  (h₂ : HasGradientAt (fun y => H (z.1, y)) (gradient H z).2 z.2) : (gradient H z).2 = grad_snd H z.1 z.2 := sorry

Tactic state before:
E : Type u_1
F : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace ℝ E
inst✝³ : CompleteSpace E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
H : WithLp 2 (E × F) → ℝ
h : Differentiable ℝ H
z : WithLp 2 (E × F)
h₁ : HasGradientAt (fun y => H (z.1, y)) (grad_snd H z.1 z.2) z.2
h₂ : HasGradientAt (fun y => H (z.1, y)) (gradient H z).2 z.2
⊢ (gradient H z).2 = grad_snd H z.1 z.2

Tactic: exact HasGradientAt.unique h₂ h₁

Tactic state after:

Premises used:
HasGradientAt.unique : ∀ {𝕜 : Type u_1} {F : Type u_2} [inst : RCLike 𝕜] [inst_6 : NormedAddCommGroup F]
  [inst_7 : InnerProductSpace 𝕜 F] [inst_8 : CompleteSpace F] {f : F → 𝕜} {x gradf gradg : F},
  HasGradientAt f gradf x → HasGradientAt f gradg x → gradf = gradg