Theorem: TotallyBounded.exists_subset
File: Mathlib/Topology/UniformSpace/Cauchy.lean

tactic: rcases comp_symm_of_uniformity hU with ⟨r, hr, rs, rU⟩
state_before: α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
⊢ ∃ t ⊆ s, t.Finite ∧ s ⊆ ⋃ y ∈ t, {x | (x, y) ∈ U}
state_after: case intro.intro.intro
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
⊢ ∃ t ⊆ s, t.Finite ∧ s ⊆ ⋃ y ∈ t, {x | (x, y) ∈ U}

tactic: rcases hs r hr with ⟨k, fk, ks⟩
state_before: case intro.intro.intro
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
⊢ ∃ t ⊆ s, t.Finite ∧ s ⊆ ⋃ y ∈ t, {x | (x, y) ∈ U}
state_after: case intro.intro.intro.intro.intro
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
⊢ ∃ t ⊆ s, t.Finite ∧ s ⊆ ⋃ y ∈ t, {x | (x, y) ∈ U}

tactic: let u := k ∩ { y | ∃ x ∈ s, (x, y) ∈ r }
state_before: case intro.intro.intro.intro.intro
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
⊢ ∃ t ⊆ s, t.Finite ∧ s ⊆ ⋃ y ∈ t, {x | (x, y) ∈ U}
state_after: case intro.intro.intro.intro.intro
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
u : Set α := k ∩ {y | ∃ x ∈ s, (x, y) ∈ r}
⊢ ∃ t ⊆ s, t.Finite ∧ s ⊆ ⋃ y ∈ t, {x | (x, y) ∈ U}

tactic: choose f hfs hfr using fun x : u => x.coe_prop.2
state_before: case intro.intro.intro.intro.intro
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
u : Set α := k ∩ {y | ∃ x ∈ s, (x, y) ∈ r}
⊢ ∃ t ⊆ s, t.Finite ∧ s ⊆ ⋃ y ∈ t, {x | (x, y) ∈ U}
state_after: case intro.intro.intro.intro.intro
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
u : Set α := k ∩ {y | ∃ x ∈ s, (x, y) ∈ r}
f : ↑u → α
hfs : ∀ (x : ↑u), f x ∈ s
hfr : ∀ (x : ↑u), (f x, ↑x) ∈ r
⊢ ∃ t ⊆ s, t.Finite ∧ s ⊆ ⋃ y ∈ t, {x | (x, y) ∈ U}

tactic: refine ⟨range f, ?_, ?_, ?_⟩
state_before: case intro.intro.intro.intro.intro
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
u : Set α := k ∩ {y | ∃ x ∈ s, (x, y) ∈ r}
f : ↑u → α
hfs : ∀ (x : ↑u), f x ∈ s
hfr : ∀ (x : ↑u), (f x, ↑x) ∈ r
⊢ ∃ t ⊆ s, t.Finite ∧ s ⊆ ⋃ y ∈ t, {x | (x, y) ∈ U}
state_after: case intro.intro.intro.intro.intro.refine_1
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
u : Set α := k ∩ {y | ∃ x ∈ s, (x, y) ∈ r}
f : ↑u → α
hfs : ∀ (x : ↑u), f x ∈ s
hfr : ∀ (x : ↑u), (f x, ↑x) ∈ r
⊢ range f ⊆ s

case intro.intro.intro.intro.intro.refine_2
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
u : Set α := k ∩ {y | ∃ x ∈ s, (x, y) ∈ r}
f : ↑u → α
hfs : ∀ (x : ↑u), f x ∈ s
hfr : ∀ (x : ↑u), (f x, ↑x) ∈ r
⊢ (range f).Finite

case intro.intro.intro.intro.intro.refine_3
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
u : Set α := k ∩ {y | ∃ x ∈ s, (x, y) ∈ r}
f : ↑u → α
hfs : ∀ (x : ↑u), f x ∈ s
hfr : ∀ (x : ↑u), (f x, ↑x) ∈ r
⊢ s ⊆ ⋃ y ∈ range f, {x | (x, y) ∈ U}

tactic: exact range_subset_iff.2 hfs
state_before: case intro.intro.intro.intro.intro.refine_1
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
u : Set α := k ∩ {y | ∃ x ∈ s, (x, y) ∈ r}
f : ↑u → α
hfs : ∀ (x : ↑u), f x ∈ s
hfr : ∀ (x : ↑u), (f x, ↑x) ∈ r
⊢ range f ⊆ s
state_after: no goals

tactic: haveI : Fintype u := (fk.inter_of_left _).fintype
state_before: case intro.intro.intro.intro.intro.refine_2
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
u : Set α := k ∩ {y | ∃ x ∈ s, (x, y) ∈ r}
f : ↑u → α
hfs : ∀ (x : ↑u), f x ∈ s
hfr : ∀ (x : ↑u), (f x, ↑x) ∈ r
⊢ (range f).Finite
state_after: case intro.intro.intro.intro.intro.refine_2
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
u : Set α := k ∩ {y | ∃ x ∈ s, (x, y) ∈ r}
f : ↑u → α
hfs : ∀ (x : ↑u), f x ∈ s
hfr : ∀ (x : ↑u), (f x, ↑x) ∈ r
this : Fintype ↑u
⊢ (range f).Finite

tactic: exact finite_range f
state_before: case intro.intro.intro.intro.intro.refine_2
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
u : Set α := k ∩ {y | ∃ x ∈ s, (x, y) ∈ r}
f : ↑u → α
hfs : ∀ (x : ↑u), f x ∈ s
hfr : ∀ (x : ↑u), (f x, ↑x) ∈ r
this : Fintype ↑u
⊢ (range f).Finite
state_after: no goals

