Theorem: ContinuousMultilinearMap.norm_pi
File: Mathlib/Analysis/NormedSpace/Multilinear.lean

tactic: apply le_antisymm
state_before: 𝕜 : Type u
ι : Type v
ι'✝ : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E'✝ : ι'✝ → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝²⁰ : Fintype ι
inst✝¹⁹ : Fintype ι'✝
inst✝¹⁸ : NontriviallyNormedField 𝕜
inst✝¹⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁶ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹³ : (i : ι'✝) → NormedAddCommGroup (E'✝ i)
inst✝¹² : (i : ι'✝) → NormedSpace 𝕜 (E'✝ i)
inst✝¹¹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
inst✝⁷ : NormedAddCommGroup G'
inst✝⁶ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type ?u.566327
inst✝⁵ : NormedField 𝕜'
inst✝⁴ : NormedSpace 𝕜' G
inst✝³ : SMulCommClass 𝕜 𝕜' G
ι' : Type v'
inst✝² : Fintype ι'
E' : ι' → Type wE'
inst✝¹ : (i' : ι') → NormedAddCommGroup (E' i')
inst✝ : (i' : ι') → NormedSpace 𝕜 (E' i')
f : (i' : ι') → ContinuousMultilinearMap 𝕜 E (E' i')
⊢ ‖pi f‖ = ‖f‖

tactic: refine' op_norm_le_bound _ (norm_nonneg f) fun m => _
state_before: case a
𝕜 : Type u
ι : Type v
ι'✝ : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E'✝ : ι'✝ → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝²⁰ : Fintype ι
inst✝¹⁹ : Fintype ι'✝
inst✝¹⁸ : NontriviallyNormedField 𝕜
inst✝¹⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁶ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹³ : (i : ι'✝) → NormedAddCommGroup (E'✝ i)
inst✝¹² : (i : ι'✝) → NormedSpace 𝕜 (E'✝ i)
inst✝¹¹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
inst✝⁷ : NormedAddCommGroup G'
inst✝⁶ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type ?u.566327
inst✝⁵ : NormedField 𝕜'
inst✝⁴ : NormedSpace 𝕜' G
inst✝³ : SMulCommClass 𝕜 𝕜' G
ι' : Type v'
inst✝² : Fintype ι'
E' : ι' → Type wE'
inst✝¹ : (i' : ι') → NormedAddCommGroup (E' i')
inst✝ : (i' : ι') → NormedSpace 𝕜 (E' i')
f : (i' : ι') → ContinuousMultilinearMap 𝕜 E (E' i')
⊢ ‖pi f‖ ≤ ‖f‖

tactic: dsimp
state_before: case a
𝕜 : Type u
ι : Type v
ι'✝ : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E'✝ : ι'✝ → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝²⁰ : Fintype ι
inst✝¹⁹ : Fintype ι'✝
inst✝¹⁸ : NontriviallyNormedField 𝕜
inst✝¹⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁶ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹³ : (i : ι'✝) → NormedAddCommGroup (E'✝ i)
inst✝¹² : (i : ι'✝) → NormedSpace 𝕜 (E'✝ i)
inst✝¹¹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
inst✝⁷ : NormedAddCommGroup G'
inst✝⁶ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
𝕜' : Type ?u.566327
inst✝⁵ : NormedField 𝕜'
inst✝⁴ : NormedSpace 𝕜' G
inst✝³ : SMulCommClass 𝕜 𝕜' G
ι' : Type v'
inst✝² : Fintype ι'
E' : ι' → Type wE'
inst✝¹ : (i' : ι') → NormedAddCommGroup (E' i')
inst✝ : (i' : ι') → NormedSpace 𝕜 (E' i')
f : (i' : ι') → ContinuousMultilinearMap 𝕜 E (E' i')
m : (i : ι) → E i
⊢ ‖↑(pi f) m‖ ≤ ‖f‖ * ∏ i : ι, ‖m i‖

