Theorem: BoundedContinuousFunction.arzela_ascoli₁
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

tactic: simp_rw [Equicontinuous, Metric.equicontinuousAt_iff_pair] at H
state_before: F : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H : Equicontinuous fun x => ↑↑x
⊢ IsCompact A

tactic: refine' isCompact_of_totallyBounded_isClosed _ closed
state_before: F : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
⊢ IsCompact A

tactic: refine' totallyBounded_of_finite_discretization fun ε ε0 => _
state_before: F : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
⊢ TotallyBounded A

tactic: rcases exists_between ε0 with ⟨ε₁, ε₁0, εε₁⟩
state_before: F : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
⊢ ∃ β_1 x F, ∀ (x y : ↑A), F x = F y → dist ↑x ↑y < ε

tactic: let ε₂ := ε₁ / 2 / 2
state_before: case intro.intro
F : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
ε₁ : ℝ
ε₁0 : 0 < ε₁
εε₁ : ε₁ < ε
⊢ ∃ β_1 x F, ∀ (x y : ↑A), F x = F y → dist ↑x ↑y < ε

tactic: have ε₂0 : ε₂ > 0 := half_pos (half_pos ε₁0)
state_before: case intro.intro
F : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
ε₁ : ℝ
ε₁0 : 0 < ε₁
εε₁ : ε₁ < ε
ε₂ : ℝ := ε₁ / 2 / 2
⊢ ∃ β_1 x F, ∀ (x y : ↑A), F x = F y → dist ↑x ↑y < ε

tactic: have : ∀ x : α, ∃ U, x ∈ U ∧ IsOpen U ∧
    ∀ (y) (_ : y ∈ U) (z) (_ : z ∈ U) {f : α →ᵇ β}, f ∈ A → dist (f y) (f z) < ε₂ :=
  fun x =>
  let ⟨U, nhdsU, hU⟩ := H x _ ε₂0
  let ⟨V, VU, openV, xV⟩ := _root_.mem_nhds_iff.1 nhdsU
  ⟨V, xV, openV, fun y hy z hz f hf => hU y (VU hy) z (VU hz) ⟨f, hf⟩⟩
state_before: case intro.intro
F : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
ε₁ : ℝ
ε₁0 : 0 < ε₁
εε₁ : ε₁ < ε
ε₂ : ℝ := ε₁ / 2 / 2
ε₂0 : ε₂ > 0
⊢ ∃ β_1 x F, ∀ (x y : ↑A), F x = F y → dist ↑x ↑y < ε

tactic: choose U hU using this
state_before: case intro.intro
F : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
ε₁ : ℝ
ε₁0 : 0 < ε₁
εε₁ : ε₁ < ε
ε₂ : ℝ := ε₁ / 2 / 2
ε₂0 : ε₂ > 0
this :
  ∀ (x : α),
    ∃ U, x ∈ U ∧ IsOpen U ∧ ∀ (y : α), y ∈ U → ∀ (z : α), z ∈ U → ∀ {f : α →ᵇ β}, f ∈ A → dist (↑f y) (↑f z) < ε₂
⊢ ∃ β_1 x F, ∀ (x y : ↑A), F x = F y → dist ↑x ↑y < ε

tactic: rcases isCompact_univ.elim_finite_subcover_image (fun x _ => (hU x).2.1) fun x _ =>
    mem_biUnion (mem_univ _) (hU x).1 with
  ⟨tα, _, ⟨_⟩, htα⟩
state_before: case intro.intro
F : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
ε₁ : ℝ
ε₁0 : 0 < ε₁
εε₁ : ε₁ < ε
ε₂ : ℝ := ε₁ / 2 / 2
ε₂0 : ε₂ > 0
U : α → Set α
hU :
  ∀ (x : α),
    x ∈ U x ∧ IsOpen (U x) ∧ ∀ (y : α), y ∈ U x → ∀ (z : α), z ∈ U x → ∀ {f : α →ᵇ β}, f ∈ A → dist (↑f y) (↑f z) < ε₂
⊢ ∃ β_1 x F, ∀ (x y : ↑A), F x = F y → dist ↑x ↑y < ε

