l3lab/ntp-mathlib huggingface dataset:
/-- A locally compact normed vector space is proper. -/
lemma properSpace_of_locallyCompactSpace (𝕜 : Type*) [NontriviallyNormedField 𝕜]
    {E : Type*} [SeminormedAddCommGroup E] [NormedSpace 𝕜 E]
    [LocallyCompactSpace E] : ProperSpace E := by
  rcases exists_isCompact_closedBall (0 : E) with ⟨r, rpos, hr⟩
  rcases NormedField.exists_one_lt_norm 𝕜 with ⟨c, hc⟩
  have M : ∀ n (x : E), IsCompact (closedBall x (‖c‖^n * r)) := by
    intro n x
    let f : E → E := fun y ↦ c^n • y + x
    have Cf : Continuous f := (continuous_id.const_smul _).add continuous_const
    have A : closedBall x (‖c‖^n * r) ⊆ f '' (closedBall 0 r) := by
      rintro y hy
      refine ⟨(c^n)⁻¹ • (y - x), ?_, ?_⟩
      · simpa [dist_eq_norm, norm_smul, inv_mul_le_iff (pow_pos (zero_lt_one.trans hc) _)] using hy
      · have : c^n ≠ 0 := pow_ne_zero _ (norm_pos_iff.1 (zero_lt_one.trans hc))
        simp [smul_smul, mul_inv_cancel this]
    exact (hr.image Cf).of_isClosed_subset isClosed_ball A
  

Proof state:
case intro.intro.intro
𝕜✝ : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜✝
E✝ : Type v
inst✝¹³ : NormedAddCommGroup E✝
inst✝¹² : NormedSpace 𝕜✝ E✝
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜✝ F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜✝ F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜✝ F'
inst✝⁴ : CompleteSpace 𝕜✝
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : LocallyCompactSpace E
r : ℝ
rpos : 0 < r
hr : IsCompact (closedBall 0 r)
c : 𝕜
hc : 1 < ‖c‖
M : ∀ (n : ℕ) (x : E), IsCompact (closedBall x (‖c‖ ^ n * r))
⊢ ProperSpace E

Next tactic:
refine ⟨fun x s ↦ ?_⟩
/-- A locally compact normed vector space is proper. -/
lemma properSpace_of_locallyCompactSpace (𝕜 : Type*) [NontriviallyNormedField 𝕜]
    {E : Type*} [SeminormedAddCommGroup E] [NormedSpace 𝕜 E]
    [LocallyCompactSpace E] : ProperSpace E := by
  rcases exists_isCompact_closedBall (0 : E) with ⟨r, rpos, hr⟩
  rcases NormedField.exists_one_lt_norm 𝕜 with ⟨c, hc⟩
  have M : ∀ n (x : E), IsCompact (closedBall x (‖c‖^n * r)) := by
    intro n x
    let f : E → E := fun y ↦ c^n • y + x
    have Cf : Continuous f := (continuous_id.const_smul _).add continuous_const
    have A : closedBall x (‖c‖^n * r) ⊆ f '' (closedBall 0 r) := by
      rintro y hy
      refine ⟨(c^n)⁻¹ • (y - x), ?_, ?_⟩
      · simpa [dist_eq_norm, norm_smul, inv_mul_le_iff (pow_pos (zero_lt_one.trans hc) _)] using hy
      · have : c^n ≠ 0 := pow_ne_zero _ (norm_pos_iff.1 (zero_lt_one.trans hc))
        simp [smul_smul, mul_inv_cancel this]
    exact (hr.image Cf).of_isClosed_subset isClosed_ball A
  refine ⟨fun x s ↦ ?_⟩
  

