[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝³ : SeminormedRing 𝕜
inst✝² : SMul 𝕜 E
inst✝¹ : Zero E
inst✝ : TopologicalSpace E
q : ι → Prop
s : ι → Set E
A : Set E
h : HasBasis (𝓝 0) q s
⊢ IsVonNBounded 𝕜 A ↔ ∀ (i : ι), q i → Absorbs 𝕜 (s i) A
[PROOFSTEP]
refine' ⟨fun hA i hi => hA (h.mem_of_mem hi), fun hA V hV => _⟩
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝³ : SeminormedRing 𝕜
inst✝² : SMul 𝕜 E
inst✝¹ : Zero E
inst✝ : TopologicalSpace E
q : ι → Prop
s : ι → Set E
A : Set E
h : HasBasis (𝓝 0) q s
hA : ∀ (i : ι), q i → Absorbs 𝕜 (s i) A
V : Set E
hV : V ∈ 𝓝 0
⊢ Absorbs 𝕜 V A
[PROOFSTEP]
rcases h.mem_iff.mp hV with ⟨i, hi, hV⟩
[GOAL]
case intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝³ : SeminormedRing 𝕜
inst✝² : SMul 𝕜 E
inst✝¹ : Zero E
inst✝ : TopologicalSpace E
q : ι → Prop
s : ι → Set E
A : Set E
h : HasBasis (𝓝 0) q s
hA : ∀ (i : ι), q i → Absorbs 𝕜 (s i) A
V : Set E
hV✝ : V ∈ 𝓝 0
i : ι
hi : q i
hV : s i ⊆ V
⊢ Absorbs 𝕜 V A
[PROOFSTEP]
exact (hA i hi).mono_left hV
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕜₁ : Type u_7
𝕜₂ : Type u_8
inst✝⁹ : NormedDivisionRing 𝕜₁
inst✝⁸ : NormedDivisionRing 𝕜₂
inst✝⁷ : AddCommGroup E
inst✝⁶ : Module 𝕜₁ E
inst✝⁵ : AddCommGroup F
inst✝⁴ : Module 𝕜₂ F
inst✝³ : TopologicalSpace E
inst✝² : TopologicalSpace F
σ : 𝕜₁ →+* 𝕜₂
inst✝¹ : RingHomSurjective σ
inst✝ : RingHomIsometric σ
s : Set E
hs : IsVonNBounded 𝕜₁ s
f : E →SL[σ] F
⊢ IsVonNBounded 𝕜₂ (↑f '' s)
[PROOFSTEP]
let σ' := RingEquiv.ofBijective σ ⟨σ.injective, σ.surjective⟩
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕜₁ : Type u_7
𝕜₂ : Type u_8
inst✝⁹ : NormedDivisionRing 𝕜₁
inst✝⁸ : NormedDivisionRing 𝕜₂
inst✝⁷ : AddCommGroup E
inst✝⁶ : Module 𝕜₁ E
inst✝⁵ : AddCommGroup F
inst✝⁴ : Module 𝕜₂ F
inst✝³ : TopologicalSpace E
inst✝² : TopologicalSpace F
σ : 𝕜₁ →+* 𝕜₂
inst✝¹ : RingHomSurjective σ
inst✝ : RingHomIsometric σ
s : Set E
hs : IsVonNBounded 𝕜₁ s
f : E →SL[σ] F
σ' : 𝕜₁ ≃+* 𝕜₂ := RingEquiv.ofBijective σ (_ : Function.Injective ↑σ ∧ Function.Surjective ↑σ)
⊢ IsVonNBounded 𝕜₂ (↑f '' s)
[PROOFSTEP]
have σ_iso : Isometry σ := AddMonoidHomClass.isometry_of_norm σ fun x => RingHomIsometric.is_iso
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕜₁ : Type u_7
𝕜₂ : Type u_8
inst✝⁹ : NormedDivisionRing 𝕜₁
inst✝⁸ : NormedDivisionRing 𝕜₂
inst✝⁷ : AddCommGroup E
inst✝⁶ : Module 𝕜₁ E
inst✝⁵ : AddCommGroup F
inst✝⁴ : Module 𝕜₂ F
inst✝³ : TopologicalSpace E
inst✝² : TopologicalSpace F
σ : 𝕜₁ →+* 𝕜₂
inst✝¹ : RingHomSurjective σ
inst✝ : RingHomIsometric σ
s : Set E
hs : IsVonNBounded 𝕜₁ s
f : E →SL[σ] F
σ' : 𝕜₁ ≃+* 𝕜₂ := RingEquiv.ofBijective σ (_ : Function.Injective ↑σ ∧ Function.Surjective ↑σ)
σ_iso : Isometry ↑σ
⊢ IsVonNBounded 𝕜₂ (↑f '' s)
[PROOFSTEP]
have σ'_symm_iso : Isometry σ'.symm := σ_iso.right_inv σ'.right_inv
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕜₁ : Type u_7
𝕜₂ : Type u_8
inst✝⁹ : NormedDivisionRing 𝕜₁
inst✝⁸ : NormedDivisionRing 𝕜₂
inst✝⁷ : AddCommGroup E
inst✝⁶ : Module 𝕜₁ E
inst✝⁵ : AddCommGroup F
inst✝⁴ : Module 𝕜₂ F
inst✝³ : TopologicalSpace E
inst✝² : TopologicalSpace F
σ : 𝕜₁ →+* 𝕜₂
inst✝¹ : RingHomSurjective σ
inst✝ : RingHomIsometric σ
s : Set E
hs : IsVonNBounded 𝕜₁ s
f : E →SL[σ] F
σ' : 𝕜₁ ≃+* 𝕜₂ := RingEquiv.ofBijective σ (_ : Function.Injective ↑σ ∧ Function.Surjective ↑σ)
σ_iso : Isometry ↑σ
σ'_symm_iso : Isometry ↑(RingEquiv.symm σ')
⊢ IsVonNBounded 𝕜₂ (↑f '' s)
[PROOFSTEP]
have f_tendsto_zero := f.continuous.tendsto 0
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕜₁ : Type u_7
𝕜₂ : Type u_8
inst✝⁹ : NormedDivisionRing 𝕜₁
inst✝⁸ : NormedDivisionRing 𝕜₂
inst✝⁷ : AddCommGroup E
inst✝⁶ : Module 𝕜₁ E
inst✝⁵ : AddCommGroup F
inst✝⁴ : Module 𝕜₂ F
inst✝³ : TopologicalSpace E
inst✝² : TopologicalSpace F
σ : 𝕜₁ →+* 𝕜₂
inst✝¹ : RingHomSurjective σ
inst✝ : RingHomIsometric σ
s : Set E
hs : IsVonNBounded 𝕜₁ s
f : E →SL[σ] F
σ' : 𝕜₁ ≃+* 𝕜₂ := RingEquiv.ofBijective σ (_ : Function.Injective ↑σ ∧ Function.Surjective ↑σ)
σ_iso : Isometry ↑σ
σ'_symm_iso : Isometry ↑(RingEquiv.symm σ')
f_tendsto_zero : Tendsto (↑f) (𝓝 0) (𝓝 (↑f 0))
⊢ IsVonNBounded 𝕜₂ (↑f '' s)
[PROOFSTEP]
rw [map_zero] at f_tendsto_zero
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕜₁ : Type u_7
𝕜₂ : Type u_8
inst✝⁹ : NormedDivisionRing 𝕜₁
inst✝⁸ : NormedDivisionRing 𝕜₂
inst✝⁷ : AddCommGroup E
inst✝⁶ : Module 𝕜₁ E
inst✝⁵ : AddCommGroup F
inst✝⁴ : Module 𝕜₂ F
inst✝³ : TopologicalSpace E
inst✝² : TopologicalSpace F
σ : 𝕜₁ →+* 𝕜₂
inst✝¹ : RingHomSurjective σ
inst✝ : RingHomIsometric σ
s : Set E
hs : IsVonNBounded 𝕜₁ s
f : E →SL[σ] F
σ' : 𝕜₁ ≃+* 𝕜₂ := RingEquiv.ofBijective σ (_ : Function.Injective ↑σ ∧ Function.Surjective ↑σ)
σ_iso : Isometry ↑σ
σ'_symm_iso : Isometry ↑(RingEquiv.symm σ')
f_tendsto_zero : Tendsto (↑f) (𝓝 0) (𝓝 0)
⊢ IsVonNBounded 𝕜₂ (↑f '' s)
[PROOFSTEP]
intro V hV
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕜₁ : Type u_7
𝕜₂ : Type u_8
inst✝⁹ : NormedDivisionRing 𝕜₁
inst✝⁸ : NormedDivisionRing 𝕜₂
inst✝⁷ : AddCommGroup E
inst✝⁶ : Module 𝕜₁ E
inst✝⁵ : AddCommGroup F
inst✝⁴ : Module 𝕜₂ F
inst✝³ : TopologicalSpace E
inst✝² : TopologicalSpace F
σ : 𝕜₁ →+* 𝕜₂
inst✝¹ : RingHomSurjective σ
inst✝ : RingHomIsometric σ
s : Set E
hs : IsVonNBounded 𝕜₁ s
f : E →SL[σ] F
σ' : 𝕜₁ ≃+* 𝕜₂ := RingEquiv.ofBijective σ (_ : Function.Injective ↑σ ∧ Function.Surjective ↑σ)
σ_iso : Isometry ↑σ
σ'_symm_iso : Isometry ↑(RingEquiv.symm σ')
f_tendsto_zero : Tendsto (↑f) (𝓝 0) (𝓝 0)
V : Set F
hV : V ∈ 𝓝 0
⊢ Absorbs 𝕜₂ V (↑f '' s)
[PROOFSTEP]
rcases hs (f_tendsto_zero hV) with ⟨r, hrpos, hr⟩
[GOAL]
case intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕜₁ : Type u_7
𝕜₂ : Type u_8
inst✝⁹ : NormedDivisionRing 𝕜₁
inst✝⁸ : NormedDivisionRing 𝕜₂
inst✝⁷ : AddCommGroup E
inst✝⁶ : Module 𝕜₁ E
inst✝⁵ : AddCommGroup F
inst✝⁴ : Module 𝕜₂ F
inst✝³ : TopologicalSpace E
inst✝² : TopologicalSpace F
σ : 𝕜₁ →+* 𝕜₂
inst✝¹ : RingHomSurjective σ
inst✝ : RingHomIsometric σ
s : Set E
hs : IsVonNBounded 𝕜₁ s
f : E →SL[σ] F
σ' : 𝕜₁ ≃+* 𝕜₂ := RingEquiv.ofBijective σ (_ : Function.Injective ↑σ ∧ Function.Surjective ↑σ)
σ_iso : Isometry ↑σ
σ'_symm_iso : Isometry ↑(RingEquiv.symm σ')
f_tendsto_zero : Tendsto (↑f) (𝓝 0) (𝓝 0)
V : Set F
hV : V ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜₁), r ≤ ‖a‖ → s ⊆ a • ↑f ⁻¹' V
⊢ Absorbs 𝕜₂ V (↑f '' s)
[PROOFSTEP]
refine' ⟨r, hrpos, fun a ha => _⟩
[GOAL]
case intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕜₁ : Type u_7
𝕜₂ : Type u_8
inst✝⁹ : NormedDivisionRing 𝕜₁
inst✝⁸ : NormedDivisionRing 𝕜₂
inst✝⁷ : AddCommGroup E
inst✝⁶ : Module 𝕜₁ E
inst✝⁵ : AddCommGroup F
inst✝⁴ : Module 𝕜₂ F
inst✝³ : TopologicalSpace E
inst✝² : TopologicalSpace F
σ : 𝕜₁ →+* 𝕜₂
inst✝¹ : RingHomSurjective σ
inst✝ : RingHomIsometric σ
s : Set E
hs : IsVonNBounded 𝕜₁ s
f : E →SL[σ] F
σ' : 𝕜₁ ≃+* 𝕜₂ := RingEquiv.ofBijective σ (_ : Function.Injective ↑σ ∧ Function.Surjective ↑σ)
σ_iso : Isometry ↑σ
σ'_symm_iso : Isometry ↑(RingEquiv.symm σ')
f_tendsto_zero : Tendsto (↑f) (𝓝 0) (𝓝 0)
V : Set F
hV : V ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜₁), r ≤ ‖a‖ → s ⊆ a • ↑f ⁻¹' V
a : 𝕜₂
ha : r ≤ ‖a‖
⊢ ↑f '' s ⊆ a • V
[PROOFSTEP]
rw [← σ'.apply_symm_apply a]
[GOAL]
case intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕜₁ : Type u_7
𝕜₂ : Type u_8
inst✝⁹ : NormedDivisionRing 𝕜₁
inst✝⁸ : NormedDivisionRing 𝕜₂
inst✝⁷ : AddCommGroup E
inst✝⁶ : Module 𝕜₁ E
inst✝⁵ : AddCommGroup F
inst✝⁴ : Module 𝕜₂ F
inst✝³ : TopologicalSpace E
inst✝² : TopologicalSpace F
σ : 𝕜₁ →+* 𝕜₂
inst✝¹ : RingHomSurjective σ
inst✝ : RingHomIsometric σ
s : Set E
hs : IsVonNBounded 𝕜₁ s
f : E →SL[σ] F
σ' : 𝕜₁ ≃+* 𝕜₂ := RingEquiv.ofBijective σ (_ : Function.Injective ↑σ ∧ Function.Surjective ↑σ)
σ_iso : Isometry ↑σ
σ'_symm_iso : Isometry ↑(RingEquiv.symm σ')
f_tendsto_zero : Tendsto (↑f) (𝓝 0) (𝓝 0)
V : Set F
hV : V ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜₁), r ≤ ‖a‖ → s ⊆ a • ↑f ⁻¹' V
a : 𝕜₂
ha : r ≤ ‖a‖
⊢ ↑f '' s ⊆ ↑σ' (↑(RingEquiv.symm σ') a) • V
[PROOFSTEP]
have hanz : a ≠ 0 := norm_pos_iff.mp (hrpos.trans_le ha)
[GOAL]
case intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕜₁ : Type u_7
𝕜₂ : Type u_8
inst✝⁹ : NormedDivisionRing 𝕜₁
inst✝⁸ : NormedDivisionRing 𝕜₂
inst✝⁷ : AddCommGroup E
inst✝⁶ : Module 𝕜₁ E
inst✝⁵ : AddCommGroup F
inst✝⁴ : Module 𝕜₂ F
inst✝³ : TopologicalSpace E
inst✝² : TopologicalSpace F
σ : 𝕜₁ →+* 𝕜₂
inst✝¹ : RingHomSurjective σ
inst✝ : RingHomIsometric σ
s : Set E
hs : IsVonNBounded 𝕜₁ s
f : E →SL[σ] F
σ' : 𝕜₁ ≃+* 𝕜₂ := RingEquiv.ofBijective σ (_ : Function.Injective ↑σ ∧ Function.Surjective ↑σ)
σ_iso : Isometry ↑σ
σ'_symm_iso : Isometry ↑(RingEquiv.symm σ')
f_tendsto_zero : Tendsto (↑f) (𝓝 0) (𝓝 0)
V : Set F
hV : V ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜₁), r ≤ ‖a‖ → s ⊆ a • ↑f ⁻¹' V
a : 𝕜₂
ha : r ≤ ‖a‖
hanz : a ≠ 0
⊢ ↑f '' s ⊆ ↑σ' (↑(RingEquiv.symm σ') a) • V
[PROOFSTEP]
have : σ'.symm a ≠ 0 := (map_ne_zero σ'.symm.toRingHom).mpr hanz
[GOAL]
case intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕜₁ : Type u_7
𝕜₂ : Type u_8
inst✝⁹ : NormedDivisionRing 𝕜₁
inst✝⁸ : NormedDivisionRing 𝕜₂
inst✝⁷ : AddCommGroup E
inst✝⁶ : Module 𝕜₁ E
inst✝⁵ : AddCommGroup F
inst✝⁴ : Module 𝕜₂ F
inst✝³ : TopologicalSpace E
inst✝² : TopologicalSpace F
σ : 𝕜₁ →+* 𝕜₂
inst✝¹ : RingHomSurjective σ
inst✝ : RingHomIsometric σ
s : Set E
hs : IsVonNBounded 𝕜₁ s
f : E →SL[σ] F
σ' : 𝕜₁ ≃+* 𝕜₂ := RingEquiv.ofBijective σ (_ : Function.Injective ↑σ ∧ Function.Surjective ↑σ)
σ_iso : Isometry ↑σ
σ'_symm_iso : Isometry ↑(RingEquiv.symm σ')
f_tendsto_zero : Tendsto (↑f) (𝓝 0) (𝓝 0)
V : Set F
hV : V ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜₁), r ≤ ‖a‖ → s ⊆ a • ↑f ⁻¹' V
a : 𝕜₂
ha : r ≤ ‖a‖
hanz : a ≠ 0
this : ↑(RingEquiv.symm σ') a ≠ 0
⊢ ↑f '' s ⊆ ↑σ' (↑(RingEquiv.symm σ') a) • V
[PROOFSTEP]
change _ ⊆ σ _ • _
[GOAL]
case intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕜₁ : Type u_7
𝕜₂ : Type u_8
inst✝⁹ : NormedDivisionRing 𝕜₁
inst✝⁸ : NormedDivisionRing 𝕜₂
inst✝⁷ : AddCommGroup E
inst✝⁶ : Module 𝕜₁ E
inst✝⁵ : AddCommGroup F
inst✝⁴ : Module 𝕜₂ F
inst✝³ : TopologicalSpace E
inst✝² : TopologicalSpace F
σ : 𝕜₁ →+* 𝕜₂
inst✝¹ : RingHomSurjective σ
inst✝ : RingHomIsometric σ
s : Set E
hs : IsVonNBounded 𝕜₁ s
f : E →SL[σ] F
σ' : 𝕜₁ ≃+* 𝕜₂ := RingEquiv.ofBijective σ (_ : Function.Injective ↑σ ∧ Function.Surjective ↑σ)
σ_iso : Isometry ↑σ
σ'_symm_iso : Isometry ↑(RingEquiv.symm σ')
f_tendsto_zero : Tendsto (↑f) (𝓝 0) (𝓝 0)
V : Set F
hV : V ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜₁), r ≤ ‖a‖ → s ⊆ a • ↑f ⁻¹' V
a : 𝕜₂
ha : r ≤ ‖a‖
hanz : a ≠ 0
this : ↑(RingEquiv.symm σ') a ≠ 0
⊢ ↑f '' s ⊆ ↑σ (↑(RingEquiv.symm σ') a) • V
[PROOFSTEP]
rw [Set.image_subset_iff, preimage_smul_setₛₗ _ _ _ f this.isUnit]
[GOAL]
case intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕜₁ : Type u_7
𝕜₂ : Type u_8
inst✝⁹ : NormedDivisionRing 𝕜₁
inst✝⁸ : NormedDivisionRing 𝕜₂
inst✝⁷ : AddCommGroup E
inst✝⁶ : Module 𝕜₁ E
inst✝⁵ : AddCommGroup F
inst✝⁴ : Module 𝕜₂ F
inst✝³ : TopologicalSpace E
inst✝² : TopologicalSpace F
σ : 𝕜₁ →+* 𝕜₂
inst✝¹ : RingHomSurjective σ
inst✝ : RingHomIsometric σ
s : Set E
hs : IsVonNBounded 𝕜₁ s
f : E →SL[σ] F
σ' : 𝕜₁ ≃+* 𝕜₂ := RingEquiv.ofBijective σ (_ : Function.Injective ↑σ ∧ Function.Surjective ↑σ)
σ_iso : Isometry ↑σ
σ'_symm_iso : Isometry ↑(RingEquiv.symm σ')
f_tendsto_zero : Tendsto (↑f) (𝓝 0) (𝓝 0)
V : Set F
hV : V ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜₁), r ≤ ‖a‖ → s ⊆ a • ↑f ⁻¹' V
a : 𝕜₂
ha : r ≤ ‖a‖
hanz : a ≠ 0
this : ↑(RingEquiv.symm σ') a ≠ 0
⊢ s ⊆ ↑(RingEquiv.symm σ') a • ↑f ⁻¹' V
[PROOFSTEP]
refine' hr (σ'.symm a) _
[GOAL]
case intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕜₁ : Type u_7
𝕜₂ : Type u_8
inst✝⁹ : NormedDivisionRing 𝕜₁
inst✝⁸ : NormedDivisionRing 𝕜₂
inst✝⁷ : AddCommGroup E
inst✝⁶ : Module 𝕜₁ E
inst✝⁵ : AddCommGroup F
inst✝⁴ : Module 𝕜₂ F
inst✝³ : TopologicalSpace E
inst✝² : TopologicalSpace F
σ : 𝕜₁ →+* 𝕜₂
inst✝¹ : RingHomSurjective σ
inst✝ : RingHomIsometric σ
s : Set E
hs : IsVonNBounded 𝕜₁ s
f : E →SL[σ] F
σ' : 𝕜₁ ≃+* 𝕜₂ := RingEquiv.ofBijective σ (_ : Function.Injective ↑σ ∧ Function.Surjective ↑σ)
σ_iso : Isometry ↑σ
σ'_symm_iso : Isometry ↑(RingEquiv.symm σ')
f_tendsto_zero : Tendsto (↑f) (𝓝 0) (𝓝 0)
V : Set F
hV : V ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜₁), r ≤ ‖a‖ → s ⊆ a • ↑f ⁻¹' V
a : 𝕜₂
ha : r ≤ ‖a‖
hanz : a ≠ 0
this : ↑(RingEquiv.symm σ') a ≠ 0
⊢ r ≤ ‖↑(RingEquiv.symm σ') a‖
[PROOFSTEP]
rwa [σ'_symm_iso.norm_map_of_map_zero (map_zero _)]
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NontriviallyNormedField 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul 𝕝 E
S : Set E
ε : ι → 𝕜
x : ι → E
l : Filter ι
hS : IsVonNBounded 𝕜 S
hxS : ∀ᶠ (n : ι) in l, x n ∈ S
hε : Tendsto ε l (𝓝 0)
⊢ Tendsto (ε • x) l (𝓝 0)
[PROOFSTEP]
rw [tendsto_def] at *
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NontriviallyNormedField 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul 𝕝 E
S : Set E
ε : ι → 𝕜
x : ι → E
l : Filter ι
hS : IsVonNBounded 𝕜 S
hxS : ∀ᶠ (n : ι) in l, x n ∈ S
hε : ∀ (s : Set 𝕜), s ∈ 𝓝 0 → ε ⁻¹' s ∈ l
⊢ ∀ (s : Set E), s ∈ 𝓝 0 → (ε • x) ⁻¹' s ∈ l
[PROOFSTEP]
intro V hV
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NontriviallyNormedField 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul 𝕝 E
S : Set E
ε : ι → 𝕜
x : ι → E
l : Filter ι
hS : IsVonNBounded 𝕜 S
hxS : ∀ᶠ (n : ι) in l, x n ∈ S
hε : ∀ (s : Set 𝕜), s ∈ 𝓝 0 → ε ⁻¹' s ∈ l
V : Set E
hV : V ∈ 𝓝 0
⊢ (ε • x) ⁻¹' V ∈ l
[PROOFSTEP]
rcases hS hV with ⟨r, r_pos, hrS⟩
[GOAL]
case intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NontriviallyNormedField 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul 𝕝 E
S : Set E
ε : ι → 𝕜
x : ι → E
l : Filter ι
hS : IsVonNBounded 𝕜 S
hxS : ∀ᶠ (n : ι) in l, x n ∈ S
hε : ∀ (s : Set 𝕜), s ∈ 𝓝 0 → ε ⁻¹' s ∈ l
V : Set E
hV : V ∈ 𝓝 0
r : ℝ
r_pos : 0 < r
hrS : ∀ (a : 𝕜), r ≤ ‖a‖ → S ⊆ a • V
⊢ (ε • x) ⁻¹' V ∈ l
[PROOFSTEP]
filter_upwards [hxS, hε _ (Metric.ball_mem_nhds 0 <| inv_pos.mpr r_pos)] with n hnS hnr
[GOAL]
case h
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NontriviallyNormedField 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul 𝕝 E
S : Set E
ε : ι → 𝕜
x : ι → E
l : Filter ι
hS : IsVonNBounded 𝕜 S
hxS : ∀ᶠ (n : ι) in l, x n ∈ S
hε : ∀ (s : Set 𝕜), s ∈ 𝓝 0 → ε ⁻¹' s ∈ l
V : Set E
hV : V ∈ 𝓝 0
r : ℝ
r_pos : 0 < r
hrS : ∀ (a : 𝕜), r ≤ ‖a‖ → S ⊆ a • V
n : ι
hnS : x n ∈ S
hnr : n ∈ ε ⁻¹' Metric.ball 0 r⁻¹
⊢ n ∈ (ε • x) ⁻¹' V
[PROOFSTEP]
by_cases hε : ε n = 0
[GOAL]
case pos
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NontriviallyNormedField 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul 𝕝 E
S : Set E
ε : ι → 𝕜
x : ι → E
l : Filter ι
hS : IsVonNBounded 𝕜 S
hxS : ∀ᶠ (n : ι) in l, x n ∈ S
hε✝ : ∀ (s : Set 𝕜), s ∈ 𝓝 0 → ε ⁻¹' s ∈ l
V : Set E
hV : V ∈ 𝓝 0
r : ℝ
r_pos : 0 < r
hrS : ∀ (a : 𝕜), r ≤ ‖a‖ → S ⊆ a • V
n : ι
hnS : x n ∈ S
hnr : n ∈ ε ⁻¹' Metric.ball 0 r⁻¹
hε : ε n = 0
⊢ n ∈ (ε • x) ⁻¹' V
[PROOFSTEP]
simp [hε, mem_of_mem_nhds hV]
[GOAL]
case neg
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NontriviallyNormedField 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul 𝕝 E
S : Set E
ε : ι → 𝕜
x : ι → E
l : Filter ι
hS : IsVonNBounded 𝕜 S
hxS : ∀ᶠ (n : ι) in l, x n ∈ S
hε✝ : ∀ (s : Set 𝕜), s ∈ 𝓝 0 → ε ⁻¹' s ∈ l
V : Set E
hV : V ∈ 𝓝 0
r : ℝ
r_pos : 0 < r
hrS : ∀ (a : 𝕜), r ≤ ‖a‖ → S ⊆ a • V
n : ι
hnS : x n ∈ S
hnr : n ∈ ε ⁻¹' Metric.ball 0 r⁻¹
hε : ¬ε n = 0
⊢ n ∈ (ε • x) ⁻¹' V
[PROOFSTEP]
rw [mem_preimage, mem_ball_zero_iff, lt_inv (norm_pos_iff.mpr hε) r_pos, ← norm_inv] at hnr
[GOAL]
case neg
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NontriviallyNormedField 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul 𝕝 E
S : Set E
ε : ι → 𝕜
x : ι → E
l : Filter ι
hS : IsVonNBounded 𝕜 S
hxS : ∀ᶠ (n : ι) in l, x n ∈ S
hε✝ : ∀ (s : Set 𝕜), s ∈ 𝓝 0 → ε ⁻¹' s ∈ l
V : Set E
hV : V ∈ 𝓝 0
r : ℝ
r_pos : 0 < r
hrS : ∀ (a : 𝕜), r ≤ ‖a‖ → S ⊆ a • V
n : ι
hnS : x n ∈ S
hnr : r < ‖(ε n)⁻¹‖
hε : ¬ε n = 0
⊢ n ∈ (ε • x) ⁻¹' V
[PROOFSTEP]
rw [mem_preimage, Pi.smul_apply', ← Set.mem_inv_smul_set_iff₀ hε]
[GOAL]
case neg
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NontriviallyNormedField 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul 𝕝 E
S : Set E
ε : ι → 𝕜
x : ι → E
l : Filter ι
hS : IsVonNBounded 𝕜 S
hxS : ∀ᶠ (n : ι) in l, x n ∈ S
hε✝ : ∀ (s : Set 𝕜), s ∈ 𝓝 0 → ε ⁻¹' s ∈ l
V : Set E
hV : V ∈ 𝓝 0
r : ℝ
r_pos : 0 < r
hrS : ∀ (a : 𝕜), r ≤ ‖a‖ → S ⊆ a • V
n : ι
hnS : x n ∈ S
hnr : r < ‖(ε n)⁻¹‖
hε : ¬ε n = 0
⊢ x n ∈ (ε n)⁻¹ • V
[PROOFSTEP]
exact hrS _ hnr.le hnS
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁷ : NormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕝 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕝 E
ε : ι → 𝕝
l : Filter ι
inst✝ : NeBot l
hε : ∀ᶠ (n : ι) in l, ε n ≠ 0
S : Set E
H : ∀ (x : ι → E), (∀ (n : ι), x n ∈ S) → Tendsto (ε • x) l (𝓝 0)
⊢ IsVonNBounded 𝕝 S
[PROOFSTEP]
rw [(nhds_basis_balanced 𝕝 E).isVonNBounded_basis_iff]
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁷ : NormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕝 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕝 E
ε : ι → 𝕝
l : Filter ι
inst✝ : NeBot l
hε : ∀ᶠ (n : ι) in l, ε n ≠ 0
S : Set E
H : ∀ (x : ι → E), (∀ (n : ι), x n ∈ S) → Tendsto (ε • x) l (𝓝 0)
⊢ ∀ (i : Set E), i ∈ 𝓝 0 ∧ Balanced 𝕝 i → Absorbs 𝕝 (id i) S
[PROOFSTEP]
by_contra' H'
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁷ : NormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕝 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕝 E
ε : ι → 𝕝
l : Filter ι
inst✝ : NeBot l
hε : ∀ᶠ (n : ι) in l, ε n ≠ 0
S : Set E
H : ∀ (x : ι → E), (∀ (n : ι), x n ∈ S) → Tendsto (ε • x) l (𝓝 0)
H' : ∃ i, (i ∈ 𝓝 0 ∧ Balanced 𝕝 i) ∧ ¬Absorbs 𝕝 (id i) S
⊢ False
[PROOFSTEP]
rcases H' with ⟨V, ⟨hV, hVb⟩, hVS⟩
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁷ : NormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕝 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕝 E
ε : ι → 𝕝
l : Filter ι
inst✝ : NeBot l
hε : ∀ᶠ (n : ι) in l, ε n ≠ 0
S : Set E
H : ∀ (x : ι → E), (∀ (n : ι), x n ∈ S) → Tendsto (ε • x) l (𝓝 0)
V : Set E
hVS : ¬Absorbs 𝕝 (id V) S
hV : V ∈ 𝓝 0
hVb : Balanced 𝕝 V
⊢ False
[PROOFSTEP]
have : ∀ᶠ n in l, ∃ x : S, ε n • (x : E) ∉ V :=
  by
  filter_upwards [hε] with n hn
  rw [Absorbs] at hVS
  push_neg at hVS
  rcases hVS _ (norm_pos_iff.mpr <| inv_ne_zero hn) with ⟨a, haε, haS⟩
  rcases Set.not_subset.mp haS with ⟨x, hxS, hx⟩
  refine' ⟨⟨x, hxS⟩, fun hnx => _⟩
  rw [← Set.mem_inv_smul_set_iff₀ hn] at hnx
  exact hx (hVb.smul_mono haε hnx)
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁷ : NormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕝 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕝 E
ε : ι → 𝕝
l : Filter ι
inst✝ : NeBot l
hε : ∀ᶠ (n : ι) in l, ε n ≠ 0
S : Set E
H : ∀ (x : ι → E), (∀ (n : ι), x n ∈ S) → Tendsto (ε • x) l (𝓝 0)
V : Set E
hVS : ¬Absorbs 𝕝 (id V) S
hV : V ∈ 𝓝 0
hVb : Balanced 𝕝 V
⊢ ∀ᶠ (n : ι) in l, ∃ x, ¬ε n • ↑x ∈ V
[PROOFSTEP]
filter_upwards [hε] with n hn
[GOAL]
case h
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁷ : NormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕝 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕝 E
ε : ι → 𝕝
l : Filter ι
inst✝ : NeBot l
hε : ∀ᶠ (n : ι) in l, ε n ≠ 0
S : Set E
H : ∀ (x : ι → E), (∀ (n : ι), x n ∈ S) → Tendsto (ε • x) l (𝓝 0)
V : Set E
hVS : ¬Absorbs 𝕝 (id V) S
hV : V ∈ 𝓝 0
hVb : Balanced 𝕝 V
n : ι
hn : ε n ≠ 0
⊢ ∃ x, ¬ε n • ↑x ∈ V
[PROOFSTEP]
rw [Absorbs] at hVS
[GOAL]
case h
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁷ : NormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕝 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕝 E
ε : ι → 𝕝
l : Filter ι
inst✝ : NeBot l
hε : ∀ᶠ (n : ι) in l, ε n ≠ 0
S : Set E
H : ∀ (x : ι → E), (∀ (n : ι), x n ∈ S) → Tendsto (ε • x) l (𝓝 0)
V : Set E
hVS : ¬∃ r, 0 < r ∧ ∀ (a : 𝕝), r ≤ ‖a‖ → S ⊆ a • id V
hV : V ∈ 𝓝 0
hVb : Balanced 𝕝 V
n : ι
hn : ε n ≠ 0
⊢ ∃ x, ¬ε n • ↑x ∈ V
[PROOFSTEP]
push_neg at hVS
[GOAL]
case h
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁷ : NormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕝 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕝 E
ε : ι → 𝕝
l : Filter ι
inst✝ : NeBot l
hε : ∀ᶠ (n : ι) in l, ε n ≠ 0
S : Set E
H : ∀ (x : ι → E), (∀ (n : ι), x n ∈ S) → Tendsto (ε • x) l (𝓝 0)
V : Set E
hV : V ∈ 𝓝 0
hVb : Balanced 𝕝 V
n : ι
hn : ε n ≠ 0
hVS : ∀ (r : ℝ), 0 < r → ∃ a, r ≤ ‖a‖ ∧ ¬S ⊆ a • id V
⊢ ∃ x, ¬ε n • ↑x ∈ V
[PROOFSTEP]
rcases hVS _ (norm_pos_iff.mpr <| inv_ne_zero hn) with ⟨a, haε, haS⟩
[GOAL]
case h.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁷ : NormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕝 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕝 E
ε : ι → 𝕝
l : Filter ι
inst✝ : NeBot l
hε : ∀ᶠ (n : ι) in l, ε n ≠ 0
S : Set E
H : ∀ (x : ι → E), (∀ (n : ι), x n ∈ S) → Tendsto (ε • x) l (𝓝 0)
V : Set E
hV : V ∈ 𝓝 0
hVb : Balanced 𝕝 V
n : ι
hn : ε n ≠ 0
hVS : ∀ (r : ℝ), 0 < r → ∃ a, r ≤ ‖a‖ ∧ ¬S ⊆ a • id V
a : 𝕝
haε : ‖(ε n)⁻¹‖ ≤ ‖a‖
haS : ¬S ⊆ a • id V
⊢ ∃ x, ¬ε n • ↑x ∈ V
[PROOFSTEP]
rcases Set.not_subset.mp haS with ⟨x, hxS, hx⟩
[GOAL]
case h.intro.intro.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁷ : NormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕝 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕝 E
ε : ι → 𝕝
l : Filter ι
inst✝ : NeBot l
hε : ∀ᶠ (n : ι) in l, ε n ≠ 0
S : Set E
H : ∀ (x : ι → E), (∀ (n : ι), x n ∈ S) → Tendsto (ε • x) l (𝓝 0)
V : Set E
hV : V ∈ 𝓝 0
hVb : Balanced 𝕝 V
n : ι
hn : ε n ≠ 0
hVS : ∀ (r : ℝ), 0 < r → ∃ a, r ≤ ‖a‖ ∧ ¬S ⊆ a • id V
a : 𝕝
haε : ‖(ε n)⁻¹‖ ≤ ‖a‖
haS : ¬S ⊆ a • id V
x : E
hxS : x ∈ S
hx : ¬x ∈ a • id V
⊢ ∃ x, ¬ε n • ↑x ∈ V
[PROOFSTEP]
refine' ⟨⟨x, hxS⟩, fun hnx => _⟩
[GOAL]
case h.intro.intro.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁷ : NormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕝 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕝 E
ε : ι → 𝕝
l : Filter ι
inst✝ : NeBot l
hε : ∀ᶠ (n : ι) in l, ε n ≠ 0
S : Set E
H : ∀ (x : ι → E), (∀ (n : ι), x n ∈ S) → Tendsto (ε • x) l (𝓝 0)
V : Set E
hV : V ∈ 𝓝 0
hVb : Balanced 𝕝 V
n : ι
hn : ε n ≠ 0
hVS : ∀ (r : ℝ), 0 < r → ∃ a, r ≤ ‖a‖ ∧ ¬S ⊆ a • id V
a : 𝕝
haε : ‖(ε n)⁻¹‖ ≤ ‖a‖
haS : ¬S ⊆ a • id V
x : E
hxS : x ∈ S
hx : ¬x ∈ a • id V
hnx : ε n • ↑{ val := x, property := hxS } ∈ V
⊢ False
[PROOFSTEP]
rw [← Set.mem_inv_smul_set_iff₀ hn] at hnx
[GOAL]
case h.intro.intro.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁷ : NormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕝 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕝 E
ε : ι → 𝕝
l : Filter ι
inst✝ : NeBot l
hε : ∀ᶠ (n : ι) in l, ε n ≠ 0
S : Set E
H : ∀ (x : ι → E), (∀ (n : ι), x n ∈ S) → Tendsto (ε • x) l (𝓝 0)
V : Set E
hV : V ∈ 𝓝 0
hVb : Balanced 𝕝 V
n : ι
hn : ε n ≠ 0
hVS : ∀ (r : ℝ), 0 < r → ∃ a, r ≤ ‖a‖ ∧ ¬S ⊆ a • id V
a : 𝕝
haε : ‖(ε n)⁻¹‖ ≤ ‖a‖
haS : ¬S ⊆ a • id V
x : E
hxS : x ∈ S
hx : ¬x ∈ a • id V
hnx : ↑{ val := x, property := hxS } ∈ (ε n)⁻¹ • V
⊢ False
[PROOFSTEP]
exact hx (hVb.smul_mono haε hnx)
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁷ : NormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕝 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕝 E
ε : ι → 𝕝
l : Filter ι
inst✝ : NeBot l
hε : ∀ᶠ (n : ι) in l, ε n ≠ 0
S : Set E
H : ∀ (x : ι → E), (∀ (n : ι), x n ∈ S) → Tendsto (ε • x) l (𝓝 0)
V : Set E
hVS : ¬Absorbs 𝕝 (id V) S
hV : V ∈ 𝓝 0
hVb : Balanced 𝕝 V
this : ∀ᶠ (n : ι) in l, ∃ x, ¬ε n • ↑x ∈ V
⊢ False
[PROOFSTEP]
rcases this.choice with ⟨x, hx⟩
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁷ : NormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕝 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕝 E
ε : ι → 𝕝
l : Filter ι
inst✝ : NeBot l
hε : ∀ᶠ (n : ι) in l, ε n ≠ 0
S : Set E
H : ∀ (x : ι → E), (∀ (n : ι), x n ∈ S) → Tendsto (ε • x) l (𝓝 0)
V : Set E
hVS : ¬Absorbs 𝕝 (id V) S
hV : V ∈ 𝓝 0
hVb : Balanced 𝕝 V
this : ∀ᶠ (n : ι) in l, ∃ x, ¬ε n • ↑x ∈ V
x : ι → ↑S
hx : ∀ᶠ (x_1 : ι) in l, ¬ε x_1 • ↑(x x_1) ∈ V
⊢ False
[PROOFSTEP]
refine' Filter.frequently_false l (Filter.Eventually.frequently _)
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁷ : NormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕝 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕝 E
ε : ι → 𝕝
l : Filter ι
inst✝ : NeBot l
hε : ∀ᶠ (n : ι) in l, ε n ≠ 0
S : Set E
H : ∀ (x : ι → E), (∀ (n : ι), x n ∈ S) → Tendsto (ε • x) l (𝓝 0)
V : Set E
hVS : ¬Absorbs 𝕝 (id V) S
hV : V ∈ 𝓝 0
hVb : Balanced 𝕝 V
this : ∀ᶠ (n : ι) in l, ∃ x, ¬ε n • ↑x ∈ V
x : ι → ↑S
hx : ∀ᶠ (x_1 : ι) in l, ¬ε x_1 • ↑(x x_1) ∈ V
⊢ ∀ᶠ (x : ι) in l, False
[PROOFSTEP]
filter_upwards [hx, (H (_ ∘ x) fun n => (x n).2).eventually (eventually_mem_set.mpr hV)] using fun n => id
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
𝕝 : Type u_7
inst✝⁷ : NormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕝 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕝 E
ε : ι → 𝕝
l : Filter ι
inst✝ : NeBot l
hε : Tendsto ε l (𝓝[{0}ᶜ] 0)
S : Set E
⊢ ∀ᶠ (n : ι) in l, ε n ≠ 0
[PROOFSTEP]
exact hε self_mem_nhdsWithin
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : UniformSpace E
inst✝¹ : UniformAddGroup E
inst✝ : ContinuousSMul 𝕜 E
s : Set E
hs : TotallyBounded s
⊢ Bornology.IsVonNBounded 𝕜 s
[PROOFSTEP]
rw [totallyBounded_iff_subset_finite_iUnion_nhds_zero] at hs
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : UniformSpace E
inst✝¹ : UniformAddGroup E
inst✝ : ContinuousSMul 𝕜 E
s : Set E
hs✝ : TotallyBounded s
hs : ∀ (U : Set E), U ∈ 𝓝 0 → ∃ t, Set.Finite t ∧ s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ U
⊢ Bornology.IsVonNBounded 𝕜 s
[PROOFSTEP]
intro U hU
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : UniformSpace E
inst✝¹ : UniformAddGroup E
inst✝ : ContinuousSMul 𝕜 E
s : Set E
hs✝ : TotallyBounded s
hs : ∀ (U : Set E), U ∈ 𝓝 0 → ∃ t, Set.Finite t ∧ s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ U
U : Set E
hU : U ∈ 𝓝 0
⊢ Absorbs 𝕜 U s
[PROOFSTEP]
have h : Filter.Tendsto (fun x : E × E => x.fst + x.snd) (𝓝 (0, 0)) (𝓝 ((0 : E) + (0 : E))) := tendsto_add
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : UniformSpace E
inst✝¹ : UniformAddGroup E
inst✝ : ContinuousSMul 𝕜 E
s : Set E
hs✝ : TotallyBounded s
hs : ∀ (U : Set E), U ∈ 𝓝 0 → ∃ t, Set.Finite t ∧ s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ U
U : Set E
hU : U ∈ 𝓝 0
h : Tendsto (fun x => x.fst + x.snd) (𝓝 (0, 0)) (𝓝 (0 + 0))
⊢ Absorbs 𝕜 U s
[PROOFSTEP]
rw [add_zero] at h
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : UniformSpace E
inst✝¹ : UniformAddGroup E
inst✝ : ContinuousSMul 𝕜 E
s : Set E
hs✝ : TotallyBounded s
hs : ∀ (U : Set E), U ∈ 𝓝 0 → ∃ t, Set.Finite t ∧ s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ U
U : Set E
hU : U ∈ 𝓝 0
h : Tendsto (fun x => x.fst + x.snd) (𝓝 (0, 0)) (𝓝 0)
⊢ Absorbs 𝕜 U s
[PROOFSTEP]
have h' := (nhds_basis_balanced 𝕜 E).prod (nhds_basis_balanced 𝕜 E)
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : UniformSpace E
inst✝¹ : UniformAddGroup E
inst✝ : ContinuousSMul 𝕜 E
s : Set E
hs✝ : TotallyBounded s
hs : ∀ (U : Set E), U ∈ 𝓝 0 → ∃ t, Set.Finite t ∧ s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ U
U : Set E
hU : U ∈ 𝓝 0
h : Tendsto (fun x => x.fst + x.snd) (𝓝 (0, 0)) (𝓝 0)
h' :
  HasBasis (𝓝 0 ×ˢ 𝓝 0) (fun i => (i.fst ∈ 𝓝 0 ∧ Balanced 𝕜 i.fst) ∧ i.snd ∈ 𝓝 0 ∧ Balanced 𝕜 i.snd) fun i =>
    id i.fst ×ˢ id i.snd
⊢ Absorbs 𝕜 U s
[PROOFSTEP]
simp_rw [← nhds_prod_eq, id.def] at h'
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : UniformSpace E
inst✝¹ : UniformAddGroup E
inst✝ : ContinuousSMul 𝕜 E
s : Set E
hs✝ : TotallyBounded s
hs : ∀ (U : Set E), U ∈ 𝓝 0 → ∃ t, Set.Finite t ∧ s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ U
U : Set E
hU : U ∈ 𝓝 0
h : Tendsto (fun x => x.fst + x.snd) (𝓝 (0, 0)) (𝓝 0)
h' :
  HasBasis (𝓝 (0, 0)) (fun i => (i.fst ∈ 𝓝 0 ∧ Balanced 𝕜 i.fst) ∧ i.snd ∈ 𝓝 0 ∧ Balanced 𝕜 i.snd) fun i =>
    i.fst ×ˢ i.snd
⊢ Absorbs 𝕜 U s
[PROOFSTEP]
rcases h.basis_left h' U hU with ⟨x, hx, h''⟩
[GOAL]
case intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : UniformSpace E
inst✝¹ : UniformAddGroup E
inst✝ : ContinuousSMul 𝕜 E
s : Set E
hs✝ : TotallyBounded s
hs : ∀ (U : Set E), U ∈ 𝓝 0 → ∃ t, Set.Finite t ∧ s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ U
U : Set E
hU : U ∈ 𝓝 0
h : Tendsto (fun x => x.fst + x.snd) (𝓝 (0, 0)) (𝓝 0)
h' :
  HasBasis (𝓝 (0, 0)) (fun i => (i.fst ∈ 𝓝 0 ∧ Balanced 𝕜 i.fst) ∧ i.snd ∈ 𝓝 0 ∧ Balanced 𝕜 i.snd) fun i =>
    i.fst ×ˢ i.snd
x : Set E × Set E
hx : (x.fst ∈ 𝓝 0 ∧ Balanced 𝕜 x.fst) ∧ x.snd ∈ 𝓝 0 ∧ Balanced 𝕜 x.snd
h'' : MapsTo (fun x => x.fst + x.snd) (x.fst ×ˢ x.snd) U
⊢ Absorbs 𝕜 U s
[PROOFSTEP]
rcases hs x.snd hx.2.1 with ⟨t, ht, hs⟩
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : UniformSpace E
inst✝¹ : UniformAddGroup E
inst✝ : ContinuousSMul 𝕜 E
s : Set E
hs✝¹ : TotallyBounded s
hs✝ : ∀ (U : Set E), U ∈ 𝓝 0 → ∃ t, Set.Finite t ∧ s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ U
U : Set E
hU : U ∈ 𝓝 0
h : Tendsto (fun x => x.fst + x.snd) (𝓝 (0, 0)) (𝓝 0)
h' :
  HasBasis (𝓝 (0, 0)) (fun i => (i.fst ∈ 𝓝 0 ∧ Balanced 𝕜 i.fst) ∧ i.snd ∈ 𝓝 0 ∧ Balanced 𝕜 i.snd) fun i =>
    i.fst ×ˢ i.snd
x : Set E × Set E
hx : (x.fst ∈ 𝓝 0 ∧ Balanced 𝕜 x.fst) ∧ x.snd ∈ 𝓝 0 ∧ Balanced 𝕜 x.snd
h'' : MapsTo (fun x => x.fst + x.snd) (x.fst ×ˢ x.snd) U
t : Set E
ht : Set.Finite t
hs : s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ x.snd
⊢ Absorbs 𝕜 U s
[PROOFSTEP]
refine' Absorbs.mono_right _ hs
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : UniformSpace E
inst✝¹ : UniformAddGroup E
inst✝ : ContinuousSMul 𝕜 E
s : Set E
hs✝¹ : TotallyBounded s
hs✝ : ∀ (U : Set E), U ∈ 𝓝 0 → ∃ t, Set.Finite t ∧ s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ U
U : Set E
hU : U ∈ 𝓝 0
h : Tendsto (fun x => x.fst + x.snd) (𝓝 (0, 0)) (𝓝 0)
h' :
  HasBasis (𝓝 (0, 0)) (fun i => (i.fst ∈ 𝓝 0 ∧ Balanced 𝕜 i.fst) ∧ i.snd ∈ 𝓝 0 ∧ Balanced 𝕜 i.snd) fun i =>
    i.fst ×ˢ i.snd
x : Set E × Set E
hx : (x.fst ∈ 𝓝 0 ∧ Balanced 𝕜 x.fst) ∧ x.snd ∈ 𝓝 0 ∧ Balanced 𝕜 x.snd
h'' : MapsTo (fun x => x.fst + x.snd) (x.fst ×ˢ x.snd) U
t : Set E
ht : Set.Finite t
hs : s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ x.snd
⊢ Absorbs 𝕜 U (⋃ (y : E) (_ : y ∈ t), y +ᵥ x.snd)
[PROOFSTEP]
rw [ht.absorbs_iUnion]
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : UniformSpace E
inst✝¹ : UniformAddGroup E
inst✝ : ContinuousSMul 𝕜 E
s : Set E
hs✝¹ : TotallyBounded s
hs✝ : ∀ (U : Set E), U ∈ 𝓝 0 → ∃ t, Set.Finite t ∧ s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ U
U : Set E
hU : U ∈ 𝓝 0
h : Tendsto (fun x => x.fst + x.snd) (𝓝 (0, 0)) (𝓝 0)
h' :
  HasBasis (𝓝 (0, 0)) (fun i => (i.fst ∈ 𝓝 0 ∧ Balanced 𝕜 i.fst) ∧ i.snd ∈ 𝓝 0 ∧ Balanced 𝕜 i.snd) fun i =>
    i.fst ×ˢ i.snd
x : Set E × Set E
hx : (x.fst ∈ 𝓝 0 ∧ Balanced 𝕜 x.fst) ∧ x.snd ∈ 𝓝 0 ∧ Balanced 𝕜 x.snd
h'' : MapsTo (fun x => x.fst + x.snd) (x.fst ×ˢ x.snd) U
t : Set E
ht : Set.Finite t
hs : s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ x.snd
⊢ ∀ (i : E), i ∈ t → Absorbs 𝕜 U (i +ᵥ x.snd)
[PROOFSTEP]
have hx_fstsnd : x.fst + x.snd ⊆ U := by
  intro z hz
  rcases Set.mem_add.mp hz with ⟨z1, z2, hz1, hz2, hz⟩
  have hz' : (z1, z2) ∈ x.fst ×ˢ x.snd := ⟨hz1, hz2⟩
  simpa only [hz] using h'' hz'
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : UniformSpace E
inst✝¹ : UniformAddGroup E
inst✝ : ContinuousSMul 𝕜 E
s : Set E
hs✝¹ : TotallyBounded s
hs✝ : ∀ (U : Set E), U ∈ 𝓝 0 → ∃ t, Set.Finite t ∧ s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ U
U : Set E
hU : U ∈ 𝓝 0
h : Tendsto (fun x => x.fst + x.snd) (𝓝 (0, 0)) (𝓝 0)
h' :
  HasBasis (𝓝 (0, 0)) (fun i => (i.fst ∈ 𝓝 0 ∧ Balanced 𝕜 i.fst) ∧ i.snd ∈ 𝓝 0 ∧ Balanced 𝕜 i.snd) fun i =>
    i.fst ×ˢ i.snd
x : Set E × Set E
hx : (x.fst ∈ 𝓝 0 ∧ Balanced 𝕜 x.fst) ∧ x.snd ∈ 𝓝 0 ∧ Balanced 𝕜 x.snd
h'' : MapsTo (fun x => x.fst + x.snd) (x.fst ×ˢ x.snd) U
t : Set E
ht : Set.Finite t
hs : s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ x.snd
⊢ x.fst + x.snd ⊆ U
[PROOFSTEP]
intro z hz
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : UniformSpace E
inst✝¹ : UniformAddGroup E
inst✝ : ContinuousSMul 𝕜 E
s : Set E
hs✝¹ : TotallyBounded s
hs✝ : ∀ (U : Set E), U ∈ 𝓝 0 → ∃ t, Set.Finite t ∧ s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ U
U : Set E
hU : U ∈ 𝓝 0
h : Tendsto (fun x => x.fst + x.snd) (𝓝 (0, 0)) (𝓝 0)
h' :
  HasBasis (𝓝 (0, 0)) (fun i => (i.fst ∈ 𝓝 0 ∧ Balanced 𝕜 i.fst) ∧ i.snd ∈ 𝓝 0 ∧ Balanced 𝕜 i.snd) fun i =>
    i.fst ×ˢ i.snd
x : Set E × Set E
hx : (x.fst ∈ 𝓝 0 ∧ Balanced 𝕜 x.fst) ∧ x.snd ∈ 𝓝 0 ∧ Balanced 𝕜 x.snd
h'' : MapsTo (fun x => x.fst + x.snd) (x.fst ×ˢ x.snd) U
t : Set E
ht : Set.Finite t
hs : s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ x.snd
z : E
hz : z ∈ x.fst + x.snd
⊢ z ∈ U
[PROOFSTEP]
rcases Set.mem_add.mp hz with ⟨z1, z2, hz1, hz2, hz⟩
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : UniformSpace E
inst✝¹ : UniformAddGroup E
inst✝ : ContinuousSMul 𝕜 E
s : Set E
hs✝¹ : TotallyBounded s
hs✝ : ∀ (U : Set E), U ∈ 𝓝 0 → ∃ t, Set.Finite t ∧ s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ U
U : Set E
hU : U ∈ 𝓝 0
h : Tendsto (fun x => x.fst + x.snd) (𝓝 (0, 0)) (𝓝 0)
h' :
  HasBasis (𝓝 (0, 0)) (fun i => (i.fst ∈ 𝓝 0 ∧ Balanced 𝕜 i.fst) ∧ i.snd ∈ 𝓝 0 ∧ Balanced 𝕜 i.snd) fun i =>
    i.fst ×ˢ i.snd
x : Set E × Set E
hx : (x.fst ∈ 𝓝 0 ∧ Balanced 𝕜 x.fst) ∧ x.snd ∈ 𝓝 0 ∧ Balanced 𝕜 x.snd
h'' : MapsTo (fun x => x.fst + x.snd) (x.fst ×ˢ x.snd) U
t : Set E
ht : Set.Finite t
hs : s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ x.snd
z : E
hz✝ : z ∈ x.fst + x.snd
z1 z2 : E
hz1 : z1 ∈ x.fst
hz2 : z2 ∈ x.snd
hz : z1 + z2 = z
⊢ z ∈ U
[PROOFSTEP]
have hz' : (z1, z2) ∈ x.fst ×ˢ x.snd := ⟨hz1, hz2⟩
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : UniformSpace E
inst✝¹ : UniformAddGroup E
inst✝ : ContinuousSMul 𝕜 E
s : Set E
hs✝¹ : TotallyBounded s
hs✝ : ∀ (U : Set E), U ∈ 𝓝 0 → ∃ t, Set.Finite t ∧ s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ U
U : Set E
hU : U ∈ 𝓝 0
h : Tendsto (fun x => x.fst + x.snd) (𝓝 (0, 0)) (𝓝 0)
h' :
  HasBasis (𝓝 (0, 0)) (fun i => (i.fst ∈ 𝓝 0 ∧ Balanced 𝕜 i.fst) ∧ i.snd ∈ 𝓝 0 ∧ Balanced 𝕜 i.snd) fun i =>
    i.fst ×ˢ i.snd
x : Set E × Set E
hx : (x.fst ∈ 𝓝 0 ∧ Balanced 𝕜 x.fst) ∧ x.snd ∈ 𝓝 0 ∧ Balanced 𝕜 x.snd
h'' : MapsTo (fun x => x.fst + x.snd) (x.fst ×ˢ x.snd) U
t : Set E
ht : Set.Finite t
hs : s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ x.snd
z : E
hz✝ : z ∈ x.fst + x.snd
z1 z2 : E
hz1 : z1 ∈ x.fst
hz2 : z2 ∈ x.snd
hz : z1 + z2 = z
hz' : (z1, z2) ∈ x.fst ×ˢ x.snd
⊢ z ∈ U
[PROOFSTEP]
simpa only [hz] using h'' hz'
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : UniformSpace E
inst✝¹ : UniformAddGroup E
inst✝ : ContinuousSMul 𝕜 E
s : Set E
hs✝¹ : TotallyBounded s
hs✝ : ∀ (U : Set E), U ∈ 𝓝 0 → ∃ t, Set.Finite t ∧ s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ U
U : Set E
hU : U ∈ 𝓝 0
h : Tendsto (fun x => x.fst + x.snd) (𝓝 (0, 0)) (𝓝 0)
h' :
  HasBasis (𝓝 (0, 0)) (fun i => (i.fst ∈ 𝓝 0 ∧ Balanced 𝕜 i.fst) ∧ i.snd ∈ 𝓝 0 ∧ Balanced 𝕜 i.snd) fun i =>
    i.fst ×ˢ i.snd
x : Set E × Set E
hx : (x.fst ∈ 𝓝 0 ∧ Balanced 𝕜 x.fst) ∧ x.snd ∈ 𝓝 0 ∧ Balanced 𝕜 x.snd
h'' : MapsTo (fun x => x.fst + x.snd) (x.fst ×ˢ x.snd) U
t : Set E
ht : Set.Finite t
hs : s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ x.snd
hx_fstsnd : x.fst + x.snd ⊆ U
⊢ ∀ (i : E), i ∈ t → Absorbs 𝕜 U (i +ᵥ x.snd)
[PROOFSTEP]
refine' fun y _ => Absorbs.mono_left _ hx_fstsnd
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : UniformSpace E
inst✝¹ : UniformAddGroup E
inst✝ : ContinuousSMul 𝕜 E
s : Set E
hs✝¹ : TotallyBounded s
hs✝ : ∀ (U : Set E), U ∈ 𝓝 0 → ∃ t, Set.Finite t ∧ s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ U
U : Set E
hU : U ∈ 𝓝 0
h : Tendsto (fun x => x.fst + x.snd) (𝓝 (0, 0)) (𝓝 0)
h' :
  HasBasis (𝓝 (0, 0)) (fun i => (i.fst ∈ 𝓝 0 ∧ Balanced 𝕜 i.fst) ∧ i.snd ∈ 𝓝 0 ∧ Balanced 𝕜 i.snd) fun i =>
    i.fst ×ˢ i.snd
x : Set E × Set E
hx : (x.fst ∈ 𝓝 0 ∧ Balanced 𝕜 x.fst) ∧ x.snd ∈ 𝓝 0 ∧ Balanced 𝕜 x.snd
h'' : MapsTo (fun x => x.fst + x.snd) (x.fst ×ˢ x.snd) U
t : Set E
ht : Set.Finite t
hs : s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ x.snd
hx_fstsnd : x.fst + x.snd ⊆ U
y : E
x✝ : y ∈ t
⊢ Absorbs 𝕜 (x.fst + x.snd) (y +ᵥ x.snd)
[PROOFSTEP]
rw [← Set.singleton_vadd, vadd_eq_add]
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : UniformSpace E
inst✝¹ : UniformAddGroup E
inst✝ : ContinuousSMul 𝕜 E
s : Set E
hs✝¹ : TotallyBounded s
hs✝ : ∀ (U : Set E), U ∈ 𝓝 0 → ∃ t, Set.Finite t ∧ s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ U
U : Set E
hU : U ∈ 𝓝 0
h : Tendsto (fun x => x.fst + x.snd) (𝓝 (0, 0)) (𝓝 0)
h' :
  HasBasis (𝓝 (0, 0)) (fun i => (i.fst ∈ 𝓝 0 ∧ Balanced 𝕜 i.fst) ∧ i.snd ∈ 𝓝 0 ∧ Balanced 𝕜 i.snd) fun i =>
    i.fst ×ˢ i.snd
x : Set E × Set E
hx : (x.fst ∈ 𝓝 0 ∧ Balanced 𝕜 x.fst) ∧ x.snd ∈ 𝓝 0 ∧ Balanced 𝕜 x.snd
h'' : MapsTo (fun x => x.fst + x.snd) (x.fst ×ˢ x.snd) U
t : Set E
ht : Set.Finite t
hs : s ⊆ ⋃ (y : E) (_ : y ∈ t), y +ᵥ x.snd
hx_fstsnd : x.fst + x.snd ⊆ U
y : E
x✝ : y ∈ t
⊢ Absorbs 𝕜 (x.fst + x.snd) ({y} + x.snd)
[PROOFSTEP]
exact (absorbent_nhds_zero hx.1.1).absorbs.add hx.2.2.absorbs_self
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
r : ℝ
⊢ Bornology.IsVonNBounded 𝕜 (Metric.ball 0 r)
[PROOFSTEP]
rw [Metric.nhds_basis_ball.isVonNBounded_basis_iff, ← ball_normSeminorm 𝕜 E]
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
r : ℝ
⊢ ∀ (i : ℝ), 0 < i → Absorbs 𝕜 (Seminorm.ball (normSeminorm 𝕜 E) 0 i) (Seminorm.ball (normSeminorm 𝕜 E) 0 r)
[PROOFSTEP]
exact fun ε hε => (normSeminorm 𝕜 E).ball_zero_absorbs_ball_zero hε
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
r : ℝ
⊢ r < r + 1
[PROOFSTEP]
linarith
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ Bornology.IsVonNBounded 𝕜 s ↔ Bornology.IsBounded s
[PROOFSTEP]
rw [← Metric.bounded_iff_isBounded, Metric.bounded_iff_subset_ball (0 : E)]
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ Bornology.IsVonNBounded 𝕜 s ↔ ∃ r, s ⊆ Metric.closedBall 0 r
[PROOFSTEP]
constructor
[GOAL]
case mp
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ Bornology.IsVonNBounded 𝕜 s → ∃ r, s ⊆ Metric.closedBall 0 r
[PROOFSTEP]
intro h
[GOAL]
case mp
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
h : Bornology.IsVonNBounded 𝕜 s
⊢ ∃ r, s ⊆ Metric.closedBall 0 r
[PROOFSTEP]
rcases h (Metric.ball_mem_nhds 0 zero_lt_one) with ⟨ρ, hρ, hρball⟩
[GOAL]
case mp.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
h : Bornology.IsVonNBounded 𝕜 s
ρ : ℝ
hρ : 0 < ρ
hρball : ∀ (a : 𝕜), ρ ≤ ‖a‖ → s ⊆ a • Metric.ball 0 1
⊢ ∃ r, s ⊆ Metric.closedBall 0 r
[PROOFSTEP]
rcases NormedField.exists_lt_norm 𝕜 ρ with ⟨a, ha⟩
[GOAL]
case mp.intro.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
h : Bornology.IsVonNBounded 𝕜 s
ρ : ℝ
hρ : 0 < ρ
hρball : ∀ (a : 𝕜), ρ ≤ ‖a‖ → s ⊆ a • Metric.ball 0 1
a : 𝕜
ha : ρ < ‖a‖
⊢ ∃ r, s ⊆ Metric.closedBall 0 r
[PROOFSTEP]
specialize hρball a ha.le
[GOAL]
case mp.intro.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
h : Bornology.IsVonNBounded 𝕜 s
ρ : ℝ
hρ : 0 < ρ
a : 𝕜
ha : ρ < ‖a‖
hρball : s ⊆ a • Metric.ball 0 1
⊢ ∃ r, s ⊆ Metric.closedBall 0 r
[PROOFSTEP]
rw [← ball_normSeminorm 𝕜 E, Seminorm.smul_ball_zero (norm_pos_iff.1 <| hρ.trans ha), ball_normSeminorm, mul_one] at
  hρball
[GOAL]
case mp.intro.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
h : Bornology.IsVonNBounded 𝕜 s
ρ : ℝ
hρ : 0 < ρ
a : 𝕜
ha : ρ < ‖a‖
hρball : s ⊆ Metric.ball 0 ‖a‖
⊢ ∃ r, s ⊆ Metric.closedBall 0 r
[PROOFSTEP]
exact ⟨‖a‖, hρball.trans Metric.ball_subset_closedBall⟩
[GOAL]
case mpr
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ (∃ r, s ⊆ Metric.closedBall 0 r) → Bornology.IsVonNBounded 𝕜 s
[PROOFSTEP]
exact fun ⟨C, hC⟩ => (isVonNBounded_closedBall 𝕜 E C).subset hC
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ Bornology.IsVonNBounded 𝕜 s ↔ ∃ r, ∀ (x : E), x ∈ s → ‖x‖ ≤ r
[PROOFSTEP]
rw [NormedSpace.isVonNBounded_iff, ← Metric.bounded_iff_isBounded, bounded_iff_forall_norm_le]
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : E' → E
s : Set E'
⊢ Bornology.IsVonNBounded 𝕜 (f '' s) ↔ ∃ r, ∀ (x : E'), x ∈ s → ‖f x‖ ≤ r
[PROOFSTEP]
simp_rw [isVonNBounded_iff', Set.ball_image_iff]
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
⊢ Bornology.vonNBornology 𝕜 E = PseudoMetricSpace.toBornology
[PROOFSTEP]
rw [Bornology.ext_iff_isBounded]
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
⊢ ∀ (s : Set E), Bornology.IsBounded s ↔ Bornology.IsBounded s
[PROOFSTEP]
intro s
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ Bornology.IsBounded s ↔ Bornology.IsBounded s
[PROOFSTEP]
rw [Bornology.isBounded_iff_isVonNBounded]
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ Bornology.IsVonNBounded 𝕜 s ↔ Bornology.IsBounded s
[PROOFSTEP]
exact isVonNBounded_iff 𝕜 E s
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ Bornology.IsBounded s ↔ ∃ a, s ⊆ a • Metric.ball 0 1
[PROOFSTEP]
rw [← isVonNBounded_iff 𝕜]
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ Bornology.IsVonNBounded 𝕜 s ↔ ∃ a, s ⊆ a • Metric.ball 0 1
[PROOFSTEP]
constructor
[GOAL]
case mp
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ Bornology.IsVonNBounded 𝕜 s → ∃ a, s ⊆ a • Metric.ball 0 1
[PROOFSTEP]
intro h
[GOAL]
case mp
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
h : Bornology.IsVonNBounded 𝕜 s
⊢ ∃ a, s ⊆ a • Metric.ball 0 1
[PROOFSTEP]
rcases h (Metric.ball_mem_nhds 0 zero_lt_one) with ⟨ρ, _, hρball⟩
[GOAL]
case mp.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
h : Bornology.IsVonNBounded 𝕜 s
ρ : ℝ
left✝ : 0 < ρ
hρball : ∀ (a : 𝕜), ρ ≤ ‖a‖ → s ⊆ a • Metric.ball 0 1
⊢ ∃ a, s ⊆ a • Metric.ball 0 1
[PROOFSTEP]
rcases NormedField.exists_lt_norm 𝕜 ρ with ⟨a, ha⟩
[GOAL]
case mp.intro.intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
h : Bornology.IsVonNBounded 𝕜 s
ρ : ℝ
left✝ : 0 < ρ
hρball : ∀ (a : 𝕜), ρ ≤ ‖a‖ → s ⊆ a • Metric.ball 0 1
a : 𝕜
ha : ρ < ‖a‖
⊢ ∃ a, s ⊆ a • Metric.ball 0 1
[PROOFSTEP]
exact ⟨a, hρball a ha.le⟩
[GOAL]
case mpr
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ (∃ a, s ⊆ a • Metric.ball 0 1) → Bornology.IsVonNBounded 𝕜 s
[PROOFSTEP]
rintro ⟨a, ha⟩
[GOAL]
case mpr.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
a : 𝕜
ha : s ⊆ a • Metric.ball 0 1
⊢ Bornology.IsVonNBounded 𝕜 s
[PROOFSTEP]
exact ((isVonNBounded_ball 𝕜 E 1).image (a • (1 : E →L[𝕜] E))).subset ha
[GOAL]
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ Bornology.IsBounded s ↔ ∃ a, s ⊆ a • Metric.closedBall 0 1
[PROOFSTEP]
constructor
[GOAL]
case mp
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ Bornology.IsBounded s → ∃ a, s ⊆ a • Metric.closedBall 0 1
[PROOFSTEP]
rw [isBounded_iff_subset_smul_ball 𝕜]
[GOAL]
case mp
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ (∃ a, s ⊆ a • Metric.ball 0 1) → ∃ a, s ⊆ a • Metric.closedBall 0 1
[PROOFSTEP]
exact Exists.imp fun a ha => ha.trans <| Set.smul_set_mono <| Metric.ball_subset_closedBall
[GOAL]
case mpr
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ (∃ a, s ⊆ a • Metric.closedBall 0 1) → Bornology.IsBounded s
[PROOFSTEP]
rw [← isVonNBounded_iff 𝕜]
[GOAL]
case mpr
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ (∃ a, s ⊆ a • Metric.closedBall 0 1) → Bornology.IsVonNBounded 𝕜 s
[PROOFSTEP]
rintro ⟨a, ha⟩
[GOAL]
case mpr.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
a : 𝕜
ha : s ⊆ a • Metric.closedBall 0 1
⊢ Bornology.IsVonNBounded 𝕜 s
[PROOFSTEP]
exact ((isVonNBounded_closedBall 𝕜 E 1).image (a • (1 : E →L[𝕜] E))).subset ha


[GOAL]
C : Type u_1
inst✝¹ : Category.{?u.8376, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
n : ℕ
⊢ underlying.obj (objX X (n + 1 + 1)) ⟶ underlying.obj (objX X (n + 1))
[PROOFSTEP]
refine'
  factorThru _ (arrow _ ≫ X.δ (0 : Fin (n + 3)))
    _
      -- We now need to show that it factors!
          -- A morphism factors through an intersection of subobjects if it factors through each.
[GOAL]
C : Type u_1
inst✝¹ : Category.{?u.8376, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
n : ℕ
⊢ Factors (objX X (n + 1)) (arrow (objX X (n + 1 + 1)) ≫ SimplicialObject.δ X 0)
[PROOFSTEP]
refine'
  (finset_inf_factors _).mpr fun i _ =>
    _
      -- A morphism `f` factors through the kernel of `g` exactly if `f ≫ g = 0`.
[GOAL]
C : Type u_1
inst✝¹ : Category.{?u.8376, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
n : ℕ
i : Fin (Nat.add n 0 + 1)
x✝ : i ∈ Finset.univ
⊢ Factors (kernelSubobject (SimplicialObject.δ X (Fin.succ i))) (arrow (objX X (n + 1 + 1)) ≫ SimplicialObject.δ X 0)
[PROOFSTEP]
apply kernelSubobject_factors
[GOAL]
case w
C : Type u_1
inst✝¹ : Category.{?u.8376, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
n : ℕ
i : Fin (Nat.add n 0 + 1)
x✝ : i ∈ Finset.univ
⊢ (arrow (objX X (n + 1 + 1)) ≫ SimplicialObject.δ X 0) ≫ SimplicialObject.δ X (Fin.succ i) = 0
[PROOFSTEP]
dsimp [objX]
  -- Use a simplicial identity
[GOAL]
case w
C : Type u_1
inst✝¹ : Category.{?u.8376, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
n : ℕ
i : Fin (Nat.add n 0 + 1)
x✝ : i ∈ Finset.univ
⊢ (arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k))) ≫
        SimplicialObject.δ X 0) ≫
      SimplicialObject.δ X (Fin.succ i) =
    0
[PROOFSTEP]
erw [Category.assoc, ← X.δ_comp_δ (Fin.zero_le i.succ)]
  -- We can rewrite the arrow out of the intersection of all the kernels as a composition
      -- of a morphism we don't care about with the arrow out of the kernel of `X.δ i.succ.succ`.
[GOAL]
case w
C : Type u_1
inst✝¹ : Category.{?u.8376, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
n : ℕ
i : Fin (Nat.add n 0 + 1)
x✝ : i ∈ Finset.univ
⊢ arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k))) ≫
      SimplicialObject.δ X (Fin.succ (Fin.succ i)) ≫ SimplicialObject.δ X 0 =
    0
[PROOFSTEP]
rw [← factorThru_arrow _ _ (finset_inf_arrow_factors Finset.univ _ i.succ (by simp)), Category.assoc,
  kernelSubobject_arrow_comp_assoc, zero_comp, comp_zero]
[GOAL]
C : Type u_1
inst✝¹ : Category.{?u.8376, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
n : ℕ
i : Fin (Nat.add n 0 + 1)
x✝ : i ∈ Finset.univ
⊢ Fin.succ i ∈ Finset.univ
[PROOFSTEP]
simp
[GOAL]
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
n : ℕ
⊢ objD X (n + 1) ≫ objD X n = 0
[PROOFSTEP]
rcases n with _ | n
[GOAL]
case zero
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
⊢ objD X (Nat.zero + 1) ≫ objD X Nat.zero = 0
[PROOFSTEP]
dsimp [objD]
[GOAL]
case succ
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
n : ℕ
⊢ objD X (Nat.succ n + 1) ≫ objD X (Nat.succ n) = 0
[PROOFSTEP]
dsimp [objD]
[GOAL]
case zero
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
⊢ factorThru (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k)))
        (arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k))) ≫
          SimplicialObject.δ X 0)
        (_ :
          Factors (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k)))
            (arrow (objX X (0 + 1 + 1)) ≫ SimplicialObject.δ X 0)) ≫
      arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k))) ≫
        SimplicialObject.δ X 0 ≫ inv (arrow ⊤) =
    0
