Theorem: ContinuousMultilinearMap.hasFDerivAt_compContinuousLinearMap (ForML/ContinuousMultilinearMap.lean)

State before:
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
α : Type u_2
inst✝¹³ : NormedAddCommGroup α
inst✝¹² : NormedSpace 𝕜 α
D : Type u_3
inst✝¹¹ : NormedAddCommGroup D
inst✝¹⁰ : NormedSpace 𝕜 D
ι : Type u_4
inst✝⁹ : Fintype ι
inst✝⁸ : DecidableEq ι
E : ι → Type u_5
inst✝⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E i)
E₁ : ι → Type u_6
inst✝⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
G : Type u_7
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_8
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i →L[𝕜] E₁ i
⊢ HasFDerivAt (fun f => compContinuousLinearMap g f)
    (∑ i : ι, ContinuousLinearMap.comp (compContinuousLinearMapUpdate g i f) (ContinuousLinearMap.proj i)) f
Tactic:
have (x : (i : ι) → E i) := (g.hasFDerivAt (fun i ↦ f i (x i))).hasFDerivAtFilter (le_refl _)
State after:
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
α : Type u_2
inst✝¹³ : NormedAddCommGroup α
inst✝¹² : NormedSpace 𝕜 α
D : Type u_3
inst✝¹¹ : NormedAddCommGroup D
inst✝¹⁰ : NormedSpace 𝕜 D
ι : Type u_4
inst✝⁹ : Fintype ι
inst✝⁸ : DecidableEq ι
E : ι → Type u_5
inst✝⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E i)
E₁ : ι → Type u_6
inst✝⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
G : Type u_7
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_8
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i →L[𝕜] E₁ i
this :
  ∀ (x : (i : ι) → E i),
    HasFDerivAtFilter (⇑g) (linearDeriv g fun i => (f i) (x i)) (fun i => (f i) (x i)) (nhds fun i => (f i) (x i))
⊢ HasFDerivAt (fun f => compContinuousLinearMap g f)
    (∑ i : ι, ContinuousLinearMap.comp (compContinuousLinearMapUpdate g i f) (ContinuousLinearMap.proj i)) f

State before:
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
α : Type u_2
inst✝¹³ : NormedAddCommGroup α
inst✝¹² : NormedSpace 𝕜 α
D : Type u_3
inst✝¹¹ : NormedAddCommGroup D
inst✝¹⁰ : NormedSpace 𝕜 D
ι : Type u_4
inst✝⁹ : Fintype ι
inst✝⁸ : DecidableEq ι
E : ι → Type u_5
inst✝⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E i)
E₁ : ι → Type u_6
inst✝⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
G : Type u_7
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_8
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i →L[𝕜] E₁ i
this :
  ∀ (x : (i : ι) → E i),
    HasFDerivAtFilter (⇑g) (linearDeriv g fun i => (f i) (x i)) (fun i => (f i) (x i)) (nhds fun i => (f i) (x i))
⊢ HasFDerivAt (fun f => compContinuousLinearMap g f)
    (∑ i : ι, ContinuousLinearMap.comp (compContinuousLinearMapUpdate g i f) (ContinuousLinearMap.proj i)) f
Tactic:
refine HasFDerivAtFilter.of_isLittleO ?_
State after:
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
α : Type u_2
inst✝¹³ : NormedAddCommGroup α
inst✝¹² : NormedSpace 𝕜 α
D : Type u_3
inst✝¹¹ : NormedAddCommGroup D
inst✝¹⁰ : NormedSpace 𝕜 D
ι : Type u_4
inst✝⁹ : Fintype ι
inst✝⁸ : DecidableEq ι
E : ι → Type u_5
inst✝⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E i)
E₁ : ι → Type u_6
inst✝⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
G : Type u_7
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_8
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i →L[𝕜] E₁ i
this :
  ∀ (x : (i : ι) → E i),
    HasFDerivAtFilter (⇑g) (linearDeriv g fun i => (f i) (x i)) (fun i => (f i) (x i)) (nhds fun i => (f i) (x i))
