l3lab/ntp-mathlib huggingface dataset:
/-- This version imposes `ι` and `E` to live in the same universe, so you should instead use
`continuous_equivFun_basis` which gives the same result without universe restrictions. -/
private theorem continuous_equivFun_basis_aux [ht2 : T2Space E] {ι : Type v} [Fintype ι]
    (ξ : Basis ι 𝕜 E) : Continuous ξ.equivFun := by
  letI : UniformSpace E := TopologicalAddGroup.toUniformSpace E
  letI : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
  letI : SeparatedSpace E := separated_iff_t2.mpr ht2
  induction' hn : Fintype.card ι with n IH generalizing ι E
  · 

Proof state:
case zero
𝕜 : Type u
hnorm : NontriviallyNormedField 𝕜
F : Type w
inst✝¹⁶ : AddCommGroup F
inst✝¹⁵ : Module 𝕜 F
inst✝¹⁴ : TopologicalSpace F
inst✝¹³ : TopologicalAddGroup F
inst✝¹² : ContinuousSMul 𝕜 F
F' : Type x
inst✝¹¹ : AddCommGroup F'
inst✝¹⁰ : Module 𝕜 F'
inst✝⁹ : TopologicalSpace F'
inst✝⁸ : TopologicalAddGroup F'
inst✝⁷ : ContinuousSMul 𝕜 F'
inst✝⁶ : CompleteSpace 𝕜
E : Type v
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : TopologicalSpace E
inst✝² : TopologicalAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
ht2 : T2Space E
ι : Type v
inst✝ : Fintype ι
ξ : Basis ι 𝕜 E
this✝¹ : UniformSpace E := TopologicalAddGroup.toUniformSpace E
this✝ : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
this : SeparatedSpace E := separated_iff_t2.mpr ht2
hn : Fintype.card ι = Nat.zero
⊢ Continuous ⇑(Basis.equivFun ξ)

Next tactic:
rw [Fintype.card_eq_zero_iff] at hn
/-- This version imposes `ι` and `E` to live in the same universe, so you should instead use
`continuous_equivFun_basis` which gives the same result without universe restrictions. -/
private theorem continuous_equivFun_basis_aux [ht2 : T2Space E] {ι : Type v} [Fintype ι]
    (ξ : Basis ι 𝕜 E) : Continuous ξ.equivFun := by
  letI : UniformSpace E := TopologicalAddGroup.toUniformSpace E
  letI : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
  letI : SeparatedSpace E := separated_iff_t2.mpr ht2
  induction' hn : Fintype.card ι with n IH generalizing ι E
  · rw [Fintype.card_eq_zero_iff] at hn
    

Proof state:
case zero
𝕜 : Type u
hnorm : NontriviallyNormedField 𝕜
F : Type w
inst✝¹⁶ : AddCommGroup F
inst✝¹⁵ : Module 𝕜 F
inst✝¹⁴ : TopologicalSpace F
inst✝¹³ : TopologicalAddGroup F
inst✝¹² : ContinuousSMul 𝕜 F
F' : Type x
inst✝¹¹ : AddCommGroup F'
inst✝¹⁰ : Module 𝕜 F'
inst✝⁹ : TopologicalSpace F'
inst✝⁸ : TopologicalAddGroup F'
inst✝⁷ : ContinuousSMul 𝕜 F'
inst✝⁶ : CompleteSpace 𝕜
E : Type v
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : TopologicalSpace E
inst✝² : TopologicalAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
ht2 : T2Space E
ι : Type v
inst✝ : Fintype ι
ξ : Basis ι 𝕜 E
this✝¹ : UniformSpace E := TopologicalAddGroup.toUniformSpace E
this✝ : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
this : SeparatedSpace E := separated_iff_t2.mpr ht2
hn : IsEmpty ι
⊢ Continuous ⇑(Basis.equivFun ξ)