tactic: rcases @finite_cover_balls_of_compact β _ _ isCompact_univ _ ε₂0 with ⟨tβ, _, ⟨_⟩, htβ⟩
state_before: case intro.intro.intro.intro.intro.intro
F : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
ε₁ : ℝ
ε₁0 : 0 < ε₁
εε₁ : ε₁ < ε
ε₂ : ℝ := ε₁ / 2 / 2
ε₂0 : ε₂ > 0
U : α → Set α
hU :
  ∀ (x : α),
    x ∈ U x ∧ IsOpen (U x) ∧ ∀ (y : α), y ∈ U x → ∀ (z : α), z ∈ U x → ∀ {f : α →ᵇ β}, f ∈ A → dist (↑f y) (↑f z) < ε₂
tα : Set α
left✝ : tα ⊆ univ
htα : univ ⊆ ⋃ (i : α) (_ : i ∈ tα), U i
a✝ : Fintype ↑tα
⊢ ∃ β_1 x F, ∀ (x y : ↑A), F x = F y → dist ↑x ↑y < ε

tactic: choose F hF using fun y => show ∃ z ∈ tβ, dist y z < ε₂ by simpa using htβ (mem_univ y)
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
F : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
ε₁ : ℝ
ε₁0 : 0 < ε₁
εε₁ : ε₁ < ε
ε₂ : ℝ := ε₁ / 2 / 2
ε₂0 : ε₂ > 0
U : α → Set α
hU :
  ∀ (x : α),
    x ∈ U x ∧ IsOpen (U x) ∧ ∀ (y : α), y ∈ U x → ∀ (z : α), z ∈ U x → ∀ {f : α →ᵇ β}, f ∈ A → dist (↑f y) (↑f z) < ε₂
tα : Set α
left✝¹ : tα ⊆ univ
htα : univ ⊆ ⋃ (i : α) (_ : i ∈ tα), U i
a✝¹ : Fintype ↑tα
tβ : Set β
left✝ : tβ ⊆ univ
htβ : univ ⊆ ⋃ (x : β) (_ : x ∈ tβ), ball x ε₂
a✝ : Fintype ↑tβ
⊢ ∃ β_1 x F, ∀ (x y : ↑A), F x = F y → dist ↑x ↑y < ε

tactic: refine' ⟨tα → tβ, by infer_instance, fun f a => ⟨F (f.1 a), (hF (f.1 a)).1⟩, _⟩
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
F✝ : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
ε₁ : ℝ
ε₁0 : 0 < ε₁
εε₁ : ε₁ < ε
ε₂ : ℝ := ε₁ / 2 / 2
ε₂0 : ε₂ > 0
U : α → Set α
hU :
  ∀ (x : α),
    x ∈ U x ∧ IsOpen (U x) ∧ ∀ (y : α), y ∈ U x → ∀ (z : α), z ∈ U x → ∀ {f : α →ᵇ β}, f ∈ A → dist (↑f y) (↑f z) < ε₂
tα : Set α
left✝¹ : tα ⊆ univ
htα : univ ⊆ ⋃ (i : α) (_ : i ∈ tα), U i
a✝¹ : Fintype ↑tα
tβ : Set β
left✝ : tβ ⊆ univ
htβ : univ ⊆ ⋃ (x : β) (_ : x ∈ tβ), ball x ε₂
a✝ : Fintype ↑tβ
F : β → β
hF : ∀ (y : β), F y ∈ tβ ∧ dist y (F y) < ε₂
⊢ ∃ β_1 x F, ∀ (x y : ↑A), F x = F y → dist ↑x ↑y < ε

tactic: rintro ⟨f, hf⟩ ⟨g, hg⟩ f_eq_g
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
F✝ : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
ε₁ : ℝ
ε₁0 : 0 < ε₁
εε₁ : ε₁ < ε
ε₂ : ℝ := ε₁ / 2 / 2
ε₂0 : ε₂ > 0
U : α → Set α
hU :
  ∀ (x : α),
    x ∈ U x ∧ IsOpen (U x) ∧ ∀ (y : α), y ∈ U x → ∀ (z : α), z ∈ U x → ∀ {f : α →ᵇ β}, f ∈ A → dist (↑f y) (↑f z) < ε₂
