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

full_name: separatingDual_def
code: /-- When `E` is a topological module over a topological ring `R`, the class `SeparatingDual R E`
registers that continuous linear forms on `E` separate points of `E`. -/
@[mk_iff separatingDual_def]
class SeparatingDual (R V : Type*) [Ring R] [AddCommGroup V] [TopologicalSpace V]
    [TopologicalSpace R] [Module R V] : Prop :=
  /-- Any nonzero vector can be mapped by a continuous linear map to a nonzero scalar. -/
  exists_ne_zero' : ∀ (x : V), x ≠ 0 → ∃ f : V →L[R] R, f x ≠ 0
goal: SeparatingDual R V ↔ ∀ (x : V), x ≠ 0 → ∃ f, f x ≠ 0

full_name: SeparatingDual.exists_ne_zero'
code: /-- When `E` is a topological module over a topological ring `R`, the class `SeparatingDual R E`
registers that continuous linear forms on `E` separate points of `E`. -/
@[mk_iff separatingDual_def]
class SeparatingDual (R V : Type*) [Ring R] [AddCommGroup V] [TopologicalSpace V]
    [TopologicalSpace R] [Module R V] : Prop :=
  /-- Any nonzero vector can be mapped by a continuous linear map to a nonzero scalar. -/
  exists_ne_zero' : ∀ (x : V), x ≠ 0 → ∃ f : V →L[R] R, f x ≠ 0
goal: x ≠ 0 → ∃ f, f x ≠ 0

full_name: SeparatingDual
code: /-- When `E` is a topological module over a topological ring `R`, the class `SeparatingDual R E`
registers that continuous linear forms on `E` separate points of `E`. -/
@[mk_iff separatingDual_def]
class SeparatingDual (R V : Type*) [Ring R] [AddCommGroup V] [TopologicalSpace V]
    [TopologicalSpace R] [Module R V] : Prop :=
  /-- Any nonzero vector can be mapped by a continuous linear map to a nonzero scalar. -/
  exists_ne_zero' : ∀ (x : V), x ≠ 0 → ∃ f : V →L[R] R, f x ≠ 0
goal: Prop

full_name: instSeparatingDualRealOfTopologicalAddGroupOfContinuousSMulOfLocallyConvexSpaceOfT1Space
code: instance {E : Type*} [TopologicalSpace E] [AddCommGroup E] [TopologicalAddGroup E]
    [Module ℝ E] [ContinuousSMul ℝ E] [LocallyConvexSpace ℝ E] [T1Space E] : SeparatingDual ℝ E 
goal: SeparatingDual ℝ E

full_name: instSeparatingDual
code: instance {E 𝕜 : Type*} [RCLike 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] : SeparatingDual 𝕜 E 
goal: SeparatingDual 𝕜 E

full_name: SeparatingDual.exists_ne_zero
code: lemma exists_ne_zero {x : V} (hx : x ≠ 0) :
    ∃ f : V →L[R] R, f x ≠ 0 
goal: ∃ f, f x ≠ 0

full_name: SeparatingDual.exists_separating_of_ne
code: theorem exists_separating_of_ne {x y : V} (h : x ≠ y) :
    ∃ f : V →L[R] R, f x ≠ f y 
goal: ∃ f, f x ≠ f y

full_name: SeparatingDual.t1Space
code: protected theorem t1Space [T1Space R] : T1Space V 
goal: T1Space V

full_name: SeparatingDual.t2Space
code: protected theorem t2Space [T2Space R] : T2Space V 
goal: T2Space V

full_name: separatingDual_iff_injective
code: theorem _root_.separatingDual_iff_injective : SeparatingDual R V ↔
    Function.Injective (ContinuousLinearMap.coeLM (R := R) R (M := V) (N₃ := R)).flip 
goal: SeparatingDual R V ↔ Function.Injective ⇑(ContinuousLinearMap.coeLM R).flip

full_name: SeparatingDual.dualMap_surjective_iff
code: /-- Given a finite-dimensional subspace `W` of a space `V` with separating dual, any
  linear functional on `W` extends to a continuous linear functional on `V`.
  This is stated more generally for an injective linear map from `W` to `V`. -/
theorem dualMap_surjective_iff {W} [AddCommGroup W] [Module R W] [FiniteDimensional R W]
    {f : W →ₗ[R] V} : Surjective (f.dualMap ∘ ContinuousLinearMap.toLinearMap) ↔ Injective f 
goal: Function.Surjective (⇑f.dualMap ∘ ContinuousLinearMap.toLinearMap) ↔ Function.Injective ⇑f

full_name: SeparatingDual.exists_eq_one
code: lemma exists_eq_one {x : V} (hx : x ≠ 0) :
    ∃ f : V →L[R] R, f x = 1 
goal: ∃ f, f x = 1

full_name: SeparatingDual.exists_eq_one_ne_zero_of_ne_zero_pair
code: theorem exists_eq_one_ne_zero_of_ne_zero_pair {x y : V} (hx : x ≠ 0) (hy : y ≠ 0) :
    ∃ f : V →L[R] R, f x = 1 ∧ f y ≠ 0 
goal: ∃ f, f x = 1 ∧ f y ≠ 0

full_name: SeparatingDual.exists_continuousLinearEquiv_apply_eq
code: /-- In a topological vector space with separating dual, the group of continuous linear equivalences
acts transitively on the set of nonzero vectors: given two nonzero vectors `x` and `y`, there
exists `A : V ≃L[R] V` mapping `x` to `y`. -/
theorem exists_continuousLinearEquiv_apply_eq [ContinuousSMul R V]
    {x y : V} (hx : x ≠ 0) (hy : y ≠ 0) :
    ∃ A : V ≃L[R] V, A x = y 
goal: ∃ A, A x = y

full_name: SeparatingDual.completeSpace_of_completeSpace_continuousLinearMap
code: /-- If a space of linear maps from `E` to `F` is complete, and `E` is nontrivial, then `F` is
complete. -/
lemma completeSpace_of_completeSpace_continuousLinearMap [CompleteSpace (E →L[𝕜] F)] :
    CompleteSpace F 
goal: CompleteSpace F

full_name: SeparatingDual.completeSpace_continuousLinearMap_iff
code: lemma completeSpace_continuousLinearMap_iff :
    CompleteSpace (E →L[𝕜] F) ↔ CompleteSpace F 
goal: CompleteSpace (E →L[𝕜] F) ↔ CompleteSpace F

full_name: SeparatingDual.completeSpace_of_completeSpace_continuousMultilinearMap
code: /-- If a space of multilinear maps from `Π i, E i` to `F` is complete, and each `E i` has a nonzero
element, then `F` is complete. -/
lemma completeSpace_of_completeSpace_continuousMultilinearMap
    [CompleteSpace (ContinuousMultilinearMap 𝕜 M F)]
    {m : ∀ i, M i} (hm : ∀ i, m i ≠ 0) : CompleteSpace F 
goal: CompleteSpace F

full_name: SeparatingDual.completeSpace_continuousMultilinearMap_iff
code: lemma completeSpace_continuousMultilinearMap_iff {m : ∀ i, M i} (hm : ∀ i, m i ≠ 0) :
    CompleteSpace (ContinuousMultilinearMap 𝕜 M F) ↔ CompleteSpace F 
goal: CompleteSpace (ContinuousMultilinearMap 𝕜 M F) ↔ CompleteSpace F