Proof state:
case intro.intro.intro
𝕜✝ : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜✝
E✝ : Type v
inst✝¹³ : NormedAddCommGroup E✝
inst✝¹² : NormedSpace 𝕜✝ E✝
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜✝ F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜✝ F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜✝ F'
inst✝⁴ : CompleteSpace 𝕜✝
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : LocallyCompactSpace E
r : ℝ
rpos : 0 < r
hr : IsCompact (closedBall 0 r)
c : 𝕜
hc : 1 < ‖c‖
M : ∀ (n : ℕ) (x : E), IsCompact (closedBall x (‖c‖ ^ n * r))
x : E
s : ℝ
⊢ IsCompact (closedBall x s)

Next tactic:
have L : ∀ᶠ n in (atTop : Filter ℕ), s ≤ ‖c‖^n * r := by
    have : Tendsto (fun n ↦ ‖c‖^n * r) atTop atTop :=
      Tendsto.atTop_mul_const rpos (tendsto_pow_atTop_atTop_of_one_lt hc)
    exact Tendsto.eventually_ge_atTop this s
/-- A locally compact normed vector space is proper. -/
lemma properSpace_of_locallyCompactSpace (𝕜 : Type*) [NontriviallyNormedField 𝕜]
    {E : Type*} [SeminormedAddCommGroup E] [NormedSpace 𝕜 E]
    [LocallyCompactSpace E] : ProperSpace E := by
  rcases exists_isCompact_closedBall (0 : E) with ⟨r, rpos, hr⟩
  rcases NormedField.exists_one_lt_norm 𝕜 with ⟨c, hc⟩
  have M : ∀ n (x : E), IsCompact (closedBall x (‖c‖^n * r)) := by
    intro n x
    let f : E → E := fun y ↦ c^n • y + x
    have Cf : Continuous f := (continuous_id.const_smul _).add continuous_const
    have A : closedBall x (‖c‖^n * r) ⊆ f '' (closedBall 0 r) := by
      rintro y hy
      refine ⟨(c^n)⁻¹ • (y - x), ?_, ?_⟩
      · simpa [dist_eq_norm, norm_smul, inv_mul_le_iff (pow_pos (zero_lt_one.trans hc) _)] using hy
      · have : c^n ≠ 0 := pow_ne_zero _ (norm_pos_iff.1 (zero_lt_one.trans hc))
        simp [smul_smul, mul_inv_cancel this]
    exact (hr.image Cf).of_isClosed_subset isClosed_ball A
  refine ⟨fun x s ↦ ?_⟩
  have L : ∀ᶠ n in (atTop : Filter ℕ), s ≤ ‖c‖^n * r := by
    

Proof state:
𝕜✝ : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜✝
E✝ : Type v
inst✝¹³ : NormedAddCommGroup E✝
inst✝¹² : NormedSpace 𝕜✝ E✝
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜✝ F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜✝ F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜✝ F'
inst✝⁴ : CompleteSpace 𝕜✝
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : LocallyCompactSpace E
r : ℝ
rpos : 0 < r
hr : IsCompact (closedBall 0 r)
c : 𝕜
hc : 1 < ‖c‖
M : ∀ (n : ℕ) (x : E), IsCompact (closedBall x (‖c‖ ^ n * r))
x : E
s : ℝ
⊢ ∀ᶠ (n : ℕ) in atTop, s ≤ ‖c‖ ^ n * r

Next tactic:
have : Tendsto (fun n ↦ ‖c‖^n * r) atTop atTop :=
      Tendsto.atTop_mul_const rpos (tendsto_pow_atTop_atTop_of_one_lt hc)