[PROOFSTEP]
erw [Subobject.factorThru_arrow_assoc, Category.assoc, ← X.δ_comp_δ_assoc (Fin.zero_le (0 : Fin 2)), ←
  factorThru_arrow _ _ (finset_inf_arrow_factors Finset.univ _ (0 : Fin 2) (by simp)), Category.assoc,
  kernelSubobject_arrow_comp_assoc, zero_comp, comp_zero]
[GOAL]
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
⊢ 0 ∈ Finset.univ
[PROOFSTEP]
simp
[GOAL]
case succ
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
n : ℕ
⊢ factorThru (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k)))
        (arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k))) ≫
          SimplicialObject.δ X 0)
        (_ :
          Factors (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k)))
            (arrow (objX X (n + 1 + 1 + 1)) ≫ SimplicialObject.δ X 0)) ≫
      factorThru (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k)))
        (arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k))) ≫
          SimplicialObject.δ X 0)
        (_ :
          Factors (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k)))
            (arrow (objX X (n + 1 + 1)) ≫ SimplicialObject.δ X 0)) =
    0
[PROOFSTEP]
erw [factorThru_right, factorThru_eq_zero, factorThru_arrow_assoc, Category.assoc, ←
  X.δ_comp_δ (Fin.zero_le (0 : Fin (n + 3))), ←
  factorThru_arrow _ _ (finset_inf_arrow_factors Finset.univ _ (0 : Fin (n + 3)) (by simp)), Category.assoc,
  kernelSubobject_arrow_comp_assoc, zero_comp, comp_zero]
