Theorem: ContinuousMultilinearMap.completeSpace
File: Mathlib/Topology/Algebra/Module/Multilinear/Topology.lean

tactic: have H : ∀ {m : Π i, E i},
    Continuous fun f : (Π i, E i) →ᵤ[{s | IsVonNBounded 𝕜 s}] F ↦ toFun _ f m :=
  (uniformContinuous_eval (isVonNBounded_covers) _).continuous
state_before: 𝕜 : Type u_1
ι : Type u_2
E : ι → Type u_3
F : Type u_4
inst✝¹¹ : NormedField 𝕜
inst✝¹⁰ : (i : ι) → TopologicalSpace (E i)
inst✝⁹ : (i : ι) → AddCommGroup (E i)
inst✝⁸ : (i : ι) → Module 𝕜 (E i)
inst✝⁷ : AddCommGroup F
inst✝⁶ : Module 𝕜 F
inst✝⁵ : UniformSpace F
inst✝⁴ : UniformAddGroup F
inst✝³ : ∀ (i : ι), ContinuousSMul 𝕜 (E i)
inst✝² : ContinuousConstSMul 𝕜 F
inst✝¹ : CompleteSpace F
inst✝ : T2Space F
h : RestrictGenTopology {s | IsVonNBounded 𝕜 s}
⊢ CompleteSpace (ContinuousMultilinearMap 𝕜 E F)
state_after: 𝕜 : Type u_1
ι : Type u_2
E : ι → Type u_3
F : Type u_4
inst✝¹¹ : NormedField 𝕜
inst✝¹⁰ : (i : ι) → TopologicalSpace (E i)
inst✝⁹ : (i : ι) → AddCommGroup (E i)
inst✝⁸ : (i : ι) → Module 𝕜 (E i)
inst✝⁷ : AddCommGroup F
inst✝⁶ : Module 𝕜 F
inst✝⁵ : UniformSpace F
inst✝⁴ : UniformAddGroup F
inst✝³ : ∀ (i : ι), ContinuousSMul 𝕜 (E i)
inst✝² : ContinuousConstSMul 𝕜 F
inst✝¹ : CompleteSpace F
inst✝ : T2Space F
h : RestrictGenTopology {s | IsVonNBounded 𝕜 s}
H : ∀ {m : (i : ι) → E i}, Continuous fun f => (toFun {s | IsVonNBounded 𝕜 s}) f m
⊢ CompleteSpace (ContinuousMultilinearMap 𝕜 E F)

tactic: rw [completeSpace_iff_isComplete_range uniformEmbedding_toUniformOnFun.toUniformInducing,
  range_toUniformOnFun]
