-- Mathlib/Analysis/LocallyConvex/Barrelled.lean
theorem Seminorm.continuous_iSup
    {ι : Sort*} {𝕜 E : Type*} [NormedField 𝕜]  [AddCommGroup E] [Module 𝕜 E]
    [TopologicalSpace E] [BarrelledSpace 𝕜 E] (p : ι → Seminorm 𝕜 E)
    (hp : ∀ i, Continuous (p i)) (bdd : BddAbove (range p)) :
    Continuous (⨆ i, p i)

Proof state:
ι : Sort u_1
𝕜 : Type u_2
E : Type u_3
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : TopologicalSpace E
inst✝ : BarrelledSpace 𝕜 E
p : ι → Seminorm 𝕜 E
hp : ∀ (i : ι), Continuous ⇑(p i)
bdd : BddAbove (range p)
⊢ LowerSemicontinuous (⨆ i, ⇑(p i))

Tactic:
rw [Seminorm.bddAbove_range_iff] at bdd

Result:
ι : Sort u_1
𝕜 : Type u_2
E : Type u_3
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : TopologicalSpace E
inst✝ : BarrelledSpace 𝕜 E
p : ι → Seminorm 𝕜 E
hp : ∀ (i : ι), Continuous ⇑(p i)
bdd : ∀ (x : E), BddAbove (range fun i => (p i) x)
⊢ LowerSemicontinuous (⨆ i, ⇑(p i))

Proof state:
case h.e'_5.h
ι : Sort u_1
𝕜 : Type u_2
E : Type u_3
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : TopologicalSpace E
inst✝ : BarrelledSpace 𝕜 E
p : ι → Seminorm 𝕜 E
hp : ∀ (i : ι), Continuous ⇑(p i)
bdd : ∀ (x : E), BddAbove (range fun i => (p i) x)
x✝ : E
⊢ (⨆ i, ⇑(p i)) x✝ = ⨆ i, (p i) x✝

Tactic:
exact iSup_apply

Result:
no goals

Proof state:
ι : Sort u_1
𝕜 : Type u_2
E : Type u_3
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : TopologicalSpace E
inst✝ : BarrelledSpace 𝕜 E
p : ι → Seminorm 𝕜 E
hp : ∀ (i : ι), Continuous ⇑(p i)
bdd : ∀ (x : E), BddAbove (range fun i => (p i) x)
⊢ LowerSemicontinuous (⨆ i, ⇑(p i))

Tactic:
convert lowerSemicontinuous_ciSup (f := fun i x ↦ p i x) bdd (fun i ↦ (hp i).lowerSemicontinuous)

Result:
case h.e'_5.h
ι : Sort u_1
𝕜 : Type u_2
E : Type u_3
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : TopologicalSpace E
inst✝ : BarrelledSpace 𝕜 E
p : ι → Seminorm 𝕜 E
hp : ∀ (i : ι), Continuous ⇑(p i)
bdd : ∀ (x : E), BddAbove (range fun i => (p i) x)
x✝ : E
⊢ (⨆ i, ⇑(p i)) x✝ = ⨆ i, (p i) x✝

Proof state:
ι : Sort u_1
𝕜 : Type u_2
E : Type u_3
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : TopologicalSpace E
inst✝ : BarrelledSpace 𝕜 E
p : ι → Seminorm 𝕜 E
hp : ∀ (i : ι), Continuous ⇑(p i)
bdd : BddAbove (range p)
⊢ Continuous ⇑(⨆ i, p i)

Tactic:
refine Seminorm.continuous_of_lowerSemicontinuous _ ?_

Result:
ι : Sort u_1
𝕜 : Type u_2
E : Type u_3
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : TopologicalSpace E
inst✝ : BarrelledSpace 𝕜 E
p : ι → Seminorm 𝕜 E
hp : ∀ (i : ι), Continuous ⇑(p i)
bdd : BddAbove (range p)
⊢ LowerSemicontinuous ⇑(⨆ i, p i)

Proof state:
ι : Sort u_1
𝕜 : Type u_2
E : Type u_3
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : TopologicalSpace E
inst✝ : BarrelledSpace 𝕜 E
p : ι → Seminorm 𝕜 E
hp : ∀ (i : ι), Continuous ⇑(p i)
bdd : BddAbove (range p)
⊢ Continuous (⨆ i, ⇑(p i))

Tactic:
rw [← Seminorm.coe_iSup_eq bdd]

Result:
ι : Sort u_1
𝕜 : Type u_2
E : Type u_3
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : TopologicalSpace E
inst✝ : BarrelledSpace 𝕜 E
p : ι → Seminorm 𝕜 E
hp : ∀ (i : ι), Continuous ⇑(p i)
bdd : BddAbove (range p)
⊢ Continuous ⇑(⨆ i, p i)

Proof state:
ι : Sort u_1
𝕜 : Type u_2
E : Type u_3
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : TopologicalSpace E
inst✝ : BarrelledSpace 𝕜 E
p : ι → Seminorm 𝕜 E
hp : ∀ (i : ι), Continuous ⇑(p i)
bdd : BddAbove (range p)
⊢ LowerSemicontinuous ⇑(⨆ i, p i)

Tactic:
rw [Seminorm.coe_iSup_eq bdd]

Result:
ι : Sort u_1
𝕜 : Type u_2
E : Type u_3
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : TopologicalSpace E
inst✝ : BarrelledSpace 𝕜 E
p : ι → Seminorm 𝕜 E
hp : ∀ (i : ι), Continuous ⇑(p i)
bdd : BddAbove (range p)
⊢ LowerSemicontinuous (⨆ i, ⇑(p i))