/-- A locally compact normed vector space is proper. -/
lemma properSpace_of_locallyCompactSpace (𝕜 : Type*) [NontriviallyNormedField 𝕜]
    {E : Type*} [SeminormedAddCommGroup E] [NormedSpace 𝕜 E]
    [LocallyCompactSpace E] : ProperSpace E := by
  rcases exists_isCompact_closedBall (0 : E) with ⟨r, rpos, hr⟩
  rcases NormedField.exists_one_lt_norm 𝕜 with ⟨c, hc⟩
  have M : ∀ n (x : E), IsCompact (closedBall x (‖c‖^n * r)) := by
    intro n x
    let f : E → E := fun y ↦ c^n • y + x
    have Cf : Continuous f := (continuous_id.const_smul _).add continuous_const
    have A : closedBall x (‖c‖^n * r) ⊆ f '' (closedBall 0 r) := by
      rintro y hy
      refine ⟨(c^n)⁻¹ • (y - x), ?_, ?_⟩
      · simpa [dist_eq_norm, norm_smul, inv_mul_le_iff (pow_pos (zero_lt_one.trans hc) _)] using hy
      · have : c^n ≠ 0 := pow_ne_zero _ (norm_pos_iff.1 (zero_lt_one.trans hc))
        simp [smul_smul, mul_inv_cancel this]
    exact (hr.image Cf).of_isClosed_subset isClosed_ball A
  refine ⟨fun x s ↦ ?_⟩
  have L : ∀ᶠ n in (atTop : Filter ℕ), s ≤ ‖c‖^n * r := by
    have : Tendsto (fun n ↦ ‖c‖^n * r) atTop atTop :=
      Tendsto.atTop_mul_const rpos (tendsto_pow_atTop_atTop_of_one_lt hc)
    

Proof state:
𝕜✝ : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜✝
E✝ : Type v
inst✝¹³ : NormedAddCommGroup E✝
inst✝¹² : NormedSpace 𝕜✝ E✝
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜✝ F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜✝ F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜✝ F'
inst✝⁴ : CompleteSpace 𝕜✝
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : LocallyCompactSpace E
r : ℝ
rpos : 0 < r
hr : IsCompact (closedBall 0 r)
c : 𝕜
hc : 1 < ‖c‖
M : ∀ (n : ℕ) (x : E), IsCompact (closedBall x (‖c‖ ^ n * r))
x : E
s : ℝ
this : Tendsto (fun n => ‖c‖ ^ n * r) atTop atTop
⊢ ∀ᶠ (n : ℕ) in atTop, s ≤ ‖c‖ ^ n * r

Next tactic:
exact Tendsto.eventually_ge_atTop this s
/-- A locally compact normed vector space is proper. -/
lemma properSpace_of_locallyCompactSpace (𝕜 : Type*) [NontriviallyNormedField 𝕜]
    {E : Type*} [SeminormedAddCommGroup E] [NormedSpace 𝕜 E]
    [LocallyCompactSpace E] : ProperSpace E := by
  rcases exists_isCompact_closedBall (0 : E) with ⟨r, rpos, hr⟩
  rcases NormedField.exists_one_lt_norm 𝕜 with ⟨c, hc⟩
  have M : ∀ n (x : E), IsCompact (closedBall x (‖c‖^n * r)) := by
    intro n x
    let f : E → E := fun y ↦ c^n • y + x
    have Cf : Continuous f := (continuous_id.const_smul _).add continuous_const
    have A : closedBall x (‖c‖^n * r) ⊆ f '' (closedBall 0 r) := by
      rintro y hy
      refine ⟨(c^n)⁻¹ • (y - x), ?_, ?_⟩
      · simpa [dist_eq_norm, norm_smul, inv_mul_le_iff (pow_pos (zero_lt_one.trans hc) _)] using hy
      · have : c^n ≠ 0 := pow_ne_zero _ (norm_pos_iff.1 (zero_lt_one.trans hc))
        simp [smul_smul, mul_inv_cancel this]
    exact (hr.image Cf).of_isClosed_subset isClosed_ball A
  refine ⟨fun x s ↦ ?_⟩
  have L : ∀ᶠ n in (atTop : Filter ℕ), s ≤ ‖c‖^n * r := by
    have : Tendsto (fun n ↦ ‖c‖^n * r) atTop atTop :=
      Tendsto.atTop_mul_const rpos (tendsto_pow_atTop_atTop_of_one_lt hc)
    exact Tendsto.eventually_ge_atTop this s
  

