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

tactic: have M : LipschitzWith 1 (↑) := LipschitzWith.subtype_val s
state_before: F : Type ?u.855510
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : CompactSpace α
inst✝ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
s : Set β
hs : IsCompact s
A : Set (α →ᵇ β)
closed : IsClosed A
in_s : ∀ (f : α →ᵇ β) (x : α), f ∈ A → ↑f x ∈ s
H : Equicontinuous fun x => ↑↑x
⊢ IsCompact A

tactic: let F : (α →ᵇ s) → α →ᵇ β := comp (↑) M
state_before: F : Type ?u.855510
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : CompactSpace α
inst✝ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
s : Set β
hs : IsCompact s
A : Set (α →ᵇ β)
closed : IsClosed A
in_s : ∀ (f : α →ᵇ β) (x : α), f ∈ A → ↑f x ∈ s
H : Equicontinuous fun x => ↑↑x
M : LipschitzWith 1 Subtype.val
⊢ IsCompact A

tactic: refine' isCompact_of_isClosed_subset ((_ : IsCompact (F ⁻¹' A)).image (continuous_comp M)) closed
    fun f hf => _
state_before: F✝ : Type ?u.855510
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : CompactSpace α
inst✝ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
s : Set β
hs : IsCompact s
A : Set (α →ᵇ β)
closed : IsClosed A
in_s : ∀ (f : α →ᵇ β) (x : α), f ∈ A → ↑f x ∈ s
H : Equicontinuous fun x => ↑↑x
M : LipschitzWith 1 Subtype.val
F : (α →ᵇ ↑s) → α →ᵇ β := comp Subtype.val M
⊢ IsCompact A