tα : Set α
left✝¹ : tα ⊆ univ
htα : univ ⊆ ⋃ (i : α) (_ : i ∈ tα), U i
a✝¹ : Fintype ↑tα
tβ : Set β
left✝ : tβ ⊆ univ
htβ : univ ⊆ ⋃ (x : β) (_ : x ∈ tβ), ball x ε₂
a✝ : Fintype ↑tβ
F : β → β
hF : ∀ (y : β), F y ∈ tβ ∧ dist y (F y) < ε₂
⊢ ∀ (x y : ↑A),
    (fun f a => { val := F (↑↑f ↑a), property := (_ : F (↑↑f ↑a) ∈ tβ) }) x =
        (fun f a => { val := F (↑↑f ↑a), property := (_ : F (↑↑f ↑a) ∈ tβ) }) y →
      dist ↑x ↑y < ε

tactic: refine' lt_of_le_of_lt ((dist_le <| le_of_lt ε₁0).2 fun x => _) εε₁
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.mk.mk
F✝ : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f✝ g✝ : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
ε₁ : ℝ
ε₁0 : 0 < ε₁
εε₁ : ε₁ < ε
ε₂ : ℝ := ε₁ / 2 / 2
ε₂0 : ε₂ > 0
U : α → Set α
hU :
  ∀ (x : α),
    x ∈ U x ∧ IsOpen (U x) ∧ ∀ (y : α), y ∈ U x → ∀ (z : α), z ∈ U x → ∀ {f : α →ᵇ β}, f ∈ A → dist (↑f y) (↑f z) < ε₂
tα : Set α
left✝¹ : tα ⊆ univ
htα : univ ⊆ ⋃ (i : α) (_ : i ∈ tα), U i
a✝¹ : Fintype ↑tα
tβ : Set β
left✝ : tβ ⊆ univ
htβ : univ ⊆ ⋃ (x : β) (_ : x ∈ tβ), ball x ε₂
a✝ : Fintype ↑tβ
F : β → β
hF : ∀ (y : β), F y ∈ tβ ∧ dist y (F y) < ε₂
f : α →ᵇ β
hf : f ∈ A
g : α →ᵇ β
hg : g ∈ A
f_eq_g :
  (fun f a => { val := F (↑↑f ↑a), property := (_ : F (↑↑f ↑a) ∈ tβ) }) { val := f, property := hf } =
    (fun f a => { val := F (↑↑f ↑a), property := (_ : F (↑↑f ↑a) ∈ tβ) }) { val := g, property := hg }
⊢ dist ↑{ val := f, property := hf } ↑{ val := g, property := hg } < ε

tactic: obtain ⟨x', x'tα, hx'⟩ := mem_iUnion₂.1 (htα (mem_univ x))
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.mk.mk
F✝ : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f✝ g✝ : α →ᵇ β
x✝ : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
ε₁ : ℝ
ε₁0 : 0 < ε₁
εε₁ : ε₁ < ε
ε₂ : ℝ := ε₁ / 2 / 2
ε₂0 : ε₂ > 0
U : α → Set α
hU :
  ∀ (x : α),
    x ∈ U x ∧ IsOpen (U x) ∧ ∀ (y : α), y ∈ U x → ∀ (z : α), z ∈ U x → ∀ {f : α →ᵇ β}, f ∈ A → dist (↑f y) (↑f z) < ε₂
tα : Set α
left✝¹ : tα ⊆ univ
htα : univ ⊆ ⋃ (i : α) (_ : i ∈ tα), U i
a✝¹ : Fintype ↑tα
tβ : Set β
left✝ : tβ ⊆ univ
htβ : univ ⊆ ⋃ (x : β) (_ : x ∈ tβ), ball x ε₂
a✝ : Fintype ↑tβ
F : β → β
hF : ∀ (y : β), F y ∈ tβ ∧ dist y (F y) < ε₂
f : α →ᵇ β
hf : f ∈ A
g : α →ᵇ β
hg : g ∈ A
f_eq_g :
  (fun f a => { val := F (↑↑f ↑a), property := (_ : F (↑↑f ↑a) ∈ tβ) }) { val := f, property := hf } =
    (fun f a => { val := F (↑↑f ↑a), property := (_ : F (↑↑f ↑a) ∈ tβ) }) { val := g, property := hg }
