Theorem: WithSeminorms.isVonNBounded_iff_seminorm_bounded
File: Mathlib/Analysis/LocallyConvex/WithSeminorms.lean

tactic: rw [hp.isVonNBounded_iff_finset_seminorm_bounded]
state_before: 𝕜 : Type u_2
𝕜₂ : Type ?u.478584
𝕝 : Type ?u.478587
𝕝₂ : Type ?u.478590
E : Type u_1
F : Type ?u.478596
G : Type ?u.478599
ι : Type u_3
ι' : Type ?u.478605
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
p : SeminormFamily 𝕜 E ι
inst✝ : TopologicalSpace E
s : Set E
hp : WithSeminorms p
⊢ Bornology.IsVonNBounded 𝕜 s ↔ ∀ (i : ι), ∃ r, r > 0 ∧ ∀ (x : E), x ∈ s → ↑(p i) x < r

tactic: constructor
state_before: 𝕜 : Type u_2
𝕜₂ : Type ?u.478584
𝕝 : Type ?u.478587
𝕝₂ : Type ?u.478590
E : Type u_1
F : Type ?u.478596
G : Type ?u.478599
ι : Type u_3
ι' : Type ?u.478605
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
p : SeminormFamily 𝕜 E ι
inst✝ : TopologicalSpace E
s : Set E
hp : WithSeminorms p
⊢ (∀ (I : Finset ι), ∃ r, r > 0 ∧ ∀ (x : E), x ∈ s → ↑(Finset.sup I p) x < r) ↔
    ∀ (i : ι), ∃ r, r > 0 ∧ ∀ (x : E), x ∈ s → ↑(p i) x < r

tactic: intro hi I
state_before: case mpr
𝕜 : Type u_2
𝕜₂ : Type ?u.478584
𝕝 : Type ?u.478587
𝕝₂ : Type ?u.478590
E : Type u_1
F : Type ?u.478596
G : Type ?u.478599
ι : Type u_3
ι' : Type ?u.478605
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
p : SeminormFamily 𝕜 E ι
inst✝ : TopologicalSpace E
s : Set E
hp : WithSeminorms p
⊢ (∀ (i : ι), ∃ r, r > 0 ∧ ∀ (x : E), x ∈ s → ↑(p i) x < r) →
    ∀ (I : Finset ι), ∃ r, r > 0 ∧ ∀ (x : E), x ∈ s → ↑(Finset.sup I p) x < r

tactic: by_cases hI : I.Nonempty
state_before: case mpr
𝕜 : Type u_2
𝕜₂ : Type ?u.478584
𝕝 : Type ?u.478587
𝕝₂ : Type ?u.478590
E : Type u_1
F : Type ?u.478596
G : Type ?u.478599
ι : Type u_3
ι' : Type ?u.478605
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
p : SeminormFamily 𝕜 E ι
inst✝ : TopologicalSpace E
s : Set E
hp : WithSeminorms p
hi : ∀ (i : ι), ∃ r, r > 0 ∧ ∀ (x : E), x ∈ s → ↑(p i) x < r
I : Finset ι
⊢ ∃ r, r > 0 ∧ ∀ (x : E), x ∈ s → ↑(Finset.sup I p) x < r

tactic: simp only [Finset.not_nonempty_iff_eq_empty.mp hI, Finset.sup_empty, coe_bot, Pi.zero_apply,
  exists_prop]
state_before: case neg
𝕜 : Type u_2
𝕜₂ : Type ?u.478584
𝕝 : Type ?u.478587
𝕝₂ : Type ?u.478590
E : Type u_1
F : Type ?u.478596
G : Type ?u.478599
ι : Type u_3
ι' : Type ?u.478605
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
p : SeminormFamily 𝕜 E ι
inst✝ : TopologicalSpace E
s : Set E
hp : WithSeminorms p
hi : ∀ (i : ι), ∃ r, r > 0 ∧ ∀ (x : E), x ∈ s → ↑(p i) x < r
I : Finset ι
hI : ¬Finset.Nonempty I
⊢ ∃ r, r > 0 ∧ ∀ (x : E), x ∈ s → ↑(Finset.sup I p) x < r

tactic: exact ⟨1, zero_lt_one, fun _ _ => zero_lt_one⟩
state_before: case neg
𝕜 : Type u_2
𝕜₂ : Type ?u.478584
𝕝 : Type ?u.478587
𝕝₂ : Type ?u.478590
E : Type u_1
F : Type ?u.478596
G : Type ?u.478599
ι : Type u_3
ι' : Type ?u.478605
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
p : SeminormFamily 𝕜 E ι
inst✝ : TopologicalSpace E
s : Set E
hp : WithSeminorms p
hi : ∀ (i : ι), ∃ r, r > 0 ∧ ∀ (x : E), x ∈ s → ↑(p i) x < r
I : Finset ι
hI : ¬Finset.Nonempty I
⊢ ∃ r, r > 0 ∧ ∀ (x : E), x ∈ s → 0 < r