[GOAL]
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
n : ℕ
⊢ 0 ∈ Finset.univ
[PROOFSTEP]
simp
[GOAL]
C : Type u_1
inst✝¹ : Category.{?u.84232, u_1} C
inst✝ : Abelian C
X Y : SimplicialObject C
f✝ f : X ⟶ Y
n : ℕ
⊢ Factors (objX Y n) (arrow (objX X n) ≫ NatTrans.app f (op (SimplexCategory.mk n)))
[PROOFSTEP]
cases n
[GOAL]
case zero
C : Type u_1
inst✝¹ : Category.{?u.84232, u_1} C
inst✝ : Abelian C
X Y : SimplicialObject C
f✝ f : X ⟶ Y
⊢ Factors (objX Y Nat.zero) (arrow (objX X Nat.zero) ≫ NatTrans.app f (op (SimplexCategory.mk Nat.zero)))
[PROOFSTEP]
dsimp
[GOAL]
case succ
C : Type u_1
inst✝¹ : Category.{?u.84232, u_1} C
inst✝ : Abelian C
X Y : SimplicialObject C
f✝ f : X ⟶ Y
n✝ : ℕ
⊢ Factors (objX Y (Nat.succ n✝)) (arrow (objX X (Nat.succ n✝)) ≫ NatTrans.app f (op (SimplexCategory.mk (Nat.succ n✝))))
[PROOFSTEP]
dsimp
[GOAL]
case zero
C : Type u_1
inst✝¹ : Category.{?u.84232, u_1} C
inst✝ : Abelian C
X Y : SimplicialObject C
f✝ f : X ⟶ Y
⊢ Factors ⊤ (arrow ⊤ ≫ NatTrans.app f (op (SimplexCategory.mk 0)))
[PROOFSTEP]
apply top_factors
[GOAL]
case succ
C : Type u_1
inst✝¹ : Category.{?u.84232, u_1} C
inst✝ : Abelian C
X Y : SimplicialObject C
f✝ f : X ⟶ Y
n✝ : ℕ
⊢ Factors (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ Y (Fin.succ k)))
    (arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k))) ≫
      NatTrans.app f (op (SimplexCategory.mk (Nat.succ n✝))))
