Theorem: continuousOn_extendFrom
File: Mathlib/Topology/ExtendFrom.lean

tactic: set φ := extendFrom A f
state_before: X : Type u_2
Y : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : RegularSpace Y
f : X → Y
A B : Set X
hB : B ⊆ closure A
hf : ∀ (x : X), x ∈ B → ∃ y, Tendsto f (𝓝[A] x) (𝓝 y)
⊢ ContinuousOn (extendFrom A f) B

tactic: intro x x_in
state_before: X : Type u_2
Y : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : RegularSpace Y
f : X → Y
A B : Set X
hB : B ⊆ closure A
hf : ∀ (x : X), x ∈ B → ∃ y, Tendsto f (𝓝[A] x) (𝓝 y)
φ : X → Y := extendFrom A f
⊢ ContinuousOn φ B

tactic: suffices ∀ V' ∈ 𝓝 (φ x), IsClosed V' → φ ⁻¹' V' ∈ 𝓝[B] x by
  simpa [ContinuousWithinAt, (closed_nhds_basis (φ x)).tendsto_right_iff]
state_before: X : Type u_2
Y : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : RegularSpace Y
f : X → Y
A B : Set X
hB : B ⊆ closure A
hf : ∀ (x : X), x ∈ B → ∃ y, Tendsto f (𝓝[A] x) (𝓝 y)
φ : X → Y := extendFrom A f
x : X
x_in : x ∈ B
⊢ ContinuousWithinAt φ B x