x : α
⊢ dist (↑↑{ val := f, property := hf } x) (↑↑{ val := g, property := hg } x) ≤ ε₁

tactic: simpa using htβ (mem_univ y)
state_before: F : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
ε₁ : ℝ
ε₁0 : 0 < ε₁
εε₁ : ε₁ < ε
ε₂ : ℝ := ε₁ / 2 / 2
ε₂0 : ε₂ > 0
U : α → Set α
hU :
  ∀ (x : α),
    x ∈ U x ∧ IsOpen (U x) ∧ ∀ (y : α), y ∈ U x → ∀ (z : α), z ∈ U x → ∀ {f : α →ᵇ β}, f ∈ A → dist (↑f y) (↑f z) < ε₂
tα : Set α
left✝¹ : tα ⊆ univ
htα : univ ⊆ ⋃ (i : α) (_ : i ∈ tα), U i
a✝¹ : Fintype ↑tα
tβ : Set β
left✝ : tβ ⊆ univ
htβ : univ ⊆ ⋃ (x : β) (_ : x ∈ tβ), ball x ε₂
a✝ : Fintype ↑tβ
y : β
⊢ ∃ z, z ∈ tβ ∧ dist y z < ε₂

tactic: infer_instance
state_before: F✝ : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
ε₁ : ℝ
ε₁0 : 0 < ε₁
εε₁ : ε₁ < ε
ε₂ : ℝ := ε₁ / 2 / 2
ε₂0 : ε₂ > 0
U : α → Set α
hU :
  ∀ (x : α),
    x ∈ U x ∧ IsOpen (U x) ∧ ∀ (y : α), y ∈ U x → ∀ (z : α), z ∈ U x → ∀ {f : α →ᵇ β}, f ∈ A → dist (↑f y) (↑f z) < ε₂
tα : Set α
left✝¹ : tα ⊆ univ
htα : univ ⊆ ⋃ (i : α) (_ : i ∈ tα), U i
a✝¹ : Fintype ↑tα
tβ : Set β
left✝ : tβ ⊆ univ
htβ : univ ⊆ ⋃ (x : β) (_ : x ∈ tβ), ball x ε₂
a✝ : Fintype ↑tβ
F : β → β
hF : ∀ (y : β), F y ∈ tβ ∧ dist y (F y) < ε₂
⊢ Fintype (↑tα → ↑tβ)

tactic: refine' le_of_lt (add_lt_add (add_lt_add _ _) _)
state_before: F✝ : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f✝ g✝ : α →ᵇ β
x✝ : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
ε₁ : ℝ
ε₁0 : 0 < ε₁
εε₁ : ε₁ < ε
ε₂ : ℝ := ε₁ / 2 / 2
ε₂0 : ε₂ > 0
U : α → Set α
hU :
  ∀ (x : α),
    x ∈ U x ∧ IsOpen (U x) ∧ ∀ (y : α), y ∈ U x → ∀ (z : α), z ∈ U x → ∀ {f : α →ᵇ β}, f ∈ A → dist (↑f y) (↑f z) < ε₂
tα : Set α
left✝¹ : tα ⊆ univ
htα : univ ⊆ ⋃ (i : α) (_ : i ∈ tα), U i
a✝¹ : Fintype ↑tα
tβ : Set β
left✝ : tβ ⊆ univ
htβ : univ ⊆ ⋃ (x : β) (_ : x ∈ tβ), ball x ε₂
a✝ : Fintype ↑tβ
F : β → β
hF : ∀ (y : β), F y ∈ tβ ∧ dist y (F y) < ε₂
f : α →ᵇ β
hf : f ∈ A
g : α →ᵇ β
hg : g ∈ A
f_eq_g :
  (fun f a => { val := F (↑↑f ↑a), property := (_ : F (↑↑f ↑a) ∈ tβ) }) { val := f, property := hf } =
    (fun f a => { val := F (↑↑f ↑a), property := (_ : F (↑↑f ↑a) ∈ tβ) }) { val := g, property := hg }
