Theorem: totallyBounded_image_iff
File: Mathlib/Topology/UniformSpace/UniformEmbedding.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
s : Set α
hf : UniformInducing f
⊢ TotallyBounded (f '' s) ↔ TotallyBounded s
state_after: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
s : Set α
hf : UniformInducing f
hs : TotallyBounded (f '' s)
⊢ TotallyBounded s
tactic: refine ⟨fun hs ↦ ?_, fun h ↦ h.image hf.uniformContinuous⟩
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
s : Set α
hf : UniformInducing f
hs : TotallyBounded (f '' s)
⊢ TotallyBounded s
state_after: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
s : Set α
hf : UniformInducing f
hs : TotallyBounded (f '' s)
⊢ ∀ i ∈ 𝓤 β, ∃ t, t.Finite ∧ s ⊆ ⋃ y ∈ t, {x | (x, y) ∈ Prod.map f f ⁻¹' id i}
tactic: simp_rw [(hf.basis_uniformity (basis_sets _)).totallyBounded_iff]
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
s : Set α
hf : UniformInducing f
hs : TotallyBounded (f '' s)
⊢ ∀ i ∈ 𝓤 β, ∃ t, t.Finite ∧ s ⊆ ⋃ y ∈ t, {x | (x, y) ∈ Prod.map f f ⁻¹' id i}
state_after: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
s : Set α
hf : UniformInducing f
hs : TotallyBounded (f '' s)
t : Set (β × β)
ht : t ∈ 𝓤 β
⊢ ∃ t_1, t_1.Finite ∧ s ⊆ ⋃ y ∈ t_1, {x | (x, y) ∈ Prod.map f f ⁻¹' id t}
tactic: intro t ht
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
s : Set α
hf : UniformInducing f
hs : TotallyBounded (f '' s)
t : Set (β × β)
ht : t ∈ 𝓤 β
⊢ ∃ t_1, t_1.Finite ∧ s ⊆ ⋃ y ∈ t_1, {x | (x, y) ∈ Prod.map f f ⁻¹' id t}
state_after: case intro.intro.intro
α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
s : Set α
hf : UniformInducing f
hs : TotallyBounded (f '' s)
t : Set (β × β)
ht : t ∈ 𝓤 β
u : Set α
hfin : u.Finite
h : f '' s ⊆ ⋃ y ∈ f '' u, {x | (x, y) ∈ t}
⊢ ∃ t_1, t_1.Finite ∧ s ⊆ ⋃ y ∈ t_1, {x | (x, y) ∈ Prod.map f f ⁻¹' id t}
tactic: rcases exists_subset_image_finite_and.1 (hs.exists_subset ht) with ⟨u, -, hfin, h⟩
state_before: case intro.intro.intro
α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
s : Set α
hf : UniformInducing f
hs : TotallyBounded (f '' s)
t : Set (β × β)
ht : t ∈ 𝓤 β
u : Set α
hfin : u.Finite
h : f '' s ⊆ ⋃ y ∈ f '' u, {x | (x, y) ∈ t}
⊢ ∃ t_1, t_1.Finite ∧ s ⊆ ⋃ y ∈ t_1, {x | (x, y) ∈ Prod.map f f ⁻¹' id t}
state_after: case right
α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
s : Set α
hf : UniformInducing f
hs : TotallyBounded (f '' s)
t : Set (β × β)
ht : t ∈ 𝓤 β
u : Set α
hfin : u.Finite
h : f '' s ⊆ ⋃ y ∈ f '' u, {x | (x, y) ∈ t}
⊢ s ⊆ ⋃ y ∈ u, {x | (x, y) ∈ Prod.map f f ⁻¹' id t}
tactic: use u, hfin
state_before: case right
α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
s : Set α
hf : UniformInducing f
hs : TotallyBounded (f '' s)
t : Set (β × β)
ht : t ∈ 𝓤 β
u : Set α
hfin : u.Finite
h : f '' s ⊆ ⋃ y ∈ f '' u, {x | (x, y) ∈ t}
⊢ s ⊆ ⋃ y ∈ u, {x | (x, y) ∈ Prod.map f f ⁻¹' id t}
state_after: no goals
tactic: rwa [biUnion_image, image_subset_iff, preimage_iUnion₂] at h