tactic: intro hI i
state_before: case mp
𝕜 : Type u_2
𝕜₂ : Type ?u.478584
𝕝 : Type ?u.478587
𝕝₂ : Type ?u.478590
E : Type u_1
F : Type ?u.478596
G : Type ?u.478599
ι : Type u_3
ι' : Type ?u.478605
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
p : SeminormFamily 𝕜 E ι
inst✝ : TopologicalSpace E
s : Set E
hp : WithSeminorms p
⊢ (∀ (I : Finset ι), ∃ r, r > 0 ∧ ∀ (x : E), x ∈ s → ↑(Finset.sup I p) x < r) →
    ∀ (i : ι), ∃ r, r > 0 ∧ ∀ (x : E), x ∈ s → ↑(p i) x < r

tactic: convert hI {i}
state_before: case mp
𝕜 : Type u_2
𝕜₂ : Type ?u.478584
𝕝 : Type ?u.478587
𝕝₂ : Type ?u.478590
E : Type u_1
F : Type ?u.478596
G : Type ?u.478599
ι : Type u_3
ι' : Type ?u.478605
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
p : SeminormFamily 𝕜 E ι
inst✝ : TopologicalSpace E
s : Set E
hp : WithSeminorms p
hI : ∀ (I : Finset ι), ∃ r, r > 0 ∧ ∀ (x : E), x ∈ s → ↑(Finset.sup I p) x < r
i : ι
⊢ ∃ r, r > 0 ∧ ∀ (x : E), x ∈ s → ↑(p i) x < r

tactic: rw [Finset.sup_singleton]
state_before: case h.e'_2.h.h.e'_2.h.h'.h.e'_3.h.e'_5
𝕜 : Type u_2
𝕜₂ : Type ?u.478584
𝕝 : Type ?u.478587
𝕝₂ : Type ?u.478590
E : Type u_1
F : Type ?u.478596
G : Type ?u.478599
ι : Type u_3
ι' : Type ?u.478605
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
p : SeminormFamily 𝕜 E ι
inst✝ : TopologicalSpace E
s : Set E
hp : WithSeminorms p
hI : ∀ (I : Finset ι), ∃ r, r > 0 ∧ ∀ (x : E), x ∈ s → ↑(Finset.sup I p) x < r
i : ι
x✝ : ℝ
a✝¹ : E
a✝ : a✝¹ ∈ s
⊢ p i = Finset.sup {i} p

tactic: choose r hr h using hi
state_before: case pos
𝕜 : Type u_2
𝕜₂ : Type ?u.478584
𝕝 : Type ?u.478587
𝕝₂ : Type ?u.478590
E : Type u_1
F : Type ?u.478596
G : Type ?u.478599
ι : Type u_3
ι' : Type ?u.478605
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
p : SeminormFamily 𝕜 E ι
inst✝ : TopologicalSpace E
s : Set E
hp : WithSeminorms p
hi : ∀ (i : ι), ∃ r, r > 0 ∧ ∀ (x : E), x ∈ s → ↑(p i) x < r
I : Finset ι
hI : Finset.Nonempty I
⊢ ∃ r, r > 0 ∧ ∀ (x : E), x ∈ s → ↑(Finset.sup I p) x < r

