Theorem: ContMDiffAt.mfderiv
File: Mathlib/Geometry/Manifold/ContMDiffMFDeriv.lean

tactic: have h4f : ContinuousAt (fun x => f x (g x)) x₀ :=
  ContinuousAt.comp_of_eq hf.continuousAt (continuousAt_id.prod hg.continuousAt) rfl
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
⊢ ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀) x₀
state_after: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f : ContinuousAt (fun x => f x (g x)) x₀
⊢ ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀) x₀

tactic: have h4f := h4f.preimage_mem_nhds (extChartAt_source_mem_nhds I' (f x₀ (g x₀)))
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f : ContinuousAt (fun x => f x (g x)) x₀
⊢ ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀) x₀
state_after: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
⊢ ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀) x₀

tactic: have h3f := contMDiffAt_iff_contMDiffAt_nhds.mp (hf.of_le <| (self_le_add_left 1 m).trans hmn)
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
⊢ ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀) x₀
state_after: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
⊢ ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀) x₀

tactic: have h2f : ∀ᶠ x₂ in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂) := by
  refine ((continuousAt_id.prod hg.continuousAt).tendsto.eventually h3f).mono fun x hx => ?_
  exact hx.comp (g x) (contMDiffAt_const.prod_mk contMDiffAt_id)
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
⊢ ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀) x₀
state_after: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
⊢ ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀) x₀

tactic: have h2g := hg.continuousAt.preimage_mem_nhds (extChartAt_source_mem_nhds I (g x₀))
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
⊢ ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀) x₀
state_after: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
⊢ ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀) x₀

tactic: have :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (extChartAt I' (f x₀ (g x₀)) ∘ f x ∘ (extChartAt I (g x₀)).symm) (range I)
        (extChartAt I (g x₀) (g x)))
    x₀ := by
  simp_rw [contMDiffAt_iff_source_of_mem_source (mem_chart_source G x₀),
    contMDiffWithinAt_iff_contDiffWithinAt, Function.comp]
  exact this
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
⊢ ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀) x₀
state_after: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
⊢ ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀) x₀

tactic: letI _inst : ∀ x, NormedAddCommGroup (TangentSpace I (g x)) :=
  fun _ => inferInstanceAs (NormedAddCommGroup E)
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
⊢ ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀) x₀
state_after: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
⊢ ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀) x₀

tactic: letI _inst : ∀ x, NormedSpace 𝕜 (TangentSpace I (g x)) :=
  fun _ => inferInstanceAs (NormedSpace 𝕜 E)
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
⊢ ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀) x₀
state_after: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
⊢ ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀) x₀