tactic: rw [pi_norm_le_iff_of_nonneg]
state_before: case a
𝕜 : Type u
ι : Type v
ι'✝ : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E'✝ : ι'✝ → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝²⁰ : Fintype ι
inst✝¹⁹ : Fintype ι'✝
inst✝¹⁸ : NontriviallyNormedField 𝕜
inst✝¹⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁶ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹³ : (i : ι'✝) → NormedAddCommGroup (E'✝ i)
inst✝¹² : (i : ι'✝) → NormedSpace 𝕜 (E'✝ i)
inst✝¹¹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
inst✝⁷ : NormedAddCommGroup G'
inst✝⁶ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
𝕜' : Type ?u.566327
inst✝⁵ : NormedField 𝕜'
inst✝⁴ : NormedSpace 𝕜' G
inst✝³ : SMulCommClass 𝕜 𝕜' G
ι' : Type v'
inst✝² : Fintype ι'
E' : ι' → Type wE'
inst✝¹ : (i' : ι') → NormedAddCommGroup (E' i')
inst✝ : (i' : ι') → NormedSpace 𝕜 (E' i')
f : (i' : ι') → ContinuousMultilinearMap 𝕜 E (E' i')
m : (i : ι) → E i
⊢ ‖fun j => ↑(f j) m‖ ≤ ‖f‖ * ∏ i : ι, ‖m i‖

tactic: exacts [fun i => (f i).le_of_op_norm_le m (norm_le_pi_norm f i),
  mul_nonneg (norm_nonneg f) (prod_nonneg fun _ _ => norm_nonneg _)]
