Theorem: NormedSpace.smul_mem_polar
File: Mathlib/Analysis/NormedSpace/Dual.lean

tactic: by_cases c_zero : c = 0
state_before: 𝕜 : Type u_2
inst✝² : NontriviallyNormedField 𝕜
E : Type u_1
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
x' : Dual 𝕜 E
c : 𝕜
hc : ∀ (z : E), z ∈ s → ‖↑x' z‖ ≤ ‖c‖
⊢ c⁻¹ • x' ∈ polar 𝕜 s

tactic: have eq : ∀ z, ‖c⁻¹ • x' z‖ = ‖c⁻¹‖ * ‖x' z‖ := fun z => norm_smul c⁻¹ _
state_before: case neg
𝕜 : Type u_2
inst✝² : NontriviallyNormedField 𝕜
E : Type u_1
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
x' : Dual 𝕜 E
c : 𝕜
hc : ∀ (z : E), z ∈ s → ‖↑x' z‖ ≤ ‖c‖
c_zero : ¬c = 0
⊢ c⁻¹ • x' ∈ polar 𝕜 s

tactic: have le : ∀ z, z ∈ s → ‖c⁻¹ • x' z‖ ≤ ‖c⁻¹‖ * ‖c‖ := by
  intro z hzs
  rw [eq z]
  apply mul_le_mul (le_of_eq rfl) (hc z hzs) (norm_nonneg _) (norm_nonneg _)
state_before: case neg
𝕜 : Type u_2
inst✝² : NontriviallyNormedField 𝕜
E : Type u_1
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
x' : Dual 𝕜 E
c : 𝕜
hc : ∀ (z : E), z ∈ s → ‖↑x' z‖ ≤ ‖c‖
c_zero : ¬c = 0
eq : ∀ (z : E), ‖c⁻¹ • ↑x' z‖ = ‖c⁻¹‖ * ‖↑x' z‖
⊢ c⁻¹ • x' ∈ polar 𝕜 s

tactic: have cancel : ‖c⁻¹‖ * ‖c‖ = 1 := by
  simp only [c_zero, norm_eq_zero, Ne.def, not_false_iff, inv_mul_cancel, norm_inv]
state_before: case neg
𝕜 : Type u_2
inst✝² : NontriviallyNormedField 𝕜
E : Type u_1
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
x' : Dual 𝕜 E
c : 𝕜
hc : ∀ (z : E), z ∈ s → ‖↑x' z‖ ≤ ‖c‖
c_zero : ¬c = 0
eq : ∀ (z : E), ‖c⁻¹ • ↑x' z‖ = ‖c⁻¹‖ * ‖↑x' z‖
le : ∀ (z : E), z ∈ s → ‖c⁻¹ • ↑x' z‖ ≤ ‖c⁻¹‖ * ‖c‖
⊢ c⁻¹ • x' ∈ polar 𝕜 s

tactic: rwa [cancel] at le
state_before: case neg
𝕜 : Type u_2
inst✝² : NontriviallyNormedField 𝕜
E : Type u_1
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
x' : Dual 𝕜 E
c : 𝕜
hc : ∀ (z : E), z ∈ s → ‖↑x' z‖ ≤ ‖c‖
c_zero : ¬c = 0
eq : ∀ (z : E), ‖c⁻¹ • ↑x' z‖ = ‖c⁻¹‖ * ‖↑x' z‖
le : ∀ (z : E), z ∈ s → ‖c⁻¹ • ↑x' z‖ ≤ ‖c⁻¹‖ * ‖c‖
cancel : ‖c⁻¹‖ * ‖c‖ = 1
⊢ c⁻¹ • x' ∈ polar 𝕜 s

tactic: simp only [c_zero, inv_zero, zero_smul]
state_before: case pos
𝕜 : Type u_2
inst✝² : NontriviallyNormedField 𝕜
E : Type u_1
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
x' : Dual 𝕜 E
c : 𝕜
hc : ∀ (z : E), z ∈ s → ‖↑x' z‖ ≤ ‖c‖
c_zero : c = 0
⊢ c⁻¹ • x' ∈ polar 𝕜 s

tactic: exact (dualPairing 𝕜 E).flip.zero_mem_polar _
state_before: case pos
𝕜 : Type u_2
inst✝² : NontriviallyNormedField 𝕜
E : Type u_1
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
x' : Dual 𝕜 E
c : 𝕜
hc : ∀ (z : E), z ∈ s → ‖↑x' z‖ ≤ ‖c‖
c_zero : c = 0
⊢ 0 ∈ polar 𝕜 s

tactic: intro z hzs
state_before: 𝕜 : Type u_2
inst✝² : NontriviallyNormedField 𝕜
E : Type u_1
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
x' : Dual 𝕜 E
c : 𝕜
hc : ∀ (z : E), z ∈ s → ‖↑x' z‖ ≤ ‖c‖
c_zero : ¬c = 0
eq : ∀ (z : E), ‖c⁻¹ • ↑x' z‖ = ‖c⁻¹‖ * ‖↑x' z‖
⊢ ∀ (z : E), z ∈ s → ‖c⁻¹ • ↑x' z‖ ≤ ‖c⁻¹‖ * ‖c‖

tactic: rw [eq z]
state_before: 𝕜 : Type u_2
inst✝² : NontriviallyNormedField 𝕜
E : Type u_1
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
x' : Dual 𝕜 E
c : 𝕜
hc : ∀ (z : E), z ∈ s → ‖↑x' z‖ ≤ ‖c‖
c_zero : ¬c = 0
eq : ∀ (z : E), ‖c⁻¹ • ↑x' z‖ = ‖c⁻¹‖ * ‖↑x' z‖
z : E
hzs : z ∈ s
⊢ ‖c⁻¹ • ↑x' z‖ ≤ ‖c⁻¹‖ * ‖c‖

tactic: apply mul_le_mul (le_of_eq rfl) (hc z hzs) (norm_nonneg _) (norm_nonneg _)
state_before: 𝕜 : Type u_2
inst✝² : NontriviallyNormedField 𝕜
E : Type u_1
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
x' : Dual 𝕜 E
c : 𝕜
hc : ∀ (z : E), z ∈ s → ‖↑x' z‖ ≤ ‖c‖
c_zero : ¬c = 0
eq : ∀ (z : E), ‖c⁻¹ • ↑x' z‖ = ‖c⁻¹‖ * ‖↑x' z‖
z : E
hzs : z ∈ s
⊢ ‖c⁻¹‖ * ‖↑x' z‖ ≤ ‖c⁻¹‖ * ‖c‖

tactic: simp only [c_zero, norm_eq_zero, Ne.def, not_false_iff, inv_mul_cancel, norm_inv]
state_before: 𝕜 : Type u_2
inst✝² : NontriviallyNormedField 𝕜
E : Type u_1
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
x' : Dual 𝕜 E
c : 𝕜
hc : ∀ (z : E), z ∈ s → ‖↑x' z‖ ≤ ‖c‖
c_zero : ¬c = 0
eq : ∀ (z : E), ‖c⁻¹ • ↑x' z‖ = ‖c⁻¹‖ * ‖↑x' z‖
le : ∀ (z : E), z ∈ s → ‖c⁻¹ • ↑x' z‖ ≤ ‖c⁻¹‖ * ‖c‖
⊢ ‖c⁻¹‖ * ‖c‖ = 1