tactic: have h' : 0 < I.sup' hI r := by
  rcases hI.bex with ⟨i, hi⟩
  exact lt_of_lt_of_le (hr i) (Finset.le_sup' r hi)
state_before: case pos
𝕜 : Type u_2
𝕜₂ : Type ?u.478584
𝕝 : Type ?u.478587
𝕝₂ : Type ?u.478590
E : Type u_1
F : Type ?u.478596
G : Type ?u.478599
ι : Type u_3
ι' : Type ?u.478605
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
p : SeminormFamily 𝕜 E ι
inst✝ : TopologicalSpace E
s : Set E
hp : WithSeminorms p
I : Finset ι
hI : Finset.Nonempty I
r : ι → ℝ
hr : ∀ (i : ι), r i > 0
h : ∀ (i : ι) (x : E), x ∈ s → ↑(p i) x < r i
⊢ ∃ r, r > 0 ∧ ∀ (x : E), x ∈ s → ↑(Finset.sup I p) x < r

tactic: refine' ⟨I.sup' hI r, h', fun x hx => finset_sup_apply_lt h' fun i hi => _⟩
state_before: case pos
𝕜 : Type u_2
𝕜₂ : Type ?u.478584
𝕝 : Type ?u.478587
𝕝₂ : Type ?u.478590
E : Type u_1
F : Type ?u.478596
G : Type ?u.478599
ι : Type u_3
ι' : Type ?u.478605
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
p : SeminormFamily 𝕜 E ι
inst✝ : TopologicalSpace E
s : Set E
hp : WithSeminorms p
I : Finset ι
hI : Finset.Nonempty I
r : ι → ℝ
hr : ∀ (i : ι), r i > 0
h : ∀ (i : ι) (x : E), x ∈ s → ↑(p i) x < r i
h' : 0 < Finset.sup' I hI r
⊢ ∃ r, r > 0 ∧ ∀ (x : E), x ∈ s → ↑(Finset.sup I p) x < r

tactic: refine' lt_of_lt_of_le (h i x hx) _
state_before: case pos
𝕜 : Type u_2
𝕜₂ : Type ?u.478584
𝕝 : Type ?u.478587
𝕝₂ : Type ?u.478590
E : Type u_1
F : Type ?u.478596
G : Type ?u.478599
ι : Type u_3
ι' : Type ?u.478605
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
p : SeminormFamily 𝕜 E ι
inst✝ : TopologicalSpace E
s : Set E
hp : WithSeminorms p
I : Finset ι
hI : Finset.Nonempty I
r : ι → ℝ
hr : ∀ (i : ι), r i > 0
h : ∀ (i : ι) (x : E), x ∈ s → ↑(p i) x < r i
h' : 0 < Finset.sup' I hI r
x : E
hx : x ∈ s
i : ι
hi : i ∈ I
⊢ ↑(p i) x < Finset.sup' I hI r

tactic: simp only [Finset.le_sup'_iff, exists_prop]
state_before: case pos
𝕜 : Type u_2
𝕜₂ : Type ?u.478584
𝕝 : Type ?u.478587
𝕝₂ : Type ?u.478590
E : Type u_1
F : Type ?u.478596
G : Type ?u.478599
ι : Type u_3
ι' : Type ?u.478605
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
p : SeminormFamily 𝕜 E ι
inst✝ : TopologicalSpace E
s : Set E
hp : WithSeminorms p
I : Finset ι
hI : Finset.Nonempty I
r : ι → ℝ
hr : ∀ (i : ι), r i > 0
h : ∀ (i : ι) (x : E), x ∈ s → ↑(p i) x < r i
h' : 0 < Finset.sup' I hI r
x : E
hx : x ∈ s
i : ι
hi : i ∈ I
⊢ r i ≤ Finset.sup' I hI r

tactic: exact ⟨i, hi, (Eq.refl _).le⟩
state_before: case pos
𝕜 : Type u_2
𝕜₂ : Type ?u.478584
𝕝 : Type ?u.478587
𝕝₂ : Type ?u.478590
E : Type u_1
F : Type ?u.478596
G : Type ?u.478599
ι : Type u_3
ι' : Type ?u.478605
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
p : SeminormFamily 𝕜 E ι
inst✝ : TopologicalSpace E
s : Set E
hp : WithSeminorms p
I : Finset ι
hI : Finset.Nonempty I
r : ι → ℝ
hr : ∀ (i : ι), r i > 0
h : ∀ (i : ι) (x : E), x ∈ s → ↑(p i) x < r i
h' : 0 < Finset.sup' I hI r
x : E
hx : x ∈ s
i : ι
hi : i ∈ I
⊢ ∃ b, b ∈ I ∧ r i ≤ r b

tactic: rcases hI.bex with ⟨i, hi⟩
state_before: 𝕜 : Type u_2
𝕜₂ : Type ?u.478584
𝕝 : Type ?u.478587
𝕝₂ : Type ?u.478590
E : Type u_1
F : Type ?u.478596
G : Type ?u.478599
ι : Type u_3
ι' : Type ?u.478605
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
p : SeminormFamily 𝕜 E ι
inst✝ : TopologicalSpace E
s : Set E
hp : WithSeminorms p
I : Finset ι
hI : Finset.Nonempty I
r : ι → ℝ
hr : ∀ (i : ι), r i > 0
h : ∀ (i : ι) (x : E), x ∈ s → ↑(p i) x < r i
⊢ 0 < Finset.sup' I hI r

tactic: exact lt_of_lt_of_le (hr i) (Finset.le_sup' r hi)
state_before: case intro
𝕜 : Type u_2
𝕜₂ : Type ?u.478584
𝕝 : Type ?u.478587
𝕝₂ : Type ?u.478590
E : Type u_1
F : Type ?u.478596
G : Type ?u.478599
ι : Type u_3
ι' : Type ?u.478605
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
p : SeminormFamily 𝕜 E ι
inst✝ : TopologicalSpace E
s : Set E
hp : WithSeminorms p
I : Finset ι
hI : Finset.Nonempty I
r : ι → ℝ
hr : ∀ (i : ι), r i > 0
h : ∀ (i : ι) (x : E), x ∈ s → ↑(p i) x < r i
i : ι
hi : i ∈ I
⊢ 0 < Finset.sup' I hI r