[PROOFSTEP]
refine' (finset_inf_factors _).mpr fun i _ => kernelSubobject_factors _ _ _
[GOAL]
case succ
C : Type u_1
inst✝¹ : Category.{?u.84232, u_1} C
inst✝ : Abelian C
X Y : SimplicialObject C
f✝ f : X ⟶ Y
n✝ : ℕ
i : Fin (n✝ + 1)
x✝ : i ∈ Finset.univ
⊢ (arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k))) ≫
        NatTrans.app f (op (SimplexCategory.mk (Nat.succ n✝)))) ≫
      SimplicialObject.δ Y (Fin.succ i) =
    0
[PROOFSTEP]
erw [Category.assoc, ← f.naturality, ← factorThru_arrow _ _ (finset_inf_arrow_factors Finset.univ _ i (by simp)),
  Category.assoc, kernelSubobject_arrow_comp_assoc, zero_comp, comp_zero]
[GOAL]
C : Type u_1
inst✝¹ : Category.{?u.84232, u_1} C
inst✝ : Abelian C
X Y : SimplicialObject C
f✝ f : X ⟶ Y
n✝ : ℕ
i : Fin (n✝ + 1)
x✝ : i ∈ Finset.univ
⊢ i ∈ Finset.univ
[PROOFSTEP]
simp
[GOAL]
C : Type u_1
inst✝¹ : Category.{?u.84232, u_1} C
inst✝ : Abelian C
X Y : SimplicialObject C
f✝ f : X ⟶ Y
n : ℕ
⊢ (fun n =>
          factorThru (objX Y n) (arrow (objX X n) ≫ NatTrans.app f (op (SimplexCategory.mk n)))
            (_ : Factors (objX Y n) (arrow (objX X n) ≫ NatTrans.app f (op (SimplexCategory.mk n)))))
        (n + 1) ≫
      objD Y n =
    objD X n ≫
      (fun n =>
          factorThru (objX Y n) (arrow (objX X n) ≫ NatTrans.app f (op (SimplexCategory.mk n)))
            (_ : Factors (objX Y n) (arrow (objX X n) ≫ NatTrans.app f (op (SimplexCategory.mk n)))))
        n