Next tactic:
exact continuous_of_const fun x y => funext hn.elim
/-- This version imposes `ι` and `E` to live in the same universe, so you should instead use
`continuous_equivFun_basis` which gives the same result without universe restrictions. -/
private theorem continuous_equivFun_basis_aux [ht2 : T2Space E] {ι : Type v} [Fintype ι]
    (ξ : Basis ι 𝕜 E) : Continuous ξ.equivFun := by
  letI : UniformSpace E := TopologicalAddGroup.toUniformSpace E
  letI : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
  letI : SeparatedSpace E := separated_iff_t2.mpr ht2
  induction' hn : Fintype.card ι with n IH generalizing ι E
  · rw [Fintype.card_eq_zero_iff] at hn
    exact continuous_of_const fun x y => funext hn.elim
  · 

Proof state:
case succ
𝕜 : Type u
hnorm : NontriviallyNormedField 𝕜
F : Type w
inst✝¹⁶ : AddCommGroup F
inst✝¹⁵ : Module 𝕜 F
inst✝¹⁴ : TopologicalSpace F
inst✝¹³ : TopologicalAddGroup F
inst✝¹² : ContinuousSMul 𝕜 F
F' : Type x
inst✝¹¹ : AddCommGroup F'
inst✝¹⁰ : Module 𝕜 F'
inst✝⁹ : TopologicalSpace F'
inst✝⁸ : TopologicalAddGroup F'
inst✝⁷ : ContinuousSMul 𝕜 F'
inst✝⁶ : CompleteSpace 𝕜
n : ℕ
IH :
  ∀ {E : Type v} [inst : AddCommGroup E] [inst_1 : Module 𝕜 E] [inst_2 : TopologicalSpace E]
    [inst_3 : TopologicalAddGroup E] [inst_4 : ContinuousSMul 𝕜 E] [ht2 : T2Space E] {ι : Type v} [inst_5 : Fintype ι]
    (ξ : Basis ι 𝕜 E),
    let this := TopologicalAddGroup.toUniformSpace E;
    let this_1 := (_ : UniformAddGroup E);
    let this := (_ : SeparatedSpace E);
    Fintype.card ι = n → Continuous ⇑(Basis.equivFun ξ)
E : Type v
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : TopologicalSpace E
inst✝² : TopologicalAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
ht2 : T2Space E
ι : Type v
inst✝ : Fintype ι
ξ : Basis ι 𝕜 E
this✝¹ : UniformSpace E := TopologicalAddGroup.toUniformSpace E
this✝ : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
this : SeparatedSpace E := separated_iff_t2.mpr ht2
hn : Fintype.card ι = Nat.succ n
⊢ Continuous ⇑(Basis.equivFun ξ)

Next tactic:
haveI : FiniteDimensional 𝕜 E := of_fintype_basis ξ
/-- This version imposes `ι` and `E` to live in the same universe, so you should instead use
`continuous_equivFun_basis` which gives the same result without universe restrictions. -/
private theorem continuous_equivFun_basis_aux [ht2 : T2Space E] {ι : Type v} [Fintype ι]
    (ξ : Basis ι 𝕜 E) : Continuous ξ.equivFun := by
  letI : UniformSpace E := TopologicalAddGroup.toUniformSpace E
  letI : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
  letI : SeparatedSpace E := separated_iff_t2.mpr ht2
  induction' hn : Fintype.card ι with n IH generalizing ι E
  · rw [Fintype.card_eq_zero_iff] at hn
    exact continuous_of_const fun x y => funext hn.elim
  · haveI : FiniteDimensional 𝕜 E := of_fintype_basis ξ
    -- first step: thanks to the induction hypothesis, any n-dimensional subspace is equivalent
    -- to a standard space of dimension n, hence it is complete and therefore closed.
    

