/-- 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 := by
  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
  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) }
  exact ⟨A, show x + G x • (y - x) = y by 

Proof state:
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

Next tactic:
simp [Gx]