[PROOFSTEP]
cases n
[GOAL]
case zero
C : Type u_1
inst✝¹ : Category.{?u.84232, u_1} C
inst✝ : Abelian C
X Y : SimplicialObject C
f✝ f : X ⟶ Y
⊢ (fun n =>
          factorThru (objX Y n) (arrow (objX X n) ≫ NatTrans.app f (op (SimplexCategory.mk n)))
            (_ : Factors (objX Y n) (arrow (objX X n) ≫ NatTrans.app f (op (SimplexCategory.mk n)))))
        (Nat.zero + 1) ≫
      objD Y Nat.zero =
    objD X Nat.zero ≫
      (fun n =>
          factorThru (objX Y n) (arrow (objX X n) ≫ NatTrans.app f (op (SimplexCategory.mk n)))
            (_ : Factors (objX Y n) (arrow (objX X n) ≫ NatTrans.app f (op (SimplexCategory.mk n)))))
        Nat.zero
[PROOFSTEP]
dsimp [objD, objX]
[GOAL]
case succ
C : Type u_1
inst✝¹ : Category.{?u.84232, u_1} C
inst✝ : Abelian C
X Y : SimplicialObject C
f✝ f : X ⟶ Y
n✝ : ℕ
⊢ (fun n =>
          factorThru (objX Y n) (arrow (objX X n) ≫ NatTrans.app f (op (SimplexCategory.mk n)))
            (_ : Factors (objX Y n) (arrow (objX X n) ≫ NatTrans.app f (op (SimplexCategory.mk n)))))
        (Nat.succ n✝ + 1) ≫
      objD Y (Nat.succ n✝) =
    objD X (Nat.succ n✝) ≫
      (fun n =>
          factorThru (objX Y n) (arrow (objX X n) ≫ NatTrans.app f (op (SimplexCategory.mk n)))
            (_ : Factors (objX Y n) (arrow (objX X n) ≫ NatTrans.app f (op (SimplexCategory.mk n)))))
        (Nat.succ n✝)
