Theorem: FiberBundle.continuousWithinAt_totalSpace
File: Mathlib/Topology/FiberBundle/Basic.lean

tactic: refine' (and_iff_right_iff_imp.2 fun hf => _).symm.trans (and_congr_right fun hf => _)
state_before: ι : Type ?u.8243
B : Type u_1
F : Type u_4
X : Type u_3
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace F
E : B → Type u_2
inst✝² : TopologicalSpace (TotalSpace E)
inst✝¹ : (b : B) → TopologicalSpace (E b)
inst✝ : FiberBundle F E
f : X → TotalSpace E
s : Set X
x₀ : X
⊢ ContinuousWithinAt f s x₀ ↔
    ContinuousWithinAt (fun x => TotalSpace.proj (f x)) s x₀ ∧
      ContinuousWithinAt (fun x => (↑(trivializationAt F E (TotalSpace.proj (f x₀))) (f x)).snd) s x₀

tactic: have h1 : (fun x => (f x).proj) ⁻¹' (trivializationAt F E (f x₀).proj).baseSet ∈ 𝓝[s] x₀ :=
  hf.preimage_mem_nhdsWithin ((open_baseSet _).mem_nhds (mem_baseSet_trivializationAt F E _))
state_before: case refine'_2
ι : Type ?u.8243
B : Type u_1
F : Type u_4
X : Type u_3
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace F
E : B → Type u_2
inst✝² : TopologicalSpace (TotalSpace E)
inst✝¹ : (b : B) → TopologicalSpace (E b)
inst✝ : FiberBundle F E
f : X → TotalSpace E
s : Set X
x₀ : X
hf : ContinuousWithinAt (fun x => TotalSpace.proj (f x)) s x₀
⊢ ContinuousWithinAt f s x₀ ↔
    ContinuousWithinAt (fun x => (↑(trivializationAt F E (TotalSpace.proj (f x₀))) (f x)).snd) s x₀