⊢ (fun x' =>
      compContinuousLinearMap g x' - compContinuousLinearMap g f -
        (∑ i : ι, ContinuousLinearMap.comp (compContinuousLinearMapUpdate g i f) (ContinuousLinearMap.proj i))
          (x' - f)) =o[nhds f]
    fun x' => x' - f

State before:
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
α : Type u_2
inst✝¹³ : NormedAddCommGroup α
inst✝¹² : NormedSpace 𝕜 α
D : Type u_3
inst✝¹¹ : NormedAddCommGroup D
inst✝¹⁰ : NormedSpace 𝕜 D
ι : Type u_4
inst✝⁹ : Fintype ι
inst✝⁸ : DecidableEq ι
E : ι → Type u_5
inst✝⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E i)
E₁ : ι → Type u_6
inst✝⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
G : Type u_7
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_8
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i →L[𝕜] E₁ i
this :
  ∀ (x : (i : ι) → E i),
    HasFDerivAtFilter (⇑g) (linearDeriv g fun i => (f i) (x i)) (fun i => (f i) (x i)) (nhds fun i => (f i) (x i))
⊢ (fun x' =>
      compContinuousLinearMap g x' - compContinuousLinearMap g f -
        (∑ i : ι, ContinuousLinearMap.comp (compContinuousLinearMapUpdate g i f) (ContinuousLinearMap.proj i))
          (x' - f)) =o[nhds f]
    fun x' => x' - f
Tactic:
rw [Asymptotics.isLittleO_iff]
State after:
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
α : Type u_2
inst✝¹³ : NormedAddCommGroup α
inst✝¹² : NormedSpace 𝕜 α
D : Type u_3
inst✝¹¹ : NormedAddCommGroup D
inst✝¹⁰ : NormedSpace 𝕜 D
ι : Type u_4
inst✝⁹ : Fintype ι
inst✝⁸ : DecidableEq ι
E : ι → Type u_5
inst✝⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E i)
E₁ : ι → Type u_6
inst✝⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
G : Type u_7
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_8
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i →L[𝕜] E₁ i
this :
  ∀ (x : (i : ι) → E i),
    HasFDerivAtFilter (⇑g) (linearDeriv g fun i => (f i) (x i)) (fun i => (f i) (x i)) (nhds fun i => (f i) (x i))
⊢ ∀ ⦃c : ℝ⦄,
    0 < c →
      ∀ᶠ (x : (i : ι) → E i →L[𝕜] E₁ i) in nhds f,
        ‖compContinuousLinearMap g x - compContinuousLinearMap g f -
              (∑ i : ι, ContinuousLinearMap.comp (compContinuousLinearMapUpdate g i f) (ContinuousLinearMap.proj i))
                (x - f)‖ ≤
          c * ‖x - f‖

State before:
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
α : Type u_2
inst✝¹³ : NormedAddCommGroup α
inst✝¹² : NormedSpace 𝕜 α
D : Type u_3
inst✝¹¹ : NormedAddCommGroup D
inst✝¹⁰ : NormedSpace 𝕜 D
ι : Type u_4
inst✝⁹ : Fintype ι
inst✝⁸ : DecidableEq ι
E : ι → Type u_5
inst✝⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E i)
E₁ : ι → Type u_6
inst✝⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
G : Type u_7
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_8
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i →L[𝕜] E₁ i
this :
  ∀ (x : (i : ι) → E i),
    HasFDerivAtFilter (⇑g) (linearDeriv g fun i => (f i) (x i)) (fun i => (f i) (x i)) (nhds fun i => (f i) (x i))
⊢ ∀ ⦃c : ℝ⦄,
    0 < c →
      ∀ᶠ (x : (i : ι) → E i →L[𝕜] E₁ i) in nhds f,
        ‖compContinuousLinearMap g x - compContinuousLinearMap g f -
              (∑ i : ι, ContinuousLinearMap.comp (compContinuousLinearMapUpdate g i f) (ContinuousLinearMap.proj i))
                (x - f)‖ ≤
          c * ‖x - f‖
Tactic:
intro c hc
State after:
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
α : Type u_2
inst✝¹³ : NormedAddCommGroup α
inst✝¹² : NormedSpace 𝕜 α
D : Type u_3
inst✝¹¹ : NormedAddCommGroup D
inst✝¹⁰ : NormedSpace 𝕜 D
ι : Type u_4
inst✝⁹ : Fintype ι
inst✝⁸ : DecidableEq ι
E : ι → Type u_5
inst✝⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E i)
E₁ : ι → Type u_6
inst✝⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
G : Type u_7
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_8
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i →L[𝕜] E₁ i
this :
  ∀ (x : (i : ι) → E i),
    HasFDerivAtFilter (⇑g) (linearDeriv g fun i => (f i) (x i)) (fun i => (f i) (x i)) (nhds fun i => (f i) (x i))
