[GOAL]
E : Type u_1
inst✝⁶ : TopologicalSpace E
inst✝⁵ : AddCommGroup E
inst✝⁴ : TopologicalAddGroup E
inst✝³ : Module ℝ E
inst✝² : ContinuousSMul ℝ E
inst✝¹ : LocallyConvexSpace ℝ E
inst✝ : T1Space E
x : E
hx : x ≠ 0
⊢ ∃ f, ↑f x ≠ 0
[PROOFSTEP]
rcases geometric_hahn_banach_point_point hx.symm with ⟨f, hf⟩
[GOAL]
case intro
E : Type u_1
inst✝⁶ : TopologicalSpace E
inst✝⁵ : AddCommGroup E
inst✝⁴ : TopologicalAddGroup E
inst✝³ : Module ℝ E
inst✝² : ContinuousSMul ℝ E
inst✝¹ : LocallyConvexSpace ℝ E
inst✝ : T1Space E
x : E
hx : x ≠ 0
f : E →L[ℝ] ℝ
hf : ↑f 0 < ↑f x
⊢ ∃ f, ↑f x ≠ 0
[PROOFSTEP]
simp only [map_zero] at hf
[GOAL]
case intro
E : Type u_1
inst✝⁶ : TopologicalSpace E
inst✝⁵ : AddCommGroup E
inst✝⁴ : TopologicalAddGroup E
inst✝³ : Module ℝ E
inst✝² : ContinuousSMul ℝ E
inst✝¹ : LocallyConvexSpace ℝ E
inst✝ : T1Space E
x : E
hx : x ≠ 0
f : E →L[ℝ] ℝ
hf : 0 < ↑f x
⊢ ∃ f, ↑f x ≠ 0
[PROOFSTEP]
exact ⟨f, hf.ne'⟩
[GOAL]
E : Type u_1
𝕜 : Type u_2
inst✝² : IsROrC 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
hx : x ≠ 0
⊢ ∃ f, ↑f x ≠ 0
[PROOFSTEP]
rcases exists_dual_vector 𝕜 x hx with ⟨f, -, hf⟩
[GOAL]
case intro.intro
E : Type u_1
𝕜 : Type u_2
inst✝² : IsROrC 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
hx : x ≠ 0
f : E →L[𝕜] 𝕜
hf : ↑f x = ↑‖x‖
⊢ ∃ f, ↑f x ≠ 0
[PROOFSTEP]
refine ⟨f, ?_⟩
[GOAL]
case intro.intro
E : Type u_1
𝕜 : Type u_2
inst✝² : IsROrC 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
hx : x ≠ 0
f : E →L[𝕜] 𝕜
hf : ↑f x = ↑‖x‖
⊢ ↑f x ≠ 0
[PROOFSTEP]
simpa [hf] using hx
[GOAL]
R : Type u_1
V : Type u_2
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup V
inst✝³ : TopologicalSpace V
inst✝² : TopologicalSpace R
inst✝¹ : Module R V
inst✝ : SeparatingDual R V
x y : V
h : x ≠ y
⊢ ∃ f, ↑f x ≠ ↑f y
[PROOFSTEP]
rcases exists_ne_zero (R := R) (sub_ne_zero_of_ne h) with ⟨f, hf⟩
[GOAL]
case intro
R : Type u_1
V : Type u_2
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup V
inst✝³ : TopologicalSpace V
inst✝² : TopologicalSpace R
inst✝¹ : Module R V
inst✝ : SeparatingDual R V
x y : V
h : x ≠ y
f : V →L[R] R
hf : ↑f (x - y) ≠ 0
⊢ ∃ f, ↑f x ≠ ↑f y
[PROOFSTEP]
exact ⟨f, by simpa [sub_ne_zero] using hf⟩
[GOAL]
R : Type u_1
V : Type u_2
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup V
inst✝³ : TopologicalSpace V
inst✝² : TopologicalSpace R
inst✝¹ : Module R V
inst✝ : SeparatingDual R V
x y : V
h : x ≠ y
f : V →L[R] R
hf : ↑f (x - y) ≠ 0
⊢ ↑f x ≠ ↑f y
[PROOFSTEP]
simpa [sub_ne_zero] using hf
[GOAL]
R : Type u_1
V : Type u_2
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup V
inst✝⁴ : TopologicalSpace V
inst✝³ : TopologicalSpace R
inst✝² : Module R V
inst✝¹ : SeparatingDual R V
inst✝ : T1Space R
⊢ T1Space V
[PROOFSTEP]
apply t1Space_iff_exists_open.2 (fun x y hxy ↦ ?_)
[GOAL]
R : Type u_1
V : Type u_2
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup V
inst✝⁴ : TopologicalSpace V
inst✝³ : TopologicalSpace R
inst✝² : Module R V
inst✝¹ : SeparatingDual R V
inst✝ : T1Space R
x y : V
hxy : x ≠ y
⊢ ∃ U, IsOpen U ∧ x ∈ U ∧ ¬y ∈ U
[PROOFSTEP]
rcases exists_separating_of_ne (R := R) hxy with ⟨f, hf⟩
[GOAL]
case intro
R : Type u_1
V : Type u_2
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup V
inst✝⁴ : TopologicalSpace V
inst✝³ : TopologicalSpace R
inst✝² : Module R V
inst✝¹ : SeparatingDual R V
inst✝ : T1Space R
x y : V
hxy : x ≠ y
f : V →L[R] R
hf : ↑f x ≠ ↑f y
⊢ ∃ U, IsOpen U ∧ x ∈ U ∧ ¬y ∈ U
[PROOFSTEP]
exact ⟨f ⁻¹' {f y}ᶜ, isOpen_compl_singleton.preimage f.continuous, hf, by simp⟩
[GOAL]
R : Type u_1
V : Type u_2
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup V
inst✝⁴ : TopologicalSpace V
inst✝³ : TopologicalSpace R
inst✝² : Module R V
inst✝¹ : SeparatingDual R V
inst✝ : T1Space R
x y : V
hxy : x ≠ y
f : V →L[R] R
hf : ↑f x ≠ ↑f y
⊢ ¬y ∈ ↑f ⁻¹' {↑f y}ᶜ
[PROOFSTEP]
simp
[GOAL]
R : Type u_1
V : Type u_2
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup V
inst✝⁴ : TopologicalSpace V
inst✝³ : TopologicalSpace R
inst✝² : Module R V
inst✝¹ : SeparatingDual R V
inst✝ : T2Space R
⊢ T2Space V
[PROOFSTEP]
apply (t2Space_iff _).2 (fun {x} {y} hxy ↦ ?_)
[GOAL]
R : Type u_1
V : Type u_2
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup V
inst✝⁴ : TopologicalSpace V
inst✝³ : TopologicalSpace R
inst✝² : Module R V
inst✝¹ : SeparatingDual R V
inst✝ : T2Space R
x y : V
hxy : x ≠ y
⊢ ∃ u v, IsOpen u ∧ IsOpen v ∧ x ∈ u ∧ y ∈ v ∧ Disjoint u v
[PROOFSTEP]
rcases exists_separating_of_ne (R := R) hxy with ⟨f, hf⟩
[GOAL]
case intro
R : Type u_1
V : Type u_2
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup V
inst✝⁴ : TopologicalSpace V
inst✝³ : TopologicalSpace R
inst✝² : Module R V
inst✝¹ : SeparatingDual R V
inst✝ : T2Space R
x y : V
hxy : x ≠ y
f : V →L[R] R
hf : ↑f x ≠ ↑f y
⊢ ∃ u v, IsOpen u ∧ IsOpen v ∧ x ∈ u ∧ y ∈ v ∧ Disjoint u v
[PROOFSTEP]
exact separated_by_continuous f.continuous hf
[GOAL]
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
hx : x ≠ 0
⊢ ∃ f, ↑f x = 1
[PROOFSTEP]
rcases exists_ne_zero (R := R) hx with ⟨f, hf⟩
[GOAL]
case intro
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
hx : x ≠ 0
f : V →L[R] R
hf : ↑f x ≠ 0
⊢ ∃ f, ↑f x = 1
[PROOFSTEP]
exact ⟨(f x)⁻¹ • f, inv_mul_cancel hf⟩
[GOAL]
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 y : V
hx : x ≠ 0
hy : y ≠ 0
⊢ ∃ f, ↑f x = 1 ∧ ↑f y ≠ 0
[PROOFSTEP]
obtain ⟨u, ux⟩ : ∃ u : V →L[R] R, u x = 1 := exists_eq_one hx
[GOAL]
case intro
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 y : V
hx : x ≠ 0
hy : y ≠ 0
u : V →L[R] R
ux : ↑u x = 1
⊢ ∃ f, ↑f x = 1 ∧ ↑f y ≠ 0
[PROOFSTEP]
rcases ne_or_eq (u y) 0 with uy | uy
[GOAL]
case intro.inl
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 y : V
hx : x ≠ 0
hy : y ≠ 0
u : V →L[R] R
ux : ↑u x = 1
uy : ↑u y ≠ 0
⊢ ∃ f, ↑f x = 1 ∧ ↑f y ≠ 0
[PROOFSTEP]
exact ⟨u, ux, uy⟩
[GOAL]
case intro.inr
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 y : V
hx : x ≠ 0
hy : y ≠ 0
u : V →L[R] R
ux : ↑u x = 1
uy : ↑u y = 0
⊢ ∃ f, ↑f x = 1 ∧ ↑f y ≠ 0
[PROOFSTEP]
obtain ⟨v, vy⟩ : ∃ v : V →L[R] R, v y = 1 := exists_eq_one hy
[GOAL]
case intro.inr.intro
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 y : V
hx : x ≠ 0
hy : y ≠ 0
u : V →L[R] R
ux : ↑u x = 1
uy : ↑u y = 0
v : V →L[R] R
vy : ↑v y = 1
⊢ ∃ f, ↑f x = 1 ∧ ↑f y ≠ 0
[PROOFSTEP]
rcases ne_or_eq (v x) 0 with vx | vx
[GOAL]
case intro.inr.intro.inl
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 y : V
hx : x ≠ 0
hy : y ≠ 0
u : V →L[R] R
ux : ↑u x = 1
uy : ↑u y = 0
v : V →L[R] R
vy : ↑v y = 1
vx : ↑v x ≠ 0
⊢ ∃ f, ↑f x = 1 ∧ ↑f y ≠ 0
[PROOFSTEP]
exact ⟨(v x)⁻¹ • v, inv_mul_cancel vx, show (v x)⁻¹ * v y ≠ 0 by simp [vx, vy]⟩
[GOAL]
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 y : V
hx : x ≠ 0
hy : y ≠ 0
u : V →L[R] R
ux : ↑u x = 1
uy : ↑u y = 0
v : V →L[R] R
vy : ↑v y = 1
vx : ↑v x ≠ 0
⊢ (↑v x)⁻¹ * ↑v y ≠ 0
[PROOFSTEP]
simp [vx, vy]
[GOAL]
case intro.inr.intro.inr
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 y : V
hx : x ≠ 0
hy : y ≠ 0
u : V →L[R] R
ux : ↑u x = 1
uy : ↑u y = 0
v : V →L[R] R
vy : ↑v y = 1
vx : ↑v x = 0
⊢ ∃ f, ↑f x = 1 ∧ ↑f y ≠ 0
[PROOFSTEP]
exact ⟨u + v, by simp [ux, vx], by simp [uy, vy]⟩
[GOAL]
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 y : V
hx : x ≠ 0
hy : y ≠ 0
u : V →L[R] R
ux : ↑u x = 1
uy : ↑u y = 0
v : V →L[R] R
vy : ↑v y = 1
vx : ↑v x = 0
⊢ ↑(u + v) x = 1
[PROOFSTEP]
simp [ux, vx]
[GOAL]
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 y : V
hx : x ≠ 0
hy : y ≠ 0
u : V →L[R] R
ux : ↑u x = 1
uy : ↑u y = 0
v : V →L[R] R
vy : ↑v y = 1
vx : ↑v x = 0
⊢ ↑(u + v) y ≠ 0
[PROOFSTEP]
simp [uy, vy]
[GOAL]
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
inst✝ : ContinuousSMul R V
x y : V
hx : x ≠ 0
hy : y ≠ 0
⊢ ∃ A, ↑A x = y
[PROOFSTEP]
obtain ⟨G, Gx, Gy⟩ : ∃ G : V →L[R] R, G x = 1 ∧ G y ≠ 0 := exists_eq_one_ne_zero_of_ne_zero_pair hx hy
[GOAL]
case intro.intro
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
inst✝ : ContinuousSMul R V
x y : V
hx : x ≠ 0
hy : y ≠ 0
G : V →L[R] R
Gx : ↑G x = 1
Gy : ↑G y ≠ 0
⊢ ∃ A, ↑A x = y
[PROOFSTEP]
let A : V ≃L[R] V :=
  { toFun := fun z ↦ z + G z • (y - x)
    invFun := fun z ↦ z + ((G y)⁻¹ * G z) • (x - y)
    map_add' := fun a b ↦ by simp [add_smul]; abel
    map_smul' := by simp [smul_smul]
    left_inv := fun z ↦
      by
      simp only [id_eq, eq_mpr_eq_cast, RingHom.id_apply, smul_eq_mul, AddHom.toFun_eq_coe, AddHom.coe_mk, map_add,
        map_smulₛₗ, map_sub, Gx, mul_sub, mul_one, add_sub_cancel'_right]
      rw [mul_comm (G z), ← mul_assoc, inv_mul_cancel Gy]
      simp only [smul_sub, one_mul]
      abel
    right_inv := fun z ↦
      by
      simp only [map_add, map_smulₛₗ, map_mul, map_inv₀, RingHom.id_apply, map_sub, Gx, smul_eq_mul, mul_sub, mul_one]
      rw [mul_comm _ (G y), ← mul_assoc, mul_inv_cancel Gy]
      simp only [smul_sub, one_mul, add_sub_cancel'_right]
      abel
    continuous_toFun := continuous_id.add (G.continuous.smul continuous_const)
    continuous_invFun := continuous_id.add ((continuous_const.mul G.continuous).smul continuous_const) }
[GOAL]
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
inst✝ : ContinuousSMul R V
x y : V
hx : x ≠ 0
hy : y ≠ 0
G : V →L[R] R
Gx : ↑G x = 1
Gy : ↑G y ≠ 0
a b : V
⊢ (fun z => z + ↑G z • (y - x)) (a + b) = (fun z => z + ↑G z • (y - x)) a + (fun z => z + ↑G z • (y - x)) b
[PROOFSTEP]
simp [add_smul]
[GOAL]
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
inst✝ : ContinuousSMul R V
x y : V
hx : x ≠ 0
hy : y ≠ 0
G : V →L[R] R
Gx : ↑G x = 1
Gy : ↑G y ≠ 0
a b : V
⊢ a + b + (↑G a • (y - x) + ↑G b • (y - x)) = a + ↑G a • (y - x) + (b + ↑G b • (y - x))
[PROOFSTEP]
abel
[GOAL]
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
inst✝ : ContinuousSMul R V
x y : V
hx : x ≠ 0
hy : y ≠ 0
G : V →L[R] R
Gx : ↑G x = 1
Gy : ↑G y ≠ 0
a b : V
⊢ a + b + (↑G a • (y - x) + ↑G b • (y - x)) = a + ↑G a • (y - x) + (b + ↑G b • (y - x))
[PROOFSTEP]
abel
[GOAL]
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
inst✝ : ContinuousSMul R V
x y : V
hx : x ≠ 0
hy : y ≠ 0
G : V →L[R] R
Gx : ↑G x = 1
Gy : ↑G y ≠ 0
⊢ ∀ (r : R) (x_1 : V),
    AddHom.toFun
        { toFun := fun z => z + ↑G z • (y - x),
          map_add' :=
            (_ :
              ∀ (a b : V),
                (fun z => z + ↑G z • (y - x)) (a + b) =
                  (fun z => z + ↑G z • (y - x)) a + (fun z => z + ↑G z • (y - x)) b) }
        (r • x_1) =
      ↑(RingHom.id R) r •
        AddHom.toFun
          { toFun := fun z => z + ↑G z • (y - x),
            map_add' :=
              (_ :
                ∀ (a b : V),
                  (fun z => z + ↑G z • (y - x)) (a + b) =
                    (fun z => z + ↑G z • (y - x)) a + (fun z => z + ↑G z • (y - x)) b) }
          x_1
[PROOFSTEP]
simp [smul_smul]
[GOAL]
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
inst✝ : ContinuousSMul R V
x y : V
hx : x ≠ 0
hy : y ≠ 0
G : V →L[R] R
Gx : ↑G x = 1
Gy : ↑G y ≠ 0
z : V
⊢ (fun z => z + ((↑G y)⁻¹ * ↑G z) • (x - y))
      (AddHom.toFun
        {
            toAddHom :=
              { toFun := fun z => z + ↑G z • (y - x),
                map_add' :=
                  (_ :
                    ∀ (a b : V),
                      (fun z => z + ↑G z • (y - x)) (a + b) =
                        (fun z => z + ↑G z • (y - x)) a + (fun z => z + ↑G z • (y - x)) b) },
            map_smul' :=
              (_ : ∀ (a : R) (a_1 : V), a • a_1 + ↑G (a • a_1) • (y - x) = a • (a_1 + ↑G a_1 • (y - x))) }.toAddHom
        z) =
    z
[PROOFSTEP]
simp only [id_eq, eq_mpr_eq_cast, RingHom.id_apply, smul_eq_mul, AddHom.toFun_eq_coe, AddHom.coe_mk, map_add,
  map_smulₛₗ, map_sub, Gx, mul_sub, mul_one, add_sub_cancel'_right]
[GOAL]
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
inst✝ : ContinuousSMul R V
x y : V
hx : x ≠ 0
hy : y ≠ 0
G : V →L[R] R
Gx : ↑G x = 1
Gy : ↑G y ≠ 0
z : V
⊢ z + ↑G z • (y - x) + ((↑G y)⁻¹ * (↑G z * ↑G y)) • (x - y) = z
[PROOFSTEP]
rw [mul_comm (G z), ← mul_assoc, inv_mul_cancel Gy]
[GOAL]
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
inst✝ : ContinuousSMul R V
x y : V
hx : x ≠ 0
hy : y ≠ 0
G : V →L[R] R
Gx : ↑G x = 1
Gy : ↑G y ≠ 0
z : V
⊢ z + ↑G z • (y - x) + (1 * ↑G z) • (x - y) = z
[PROOFSTEP]
simp only [smul_sub, one_mul]
[GOAL]
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
inst✝ : ContinuousSMul R V
x y : V
hx : x ≠ 0
hy : y ≠ 0
G : V →L[R] R
Gx : ↑G x = 1
Gy : ↑G y ≠ 0
z : V
⊢ z + (↑G z • y - ↑G z • x) + (↑G z • x - ↑G z • y) = z
[PROOFSTEP]
abel
[GOAL]
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
inst✝ : ContinuousSMul R V
x y : V
hx : x ≠ 0
hy : y ≠ 0
G : V →L[R] R
Gx : ↑G x = 1
Gy : ↑G y ≠ 0
z : V
⊢ z + (↑G z • y - ↑G z • x) + (↑G z • x - ↑G z • y) = z
[PROOFSTEP]
abel
[GOAL]
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
inst✝ : ContinuousSMul R V
x y : V
hx : x ≠ 0
hy : y ≠ 0
G : V →L[R] R
Gx : ↑G x = 1
Gy : ↑G y ≠ 0
z : V
⊢ AddHom.toFun
      {
          toAddHom :=
            { toFun := fun z => z + ↑G z • (y - x),
              map_add' :=
                (_ :
                  ∀ (a b : V),
                    (fun z => z + ↑G z • (y - x)) (a + b) =
                      (fun z => z + ↑G z • (y - x)) a + (fun z => z + ↑G z • (y - x)) b) },
          map_smul' :=
            (_ : ∀ (a : R) (a_1 : V), a • a_1 + ↑G (a • a_1) • (y - x) = a • (a_1 + ↑G a_1 • (y - x))) }.toAddHom
      ((fun z => z + ((↑G y)⁻¹ * ↑G z) • (x - y)) z) =
    z
[PROOFSTEP]
simp only [map_add, map_smulₛₗ, map_mul, map_inv₀, RingHom.id_apply, map_sub, Gx, smul_eq_mul, mul_sub, mul_one]
[GOAL]
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
inst✝ : ContinuousSMul R V
x y : V
hx : x ≠ 0
hy : y ≠ 0
G : V →L[R] R
Gx : ↑G x = 1
Gy : ↑G y ≠ 0
z : V
⊢ z + ((↑G y)⁻¹ * ↑G z) • (x - y) + (↑G z + ((↑G y)⁻¹ * ↑G z - (↑G y)⁻¹ * ↑G z * ↑G y)) • (y - x) = z
[PROOFSTEP]
rw [mul_comm _ (G y), ← mul_assoc, mul_inv_cancel Gy]
[GOAL]
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
inst✝ : ContinuousSMul R V
x y : V
hx : x ≠ 0
hy : y ≠ 0
G : V →L[R] R
Gx : ↑G x = 1
Gy : ↑G y ≠ 0
z : V
⊢ z + ((↑G y)⁻¹ * ↑G z) • (x - y) + (↑G z + ((↑G y)⁻¹ * ↑G z - 1 * ↑G z)) • (y - x) = z
[PROOFSTEP]
simp only [smul_sub, one_mul, add_sub_cancel'_right]
[GOAL]
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
inst✝ : ContinuousSMul R V
x y : V
hx : x ≠ 0
hy : y ≠ 0
G : V →L[R] R
Gx : ↑G x = 1
Gy : ↑G y ≠ 0
z : V
⊢ z + (((↑G y)⁻¹ * ↑G z) • x - ((↑G y)⁻¹ * ↑G z) • y) + (((↑G y)⁻¹ * ↑G z) • y - ((↑G y)⁻¹ * ↑G z) • x) = z
[PROOFSTEP]
abel
[GOAL]
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
inst✝ : ContinuousSMul R V
x y : V
hx : x ≠ 0
hy : y ≠ 0
G : V →L[R] R
Gx : ↑G x = 1
Gy : ↑G y ≠ 0
z : V
⊢ z + (((↑G y)⁻¹ * ↑G z) • x - ((↑G y)⁻¹ * ↑G z) • y) + (((↑G y)⁻¹ * ↑G z) • y - ((↑G y)⁻¹ * ↑G z) • x) = z
[PROOFSTEP]
abel
[GOAL]
case intro.intro
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
inst✝ : ContinuousSMul R V
x y : V
hx : x ≠ 0
hy : y ≠ 0
G : V →L[R] R
Gx : ↑G x = 1
Gy : ↑G y ≠ 0
A : V ≃L[R] V :=
  ContinuousLinearEquiv.mk
    {
      toLinearMap :=
        {
          toAddHom :=
            { toFun := fun z => z + ↑G z • (y - x),
              map_add' :=
                (_ :
                  ∀ (a b : V),
                    (fun z => z + ↑G z • (y - x)) (a + b) =
                      (fun z => z + ↑G z • (y - x)) a + (fun z => z + ↑G z • (y - x)) b) },
          map_smul' := (_ : ∀ (a : R) (a_1 : V), a • a_1 + ↑G (a • a_1) • (y - x) = a • (a_1 + ↑G a_1 • (y - x))) },
      invFun := fun z => z + ((↑G y)⁻¹ * ↑G z) • (x - y),
      left_inv :=
        (_ :
          ∀ (z : V),
            (fun z => z + ((↑G y)⁻¹ * ↑G z) • (x - y))
                (AddHom.toFun
                  {
                      toAddHom :=
                        { toFun := fun z => z + ↑G z • (y - x),
                          map_add' :=
                            (_ :
                              ∀ (a b : V),
                                (fun z => z + ↑G z • (y - x)) (a + b) =
                                  (fun z => z + ↑G z • (y - x)) a + (fun z => z + ↑G z • (y - x)) b) },
                      map_smul' :=
                        (_ :
                          ∀ (a : R) (a_1 : V),
                            a • a_1 + ↑G (a • a_1) • (y - x) = a • (a_1 + ↑G a_1 • (y - x))) }.toAddHom
                  z) =
              z),
      right_inv :=
        (_ :
          ∀ (z : V),
            AddHom.toFun
                {
                    toAddHom :=
                      { toFun := fun z => z + ↑G z • (y - x),
                        map_add' :=
                          (_ :
                            ∀ (a b : V),
                              (fun z => z + ↑G z • (y - x)) (a + b) =
                                (fun z => z + ↑G z • (y - x)) a + (fun z => z + ↑G z • (y - x)) b) },
                    map_smul' :=
                      (_ :
                        ∀ (a : R) (a_1 : V), a • a_1 + ↑G (a • a_1) • (y - x) = a • (a_1 + ↑G a_1 • (y - x))) }.toAddHom
                ((fun z => z + ((↑G y)⁻¹ * ↑G z) • (x - y)) z) =
              z) }
⊢ ∃ A, ↑A x = y
[PROOFSTEP]
exact ⟨A, show x + G x • (y - x) = y by simp [Gx]⟩
[GOAL]
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
inst✝ : ContinuousSMul R V
x y : V
hx : x ≠ 0
hy : y ≠ 0
G : V →L[R] R
Gx : ↑G x = 1
Gy : ↑G y ≠ 0
A : V ≃L[R] V :=
  ContinuousLinearEquiv.mk
    {
      toLinearMap :=
        {
          toAddHom :=
            { toFun := fun z => z + ↑G z • (y - x),
              map_add' :=
                (_ :
                  ∀ (a b : V),
                    (fun z => z + ↑G z • (y - x)) (a + b) =
                      (fun z => z + ↑G z • (y - x)) a + (fun z => z + ↑G z • (y - x)) b) },
          map_smul' := (_ : ∀ (a : R) (a_1 : V), a • a_1 + ↑G (a • a_1) • (y - x) = a • (a_1 + ↑G a_1 • (y - x))) },
      invFun := fun z => z + ((↑G y)⁻¹ * ↑G z) • (x - y),
      left_inv :=
        (_ :
          ∀ (z : V),
            (fun z => z + ((↑G y)⁻¹ * ↑G z) • (x - y))
                (AddHom.toFun
                  {
                      toAddHom :=
                        { toFun := fun z => z + ↑G z • (y - x),
                          map_add' :=
                            (_ :
                              ∀ (a b : V),
                                (fun z => z + ↑G z • (y - x)) (a + b) =
                                  (fun z => z + ↑G z • (y - x)) a + (fun z => z + ↑G z • (y - x)) b) },
                      map_smul' :=
                        (_ :
                          ∀ (a : R) (a_1 : V),
                            a • a_1 + ↑G (a • a_1) • (y - x) = a • (a_1 + ↑G a_1 • (y - x))) }.toAddHom
                  z) =
              z),
      right_inv :=
        (_ :
          ∀ (z : V),
            AddHom.toFun
                {
                    toAddHom :=
                      { toFun := fun z => z + ↑G z • (y - x),
                        map_add' :=
                          (_ :
                            ∀ (a b : V),
                              (fun z => z + ↑G z • (y - x)) (a + b) =
                                (fun z => z + ↑G z • (y - x)) a + (fun z => z + ↑G z • (y - x)) b) },
                    map_smul' :=
                      (_ :
                        ∀ (a : R) (a_1 : V), a • a_1 + ↑G (a • a_1) • (y - x) = a • (a_1 + ↑G a_1 • (y - x))) }.toAddHom
                ((fun z => z + ((↑G y)⁻¹ * ↑G z) • (x - y)) z) =
              z) }
⊢ x + ↑G x • (y - x) = y
[PROOFSTEP]
simp [Gx]