[PROOFSTEP]
dsimp [objD, objX]
[GOAL]
case zero
C : Type u_1
inst✝¹ : Category.{?u.84232, u_1} C
inst✝ : Abelian C
X Y : SimplicialObject C
f✝ f : X ⟶ Y
⊢ factorThru (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ Y (Fin.succ k)))
        (arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k))) ≫
          NatTrans.app f (op (SimplexCategory.mk (0 + 1))))
        (_ :
          Factors (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ Y (Fin.succ k)))
            (arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k))) ≫
              NatTrans.app f (op (SimplexCategory.mk (Nat.succ 0))))) ≫
      arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ Y (Fin.succ k))) ≫
        SimplicialObject.δ Y 0 ≫ inv (arrow ⊤) =
    (arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k))) ≫
        SimplicialObject.δ X 0 ≫ inv (arrow ⊤)) ≫
      factorThru ⊤ (arrow ⊤ ≫ NatTrans.app f (op (SimplexCategory.mk 0)))
        (_ : Factors ⊤ (arrow ⊤ ≫ NatTrans.app f (op (SimplexCategory.mk 0))))
[PROOFSTEP]
aesop_cat
[GOAL]
case succ
C : Type u_1
inst✝¹ : Category.{?u.84232, u_1} C
inst✝ : Abelian C
X Y : SimplicialObject C
f✝ f : X ⟶ Y
n✝ : ℕ
⊢ factorThru (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ Y (Fin.succ k)))
        (arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k))) ≫
          NatTrans.app f (op (SimplexCategory.mk (Nat.succ n✝ + 1))))
        (_ :
          Factors (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ Y (Fin.succ k)))
            (arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k))) ≫
              NatTrans.app f (op (SimplexCategory.mk (Nat.succ (Nat.succ n✝)))))) ≫
      factorThru (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ Y (Fin.succ k)))
        (arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ Y (Fin.succ k))) ≫
          SimplicialObject.δ Y 0)
        (_ :
          Factors (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ Y (Fin.succ k)))
            (arrow (objX Y (n✝ + 1 + 1)) ≫ SimplicialObject.δ Y 0)) =
    factorThru (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k)))
        (arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k))) ≫
          SimplicialObject.δ X 0)
        (_ :
          Factors (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k)))
            (arrow (objX X (n✝ + 1 + 1)) ≫ SimplicialObject.δ X 0)) ≫
      factorThru (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ Y (Fin.succ k)))
        (arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k))) ≫
          NatTrans.app f (op (SimplexCategory.mk (Nat.succ n✝))))
        (_ :
          Factors (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ Y (Fin.succ k)))
            (arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k))) ≫
              NatTrans.app f (op (SimplexCategory.mk (Nat.succ n✝)))))
[PROOFSTEP]
aesop_cat
[GOAL]
C : Type u_1
inst✝¹ : Category.{?u.127901, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
⊢ { obj := obj, map := fun {X Y} f => map f }.map (𝟙 X) = 𝟙 ({ obj := obj, map := fun {X Y} f => map f }.obj X)
[PROOFSTEP]
ext (_ | _)
[GOAL]
case h.zero
C : Type u_1
inst✝¹ : Category.{?u.127901, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
⊢ HomologicalComplex.Hom.f ({ obj := obj, map := fun {X Y} f => map f }.map (𝟙 X)) Nat.zero =
    HomologicalComplex.Hom.f (𝟙 ({ obj := obj, map := fun {X Y} f => map f }.obj X)) Nat.zero
[PROOFSTEP]
dsimp
[GOAL]
case h.succ
C : Type u_1
inst✝¹ : Category.{?u.127901, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
n✝ : ℕ
⊢ HomologicalComplex.Hom.f ({ obj := obj, map := fun {X Y} f => map f }.map (𝟙 X)) (Nat.succ n✝) =
    HomologicalComplex.Hom.f (𝟙 ({ obj := obj, map := fun {X Y} f => map f }.obj X)) (Nat.succ n✝)
[PROOFSTEP]
dsimp
[GOAL]
case h.zero
C : Type u_1
inst✝¹ : Category.{?u.127901, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
⊢ Subobject.factorThru ⊤ (Subobject.arrow ⊤ ≫ 𝟙 (X.obj (op (SimplexCategory.mk 0))))
      (_ : Subobject.Factors (objX X 0) (Subobject.arrow (objX X 0) ≫ NatTrans.app (𝟙 X) (op (SimplexCategory.mk 0)))) =
    𝟙 (Subobject.underlying.obj ⊤)
[PROOFSTEP]
aesop_cat
[GOAL]
case h.succ
C : Type u_1
inst✝¹ : Category.{?u.127901, u_1} C
inst✝ : Abelian C
X : SimplicialObject C
n✝ : ℕ
⊢ Subobject.factorThru (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k)))
      (Subobject.arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k))) ≫
        𝟙 (X.obj (op (SimplexCategory.mk (Nat.succ n✝)))))
      (_ :
        Subobject.Factors (objX X (Nat.succ n✝))
          (Subobject.arrow (objX X (Nat.succ n✝)) ≫ NatTrans.app (𝟙 X) (op (SimplexCategory.mk (Nat.succ n✝))))) =
    𝟙 (Subobject.underlying.obj (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X (Fin.succ k))))
[PROOFSTEP]
aesop_cat
[GOAL]
C : Type u_1
inst✝¹ : Category.{?u.127901, u_1} C
inst✝ : Abelian C
X✝ Y✝ Z✝ : SimplicialObject C
f : X✝ ⟶ Y✝
g : Y✝ ⟶ Z✝
⊢ { obj := obj, map := fun {X Y} f => map f }.map (f ≫ g) =
    { obj := obj, map := fun {X Y} f => map f }.map f ≫ { obj := obj, map := fun {X Y} f => map f }.map g