tactic: haveI : CompactSpace s := isCompact_iff_compactSpace.1 hs
state_before: case refine'_1
F✝ : Type ?u.855510
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : CompactSpace α
inst✝ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
s : Set β
hs : IsCompact s
A : Set (α →ᵇ β)
closed : IsClosed A
in_s : ∀ (f : α →ᵇ β) (x : α), f ∈ A → ↑f x ∈ s
H : Equicontinuous fun x => ↑↑x
M : LipschitzWith 1 Subtype.val
F : (α →ᵇ ↑s) → α →ᵇ β := comp Subtype.val M
⊢ IsCompact (F ⁻¹' A)

tactic: refine' arzela_ascoli₁ _ (continuous_iff_isClosed.1 (continuous_comp M) _ closed) _
state_before: case refine'_1
F✝ : Type ?u.855510
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : CompactSpace α
inst✝ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
s : Set β
hs : IsCompact s
A : Set (α →ᵇ β)
closed : IsClosed A
in_s : ∀ (f : α →ᵇ β) (x : α), f ∈ A → ↑f x ∈ s
H : Equicontinuous fun x => ↑↑x
M : LipschitzWith 1 Subtype.val
F : (α →ᵇ ↑s) → α →ᵇ β := comp Subtype.val M
this : CompactSpace ↑s
⊢ IsCompact (F ⁻¹' A)

tactic: rw [uniformEmbedding_subtype_val.toUniformInducing.equicontinuous_iff]
state_before: case refine'_1
F✝ : Type ?u.855510
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : CompactSpace α
inst✝ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
s : Set β
hs : IsCompact s
A : Set (α →ᵇ β)
closed : IsClosed A
in_s : ∀ (f : α →ᵇ β) (x : α), f ∈ A → ↑f x ∈ s
H : Equicontinuous fun x => ↑↑x
M : LipschitzWith 1 Subtype.val
F : (α →ᵇ ↑s) → α →ᵇ β := comp Subtype.val M
this : CompactSpace ↑s
⊢ Equicontinuous fun x => ↑↑x

tactic: exact H.comp (A.restrictPreimage F)
state_before: case refine'_1
F✝ : Type ?u.855510
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : CompactSpace α
inst✝ : PseudoMetricSpace β
f g : α →ᵇ β
x : α
C : ℝ
s : Set β
hs : IsCompact s
A : Set (α →ᵇ β)
closed : IsClosed A
in_s : ∀ (f : α →ᵇ β) (x : α), f ∈ A → ↑f x ∈ s
H : Equicontinuous fun x => ↑↑x
M : LipschitzWith 1 Subtype.val
F : (α →ᵇ ↑s) → α →ᵇ β := comp Subtype.val M
this : CompactSpace ↑s
⊢ Equicontinuous ((fun x x_1 => x ∘ x_1) Subtype.val ∘ fun x => ↑↑x)

tactic: let g := codRestrict s f fun x => in_s f x hf
state_before: case refine'_2
F✝ : Type ?u.855510
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : CompactSpace α
inst✝ : PseudoMetricSpace β
f✝ g : α →ᵇ β
x : α
C : ℝ
s : Set β
hs : IsCompact s
A : Set (α →ᵇ β)
closed : IsClosed A
in_s : ∀ (f : α →ᵇ β) (x : α), f ∈ A → ↑f x ∈ s
H : Equicontinuous fun x => ↑↑x
M : LipschitzWith 1 Subtype.val
F : (α →ᵇ ↑s) → α →ᵇ β := comp Subtype.val M
f : α →ᵇ β
hf : f ∈ A
⊢ f ∈ comp Subtype.val M '' (F ⁻¹' A)

tactic: rw [show f = F g by ext; rfl] at hf ⊢
state_before: case refine'_2
F✝ : Type ?u.855510
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : CompactSpace α
inst✝ : PseudoMetricSpace β
f✝ g✝ : α →ᵇ β
x : α
C : ℝ
s : Set β
hs : IsCompact s
A : Set (α →ᵇ β)
closed : IsClosed A
in_s : ∀ (f : α →ᵇ β) (x : α), f ∈ A → ↑f x ∈ s
H : Equicontinuous fun x => ↑↑x
M : LipschitzWith 1 Subtype.val
F : (α →ᵇ ↑s) → α →ᵇ β := comp Subtype.val M
f : α →ᵇ β
hf : f ∈ A
g : α →ᵇ ↑s := codRestrict s f (_ : ∀ (x : α), ↑f x ∈ s)
⊢ f ∈ comp Subtype.val M '' (F ⁻¹' A)

tactic: exact ⟨g, hf, rfl⟩
state_before: case refine'_2
F✝ : Type ?u.855510
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : CompactSpace α
inst✝ : PseudoMetricSpace β
f✝ g✝ : α →ᵇ β
x : α
C : ℝ
s : Set β
hs : IsCompact s
A : Set (α →ᵇ β)
closed : IsClosed A
in_s : ∀ (f : α →ᵇ β) (x : α), f ∈ A → ↑f x ∈ s
H : Equicontinuous fun x => ↑↑x
M : LipschitzWith 1 Subtype.val
F : (α →ᵇ ↑s) → α →ᵇ β := comp Subtype.val M
f : α →ᵇ β
hf✝ : f ∈ A
g : α →ᵇ ↑s := codRestrict s f (_ : ∀ (x : α), ↑f x ∈ s)
hf : F g ∈ A
⊢ F g ∈ comp Subtype.val M '' (F ⁻¹' A)

tactic: ext
state_before: F✝ : Type ?u.855510
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : CompactSpace α
inst✝ : PseudoMetricSpace β
f✝ g✝ : α →ᵇ β
x : α
C : ℝ
s : Set β
hs : IsCompact s
A : Set (α →ᵇ β)
closed : IsClosed A
in_s : ∀ (f : α →ᵇ β) (x : α), f ∈ A → ↑f x ∈ s
H : Equicontinuous fun x => ↑↑x
M : LipschitzWith 1 Subtype.val
F : (α →ᵇ ↑s) → α →ᵇ β := comp Subtype.val M
f : α →ᵇ β
hf✝ : f ∈ A
g : α →ᵇ ↑s := codRestrict s f (_ : ∀ (x : α), ↑f x ∈ s)
hf : F g ∈ A
⊢ f = F g

tactic: rfl
state_before: case h
F✝ : Type ?u.855510
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : CompactSpace α
inst✝ : PseudoMetricSpace β
f✝ g✝ : α →ᵇ β
x : α
C : ℝ
s : Set β
hs : IsCompact s
A : Set (α →ᵇ β)
closed : IsClosed A
in_s : ∀ (f : α →ᵇ β) (x : α), f ∈ A → ↑f x ∈ s
H : Equicontinuous fun x => ↑↑x
M : LipschitzWith 1 Subtype.val
F : (α →ᵇ ↑s) → α →ᵇ β := comp Subtype.val M
f : α →ᵇ β
hf✝ : f ∈ A
g : α →ᵇ ↑s := codRestrict s f (_ : ∀ (x : α), ↑f x ∈ s)
hf : F g ∈ A
x✝ : α
⊢ ↑f x✝ = ↑(F g) x✝