x x' : α
x'tα : x' ∈ tα
hx' : x ∈ U x'
⊢ dist (↑f x) (↑f x') + dist (↑g x) (↑g x') + dist (↑f x') (↑g x') ≤ ε₂ + ε₂ + ε₁ / 2

tactic: exact (hU x').2.2 _ hx' _ (hU x').1 hf
state_before: case refine'_1
F✝ : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f✝ g✝ : α →ᵇ β
x✝ : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
ε₁ : ℝ
ε₁0 : 0 < ε₁
εε₁ : ε₁ < ε
ε₂ : ℝ := ε₁ / 2 / 2
ε₂0 : ε₂ > 0
U : α → Set α
hU :
  ∀ (x : α),
    x ∈ U x ∧ IsOpen (U x) ∧ ∀ (y : α), y ∈ U x → ∀ (z : α), z ∈ U x → ∀ {f : α →ᵇ β}, f ∈ A → dist (↑f y) (↑f z) < ε₂
tα : Set α
left✝¹ : tα ⊆ univ
htα : univ ⊆ ⋃ (i : α) (_ : i ∈ tα), U i
a✝¹ : Fintype ↑tα
tβ : Set β
left✝ : tβ ⊆ univ
htβ : univ ⊆ ⋃ (x : β) (_ : x ∈ tβ), ball x ε₂
a✝ : Fintype ↑tβ
F : β → β
hF : ∀ (y : β), F y ∈ tβ ∧ dist y (F y) < ε₂
f : α →ᵇ β
hf : f ∈ A
g : α →ᵇ β
hg : g ∈ A
f_eq_g :
  (fun f a => { val := F (↑↑f ↑a), property := (_ : F (↑↑f ↑a) ∈ tβ) }) { val := f, property := hf } =
    (fun f a => { val := F (↑↑f ↑a), property := (_ : F (↑↑f ↑a) ∈ tβ) }) { val := g, property := hg }
x x' : α
x'tα : x' ∈ tα
hx' : x ∈ U x'
⊢ dist (↑f x) (↑f x') < ε₂

tactic: exact (hU x').2.2 _ hx' _ (hU x').1 hg
state_before: case refine'_2
F✝ : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f✝ g✝ : α →ᵇ β
x✝ : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
ε₁ : ℝ
ε₁0 : 0 < ε₁
εε₁ : ε₁ < ε
ε₂ : ℝ := ε₁ / 2 / 2
ε₂0 : ε₂ > 0
U : α → Set α
hU :
  ∀ (x : α),
    x ∈ U x ∧ IsOpen (U x) ∧ ∀ (y : α), y ∈ U x → ∀ (z : α), z ∈ U x → ∀ {f : α →ᵇ β}, f ∈ A → dist (↑f y) (↑f z) < ε₂
tα : Set α
left✝¹ : tα ⊆ univ
htα : univ ⊆ ⋃ (i : α) (_ : i ∈ tα), U i
a✝¹ : Fintype ↑tα
tβ : Set β
left✝ : tβ ⊆ univ
htβ : univ ⊆ ⋃ (x : β) (_ : x ∈ tβ), ball x ε₂
a✝ : Fintype ↑tβ
F : β → β
hF : ∀ (y : β), F y ∈ tβ ∧ dist y (F y) < ε₂
f : α →ᵇ β
hf : f ∈ A
g : α →ᵇ β
hg : g ∈ A
f_eq_g :
  (fun f a => { val := F (↑↑f ↑a), property := (_ : F (↑↑f ↑a) ∈ tβ) }) { val := f, property := hf } =
    (fun f a => { val := F (↑↑f ↑a), property := (_ : F (↑↑f ↑a) ∈ tβ) }) { val := g, property := hg }
x x' : α
x'tα : x' ∈ tα
hx' : x ∈ U x'
⊢ dist (↑g x) (↑g x') < ε₂

tactic: have F_f_g : F (f x') = F (g x') :=
  (congr_arg (fun f : tα → tβ => (f ⟨x', x'tα⟩ : β)) f_eq_g : _)
state_before: case refine'_3
F✝ : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f✝ g✝ : α →ᵇ β
x✝ : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
ε₁ : ℝ
ε₁0 : 0 < ε₁
εε₁ : ε₁ < ε
ε₂ : ℝ := ε₁ / 2 / 2
ε₂0 : ε₂ > 0
U : α → Set α
hU :
  ∀ (x : α),
    x ∈ U x ∧ IsOpen (U x) ∧ ∀ (y : α), y ∈ U x → ∀ (z : α), z ∈ U x → ∀ {f : α →ᵇ β}, f ∈ A → dist (↑f y) (↑f z) < ε₂
tα : Set α
left✝¹ : tα ⊆ univ
htα : univ ⊆ ⋃ (i : α) (_ : i ∈ tα), U i
a✝¹ : Fintype ↑tα
tβ : Set β
left✝ : tβ ⊆ univ
htβ : univ ⊆ ⋃ (x : β) (_ : x ∈ tβ), ball x ε₂
a✝ : Fintype ↑tβ
F : β → β
hF : ∀ (y : β), F y ∈ tβ ∧ dist y (F y) < ε₂
f : α →ᵇ β
hf : f ∈ A
g : α →ᵇ β
hg : g ∈ A
f_eq_g :
  (fun f a => { val := F (↑↑f ↑a), property := (_ : F (↑↑f ↑a) ∈ tβ) }) { val := f, property := hf } =
    (fun f a => { val := F (↑↑f ↑a), property := (_ : F (↑↑f ↑a) ∈ tβ) }) { val := g, property := hg }
x x' : α
x'tα : x' ∈ tα
hx' : x ∈ U x'
⊢ dist (↑f x') (↑g x') < ε₁ / 2

tactic: calc
  dist (f x') (g x') ≤ dist (f x') (F (f x')) + dist (g x') (F (f x')) :=
    dist_triangle_right _ _ _
  _ = dist (f x') (F (f x')) + dist (g x') (F (g x')) := by rw [F_f_g]
  _ < ε₂ + ε₂ := (add_lt_add (hF (f x')).2 (hF (g x')).2)
  _ = ε₁ / 2 := add_halves _
state_before: case refine'_3
F✝ : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f✝ g✝ : α →ᵇ β
x✝ : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
ε₁ : ℝ
ε₁0 : 0 < ε₁
εε₁ : ε₁ < ε
ε₂ : ℝ := ε₁ / 2 / 2
ε₂0 : ε₂ > 0
U : α → Set α
hU :
  ∀ (x : α),
    x ∈ U x ∧ IsOpen (U x) ∧ ∀ (y : α), y ∈ U x → ∀ (z : α), z ∈ U x → ∀ {f : α →ᵇ β}, f ∈ A → dist (↑f y) (↑f z) < ε₂
tα : Set α
left✝¹ : tα ⊆ univ
htα : univ ⊆ ⋃ (i : α) (_ : i ∈ tα), U i
a✝¹ : Fintype ↑tα
tβ : Set β
left✝ : tβ ⊆ univ
htβ : univ ⊆ ⋃ (x : β) (_ : x ∈ tβ), ball x ε₂
a✝ : Fintype ↑tβ
F : β → β
hF : ∀ (y : β), F y ∈ tβ ∧ dist y (F y) < ε₂
f : α →ᵇ β
hf : f ∈ A
g : α →ᵇ β
hg : g ∈ A
f_eq_g :
  (fun f a => { val := F (↑↑f ↑a), property := (_ : F (↑↑f ↑a) ∈ tβ) }) { val := f, property := hf } =
    (fun f a => { val := F (↑↑f ↑a), property := (_ : F (↑↑f ↑a) ∈ tβ) }) { val := g, property := hg }
x x' : α
x'tα : x' ∈ tα
hx' : x ∈ U x'
F_f_g : F (↑f x') = F (↑g x')
⊢ dist (↑f x') (↑g x') < ε₁ / 2

tactic: rw [F_f_g]
state_before: F✝ : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f✝ g✝ : α →ᵇ β
x✝ : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
ε₁ : ℝ
ε₁0 : 0 < ε₁
εε₁ : ε₁ < ε
ε₂ : ℝ := ε₁ / 2 / 2
ε₂0 : ε₂ > 0
U : α → Set α
hU :
  ∀ (x : α),
    x ∈ U x ∧ IsOpen (U x) ∧ ∀ (y : α), y ∈ U x → ∀ (z : α), z ∈ U x → ∀ {f : α →ᵇ β}, f ∈ A → dist (↑f y) (↑f z) < ε₂
tα : Set α
left✝¹ : tα ⊆ univ
htα : univ ⊆ ⋃ (i : α) (_ : i ∈ tα), U i
a✝¹ : Fintype ↑tα
tβ : Set β
left✝ : tβ ⊆ univ
htβ : univ ⊆ ⋃ (x : β) (_ : x ∈ tβ), ball x ε₂
a✝ : Fintype ↑tβ
F : β → β
hF : ∀ (y : β), F y ∈ tβ ∧ dist y (F y) < ε₂
f : α →ᵇ β
hf : f ∈ A
g : α →ᵇ β
hg : g ∈ A
f_eq_g :
  (fun f a => { val := F (↑↑f ↑a), property := (_ : F (↑↑f ↑a) ∈ tβ) }) { val := f, property := hf } =
    (fun f a => { val := F (↑↑f ↑a), property := (_ : F (↑↑f ↑a) ∈ tβ) }) { val := g, property := hg }
x x' : α
x'tα : x' ∈ tα
hx' : x ∈ U x'
F_f_g : F (↑f x') = F (↑g x')
⊢ dist (↑f x') (F (↑f x')) + dist (↑g x') (F (↑f x')) = dist (↑f x') (F (↑f x')) + dist (↑g x') (F (↑g x'))