state_before: 𝕜 : Type u_1
ι : Type u_2
E : ι → Type u_3
F : Type u_4
inst✝¹¹ : NormedField 𝕜
inst✝¹⁰ : (i : ι) → TopologicalSpace (E i)
inst✝⁹ : (i : ι) → AddCommGroup (E i)
inst✝⁸ : (i : ι) → Module 𝕜 (E i)
inst✝⁷ : AddCommGroup F
inst✝⁶ : Module 𝕜 F
inst✝⁵ : UniformSpace F
inst✝⁴ : UniformAddGroup F
inst✝³ : ∀ (i : ι), ContinuousSMul 𝕜 (E i)
inst✝² : ContinuousConstSMul 𝕜 F
inst✝¹ : CompleteSpace F
inst✝ : T2Space F
h : RestrictGenTopology {s | IsVonNBounded 𝕜 s}
H : ∀ {m : (i : ι) → E i}, Continuous fun f => (toFun {s | IsVonNBounded 𝕜 s}) f m
⊢ CompleteSpace (ContinuousMultilinearMap 𝕜 E F)
state_after: 𝕜 : Type u_1
ι : Type u_2
E : ι → Type u_3
F : Type u_4
inst✝¹¹ : NormedField 𝕜
inst✝¹⁰ : (i : ι) → TopologicalSpace (E i)
inst✝⁹ : (i : ι) → AddCommGroup (E i)
inst✝⁸ : (i : ι) → Module 𝕜 (E i)
inst✝⁷ : AddCommGroup F
inst✝⁶ : Module 𝕜 F
inst✝⁵ : UniformSpace F
inst✝⁴ : UniformAddGroup F
inst✝³ : ∀ (i : ι), ContinuousSMul 𝕜 (E i)
inst✝² : ContinuousConstSMul 𝕜 F
inst✝¹ : CompleteSpace F
inst✝ : T2Space F
h : RestrictGenTopology {s | IsVonNBounded 𝕜 s}
H : ∀ {m : (i : ι) → E i}, Continuous fun f => (toFun {s | IsVonNBounded 𝕜 s}) f m
⊢ IsComplete
    {f |
      Continuous ((toFun {s | IsVonNBounded 𝕜 s}) f) ∧
        (∀ (m : (i : ι) → E i) (i : ι) (x y : E i),
            (toFun {s | IsVonNBounded 𝕜 s}) f (update m i (x + y)) =
              (toFun {s | IsVonNBounded 𝕜 s}) f (update m i x) + (toFun {s | IsVonNBounded 𝕜 s}) f (update m i y)) ∧
          ∀ (m : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
            (toFun {s | IsVonNBounded 𝕜 s}) f (update m i (c • x)) =
              c • (toFun {s | IsVonNBounded 𝕜 s}) f (update m i x)}

tactic: simp only [setOf_and, setOf_forall]
state_before: 𝕜 : Type u_1
ι : Type u_2
E : ι → Type u_3
F : Type u_4
inst✝¹¹ : NormedField 𝕜
inst✝¹⁰ : (i : ι) → TopologicalSpace (E i)
inst✝⁹ : (i : ι) → AddCommGroup (E i)
inst✝⁸ : (i : ι) → Module 𝕜 (E i)
inst✝⁷ : AddCommGroup F
inst✝⁶ : Module 𝕜 F
inst✝⁵ : UniformSpace F
inst✝⁴ : UniformAddGroup F
inst✝³ : ∀ (i : ι), ContinuousSMul 𝕜 (E i)
inst✝² : ContinuousConstSMul 𝕜 F
inst✝¹ : CompleteSpace F
inst✝ : T2Space F
h : RestrictGenTopology {s | IsVonNBounded 𝕜 s}
H : ∀ {m : (i : ι) → E i}, Continuous fun f => (toFun {s | IsVonNBounded 𝕜 s}) f m
⊢ IsComplete
    {f |
      Continuous ((toFun {s | IsVonNBounded 𝕜 s}) f) ∧
        (∀ (m : (i : ι) → E i) (i : ι) (x y : E i),
            (toFun {s | IsVonNBounded 𝕜 s}) f (update m i (x + y)) =
              (toFun {s | IsVonNBounded 𝕜 s}) f (update m i x) + (toFun {s | IsVonNBounded 𝕜 s}) f (update m i y)) ∧
          ∀ (m : (i : ι) → E i) (i : ι) (c : 𝕜) (x : E i),
            (toFun {s | IsVonNBounded 𝕜 s}) f (update m i (c • x)) =
              c • (toFun {s | IsVonNBounded 𝕜 s}) f (update m i x)}
state_after: 𝕜 : Type u_1
ι : Type u_2
E : ι → Type u_3
F : Type u_4
inst✝¹¹ : NormedField 𝕜
inst✝¹⁰ : (i : ι) → TopologicalSpace (E i)
inst✝⁹ : (i : ι) → AddCommGroup (E i)
inst✝⁸ : (i : ι) → Module 𝕜 (E i)
inst✝⁷ : AddCommGroup F
inst✝⁶ : Module 𝕜 F
inst✝⁵ : UniformSpace F
inst✝⁴ : UniformAddGroup F
inst✝³ : ∀ (i : ι), ContinuousSMul 𝕜 (E i)
inst✝² : ContinuousConstSMul 𝕜 F
inst✝¹ : CompleteSpace F
inst✝ : T2Space F
h : RestrictGenTopology {s | IsVonNBounded 𝕜 s}
H : ∀ {m : (i : ι) → E i}, Continuous fun f => (toFun {s | IsVonNBounded 𝕜 s}) f m
⊢ IsComplete
    ({a | Continuous ((toFun {s | IsVonNBounded 𝕜 s}) a)} ∩
      ((⋂ i,
          ⋂ i_1,
            ⋂ i_2,
              ⋂ i_3,
                {x |
                  (toFun {s | IsVonNBounded 𝕜 s}) x (update i i_1 (i_2 + i_3)) =
                    (toFun {s | IsVonNBounded 𝕜 s}) x (update i i_1 i_2) +
                      (toFun {s | IsVonNBounded 𝕜 s}) x (update i i_1 i_3)}) ∩
        ⋂ i,
          ⋂ i_1,
            ⋂ i_2,
              ⋂ i_3,
                {x |
                  (toFun {s | IsVonNBounded 𝕜 s}) x (update i i_1 (i_2 • i_3)) =
                    i_2 • (toFun {s | IsVonNBounded 𝕜 s}) x (update i i_1 i_3)}))

tactic: apply_rules [IsClosed.isComplete, IsClosed.inter]
state_before: 𝕜 : Type u_1
ι : Type u_2
E : ι → Type u_3
F : Type u_4
inst✝¹¹ : NormedField 𝕜
inst✝¹⁰ : (i : ι) → TopologicalSpace (E i)
inst✝⁹ : (i : ι) → AddCommGroup (E i)
inst✝⁸ : (i : ι) → Module 𝕜 (E i)
inst✝⁷ : AddCommGroup F
inst✝⁶ : Module 𝕜 F
inst✝⁵ : UniformSpace F
inst✝⁴ : UniformAddGroup F
inst✝³ : ∀ (i : ι), ContinuousSMul 𝕜 (E i)
inst✝² : ContinuousConstSMul 𝕜 F
inst✝¹ : CompleteSpace F
inst✝ : T2Space F
h : RestrictGenTopology {s | IsVonNBounded 𝕜 s}
H : ∀ {m : (i : ι) → E i}, Continuous fun f => (toFun {s | IsVonNBounded 𝕜 s}) f m
⊢ IsComplete
    ({a | Continuous ((toFun {s | IsVonNBounded 𝕜 s}) a)} ∩
      ((⋂ i,
          ⋂ i_1,
            ⋂ i_2,
              ⋂ i_3,
                {x |
                  (toFun {s | IsVonNBounded 𝕜 s}) x (update i i_1 (i_2 + i_3)) =
                    (toFun {s | IsVonNBounded 𝕜 s}) x (update i i_1 i_2) +
                      (toFun {s | IsVonNBounded 𝕜 s}) x (update i i_1 i_3)}) ∩
        ⋂ i,
          ⋂ i_1,
            ⋂ i_2,
              ⋂ i_3,
                {x |
                  (toFun {s | IsVonNBounded 𝕜 s}) x (update i i_1 (i_2 • i_3)) =
                    i_2 • (toFun {s | IsVonNBounded 𝕜 s}) x (update i i_1 i_3)}))
state_after: case h₁
𝕜 : Type u_1
ι : Type u_2
E : ι → Type u_3
F : Type u_4
inst✝¹¹ : NormedField 𝕜
inst✝¹⁰ : (i : ι) → TopologicalSpace (E i)
inst✝⁹ : (i : ι) → AddCommGroup (E i)
inst✝⁸ : (i : ι) → Module 𝕜 (E i)
inst✝⁷ : AddCommGroup F
inst✝⁶ : Module 𝕜 F
inst✝⁵ : UniformSpace F
inst✝⁴ : UniformAddGroup F
inst✝³ : ∀ (i : ι), ContinuousSMul 𝕜 (E i)
inst✝² : ContinuousConstSMul 𝕜 F
inst✝¹ : CompleteSpace F
inst✝ : T2Space F
h : RestrictGenTopology {s | IsVonNBounded 𝕜 s}
H : ∀ {m : (i : ι) → E i}, Continuous fun f => (toFun {s | IsVonNBounded 𝕜 s}) f m
⊢ IsClosed {a | Continuous ((toFun {s | IsVonNBounded 𝕜 s}) a)}

case h₂.h₁
𝕜 : Type u_1
ι : Type u_2
E : ι → Type u_3
F : Type u_4
inst✝¹¹ : NormedField 𝕜
inst✝¹⁰ : (i : ι) → TopologicalSpace (E i)
inst✝⁹ : (i : ι) → AddCommGroup (E i)
inst✝⁸ : (i : ι) → Module 𝕜 (E i)
inst✝⁷ : AddCommGroup F
inst✝⁶ : Module 𝕜 F
inst✝⁵ : UniformSpace F
inst✝⁴ : UniformAddGroup F
inst✝³ : ∀ (i : ι), ContinuousSMul 𝕜 (E i)
inst✝² : ContinuousConstSMul 𝕜 F
inst✝¹ : CompleteSpace F
inst✝ : T2Space F
h : RestrictGenTopology {s | IsVonNBounded 𝕜 s}
H : ∀ {m : (i : ι) → E i}, Continuous fun f => (toFun {s | IsVonNBounded 𝕜 s}) f m
⊢ IsClosed
    (⋂ i,
      ⋂ i_1,
        ⋂ i_2,
          ⋂ i_3,
            {x |
              (toFun {s | IsVonNBounded 𝕜 s}) x (update i i_1 (i_2 + i_3)) =
                (toFun {s | IsVonNBounded 𝕜 s}) x (update i i_1 i_2) +
                  (toFun {s | IsVonNBounded 𝕜 s}) x (update i i_1 i_3)})

case h₂.h₂
𝕜 : Type u_1
ι : Type u_2
E : ι → Type u_3
F : Type u_4
inst✝¹¹ : NormedField 𝕜
inst✝¹⁰ : (i : ι) → TopologicalSpace (E i)
inst✝⁹ : (i : ι) → AddCommGroup (E i)
inst✝⁸ : (i : ι) → Module 𝕜 (E i)
inst✝⁷ : AddCommGroup F
inst✝⁶ : Module 𝕜 F
inst✝⁵ : UniformSpace F
inst✝⁴ : UniformAddGroup F
inst✝³ : ∀ (i : ι), ContinuousSMul 𝕜 (E i)
inst✝² : ContinuousConstSMul 𝕜 F
inst✝¹ : CompleteSpace F
inst✝ : T2Space F
h : RestrictGenTopology {s | IsVonNBounded 𝕜 s}
H : ∀ {m : (i : ι) → E i}, Continuous fun f => (toFun {s | IsVonNBounded 𝕜 s}) f m
⊢ IsClosed
    (⋂ i,
      ⋂ i_1,
        ⋂ i_2,
          ⋂ i_3,
            {x |
              (toFun {s | IsVonNBounded 𝕜 s}) x (update i i_1 (i_2 • i_3)) =
                i_2 • (toFun {s | IsVonNBounded 𝕜 s}) x (update i i_1 i_3)})

tactic: exact UniformOnFun.isClosed_setOf_continuous h
state_before: case h₁
𝕜 : Type u_1
ι : Type u_2
E : ι → Type u_3
F : Type u_4
inst✝¹¹ : NormedField 𝕜
inst✝¹⁰ : (i : ι) → TopologicalSpace (E i)
inst✝⁹ : (i : ι) → AddCommGroup (E i)
inst✝⁸ : (i : ι) → Module 𝕜 (E i)
inst✝⁷ : AddCommGroup F
inst✝⁶ : Module 𝕜 F
inst✝⁵ : UniformSpace F
inst✝⁴ : UniformAddGroup F
inst✝³ : ∀ (i : ι), ContinuousSMul 𝕜 (E i)
inst✝² : ContinuousConstSMul 𝕜 F
inst✝¹ : CompleteSpace F
inst✝ : T2Space F
h : RestrictGenTopology {s | IsVonNBounded 𝕜 s}
H : ∀ {m : (i : ι) → E i}, Continuous fun f => (toFun {s | IsVonNBounded 𝕜 s}) f m
⊢ IsClosed {a | Continuous ((toFun {s | IsVonNBounded 𝕜 s}) a)}
state_after: no goals

tactic: exact isClosed_iInter fun m ↦ isClosed_iInter fun i ↦
  isClosed_iInter fun x ↦ isClosed_iInter fun y ↦ isClosed_eq H (H.add H)
state_before: case h₂.h₁
𝕜 : Type u_1
ι : Type u_2
E : ι → Type u_3
F : Type u_4
inst✝¹¹ : NormedField 𝕜
inst✝¹⁰ : (i : ι) → TopologicalSpace (E i)
inst✝⁹ : (i : ι) → AddCommGroup (E i)
inst✝⁸ : (i : ι) → Module 𝕜 (E i)
inst✝⁷ : AddCommGroup F
inst✝⁶ : Module 𝕜 F
inst✝⁵ : UniformSpace F
inst✝⁴ : UniformAddGroup F
inst✝³ : ∀ (i : ι), ContinuousSMul 𝕜 (E i)
inst✝² : ContinuousConstSMul 𝕜 F
inst✝¹ : CompleteSpace F
inst✝ : T2Space F
h : RestrictGenTopology {s | IsVonNBounded 𝕜 s}
H : ∀ {m : (i : ι) → E i}, Continuous fun f => (toFun {s | IsVonNBounded 𝕜 s}) f m
⊢ IsClosed
    (⋂ i,
      ⋂ i_1,
        ⋂ i_2,
          ⋂ i_3,
            {x |
              (toFun {s | IsVonNBounded 𝕜 s}) x (update i i_1 (i_2 + i_3)) =
                (toFun {s | IsVonNBounded 𝕜 s}) x (update i i_1 i_2) +
                  (toFun {s | IsVonNBounded 𝕜 s}) x (update i i_1 i_3)})
state_after: no goals

tactic: exact isClosed_iInter fun m ↦ isClosed_iInter fun i ↦
  isClosed_iInter fun c ↦ isClosed_iInter fun x ↦ isClosed_eq H (H.const_smul _)
state_before: case h₂.h₂
𝕜 : Type u_1
ι : Type u_2
E : ι → Type u_3
F : Type u_4
inst✝¹¹ : NormedField 𝕜
inst✝¹⁰ : (i : ι) → TopologicalSpace (E i)
inst✝⁹ : (i : ι) → AddCommGroup (E i)
inst✝⁸ : (i : ι) → Module 𝕜 (E i)
inst✝⁷ : AddCommGroup F
inst✝⁶ : Module 𝕜 F
inst✝⁵ : UniformSpace F
inst✝⁴ : UniformAddGroup F
inst✝³ : ∀ (i : ι), ContinuousSMul 𝕜 (E i)
inst✝² : ContinuousConstSMul 𝕜 F
inst✝¹ : CompleteSpace F
inst✝ : T2Space F
h : RestrictGenTopology {s | IsVonNBounded 𝕜 s}
H : ∀ {m : (i : ι) → E i}, Continuous fun f => (toFun {s | IsVonNBounded 𝕜 s}) f m
⊢ IsClosed
    (⋂ i,
      ⋂ i_1,
        ⋂ i_2,
          ⋂ i_3,
            {x |
              (toFun {s | IsVonNBounded 𝕜 s}) x (update i i_1 (i_2 • i_3)) =
                i_2 • (toFun {s | IsVonNBounded 𝕜 s}) x (update i i_1 i_3)})
state_after: no goals