tactic: intro V' V'_in V'_closed
state_before: X : Type u_2
Y : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : RegularSpace Y
f : X → Y
A B : Set X
hB : B ⊆ closure A
hf : ∀ (x : X), x ∈ B → ∃ y, Tendsto f (𝓝[A] x) (𝓝 y)
φ : X → Y := extendFrom A f
x : X
x_in : x ∈ B
⊢ ∀ (V' : Set Y), V' ∈ 𝓝 (φ x) → IsClosed V' → φ ⁻¹' V' ∈ 𝓝[B] x

tactic: obtain ⟨V, V_in, V_op, hV⟩ : ∃ V ∈ 𝓝 x, IsOpen V ∧ V ∩ A ⊆ f ⁻¹' V' := by
  have := tendsto_extendFrom (hf x x_in)
  rcases (nhdsWithin_basis_open x A).tendsto_left_iff.mp this V' V'_in with ⟨V, ⟨hxV, V_op⟩, hV⟩
  exact ⟨V, IsOpen.mem_nhds V_op hxV, V_op, hV⟩
state_before: X : Type u_2
Y : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : RegularSpace Y
f : X → Y
A B : Set X
hB : B ⊆ closure A
hf : ∀ (x : X), x ∈ B → ∃ y, Tendsto f (𝓝[A] x) (𝓝 y)
φ : X → Y := extendFrom A f
x : X
x_in : x ∈ B
V' : Set Y
V'_in : V' ∈ 𝓝 (φ x)
V'_closed : IsClosed V'
⊢ φ ⁻¹' V' ∈ 𝓝[B] x

tactic: suffices : ∀ y ∈ V ∩ B, φ y ∈ V'
state_before: case intro.intro.intro
X : Type u_2
Y : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : RegularSpace Y
f : X → Y
A B : Set X
hB : B ⊆ closure A
hf : ∀ (x : X), x ∈ B → ∃ y, Tendsto f (𝓝[A] x) (𝓝 y)
φ : X → Y := extendFrom A f
x : X
x_in : x ∈ B
V' : Set Y
V'_in : V' ∈ 𝓝 (φ x)
V'_closed : IsClosed V'
V : Set X
V_in : V ∈ 𝓝 x
V_op : IsOpen V
hV : V ∩ A ⊆ f ⁻¹' V'
⊢ φ ⁻¹' V' ∈ 𝓝[B] x

tactic: exact mem_of_superset (inter_mem_inf V_in <| mem_principal_self B) this
state_before: case intro.intro.intro
X : Type u_2
Y : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : RegularSpace Y
f : X → Y
A B : Set X
hB : B ⊆ closure A
hf : ∀ (x : X), x ∈ B → ∃ y, Tendsto f (𝓝[A] x) (𝓝 y)
φ : X → Y := extendFrom A f
x : X
x_in : x ∈ B
V' : Set Y
V'_in : V' ∈ 𝓝 (φ x)
V'_closed : IsClosed V'
V : Set X
V_in : V ∈ 𝓝 x
V_op : IsOpen V
hV : V ∩ A ⊆ f ⁻¹' V'
this : ∀ (y : X), y ∈ V ∩ B → φ y ∈ V'
⊢ φ ⁻¹' V' ∈ 𝓝[B] x

case this
X : Type u_2
Y : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : RegularSpace Y
f : X → Y
A B : Set X
hB : B ⊆ closure A
hf : ∀ (x : X), x ∈ B → ∃ y, Tendsto f (𝓝[A] x) (𝓝 y)
φ : X → Y := extendFrom A f
x : X
x_in : x ∈ B
V' : Set Y
V'_in : V' ∈ 𝓝 (φ x)
V'_closed : IsClosed V'
V : Set X
V_in : V ∈ 𝓝 x
V_op : IsOpen V
hV : V ∩ A ⊆ f ⁻¹' V'
⊢ ∀ (y : X), y ∈ V ∩ B → φ y ∈ V'

tactic: rintro y ⟨hyV, hyB⟩
state_before: case this
X : Type u_2
Y : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : RegularSpace Y
f : X → Y
A B : Set X
hB : B ⊆ closure A
hf : ∀ (x : X), x ∈ B → ∃ y, Tendsto f (𝓝[A] x) (𝓝 y)
φ : X → Y := extendFrom A f
x : X
x_in : x ∈ B
V' : Set Y
V'_in : V' ∈ 𝓝 (φ x)
V'_closed : IsClosed V'
V : Set X
V_in : V ∈ 𝓝 x
V_op : IsOpen V
hV : V ∩ A ⊆ f ⁻¹' V'
⊢ ∀ (y : X), y ∈ V ∩ B → φ y ∈ V'

tactic: haveI := mem_closure_iff_nhdsWithin_neBot.mp (hB hyB)
state_before: case this.intro
X : Type u_2
Y : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : RegularSpace Y
f : X → Y
A B : Set X
hB : B ⊆ closure A
hf : ∀ (x : X), x ∈ B → ∃ y, Tendsto f (𝓝[A] x) (𝓝 y)
φ : X → Y := extendFrom A f
x : X
x_in : x ∈ B
V' : Set Y
V'_in : V' ∈ 𝓝 (φ x)
V'_closed : IsClosed V'
V : Set X
V_in : V ∈ 𝓝 x
V_op : IsOpen V
hV : V ∩ A ⊆ f ⁻¹' V'
y : X
hyV : y ∈ V
hyB : y ∈ B
⊢ φ y ∈ V'

tactic: have limy : Tendsto f (𝓝[A] y) (𝓝 <| φ y) := tendsto_extendFrom (hf y hyB)
state_before: case this.intro
X : Type u_2
Y : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : RegularSpace Y
f : X → Y
A B : Set X
hB : B ⊆ closure A
hf : ∀ (x : X), x ∈ B → ∃ y, Tendsto f (𝓝[A] x) (𝓝 y)
φ : X → Y := extendFrom A f
x : X
x_in : x ∈ B
V' : Set Y
V'_in : V' ∈ 𝓝 (φ x)
V'_closed : IsClosed V'
V : Set X
V_in : V ∈ 𝓝 x
V_op : IsOpen V
hV : V ∩ A ⊆ f ⁻¹' V'
y : X
hyV : y ∈ V
hyB : y ∈ B
this : NeBot (𝓝[A] y)
⊢ φ y ∈ V'

tactic: have hVy : V ∈ 𝓝 y := IsOpen.mem_nhds V_op hyV
state_before: case this.intro
X : Type u_2
Y : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : RegularSpace Y
f : X → Y
A B : Set X
hB : B ⊆ closure A
hf : ∀ (x : X), x ∈ B → ∃ y, Tendsto f (𝓝[A] x) (𝓝 y)
φ : X → Y := extendFrom A f
x : X
x_in : x ∈ B
V' : Set Y
V'_in : V' ∈ 𝓝 (φ x)
V'_closed : IsClosed V'
V : Set X
V_in : V ∈ 𝓝 x
V_op : IsOpen V
hV : V ∩ A ⊆ f ⁻¹' V'
y : X
hyV : y ∈ V
hyB : y ∈ B
this : NeBot (𝓝[A] y)
limy : Tendsto f (𝓝[A] y) (𝓝 (φ y))
⊢ φ y ∈ V'

tactic: have : V ∩ A ∈ 𝓝[A] y := by simpa only [inter_comm] using inter_mem_nhdsWithin A hVy
state_before: case this.intro
X : Type u_2
Y : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : RegularSpace Y
f : X → Y
A B : Set X
hB : B ⊆ closure A
hf : ∀ (x : X), x ∈ B → ∃ y, Tendsto f (𝓝[A] x) (𝓝 y)
φ : X → Y := extendFrom A f
x : X
x_in : x ∈ B
V' : Set Y
V'_in : V' ∈ 𝓝 (φ x)
V'_closed : IsClosed V'
V : Set X
V_in : V ∈ 𝓝 x
V_op : IsOpen V
hV : V ∩ A ⊆ f ⁻¹' V'
y : X
hyV : y ∈ V
hyB : y ∈ B
this : NeBot (𝓝[A] y)
limy : Tendsto f (𝓝[A] y) (𝓝 (φ y))
hVy : V ∈ 𝓝 y
⊢ φ y ∈ V'

tactic: exact V'_closed.mem_of_tendsto limy (mem_of_superset this hV)
state_before: case this.intro
X : Type u_2
Y : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : RegularSpace Y
f : X → Y
A B : Set X
hB : B ⊆ closure A
hf : ∀ (x : X), x ∈ B → ∃ y, Tendsto f (𝓝[A] x) (𝓝 y)
φ : X → Y := extendFrom A f
x : X
x_in : x ∈ B
V' : Set Y
V'_in : V' ∈ 𝓝 (φ x)
V'_closed : IsClosed V'
V : Set X
V_in : V ∈ 𝓝 x
V_op : IsOpen V
hV : V ∩ A ⊆ f ⁻¹' V'
y : X
hyV : y ∈ V
hyB : y ∈ B
this✝ : NeBot (𝓝[A] y)
limy : Tendsto f (𝓝[A] y) (𝓝 (φ y))
hVy : V ∈ 𝓝 y
this : V ∩ A ∈ 𝓝[A] y
⊢ φ y ∈ V'

tactic: simpa [ContinuousWithinAt, (closed_nhds_basis (φ x)).tendsto_right_iff]
state_before: X : Type u_2
Y : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : RegularSpace Y
f : X → Y
A B : Set X
hB : B ⊆ closure A
hf : ∀ (x : X), x ∈ B → ∃ y, Tendsto f (𝓝[A] x) (𝓝 y)
φ : X → Y := extendFrom A f
x : X
x_in : x ∈ B
this : ∀ (V' : Set Y), V' ∈ 𝓝 (φ x) → IsClosed V' → φ ⁻¹' V' ∈ 𝓝[B] x
⊢ ContinuousWithinAt φ B x

tactic: have := tendsto_extendFrom (hf x x_in)
state_before: X : Type u_2
Y : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : RegularSpace Y
f : X → Y
A B : Set X
hB : B ⊆ closure A
hf : ∀ (x : X), x ∈ B → ∃ y, Tendsto f (𝓝[A] x) (𝓝 y)
φ : X → Y := extendFrom A f
x : X
x_in : x ∈ B
V' : Set Y
V'_in : V' ∈ 𝓝 (φ x)
V'_closed : IsClosed V'
⊢ ∃ V, V ∈ 𝓝 x ∧ IsOpen V ∧ V ∩ A ⊆ f ⁻¹' V'

tactic: rcases (nhdsWithin_basis_open x A).tendsto_left_iff.mp this V' V'_in with ⟨V, ⟨hxV, V_op⟩, hV⟩
state_before: X : Type u_2
Y : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : RegularSpace Y
f : X → Y
A B : Set X
hB : B ⊆ closure A
hf : ∀ (x : X), x ∈ B → ∃ y, Tendsto f (𝓝[A] x) (𝓝 y)
φ : X → Y := extendFrom A f
x : X
x_in : x ∈ B
V' : Set Y
V'_in : V' ∈ 𝓝 (φ x)
V'_closed : IsClosed V'
this : Tendsto f (𝓝[A] x) (𝓝 (extendFrom A f x))
⊢ ∃ V, V ∈ 𝓝 x ∧ IsOpen V ∧ V ∩ A ⊆ f ⁻¹' V'

tactic: exact ⟨V, IsOpen.mem_nhds V_op hxV, V_op, hV⟩
state_before: case intro.intro.intro
X : Type u_2
Y : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : RegularSpace Y
f : X → Y
A B : Set X
hB : B ⊆ closure A
hf : ∀ (x : X), x ∈ B → ∃ y, Tendsto f (𝓝[A] x) (𝓝 y)
φ : X → Y := extendFrom A f
x : X
x_in : x ∈ B
V' : Set Y
V'_in : V' ∈ 𝓝 (φ x)
V'_closed : IsClosed V'
this : Tendsto f (𝓝[A] x) (𝓝 (extendFrom A f x))
V : Set X
hV : MapsTo f (V ∩ A) V'
hxV : x ∈ V
V_op : IsOpen V
⊢ ∃ V, V ∈ 𝓝 x ∧ IsOpen V ∧ V ∩ A ⊆ f ⁻¹' V'

tactic: simpa only [inter_comm] using inter_mem_nhdsWithin A hVy
state_before: X : Type u_2
Y : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : RegularSpace Y
f : X → Y
A B : Set X
hB : B ⊆ closure A
hf : ∀ (x : X), x ∈ B → ∃ y, Tendsto f (𝓝[A] x) (𝓝 y)
φ : X → Y := extendFrom A f
x : X
x_in : x ∈ B
V' : Set Y
V'_in : V' ∈ 𝓝 (φ x)
V'_closed : IsClosed V'
V : Set X
V_in : V ∈ 𝓝 x
V_op : IsOpen V
hV : V ∩ A ⊆ f ⁻¹' V'
y : X
hyV : y ∈ V
hyB : y ∈ B
this : NeBot (𝓝[A] y)
limy : Tendsto f (𝓝[A] y) (𝓝 (φ y))
hVy : V ∈ 𝓝 y
⊢ V ∩ A ∈ 𝓝[A] y