c : ℝ
hc : 0 < c
⊢ ∀ᶠ (x : (i : ι) → E i →L[𝕜] E₁ i) in nhds f,
    ‖compContinuousLinearMap g x - compContinuousLinearMap g f -
          (∑ i : ι, ContinuousLinearMap.comp (compContinuousLinearMapUpdate g i f) (ContinuousLinearMap.proj i))
            (x - f)‖ ≤
      c * ‖x - f‖

State before:
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
α : Type u_2
inst✝¹³ : NormedAddCommGroup α
inst✝¹² : NormedSpace 𝕜 α
D : Type u_3
inst✝¹¹ : NormedAddCommGroup D
inst✝¹⁰ : NormedSpace 𝕜 D
ι : Type u_4
inst✝⁹ : Fintype ι
inst✝⁸ : DecidableEq ι
E : ι → Type u_5
inst✝⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E i)
E₁ : ι → Type u_6
inst✝⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
G : Type u_7
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_8
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i →L[𝕜] E₁ i
this :
  ∀ (x : (i : ι) → E i),
    HasFDerivAtFilter (⇑g) (linearDeriv g fun i => (f i) (x i)) (fun i => (f i) (x i)) (nhds fun i => (f i) (x i))
c : ℝ
hc : 0 < c
⊢ ∀ᶠ (x : (i : ι) → E i →L[𝕜] E₁ i) in nhds f,
    ‖compContinuousLinearMap g x - compContinuousLinearMap g f -
          (∑ i : ι, ContinuousLinearMap.comp (compContinuousLinearMapUpdate g i f) (ContinuousLinearMap.proj i))
            (x - f)‖ ≤
      c * ‖x - f‖
Tactic:
simp
State after:
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
α : Type u_2
inst✝¹³ : NormedAddCommGroup α
inst✝¹² : NormedSpace 𝕜 α
D : Type u_3
inst✝¹¹ : NormedAddCommGroup D
inst✝¹⁰ : NormedSpace 𝕜 D
ι : Type u_4
inst✝⁹ : Fintype ι
inst✝⁸ : DecidableEq ι
E : ι → Type u_5
inst✝⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E i)
E₁ : ι → Type u_6
inst✝⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
G : Type u_7
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_8
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i →L[𝕜] E₁ i
this :
  ∀ (x : (i : ι) → E i),
    HasFDerivAtFilter (⇑g) (linearDeriv g fun i => (f i) (x i)) (fun i => (f i) (x i)) (nhds fun i => (f i) (x i))
c : ℝ
hc : 0 < c
⊢ ∀ᶠ (x : (i : ι) → E i →L[𝕜] E₁ i) in nhds f,
    ‖compContinuousLinearMap g x - compContinuousLinearMap g f -
          (∑ x_1 : ι, compContinuousLinearMap g (Function.update f x_1 (x x_1)) -
            Finset.univ.card • compContinuousLinearMap g f)‖ ≤
      c * ‖x - f‖

State before:
𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
α : Type u_2
inst✝¹³ : NormedAddCommGroup α
inst✝¹² : NormedSpace 𝕜 α
D : Type u_3
inst✝¹¹ : NormedAddCommGroup D
inst✝¹⁰ : NormedSpace 𝕜 D
ι : Type u_4
inst✝⁹ : Fintype ι
inst✝⁸ : DecidableEq ι
E : ι → Type u_5
inst✝⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E i)
E₁ : ι → Type u_6
inst✝⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
G : Type u_7
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_8
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : ContinuousMultilinearMap 𝕜 E₁ G
f : (i : ι) → E i →L[𝕜] E₁ i
this :
  ∀ (x : (i : ι) → E i),
    HasFDerivAtFilter (⇑g) (linearDeriv g fun i => (f i) (x i)) (fun i => (f i) (x i)) (nhds fun i => (f i) (x i))
c : ℝ
hc : 0 < c
⊢ ∀ᶠ (x : (i : ι) → E i →L[𝕜] E₁ i) in nhds f,
    ‖compContinuousLinearMap g x - compContinuousLinearMap g f -
          (∑ x_1 : ι, compContinuousLinearMap g (Function.update f x_1 (x x_1)) -
            Finset.univ.card • compContinuousLinearMap g f)‖ ≤
      c * ‖x - f‖
Tactic:
sorry
State after:
no goals