tactic: rw [add_halves, add_halves]
state_before: F✝ : Type ?u.808170
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : CompactSpace α
inst✝¹ : PseudoMetricSpace β
f✝ g✝ : α →ᵇ β
x✝ : α
C : ℝ
inst✝ : CompactSpace β
A : Set (α →ᵇ β)
closed : IsClosed A
H :
  ∀ (x₀ : α) (ε : ℝ),
    ε > 0 → ∃ U, U ∈ 𝓝 x₀ ∧ ∀ (x : α), x ∈ U → ∀ (x' : α), x' ∈ U → ∀ (i : ↑A), dist (↑↑i x) (↑↑i x') < ε
ε : ℝ
ε0 : ε > 0
ε₁ : ℝ
ε₁0 : 0 < ε₁
εε₁ : ε₁ < ε
ε₂ : ℝ := ε₁ / 2 / 2
ε₂0 : ε₂ > 0
U : α → Set α
hU :
  ∀ (x : α),
    x ∈ U x ∧ IsOpen (U x) ∧ ∀ (y : α), y ∈ U x → ∀ (z : α), z ∈ U x → ∀ {f : α →ᵇ β}, f ∈ A → dist (↑f y) (↑f z) < ε₂
tα : Set α
left✝¹ : tα ⊆ univ
htα : univ ⊆ ⋃ (i : α) (_ : i ∈ tα), U i
a✝¹ : Fintype ↑tα
tβ : Set β
left✝ : tβ ⊆ univ
htβ : univ ⊆ ⋃ (x : β) (_ : x ∈ tβ), ball x ε₂
a✝ : Fintype ↑tβ
F : β → β
hF : ∀ (y : β), F y ∈ tβ ∧ dist y (F y) < ε₂
f : α →ᵇ β
hf : f ∈ A
g : α →ᵇ β
hg : g ∈ A
f_eq_g :
  (fun f a => { val := F (↑↑f ↑a), property := (_ : F (↑↑f ↑a) ∈ tβ) }) { val := f, property := hf } =
    (fun f a => { val := F (↑↑f ↑a), property := (_ : F (↑↑f ↑a) ∈ tβ) }) { val := g, property := hg }
x x' : α
x'tα : x' ∈ tα
hx' : x ∈ U x'
⊢ ε₂ + ε₂ + ε₁ / 2 = ε₁