Theorem: ContinuousMultilinearMap.norm_ofSubsingleton
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.600696
inst✝⁴ : NormedField 𝕜'
inst✝³ : NormedSpace 𝕜' G
inst✝² : SMulCommClass 𝕜 𝕜' G
inst✝¹ : Subsingleton ι
inst✝ : Nontrivial G
i' : ι
⊢ ‖ofSubsingleton 𝕜 G i'‖ = 1

tactic: refine' op_norm_le_bound _ zero_le_one 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.600696
inst✝⁴ : NormedField 𝕜'
inst✝³ : NormedSpace 𝕜' G
inst✝² : SMulCommClass 𝕜 𝕜' G
inst✝¹ : Subsingleton ι
inst✝ : Nontrivial G
i' : ι
⊢ ‖ofSubsingleton 𝕜 G i'‖ ≤ 1

tactic: rw [Fintype.prod_subsingleton _ i', one_mul, ofSubsingleton_apply]
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.600696
inst✝⁴ : NormedField 𝕜'
inst✝³ : NormedSpace 𝕜' G
inst✝² : SMulCommClass 𝕜 𝕜' G
inst✝¹ : Subsingleton ι
inst✝ : Nontrivial G
i' : ι
m : ι → G
⊢ ‖↑(ofSubsingleton 𝕜 G i') m‖ ≤ 1 * ∏ i : ι, ‖m i‖

tactic: obtain ⟨g, hg⟩ := exists_ne (0 : G)
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.600696
inst✝⁴ : NormedField 𝕜'
inst✝³ : NormedSpace 𝕜' G
inst✝² : SMulCommClass 𝕜 𝕜' G
inst✝¹ : Subsingleton ι
inst✝ : Nontrivial G
i' : ι
⊢ 1 ≤ ‖ofSubsingleton 𝕜 G i'‖

tactic: rw [← norm_ne_zero_iff] at hg
state_before: case a.intro
𝕜 : 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.600696
inst✝⁴ : NormedField 𝕜'
inst✝³ : NormedSpace 𝕜' G
inst✝² : SMulCommClass 𝕜 𝕜' G
inst✝¹ : Subsingleton ι
inst✝ : Nontrivial G
i' : ι
g : G
hg : g ≠ 0
⊢ 1 ≤ ‖ofSubsingleton 𝕜 G i'‖

tactic: have := (ofSubsingleton 𝕜 G i').ratio_le_op_norm fun _ => g
state_before: case a.intro
𝕜 : 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.600696
inst✝⁴ : NormedField 𝕜'
inst✝³ : NormedSpace 𝕜' G
inst✝² : SMulCommClass 𝕜 𝕜' G
inst✝¹ : Subsingleton ι
inst✝ : Nontrivial G
i' : ι
g : G
hg : ‖g‖ ≠ 0
⊢ 1 ≤ ‖ofSubsingleton 𝕜 G i'‖

tactic: rwa [Fintype.prod_subsingleton _ i', ofSubsingleton_apply, div_self hg] at this
state_before: case a.intro
𝕜 : 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.600696
inst✝⁴ : NormedField 𝕜'
inst✝³ : NormedSpace 𝕜' G
inst✝² : SMulCommClass 𝕜 𝕜' G
inst✝¹ : Subsingleton ι
inst✝ : Nontrivial G
i' : ι
g : G
hg : ‖g‖ ≠ 0
this : ‖↑(ofSubsingleton 𝕜 G i') fun x => g‖ / ∏ i : ι, ‖g‖ ≤ ‖ofSubsingleton 𝕜 G i'‖
⊢ 1 ≤ ‖ofSubsingleton 𝕜 G i'‖