Theorem: Function.HasTemperateGrowth.norm_iteratedFDeriv_le_uniform_aux
File: Mathlib/Analysis/Distribution/SchwartzSpace.lean

Proof steps:
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f : E → F
hf_temperate : Function.HasTemperateGrowth f
n : ℕ
⊢ ∃ k C, 0 ≤ C ∧ ∀ N ≤ n, ∀ (x : E), ‖iteratedFDeriv ℝ N f x‖ ≤ C * (1 + ‖x‖) ^ k
state_after: 𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f✝ : E → F
hf_temperate : Function.HasTemperateGrowth f✝
n : ℕ
k : ℕ → ℕ
C : ℕ → ℝ
f : ∀ (n : ℕ) (x : E), ‖iteratedFDeriv ℝ n f✝ x‖ ≤ C n * (1 + ‖x‖) ^ k n
⊢ ∃ k C, 0 ≤ C ∧ ∀ N ≤ n, ∀ (x : E), ‖iteratedFDeriv ℝ N f✝ x‖ ≤ C * (1 + ‖x‖) ^ k
tactic: choose k C f using hf_temperate.2
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f✝ : E → F
hf_temperate : Function.HasTemperateGrowth f✝
n : ℕ
k : ℕ → ℕ
C : ℕ → ℝ
f : ∀ (n : ℕ) (x : E), ‖iteratedFDeriv ℝ n f✝ x‖ ≤ C n * (1 + ‖x‖) ^ k n
⊢ ∃ k C, 0 ≤ C ∧ ∀ N ≤ n, ∀ (x : E), ‖iteratedFDeriv ℝ N f✝ x‖ ≤ C * (1 + ‖x‖) ^ k
state_after: case h
𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f✝ : E → F
hf_temperate : Function.HasTemperateGrowth f✝
n : ℕ
k : ℕ → ℕ
C : ℕ → ℝ
f : ∀ (n : ℕ) (x : E), ‖iteratedFDeriv ℝ n f✝ x‖ ≤ C n * (1 + ‖x‖) ^ k n
⊢ ∃ C, 0 ≤ C ∧ ∀ N ≤ n, ∀ (x : E), ‖iteratedFDeriv ℝ N f✝ x‖ ≤ C * (1 + ‖x‖) ^ (Finset.range (n + 1)).sup k
tactic: use (Finset.range (n + 1)).sup k
state_before: case h
𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f✝ : E → F
hf_temperate : Function.HasTemperateGrowth f✝
n : ℕ
k : ℕ → ℕ
C : ℕ → ℝ
f : ∀ (n : ℕ) (x : E), ‖iteratedFDeriv ℝ n f✝ x‖ ≤ C n * (1 + ‖x‖) ^ k n
⊢ ∃ C, 0 ≤ C ∧ ∀ N ≤ n, ∀ (x : E), ‖iteratedFDeriv ℝ N f✝ x‖ ≤ C * (1 + ‖x‖) ^ (Finset.range (n + 1)).sup k
state_after: case h
𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f✝ : E → F
hf_temperate : Function.HasTemperateGrowth f✝
n : ℕ
k : ℕ → ℕ
C : ℕ → ℝ
f : ∀ (n : ℕ) (x : E), ‖iteratedFDeriv ℝ n f✝ x‖ ≤ C n * (1 + ‖x‖) ^ k n
C' : ℝ := max 0 ((Finset.range (n + 1)).sup' ⋯ C)
⊢ ∃ C, 0 ≤ C ∧ ∀ N ≤ n, ∀ (x : E), ‖iteratedFDeriv ℝ N f✝ x‖ ≤ C * (1 + ‖x‖) ^ (Finset.range (n + 1)).sup k
tactic: let C' := max (0 : ℝ) ((Finset.range (n + 1)).sup' (by simp) C)
state_before: case h
𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f✝ : E → F
hf_temperate : Function.HasTemperateGrowth f✝
n : ℕ
k : ℕ → ℕ
C : ℕ → ℝ
f : ∀ (n : ℕ) (x : E), ‖iteratedFDeriv ℝ n f✝ x‖ ≤ C n * (1 + ‖x‖) ^ k n
C' : ℝ := max 0 ((Finset.range (n + 1)).sup' ⋯ C)
⊢ ∃ C, 0 ≤ C ∧ ∀ N ≤ n, ∀ (x : E), ‖iteratedFDeriv ℝ N f✝ x‖ ≤ C * (1 + ‖x‖) ^ (Finset.range (n + 1)).sup k
state_after: case h
𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f✝ : E → F
hf_temperate : Function.HasTemperateGrowth f✝
n : ℕ
k : ℕ → ℕ
C : ℕ → ℝ
f : ∀ (n : ℕ) (x : E), ‖iteratedFDeriv ℝ n f✝ x‖ ≤ C n * (1 + ‖x‖) ^ k n
C' : ℝ := max 0 ((Finset.range (n + 1)).sup' ⋯ C)
hC' : 0 ≤ C'
⊢ ∃ C, 0 ≤ C ∧ ∀ N ≤ n, ∀ (x : E), ‖iteratedFDeriv ℝ N f✝ x‖ ≤ C * (1 + ‖x‖) ^ (Finset.range (n + 1)).sup k
tactic: have hC' : 0 ≤ C' := by simp only [C', le_refl, Finset.le_sup'_iff, true_or_iff, le_max_iff]
state_before: case h
𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f✝ : E → F
hf_temperate : Function.HasTemperateGrowth f✝
n : ℕ
k : ℕ → ℕ
C : ℕ → ℝ
f : ∀ (n : ℕ) (x : E), ‖iteratedFDeriv ℝ n f✝ x‖ ≤ C n * (1 + ‖x‖) ^ k n
C' : ℝ := max 0 ((Finset.range (n + 1)).sup' ⋯ C)
hC' : 0 ≤ C'
⊢ ∃ C, 0 ≤ C ∧ ∀ N ≤ n, ∀ (x : E), ‖iteratedFDeriv ℝ N f✝ x‖ ≤ C * (1 + ‖x‖) ^ (Finset.range (n + 1)).sup k
state_after: case right
𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f✝ : E → F
hf_temperate : Function.HasTemperateGrowth f✝
n : ℕ
k : ℕ → ℕ
C : ℕ → ℝ
f : ∀ (n : ℕ) (x : E), ‖iteratedFDeriv ℝ n f✝ x‖ ≤ C n * (1 + ‖x‖) ^ k n
C' : ℝ := max 0 ((Finset.range (n + 1)).sup' ⋯ C)
hC' : 0 ≤ C'
⊢ ∀ N ≤ n, ∀ (x : E), ‖iteratedFDeriv ℝ N f✝ x‖ ≤ C' * (1 + ‖x‖) ^ (Finset.range (n + 1)).sup k
tactic: use C', hC'
state_before: case right
𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f✝ : E → F
hf_temperate : Function.HasTemperateGrowth f✝
n : ℕ
k : ℕ → ℕ
C : ℕ → ℝ
f : ∀ (n : ℕ) (x : E), ‖iteratedFDeriv ℝ n f✝ x‖ ≤ C n * (1 + ‖x‖) ^ k n
C' : ℝ := max 0 ((Finset.range (n + 1)).sup' ⋯ C)
hC' : 0 ≤ C'
⊢ ∀ N ≤ n, ∀ (x : E), ‖iteratedFDeriv ℝ N f✝ x‖ ≤ C' * (1 + ‖x‖) ^ (Finset.range (n + 1)).sup k
state_after: case right
𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f✝ : E → F
hf_temperate : Function.HasTemperateGrowth f✝
n : ℕ
k : ℕ → ℕ
C : ℕ → ℝ
f : ∀ (n : ℕ) (x : E), ‖iteratedFDeriv ℝ n f✝ x‖ ≤ C n * (1 + ‖x‖) ^ k n
C' : ℝ := max 0 ((Finset.range (n + 1)).sup' ⋯ C)
hC' : 0 ≤ C'
N : ℕ
hN : N ≤ n
x : E
⊢ ‖iteratedFDeriv ℝ N f✝ x‖ ≤ C' * (1 + ‖x‖) ^ (Finset.range (n + 1)).sup k
tactic: intro N hN x
state_before: case right
𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f✝ : E → F
hf_temperate : Function.HasTemperateGrowth f✝
n : ℕ
k : ℕ → ℕ
C : ℕ → ℝ
f : ∀ (n : ℕ) (x : E), ‖iteratedFDeriv ℝ n f✝ x‖ ≤ C n * (1 + ‖x‖) ^ k n
C' : ℝ := max 0 ((Finset.range (n + 1)).sup' ⋯ C)
hC' : 0 ≤ C'
N : ℕ
hN : N ≤ n
x : E
⊢ ‖iteratedFDeriv ℝ N f✝ x‖ ≤ C' * (1 + ‖x‖) ^ (Finset.range (n + 1)).sup k
state_after: case right
𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f✝ : E → F
hf_temperate : Function.HasTemperateGrowth f✝
n : ℕ
k : ℕ → ℕ
C : ℕ → ℝ
f : ∀ (n : ℕ) (x : E), ‖iteratedFDeriv ℝ n f✝ x‖ ≤ C n * (1 + ‖x‖) ^ k n
C' : ℝ := max 0 ((Finset.range (n + 1)).sup' ⋯ C)
hC' : 0 ≤ C'
N : ℕ
hN : N ∈ Finset.range n.succ
x : E
⊢ ‖iteratedFDeriv ℝ N f✝ x‖ ≤ C' * (1 + ‖x‖) ^ (Finset.range (n + 1)).sup k
tactic: rw [← Finset.mem_range_succ_iff] at hN
state_before: case right
𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f✝ : E → F
hf_temperate : Function.HasTemperateGrowth f✝
n : ℕ
k : ℕ → ℕ
C : ℕ → ℝ
f : ∀ (n : ℕ) (x : E), ‖iteratedFDeriv ℝ n f✝ x‖ ≤ C n * (1 + ‖x‖) ^ k n
C' : ℝ := max 0 ((Finset.range (n + 1)).sup' ⋯ C)
hC' : 0 ≤ C'
N : ℕ
hN : N ∈ Finset.range n.succ
x : E
⊢ ‖iteratedFDeriv ℝ N f✝ x‖ ≤ C' * (1 + ‖x‖) ^ (Finset.range (n + 1)).sup k
state_after: case right.refine_1
𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f✝ : E → F
hf_temperate : Function.HasTemperateGrowth f✝
n : ℕ
k : ℕ → ℕ
C : ℕ → ℝ
f : ∀ (n : ℕ) (x : E), ‖iteratedFDeriv ℝ n f✝ x‖ ≤ C n * (1 + ‖x‖) ^ k n
C' : ℝ := max 0 ((Finset.range (n + 1)).sup' ⋯ C)
hC' : 0 ≤ C'
N : ℕ
hN : N ∈ Finset.range n.succ
x : E
⊢ C N ≤ C'