state_before: case a
𝕜 : Type u
ι : Type v
ι'✝ : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E'✝ : ι'✝ → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝²⁰ : Fintype ι
inst✝¹⁹ : Fintype ι'✝
inst✝¹⁸ : NontriviallyNormedField 𝕜
inst✝¹⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁶ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹³ : (i : ι'✝) → NormedAddCommGroup (E'✝ i)
inst✝¹² : (i : ι'✝) → NormedSpace 𝕜 (E'✝ i)
inst✝¹¹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
inst✝⁷ : NormedAddCommGroup G'
inst✝⁶ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
𝕜' : Type ?u.566327
inst✝⁵ : NormedField 𝕜'
inst✝⁴ : NormedSpace 𝕜' G
inst✝³ : SMulCommClass 𝕜 𝕜' G
ι' : Type v'
inst✝² : Fintype ι'
E' : ι' → Type wE'
inst✝¹ : (i' : ι') → NormedAddCommGroup (E' i')
inst✝ : (i' : ι') → NormedSpace 𝕜 (E' i')
f : (i' : ι') → ContinuousMultilinearMap 𝕜 E (E' i')
m : (i : ι) → E i
⊢ ∀ (i : ι'), ‖↑(f i) m‖ ≤ ‖f‖ * ∏ i : ι, ‖m i‖

case a
𝕜 : Type u
ι : Type v
ι'✝ : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E'✝ : ι'✝ → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝²⁰ : Fintype ι
inst✝¹⁹ : Fintype ι'✝
inst✝¹⁸ : NontriviallyNormedField 𝕜
inst✝¹⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁶ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹³ : (i : ι'✝) → NormedAddCommGroup (E'✝ i)
inst✝¹² : (i : ι'✝) → NormedSpace 𝕜 (E'✝ i)
inst✝¹¹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
inst✝⁷ : NormedAddCommGroup G'
inst✝⁶ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
𝕜' : Type ?u.566327
inst✝⁵ : NormedField 𝕜'
inst✝⁴ : NormedSpace 𝕜' G
inst✝³ : SMulCommClass 𝕜 𝕜' G
ι' : Type v'
inst✝² : Fintype ι'
E' : ι' → Type wE'
inst✝¹ : (i' : ι') → NormedAddCommGroup (E' i')
inst✝ : (i' : ι') → NormedSpace 𝕜 (E' i')
f : (i' : ι') → ContinuousMultilinearMap 𝕜 E (E' i')
m : (i : ι) → E i
⊢ 0 ≤ ‖f‖ * ∏ i : ι, ‖m i‖

tactic: refine' (pi_norm_le_iff_of_nonneg (norm_nonneg _)).2 fun i => _
state_before: case a
𝕜 : Type u
ι : Type v
ι'✝ : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E'✝ : ι'✝ → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝²⁰ : Fintype ι
inst✝¹⁹ : Fintype ι'✝
inst✝¹⁸ : NontriviallyNormedField 𝕜
inst✝¹⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁶ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹³ : (i : ι'✝) → NormedAddCommGroup (E'✝ i)
inst✝¹² : (i : ι'✝) → NormedSpace 𝕜 (E'✝ i)
inst✝¹¹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
inst✝⁷ : NormedAddCommGroup G'
inst✝⁶ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type ?u.566327
inst✝⁵ : NormedField 𝕜'
inst✝⁴ : NormedSpace 𝕜' G
inst✝³ : SMulCommClass 𝕜 𝕜' G
ι' : Type v'
inst✝² : Fintype ι'
E' : ι' → Type wE'
inst✝¹ : (i' : ι') → NormedAddCommGroup (E' i')
inst✝ : (i' : ι') → NormedSpace 𝕜 (E' i')
f : (i' : ι') → ContinuousMultilinearMap 𝕜 E (E' i')
⊢ ‖f‖ ≤ ‖pi f‖

tactic: refine' op_norm_le_bound _ (norm_nonneg _) fun m => _
state_before: case a
𝕜 : Type u
ι : Type v
ι'✝ : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E'✝ : ι'✝ → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝²⁰ : Fintype ι
inst✝¹⁹ : Fintype ι'✝
inst✝¹⁸ : NontriviallyNormedField 𝕜
inst✝¹⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁶ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹³ : (i : ι'✝) → NormedAddCommGroup (E'✝ i)
inst✝¹² : (i : ι'✝) → NormedSpace 𝕜 (E'✝ i)
inst✝¹¹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
inst✝⁷ : NormedAddCommGroup G'
inst✝⁶ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type ?u.566327
inst✝⁵ : NormedField 𝕜'
inst✝⁴ : NormedSpace 𝕜' G
inst✝³ : SMulCommClass 𝕜 𝕜' G
ι' : Type v'
inst✝² : Fintype ι'
E' : ι' → Type wE'
inst✝¹ : (i' : ι') → NormedAddCommGroup (E' i')
inst✝ : (i' : ι') → NormedSpace 𝕜 (E' i')
f : (i' : ι') → ContinuousMultilinearMap 𝕜 E (E' i')
i : ι'
⊢ ‖f i‖ ≤ ‖pi f‖

tactic: refine' le_trans _ ((pi f).le_op_norm m)
state_before: case a
𝕜 : Type u
ι : Type v
ι'✝ : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E'✝ : ι'✝ → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝²⁰ : Fintype ι
inst✝¹⁹ : Fintype ι'✝
inst✝¹⁸ : NontriviallyNormedField 𝕜
inst✝¹⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁶ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹³ : (i : ι'✝) → NormedAddCommGroup (E'✝ i)
inst✝¹² : (i : ι'✝) → NormedSpace 𝕜 (E'✝ i)
inst✝¹¹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
inst✝⁷ : NormedAddCommGroup G'
inst✝⁶ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
𝕜' : Type ?u.566327
inst✝⁵ : NormedField 𝕜'
inst✝⁴ : NormedSpace 𝕜' G
inst✝³ : SMulCommClass 𝕜 𝕜' G
ι' : Type v'
inst✝² : Fintype ι'
E' : ι' → Type wE'
inst✝¹ : (i' : ι') → NormedAddCommGroup (E' i')
inst✝ : (i' : ι') → NormedSpace 𝕜 (E' i')
f : (i' : ι') → ContinuousMultilinearMap 𝕜 E (E' i')
i : ι'
m : (i : ι) → E i
⊢ ‖↑(f i) m‖ ≤ ‖pi f‖ * ∏ i : ι, ‖m i‖

tactic: convert norm_le_pi_norm (fun j => f j m) i
state_before: case a
𝕜 : Type u
ι : Type v
ι'✝ : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E'✝ : ι'✝ → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝²⁰ : Fintype ι
inst✝¹⁹ : Fintype ι'✝
inst✝¹⁸ : NontriviallyNormedField 𝕜
inst✝¹⁷ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁶ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹⁵ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝¹⁴ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝¹³ : (i : ι'✝) → NormedAddCommGroup (E'✝ i)
inst✝¹² : (i : ι'✝) → NormedSpace 𝕜 (E'✝ i)
inst✝¹¹ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝¹⁰ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
inst✝⁷ : NormedAddCommGroup G'
inst✝⁶ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
𝕜' : Type ?u.566327
inst✝⁵ : NormedField 𝕜'
inst✝⁴ : NormedSpace 𝕜' G
inst✝³ : SMulCommClass 𝕜 𝕜' G
ι' : Type v'
inst✝² : Fintype ι'
E' : ι' → Type wE'
inst✝¹ : (i' : ι') → NormedAddCommGroup (E' i')
inst✝ : (i' : ι') → NormedSpace 𝕜 (E' i')
f : (i' : ι') → ContinuousMultilinearMap 𝕜 E (E' i')
i : ι'
m : (i : ι) → E i
⊢ ‖↑(f i) m‖ ≤ ‖↑(pi f) m‖