Proof state:
case succ
𝕜 : Type u
hnorm : NontriviallyNormedField 𝕜
F : Type w
inst✝¹⁶ : AddCommGroup F
inst✝¹⁵ : Module 𝕜 F
inst✝¹⁴ : TopologicalSpace F
inst✝¹³ : TopologicalAddGroup F
inst✝¹² : ContinuousSMul 𝕜 F
F' : Type x
inst✝¹¹ : AddCommGroup F'
inst✝¹⁰ : Module 𝕜 F'
inst✝⁹ : TopologicalSpace F'
inst✝⁸ : TopologicalAddGroup F'
inst✝⁷ : ContinuousSMul 𝕜 F'
inst✝⁶ : CompleteSpace 𝕜
n : ℕ
IH :
  ∀ {E : Type v} [inst : AddCommGroup E] [inst_1 : Module 𝕜 E] [inst_2 : TopologicalSpace E]
    [inst_3 : TopologicalAddGroup E] [inst_4 : ContinuousSMul 𝕜 E] [ht2 : T2Space E] {ι : Type v} [inst_5 : Fintype ι]
    (ξ : Basis ι 𝕜 E),
    let this := TopologicalAddGroup.toUniformSpace E;
    let this_1 := (_ : UniformAddGroup E);
    let this := (_ : SeparatedSpace E);
    Fintype.card ι = n → Continuous ⇑(Basis.equivFun ξ)
E : Type v
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : TopologicalSpace E
inst✝² : TopologicalAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
ht2 : T2Space E
ι : Type v
inst✝ : Fintype ι
ξ : Basis ι 𝕜 E
this✝² : UniformSpace E := TopologicalAddGroup.toUniformSpace E
this✝¹ : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
this✝ : SeparatedSpace E := separated_iff_t2.mpr ht2
hn : Fintype.card ι = Nat.succ n
this : FiniteDimensional 𝕜 E
⊢ Continuous ⇑(Basis.equivFun ξ)

Next tactic:
have H₁ : ∀ s : Submodule 𝕜 E, finrank 𝕜 s = n → IsClosed (s : Set E) := by
      intro s s_dim
      letI : UniformAddGroup s := s.toAddSubgroup.uniformAddGroup
      let b := Basis.ofVectorSpace 𝕜 s
      have U : UniformEmbedding b.equivFun.symm.toEquiv := by
        have : Fintype.card (Basis.ofVectorSpaceIndex 𝕜 s) = n := by
          rw [← s_dim]
          exact (finrank_eq_card_basis b).symm
        have : Continuous b.equivFun := IH b this
        exact
          b.equivFun.symm.uniformEmbedding b.equivFun.symm.toLinearMap.continuous_on_pi this
      have : IsComplete (s : Set E) :=
        completeSpace_coe_iff_isComplete.1 ((completeSpace_congr U).1 (by infer_instance))
      exact this.isClosed
/-- This version imposes `ι` and `E` to live in the same universe, so you should instead use
`continuous_equivFun_basis` which gives the same result without universe restrictions. -/
private theorem continuous_equivFun_basis_aux [ht2 : T2Space E] {ι : Type v} [Fintype ι]
    (ξ : Basis ι 𝕜 E) : Continuous ξ.equivFun := by
  letI : UniformSpace E := TopologicalAddGroup.toUniformSpace E
  letI : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
  letI : SeparatedSpace E := separated_iff_t2.mpr ht2
  induction' hn : Fintype.card ι with n IH generalizing ι E
  · rw [Fintype.card_eq_zero_iff] at hn
    exact continuous_of_const fun x y => funext hn.elim
  · haveI : FiniteDimensional 𝕜 E := of_fintype_basis ξ
    -- first step: thanks to the induction hypothesis, any n-dimensional subspace is equivalent
    -- to a standard space of dimension n, hence it is complete and therefore closed.
    have H₁ : ∀ s : Submodule 𝕜 E, finrank 𝕜 s = n → IsClosed (s : Set E) := by
      