tactic: intro x xs
state_before: case intro.intro.intro.intro.intro.refine_3
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
u : Set α := k ∩ {y | ∃ x ∈ s, (x, y) ∈ r}
f : ↑u → α
hfs : ∀ (x : ↑u), f x ∈ s
hfr : ∀ (x : ↑u), (f x, ↑x) ∈ r
⊢ s ⊆ ⋃ y ∈ range f, {x | (x, y) ∈ U}
state_after: case intro.intro.intro.intro.intro.refine_3
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
u : Set α := k ∩ {y | ∃ x ∈ s, (x, y) ∈ r}
f : ↑u → α
hfs : ∀ (x : ↑u), f x ∈ s
hfr : ∀ (x : ↑u), (f x, ↑x) ∈ r
x : α
xs : x ∈ s
⊢ x ∈ ⋃ y ∈ range f, {x | (x, y) ∈ U}

tactic: obtain ⟨y, hy, xy⟩ := mem_iUnion₂.1 (ks xs)
state_before: case intro.intro.intro.intro.intro.refine_3
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
u : Set α := k ∩ {y | ∃ x ∈ s, (x, y) ∈ r}
f : ↑u → α
hfs : ∀ (x : ↑u), f x ∈ s
hfr : ∀ (x : ↑u), (f x, ↑x) ∈ r
x : α
xs : x ∈ s
⊢ x ∈ ⋃ y ∈ range f, {x | (x, y) ∈ U}
state_after: case intro.intro.intro.intro.intro.refine_3.intro.intro
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
u : Set α := k ∩ {y | ∃ x ∈ s, (x, y) ∈ r}
f : ↑u → α
hfs : ∀ (x : ↑u), f x ∈ s
hfr : ∀ (x : ↑u), (f x, ↑x) ∈ r
x : α
xs : x ∈ s
y : α
hy : y ∈ k
xy : x ∈ {x | (x, y) ∈ r}
⊢ x ∈ ⋃ y ∈ range f, {x | (x, y) ∈ U}

tactic: rw [biUnion_range, mem_iUnion]
state_before: case intro.intro.intro.intro.intro.refine_3.intro.intro
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
u : Set α := k ∩ {y | ∃ x ∈ s, (x, y) ∈ r}
f : ↑u → α
hfs : ∀ (x : ↑u), f x ∈ s
hfr : ∀ (x : ↑u), (f x, ↑x) ∈ r
x : α
xs : x ∈ s
y : α
hy : y ∈ k
xy : x ∈ {x | (x, y) ∈ r}
⊢ x ∈ ⋃ y ∈ range f, {x | (x, y) ∈ U}
state_after: case intro.intro.intro.intro.intro.refine_3.intro.intro
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
u : Set α := k ∩ {y | ∃ x ∈ s, (x, y) ∈ r}
f : ↑u → α
hfs : ∀ (x : ↑u), f x ∈ s
hfr : ∀ (x : ↑u), (f x, ↑x) ∈ r
x : α
xs : x ∈ s
y : α
hy : y ∈ k
xy : x ∈ {x | (x, y) ∈ r}
⊢ ∃ i, x ∈ {x | (x, f i) ∈ U}

tactic: set z : ↥u := ⟨y, hy, ⟨x, xs, xy⟩⟩
state_before: case intro.intro.intro.intro.intro.refine_3.intro.intro
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
u : Set α := k ∩ {y | ∃ x ∈ s, (x, y) ∈ r}
f : ↑u → α
hfs : ∀ (x : ↑u), f x ∈ s
hfr : ∀ (x : ↑u), (f x, ↑x) ∈ r
x : α
xs : x ∈ s
y : α
hy : y ∈ k
xy : x ∈ {x | (x, y) ∈ r}
⊢ ∃ i, x ∈ {x | (x, f i) ∈ U}
state_after: case intro.intro.intro.intro.intro.refine_3.intro.intro
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
u : Set α := k ∩ {y | ∃ x ∈ s, (x, y) ∈ r}
f : ↑u → α
hfs : ∀ (x : ↑u), f x ∈ s
hfr : ∀ (x : ↑u), (f x, ↑x) ∈ r
x : α
xs : x ∈ s
y : α
hy : y ∈ k
xy : x ∈ {x | (x, y) ∈ r}
z : ↑u := ⟨y, ⋯⟩
⊢ ∃ i, x ∈ {x | (x, f i) ∈ U}

tactic: exact ⟨z, rU <| mem_compRel.2 ⟨y, xy, rs (hfr z)⟩⟩
state_before: case intro.intro.intro.intro.intro.refine_3.intro.intro
α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
hs : TotallyBounded s
U : Set (α × α)
hU : U ∈ 𝓤 α
r : Set (α × α)
hr : r ∈ 𝓤 α
rs : ∀ {a b : α}, (a, b) ∈ r → (b, a) ∈ r
rU : r ○ r ⊆ U
k : Set α
fk : k.Finite
ks : s ⊆ ⋃ y ∈ k, {x | (x, y) ∈ r}
u : Set α := k ∩ {y | ∃ x ∈ s, (x, y) ∈ r}
f : ↑u → α
hfs : ∀ (x : ↑u), f x ∈ s
hfr : ∀ (x : ↑u), (f x, ↑x) ∈ r
x : α
xs : x ∈ s
y : α
hy : y ∈ k
xy : x ∈ {x | (x, y) ∈ r}
z : ↑u := ⟨y, ⋯⟩
⊢ ∃ i, x ∈ {x | (x, f i) ∈ U}
state_after: no goals