Proof state:
case intro.intro.intro
𝕜✝ : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜✝
E✝ : Type v
inst✝¹³ : NormedAddCommGroup E✝
inst✝¹² : NormedSpace 𝕜✝ E✝
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜✝ F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜✝ F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜✝ F'
inst✝⁴ : CompleteSpace 𝕜✝
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : LocallyCompactSpace E
r : ℝ
rpos : 0 < r
hr : IsCompact (closedBall 0 r)
c : 𝕜
hc : 1 < ‖c‖
M : ∀ (n : ℕ) (x : E), IsCompact (closedBall x (‖c‖ ^ n * r))
x : E
s : ℝ
L : ∀ᶠ (n : ℕ) in atTop, s ≤ ‖c‖ ^ n * r
⊢ IsCompact (closedBall x s)

Next tactic:
rcases L.exists with ⟨n, hn⟩
/-- A locally compact normed vector space is proper. -/
lemma properSpace_of_locallyCompactSpace (𝕜 : Type*) [NontriviallyNormedField 𝕜]
    {E : Type*} [SeminormedAddCommGroup E] [NormedSpace 𝕜 E]
    [LocallyCompactSpace E] : ProperSpace E := by
  rcases exists_isCompact_closedBall (0 : E) with ⟨r, rpos, hr⟩
  rcases NormedField.exists_one_lt_norm 𝕜 with ⟨c, hc⟩
  have M : ∀ n (x : E), IsCompact (closedBall x (‖c‖^n * r)) := by
    intro n x
    let f : E → E := fun y ↦ c^n • y + x
    have Cf : Continuous f := (continuous_id.const_smul _).add continuous_const
    have A : closedBall x (‖c‖^n * r) ⊆ f '' (closedBall 0 r) := by
      rintro y hy
      refine ⟨(c^n)⁻¹ • (y - x), ?_, ?_⟩
      · simpa [dist_eq_norm, norm_smul, inv_mul_le_iff (pow_pos (zero_lt_one.trans hc) _)] using hy
      · have : c^n ≠ 0 := pow_ne_zero _ (norm_pos_iff.1 (zero_lt_one.trans hc))
        simp [smul_smul, mul_inv_cancel this]
    exact (hr.image Cf).of_isClosed_subset isClosed_ball A
  refine ⟨fun x s ↦ ?_⟩
  have L : ∀ᶠ n in (atTop : Filter ℕ), s ≤ ‖c‖^n * r := by
    have : Tendsto (fun n ↦ ‖c‖^n * r) atTop atTop :=
      Tendsto.atTop_mul_const rpos (tendsto_pow_atTop_atTop_of_one_lt hc)
    exact Tendsto.eventually_ge_atTop this s
  rcases L.exists with ⟨n, hn⟩
  

Proof state:
case intro.intro.intro.intro
𝕜✝ : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜✝
E✝ : Type v
inst✝¹³ : NormedAddCommGroup E✝
inst✝¹² : NormedSpace 𝕜✝ E✝
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜✝ F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜✝ F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜✝ F'
inst✝⁴ : CompleteSpace 𝕜✝
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : LocallyCompactSpace E
r : ℝ
rpos : 0 < r
hr : IsCompact (closedBall 0 r)
c : 𝕜
hc : 1 < ‖c‖
M : ∀ (n : ℕ) (x : E), IsCompact (closedBall x (‖c‖ ^ n * r))
x : E
s : ℝ
L : ∀ᶠ (n : ℕ) in atTop, s ≤ ‖c‖ ^ n * r
n : ℕ
hn : s ≤ ‖c‖ ^ n * r
⊢ IsCompact (closedBall x s)

Next tactic:
exact (M n x).of_isClosed_subset isClosed_ball (closedBall_subset_closedBall hn)
lemma properSpace_of_locallyCompact_module [Nontrivial E] [LocallyCompactSpace E] :
    ProperSpace 𝕜 := by
  