Proof state:
𝕜 : Type u
hnorm : NontriviallyNormedField 𝕜
F : Type w
inst✝¹⁶ : AddCommGroup F
inst✝¹⁵ : Module 𝕜 F
inst✝¹⁴ : TopologicalSpace F
inst✝¹³ : TopologicalAddGroup F
inst✝¹² : ContinuousSMul 𝕜 F
F' : Type x
inst✝¹¹ : AddCommGroup F'
inst✝¹⁰ : Module 𝕜 F'
inst✝⁹ : TopologicalSpace F'
inst✝⁸ : TopologicalAddGroup F'
inst✝⁷ : ContinuousSMul 𝕜 F'
inst✝⁶ : CompleteSpace 𝕜
n : ℕ
IH :
  ∀ {E : Type v} [inst : AddCommGroup E] [inst_1 : Module 𝕜 E] [inst_2 : TopologicalSpace E]
    [inst_3 : TopologicalAddGroup E] [inst_4 : ContinuousSMul 𝕜 E] [ht2 : T2Space E] {ι : Type v} [inst_5 : Fintype ι]
    (ξ : Basis ι 𝕜 E),
    let this := TopologicalAddGroup.toUniformSpace E;
    let this_1 := (_ : UniformAddGroup E);
    let this := (_ : SeparatedSpace E);
    Fintype.card ι = n → Continuous ⇑(Basis.equivFun ξ)
E : Type v
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : TopologicalSpace E
inst✝² : TopologicalAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
ht2 : T2Space E
ι : Type v
inst✝ : Fintype ι
ξ : Basis ι 𝕜 E
this✝² : UniformSpace E := TopologicalAddGroup.toUniformSpace E
this✝¹ : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
this✝ : SeparatedSpace E := separated_iff_t2.mpr ht2
hn : Fintype.card ι = Nat.succ n
this : FiniteDimensional 𝕜 E
⊢ ∀ (s : Submodule 𝕜 E), finrank 𝕜 ↥s = n → IsClosed ↑s

Next tactic:
intro s s_dim
/-- This version imposes `ι` and `E` to live in the same universe, so you should instead use
`continuous_equivFun_basis` which gives the same result without universe restrictions. -/
private theorem continuous_equivFun_basis_aux [ht2 : T2Space E] {ι : Type v} [Fintype ι]
    (ξ : Basis ι 𝕜 E) : Continuous ξ.equivFun := by
  letI : UniformSpace E := TopologicalAddGroup.toUniformSpace E
  letI : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
  letI : SeparatedSpace E := separated_iff_t2.mpr ht2
  induction' hn : Fintype.card ι with n IH generalizing ι E
  · rw [Fintype.card_eq_zero_iff] at hn
    exact continuous_of_const fun x y => funext hn.elim
  · haveI : FiniteDimensional 𝕜 E := of_fintype_basis ξ
    -- first step: thanks to the induction hypothesis, any n-dimensional subspace is equivalent
    -- to a standard space of dimension n, hence it is complete and therefore closed.
    have H₁ : ∀ s : Submodule 𝕜 E, finrank 𝕜 s = n → IsClosed (s : Set E) := by
      intro s s_dim
      

Proof state:
𝕜 : Type u
hnorm : NontriviallyNormedField 𝕜
F : Type w
inst✝¹⁶ : AddCommGroup F
inst✝¹⁵ : Module 𝕜 F
inst✝¹⁴ : TopologicalSpace F
inst✝¹³ : TopologicalAddGroup F
inst✝¹² : ContinuousSMul 𝕜 F
F' : Type x
inst✝¹¹ : AddCommGroup F'
inst✝¹⁰ : Module 𝕜 F'
inst✝⁹ : TopologicalSpace F'
inst✝⁸ : TopologicalAddGroup F'
inst✝⁷ : ContinuousSMul 𝕜 F'
inst✝⁶ : CompleteSpace 𝕜
n : ℕ
IH :
  ∀ {E : Type v} [inst : AddCommGroup E] [inst_1 : Module 𝕜 E] [inst_2 : TopologicalSpace E]
    [inst_3 : TopologicalAddGroup E] [inst_4 : ContinuousSMul 𝕜 E] [ht2 : T2Space E] {ι : Type v} [inst_5 : Fintype ι]
    (ξ : Basis ι 𝕜 E),
    let this := TopologicalAddGroup.toUniformSpace E;
    let this_1 := (_ : UniformAddGroup E);
    let this := (_ : SeparatedSpace E);
    Fintype.card ι = n → Continuous ⇑(Basis.equivFun ξ)