[PROOFSTEP]
ext (_ | _)
[GOAL]
case h.zero
C : Type u_1
inst✝¹ : Category.{?u.127901, u_1} C
inst✝ : Abelian C
X✝ Y✝ Z✝ : SimplicialObject C
f : X✝ ⟶ Y✝
g : Y✝ ⟶ Z✝
⊢ HomologicalComplex.Hom.f ({ obj := obj, map := fun {X Y} f => map f }.map (f ≫ g)) Nat.zero =
    HomologicalComplex.Hom.f
      ({ obj := obj, map := fun {X Y} f => map f }.map f ≫ { obj := obj, map := fun {X Y} f => map f }.map g) Nat.zero
[PROOFSTEP]
apply Subobject.eq_of_comp_arrow_eq
[GOAL]
case h.succ
C : Type u_1
inst✝¹ : Category.{?u.127901, u_1} C
inst✝ : Abelian C
X✝ Y✝ Z✝ : SimplicialObject C
f : X✝ ⟶ Y✝
g : Y✝ ⟶ Z✝
n✝ : ℕ
⊢ HomologicalComplex.Hom.f ({ obj := obj, map := fun {X Y} f => map f }.map (f ≫ g)) (Nat.succ n✝) =
    HomologicalComplex.Hom.f
      ({ obj := obj, map := fun {X Y} f => map f }.map f ≫ { obj := obj, map := fun {X Y} f => map f }.map g)
      (Nat.succ n✝)
[PROOFSTEP]
apply Subobject.eq_of_comp_arrow_eq
[GOAL]
case h.zero.h
C : Type u_1
inst✝¹ : Category.{?u.127901, u_1} C
inst✝ : Abelian C
X✝ Y✝ Z✝ : SimplicialObject C
f : X✝ ⟶ Y✝
g : Y✝ ⟶ Z✝
⊢ HomologicalComplex.Hom.f ({ obj := obj, map := fun {X Y} f => map f }.map (f ≫ g)) Nat.zero ≫
      Subobject.arrow (objX Z✝ Nat.zero) =
    HomologicalComplex.Hom.f
        ({ obj := obj, map := fun {X Y} f => map f }.map f ≫ { obj := obj, map := fun {X Y} f => map f }.map g)
        Nat.zero ≫
      Subobject.arrow (objX Z✝ Nat.zero)
[PROOFSTEP]
dsimp
[GOAL]
case h.succ.h
C : Type u_1
inst✝¹ : Category.{?u.127901, u_1} C
inst✝ : Abelian C
X✝ Y✝ Z✝ : SimplicialObject C
f : X✝ ⟶ Y✝
g : Y✝ ⟶ Z✝
n✝ : ℕ
⊢ HomologicalComplex.Hom.f ({ obj := obj, map := fun {X Y} f => map f }.map (f ≫ g)) (Nat.succ n✝) ≫
      Subobject.arrow (objX Z✝ (Nat.succ n✝)) =
    HomologicalComplex.Hom.f
        ({ obj := obj, map := fun {X Y} f => map f }.map f ≫ { obj := obj, map := fun {X Y} f => map f }.map g)
        (Nat.succ n✝) ≫
      Subobject.arrow (objX Z✝ (Nat.succ n✝))
[PROOFSTEP]
dsimp
[GOAL]
case h.zero.h
C : Type u_1
inst✝¹ : Category.{?u.127901, u_1} C
inst✝ : Abelian C
X✝ Y✝ Z✝ : SimplicialObject C
f : X✝ ⟶ Y✝
g : Y✝ ⟶ Z✝
⊢ Subobject.factorThru ⊤
        (Subobject.arrow ⊤ ≫ NatTrans.app f (op (SimplexCategory.mk 0)) ≫ NatTrans.app g (op (SimplexCategory.mk 0)))
        (_ :
          Subobject.Factors (objX Z✝ 0)
            (Subobject.arrow (objX X✝ 0) ≫ NatTrans.app (f ≫ g) (op (SimplexCategory.mk 0)))) ≫
      Subobject.arrow ⊤ =
    (Subobject.factorThru ⊤ (Subobject.arrow ⊤ ≫ NatTrans.app f (op (SimplexCategory.mk 0)))
          (_ :
            Subobject.Factors (objX Y✝ 0) (Subobject.arrow (objX X✝ 0) ≫ NatTrans.app f (op (SimplexCategory.mk 0)))) ≫
        Subobject.factorThru ⊤ (Subobject.arrow ⊤ ≫ NatTrans.app g (op (SimplexCategory.mk 0)))
          (_ :
            Subobject.Factors (objX Z✝ 0) (Subobject.arrow (objX Y✝ 0) ≫ NatTrans.app g (op (SimplexCategory.mk 0))))) ≫
      Subobject.arrow ⊤
[PROOFSTEP]
aesop_cat
[GOAL]
case h.succ.h
C : Type u_1
inst✝¹ : Category.{?u.127901, u_1} C
inst✝ : Abelian C
X✝ Y✝ Z✝ : SimplicialObject C
f : X✝ ⟶ Y✝
g : Y✝ ⟶ Z✝
n✝ : ℕ
⊢ Subobject.factorThru (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ Z✝ (Fin.succ k)))
        (Subobject.arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X✝ (Fin.succ k))) ≫
          NatTrans.app f (op (SimplexCategory.mk (Nat.succ n✝))) ≫
            NatTrans.app g (op (SimplexCategory.mk (Nat.succ n✝))))
        (_ :
          Subobject.Factors (objX Z✝ (Nat.succ n✝))
            (Subobject.arrow (objX X✝ (Nat.succ n✝)) ≫ NatTrans.app (f ≫ g) (op (SimplexCategory.mk (Nat.succ n✝))))) ≫
      Subobject.arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ Z✝ (Fin.succ k))) =
    (Subobject.factorThru (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ Y✝ (Fin.succ k)))
          (Subobject.arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ X✝ (Fin.succ k))) ≫
            NatTrans.app f (op (SimplexCategory.mk (Nat.succ n✝))))
          (_ :
            Subobject.Factors (objX Y✝ (Nat.succ n✝))
              (Subobject.arrow (objX X✝ (Nat.succ n✝)) ≫ NatTrans.app f (op (SimplexCategory.mk (Nat.succ n✝))))) ≫
        Subobject.factorThru (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ Z✝ (Fin.succ k)))
          (Subobject.arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ Y✝ (Fin.succ k))) ≫
            NatTrans.app g (op (SimplexCategory.mk (Nat.succ n✝))))
          (_ :
            Subobject.Factors (objX Z✝ (Nat.succ n✝))
              (Subobject.arrow (objX Y✝ (Nat.succ n✝)) ≫ NatTrans.app g (op (SimplexCategory.mk (Nat.succ n✝)))))) ≫
      Subobject.arrow (Finset.inf Finset.univ fun k => kernelSubobject (SimplicialObject.δ Z✝ (Fin.succ k)))
[PROOFSTEP]
aesop_cat