Proof state:
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : Nontrivial E
inst✝ : LocallyCompactSpace E
⊢ ProperSpace 𝕜

Next tactic:
have : LocallyCompactSpace 𝕜 := by
    obtain ⟨v, hv⟩ : ∃ v : E, v ≠ 0 := exists_ne 0
    let L : 𝕜 → E := fun t ↦ t • v
    have : ClosedEmbedding L := closedEmbedding_smul_left hv
    apply ClosedEmbedding.locallyCompactSpace this
lemma properSpace_of_locallyCompact_module [Nontrivial E] [LocallyCompactSpace E] :
    ProperSpace 𝕜 := by
  have : LocallyCompactSpace 𝕜 := by
    

Proof state:
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : Nontrivial E
inst✝ : LocallyCompactSpace E
⊢ LocallyCompactSpace 𝕜

Next tactic:
obtain ⟨v, hv⟩ : ∃ v : E, v ≠ 0 := exists_ne 0
lemma properSpace_of_locallyCompact_module [Nontrivial E] [LocallyCompactSpace E] :
    ProperSpace 𝕜 := by
  have : LocallyCompactSpace 𝕜 := by
    obtain ⟨v, hv⟩ : ∃ v : E, v ≠ 0 := exists_ne 0
    

Proof state:
case intro
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : Nontrivial E
inst✝ : LocallyCompactSpace E
v : E
hv : v ≠ 0
⊢ LocallyCompactSpace 𝕜

Next tactic:
let L : 𝕜 → E := fun t ↦ t • v
lemma properSpace_of_locallyCompact_module [Nontrivial E] [LocallyCompactSpace E] :
    ProperSpace 𝕜 := by
  have : LocallyCompactSpace 𝕜 := by
    obtain ⟨v, hv⟩ : ∃ v : E, v ≠ 0 := exists_ne 0
    let L : 𝕜 → E := fun t ↦ t • v
    

Proof state:
case intro
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : Nontrivial E
inst✝ : LocallyCompactSpace E
v : E
hv : v ≠ 0
L : 𝕜 → E := fun t => t • v
⊢ LocallyCompactSpace 𝕜

Next tactic:
have : ClosedEmbedding L := closedEmbedding_smul_left hv
lemma properSpace_of_locallyCompact_module [Nontrivial E] [LocallyCompactSpace E] :
    ProperSpace 𝕜 := by
  have : LocallyCompactSpace 𝕜 := by
    obtain ⟨v, hv⟩ : ∃ v : E, v ≠ 0 := exists_ne 0
    let L : 𝕜 → E := fun t ↦ t • v
    have : ClosedEmbedding L := closedEmbedding_smul_left hv
    

Proof state:
case intro
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : Nontrivial E
inst✝ : LocallyCompactSpace E
v : E
hv : v ≠ 0
L : 𝕜 → E := fun t => t • v
this : ClosedEmbedding L
⊢ LocallyCompactSpace 𝕜

Next tactic:
apply ClosedEmbedding.locallyCompactSpace this
lemma properSpace_of_locallyCompact_module [Nontrivial E] [LocallyCompactSpace E] :
    ProperSpace 𝕜 := by
  have : LocallyCompactSpace 𝕜 := by
    obtain ⟨v, hv⟩ : ∃ v : E, v ≠ 0 := exists_ne 0
    let L : 𝕜 → E := fun t ↦ t • v
    have : ClosedEmbedding L := closedEmbedding_smul_left hv
    apply ClosedEmbedding.locallyCompactSpace this
  

Proof state:
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : Nontrivial E
inst✝ : LocallyCompactSpace E
this : LocallyCompactSpace 𝕜
⊢ ProperSpace 𝕜