E : Type v
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : TopologicalSpace E
inst✝² : TopologicalAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
ht2 : T2Space E
ι : Type v
inst✝ : Fintype ι
ξ : Basis ι 𝕜 E
this✝² : UniformSpace E := TopologicalAddGroup.toUniformSpace E
this✝¹ : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
this✝ : SeparatedSpace E := separated_iff_t2.mpr ht2
hn : Fintype.card ι = Nat.succ n
this : FiniteDimensional 𝕜 E
s : Submodule 𝕜 E
s_dim : finrank 𝕜 ↥s = n
⊢ IsClosed ↑s

Next tactic:
letI : UniformAddGroup s := s.toAddSubgroup.uniformAddGroup
/-- This version imposes `ι` and `E` to live in the same universe, so you should instead use
`continuous_equivFun_basis` which gives the same result without universe restrictions. -/
private theorem continuous_equivFun_basis_aux [ht2 : T2Space E] {ι : Type v} [Fintype ι]
    (ξ : Basis ι 𝕜 E) : Continuous ξ.equivFun := by
  letI : UniformSpace E := TopologicalAddGroup.toUniformSpace E
  letI : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
  letI : SeparatedSpace E := separated_iff_t2.mpr ht2
  induction' hn : Fintype.card ι with n IH generalizing ι E
  · rw [Fintype.card_eq_zero_iff] at hn
    exact continuous_of_const fun x y => funext hn.elim
  · haveI : FiniteDimensional 𝕜 E := of_fintype_basis ξ
    -- first step: thanks to the induction hypothesis, any n-dimensional subspace is equivalent
    -- to a standard space of dimension n, hence it is complete and therefore closed.
    have H₁ : ∀ s : Submodule 𝕜 E, finrank 𝕜 s = n → IsClosed (s : Set E) := by
      intro s s_dim
      letI : UniformAddGroup s := s.toAddSubgroup.uniformAddGroup
      

Proof state:
𝕜 : Type u
hnorm : NontriviallyNormedField 𝕜
F : Type w
inst✝¹⁶ : AddCommGroup F
inst✝¹⁵ : Module 𝕜 F
inst✝¹⁴ : TopologicalSpace F
inst✝¹³ : TopologicalAddGroup F
inst✝¹² : ContinuousSMul 𝕜 F
F' : Type x
inst✝¹¹ : AddCommGroup F'
inst✝¹⁰ : Module 𝕜 F'
inst✝⁹ : TopologicalSpace F'
inst✝⁸ : TopologicalAddGroup F'
inst✝⁷ : ContinuousSMul 𝕜 F'
inst✝⁶ : CompleteSpace 𝕜
n : ℕ
IH :
  ∀ {E : Type v} [inst : AddCommGroup E] [inst_1 : Module 𝕜 E] [inst_2 : TopologicalSpace E]
    [inst_3 : TopologicalAddGroup E] [inst_4 : ContinuousSMul 𝕜 E] [ht2 : T2Space E] {ι : Type v} [inst_5 : Fintype ι]
    (ξ : Basis ι 𝕜 E),
    let this := TopologicalAddGroup.toUniformSpace E;
    let this_1 := (_ : UniformAddGroup E);
    let this := (_ : SeparatedSpace E);
    Fintype.card ι = n → Continuous ⇑(Basis.equivFun ξ)
E : Type v
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : TopologicalSpace E
inst✝² : TopologicalAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
ht2 : T2Space E
ι : Type v
inst✝ : Fintype ι
ξ : Basis ι 𝕜 E
this✝³ : UniformSpace E := TopologicalAddGroup.toUniformSpace E
this✝² : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
this✝¹ : SeparatedSpace E := separated_iff_t2.mpr ht2
hn : Fintype.card ι = Nat.succ n
this✝ : FiniteDimensional 𝕜 E
s : Submodule 𝕜 E
s_dim : finrank 𝕜 ↥s = n
this : UniformAddGroup ↥s := AddSubgroup.uniformAddGroup (Submodule.toAddSubgroup s)
⊢ IsClosed ↑s

