Theorem: UniformCauchySeqOnFilter.one_smulRight
File: Mathlib/Analysis/Calculus/UniformLimitsDeriv.lean

tactic: rw [SeminormedAddGroup.uniformCauchySeqOnFilter_iff_tendstoUniformlyOnFilter_zero,
  Metric.tendstoUniformlyOnFilter_iff] at hf' ⊢
state_before: ι : Type u_3
l : Filter ι
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → 𝕜 → G
g : 𝕜 → G
f' : ι → 𝕜 → G
g' : 𝕜 → G
x : 𝕜
l' : Filter 𝕜
hf' : UniformCauchySeqOnFilter f' l l'
⊢ UniformCauchySeqOnFilter (fun n z => ContinuousLinearMap.smulRight 1 (f' n z)) l l'

tactic: intro ε hε
state_before: ι : Type u_3
l : Filter ι
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → 𝕜 → G
g : 𝕜 → G
f' : ι → 𝕜 → G
g' : 𝕜 → G
x : 𝕜
l' : Filter 𝕜
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : (ι × ι) × 𝕜) in (l ×ˢ l) ×ˢ l', dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ε
⊢ ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : (ι × ι) × 𝕜) in (l ×ˢ l) ×ˢ l',
        dist (OfNat.ofNat 0 n.snd)
            (ContinuousLinearMap.smulRight 1 (f' n.fst.fst n.snd) -
              ContinuousLinearMap.smulRight 1 (f' n.fst.snd n.snd)) <
          ε

tactic: obtain ⟨q, hq, hq'⟩ := exists_between hε.lt
state_before: ι : Type u_3
l : Filter ι
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → 𝕜 → G
g : 𝕜 → G
f' : ι → 𝕜 → G
g' : 𝕜 → G
x : 𝕜
l' : Filter 𝕜
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : (ι × ι) × 𝕜) in (l ×ˢ l) ×ˢ l', dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ε
ε : ℝ
hε : ε > 0
⊢ ∀ᶠ (n : (ι × ι) × 𝕜) in (l ×ˢ l) ×ˢ l',
    dist (OfNat.ofNat 0 n.snd)
        (ContinuousLinearMap.smulRight 1 (f' n.fst.fst n.snd) - ContinuousLinearMap.smulRight 1 (f' n.fst.snd n.snd)) <
      ε

tactic: apply (hf' q hq).mono
state_before: case intro.intro
ι : Type u_3
l : Filter ι
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → 𝕜 → G
g : 𝕜 → G
f' : ι → 𝕜 → G
g' : 𝕜 → G
x : 𝕜
l' : Filter 𝕜
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : (ι × ι) × 𝕜) in (l ×ˢ l) ×ˢ l', dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ε
ε : ℝ
hε : ε > 0
q : ℝ
hq : 0 < q
hq' : q < ε
⊢ ∀ᶠ (n : (ι × ι) × 𝕜) in (l ×ˢ l) ×ˢ l',
    dist (OfNat.ofNat 0 n.snd)
        (ContinuousLinearMap.smulRight 1 (f' n.fst.fst n.snd) - ContinuousLinearMap.smulRight 1 (f' n.fst.snd n.snd)) <
      ε

tactic: intro n hn
state_before: case intro.intro
ι : Type u_3
l : Filter ι
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → 𝕜 → G
g : 𝕜 → G
f' : ι → 𝕜 → G
g' : 𝕜 → G
x : 𝕜
l' : Filter 𝕜
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : (ι × ι) × 𝕜) in (l ×ˢ l) ×ˢ l', dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ε
ε : ℝ
hε : ε > 0
q : ℝ
hq : 0 < q
hq' : q < ε
⊢ ∀ (x : (ι × ι) × 𝕜),
    dist (OfNat.ofNat 0 x.snd) (f' x.fst.fst x.snd - f' x.fst.snd x.snd) < q →
      dist (OfNat.ofNat 0 x.snd)
          (ContinuousLinearMap.smulRight 1 (f' x.fst.fst x.snd) -
            ContinuousLinearMap.smulRight 1 (f' x.fst.snd x.snd)) <
        ε

tactic: refine' lt_of_le_of_lt _ hq'
state_before: case intro.intro
ι : Type u_3
l : Filter ι
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → 𝕜 → G
g : 𝕜 → G
f' : ι → 𝕜 → G
g' : 𝕜 → G
x : 𝕜
l' : Filter 𝕜
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : (ι × ι) × 𝕜) in (l ×ˢ l) ×ˢ l', dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ε
ε : ℝ
hε : ε > 0
q : ℝ
hq : 0 < q
hq' : q < ε
n : (ι × ι) × 𝕜
hn : dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < q
⊢ dist (OfNat.ofNat 0 n.snd)
      (ContinuousLinearMap.smulRight 1 (f' n.fst.fst n.snd) - ContinuousLinearMap.smulRight 1 (f' n.fst.snd n.snd)) <
    ε

tactic: simp only [dist_eq_norm, Pi.zero_apply, zero_sub, norm_neg] at hn ⊢
state_before: case intro.intro
ι : Type u_3
l : Filter ι
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → 𝕜 → G
g : 𝕜 → G
f' : ι → 𝕜 → G
g' : 𝕜 → G
x : 𝕜
l' : Filter 𝕜
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : (ι × ι) × 𝕜) in (l ×ˢ l) ×ˢ l', dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ε
ε : ℝ
hε : ε > 0
q : ℝ
hq : 0 < q
hq' : q < ε
n : (ι × ι) × 𝕜
hn : dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < q
⊢ dist (OfNat.ofNat 0 n.snd)
      (ContinuousLinearMap.smulRight 1 (f' n.fst.fst n.snd) - ContinuousLinearMap.smulRight 1 (f' n.fst.snd n.snd)) ≤
    q

tactic: refine' ContinuousLinearMap.op_norm_le_bound _ hq.le _
state_before: case intro.intro
ι : Type u_3
l : Filter ι
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → 𝕜 → G
g : 𝕜 → G
f' : ι → 𝕜 → G
g' : 𝕜 → G
x : 𝕜
l' : Filter 𝕜
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : (ι × ι) × 𝕜) in (l ×ˢ l) ×ˢ l', dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ε
ε : ℝ
hε : ε > 0
q : ℝ
hq : 0 < q
hq' : q < ε
n : (ι × ι) × 𝕜
hn : ‖f' n.fst.fst n.snd - f' n.fst.snd n.snd‖ < q
⊢ ‖ContinuousLinearMap.smulRight 1 (f' n.fst.fst n.snd) - ContinuousLinearMap.smulRight 1 (f' n.fst.snd n.snd)‖ ≤ q

tactic: intro z
state_before: case intro.intro
ι : Type u_3
l : Filter ι
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → 𝕜 → G
g : 𝕜 → G
f' : ι → 𝕜 → G
g' : 𝕜 → G
x : 𝕜
l' : Filter 𝕜
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : (ι × ι) × 𝕜) in (l ×ˢ l) ×ˢ l', dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ε
ε : ℝ
hε : ε > 0
q : ℝ
hq : 0 < q
hq' : q < ε
n : (ι × ι) × 𝕜
hn : ‖f' n.fst.fst n.snd - f' n.fst.snd n.snd‖ < q
⊢ ∀ (x : 𝕜),
    ‖↑(ContinuousLinearMap.smulRight 1 (f' n.fst.fst n.snd) - ContinuousLinearMap.smulRight 1 (f' n.fst.snd n.snd)) x‖ ≤
      q * ‖x‖