Next tactic:
exact properSpace_of_locallyCompactSpace 𝕜
/-- Continuous linear equivalence between continuous linear functions `𝕜ⁿ → E` and `Eⁿ`.
The spaces `𝕜ⁿ` and `Eⁿ` are represented as `ι → 𝕜` and `ι → E`, respectively,
where `ι` is a finite type. -/
def ContinuousLinearEquiv.piRing (ι : Type*) [Fintype ι] [DecidableEq ι] :
    ((ι → 𝕜) →L[𝕜] E) ≃L[𝕜] ι → E :=
  { LinearMap.toContinuousLinearMap.symm.trans (LinearEquiv.piRing 𝕜 E ι 𝕜) with
    continuous_toFun := by
      

Proof state:
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
src✝ : ((ι → 𝕜) →L[𝕜] E) ≃ₗ[𝕜] ι → E := LinearEquiv.symm LinearMap.toContinuousLinearMap ≪≫ₗ LinearEquiv.piRing 𝕜 E ι 𝕜
⊢ Continuous
    (↑{ toLinearMap := ↑src✝, invFun := src✝.invFun, left_inv := (_ : Function.LeftInverse src✝.invFun src✝.toFun),
            right_inv := (_ : Function.RightInverse src✝.invFun src✝.toFun) }).toAddHom.toFun

Next tactic:
refine' continuous_pi fun i => _
/-- Continuous linear equivalence between continuous linear functions `𝕜ⁿ → E` and `Eⁿ`.
The spaces `𝕜ⁿ` and `Eⁿ` are represented as `ι → 𝕜` and `ι → E`, respectively,
where `ι` is a finite type. -/
def ContinuousLinearEquiv.piRing (ι : Type*) [Fintype ι] [DecidableEq ι] :
    ((ι → 𝕜) →L[𝕜] E) ≃L[𝕜] ι → E :=
  { LinearMap.toContinuousLinearMap.symm.trans (LinearEquiv.piRing 𝕜 E ι 𝕜) with
    continuous_toFun := by
      refine' continuous_pi fun i => _
      

Proof state:
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
src✝ : ((ι → 𝕜) →L[𝕜] E) ≃ₗ[𝕜] ι → E := LinearEquiv.symm LinearMap.toContinuousLinearMap ≪≫ₗ LinearEquiv.piRing 𝕜 E ι 𝕜
i : ι
⊢ Continuous fun a =>
    AddHom.toFun
      (↑{ toLinearMap := ↑src✝, invFun := src✝.invFun, left_inv := (_ : Function.LeftInverse src✝.invFun src✝.toFun),
            right_inv := (_ : Function.RightInverse src✝.invFun src✝.toFun) }).toAddHom
      a i

Next tactic:
exact (ContinuousLinearMap.apply 𝕜 E (Pi.single i 1)).continuous
/-- Continuous linear equivalence between continuous linear functions `𝕜ⁿ → E` and `Eⁿ`.
The spaces `𝕜ⁿ` and `Eⁿ` are represented as `ι → 𝕜` and `ι → E`, respectively,
where `ι` is a finite type. -/
def ContinuousLinearEquiv.piRing (ι : Type*) [Fintype ι] [DecidableEq ι] :
    ((ι → 𝕜) →L[𝕜] E) ≃L[𝕜] ι → E :=
  { LinearMap.toContinuousLinearMap.symm.trans (LinearEquiv.piRing 𝕜 E ι 𝕜) with
    continuous_toFun := by
      refine' continuous_pi fun i => _
      exact (ContinuousLinearMap.apply 𝕜 E (Pi.single i 1)).continuous
    continuous_invFun := by
      

Proof state:
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
src✝ : ((ι → 𝕜) →L[𝕜] E) ≃ₗ[𝕜] ι → E := LinearEquiv.symm LinearMap.toContinuousLinearMap ≪≫ₗ LinearEquiv.piRing 𝕜 E ι 𝕜
⊢ Continuous
    { toLinearMap := ↑src✝, invFun := src✝.invFun, left_inv := (_ : Function.LeftInverse src✝.invFun src✝.toFun),
        right_inv := (_ : Function.RightInverse src✝.invFun src✝.toFun) }.invFun

Next tactic:
simp_rw [LinearEquiv.invFun_eq_symm, LinearEquiv.trans_symm, LinearEquiv.symm_symm]
/-- Continuous linear equivalence between continuous linear functions `𝕜ⁿ → E` and `Eⁿ`.
The spaces `𝕜ⁿ` and `Eⁿ` are represented as `ι → 𝕜` and `ι → E`, respectively,
where `ι` is a finite type. -/
def ContinuousLinearEquiv.piRing (ι : Type*) [Fintype ι] [DecidableEq ι] :
    ((ι → 𝕜) →L[𝕜] E) ≃L[𝕜] ι → E :=
  { LinearMap.toContinuousLinearMap.symm.trans (LinearEquiv.piRing 𝕜 E ι 𝕜) with
    continuous_toFun := by
      refine' continuous_pi fun i => _
      exact (ContinuousLinearMap.apply 𝕜 E (Pi.single i 1)).continuous
    continuous_invFun := by
      simp_rw [LinearEquiv.invFun_eq_symm, LinearEquiv.trans_symm, LinearEquiv.symm_symm]
      -- Note: added explicit type and removed `change` that tried to achieve the same
      

Proof state:
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
src✝ : ((ι → 𝕜) →L[𝕜] E) ≃ₗ[𝕜] ι → E := LinearEquiv.symm LinearMap.toContinuousLinearMap ≪≫ₗ LinearEquiv.piRing 𝕜 E ι 𝕜
⊢ Continuous ⇑(LinearEquiv.symm (LinearEquiv.piRing 𝕜 E ι 𝕜) ≪≫ₗ LinearMap.toContinuousLinearMap)

Next tactic:
refine AddMonoidHomClass.continuous_of_bound
        (LinearMap.toContinuousLinearMap.toLinearMap.comp
            (LinearEquiv.piRing 𝕜 E ι 𝕜).symm.toLinearMap)
        (Fintype.card ι : ℝ) fun g => ?_
/-- Continuous linear equivalence between continuous linear functions `𝕜ⁿ → E` and `Eⁿ`.
The spaces `𝕜ⁿ` and `Eⁿ` are represented as `ι → 𝕜` and `ι → E`, respectively,
where `ι` is a finite type. -/
def ContinuousLinearEquiv.piRing (ι : Type*) [Fintype ι] [DecidableEq ι] :
    ((ι → 𝕜) →L[𝕜] E) ≃L[𝕜] ι → E :=
  { LinearMap.toContinuousLinearMap.symm.trans (LinearEquiv.piRing 𝕜 E ι 𝕜) with
    continuous_toFun := by
      refine' continuous_pi fun i => _
      exact (ContinuousLinearMap.apply 𝕜 E (Pi.single i 1)).continuous
    continuous_invFun := by
      simp_rw [LinearEquiv.invFun_eq_symm, LinearEquiv.trans_symm, LinearEquiv.symm_symm]
      -- Note: added explicit type and removed `change` that tried to achieve the same
      refine AddMonoidHomClass.continuous_of_bound
        (LinearMap.toContinuousLinearMap.toLinearMap.comp
            (LinearEquiv.piRing 𝕜 E ι 𝕜).symm.toLinearMap)
        (Fintype.card ι : ℝ) fun g => ?_
      

Proof state:
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
src✝ : ((ι → 𝕜) →L[𝕜] E) ≃ₗ[𝕜] ι → E := LinearEquiv.symm LinearMap.toContinuousLinearMap ≪≫ₗ LinearEquiv.piRing 𝕜 E ι 𝕜
g : ι → E
⊢ ‖(↑LinearMap.toContinuousLinearMap ∘ₗ ↑(LinearEquiv.symm (LinearEquiv.piRing 𝕜 E ι 𝕜))) g‖ ≤ ↑(Fintype.card ι) * ‖g‖

Next tactic:
rw [← nsmul_eq_mul]