Next tactic:
let b := Basis.ofVectorSpace 𝕜 s
/-- This version imposes `ι` and `E` to live in the same universe, so you should instead use
`continuous_equivFun_basis` which gives the same result without universe restrictions. -/
private theorem continuous_equivFun_basis_aux [ht2 : T2Space E] {ι : Type v} [Fintype ι]
    (ξ : Basis ι 𝕜 E) : Continuous ξ.equivFun := by
  letI : UniformSpace E := TopologicalAddGroup.toUniformSpace E
  letI : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
  letI : SeparatedSpace E := separated_iff_t2.mpr ht2
  induction' hn : Fintype.card ι with n IH generalizing ι E
  · rw [Fintype.card_eq_zero_iff] at hn
    exact continuous_of_const fun x y => funext hn.elim
  · haveI : FiniteDimensional 𝕜 E := of_fintype_basis ξ
    -- first step: thanks to the induction hypothesis, any n-dimensional subspace is equivalent
    -- to a standard space of dimension n, hence it is complete and therefore closed.
    have H₁ : ∀ s : Submodule 𝕜 E, finrank 𝕜 s = n → IsClosed (s : Set E) := by
      intro s s_dim
      letI : UniformAddGroup s := s.toAddSubgroup.uniformAddGroup
      let b := Basis.ofVectorSpace 𝕜 s
      

Proof state:
𝕜 : Type u
hnorm : NontriviallyNormedField 𝕜
F : Type w
inst✝¹⁶ : AddCommGroup F
inst✝¹⁵ : Module 𝕜 F
inst✝¹⁴ : TopologicalSpace F
inst✝¹³ : TopologicalAddGroup F
inst✝¹² : ContinuousSMul 𝕜 F
F' : Type x
inst✝¹¹ : AddCommGroup F'
inst✝¹⁰ : Module 𝕜 F'
inst✝⁹ : TopologicalSpace F'
inst✝⁸ : TopologicalAddGroup F'
inst✝⁷ : ContinuousSMul 𝕜 F'
inst✝⁶ : CompleteSpace 𝕜
n : ℕ
IH :
  ∀ {E : Type v} [inst : AddCommGroup E] [inst_1 : Module 𝕜 E] [inst_2 : TopologicalSpace E]
    [inst_3 : TopologicalAddGroup E] [inst_4 : ContinuousSMul 𝕜 E] [ht2 : T2Space E] {ι : Type v} [inst_5 : Fintype ι]
    (ξ : Basis ι 𝕜 E),
    let this := TopologicalAddGroup.toUniformSpace E;
    let this_1 := (_ : UniformAddGroup E);
    let this := (_ : SeparatedSpace E);
    Fintype.card ι = n → Continuous ⇑(Basis.equivFun ξ)
E : Type v
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : TopologicalSpace E
inst✝² : TopologicalAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
ht2 : T2Space E
ι : Type v
inst✝ : Fintype ι
ξ : Basis ι 𝕜 E
this✝³ : UniformSpace E := TopologicalAddGroup.toUniformSpace E
this✝² : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
this✝¹ : SeparatedSpace E := separated_iff_t2.mpr ht2
hn : Fintype.card ι = Nat.succ n
this✝ : FiniteDimensional 𝕜 E
s : Submodule 𝕜 E
s_dim : finrank 𝕜 ↥s = n
this : UniformAddGroup ↥s := AddSubgroup.uniformAddGroup (Submodule.toAddSubgroup s)
b : Basis (↑(Basis.ofVectorSpaceIndex 𝕜 ↥s)) 𝕜 ↥s := Basis.ofVectorSpace 𝕜 ↥s
⊢ IsClosed ↑s

Next tactic:
have U : UniformEmbedding b.equivFun.symm.toEquiv := by
        have : Fintype.card (Basis.ofVectorSpaceIndex 𝕜 s) = n := by
          rw [← s_dim]
          exact (finrank_eq_card_basis b).symm
        have : Continuous b.equivFun := IH b this
        exact
          b.equivFun.symm.uniformEmbedding b.equivFun.symm.toLinearMap.continuous_on_pi this
