Theorem: lebesgue_number_lemma
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: have : ∀ x ∈ K, ∃ i, ∃ V ∈ 𝓤 α, ball x (V ○ V) ⊆ U i := fun x hx ↦ by
  obtain ⟨i, hi⟩ := mem_iUnion.1 (hcover hx)
  rw [← (hopen i).mem_nhds_iff, nhds_eq_comap_uniformity, ← lift'_comp_uniformity] at hi
  exact ⟨i, (((basis_sets _).lift' <| monotone_id.compRel monotone_id).comap _).mem_iff.1 hi⟩
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι✝ : Sort u_1
inst✝ : UniformSpace α
K : Set α
ι : Sort u_2
U : ι → Set α
hK : IsCompact K
hopen : ∀ (i : ι), IsOpen (U i)
hcover : K ⊆ ⋃ i, U i
⊢ ∃ V ∈ 𝓤 α, ∀ x ∈ K, ∃ i, ball x V ⊆ U i
state_after: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι✝ : Sort u_1
inst✝ : UniformSpace α
K : Set α
ι : Sort u_2
U : ι → Set α
hK : IsCompact K
hopen : ∀ (i : ι), IsOpen (U i)
hcover : K ⊆ ⋃ i, U i
this : ∀ x ∈ K, ∃ i, ∃ V ∈ 𝓤 α, ball x (V ○ V) ⊆ U i
⊢ ∃ V ∈ 𝓤 α, ∀ x ∈ K, ∃ i, ball x V ⊆ U i

tactic: choose ind W hW hWU using this
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι✝ : Sort u_1
inst✝ : UniformSpace α
K : Set α
ι : Sort u_2
U : ι → Set α
hK : IsCompact K
hopen : ∀ (i : ι), IsOpen (U i)
hcover : K ⊆ ⋃ i, U i
this : ∀ x ∈ K, ∃ i, ∃ V ∈ 𝓤 α, ball x (V ○ V) ⊆ U i
⊢ ∃ V ∈ 𝓤 α, ∀ x ∈ K, ∃ i, ball x V ⊆ U i
state_after: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι✝ : Sort u_1
inst✝ : UniformSpace α
K : Set α
ι : Sort u_2
U : ι → Set α
hK : IsCompact K
hopen : ∀ (i : ι), IsOpen (U i)
hcover : K ⊆ ⋃ i, U i
ind : (x : α) → x ∈ K → ι
W : (x : α) → x ∈ K → Set (α × α)
hW : ∀ (x : α) (a : x ∈ K), W x a ∈ 𝓤 α
hWU : ∀ (x : α) (a : x ∈ K), ball x (W x a ○ W x a) ⊆ U (ind x a)
⊢ ∃ V ∈ 𝓤 α, ∀ x ∈ K, ∃ i, ball x V ⊆ U i

tactic: rcases hK.elim_nhds_subcover' (fun x hx ↦ ball x (W x hx)) (fun x hx ↦ ball_mem_nhds _ (hW x hx))
  with ⟨t, ht⟩
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι✝ : Sort u_1
inst✝ : UniformSpace α
K : Set α
ι : Sort u_2
U : ι → Set α
hK : IsCompact K
hopen : ∀ (i : ι), IsOpen (U i)
hcover : K ⊆ ⋃ i, U i
ind : (x : α) → x ∈ K → ι
W : (x : α) → x ∈ K → Set (α × α)
hW : ∀ (x : α) (a : x ∈ K), W x a ∈ 𝓤 α
hWU : ∀ (x : α) (a : x ∈ K), ball x (W x a ○ W x a) ⊆ U (ind x a)
⊢ ∃ V ∈ 𝓤 α, ∀ x ∈ K, ∃ i, ball x V ⊆ U i
state_after: case intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι✝ : Sort u_1
inst✝ : UniformSpace α
K : Set α
ι : Sort u_2
U : ι → Set α
hK : IsCompact K
hopen : ∀ (i : ι), IsOpen (U i)
hcover : K ⊆ ⋃ i, U i
ind : (x : α) → x ∈ K → ι
W : (x : α) → x ∈ K → Set (α × α)
hW : ∀ (x : α) (a : x ∈ K), W x a ∈ 𝓤 α
hWU : ∀ (x : α) (a : x ∈ K), ball x (W x a ○ W x a) ⊆ U (ind x a)
t : Finset ↑K
ht : K ⊆ ⋃ x ∈ t, ball (↑x) (W ↑x ⋯)
⊢ ∃ V ∈ 𝓤 α, ∀ x ∈ K, ∃ i, ball x V ⊆ U i

tactic: refine ⟨⋂ x ∈ t, W x x.2, (biInter_finset_mem _).2 fun x _ ↦ hW x x.2, fun x hx ↦ ?_⟩
state_before: case intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι✝ : Sort u_1
inst✝ : UniformSpace α
K : Set α
ι : Sort u_2
U : ι → Set α
hK : IsCompact K
hopen : ∀ (i : ι), IsOpen (U i)
hcover : K ⊆ ⋃ i, U i
ind : (x : α) → x ∈ K → ι
W : (x : α) → x ∈ K → Set (α × α)
hW : ∀ (x : α) (a : x ∈ K), W x a ∈ 𝓤 α
hWU : ∀ (x : α) (a : x ∈ K), ball x (W x a ○ W x a) ⊆ U (ind x a)
t : Finset ↑K
ht : K ⊆ ⋃ x ∈ t, ball (↑x) (W ↑x ⋯)
⊢ ∃ V ∈ 𝓤 α, ∀ x ∈ K, ∃ i, ball x V ⊆ U i
state_after: case intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι✝ : Sort u_1
inst✝ : UniformSpace α
K : Set α
ι : Sort u_2
U : ι → Set α
hK : IsCompact K
hopen : ∀ (i : ι), IsOpen (U i)
hcover : K ⊆ ⋃ i, U i
ind : (x : α) → x ∈ K → ι
W : (x : α) → x ∈ K → Set (α × α)
hW : ∀ (x : α) (a : x ∈ K), W x a ∈ 𝓤 α
hWU : ∀ (x : α) (a : x ∈ K), ball x (W x a ○ W x a) ⊆ U (ind x a)
t : Finset ↑K
ht : K ⊆ ⋃ x ∈ t, ball (↑x) (W ↑x ⋯)
x : α
hx : x ∈ K
⊢ ∃ i, ball x (⋂ x ∈ t, W ↑x ⋯) ⊆ U i

tactic: rcases mem_iUnion₂.1 (ht hx) with ⟨y, hyt, hxy⟩
state_before: case intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι✝ : Sort u_1
inst✝ : UniformSpace α
K : Set α
ι : Sort u_2
U : ι → Set α
hK : IsCompact K
hopen : ∀ (i : ι), IsOpen (U i)
hcover : K ⊆ ⋃ i, U i
ind : (x : α) → x ∈ K → ι
W : (x : α) → x ∈ K → Set (α × α)
hW : ∀ (x : α) (a : x ∈ K), W x a ∈ 𝓤 α
hWU : ∀ (x : α) (a : x ∈ K), ball x (W x a ○ W x a) ⊆ U (ind x a)
t : Finset ↑K
ht : K ⊆ ⋃ x ∈ t, ball (↑x) (W ↑x ⋯)
x : α
hx : x ∈ K
⊢ ∃ i, ball x (⋂ x ∈ t, W ↑x ⋯) ⊆ U i
state_after: case intro.intro.intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι✝ : Sort u_1
inst✝ : UniformSpace α
K : Set α
ι : Sort u_2
U : ι → Set α
hK : IsCompact K
hopen : ∀ (i : ι), IsOpen (U i)
hcover : K ⊆ ⋃ i, U i
ind : (x : α) → x ∈ K → ι
W : (x : α) → x ∈ K → Set (α × α)
hW : ∀ (x : α) (a : x ∈ K), W x a ∈ 𝓤 α
hWU : ∀ (x : α) (a : x ∈ K), ball x (W x a ○ W x a) ⊆ U (ind x a)
t : Finset ↑K
ht : K ⊆ ⋃ x ∈ t, ball (↑x) (W ↑x ⋯)
x : α
hx : x ∈ K
y : ↑K
hyt : y ∈ t
hxy : x ∈ ball (↑y) (W ↑y ⋯)
⊢ ∃ i, ball x (⋂ x ∈ t, W ↑x ⋯) ⊆ U i

tactic: exact ⟨ind y y.2, fun z hz ↦ hWU _ _ ⟨x, hxy, mem_iInter₂.1 hz _ hyt⟩⟩
state_before: case intro.intro.intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι✝ : Sort u_1
inst✝ : UniformSpace α
K : Set α
ι : Sort u_2
U : ι → Set α
hK : IsCompact K
hopen : ∀ (i : ι), IsOpen (U i)
hcover : K ⊆ ⋃ i, U i
ind : (x : α) → x ∈ K → ι
W : (x : α) → x ∈ K → Set (α × α)
hW : ∀ (x : α) (a : x ∈ K), W x a ∈ 𝓤 α
hWU : ∀ (x : α) (a : x ∈ K), ball x (W x a ○ W x a) ⊆ U (ind x a)
t : Finset ↑K
ht : K ⊆ ⋃ x ∈ t, ball (↑x) (W ↑x ⋯)
x : α
hx : x ∈ K
y : ↑K
hyt : y ∈ t
hxy : x ∈ ball (↑y) (W ↑y ⋯)
⊢ ∃ i, ball x (⋂ x ∈ t, W ↑x ⋯) ⊆ U i
state_after: no goals

tactic: obtain ⟨i, hi⟩ := mem_iUnion.1 (hcover hx)
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι✝ : Sort u_1
inst✝ : UniformSpace α
K : Set α
ι : Sort u_2
U : ι → Set α
hK : IsCompact K
hopen : ∀ (i : ι), IsOpen (U i)
hcover : K ⊆ ⋃ i, U i
x : α
hx : x ∈ K
⊢ ∃ i, ∃ V ∈ 𝓤 α, ball x (V ○ V) ⊆ U i
state_after: case intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι✝ : Sort u_1
inst✝ : UniformSpace α
K : Set α
ι : Sort u_2
U : ι → Set α
hK : IsCompact K
hopen : ∀ (i : ι), IsOpen (U i)
hcover : K ⊆ ⋃ i, U i
x : α
hx : x ∈ K
i : ι
hi : x ∈ U i
⊢ ∃ i, ∃ V ∈ 𝓤 α, ball x (V ○ V) ⊆ U i

tactic: rw [← (hopen i).mem_nhds_iff, nhds_eq_comap_uniformity, ← lift'_comp_uniformity] at hi
state_before: case intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι✝ : Sort u_1
inst✝ : UniformSpace α
K : Set α
ι : Sort u_2
U : ι → Set α
hK : IsCompact K
hopen : ∀ (i : ι), IsOpen (U i)
hcover : K ⊆ ⋃ i, U i
x : α
hx : x ∈ K
i : ι
hi : x ∈ U i
⊢ ∃ i, ∃ V ∈ 𝓤 α, ball x (V ○ V) ⊆ U i
state_after: case intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι✝ : Sort u_1
inst✝ : UniformSpace α
K : Set α
ι : Sort u_2
U : ι → Set α
hK : IsCompact K
hopen : ∀ (i : ι), IsOpen (U i)
hcover : K ⊆ ⋃ i, U i
x : α
hx : x ∈ K
i : ι
hi : U i ∈ Filter.comap (Prod.mk x) ((𝓤 α).lift' fun s => s ○ s)
⊢ ∃ i, ∃ V ∈ 𝓤 α, ball x (V ○ V) ⊆ U i

tactic: exact ⟨i, (((basis_sets _).lift' <| monotone_id.compRel monotone_id).comap _).mem_iff.1 hi⟩
state_before: case intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι✝ : Sort u_1
inst✝ : UniformSpace α
K : Set α
ι : Sort u_2
U : ι → Set α
hK : IsCompact K
hopen : ∀ (i : ι), IsOpen (U i)
hcover : K ⊆ ⋃ i, U i
x : α
hx : x ∈ K
i : ι
hi : U i ∈ Filter.comap (Prod.mk x) ((𝓤 α).lift' fun s => s ○ s)
⊢ ∃ i, ∃ V ∈ 𝓤 α, ball x (V ○ V) ⊆ U i
state_after: no goals