tactic: refine this.congr_of_eventuallyEq ?_
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝² :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝¹ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x (g x))).symm) (range ↑I')
            (↑(extChartAt I' (f x (g x))) (f x (g x)))).comp
        ((mfderiv I I' (f x) (g x)).comp
          (fderivWithin 𝕜 (↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
            (↑(extChartAt I (g x₀)) (g x)))))
    x₀
⊢ ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀) x₀
state_after: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝² :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝¹ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x (g x))).symm) (range ↑I')
            (↑(extChartAt I' (f x (g x))) (f x (g x)))).comp
        ((mfderiv I I' (f x) (g x)).comp
          (fderivWithin 𝕜 (↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
            (↑(extChartAt I (g x₀)) (g x)))))
    x₀
⊢ inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀ =ᶠ[𝓝 x₀] fun x =>
    (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x (g x))).symm) (range ↑I')
          (↑(extChartAt I' (f x (g x))) (f x (g x)))).comp
      ((mfderiv I I' (f x) (g x)).comp
        (fderivWithin 𝕜 (↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
          (↑(extChartAt I (g x₀)) (g x))))

tactic: filter_upwards [h2g, h4f] with x hx h2x
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝² :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝¹ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x (g x))).symm) (range ↑I')
            (↑(extChartAt I' (f x (g x))) (f x (g x)))).comp
        ((mfderiv I I' (f x) (g x)).comp
          (fderivWithin 𝕜 (↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
            (↑(extChartAt I (g x₀)) (g x)))))
    x₀
⊢ inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀ =ᶠ[𝓝 x₀] fun x =>
    (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x (g x))).symm) (range ↑I')
          (↑(extChartAt I' (f x (g x))) (f x (g x)))).comp
      ((mfderiv I I' (f x) (g x)).comp
        (fderivWithin 𝕜 (↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
          (↑(extChartAt I (g x₀)) (g x))))
state_after: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x✝ : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝² :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝¹ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x (g x))).symm) (range ↑I')
            (↑(extChartAt I' (f x (g x))) (f x (g x)))).comp
        ((mfderiv I I' (f x) (g x)).comp
          (fderivWithin 𝕜 (↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
            (↑(extChartAt I (g x₀)) (g x)))))
    x₀
x : N
hx : x ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x : x ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
⊢ inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀ x =
    (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x (g x))).symm) (range ↑I')
          (↑(extChartAt I' (f x (g x))) (f x (g x)))).comp
      ((mfderiv I I' (f x) (g x)).comp
        (fderivWithin 𝕜 (↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
          (↑(extChartAt I (g x₀)) (g x))))

tactic: rw [inTangentCoordinates_eq]
state_before: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x✝ : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝² :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝¹ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x (g x))).symm) (range ↑I')
            (↑(extChartAt I' (f x (g x))) (f x (g x)))).comp
        ((mfderiv I I' (f x) (g x)).comp
          (fderivWithin 𝕜 (↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
            (↑(extChartAt I (g x₀)) (g x)))))
    x₀
x : N
hx : x ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x : x ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
⊢ inTangentCoordinates I I' g (fun x => f x (g x)) (fun x => mfderiv I I' (f x) (g x)) x₀ x =
    (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x (g x))).symm) (range ↑I')
          (↑(extChartAt I' (f x (g x))) (f x (g x)))).comp
      ((mfderiv I I' (f x) (g x)).comp
        (fderivWithin 𝕜 (↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
          (↑(extChartAt I (g x₀)) (g x))))
state_after: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x✝ : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝² :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝¹ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x (g x))).symm) (range ↑I')
            (↑(extChartAt I' (f x (g x))) (f x (g x)))).comp
        ((mfderiv I I' (f x) (g x)).comp
          (fderivWithin 𝕜 (↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
            (↑(extChartAt I (g x₀)) (g x)))))
    x₀
x : N
hx : x ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x : x ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
⊢ ((tangentBundleCore I' M').coordChange (achart H' (f x (g x))) (achart H' (f x₀ (g x₀))) (f x (g x))).comp
      ((mfderiv I I' (f x) (g x)).comp ((tangentBundleCore I M).coordChange (achart H (g x₀)) (achart H (g x)) (g x))) =
    (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x (g x))).symm) (range ↑I')
          (↑(extChartAt I' (f x (g x))) (f x (g x)))).comp
      ((mfderiv I I' (f x) (g x)).comp
        (fderivWithin 𝕜 (↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
          (↑(extChartAt I (g x₀)) (g x))))

case h.hx
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x✝ : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝² :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝¹ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x (g x))).symm) (range ↑I')
            (↑(extChartAt I' (f x (g x))) (f x (g x)))).comp
        ((mfderiv I I' (f x) (g x)).comp
          (fderivWithin 𝕜 (↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
            (↑(extChartAt I (g x₀)) (g x)))))
    x₀
x : N
hx : x ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x : x ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
⊢ g x ∈ (chartAt H (g x₀)).source

case h.hy
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x✝ : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝² :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝¹ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x (g x))).symm) (range ↑I')
            (↑(extChartAt I' (f x (g x))) (f x (g x)))).comp
        ((mfderiv I I' (f x) (g x)).comp
          (fderivWithin 𝕜 (↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
            (↑(extChartAt I (g x₀)) (g x)))))
    x₀
x : N
hx : x ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x : x ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
⊢ f x (g x) ∈ (chartAt H' (f x₀ (g x₀))).source

tactic: refine ((continuousAt_id.prod hg.continuousAt).tendsto.eventually h3f).mono fun x hx => ?_
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
⊢ ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
state_after: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x✝ : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
x : N
hx : ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) (id x, g x)
⊢ ContMDiffAt I I' 1 (f x) (g x)

tactic: exact hx.comp (g x) (contMDiffAt_const.prod_mk contMDiffAt_id)
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x✝ : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
x : N
hx : ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) (id x, g x)
⊢ ContMDiffAt I I' 1 (f x) (g x)
state_after: no goals

tactic: rw [contMDiffAt_iff] at hf hg
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
⊢ ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
state_after: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf :
  ContinuousAt (uncurry f) (x₀, g x₀) ∧
    ContDiffWithinAt 𝕜 n
      (↑(extChartAt I' (uncurry f (x₀, g x₀))) ∘ uncurry f ∘ ↑(extChartAt (J.prod I) (x₀, g x₀)).symm)
      (range ↑(J.prod I)) (↑(extChartAt (J.prod I) (x₀, g x₀)) (x₀, g x₀))
hg :
  ContinuousAt g x₀ ∧
    ContDiffWithinAt 𝕜 m (↑(extChartAt I (g x₀)) ∘ g ∘ ↑(extChartAt J x₀).symm) (range ↑J) (↑(extChartAt J x₀) x₀)
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
⊢ ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)

tactic: simp_rw [Function.comp, uncurry, extChartAt_prod, PartialEquiv.prod_coe_symm,
  ModelWithCorners.range_prod] at hf ⊢
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf :
  ContinuousAt (uncurry f) (x₀, g x₀) ∧
    ContDiffWithinAt 𝕜 n
      (↑(extChartAt I' (uncurry f (x₀, g x₀))) ∘ uncurry f ∘ ↑(extChartAt (J.prod I) (x₀, g x₀)).symm)
      (range ↑(J.prod I)) (↑(extChartAt (J.prod I) (x₀, g x₀)) (x₀, g x₀))
hg :
  ContinuousAt g x₀ ∧
    ContDiffWithinAt 𝕜 m (↑(extChartAt I (g x₀)) ∘ g ∘ ↑(extChartAt J x₀).symm) (range ↑J) (↑(extChartAt J x₀) x₀)
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
⊢ ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
state_after: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hg :
  ContinuousAt g x₀ ∧
    ContDiffWithinAt 𝕜 m (↑(extChartAt I (g x₀)) ∘ g ∘ ↑(extChartAt J x₀).symm) (range ↑J) (↑(extChartAt J x₀) x₀)
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
hf :
  ContinuousAt (uncurry f) (x₀, g x₀) ∧
    ContDiffWithinAt 𝕜 n
      (fun x => ↑(extChartAt I' (f x₀ (g x₀))) (f (↑(extChartAt J x₀).symm x.1) (↑(extChartAt I (g x₀)).symm x.2)))
      (range ↑J ×ˢ range ↑I) (↑((extChartAt J x₀).prod (extChartAt I (g x₀))) (x₀, g x₀))
⊢ ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜
        (fun x_1 => ↑(extChartAt I' (f x₀ (g x₀))) (f (↑(extChartAt J x₀).symm x) (↑(extChartAt I (g x₀)).symm x_1)))
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)

tactic: refine ContDiffWithinAt.fderivWithin ?_ hg.2 I.unique_diff hmn (mem_range_self _) ?_
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hg :
  ContinuousAt g x₀ ∧
    ContDiffWithinAt 𝕜 m (↑(extChartAt I (g x₀)) ∘ g ∘ ↑(extChartAt J x₀).symm) (range ↑J) (↑(extChartAt J x₀) x₀)
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
hf :
  ContinuousAt (uncurry f) (x₀, g x₀) ∧
    ContDiffWithinAt 𝕜 n
      (fun x => ↑(extChartAt I' (f x₀ (g x₀))) (f (↑(extChartAt J x₀).symm x.1) (↑(extChartAt I (g x₀)).symm x.2)))
      (range ↑J ×ˢ range ↑I) (↑((extChartAt J x₀).prod (extChartAt I (g x₀))) (x₀, g x₀))
⊢ ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜
        (fun x_1 => ↑(extChartAt I' (f x₀ (g x₀))) (f (↑(extChartAt J x₀).symm x) (↑(extChartAt I (g x₀)).symm x_1)))
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
state_after: case refine_1
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hg :
  ContinuousAt g x₀ ∧
    ContDiffWithinAt 𝕜 m (↑(extChartAt I (g x₀)) ∘ g ∘ ↑(extChartAt J x₀).symm) (range ↑J) (↑(extChartAt J x₀) x₀)
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
hf :
  ContinuousAt (uncurry f) (x₀, g x₀) ∧
    ContDiffWithinAt 𝕜 n
      (fun x => ↑(extChartAt I' (f x₀ (g x₀))) (f (↑(extChartAt J x₀).symm x.1) (↑(extChartAt I (g x₀)).symm x.2)))
      (range ↑J ×ˢ range ↑I) (↑((extChartAt J x₀).prod (extChartAt I (g x₀))) (x₀, g x₀))
⊢ ContDiffWithinAt 𝕜 n
    (uncurry fun x x_1 =>
      ↑(extChartAt I' (f x₀ (g x₀))) (f (↑(extChartAt J x₀).symm x) (↑(extChartAt I (g x₀)).symm x_1)))
    (range ↑J ×ˢ range ↑I)
    (↑(extChartAt J x₀) x₀, ↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm (↑(extChartAt J x₀) x₀))))

case refine_2
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hg :
  ContinuousAt g x₀ ∧
    ContDiffWithinAt 𝕜 m (↑(extChartAt I (g x₀)) ∘ g ∘ ↑(extChartAt J x₀).symm) (range ↑J) (↑(extChartAt J x₀) x₀)
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
hf :
  ContinuousAt (uncurry f) (x₀, g x₀) ∧
    ContDiffWithinAt 𝕜 n
      (fun x => ↑(extChartAt I' (f x₀ (g x₀))) (f (↑(extChartAt J x₀).symm x.1) (↑(extChartAt I (g x₀)).symm x.2)))
      (range ↑J ×ˢ range ↑I) (↑((extChartAt J x₀).prod (extChartAt I (g x₀))) (x₀, g x₀))
⊢ range ↑J ⊆ (fun x => ↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))) ⁻¹' range ↑I

tactic: simp_rw [extChartAt_to_inv]
state_before: case refine_1
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hg :
  ContinuousAt g x₀ ∧
    ContDiffWithinAt 𝕜 m (↑(extChartAt I (g x₀)) ∘ g ∘ ↑(extChartAt J x₀).symm) (range ↑J) (↑(extChartAt J x₀) x₀)
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
hf :
  ContinuousAt (uncurry f) (x₀, g x₀) ∧
    ContDiffWithinAt 𝕜 n
      (fun x => ↑(extChartAt I' (f x₀ (g x₀))) (f (↑(extChartAt J x₀).symm x.1) (↑(extChartAt I (g x₀)).symm x.2)))
      (range ↑J ×ˢ range ↑I) (↑((extChartAt J x₀).prod (extChartAt I (g x₀))) (x₀, g x₀))
⊢ ContDiffWithinAt 𝕜 n
    (uncurry fun x x_1 =>
      ↑(extChartAt I' (f x₀ (g x₀))) (f (↑(extChartAt J x₀).symm x) (↑(extChartAt I (g x₀)).symm x_1)))
    (range ↑J ×ˢ range ↑I)
    (↑(extChartAt J x₀) x₀, ↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm (↑(extChartAt J x₀) x₀))))
state_after: case refine_1
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hg :
  ContinuousAt g x₀ ∧
    ContDiffWithinAt 𝕜 m (↑(extChartAt I (g x₀)) ∘ g ∘ ↑(extChartAt J x₀).symm) (range ↑J) (↑(extChartAt J x₀) x₀)
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
hf :
  ContinuousAt (uncurry f) (x₀, g x₀) ∧
    ContDiffWithinAt 𝕜 n
      (fun x => ↑(extChartAt I' (f x₀ (g x₀))) (f (↑(extChartAt J x₀).symm x.1) (↑(extChartAt I (g x₀)).symm x.2)))
      (range ↑J ×ˢ range ↑I) (↑((extChartAt J x₀).prod (extChartAt I (g x₀))) (x₀, g x₀))
⊢ ContDiffWithinAt 𝕜 n
    (uncurry fun x x_1 =>
      ↑(extChartAt I' (f x₀ (g x₀))) (f (↑(extChartAt J x₀).symm x) (↑(extChartAt I (g x₀)).symm x_1)))
    (range ↑J ×ˢ range ↑I) (↑(extChartAt J x₀) x₀, ↑(extChartAt I (g x₀)) (g x₀))

tactic: exact hf.2
state_before: case refine_1
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hg :
  ContinuousAt g x₀ ∧
    ContDiffWithinAt 𝕜 m (↑(extChartAt I (g x₀)) ∘ g ∘ ↑(extChartAt J x₀).symm) (range ↑J) (↑(extChartAt J x₀) x₀)
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
hf :
  ContinuousAt (uncurry f) (x₀, g x₀) ∧
    ContDiffWithinAt 𝕜 n
      (fun x => ↑(extChartAt I' (f x₀ (g x₀))) (f (↑(extChartAt J x₀).symm x.1) (↑(extChartAt I (g x₀)).symm x.2)))
      (range ↑J ×ˢ range ↑I) (↑((extChartAt J x₀).prod (extChartAt I (g x₀))) (x₀, g x₀))
⊢ ContDiffWithinAt 𝕜 n
    (uncurry fun x x_1 =>
      ↑(extChartAt I' (f x₀ (g x₀))) (f (↑(extChartAt J x₀).symm x) (↑(extChartAt I (g x₀)).symm x_1)))
    (range ↑J ×ˢ range ↑I) (↑(extChartAt J x₀) x₀, ↑(extChartAt I (g x₀)) (g x₀))
state_after: no goals

tactic: rw [← image_subset_iff]
state_before: case refine_2
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hg :
  ContinuousAt g x₀ ∧
    ContDiffWithinAt 𝕜 m (↑(extChartAt I (g x₀)) ∘ g ∘ ↑(extChartAt J x₀).symm) (range ↑J) (↑(extChartAt J x₀) x₀)
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
hf :
  ContinuousAt (uncurry f) (x₀, g x₀) ∧
    ContDiffWithinAt 𝕜 n
      (fun x => ↑(extChartAt I' (f x₀ (g x₀))) (f (↑(extChartAt J x₀).symm x.1) (↑(extChartAt I (g x₀)).symm x.2)))
      (range ↑J ×ˢ range ↑I) (↑((extChartAt J x₀).prod (extChartAt I (g x₀))) (x₀, g x₀))
⊢ range ↑J ⊆ (fun x => ↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))) ⁻¹' range ↑I
state_after: case refine_2
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hg :
  ContinuousAt g x₀ ∧
    ContDiffWithinAt 𝕜 m (↑(extChartAt I (g x₀)) ∘ g ∘ ↑(extChartAt J x₀).symm) (range ↑J) (↑(extChartAt J x₀) x₀)
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
hf :
  ContinuousAt (uncurry f) (x₀, g x₀) ∧
    ContDiffWithinAt 𝕜 n
      (fun x => ↑(extChartAt I' (f x₀ (g x₀))) (f (↑(extChartAt J x₀).symm x.1) (↑(extChartAt I (g x₀)).symm x.2)))
      (range ↑J ×ˢ range ↑I) (↑((extChartAt J x₀).prod (extChartAt I (g x₀))) (x₀, g x₀))
⊢ (fun x => ↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))) '' range ↑J ⊆ range ↑I

tactic: rintro _ ⟨x, -, rfl⟩
state_before: case refine_2
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hg :
  ContinuousAt g x₀ ∧
    ContDiffWithinAt 𝕜 m (↑(extChartAt I (g x₀)) ∘ g ∘ ↑(extChartAt J x₀).symm) (range ↑J) (↑(extChartAt J x₀) x₀)
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
hf :
  ContinuousAt (uncurry f) (x₀, g x₀) ∧
    ContDiffWithinAt 𝕜 n
      (fun x => ↑(extChartAt I' (f x₀ (g x₀))) (f (↑(extChartAt J x₀).symm x.1) (↑(extChartAt I (g x₀)).symm x.2)))
      (range ↑J ×ˢ range ↑I) (↑((extChartAt J x₀).prod (extChartAt I (g x₀))) (x₀, g x₀))
⊢ (fun x => ↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))) '' range ↑J ⊆ range ↑I
state_after: case refine_2.intro.intro
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x✝ : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hg :
  ContinuousAt g x₀ ∧
    ContDiffWithinAt 𝕜 m (↑(extChartAt I (g x₀)) ∘ g ∘ ↑(extChartAt J x₀).symm) (range ↑J) (↑(extChartAt J x₀) x₀)
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
hf :
  ContinuousAt (uncurry f) (x₀, g x₀) ∧
    ContDiffWithinAt 𝕜 n
      (fun x => ↑(extChartAt I' (f x₀ (g x₀))) (f (↑(extChartAt J x₀).symm x.1) (↑(extChartAt I (g x₀)).symm x.2)))
      (range ↑J ×ˢ range ↑I) (↑((extChartAt J x₀).prod (extChartAt I (g x₀))) (x₀, g x₀))
x : F
⊢ (fun x => ↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))) x ∈ range ↑I

tactic: exact mem_range_self _
state_before: case refine_2.intro.intro
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x✝ : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hg :
  ContinuousAt g x₀ ∧
    ContDiffWithinAt 𝕜 m (↑(extChartAt I (g x₀)) ∘ g ∘ ↑(extChartAt J x₀).symm) (range ↑J) (↑(extChartAt J x₀) x₀)
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
hf :
  ContinuousAt (uncurry f) (x₀, g x₀) ∧
    ContDiffWithinAt 𝕜 n
      (fun x => ↑(extChartAt I' (f x₀ (g x₀))) (f (↑(extChartAt J x₀).symm x.1) (↑(extChartAt I (g x₀)).symm x.2)))
      (range ↑J ×ˢ range ↑I) (↑((extChartAt J x₀).prod (extChartAt I (g x₀))) (x₀, g x₀))
x : F
⊢ (fun x => ↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))) x ∈ range ↑I
state_after: no goals

tactic: simp_rw [contMDiffAt_iff_source_of_mem_source (mem_chart_source G x₀),
  contMDiffWithinAt_iff_contDiffWithinAt, Function.comp]
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
⊢ ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
state_after: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
⊢ ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜
        (fun x_1 => ↑(extChartAt I' (f x₀ (g x₀))) (f (↑(extChartAt J x₀).symm x) (↑(extChartAt I (g x₀)).symm x_1)))
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)

tactic: exact this
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
⊢ ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜
        (fun x_1 => ↑(extChartAt I' (f x₀ (g x₀))) (f (↑(extChartAt J x₀).symm x) (↑(extChartAt I (g x₀)).symm x_1)))
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
state_after: no goals

tactic: refine this.congr_of_eventuallyEq ?_
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
⊢ ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
state_after: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
⊢ (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x))) =ᶠ[𝓝 x₀]
    fun x =>
    fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
      (↑(extChartAt I (g x₀)) (g x))

tactic: filter_upwards [h2g, h2f]
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
⊢ (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x))) =ᶠ[𝓝 x₀]
    fun x =>
    fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
      (↑(extChartAt I (g x₀)) (g x))
state_after: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
⊢ ∀ a ∈ g ⁻¹' (extChartAt I (g x₀)).source,
    ContMDiffAt I I' 1 (f a) (g a) →
      fderivWithin 𝕜
          (↑(extChartAt I' (f x₀ (g x₀))) ∘
            ↑(extChartAt I' (f a (g a))).symm ∘
              writtenInExtChartAt I I' (g a) (f a) ∘ ↑(extChartAt I (g a)) ∘ ↑(extChartAt I (g x₀)).symm)
          (range ↑I) (↑(extChartAt I (g x₀)) (g a)) =
        fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f a ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
          (↑(extChartAt I (g x₀)) (g a))

tactic: intro x₂ hx₂ h2x₂
state_before: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
⊢ ∀ a ∈ g ⁻¹' (extChartAt I (g x₀)).source,
    ContMDiffAt I I' 1 (f a) (g a) →
      fderivWithin 𝕜
          (↑(extChartAt I' (f x₀ (g x₀))) ∘
            ↑(extChartAt I' (f a (g a))).symm ∘
              writtenInExtChartAt I I' (g a) (f a) ∘ ↑(extChartAt I (g a)) ∘ ↑(extChartAt I (g x₀)).symm)
          (range ↑I) (↑(extChartAt I (g x₀)) (g a)) =
        fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f a ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
          (↑(extChartAt I (g x₀)) (g a))
state_after: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
⊢ fderivWithin 𝕜
      (↑(extChartAt I' (f x₀ (g x₀))) ∘
        ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
          writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
      (range ↑I) (↑(extChartAt I (g x₀)) (g x₂)) =
    fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x₂ ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
      (↑(extChartAt I (g x₀)) (g x₂))

tactic: have :
    ∀ x ∈ (extChartAt I (g x₀)).symm ⁻¹' (extChartAt I (g x₂)).source ∩
      (extChartAt I (g x₀)).symm ⁻¹' (f x₂ ⁻¹' (extChartAt I' (f x₂ (g x₂))).source),
      (extChartAt I' (f x₀ (g x₀)) ∘ (extChartAt I' (f x₂ (g x₂))).symm ∘
        writtenInExtChartAt I I' (g x₂) (f x₂) ∘ extChartAt I (g x₂) ∘
        (extChartAt I (g x₀)).symm) x =
      extChartAt I' (f x₀ (g x₀)) (f x₂ ((extChartAt I (g x₀)).symm x)) := by
  rintro x ⟨hx, h2x⟩
  simp_rw [writtenInExtChartAt, Function.comp_apply]
  rw [(extChartAt I (g x₂)).left_inv hx, (extChartAt I' (f x₂ (g x₂))).left_inv h2x]
state_before: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
⊢ fderivWithin 𝕜
      (↑(extChartAt I' (f x₀ (g x₀))) ∘
        ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
          writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
      (range ↑I) (↑(extChartAt I (g x₀)) (g x₂)) =
    fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x₂ ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
      (↑(extChartAt I (g x₀)) (g x₂))
state_after: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
this :
  ∀
    x ∈
      ↑(extChartAt I (g x₀)).symm ⁻¹' (extChartAt I (g x₂)).source ∩
        ↑(extChartAt I (g x₀)).symm ⁻¹' (f x₂ ⁻¹' (extChartAt I' (f x₂ (g x₂))).source),
    (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
            writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
        x =
      ↑(extChartAt I' (f x₀ (g x₀))) (f x₂ (↑(extChartAt I (g x₀)).symm x))
⊢ fderivWithin 𝕜
      (↑(extChartAt I' (f x₀ (g x₀))) ∘
        ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
          writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
      (range ↑I) (↑(extChartAt I (g x₀)) (g x₂)) =
    fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x₂ ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
      (↑(extChartAt I (g x₀)) (g x₂))

tactic: refine Filter.EventuallyEq.fderivWithin_eq_nhds ?_
state_before: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
this :
  ∀
    x ∈
      ↑(extChartAt I (g x₀)).symm ⁻¹' (extChartAt I (g x₂)).source ∩
        ↑(extChartAt I (g x₀)).symm ⁻¹' (f x₂ ⁻¹' (extChartAt I' (f x₂ (g x₂))).source),
    (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
            writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
        x =
      ↑(extChartAt I' (f x₀ (g x₀))) (f x₂ (↑(extChartAt I (g x₀)).symm x))
⊢ fderivWithin 𝕜
      (↑(extChartAt I' (f x₀ (g x₀))) ∘
        ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
          writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
      (range ↑I) (↑(extChartAt I (g x₀)) (g x₂)) =
    fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x₂ ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
      (↑(extChartAt I (g x₀)) (g x₂))
state_after: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
this :
  ∀
    x ∈
      ↑(extChartAt I (g x₀)).symm ⁻¹' (extChartAt I (g x₂)).source ∩
        ↑(extChartAt I (g x₀)).symm ⁻¹' (f x₂ ⁻¹' (extChartAt I' (f x₂ (g x₂))).source),
    (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
            writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
        x =
      ↑(extChartAt I' (f x₀ (g x₀))) (f x₂ (↑(extChartAt I (g x₀)).symm x))
⊢ ↑(extChartAt I' (f x₀ (g x₀))) ∘
      ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
        writtenInExtChartAt I I' (g x₂) (f x₂) ∘
          ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm =ᶠ[𝓝 (↑(extChartAt I (g x₀)) (g x₂))]
    ↑(extChartAt I' (f x₀ (g x₀))) ∘ f x₂ ∘ ↑(extChartAt I (g x₀)).symm

tactic: refine eventually_of_mem (inter_mem ?_ ?_) this
state_before: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
this :
  ∀
    x ∈
      ↑(extChartAt I (g x₀)).symm ⁻¹' (extChartAt I (g x₂)).source ∩
        ↑(extChartAt I (g x₀)).symm ⁻¹' (f x₂ ⁻¹' (extChartAt I' (f x₂ (g x₂))).source),
    (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
            writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
        x =
      ↑(extChartAt I' (f x₀ (g x₀))) (f x₂ (↑(extChartAt I (g x₀)).symm x))
⊢ ↑(extChartAt I' (f x₀ (g x₀))) ∘
      ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
        writtenInExtChartAt I I' (g x₂) (f x₂) ∘
          ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm =ᶠ[𝓝 (↑(extChartAt I (g x₀)) (g x₂))]
    ↑(extChartAt I' (f x₀ (g x₀))) ∘ f x₂ ∘ ↑(extChartAt I (g x₀)).symm
state_after: case h.refine_1
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
this :
  ∀
    x ∈
      ↑(extChartAt I (g x₀)).symm ⁻¹' (extChartAt I (g x₂)).source ∩
        ↑(extChartAt I (g x₀)).symm ⁻¹' (f x₂ ⁻¹' (extChartAt I' (f x₂ (g x₂))).source),
    (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
            writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
        x =
      ↑(extChartAt I' (f x₀ (g x₀))) (f x₂ (↑(extChartAt I (g x₀)).symm x))
⊢ ↑(extChartAt I (g x₀)).symm ⁻¹' (extChartAt I (g x₂)).source ∈ 𝓝 (↑(extChartAt I (g x₀)) (g x₂))

case h.refine_2
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
this :
  ∀
    x ∈
      ↑(extChartAt I (g x₀)).symm ⁻¹' (extChartAt I (g x₂)).source ∩
        ↑(extChartAt I (g x₀)).symm ⁻¹' (f x₂ ⁻¹' (extChartAt I' (f x₂ (g x₂))).source),
    (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
            writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
        x =
      ↑(extChartAt I' (f x₀ (g x₀))) (f x₂ (↑(extChartAt I (g x₀)).symm x))
⊢ ↑(extChartAt I (g x₀)).symm ⁻¹' (f x₂ ⁻¹' (extChartAt I' (f x₂ (g x₂))).source) ∈ 𝓝 (↑(extChartAt I (g x₀)) (g x₂))

tactic: rintro x ⟨hx, h2x⟩
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
⊢ ∀
    x ∈
      ↑(extChartAt I (g x₀)).symm ⁻¹' (extChartAt I (g x₂)).source ∩
        ↑(extChartAt I (g x₀)).symm ⁻¹' (f x₂ ⁻¹' (extChartAt I' (f x₂ (g x₂))).source),
    (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
            writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
        x =
      ↑(extChartAt I' (f x₀ (g x₀))) (f x₂ (↑(extChartAt I (g x₀)).symm x))
state_after: case intro
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x✝ : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
x : E
hx : x ∈ ↑(extChartAt I (g x₀)).symm ⁻¹' (extChartAt I (g x₂)).source
h2x : x ∈ ↑(extChartAt I (g x₀)).symm ⁻¹' (f x₂ ⁻¹' (extChartAt I' (f x₂ (g x₂))).source)
⊢ (↑(extChartAt I' (f x₀ (g x₀))) ∘
        ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
          writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
      x =
    ↑(extChartAt I' (f x₀ (g x₀))) (f x₂ (↑(extChartAt I (g x₀)).symm x))

tactic: simp_rw [writtenInExtChartAt, Function.comp_apply]
state_before: case intro
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x✝ : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
x : E
hx : x ∈ ↑(extChartAt I (g x₀)).symm ⁻¹' (extChartAt I (g x₂)).source
h2x : x ∈ ↑(extChartAt I (g x₀)).symm ⁻¹' (f x₂ ⁻¹' (extChartAt I' (f x₂ (g x₂))).source)
⊢ (↑(extChartAt I' (f x₀ (g x₀))) ∘
        ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
          writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
      x =
    ↑(extChartAt I' (f x₀ (g x₀))) (f x₂ (↑(extChartAt I (g x₀)).symm x))
state_after: case intro
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x✝ : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
x : E
hx : x ∈ ↑(extChartAt I (g x₀)).symm ⁻¹' (extChartAt I (g x₂)).source
h2x : x ∈ ↑(extChartAt I (g x₀)).symm ⁻¹' (f x₂ ⁻¹' (extChartAt I' (f x₂ (g x₂))).source)
⊢ ↑(extChartAt I' (f x₀ (g x₀)))
      (↑(extChartAt I' (f x₂ (g x₂))).symm
        (↑(extChartAt I' (f x₂ (g x₂)))
          (f x₂ (↑(extChartAt I (g x₂)).symm (↑(extChartAt I (g x₂)) (↑(extChartAt I (g x₀)).symm x)))))) =
    ↑(extChartAt I' (f x₀ (g x₀))) (f x₂ (↑(extChartAt I (g x₀)).symm x))

tactic: rw [(extChartAt I (g x₂)).left_inv hx, (extChartAt I' (f x₂ (g x₂))).left_inv h2x]
state_before: case intro
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x✝ : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
x : E
hx : x ∈ ↑(extChartAt I (g x₀)).symm ⁻¹' (extChartAt I (g x₂)).source
h2x : x ∈ ↑(extChartAt I (g x₀)).symm ⁻¹' (f x₂ ⁻¹' (extChartAt I' (f x₂ (g x₂))).source)
⊢ ↑(extChartAt I' (f x₀ (g x₀)))
      (↑(extChartAt I' (f x₂ (g x₂))).symm
        (↑(extChartAt I' (f x₂ (g x₂)))
          (f x₂ (↑(extChartAt I (g x₂)).symm (↑(extChartAt I (g x₂)) (↑(extChartAt I (g x₀)).symm x)))))) =
    ↑(extChartAt I' (f x₀ (g x₀))) (f x₂ (↑(extChartAt I (g x₀)).symm x))
state_after: no goals

tactic: exact extChartAt_preimage_mem_nhds' _ hx₂ (extChartAt_source_mem_nhds I (g x₂))
state_before: case h.refine_1
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
this :
  ∀
    x ∈
      ↑(extChartAt I (g x₀)).symm ⁻¹' (extChartAt I (g x₂)).source ∩
        ↑(extChartAt I (g x₀)).symm ⁻¹' (f x₂ ⁻¹' (extChartAt I' (f x₂ (g x₂))).source),
    (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
            writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
        x =
      ↑(extChartAt I' (f x₀ (g x₀))) (f x₂ (↑(extChartAt I (g x₀)).symm x))
⊢ ↑(extChartAt I (g x₀)).symm ⁻¹' (extChartAt I (g x₂)).source ∈ 𝓝 (↑(extChartAt I (g x₀)) (g x₂))
state_after: no goals

tactic: refine extChartAt_preimage_mem_nhds' _ hx₂ ?_
state_before: case h.refine_2
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
this :
  ∀
    x ∈
      ↑(extChartAt I (g x₀)).symm ⁻¹' (extChartAt I (g x₂)).source ∩
        ↑(extChartAt I (g x₀)).symm ⁻¹' (f x₂ ⁻¹' (extChartAt I' (f x₂ (g x₂))).source),
    (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
            writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
        x =
      ↑(extChartAt I' (f x₀ (g x₀))) (f x₂ (↑(extChartAt I (g x₀)).symm x))
⊢ ↑(extChartAt I (g x₀)).symm ⁻¹' (f x₂ ⁻¹' (extChartAt I' (f x₂ (g x₂))).source) ∈ 𝓝 (↑(extChartAt I (g x₀)) (g x₂))
state_after: case h.refine_2
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
this :
  ∀
    x ∈
      ↑(extChartAt I (g x₀)).symm ⁻¹' (extChartAt I (g x₂)).source ∩
        ↑(extChartAt I (g x₀)).symm ⁻¹' (f x₂ ⁻¹' (extChartAt I' (f x₂ (g x₂))).source),
    (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
            writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
        x =
      ↑(extChartAt I' (f x₀ (g x₀))) (f x₂ (↑(extChartAt I (g x₀)).symm x))
⊢ f x₂ ⁻¹' (extChartAt I' (f x₂ (g x₂))).source ∈ 𝓝 (g x₂)

tactic: exact h2x₂.continuousAt.preimage_mem_nhds (extChartAt_source_mem_nhds _ _)
state_before: case h.refine_2
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
this :
  ∀
    x ∈
      ↑(extChartAt I (g x₀)).symm ⁻¹' (extChartAt I (g x₂)).source ∩
        ↑(extChartAt I (g x₀)).symm ⁻¹' (f x₂ ⁻¹' (extChartAt I' (f x₂ (g x₂))).source),
    (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
            writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
        x =
      ↑(extChartAt I' (f x₀ (g x₀))) (f x₂ (↑(extChartAt I (g x₀)).symm x))
⊢ f x₂ ⁻¹' (extChartAt I' (f x₂ (g x₂))).source ∈ 𝓝 (g x₂)
state_after: no goals

tactic: refine this.congr_of_eventuallyEq ?_
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
⊢ ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x (g x))).symm) (range ↑I')
            (↑(extChartAt I' (f x (g x))) (f x (g x)))).comp
        ((mfderiv I I' (f x) (g x)).comp
          (fderivWithin 𝕜 (↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
            (↑(extChartAt I (g x₀)) (g x)))))
    x₀
state_after: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
⊢ (fun x =>
      (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x (g x))).symm) (range ↑I')
            (↑(extChartAt I' (f x (g x))) (f x (g x)))).comp
        ((mfderiv I I' (f x) (g x)).comp
          (fderivWithin 𝕜 (↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
            (↑(extChartAt I (g x₀)) (g x))))) =ᶠ[𝓝 x₀]
    fun x =>
    fderivWithin 𝕜
      (↑(extChartAt I' (f x₀ (g x₀))) ∘
        ↑(extChartAt I' (f x (g x))).symm ∘
          writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
      (range ↑I) (↑(extChartAt I (g x₀)) (g x))

tactic: filter_upwards [h2g, h2f, h4f]
state_before: 𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
⊢ (fun x =>
      (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x (g x))).symm) (range ↑I')
            (↑(extChartAt I' (f x (g x))) (f x (g x)))).comp
        ((mfderiv I I' (f x) (g x)).comp
          (fderivWithin 𝕜 (↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
            (↑(extChartAt I (g x₀)) (g x))))) =ᶠ[𝓝 x₀]
    fun x =>
    fderivWithin 𝕜
      (↑(extChartAt I' (f x₀ (g x₀))) ∘
        ↑(extChartAt I' (f x (g x))).symm ∘
          writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
      (range ↑I) (↑(extChartAt I (g x₀)) (g x))
state_after: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
⊢ ∀ a ∈ g ⁻¹' (extChartAt I (g x₀)).source,
    ContMDiffAt I I' 1 (f a) (g a) →
      a ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source →
        (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f a (g a))).symm) (range ↑I')
                (↑(extChartAt I' (f a (g a))) (f a (g a)))).comp
            ((mfderiv I I' (f a) (g a)).comp
              (fderivWithin 𝕜 (↑(extChartAt I (g a)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
                (↑(extChartAt I (g x₀)) (g a)))) =
          fderivWithin 𝕜
            (↑(extChartAt I' (f x₀ (g x₀))) ∘
              ↑(extChartAt I' (f a (g a))).symm ∘
                writtenInExtChartAt I I' (g a) (f a) ∘ ↑(extChartAt I (g a)) ∘ ↑(extChartAt I (g x₀)).symm)
            (range ↑I) (↑(extChartAt I (g x₀)) (g a))

tactic: intro x₂ hx₂ h2x₂ h3x₂
state_before: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
⊢ ∀ a ∈ g ⁻¹' (extChartAt I (g x₀)).source,
    ContMDiffAt I I' 1 (f a) (g a) →
      a ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source →
        (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f a (g a))).symm) (range ↑I')
                (↑(extChartAt I' (f a (g a))) (f a (g a)))).comp
            ((mfderiv I I' (f a) (g a)).comp
              (fderivWithin 𝕜 (↑(extChartAt I (g a)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
                (↑(extChartAt I (g x₀)) (g a)))) =
          fderivWithin 𝕜
            (↑(extChartAt I' (f x₀ (g x₀))) ∘
              ↑(extChartAt I' (f a (g a))).symm ∘
                writtenInExtChartAt I I' (g a) (f a) ∘ ↑(extChartAt I (g a)) ∘ ↑(extChartAt I (g x₀)).symm)
            (range ↑I) (↑(extChartAt I (g x₀)) (g a))
state_after: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
h3x₂ : x₂ ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
⊢ (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
          (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))).comp
      ((mfderiv I I' (f x₂) (g x₂)).comp
        (fderivWithin 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
          (↑(extChartAt I (g x₀)) (g x₂)))) =
    fderivWithin 𝕜
      (↑(extChartAt I' (f x₀ (g x₀))) ∘
        ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
          writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
      (range ↑I) (↑(extChartAt I (g x₀)) (g x₂))

tactic: symm
state_before: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
h3x₂ : x₂ ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
⊢ (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
          (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))).comp
      ((mfderiv I I' (f x₂) (g x₂)).comp
        (fderivWithin 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
          (↑(extChartAt I (g x₀)) (g x₂)))) =
    fderivWithin 𝕜
      (↑(extChartAt I' (f x₀ (g x₀))) ∘
        ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
          writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
      (range ↑I) (↑(extChartAt I (g x₀)) (g x₂))
state_after: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
h3x₂ : x₂ ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
⊢ fderivWithin 𝕜
      (↑(extChartAt I' (f x₀ (g x₀))) ∘
        ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
          writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
      (range ↑I) (↑(extChartAt I (g x₀)) (g x₂)) =
    (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
          (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))).comp
      ((mfderiv I I' (f x₂) (g x₂)).comp
        (fderivWithin 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
          (↑(extChartAt I (g x₀)) (g x₂))))

tactic: rw [(h2x₂.mdifferentiableAt le_rfl).mfderiv]
state_before: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
h3x₂ : x₂ ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
⊢ fderivWithin 𝕜
      (↑(extChartAt I' (f x₀ (g x₀))) ∘
        ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
          writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
      (range ↑I) (↑(extChartAt I (g x₀)) (g x₂)) =
    (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
          (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))).comp
      ((mfderiv I I' (f x₂) (g x₂)).comp
        (fderivWithin 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
          (↑(extChartAt I (g x₀)) (g x₂))))
state_after: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
h3x₂ : x₂ ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
⊢ fderivWithin 𝕜
      (↑(extChartAt I' (f x₀ (g x₀))) ∘
        ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
          writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
      (range ↑I) (↑(extChartAt I (g x₀)) (g x₂)) =
    (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
          (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))).comp
      ((fderivWithin 𝕜 (writtenInExtChartAt I I' (g x₂) (f x₂)) (range ↑I) (↑(extChartAt I (g x₂)) (g x₂))).comp
        (fderivWithin 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
          (↑(extChartAt I (g x₀)) (g x₂))))

tactic: have hI := (contDiffWithinAt_ext_coord_change I (g x₂) (g x₀) <|
  PartialEquiv.mem_symm_trans_source _ hx₂ <|
    mem_extChartAt_source I (g x₂)).differentiableWithinAt le_top
state_before: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
h3x₂ : x₂ ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
⊢ fderivWithin 𝕜
      (↑(extChartAt I' (f x₀ (g x₀))) ∘
        ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
          writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
      (range ↑I) (↑(extChartAt I (g x₀)) (g x₂)) =
    (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
          (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))).comp
      ((fderivWithin 𝕜 (writtenInExtChartAt I I' (g x₂) (f x₂)) (range ↑I) (↑(extChartAt I (g x₂)) (g x₂))).comp
        (fderivWithin 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
          (↑(extChartAt I (g x₀)) (g x₂))))
state_after: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
h3x₂ : x₂ ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
hI :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
    (↑(extChartAt I (g x₀)) (g x₂))
⊢ fderivWithin 𝕜
      (↑(extChartAt I' (f x₀ (g x₀))) ∘
        ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
          writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
      (range ↑I) (↑(extChartAt I (g x₀)) (g x₂)) =
    (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
          (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))).comp
      ((fderivWithin 𝕜 (writtenInExtChartAt I I' (g x₂) (f x₂)) (range ↑I) (↑(extChartAt I (g x₂)) (g x₂))).comp
        (fderivWithin 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
          (↑(extChartAt I (g x₀)) (g x₂))))

tactic: have hI' :=
  (contDiffWithinAt_ext_coord_change I' (f x₀ (g x₀)) (f x₂ (g x₂)) <|
        PartialEquiv.mem_symm_trans_source _ (mem_extChartAt_source I' (f x₂ (g x₂)))
          h3x₂).differentiableWithinAt le_top
state_before: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
h3x₂ : x₂ ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
hI :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
    (↑(extChartAt I (g x₀)) (g x₂))
⊢ fderivWithin 𝕜
      (↑(extChartAt I' (f x₀ (g x₀))) ∘
        ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
          writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
      (range ↑I) (↑(extChartAt I (g x₀)) (g x₂)) =
    (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
          (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))).comp
      ((fderivWithin 𝕜 (writtenInExtChartAt I I' (g x₂) (f x₂)) (range ↑I) (↑(extChartAt I (g x₂)) (g x₂))).comp
        (fderivWithin 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
          (↑(extChartAt I (g x₀)) (g x₂))))
state_after: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
h3x₂ : x₂ ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
hI :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
    (↑(extChartAt I (g x₀)) (g x₂))
hI' :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
    (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))
⊢ fderivWithin 𝕜
      (↑(extChartAt I' (f x₀ (g x₀))) ∘
        ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
          writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
      (range ↑I) (↑(extChartAt I (g x₀)) (g x₂)) =
    (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
          (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))).comp
      ((fderivWithin 𝕜 (writtenInExtChartAt I I' (g x₂) (f x₂)) (range ↑I) (↑(extChartAt I (g x₂)) (g x₂))).comp
        (fderivWithin 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
          (↑(extChartAt I (g x₀)) (g x₂))))

tactic: have h3f := (h2x₂.mdifferentiableAt le_rfl).differentiableWithinAt_writtenInExtChartAt
state_before: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
h3x₂ : x₂ ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
hI :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
    (↑(extChartAt I (g x₀)) (g x₂))
hI' :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
    (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))
⊢ fderivWithin 𝕜
      (↑(extChartAt I' (f x₀ (g x₀))) ∘
        ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
          writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
      (range ↑I) (↑(extChartAt I (g x₀)) (g x₂)) =
    (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
          (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))).comp
      ((fderivWithin 𝕜 (writtenInExtChartAt I I' (g x₂) (f x₂)) (range ↑I) (↑(extChartAt I (g x₂)) (g x₂))).comp
        (fderivWithin 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
          (↑(extChartAt I (g x₀)) (g x₂))))
state_after: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f✝ : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
h3x₂ : x₂ ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
hI :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
    (↑(extChartAt I (g x₀)) (g x₂))
hI' :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
    (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))
h3f : DifferentiableWithinAt 𝕜 (writtenInExtChartAt I I' (g x₂) (f x₂)) (range ↑I) (↑(extChartAt I (g x₂)) (g x₂))
⊢ fderivWithin 𝕜
      (↑(extChartAt I' (f x₀ (g x₀))) ∘
        ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
          writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
      (range ↑I) (↑(extChartAt I (g x₀)) (g x₂)) =
    (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
          (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))).comp
      ((fderivWithin 𝕜 (writtenInExtChartAt I I' (g x₂) (f x₂)) (range ↑I) (↑(extChartAt I (g x₂)) (g x₂))).comp
        (fderivWithin 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
          (↑(extChartAt I (g x₀)) (g x₂))))

tactic: refine fderivWithin.comp₃ _ hI' h3f hI ?_ ?_ ?_ ?_ (I.unique_diff _ <| mem_range_self _)
state_before: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f✝ : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
h3x₂ : x₂ ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
hI :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
    (↑(extChartAt I (g x₀)) (g x₂))
hI' :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
    (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))
h3f : DifferentiableWithinAt 𝕜 (writtenInExtChartAt I I' (g x₂) (f x₂)) (range ↑I) (↑(extChartAt I (g x₂)) (g x₂))
⊢ fderivWithin 𝕜
      (↑(extChartAt I' (f x₀ (g x₀))) ∘
        ↑(extChartAt I' (f x₂ (g x₂))).symm ∘
          writtenInExtChartAt I I' (g x₂) (f x₂) ∘ ↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm)
      (range ↑I) (↑(extChartAt I (g x₀)) (g x₂)) =
    (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
          (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))).comp
      ((fderivWithin 𝕜 (writtenInExtChartAt I I' (g x₂) (f x₂)) (range ↑I) (↑(extChartAt I (g x₂)) (g x₂))).comp
        (fderivWithin 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
          (↑(extChartAt I (g x₀)) (g x₂))))
state_after: case h.refine_1
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f✝ : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
h3x₂ : x₂ ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
hI :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
    (↑(extChartAt I (g x₀)) (g x₂))
hI' :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
    (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))
h3f : DifferentiableWithinAt 𝕜 (writtenInExtChartAt I I' (g x₂) (f x₂)) (range ↑I) (↑(extChartAt I (g x₂)) (g x₂))
⊢ MapsTo (writtenInExtChartAt I I' (g x₂) (f x₂)) (range ↑I) (range ↑I')

case h.refine_2
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f✝ : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
h3x₂ : x₂ ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
hI :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
    (↑(extChartAt I (g x₀)) (g x₂))
hI' :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
    (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))
h3f : DifferentiableWithinAt 𝕜 (writtenInExtChartAt I I' (g x₂) (f x₂)) (range ↑I) (↑(extChartAt I (g x₂)) (g x₂))
⊢ MapsTo (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I) (range ↑I)

case h.refine_3
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f✝ : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
h3x₂ : x₂ ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
hI :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
    (↑(extChartAt I (g x₀)) (g x₂))
hI' :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
    (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))
h3f : DifferentiableWithinAt 𝕜 (writtenInExtChartAt I I' (g x₂) (f x₂)) (range ↑I) (↑(extChartAt I (g x₂)) (g x₂))
⊢ writtenInExtChartAt I I' (g x₂) (f x₂) (↑(extChartAt I (g x₂)) (g x₂)) = ↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂))

case h.refine_4
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f✝ : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
h3x₂ : x₂ ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
hI :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
    (↑(extChartAt I (g x₀)) (g x₂))
hI' :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
    (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))
h3f : DifferentiableWithinAt 𝕜 (writtenInExtChartAt I I' (g x₂) (f x₂)) (range ↑I) (↑(extChartAt I (g x₂)) (g x₂))
⊢ (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (↑(extChartAt I (g x₀)) (g x₂)) = ↑(extChartAt I (g x₂)) (g x₂)

tactic: exact fun x _ => mem_range_self _
state_before: case h.refine_1
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f✝ : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
h3x₂ : x₂ ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
hI :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
    (↑(extChartAt I (g x₀)) (g x₂))
hI' :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
    (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))
h3f : DifferentiableWithinAt 𝕜 (writtenInExtChartAt I I' (g x₂) (f x₂)) (range ↑I) (↑(extChartAt I (g x₂)) (g x₂))
⊢ MapsTo (writtenInExtChartAt I I' (g x₂) (f x₂)) (range ↑I) (range ↑I')
state_after: no goals

tactic: exact fun x _ => mem_range_self _
state_before: case h.refine_2
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f✝ : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
h3x₂ : x₂ ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
hI :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
    (↑(extChartAt I (g x₀)) (g x₂))
hI' :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
    (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))
h3f : DifferentiableWithinAt 𝕜 (writtenInExtChartAt I I' (g x₂) (f x₂)) (range ↑I) (↑(extChartAt I (g x₂)) (g x₂))
⊢ MapsTo (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I) (range ↑I)
state_after: no goals

tactic: simp_rw [writtenInExtChartAt, Function.comp_apply,
  (extChartAt I (g x₂)).left_inv (mem_extChartAt_source I (g x₂))]
state_before: case h.refine_3
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f✝ : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
h3x₂ : x₂ ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
hI :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
    (↑(extChartAt I (g x₀)) (g x₂))
hI' :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
    (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))
h3f : DifferentiableWithinAt 𝕜 (writtenInExtChartAt I I' (g x₂) (f x₂)) (range ↑I) (↑(extChartAt I (g x₂)) (g x₂))
⊢ writtenInExtChartAt I I' (g x₂) (f x₂) (↑(extChartAt I (g x₂)) (g x₂)) = ↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂))
state_after: no goals

tactic: simp_rw [Function.comp_apply, (extChartAt I (g x₀)).left_inv hx₂]
state_before: case h.refine_4
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f✝ : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝¹ :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
x₂ : N
hx₂ : x₂ ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x₂ : ContMDiffAt I I' 1 (f x₂) (g x₂)
h3x₂ : x₂ ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
hI :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
    (↑(extChartAt I (g x₀)) (g x₂))
hI' :
  DifferentiableWithinAt 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x₂ (g x₂))).symm) (range ↑I')
    (↑(extChartAt I' (f x₂ (g x₂))) (f x₂ (g x₂)))
h3f : DifferentiableWithinAt 𝕜 (writtenInExtChartAt I I' (g x₂) (f x₂)) (range ↑I) (↑(extChartAt I (g x₂)) (g x₂))
⊢ (↑(extChartAt I (g x₂)) ∘ ↑(extChartAt I (g x₀)).symm) (↑(extChartAt I (g x₀)) (g x₂)) = ↑(extChartAt I (g x₂)) (g x₂)
state_after: no goals

tactic: rfl
state_before: case h
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x✝ : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝² :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝¹ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x (g x))).symm) (range ↑I')
            (↑(extChartAt I' (f x (g x))) (f x (g x)))).comp
        ((mfderiv I I' (f x) (g x)).comp
          (fderivWithin 𝕜 (↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
            (↑(extChartAt I (g x₀)) (g x)))))
    x₀
x : N
hx : x ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x : x ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
⊢ ((tangentBundleCore I' M').coordChange (achart H' (f x (g x))) (achart H' (f x₀ (g x₀))) (f x (g x))).comp
      ((mfderiv I I' (f x) (g x)).comp ((tangentBundleCore I M).coordChange (achart H (g x₀)) (achart H (g x)) (g x))) =
    (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x (g x))).symm) (range ↑I')
          (↑(extChartAt I' (f x (g x))) (f x (g x)))).comp
      ((mfderiv I I' (f x) (g x)).comp
        (fderivWithin 𝕜 (↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
          (↑(extChartAt I (g x₀)) (g x))))
state_after: no goals

tactic: rwa [extChartAt_source] at hx
state_before: case h.hx
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x✝ : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝² :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝¹ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x (g x))).symm) (range ↑I')
            (↑(extChartAt I' (f x (g x))) (f x (g x)))).comp
        ((mfderiv I I' (f x) (g x)).comp
          (fderivWithin 𝕜 (↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
            (↑(extChartAt I (g x₀)) (g x)))))
    x₀
x : N
hx : x ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x : x ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
⊢ g x ∈ (chartAt H (g x₀)).source
state_after: no goals

tactic: rwa [extChartAt_source] at h2x
state_before: case h.hy
𝕜 : Type u_1
inst✝²⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝²³ : NormedAddCommGroup E
inst✝²² : NormedSpace 𝕜 E
H : Type u_3
inst✝²¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝²⁰ : TopologicalSpace M
inst✝¹⁹ : ChartedSpace H M
Is : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹⁸ : NormedAddCommGroup E'
inst✝¹⁷ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝¹⁶ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝¹⁵ : TopologicalSpace M'
inst✝¹⁴ : ChartedSpace H' M'
I's : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
G : Type u_9
inst✝¹¹ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_10
inst✝¹⁰ : TopologicalSpace N
inst✝⁹ : ChartedSpace G N
Js : SmoothManifoldWithCorners J N
F' : Type u_11
inst✝⁸ : NormedAddCommGroup F'
inst✝⁷ : NormedSpace 𝕜 F'
G' : Type u_12
inst✝⁶ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_13
inst✝⁵ : TopologicalSpace N'
inst✝⁴ : ChartedSpace G' N'
J's : SmoothManifoldWithCorners J' N'
F₁ : Type u_14
inst✝³ : NormedAddCommGroup F₁
inst✝² : NormedSpace 𝕜 F₁
F₂ : Type u_15
inst✝¹ : NormedAddCommGroup F₂
inst✝ : NormedSpace 𝕜 F₂
f✝ f₁ : M → M'
s s₁ t : Set M
x✝ : M
m n : ℕ∞
x₀ : N
f : N → M → M'
g : N → M
hf : ContMDiffAt (J.prod I) I' n (uncurry f) (x₀, g x₀)
hg : ContMDiffAt J I m g x₀
hmn : m + 1 ≤ n
h4f✝ : ContinuousAt (fun x => f x (g x)) x₀
h4f : (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source ∈ 𝓝 x₀
h3f : ∀ᶠ (x' : N × M) in 𝓝 (x₀, g x₀), ContMDiffAt (J.prod I) I' (↑One.one) (uncurry f) x'
h2f : ∀ᶠ (x₂ : N) in 𝓝 x₀, ContMDiffAt I I' 1 (f x₂) (g x₂)
h2g : g ⁻¹' (extChartAt I (g x₀)).source ∈ 𝓝 x₀
this✝² :
  ContDiffWithinAt 𝕜 m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f (↑(extChartAt J x₀).symm x) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g (↑(extChartAt J x₀).symm x))))
    (range ↑J) (↑(extChartAt J x₀) x₀)
this✝¹ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ f x ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
        (↑(extChartAt I (g x₀)) (g x)))
    x₀
this✝ :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      fderivWithin 𝕜
        (↑(extChartAt I' (f x₀ (g x₀))) ∘
          ↑(extChartAt I' (f x (g x))).symm ∘
            writtenInExtChartAt I I' (g x) (f x) ∘ ↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm)
        (range ↑I) (↑(extChartAt I (g x₀)) (g x)))
    x₀
_inst✝ : (x : N) → NormedAddCommGroup (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedAddCommGroup E)
_inst : (x : N) → NormedSpace 𝕜 (TangentSpace I (g x)) := fun x => inferInstanceAs (NormedSpace 𝕜 E)
this :
  ContMDiffAt J 𝓘(𝕜, E →L[𝕜] E') m
    (fun x =>
      (fderivWithin 𝕜 (↑(extChartAt I' (f x₀ (g x₀))) ∘ ↑(extChartAt I' (f x (g x))).symm) (range ↑I')
            (↑(extChartAt I' (f x (g x))) (f x (g x)))).comp
        ((mfderiv I I' (f x) (g x)).comp
          (fderivWithin 𝕜 (↑(extChartAt I (g x)) ∘ ↑(extChartAt I (g x₀)).symm) (range ↑I)
            (↑(extChartAt I (g x₀)) (g x)))))
    x₀
x : N
hx : x ∈ g ⁻¹' (extChartAt I (g x₀)).source
h2x : x ∈ (fun x => f x (g x)) ⁻¹' (extChartAt I' (f x₀ (g x₀))).source
⊢ f x (g x) ∈ (chartAt H' (f x₀ (g x₀))).source
state_after: no goals