/-- This version imposes `ι` and `E` to live in the same universe, so you should instead use
`continuous_equivFun_basis` which gives the same result without universe restrictions. -/
private theorem continuous_equivFun_basis_aux [ht2 : T2Space E] {ι : Type v} [Fintype ι]
    (ξ : Basis ι 𝕜 E) : Continuous ξ.equivFun := by
  letI : UniformSpace E := TopologicalAddGroup.toUniformSpace E
  letI : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
  letI : SeparatedSpace E := separated_iff_t2.mpr ht2
  induction' hn : Fintype.card ι with n IH generalizing ι E
  · rw [Fintype.card_eq_zero_iff] at hn
    exact continuous_of_const fun x y => funext hn.elim
  · haveI : FiniteDimensional 𝕜 E := of_fintype_basis ξ
    -- first step: thanks to the induction hypothesis, any n-dimensional subspace is equivalent
    -- to a standard space of dimension n, hence it is complete and therefore closed.
    have H₁ : ∀ s : Submodule 𝕜 E, finrank 𝕜 s = n → IsClosed (s : Set E) := by
      intro s s_dim
      letI : UniformAddGroup s := s.toAddSubgroup.uniformAddGroup
      let b := Basis.ofVectorSpace 𝕜 s
      have U : UniformEmbedding b.equivFun.symm.toEquiv := by
        

Proof state:
𝕜 : Type u
hnorm : NontriviallyNormedField 𝕜
F : Type w
inst✝¹⁶ : AddCommGroup F
inst✝¹⁵ : Module 𝕜 F
inst✝¹⁴ : TopologicalSpace F
inst✝¹³ : TopologicalAddGroup F
inst✝¹² : ContinuousSMul 𝕜 F
F' : Type x
inst✝¹¹ : AddCommGroup F'
inst✝¹⁰ : Module 𝕜 F'
inst✝⁹ : TopologicalSpace F'
inst✝⁸ : TopologicalAddGroup F'
inst✝⁷ : ContinuousSMul 𝕜 F'
inst✝⁶ : CompleteSpace 𝕜
n : ℕ
IH :
  ∀ {E : Type v} [inst : AddCommGroup E] [inst_1 : Module 𝕜 E] [inst_2 : TopologicalSpace E]
    [inst_3 : TopologicalAddGroup E] [inst_4 : ContinuousSMul 𝕜 E] [ht2 : T2Space E] {ι : Type v} [inst_5 : Fintype ι]
    (ξ : Basis ι 𝕜 E),
    let this := TopologicalAddGroup.toUniformSpace E;
    let this_1 := (_ : UniformAddGroup E);
    let this := (_ : SeparatedSpace E);
    Fintype.card ι = n → Continuous ⇑(Basis.equivFun ξ)
E : Type v
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : TopologicalSpace E
inst✝² : TopologicalAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
ht2 : T2Space E
ι : Type v
inst✝ : Fintype ι
ξ : Basis ι 𝕜 E
this✝³ : UniformSpace E := TopologicalAddGroup.toUniformSpace E
this✝² : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
this✝¹ : SeparatedSpace E := separated_iff_t2.mpr ht2
hn : Fintype.card ι = Nat.succ n
this✝ : FiniteDimensional 𝕜 E
s : Submodule 𝕜 E
s_dim : finrank 𝕜 ↥s = n
this : UniformAddGroup ↥s := AddSubgroup.uniformAddGroup (Submodule.toAddSubgroup s)
b : Basis (↑(Basis.ofVectorSpaceIndex 𝕜 ↥s)) 𝕜 ↥s := Basis.ofVectorSpace 𝕜 ↥s
⊢ UniformEmbedding ⇑(LinearEquiv.toEquiv (LinearEquiv.symm (Basis.equivFun b)))

Next tactic:
have : Fintype.card (Basis.ofVectorSpaceIndex 𝕜 s) = n := by
          rw [← s_dim]
          exact (finrank_eq_card_basis b).symm