case right.refine_2
𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f✝ : E → F
hf_temperate : Function.HasTemperateGrowth f✝
n : ℕ
k : ℕ → ℕ
C : ℕ → ℝ
f : ∀ (n : ℕ) (x : E), ‖iteratedFDeriv ℝ n f✝ x‖ ≤ C n * (1 + ‖x‖) ^ k n
C' : ℝ := max 0 ((Finset.range (n + 1)).sup' ⋯ C)
hC' : 0 ≤ C'
N : ℕ
hN : N ∈ Finset.range n.succ
x : E
⊢ (1 + ‖x‖) ^ k N ≤ (1 + ‖x‖) ^ (Finset.range (n + 1)).sup k
tactic: refine le_trans (f N x) (mul_le_mul ?_ ?_ (by positivity) hC')
state_before: case right.refine_2
𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f✝ : E → F
hf_temperate : Function.HasTemperateGrowth f✝
n : ℕ
k : ℕ → ℕ
C : ℕ → ℝ
f : ∀ (n : ℕ) (x : E), ‖iteratedFDeriv ℝ n f✝ x‖ ≤ C n * (1 + ‖x‖) ^ k n
C' : ℝ := max 0 ((Finset.range (n + 1)).sup' ⋯ C)
hC' : 0 ≤ C'
N : ℕ
hN : N ∈ Finset.range n.succ
x : E
⊢ (1 + ‖x‖) ^ k N ≤ (1 + ‖x‖) ^ (Finset.range (n + 1)).sup k
state_after: case right.refine_2.ha
𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f✝ : E → F
hf_temperate : Function.HasTemperateGrowth f✝
n : ℕ
k : ℕ → ℕ
C : ℕ → ℝ
f : ∀ (n : ℕ) (x : E), ‖iteratedFDeriv ℝ n f✝ x‖ ≤ C n * (1 + ‖x‖) ^ k n
C' : ℝ := max 0 ((Finset.range (n + 1)).sup' ⋯ C)
hC' : 0 ≤ C'
N : ℕ
hN : N ∈ Finset.range n.succ
x : E
⊢ 1 ≤ 1 + ‖x‖