tactic: simp only [ContinuousLinearMap.coe_sub', Pi.sub_apply, ContinuousLinearMap.smulRight_apply,
  ContinuousLinearMap.one_apply]
state_before: case intro.intro
ι : Type u_3
l : Filter ι
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → 𝕜 → G
g : 𝕜 → G
f' : ι → 𝕜 → G
g' : 𝕜 → G
x : 𝕜
l' : Filter 𝕜
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : (ι × ι) × 𝕜) in (l ×ˢ l) ×ˢ l', dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ε
ε : ℝ
hε : ε > 0
q : ℝ
hq : 0 < q
hq' : q < ε
n : (ι × ι) × 𝕜
hn : ‖f' n.fst.fst n.snd - f' n.fst.snd n.snd‖ < q
z : 𝕜
⊢ ‖↑(ContinuousLinearMap.smulRight 1 (f' n.fst.fst n.snd) - ContinuousLinearMap.smulRight 1 (f' n.fst.snd n.snd)) z‖ ≤
    q * ‖z‖

tactic: rw [← smul_sub, norm_smul, mul_comm]
state_before: case intro.intro
ι : Type u_3
l : Filter ι
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → 𝕜 → G
g : 𝕜 → G
f' : ι → 𝕜 → G
g' : 𝕜 → G
x : 𝕜
l' : Filter 𝕜
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : (ι × ι) × 𝕜) in (l ×ˢ l) ×ˢ l', dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ε
ε : ℝ
hε : ε > 0
q : ℝ
hq : 0 < q
hq' : q < ε
n : (ι × ι) × 𝕜
hn : ‖f' n.fst.fst n.snd - f' n.fst.snd n.snd‖ < q
z : 𝕜
⊢ ‖z • f' n.fst.fst n.snd - z • f' n.fst.snd n.snd‖ ≤ q * ‖z‖

tactic: gcongr
state_before: case intro.intro
ι : Type u_3
l : Filter ι
𝕜 : Type u_1
inst✝² : IsROrC 𝕜
G : Type u_2
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f : ι → 𝕜 → G
g : 𝕜 → G
f' : ι → 𝕜 → G
g' : 𝕜 → G
x : 𝕜
l' : Filter 𝕜
hf' :
  ∀ (ε : ℝ),
    ε > 0 →
      ∀ᶠ (n : (ι × ι) × 𝕜) in (l ×ˢ l) ×ˢ l', dist (OfNat.ofNat 0 n.snd) (f' n.fst.fst n.snd - f' n.fst.snd n.snd) < ε
ε : ℝ
hε : ε > 0
q : ℝ
hq : 0 < q
hq' : q < ε
n : (ι × ι) × 𝕜
hn : ‖f' n.fst.fst n.snd - f' n.fst.snd n.snd‖ < q
z : 𝕜
⊢ ‖f' n.fst.fst n.snd - f' n.fst.snd n.snd‖ * ‖z‖ ≤ q * ‖z‖