/-- This version imposes `ι` and `E` to live in the same universe, so you should instead use
`continuous_equivFun_basis` which gives the same result without universe restrictions. -/
private theorem continuous_equivFun_basis_aux [ht2 : T2Space E] {ι : Type v} [Fintype ι]
    (ξ : Basis ι 𝕜 E) : Continuous ξ.equivFun := by
  letI : UniformSpace E := TopologicalAddGroup.toUniformSpace E
  letI : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
  letI : SeparatedSpace E := separated_iff_t2.mpr ht2
  induction' hn : Fintype.card ι with n IH generalizing ι E
  · rw [Fintype.card_eq_zero_iff] at hn
    exact continuous_of_const fun x y => funext hn.elim
  · haveI : FiniteDimensional 𝕜 E := of_fintype_basis ξ
    -- first step: thanks to the induction hypothesis, any n-dimensional subspace is equivalent
    -- to a standard space of dimension n, hence it is complete and therefore closed.
    have H₁ : ∀ s : Submodule 𝕜 E, finrank 𝕜 s = n → IsClosed (s : Set E) := by
      intro s s_dim
      letI : UniformAddGroup s := s.toAddSubgroup.uniformAddGroup
      let b := Basis.ofVectorSpace 𝕜 s
      have U : UniformEmbedding b.equivFun.symm.toEquiv := by
        have : Fintype.card (Basis.ofVectorSpaceIndex 𝕜 s) = n := by
          

Proof state:
𝕜 : Type u
hnorm : NontriviallyNormedField 𝕜
F : Type w
inst✝¹⁶ : AddCommGroup F
inst✝¹⁵ : Module 𝕜 F
inst✝¹⁴ : TopologicalSpace F
inst✝¹³ : TopologicalAddGroup F
inst✝¹² : ContinuousSMul 𝕜 F
F' : Type x
inst✝¹¹ : AddCommGroup F'
inst✝¹⁰ : Module 𝕜 F'
inst✝⁹ : TopologicalSpace F'
inst✝⁸ : TopologicalAddGroup F'
inst✝⁷ : ContinuousSMul 𝕜 F'
inst✝⁶ : CompleteSpace 𝕜
n : ℕ
IH :
  ∀ {E : Type v} [inst : AddCommGroup E] [inst_1 : Module 𝕜 E] [inst_2 : TopologicalSpace E]
    [inst_3 : TopologicalAddGroup E] [inst_4 : ContinuousSMul 𝕜 E] [ht2 : T2Space E] {ι : Type v} [inst_5 : Fintype ι]
    (ξ : Basis ι 𝕜 E),
    let this := TopologicalAddGroup.toUniformSpace E;
    let this_1 := (_ : UniformAddGroup E);
    let this := (_ : SeparatedSpace E);
    Fintype.card ι = n → Continuous ⇑(Basis.equivFun ξ)
E : Type v
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : TopologicalSpace E
inst✝² : TopologicalAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
ht2 : T2Space E
ι : Type v
inst✝ : Fintype ι
ξ : Basis ι 𝕜 E
this✝³ : UniformSpace E := TopologicalAddGroup.toUniformSpace E
this✝² : UniformAddGroup E := comm_topologicalAddGroup_is_uniform
this✝¹ : SeparatedSpace E := separated_iff_t2.mpr ht2
hn : Fintype.card ι = Nat.succ n
this✝ : FiniteDimensional 𝕜 E
s : Submodule 𝕜 E
s_dim : finrank 𝕜 ↥s = n
this : UniformAddGroup ↥s := AddSubgroup.uniformAddGroup (Submodule.toAddSubgroup s)
b : Basis (↑(Basis.ofVectorSpaceIndex 𝕜 ↥s)) 𝕜 ↥s := Basis.ofVectorSpace 𝕜 ↥s
⊢ Fintype.card ↑(Basis.ofVectorSpaceIndex 𝕜 ↥s) = n

Next tactic:
rw [← s_dim]