Theorem: separatingDual_iff_injective
File: Mathlib/Analysis/NormedSpace/HahnBanach/SeparatingDual.lean

Proof steps:
state_before: R : Type u_1
V : Type u_2
inst✝⁷ : Field R
inst✝⁶ : AddCommGroup V
inst✝⁵ : TopologicalSpace R
inst✝⁴ : TopologicalSpace V
inst✝³ : TopologicalRing R
inst✝² : TopologicalAddGroup V
inst✝¹ : Module R V
inst✝ : SeparatingDual R V
⊢ SeparatingDual R V ↔ Function.Injective ⇑(ContinuousLinearMap.coeLM R).flip
state_after: R : Type u_1
V : Type u_2
inst✝⁷ : Field R
inst✝⁶ : AddCommGroup V
inst✝⁵ : TopologicalSpace R
inst✝⁴ : TopologicalSpace V
inst✝³ : TopologicalRing R
inst✝² : TopologicalAddGroup V
inst✝¹ : Module R V
inst✝ : SeparatingDual R V
⊢ (∀ (x : V), ¬x = 0 → ∃ f, ¬f x = 0) ↔ ∀ (a : V), (ContinuousLinearMap.coeLM R).flip a = 0 → a = 0
tactic: simp_rw [separatingDual_def, Ne, injective_iff_map_eq_zero]
state_before: R : Type u_1
V : Type u_2
inst✝⁷ : Field R
inst✝⁶ : AddCommGroup V
inst✝⁵ : TopologicalSpace R
inst✝⁴ : TopologicalSpace V
inst✝³ : TopologicalRing R
inst✝² : TopologicalAddGroup V
inst✝¹ : Module R V
inst✝ : SeparatingDual R V
⊢ (∀ (x : V), ¬x = 0 → ∃ f, ¬f x = 0) ↔ ∀ (a : V), (ContinuousLinearMap.coeLM R).flip a = 0 → a = 0
state_after: case a
R : Type u_1
V : Type u_2
inst✝⁷ : Field R
inst✝⁶ : AddCommGroup V
inst✝⁵ : TopologicalSpace R
inst✝⁴ : TopologicalSpace V
inst✝³ : TopologicalRing R
inst✝² : TopologicalAddGroup V
inst✝¹ : Module R V
inst✝ : SeparatingDual R V
v : V
⊢ (¬v = 0 → ∃ f, ¬f v = 0) ↔ (ContinuousLinearMap.coeLM R).flip v = 0 → v = 0
tactic: congrm ∀ v, ?_
state_before: case a
R : Type u_1
V : Type u_2
inst✝⁷ : Field R
inst✝⁶ : AddCommGroup V
inst✝⁵ : TopologicalSpace R
inst✝⁴ : TopologicalSpace V
inst✝³ : TopologicalRing R
inst✝² : TopologicalAddGroup V
inst✝¹ : Module R V
inst✝ : SeparatingDual R V
v : V
⊢ (¬v = 0 → ∃ f, ¬f v = 0) ↔ (ContinuousLinearMap.coeLM R).flip v = 0 → v = 0
state_after: case a
R : Type u_1
V : Type u_2
inst✝⁷ : Field R
inst✝⁶ : AddCommGroup V
inst✝⁵ : TopologicalSpace R
inst✝⁴ : TopologicalSpace V
inst✝³ : TopologicalRing R
inst✝² : TopologicalAddGroup V
inst✝¹ : Module R V
inst✝ : SeparatingDual R V
v : V
⊢ (¬∃ f, ¬f v = 0) → v = 0 ↔ (∀ (x : V →L[R] R), ((ContinuousLinearMap.coeLM R).flip v) x = 0 x) → v = 0
tactic: rw [not_imp_comm, LinearMap.ext_iff]
state_before: case a
R : Type u_1
V : Type u_2
inst✝⁷ : Field R
inst✝⁶ : AddCommGroup V
inst✝⁵ : TopologicalSpace R
inst✝⁴ : TopologicalSpace V
inst✝³ : TopologicalRing R
inst✝² : TopologicalAddGroup V
inst✝¹ : Module R V
inst✝ : SeparatingDual R V
v : V
⊢ (¬∃ f, ¬f v = 0) → v = 0 ↔ (∀ (x : V →L[R] R), ((ContinuousLinearMap.coeLM R).flip v) x = 0 x) → v = 0
state_after: case a
R : Type u_1
V : Type u_2
inst✝⁷ : Field R
inst✝⁶ : AddCommGroup V
inst✝⁵ : TopologicalSpace R
inst✝⁴ : TopologicalSpace V
inst✝³ : TopologicalRing R
inst✝² : TopologicalAddGroup V
inst✝¹ : Module R V
inst✝ : SeparatingDual R V
v : V
⊢ (∀ (f : V →L[R] R), f v = 0) → v = 0 ↔ (∀ (x : V →L[R] R), ((ContinuousLinearMap.coeLM R).flip v) x = 0 x) → v = 0
tactic: push_neg
state_before: case a
R : Type u_1
V : Type u_2
inst✝⁷ : Field R
inst✝⁶ : AddCommGroup V
inst✝⁵ : TopologicalSpace R
inst✝⁴ : TopologicalSpace V
inst✝³ : TopologicalRing R
inst✝² : TopologicalAddGroup V
inst✝¹ : Module R V
inst✝ : SeparatingDual R V
v : V
⊢ (∀ (f : V →L[R] R), f v = 0) → v = 0 ↔ (∀ (x : V →L[R] R), ((ContinuousLinearMap.coeLM R).flip v) x = 0 x) → v = 0
state_after: no goals
tactic: rfl