case right.refine_2.h
𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f✝ : E → F
hf_temperate : Function.HasTemperateGrowth f✝
n : ℕ
k : ℕ → ℕ
C : ℕ → ℝ
f : ∀ (n : ℕ) (x : E), ‖iteratedFDeriv ℝ n f✝ x‖ ≤ C n * (1 + ‖x‖) ^ k n
C' : ℝ := max 0 ((Finset.range (n + 1)).sup' ⋯ C)
hC' : 0 ≤ C'
N : ℕ
hN : N ∈ Finset.range n.succ
x : E
⊢ k N ≤ (Finset.range (n + 1)).sup k
tactic: gcongr
state_before: case right.refine_2.h
𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
f✝ : E → F
hf_temperate : Function.HasTemperateGrowth f✝
n : ℕ
k : ℕ → ℕ
C : ℕ → ℝ
f : ∀ (n : ℕ) (x : E), ‖iteratedFDeriv ℝ n f✝ x‖ ≤ C n * (1 + ‖x‖) ^ k n
C' : ℝ := max 0 ((Finset.range (n + 1)).sup' ⋯ C)
hC' : 0 ≤ C'
N : ℕ
hN : N ∈ Finset.range n.succ
x : E
⊢ k N ≤ (Finset.range (n + 1)).sup k
state_after: no goals
tactic: exact Finset.le_sup hN