tactic: have h2 : ContinuousWithinAt (fun x => (trivializationAt F E (f x₀).proj (f x)).1) s x₀ := by
  refine'
    hf.congr_of_eventuallyEq (eventually_of_mem h1 fun x hx => _) trivializationAt_proj_fst
  simp_rw [coe_fst' _ hx]
state_before: case refine'_2
ι : Type ?u.8243
B : Type u_1
F : Type u_4
X : Type u_3
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace F
E : B → Type u_2
inst✝² : TopologicalSpace (TotalSpace E)
inst✝¹ : (b : B) → TopologicalSpace (E b)
inst✝ : FiberBundle F E
f : X → TotalSpace E
s : Set X
x₀ : X
hf : ContinuousWithinAt (fun x => TotalSpace.proj (f x)) s x₀
h1 : (fun x => TotalSpace.proj (f x)) ⁻¹' (trivializationAt F E (TotalSpace.proj (f x₀))).baseSet ∈ 𝓝[s] x₀
⊢ ContinuousWithinAt f s x₀ ↔
    ContinuousWithinAt (fun x => (↑(trivializationAt F E (TotalSpace.proj (f x₀))) (f x)).snd) s x₀

tactic: rw [(trivializationAt F E (f x₀).proj).continuousWithinAt_iff_continuousWithinAt_comp_left]
state_before: case refine'_2
ι : Type ?u.8243
B : Type u_1
F : Type u_4
X : Type u_3
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace F
E : B → Type u_2
inst✝² : TopologicalSpace (TotalSpace E)
inst✝¹ : (b : B) → TopologicalSpace (E b)
inst✝ : FiberBundle F E
f : X → TotalSpace E
s : Set X
x₀ : X
hf : ContinuousWithinAt (fun x => TotalSpace.proj (f x)) s x₀
h1 : (fun x => TotalSpace.proj (f x)) ⁻¹' (trivializationAt F E (TotalSpace.proj (f x₀))).baseSet ∈ 𝓝[s] x₀
h2 : ContinuousWithinAt (fun x => (↑(trivializationAt F E (TotalSpace.proj (f x₀))) (f x)).fst) s x₀
⊢ ContinuousWithinAt f s x₀ ↔
    ContinuousWithinAt (fun x => (↑(trivializationAt F E (TotalSpace.proj (f x₀))) (f x)).snd) s x₀

tactic: refine' (continuous_proj F E).continuousWithinAt.comp hf (mapsTo_image f s)
state_before: case refine'_1
ι : Type ?u.8243
B : Type u_1
F : Type u_4
X : Type u_3
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace F
E : B → Type u_2
inst✝² : TopologicalSpace (TotalSpace E)
inst✝¹ : (b : B) → TopologicalSpace (E b)
inst✝ : FiberBundle F E
f : X → TotalSpace E
s : Set X
x₀ : X
hf : ContinuousWithinAt f s x₀
⊢ ContinuousWithinAt (fun x => TotalSpace.proj (f x)) s x₀

tactic: refine'
  hf.congr_of_eventuallyEq (eventually_of_mem h1 fun x hx => _) trivializationAt_proj_fst
state_before: ι : Type ?u.8243
B : Type u_1
F : Type u_4
X : Type u_3
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace F
E : B → Type u_2
inst✝² : TopologicalSpace (TotalSpace E)
inst✝¹ : (b : B) → TopologicalSpace (E b)
inst✝ : FiberBundle F E
f : X → TotalSpace E
s : Set X
x₀ : X
hf : ContinuousWithinAt (fun x => TotalSpace.proj (f x)) s x₀
h1 : (fun x => TotalSpace.proj (f x)) ⁻¹' (trivializationAt F E (TotalSpace.proj (f x₀))).baseSet ∈ 𝓝[s] x₀
⊢ ContinuousWithinAt (fun x => (↑(trivializationAt F E (TotalSpace.proj (f x₀))) (f x)).fst) s x₀

tactic: simp_rw [coe_fst' _ hx]
state_before: ι : Type ?u.8243
B : Type u_1
F : Type u_4
X : Type u_3
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace F
E : B → Type u_2
inst✝² : TopologicalSpace (TotalSpace E)
inst✝¹ : (b : B) → TopologicalSpace (E b)
inst✝ : FiberBundle F E
f : X → TotalSpace E
s : Set X
x₀ : X
hf : ContinuousWithinAt (fun x => TotalSpace.proj (f x)) s x₀
h1 : (fun x => TotalSpace.proj (f x)) ⁻¹' (trivializationAt F E (TotalSpace.proj (f x₀))).baseSet ∈ 𝓝[s] x₀
x : X
hx : x ∈ (fun x => TotalSpace.proj (f x)) ⁻¹' (trivializationAt F E (TotalSpace.proj (f x₀))).baseSet
⊢ (fun x => (↑(trivializationAt F E (TotalSpace.proj (f x₀))) (f x)).fst) x = (fun x => TotalSpace.proj (f x)) x

tactic: simp_rw [continuousWithinAt_prod_iff, Function.comp, Trivialization.coe_coe, h2, true_and_iff]
state_before: case refine'_2
ι : Type ?u.8243
B : Type u_1
F : Type u_4
X : Type u_3
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace F
E : B → Type u_2
inst✝² : TopologicalSpace (TotalSpace E)
inst✝¹ : (b : B) → TopologicalSpace (E b)
inst✝ : FiberBundle F E
f : X → TotalSpace E
s : Set X
x₀ : X
hf : ContinuousWithinAt (fun x => TotalSpace.proj (f x)) s x₀
h1 : (fun x => TotalSpace.proj (f x)) ⁻¹' (trivializationAt F E (TotalSpace.proj (f x₀))).baseSet ∈ 𝓝[s] x₀
h2 : ContinuousWithinAt (fun x => (↑(trivializationAt F E (TotalSpace.proj (f x₀))) (f x)).fst) s x₀
⊢ ContinuousWithinAt (↑(trivializationAt F E (TotalSpace.proj (f x₀))).toLocalHomeomorph ∘ f) s x₀ ↔
    ContinuousWithinAt (fun x => (↑(trivializationAt F E (TotalSpace.proj (f x₀))) (f x)).snd) s x₀

tactic: apply mem_trivializationAt_proj_source
state_before: case refine'_2.hx
ι : Type ?u.8243
B : Type u_1
F : Type u_4
X : Type u_3
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace F
E : B → Type u_2
inst✝² : TopologicalSpace (TotalSpace E)
inst✝¹ : (b : B) → TopologicalSpace (E b)
inst✝ : FiberBundle F E
f : X → TotalSpace E
s : Set X
x₀ : X
hf : ContinuousWithinAt (fun x => TotalSpace.proj (f x)) s x₀
h1 : (fun x => TotalSpace.proj (f x)) ⁻¹' (trivializationAt F E (TotalSpace.proj (f x₀))).baseSet ∈ 𝓝[s] x₀
h2 : ContinuousWithinAt (fun x => (↑(trivializationAt F E (TotalSpace.proj (f x₀))) (f x)).fst) s x₀
⊢ f x₀ ∈ (trivializationAt F E (TotalSpace.proj (f x₀))).toLocalHomeomorph.toLocalEquiv.source

tactic: rwa [source_eq, preimage_preimage]
state_before: case refine'_2.h
ι : Type ?u.8243
B : Type u_1
F : Type u_4
X : Type u_3
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace F
E : B → Type u_2
inst✝² : TopologicalSpace (TotalSpace E)
inst✝¹ : (b : B) → TopologicalSpace (E b)
inst✝ : FiberBundle F E
f : X → TotalSpace E
s : Set X
x₀ : X
hf : ContinuousWithinAt (fun x => TotalSpace.proj (f x)) s x₀
h1 : (fun x => TotalSpace.proj (f x)) ⁻¹' (trivializationAt F E (TotalSpace.proj (f x₀))).baseSet ∈ 𝓝[s] x₀
h2 : ContinuousWithinAt (fun x => (↑(trivializationAt F E (TotalSpace.proj (f x₀))) (f x)).fst) s x₀
⊢ f ⁻¹' (trivializationAt F E (TotalSpace.proj (f x₀))).toLocalHomeomorph.toLocalEquiv.source ∈ 𝓝[s] x₀