[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g✝ : ι → Set X
g : ι' → ι
hf : LocallyFinite f
hg : InjOn g {i | Set.Nonempty (f (g i))}
x : X
⊢ ∃ t, t ∈ 𝓝 x ∧ Set.Finite {i | Set.Nonempty ((f ∘ g) i ∩ t)}
[PROOFSTEP]
let ⟨t, htx, htf⟩ := hf x
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g✝ : ι → Set X
g : ι' → ι
hf : LocallyFinite f
hg : InjOn g {i | Set.Nonempty (f (g i))}
x : X
t : Set X
htx : t ∈ 𝓝 x
htf : Set.Finite {i | Set.Nonempty (f i ∩ t)}
⊢ ∃ t, t ∈ 𝓝 x ∧ Set.Finite {i | Set.Nonempty ((f ∘ g) i ∩ t)}
[PROOFSTEP]
refine ⟨t, htx, htf.preimage <| ?_⟩
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g✝ : ι → Set X
g : ι' → ι
hf : LocallyFinite f
hg : InjOn g {i | Set.Nonempty (f (g i))}
x : X
t : Set X
htx : t ∈ 𝓝 x
htf : Set.Finite {i | Set.Nonempty (f i ∩ t)}
⊢ InjOn (fun i => g i) ((fun i => g i) ⁻¹' {i | Set.Nonempty (f i ∩ t)})
[PROOFSTEP]
exact hg.mono fun i (hi : Set.Nonempty _) => hi.left
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g : ι → Set X
hf : LocallyFinite f
a : X
⊢ 𝓝[⋃ (i : ι), f i] a = ⨆ (i : ι), 𝓝[f i] a
[PROOFSTEP]
rcases hf a with ⟨U, haU, hfin⟩
[GOAL]
case intro.intro
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g : ι → Set X
hf : LocallyFinite f
a : X
U : Set X
haU : U ∈ 𝓝 a
hfin : Set.Finite {i | Set.Nonempty (f i ∩ U)}
⊢ 𝓝[⋃ (i : ι), f i] a = ⨆ (i : ι), 𝓝[f i] a
[PROOFSTEP]
refine le_antisymm ?_ (Monotone.le_map_iSup fun _ _ ↦ nhdsWithin_mono _)
[GOAL]
case intro.intro
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g : ι → Set X
hf : LocallyFinite f
a : X
U : Set X
haU : U ∈ 𝓝 a
hfin : Set.Finite {i | Set.Nonempty (f i ∩ U)}
⊢ 𝓝[⋃ (i : ι), f i] a ≤ ⨆ (i : ι), 𝓝[f i] a
[PROOFSTEP]
calc
  𝓝[⋃ i, f i] a = 𝓝[⋃ i, f i ∩ U] a := by rw [← iUnion_inter, ← nhdsWithin_inter_of_mem' (nhdsWithin_le_nhds haU)]
  _ = 𝓝[⋃ i ∈ {j | (f j ∩ U).Nonempty}, (f i ∩ U)] a := by simp only [mem_setOf_eq, iUnion_nonempty_self]
  _ = ⨆ i ∈ {j | (f j ∩ U).Nonempty}, 𝓝[f i ∩ U] a := (nhdsWithin_biUnion hfin _ _)
  _ ≤ ⨆ i, 𝓝[f i ∩ U] a := (iSup₂_le_iSup _ _)
  _ ≤ ⨆ i, 𝓝[f i] a := iSup_mono fun i ↦ nhdsWithin_mono _ <| inter_subset_left _ _
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g : ι → Set X
hf : LocallyFinite f
a : X
U : Set X
haU : U ∈ 𝓝 a
hfin : Set.Finite {i | Set.Nonempty (f i ∩ U)}
⊢ 𝓝[⋃ (i : ι), f i] a = 𝓝[⋃ (i : ι), f i ∩ U] a
[PROOFSTEP]
rw [← iUnion_inter, ← nhdsWithin_inter_of_mem' (nhdsWithin_le_nhds haU)]
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g : ι → Set X
hf : LocallyFinite f
a : X
U : Set X
haU : U ∈ 𝓝 a
hfin : Set.Finite {i | Set.Nonempty (f i ∩ U)}
⊢ 𝓝[⋃ (i : ι), f i ∩ U] a = 𝓝[⋃ (i : ι) (_ : i ∈ {j | Set.Nonempty (f j ∩ U)}), f i ∩ U] a
[PROOFSTEP]
simp only [mem_setOf_eq, iUnion_nonempty_self]
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g✝ : ι → Set X
g : X → Y
hf : LocallyFinite f
hc : ∀ (i : ι) (x : X), x ∈ closure (f i) → ContinuousWithinAt g (f i) x
⊢ ContinuousOn g (⋃ (i : ι), f i)
[PROOFSTEP]
rintro x -
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g✝ : ι → Set X
g : X → Y
hf : LocallyFinite f
hc : ∀ (i : ι) (x : X), x ∈ closure (f i) → ContinuousWithinAt g (f i) x
x : X
⊢ ContinuousWithinAt g (⋃ (i : ι), f i) x
[PROOFSTEP]
rw [ContinuousWithinAt, hf.nhdsWithin_iUnion, tendsto_iSup]
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g✝ : ι → Set X
g : X → Y
hf : LocallyFinite f
hc : ∀ (i : ι) (x : X), x ∈ closure (f i) → ContinuousWithinAt g (f i) x
x : X
⊢ ∀ (i : ι), Tendsto g (𝓝[f i] x) (𝓝 (g x))
[PROOFSTEP]
intro i
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g✝ : ι → Set X
g : X → Y
hf : LocallyFinite f
hc : ∀ (i : ι) (x : X), x ∈ closure (f i) → ContinuousWithinAt g (f i) x
x : X
i : ι
⊢ Tendsto g (𝓝[f i] x) (𝓝 (g x))
[PROOFSTEP]
by_cases hx : x ∈ closure (f i)
[GOAL]
case pos
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g✝ : ι → Set X
g : X → Y
hf : LocallyFinite f
hc : ∀ (i : ι) (x : X), x ∈ closure (f i) → ContinuousWithinAt g (f i) x
x : X
i : ι
hx : x ∈ closure (f i)
⊢ Tendsto g (𝓝[f i] x) (𝓝 (g x))
[PROOFSTEP]
exact hc i _ hx
[GOAL]
case neg
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g✝ : ι → Set X
g : X → Y
hf : LocallyFinite f
hc : ∀ (i : ι) (x : X), x ∈ closure (f i) → ContinuousWithinAt g (f i) x
x : X
i : ι
hx : ¬x ∈ closure (f i)
⊢ Tendsto g (𝓝[f i] x) (𝓝 (g x))
[PROOFSTEP]
rw [mem_closure_iff_nhdsWithin_neBot, not_neBot] at hx
[GOAL]
case neg
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g✝ : ι → Set X
g : X → Y
hf : LocallyFinite f
hc : ∀ (i : ι) (x : X), x ∈ closure (f i) → ContinuousWithinAt g (f i) x
x : X
i : ι
hx : 𝓝[f i] x = ⊥
⊢ Tendsto g (𝓝[f i] x) (𝓝 (g x))
[PROOFSTEP]
rw [hx]
[GOAL]
case neg
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g✝ : ι → Set X
g : X → Y
hf : LocallyFinite f
hc : ∀ (i : ι) (x : X), x ∈ closure (f i) → ContinuousWithinAt g (f i) x
x : X
i : ι
hx : 𝓝[f i] x = ⊥
⊢ Tendsto g ⊥ (𝓝 (g x))
[PROOFSTEP]
exact tendsto_bot
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g : ι → Set X
hf : LocallyFinite f
⊢ LocallyFinite fun i => closure (f i)
[PROOFSTEP]
intro x
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g : ι → Set X
hf : LocallyFinite f
x : X
⊢ ∃ t, t ∈ 𝓝 x ∧ Set.Finite {i | Set.Nonempty ((fun i => closure (f i)) i ∩ t)}
[PROOFSTEP]
rcases hf x with ⟨s, hsx, hsf⟩
[GOAL]
case intro.intro
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g : ι → Set X
hf : LocallyFinite f
x : X
s : Set X
hsx : s ∈ 𝓝 x
hsf : Set.Finite {i | Set.Nonempty (f i ∩ s)}
⊢ ∃ t, t ∈ 𝓝 x ∧ Set.Finite {i | Set.Nonempty ((fun i => closure (f i)) i ∩ t)}
[PROOFSTEP]
refine' ⟨interior s, interior_mem_nhds.2 hsx, hsf.subset fun i hi => _⟩
[GOAL]
case intro.intro
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g : ι → Set X
hf : LocallyFinite f
x : X
s : Set X
hsx : s ∈ 𝓝 x
hsf : Set.Finite {i | Set.Nonempty (f i ∩ s)}
i : ι
hi : i ∈ {i | Set.Nonempty ((fun i => closure (f i)) i ∩ interior s)}
⊢ i ∈ {i | Set.Nonempty (f i ∩ s)}
[PROOFSTEP]
exact (hi.mono isOpen_interior.closure_inter).of_closure.mono (inter_subset_inter_right _ interior_subset)
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g : ι → Set X
h : LocallyFinite f
⊢ closure (⋃ (i : ι), f i) = ⋃ (i : ι), closure (f i)
[PROOFSTEP]
ext x
[GOAL]
case h
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g : ι → Set X
h : LocallyFinite f
x : X
⊢ x ∈ closure (⋃ (i : ι), f i) ↔ x ∈ ⋃ (i : ι), closure (f i)
[PROOFSTEP]
simp only [mem_closure_iff_nhdsWithin_neBot, h.nhdsWithin_iUnion, iSup_neBot, mem_iUnion]
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g : ι → Set X
hf : LocallyFinite f
hc : ∀ (i : ι), IsClosed (f i)
⊢ IsClosed (⋃ (i : ι), f i)
[PROOFSTEP]
simp only [← closure_eq_iff_isClosed, hf.closure_iUnion, (hc _).closure_eq]
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g : ι → Set X
hf : LocallyFinite f
hc : ∀ (i : ι), IsClosed (f i)
x : X
⊢ ⋂ (i : ι) (_ : ¬x ∈ f i), (f i)ᶜ ∈ 𝓝 x
[PROOFSTEP]
refine' IsOpen.mem_nhds _ (mem_iInter₂.2 fun i => id)
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g : ι → Set X
hf : LocallyFinite f
hc : ∀ (i : ι), IsClosed (f i)
x : X
⊢ IsOpen (⋂ (i : ι) (_ : ¬x ∈ f i), (f i)ᶜ)
[PROOFSTEP]
suffices IsClosed (⋃ i : { i // x ∉ f i }, f i) by rwa [← isOpen_compl_iff, compl_iUnion, iInter_subtype] at this
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g : ι → Set X
hf : LocallyFinite f
hc : ∀ (i : ι), IsClosed (f i)
x : X
this : IsClosed (⋃ (i : { i // ¬x ∈ f i }), f ↑i)
⊢ IsOpen (⋂ (i : ι) (_ : ¬x ∈ f i), (f i)ᶜ)
[PROOFSTEP]
rwa [← isOpen_compl_iff, compl_iUnion, iInter_subtype] at this
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g : ι → Set X
hf : LocallyFinite f
hc : ∀ (i : ι), IsClosed (f i)
x : X
⊢ IsClosed (⋃ (i : { i // ¬x ∈ f i }), f ↑i)
[PROOFSTEP]
exact (hf.comp_injective Subtype.val_injective).isClosed_iUnion fun i => hc _
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f✝ g : ι → Set X
π : X → Sort u_6
f : ℕ → (x : X) → π x
hf : LocallyFinite fun n => {x | f (n + 1) x ≠ f n x}
⊢ ∃ F, ∀ (x : X), ∀ᶠ (p : ℕ × X) in atTop ×ˢ 𝓝 x, f p.fst p.snd = F p.snd
[PROOFSTEP]
choose U hUx hU using hf
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f✝ g : ι → Set X
π : X → Sort u_6
f : ℕ → (x : X) → π x
U : X → Set X
hUx : ∀ (x : X), U x ∈ 𝓝 x
hU : ∀ (x : X), Set.Finite {i | Set.Nonempty ((fun n => {x | f (n + 1) x ≠ f n x}) i ∩ U x)}
⊢ ∃ F, ∀ (x : X), ∀ᶠ (p : ℕ × X) in atTop ×ˢ 𝓝 x, f p.fst p.snd = F p.snd
[PROOFSTEP]
choose N hN using fun x => (hU x).bddAbove
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f✝ g : ι → Set X
π : X → Sort u_6
f : ℕ → (x : X) → π x
U : X → Set X
hUx : ∀ (x : X), U x ∈ 𝓝 x
hU : ∀ (x : X), Set.Finite {i | Set.Nonempty ((fun n => {x | f (n + 1) x ≠ f n x}) i ∩ U x)}
N : X → ℕ
hN : ∀ (x : X), N x ∈ upperBounds {i | Set.Nonempty ((fun n => {x | f (n + 1) x ≠ f n x}) i ∩ U x)}
⊢ ∃ F, ∀ (x : X), ∀ᶠ (p : ℕ × X) in atTop ×ˢ 𝓝 x, f p.fst p.snd = F p.snd
[PROOFSTEP]
replace hN : ∀ (x), ∀ n > N x, ∀ y ∈ U x, f (n + 1) y = f n y
[GOAL]
case hN
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f✝ g : ι → Set X
π : X → Sort u_6
f : ℕ → (x : X) → π x
U : X → Set X
hUx : ∀ (x : X), U x ∈ 𝓝 x
hU : ∀ (x : X), Set.Finite {i | Set.Nonempty ((fun n => {x | f (n + 1) x ≠ f n x}) i ∩ U x)}
N : X → ℕ
hN : ∀ (x : X), N x ∈ upperBounds {i | Set.Nonempty ((fun n => {x | f (n + 1) x ≠ f n x}) i ∩ U x)}
⊢ ∀ (x : X) (n : ℕ), n > N x → ∀ (y : X), y ∈ U x → f (n + 1) y = f n y
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f✝ g : ι → Set X
π : X → Sort u_6
f : ℕ → (x : X) → π x
U : X → Set X
hUx : ∀ (x : X), U x ∈ 𝓝 x
hU : ∀ (x : X), Set.Finite {i | Set.Nonempty ((fun n => {x | f (n + 1) x ≠ f n x}) i ∩ U x)}
N : X → ℕ
hN : ∀ (x : X) (n : ℕ), n > N x → ∀ (y : X), y ∈ U x → f (n + 1) y = f n y
⊢ ∃ F, ∀ (x : X), ∀ᶠ (p : ℕ × X) in atTop ×ˢ 𝓝 x, f p.fst p.snd = F p.snd
[PROOFSTEP]
exact fun x n hn y hy => by_contra fun hne => hn.lt.not_le <| hN x ⟨y, hne, hy⟩
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f✝ g : ι → Set X
π : X → Sort u_6
f : ℕ → (x : X) → π x
U : X → Set X
hUx : ∀ (x : X), U x ∈ 𝓝 x
hU : ∀ (x : X), Set.Finite {i | Set.Nonempty ((fun n => {x | f (n + 1) x ≠ f n x}) i ∩ U x)}
N : X → ℕ
hN : ∀ (x : X) (n : ℕ), n > N x → ∀ (y : X), y ∈ U x → f (n + 1) y = f n y
⊢ ∃ F, ∀ (x : X), ∀ᶠ (p : ℕ × X) in atTop ×ˢ 𝓝 x, f p.fst p.snd = F p.snd
[PROOFSTEP]
replace hN : ∀ (x), ∀ n ≥ N x + 1, ∀ y ∈ U x, f n y = f (N x + 1) y
[GOAL]
case hN
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f✝ g : ι → Set X
π : X → Sort u_6
f : ℕ → (x : X) → π x
U : X → Set X
hUx : ∀ (x : X), U x ∈ 𝓝 x
hU : ∀ (x : X), Set.Finite {i | Set.Nonempty ((fun n => {x | f (n + 1) x ≠ f n x}) i ∩ U x)}
N : X → ℕ
hN : ∀ (x : X) (n : ℕ), n > N x → ∀ (y : X), y ∈ U x → f (n + 1) y = f n y
⊢ ∀ (x : X) (n : ℕ), n ≥ N x + 1 → ∀ (y : X), y ∈ U x → f n y = f (N x + 1) y
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f✝ g : ι → Set X
π : X → Sort u_6
f : ℕ → (x : X) → π x
U : X → Set X
hUx : ∀ (x : X), U x ∈ 𝓝 x
hU : ∀ (x : X), Set.Finite {i | Set.Nonempty ((fun n => {x | f (n + 1) x ≠ f n x}) i ∩ U x)}
N : X → ℕ
hN : ∀ (x : X) (n : ℕ), n ≥ N x + 1 → ∀ (y : X), y ∈ U x → f n y = f (N x + 1) y
⊢ ∃ F, ∀ (x : X), ∀ᶠ (p : ℕ × X) in atTop ×ˢ 𝓝 x, f p.fst p.snd = F p.snd
[PROOFSTEP]
exact fun x n hn y hy => Nat.le_induction rfl (fun k hle => (hN x _ hle _ hy).trans) n hn
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f✝ g : ι → Set X
π : X → Sort u_6
f : ℕ → (x : X) → π x
U : X → Set X
hUx : ∀ (x : X), U x ∈ 𝓝 x
hU : ∀ (x : X), Set.Finite {i | Set.Nonempty ((fun n => {x | f (n + 1) x ≠ f n x}) i ∩ U x)}
N : X → ℕ
hN : ∀ (x : X) (n : ℕ), n ≥ N x + 1 → ∀ (y : X), y ∈ U x → f n y = f (N x + 1) y
⊢ ∃ F, ∀ (x : X), ∀ᶠ (p : ℕ × X) in atTop ×ˢ 𝓝 x, f p.fst p.snd = F p.snd
[PROOFSTEP]
refine ⟨fun x => f (N x + 1) x, fun x => ?_⟩
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f✝ g : ι → Set X
π : X → Sort u_6
f : ℕ → (x : X) → π x
U : X → Set X
hUx : ∀ (x : X), U x ∈ 𝓝 x
hU : ∀ (x : X), Set.Finite {i | Set.Nonempty ((fun n => {x | f (n + 1) x ≠ f n x}) i ∩ U x)}
N : X → ℕ
hN : ∀ (x : X) (n : ℕ), n ≥ N x + 1 → ∀ (y : X), y ∈ U x → f n y = f (N x + 1) y
x : X
⊢ ∀ᶠ (p : ℕ × X) in atTop ×ˢ 𝓝 x, f p.fst p.snd = (fun x => f (N x + 1) x) p.snd
[PROOFSTEP]
filter_upwards [Filter.prod_mem_prod (eventually_gt_atTop (N x)) (hUx x)]
[GOAL]
case h
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f✝ g : ι → Set X
π : X → Sort u_6
f : ℕ → (x : X) → π x
U : X → Set X
hUx : ∀ (x : X), U x ∈ 𝓝 x
hU : ∀ (x : X), Set.Finite {i | Set.Nonempty ((fun n => {x | f (n + 1) x ≠ f n x}) i ∩ U x)}
N : X → ℕ
hN : ∀ (x : X) (n : ℕ), n ≥ N x + 1 → ∀ (y : X), y ∈ U x → f n y = f (N x + 1) y
x : X
⊢ ∀ (a : ℕ × X), a ∈ {x_1 | N x < x_1} ×ˢ U x → f a.fst a.snd = f (N a.snd + 1) a.snd
[PROOFSTEP]
rintro ⟨n, y⟩ ⟨hn : N x < n, hy : y ∈ U x⟩
[GOAL]
case h.mk.intro
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f✝ g : ι → Set X
π : X → Sort u_6
f : ℕ → (x : X) → π x
U : X → Set X
hUx : ∀ (x : X), U x ∈ 𝓝 x
hU : ∀ (x : X), Set.Finite {i | Set.Nonempty ((fun n => {x | f (n + 1) x ≠ f n x}) i ∩ U x)}
N : X → ℕ
hN : ∀ (x : X) (n : ℕ), n ≥ N x + 1 → ∀ (y : X), y ∈ U x → f n y = f (N x + 1) y
x : X
n : ℕ
y : X
hn : N x < n
hy : y ∈ U x
⊢ f (n, y).fst (n, y).snd = f (N (n, y).snd + 1) (n, y).snd
[PROOFSTEP]
calc
  f n y = f (N x + 1) y := hN _ _ hn _ hy
  _ = f (max (N x + 1) (N y + 1)) y := (hN _ _ (le_max_left _ _) _ hy).symm
  _ = f (N y + 1) y := hN _ _ (le_max_right _ _) _ (mem_of_mem_nhds <| hUx y)
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g : ι → Set X
e : ι' ≃ ι
h : LocallyFinite (f ∘ ↑e)
⊢ LocallyFinite f
[PROOFSTEP]
simpa only [(· ∘ ·), e.apply_symm_apply] using h.comp_injective e.symm.injective
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f✝ g : ι → Set X
f : ι ⊕ ι' → Set X
⊢ LocallyFinite f ↔ LocallyFinite (f ∘ Sum.inl) ∧ LocallyFinite (f ∘ Sum.inr)
[PROOFSTEP]
simp only [locallyFinite_iff_smallSets, ← forall_and, ← finite_preimage_inl_and_inr, preimage_setOf_eq, (· ∘ ·),
  eventually_and]
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f✝ g : ι → Set X
f : Option ι → Set X
⊢ LocallyFinite f ↔ LocallyFinite (f ∘ some)
[PROOFSTEP]
rw [← (Equiv.optionEquivSumPUnit.{_, 0} ι).symm.locallyFinite_comp_iff, locallyFinite_sum]
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f✝ g : ι → Set X
f : Option ι → Set X
⊢ LocallyFinite ((f ∘ ↑(Equiv.optionEquivSumPUnit ι).symm) ∘ Sum.inl) ∧
      LocallyFinite ((f ∘ ↑(Equiv.optionEquivSumPUnit ι).symm) ∘ Sum.inr) ↔
    LocallyFinite (f ∘ some)
[PROOFSTEP]
simp only [locallyFinite_of_finite, and_true]
[GOAL]
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f✝ g : ι → Set X
f : Option ι → Set X
⊢ LocallyFinite ((f ∘ ↑(Equiv.optionEquivSumPUnit ι).symm) ∘ Sum.inl) ↔ LocallyFinite (f ∘ some)
[PROOFSTEP]
rfl