Theorem: sard_boundaryless (Sard/MainTheorem.lean)

State before:
case hf'.intro
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x : M
e : PartialHomeomorph M H := chartAt H x
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
xnew : E
hx : xnew ∈ s_better
x' : M := ↑(e.extend I).symm xnew
hx'₁ : x' ∈ s
hx'₂ : x' ∈ e.source
hx'₃ : f x' ∈ e'.source
hf' : HasMFDerivAt I J f x' (f' x')
left✝ : ContinuousAt f x'
real : DifferentiableAt ℝ (↑(extChartAt J y) ∘ f ∘ ↑(extChartAt I x).symm) (↑(extChartAt I x) x')
⊢ HasFDerivWithinAt f_local (fderiv ℝ f_local xnew) w xnew
Tactic:
have : DifferentiableAt ℝ f_local (e.extend I x') := real
State after:
case hf'.intro
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x : M
e : PartialHomeomorph M H := chartAt H x
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
xnew : E
hx : xnew ∈ s_better
x' : M := ↑(e.extend I).symm xnew
hx'₁ : x' ∈ s
hx'₂ : x' ∈ e.source
hx'₃ : f x' ∈ e'.source
hf' : HasMFDerivAt I J f x' (f' x')
left✝ : ContinuousAt f x'
real : DifferentiableAt ℝ (↑(extChartAt J y) ∘ f ∘ ↑(extChartAt I x).symm) (↑(extChartAt I x) x')
this : DifferentiableAt ℝ f_local (↑(e.extend I) x')
⊢ HasFDerivWithinAt f_local (fderiv ℝ f_local xnew) w xnew

State before:
case hf'.intro
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x : M
e : PartialHomeomorph M H := chartAt H x
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
xnew : E
hx : xnew ∈ s_better
x' : M := ↑(e.extend I).symm xnew
hx'₁ : x' ∈ s
hx'₂ : x' ∈ e.source
hx'₃ : f x' ∈ e'.source
hf' : HasMFDerivAt I J f x' (f' x')
left✝ : ContinuousAt f x'
real : DifferentiableAt ℝ (↑(extChartAt J y) ∘ f ∘ ↑(extChartAt I x).symm) (↑(extChartAt I x) x')
this : DifferentiableAt ℝ f_local (↑(e.extend I) x')
⊢ HasFDerivWithinAt f_local (fderiv ℝ f_local xnew) w xnew
Tactic:
have h : e.extend I x' = xnew := e.extend_right_inv _ (hsbetter₀ hx)
State after:
case hf'.intro
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x : M
e : PartialHomeomorph M H := chartAt H x
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
xnew : E
hx : xnew ∈ s_better
x' : M := ↑(e.extend I).symm xnew
hx'₁ : x' ∈ s
hx'₂ : x' ∈ e.source
hx'₃ : f x' ∈ e'.source
hf' : HasMFDerivAt I J f x' (f' x')
left✝ : ContinuousAt f x'
real : DifferentiableAt ℝ (↑(extChartAt J y) ∘ f ∘ ↑(extChartAt I x).symm) (↑(extChartAt I x) x')
this : DifferentiableAt ℝ f_local (↑(e.extend I) x')
h : ↑(e.extend I) x' = xnew
⊢ HasFDerivWithinAt f_local (fderiv ℝ f_local xnew) w xnew

State before:
case hf'.intro
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x : M
e : PartialHomeomorph M H := chartAt H x
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
xnew : E
hx : xnew ∈ s_better
x' : M := ↑(e.extend I).symm xnew
hx'₁ : x' ∈ s
hx'₂ : x' ∈ e.source
hx'₃ : f x' ∈ e'.source
hf' : HasMFDerivAt I J f x' (f' x')
left✝ : ContinuousAt f x'
real : DifferentiableAt ℝ (↑(extChartAt J y) ∘ f ∘ ↑(extChartAt I x).symm) (↑(extChartAt I x) x')
this : DifferentiableAt ℝ f_local (↑(e.extend I) x')
h : ↑(e.extend I) x' = xnew
⊢ HasFDerivWithinAt f_local (fderiv ℝ f_local xnew) w xnew
Tactic:
rw [h] at this
State after:
case hf'.intro
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x : M
e : PartialHomeomorph M H := chartAt H x
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
xnew : E
hx : xnew ∈ s_better
x' : M := ↑(e.extend I).symm xnew
hx'₁ : x' ∈ s
hx'₂ : x' ∈ e.source
hx'₃ : f x' ∈ e'.source
hf' : HasMFDerivAt I J f x' (f' x')
left✝ : ContinuousAt f x'
real : DifferentiableAt ℝ (↑(extChartAt J y) ∘ f ∘ ↑(extChartAt I x).symm) (↑(extChartAt I x) x')
this : DifferentiableAt ℝ f_local xnew
h : ↑(e.extend I) x' = xnew
⊢ HasFDerivWithinAt f_local (fderiv ℝ f_local xnew) w xnew

State before:
case hf'.intro
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x : M
e : PartialHomeomorph M H := chartAt H x
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
xnew : E
hx : xnew ∈ s_better
x' : M := ↑(e.extend I).symm xnew
hx'₁ : x' ∈ s
hx'₂ : x' ∈ e.source
hx'₃ : f x' ∈ e'.source
hf' : HasMFDerivAt I J f x' (f' x')
left✝ : ContinuousAt f x'
real : DifferentiableAt ℝ (↑(extChartAt J y) ∘ f ∘ ↑(extChartAt I x).symm) (↑(extChartAt I x) x')
this : DifferentiableAt ℝ f_local xnew
h : ↑(e.extend I) x' = xnew
⊢ HasFDerivWithinAt f_local (fderiv ℝ f_local xnew) w xnew
Tactic:
exact (hasFDerivWithinAt_of_isOpen hwopen (hsw hx)).mpr this.hasFDerivAt
State after:
no goals

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x : M
e : PartialHomeomorph M H := chartAt H x
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
⊢ ∀ x ∈ s_better, ¬Surjective ⇑(fderiv ℝ f_local x)
Tactic:
intro x hx
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
⊢ ¬Surjective ⇑(fderiv ℝ f_local x)

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
⊢ ¬Surjective ⇑(fderiv ℝ f_local x)
Tactic:
rw [← mfderiv_eq_fderiv]
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
⊢ ¬Surjective ⇑(mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x)

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
⊢ ¬Surjective ⇑(mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x)
Tactic:
set D := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
⊢ ¬Surjective ⇑D
Tactic:
let A := mfderiv 𝓘(ℝ, E) I (e.extend I).symm x
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
⊢ ¬Surjective ⇑D
Tactic:
let B := mfderiv I J f ((e.extend I).symm x)
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
⊢ ¬Surjective ⇑D
Tactic:
let C := mfderiv J 𝓘(ℝ, F) (e'.extend J) ((f ∘ (e.extend I).symm) x)
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
⊢ ¬Surjective ⇑D
Tactic:
have hnA : e.extend I '' e.source ∈ 𝓝 x := by let x' := (e.extend I).symm x
  have : e.extend I x' = x := e.extend_right_inv _ (hsbetter₀ hx)
  rw [← this]
  have hesource : e.source ∈ 𝓝 x' := by
    have : (e.extend I).symm x = x' := rfl
    have : x' ∈ e.source := by sorry exact e.open_source.mem_nhds this
  exact extendedChart_image_nhds_on I hesource (Eq.subset rfl)
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
⊢ ¬Surjective ⇑D
Tactic:
have hr : 1 ≤ (r : ℕ∞) := Nat.one_le_cast.mpr (Nat.one_le_of_lt hr)
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r
⊢ ¬Surjective ⇑D
Tactic:
have he : e ∈ maximalAtlas I M := by sorry
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r
he : e ∈ maximalAtlas I M
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r
he : e ∈ maximalAtlas I M
⊢ ¬Surjective ⇑D
Tactic:
have : I '' e.target ∈ 𝓝 x := sorry
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r
he : e ∈ maximalAtlas I M
this : ↑I '' e.target ∈ 𝓝 x
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r
he : e ∈ maximalAtlas I M
this : ↑I '' e.target ∈ 𝓝 x
⊢ ¬Surjective ⇑D
Tactic:
have hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x :=
  ((contMDiffOn_extend_symm (𝕜 := ℝ) he).contMDiffAt this).mdifferentiableAt hr
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r
he : e ∈ maximalAtlas I M
this : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r
he : e ∈ maximalAtlas I M
this : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
⊢ ¬Surjective ⇑D
Tactic:
have hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x) := hf.contMDiffAt.mdifferentiableAt hr
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r
he : e ∈ maximalAtlas I M
this : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r
he : e ∈ maximalAtlas I M
this : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
⊢ ¬Surjective ⇑D
Tactic:
have hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ (e.invFun ∘ I.invFun)) x := by
  sorry
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r
he : e ∈ maximalAtlas I M
this : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r
he : e ∈ maximalAtlas I M
this : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
⊢ ¬Surjective ⇑D
Tactic:
have hnC : ((f ∘ e.invFun ∘ I.invFun) '' w) ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x) := sorry
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r
he : e ∈ maximalAtlas I M
this : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r
he : e ∈ maximalAtlas I M
this : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
⊢ ¬Surjective ⇑D
Tactic:
have hC : MDifferentiableAt J 𝓘(ℝ, F) (J ∘ e') ((f ∘ e.invFun ∘ I.invFun) x) := by
  have : ContMDiffOn J 𝓘(ℝ, F) ∞ (J ∘ e') e'.source := extendedChart_smooth _ (chart_mem_atlas G _)
  exact SmoothAt.mdifferentiableAt ((this.mono hw).contMDiffAt hnC)
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r
he : e ∈ maximalAtlas I M
this : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r
he : e ∈ maximalAtlas I M
this : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
⊢ ¬Surjective ⇑D
Tactic:
let comp := C.comp (B.comp A)
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r
he : e ∈ maximalAtlas I M
this : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r
he : e ∈ maximalAtlas I M
this : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
⊢ ¬Surjective ⇑D
Tactic:
let r := calc comp
  _ = C.comp (B.comp A) := rfl
  _ = C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) := rfl
  _ = C.comp (mfderiv 𝓘(ℝ, E) J (f ∘ (e.invFun ∘ I.invFun)) x) := by rw [(mfderiv_comp x hB hA)]
  _ = (mfderiv J 𝓘(ℝ, F) (J ∘ e') ((f ∘ e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) J (f ∘ (e.invFun ∘ I.invFun)) x) := rfl
  _ = mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) ((J ∘ e') ∘ ((f ∘ e.invFun ∘ I.invFun))) x := by rw [(mfderiv_comp x hC hBA)]
  _ = mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x := rfl
  _ = D := rfl
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r✝ : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r✝ > m - n
f : M → N
hf : ContMDiff I J (↑r✝) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r✝
he : e ∈ maximalAtlas I M
this : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
r : comp = D :=
  Trans.trans
    (Trans.trans
      (Trans.trans
        (Trans.trans
          (Trans.trans (Trans.trans (Trans.trans rfl rfl) rfl)
            (Eq.mpr
              (id
                (congrArg
                  (fun _a =>
                    C.comp
                        ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) =
                      C.comp _a)
                  (mfderiv_comp x hB hA)))
              (Eq.refl
                (C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x))))))
          rfl)
        (Eq.mpr
          (id
            (congrArg
              (fun _a =>
                (mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
                    (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x) =
                  _a)
              (mfderiv_comp x hC hBA)))
          (Eq.refl
            ((mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
              (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x)))))
      rfl)
    rfl
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r✝ : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r✝ > m - n
f : M → N
hf : ContMDiff I J (↑r✝) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r✝
he : e ∈ maximalAtlas I M
this : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
r : comp = D :=
  Trans.trans
    (Trans.trans
      (Trans.trans
        (Trans.trans
          (Trans.trans (Trans.trans (Trans.trans rfl rfl) rfl)
            (Eq.mpr
              (id
                (congrArg
                  (fun _a =>
                    C.comp
                        ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) =
                      C.comp _a)
                  (mfderiv_comp x hB hA)))
              (Eq.refl
                (C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x))))))
          rfl)
        (Eq.mpr
          (id
            (congrArg
              (fun _a =>
                (mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
                    (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x) =
                  _a)
              (mfderiv_comp x hC hBA)))
          (Eq.refl
            ((mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
              (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x)))))
      rfl)
    rfl
⊢ ¬Surjective ⇑D
Tactic:
let x' := (e.extend I).symm x
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r✝ : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r✝ > m - n
f : M → N
hf : ContMDiff I J (↑r✝) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r✝
he : e ∈ maximalAtlas I M
this : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
r : comp = D :=
  Trans.trans
    (Trans.trans
      (Trans.trans
        (Trans.trans
          (Trans.trans (Trans.trans (Trans.trans rfl rfl) rfl)
            (Eq.mpr
              (id
                (congrArg
                  (fun _a =>
                    C.comp
                        ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) =
                      C.comp _a)
                  (mfderiv_comp x hB hA)))
              (Eq.refl
                (C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x))))))
          rfl)
        (Eq.mpr
          (id
            (congrArg
              (fun _a =>
                (mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
                    (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x) =
                  _a)
              (mfderiv_comp x hC hBA)))
          (Eq.refl
            ((mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
              (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x)))))
      rfl)
    rfl
x' : M := ↑(e.extend I).symm x
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r✝ : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r✝ > m - n
f : M → N
hf : ContMDiff I J (↑r✝) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r✝
he : e ∈ maximalAtlas I M
this : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
r : comp = D :=
  Trans.trans
    (Trans.trans
      (Trans.trans
        (Trans.trans
          (Trans.trans (Trans.trans (Trans.trans rfl rfl) rfl)
            (Eq.mpr
              (id
                (congrArg
                  (fun _a =>
                    C.comp
                        ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) =
                      C.comp _a)
                  (mfderiv_comp x hB hA)))
              (Eq.refl
                (C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x))))))
          rfl)
        (Eq.mpr
          (id
            (congrArg
              (fun _a =>
                (mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
                    (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x) =
                  _a)
              (mfderiv_comp x hC hBA)))
          (Eq.refl
            ((mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
              (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x)))))
      rfl)
    rfl
x' : M := ↑(e.extend I).symm x
⊢ ¬Surjective ⇑D
Tactic:
have aux : x' ∈ s := hsbetter₁ (mem_image_of_mem _ hx)
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r✝ : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r✝ > m - n
f : M → N
hf : ContMDiff I J (↑r✝) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r✝
he : e ∈ maximalAtlas I M
this : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
r : comp = D :=
  Trans.trans
    (Trans.trans
      (Trans.trans
        (Trans.trans
          (Trans.trans (Trans.trans (Trans.trans rfl rfl) rfl)
            (Eq.mpr
              (id
                (congrArg
                  (fun _a =>
                    C.comp
                        ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) =
                      C.comp _a)
                  (mfderiv_comp x hB hA)))
              (Eq.refl
                (C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x))))))
          rfl)
        (Eq.mpr
          (id
            (congrArg
              (fun _a =>
                (mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
                    (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x) =
                  _a)
              (mfderiv_comp x hC hBA)))
          (Eq.refl
            ((mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
              (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x)))))
      rfl)
    rfl
x' : M := ↑(e.extend I).symm x
aux : x' ∈ s
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r✝ : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r✝ > m - n
f : M → N
hf : ContMDiff I J (↑r✝) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r✝
he : e ∈ maximalAtlas I M
this : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
r : comp = D :=
  Trans.trans
    (Trans.trans
      (Trans.trans
        (Trans.trans
          (Trans.trans (Trans.trans (Trans.trans rfl rfl) rfl)
            (Eq.mpr
              (id
                (congrArg
                  (fun _a =>
                    C.comp
                        ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) =
                      C.comp _a)
                  (mfderiv_comp x hB hA)))
              (Eq.refl
                (C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x))))))
          rfl)
        (Eq.mpr
          (id
            (congrArg
              (fun _a =>
                (mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
                    (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x) =
                  _a)
              (mfderiv_comp x hC hBA)))
          (Eq.refl
            ((mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
              (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x)))))
      rfl)
    rfl
x' : M := ↑(e.extend I).symm x
aux : x' ∈ s
⊢ ¬Surjective ⇑D
Tactic:
have : f' x' = B := by rw [← (hf' x' aux).mfderiv]
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r✝ : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r✝ > m - n
f : M → N
hf : ContMDiff I J (↑r✝) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝¹ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r✝
he : e ∈ maximalAtlas I M
this✝ : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
r : comp = D :=
  Trans.trans
    (Trans.trans
      (Trans.trans
        (Trans.trans
          (Trans.trans (Trans.trans (Trans.trans rfl rfl) rfl)
            (Eq.mpr
              (id
                (congrArg
                  (fun _a =>
                    C.comp
                        ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) =
                      C.comp _a)
                  (mfderiv_comp x hB hA)))
              (Eq.refl
                (C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x))))))
          rfl)
        (Eq.mpr
          (id
            (congrArg
              (fun _a =>
                (mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
                    (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x) =
                  _a)
              (mfderiv_comp x hC hBA)))
          (Eq.refl
            ((mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
              (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x)))))
      rfl)
    rfl
x' : M := ↑(e.extend I).symm x
aux : x' ∈ s
this : f' x' = B
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r✝ : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r✝ > m - n
f : M → N
hf : ContMDiff I J (↑r✝) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝¹ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r✝
he : e ∈ maximalAtlas I M
this✝ : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
r : comp = D :=
  Trans.trans
    (Trans.trans
      (Trans.trans
        (Trans.trans
          (Trans.trans (Trans.trans (Trans.trans rfl rfl) rfl)
            (Eq.mpr
              (id
                (congrArg
                  (fun _a =>
                    C.comp
                        ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) =
                      C.comp _a)
                  (mfderiv_comp x hB hA)))
              (Eq.refl
                (C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x))))))
          rfl)
        (Eq.mpr
          (id
            (congrArg
              (fun _a =>
                (mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
                    (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x) =
                  _a)
              (mfderiv_comp x hC hBA)))
          (Eq.refl
            ((mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
              (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x)))))
      rfl)
    rfl
x' : M := ↑(e.extend I).symm x
aux : x' ∈ s
this : f' x' = B
⊢ ¬Surjective ⇑D
Tactic:
have hBsurj : ¬ Surjective B := this ▸ h'f' _ aux
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r✝ : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r✝ > m - n
f : M → N
hf : ContMDiff I J (↑r✝) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝¹ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r✝
he : e ∈ maximalAtlas I M
this✝ : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
r : comp = D :=
  Trans.trans
    (Trans.trans
      (Trans.trans
        (Trans.trans
          (Trans.trans (Trans.trans (Trans.trans rfl rfl) rfl)
            (Eq.mpr
              (id
                (congrArg
                  (fun _a =>
                    C.comp
                        ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) =
                      C.comp _a)
                  (mfderiv_comp x hB hA)))
              (Eq.refl
                (C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x))))))
          rfl)
        (Eq.mpr
          (id
            (congrArg
              (fun _a =>
                (mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
                    (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x) =
                  _a)
              (mfderiv_comp x hC hBA)))
          (Eq.refl
            ((mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
              (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x)))))
      rfl)
    rfl
x' : M := ↑(e.extend I).symm x
aux : x' ∈ s
this : f' x' = B
hBsurj : ¬Surjective ⇑B
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r✝ : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r✝ > m - n
f : M → N
hf : ContMDiff I J (↑r✝) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝¹ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r✝
he : e ∈ maximalAtlas I M
this✝ : ↑I '' e.target ∈ 𝓝 x
hA : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
r : comp = D :=
  Trans.trans
    (Trans.trans
      (Trans.trans
        (Trans.trans
          (Trans.trans (Trans.trans (Trans.trans rfl rfl) rfl)
            (Eq.mpr
              (id
                (congrArg
                  (fun _a =>
                    C.comp
                        ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) =
                      C.comp _a)
                  (mfderiv_comp x hB hA)))
              (Eq.refl
                (C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x))))))
          rfl)
        (Eq.mpr
          (id
            (congrArg
              (fun _a =>
                (mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
                    (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x) =
                  _a)
              (mfderiv_comp x hC hBA)))
          (Eq.refl
            ((mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
              (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x)))))
      rfl)
    rfl
x' : M := ↑(e.extend I).symm x
aux : x' ∈ s
this : f' x' = B
hBsurj : ¬Surjective ⇑B
⊢ ¬Surjective ⇑D
Tactic:
have hA : Bijective A := extendedChart_symm_differential_bijective I (chart_mem_atlas H _) (hsbetter₀ hx)
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r✝ : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r✝ > m - n
f : M → N
hf : ContMDiff I J (↑r✝) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝¹ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r✝
he : e ∈ maximalAtlas I M
this✝ : ↑I '' e.target ∈ 𝓝 x
hA✝ : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
r : comp = D :=
  Trans.trans
    (Trans.trans
      (Trans.trans
        (Trans.trans
          (Trans.trans (Trans.trans (Trans.trans rfl rfl) rfl)
            (Eq.mpr
              (id
                (congrArg
                  (fun _a =>
                    C.comp
                        ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) =
                      C.comp _a)
                  (mfderiv_comp x hB hA✝)))
              (Eq.refl
                (C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x))))))
          rfl)
        (Eq.mpr
          (id
            (congrArg
              (fun _a =>
                (mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
                    (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x) =
                  _a)
              (mfderiv_comp x hC hBA)))
          (Eq.refl
            ((mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
              (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x)))))
      rfl)
    rfl
x' : M := ↑(e.extend I).symm x
aux : x' ∈ s
this : f' x' = B
hBsurj : ¬Surjective ⇑B
hA : Bijective ⇑A
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r✝ : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r✝ > m - n
f : M → N
hf : ContMDiff I J (↑r✝) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝¹ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r✝
he : e ∈ maximalAtlas I M
this✝ : ↑I '' e.target ∈ 𝓝 x
hA✝ : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
r : comp = D :=
  Trans.trans
    (Trans.trans
      (Trans.trans
        (Trans.trans
          (Trans.trans (Trans.trans (Trans.trans rfl rfl) rfl)
            (Eq.mpr
              (id
                (congrArg
                  (fun _a =>
                    C.comp
                        ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) =
                      C.comp _a)
                  (mfderiv_comp x hB hA✝)))
              (Eq.refl
                (C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x))))))
          rfl)
        (Eq.mpr
          (id
            (congrArg
              (fun _a =>
                (mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
                    (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x) =
                  _a)
              (mfderiv_comp x hC hBA)))
          (Eq.refl
            ((mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
              (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x)))))
      rfl)
    rfl
x' : M := ↑(e.extend I).symm x
aux : x' ∈ s
this : f' x' = B
hBsurj : ¬Surjective ⇑B
hA : Bijective ⇑A
⊢ ¬Surjective ⇑D
Tactic:
have hC : Bijective C :=
  extendedChart_differential_bijective J (chart_mem_atlas G _) (hsbetter₃ (mem_image_of_mem _ hx))
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r✝ : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r✝ > m - n
f : M → N
hf : ContMDiff I J (↑r✝) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝¹ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r✝
he : e ∈ maximalAtlas I M
this✝ : ↑I '' e.target ∈ 𝓝 x
hA✝ : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC✝ : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
r : comp = D :=
  Trans.trans
    (Trans.trans
      (Trans.trans
        (Trans.trans
          (Trans.trans (Trans.trans (Trans.trans rfl rfl) rfl)
            (Eq.mpr
              (id
                (congrArg
                  (fun _a =>
                    C.comp
                        ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) =
                      C.comp _a)
                  (mfderiv_comp x hB hA✝)))
              (Eq.refl
                (C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x))))))
          rfl)
        (Eq.mpr
          (id
            (congrArg
              (fun _a =>
                (mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
                    (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x) =
                  _a)
              (mfderiv_comp x hC✝ hBA)))
          (Eq.refl
            ((mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
              (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x)))))
      rfl)
    rfl
x' : M := ↑(e.extend I).symm x
aux : x' ∈ s
this : f' x' = B
hBsurj : ¬Surjective ⇑B
hA : Bijective ⇑A
hC : Bijective ⇑C
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r✝ : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r✝ > m - n
f : M → N
hf : ContMDiff I J (↑r✝) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝¹ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r✝
he : e ∈ maximalAtlas I M
this✝ : ↑I '' e.target ∈ 𝓝 x
hA✝ : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC✝ : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
r : comp = D :=
  Trans.trans
    (Trans.trans
      (Trans.trans
        (Trans.trans
          (Trans.trans (Trans.trans (Trans.trans rfl rfl) rfl)
            (Eq.mpr
              (id
                (congrArg
                  (fun _a =>
                    C.comp
                        ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) =
                      C.comp _a)
                  (mfderiv_comp x hB hA✝)))
              (Eq.refl
                (C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x))))))
          rfl)
        (Eq.mpr
          (id
            (congrArg
              (fun _a =>
                (mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
                    (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x) =
                  _a)
              (mfderiv_comp x hC✝ hBA)))
          (Eq.refl
            ((mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
              (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x)))))
      rfl)
    rfl
x' : M := ↑(e.extend I).symm x
aux : x' ∈ s
this : f' x' = B
hBsurj : ¬Surjective ⇑B
hA : Bijective ⇑A
hC : Bijective ⇑C
⊢ ¬Surjective ⇑D
Tactic:
have : Surjective B ↔ Surjective comp := by
  have : comp = (C ∘ B) ∘ A := rfl
  rw [this]
  rw [hA.surjective.of_comp_iff (C ∘ B)]
  rw [Surjective.of_comp_iff' hC B]
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r✝ : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r✝ > m - n
f : M → N
hf : ContMDiff I J (↑r✝) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝² : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r✝
he : e ∈ maximalAtlas I M
this✝¹ : ↑I '' e.target ∈ 𝓝 x
hA✝ : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC✝ : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
r : comp = D :=
  Trans.trans
    (Trans.trans
      (Trans.trans
        (Trans.trans
          (Trans.trans (Trans.trans (Trans.trans rfl rfl) rfl)
            (Eq.mpr
              (id
                (congrArg
                  (fun _a =>
                    C.comp
                        ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) =
                      C.comp _a)
                  (mfderiv_comp x hB hA✝)))
              (Eq.refl
                (C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x))))))
          rfl)
        (Eq.mpr
          (id
            (congrArg
              (fun _a =>
                (mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
                    (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x) =
                  _a)
              (mfderiv_comp x hC✝ hBA)))
          (Eq.refl
            ((mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
              (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x)))))
      rfl)
    rfl
x' : M := ↑(e.extend I).symm x
aux : x' ∈ s
this✝ : f' x' = B
hBsurj : ¬Surjective ⇑B
hA : Bijective ⇑A
hC : Bijective ⇑C
this : Surjective ⇑B ↔ Surjective ⇑comp
⊢ ¬Surjective ⇑D

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r✝ : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r✝ > m - n
f : M → N
hf : ContMDiff I J (↑r✝) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝² : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r✝
he : e ∈ maximalAtlas I M
this✝¹ : ↑I '' e.target ∈ 𝓝 x
hA✝ : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC✝ : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
r : comp = D :=
  Trans.trans
    (Trans.trans
      (Trans.trans
        (Trans.trans
          (Trans.trans (Trans.trans (Trans.trans rfl rfl) rfl)
            (Eq.mpr
              (id
                (congrArg
                  (fun _a =>
                    C.comp
                        ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) =
                      C.comp _a)
                  (mfderiv_comp x hB hA✝)))
              (Eq.refl
                (C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x))))))
          rfl)
        (Eq.mpr
          (id
            (congrArg
              (fun _a =>
                (mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
                    (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x) =
                  _a)
              (mfderiv_comp x hC✝ hBA)))
          (Eq.refl
            ((mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
              (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x)))))
      rfl)
    rfl
x' : M := ↑(e.extend I).symm x
aux : x' ∈ s
this✝ : f' x' = B
hBsurj : ¬Surjective ⇑B
hA : Bijective ⇑A
hC : Bijective ⇑C
this : Surjective ⇑B ↔ Surjective ⇑comp
⊢ ¬Surjective ⇑D
Tactic:
rw [← r]
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r✝ : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r✝ > m - n
f : M → N
hf : ContMDiff I J (↑r✝) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝² : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r✝
he : e ∈ maximalAtlas I M
this✝¹ : ↑I '' e.target ∈ 𝓝 x
hA✝ : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC✝ : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
r : comp = D :=
  Trans.trans
    (Trans.trans
      (Trans.trans
        (Trans.trans
          (Trans.trans (Trans.trans (Trans.trans rfl rfl) rfl)
            (Eq.mpr
              (id
                (congrArg
                  (fun _a =>
                    C.comp
                        ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) =
                      C.comp _a)
                  (mfderiv_comp x hB hA✝)))
              (Eq.refl
                (C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x))))))
          rfl)
        (Eq.mpr
          (id
            (congrArg
              (fun _a =>
                (mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
                    (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x) =
                  _a)
              (mfderiv_comp x hC✝ hBA)))
          (Eq.refl
            ((mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
              (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x)))))
      rfl)
    rfl
x' : M := ↑(e.extend I).symm x
aux : x' ∈ s
this✝ : f' x' = B
hBsurj : ¬Surjective ⇑B
hA : Bijective ⇑A
hC : Bijective ⇑C
this : Surjective ⇑B ↔ Surjective ⇑comp
⊢ ¬Surjective ⇑comp

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r✝ : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r✝ > m - n
f : M → N
hf : ContMDiff I J (↑r✝) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝² : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r✝
he : e ∈ maximalAtlas I M
this✝¹ : ↑I '' e.target ∈ 𝓝 x
hA✝ : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC✝ : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
r : comp = D :=
  Trans.trans
    (Trans.trans
      (Trans.trans
        (Trans.trans
          (Trans.trans (Trans.trans (Trans.trans rfl rfl) rfl)
            (Eq.mpr
              (id
                (congrArg
                  (fun _a =>
                    C.comp
                        ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) =
                      C.comp _a)
                  (mfderiv_comp x hB hA✝)))
              (Eq.refl
                (C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x))))))
          rfl)
        (Eq.mpr
          (id
            (congrArg
              (fun _a =>
                (mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
                    (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x) =
                  _a)
              (mfderiv_comp x hC✝ hBA)))
          (Eq.refl
            ((mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
              (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x)))))
      rfl)
    rfl
x' : M := ↑(e.extend I).symm x
aux : x' ∈ s
this✝ : f' x' = B
hBsurj : ¬Surjective ⇑B
hA : Bijective ⇑A
hC : Bijective ⇑C
this : Surjective ⇑B ↔ Surjective ⇑comp
⊢ ¬Surjective ⇑comp
Tactic:
have : ¬Surjective comp := by rw [← this]; exact hBsurj
State after:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r✝ : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r✝ > m - n
f : M → N
hf : ContMDiff I J (↑r✝) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝³ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r✝
he : e ∈ maximalAtlas I M
this✝² : ↑I '' e.target ∈ 𝓝 x
hA✝ : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC✝ : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
r : comp = D :=
  Trans.trans
    (Trans.trans
      (Trans.trans
        (Trans.trans
          (Trans.trans (Trans.trans (Trans.trans rfl rfl) rfl)
            (Eq.mpr
              (id
                (congrArg
                  (fun _a =>
                    C.comp
                        ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) =
                      C.comp _a)
                  (mfderiv_comp x hB hA✝)))
              (Eq.refl
                (C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x))))))
          rfl)
        (Eq.mpr
          (id
            (congrArg
              (fun _a =>
                (mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
                    (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x) =
                  _a)
              (mfderiv_comp x hC✝ hBA)))
          (Eq.refl
            ((mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
              (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x)))))
      rfl)
    rfl
x' : M := ↑(e.extend I).symm x
aux : x' ∈ s
this✝¹ : f' x' = B
hBsurj : ¬Surjective ⇑B
hA : Bijective ⇑A
hC : Bijective ⇑C
this✝ : Surjective ⇑B ↔ Surjective ⇑comp
this : ¬Surjective ⇑comp
⊢ ¬Surjective ⇑comp

State before:
case h'f'
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r✝ : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr✝ : r✝ > m - n
f : M → N
hf : ContMDiff I J (↑r✝) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝³ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r✝
he : e ∈ maximalAtlas I M
this✝² : ↑I '' e.target ∈ 𝓝 x
hA✝ : MDifferentiableAt 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x
hB : MDifferentiableAt I J f ((e.invFun ∘ I.invFun) x)
hBA : MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
hnC : f ∘ e.invFun ∘ I.invFun '' w ∈ 𝓝 ((f ∘ e.invFun ∘ I.invFun) x)
hC✝ : MDifferentiableAt J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)
comp : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  C.comp (B.comp A)
r : comp = D :=
  Trans.trans
    (Trans.trans
      (Trans.trans
        (Trans.trans
          (Trans.trans (Trans.trans (Trans.trans rfl rfl) rfl)
            (Eq.mpr
              (id
                (congrArg
                  (fun _a =>
                    C.comp
                        ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x)) =
                      C.comp _a)
                  (mfderiv_comp x hB hA✝)))
              (Eq.refl
                (C.comp ((mfderiv I J f ((e.invFun ∘ I.invFun) x)).comp (mfderiv 𝓘(ℝ, E) I (e.invFun ∘ I.invFun) x))))))
          rfl)
        (Eq.mpr
          (id
            (congrArg
              (fun _a =>
                (mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
                    (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x) =
                  _a)
              (mfderiv_comp x hC✝ hBA)))
          (Eq.refl
            ((mfderiv J 𝓘(ℝ, F) (↑J ∘ ↑e') ((f ∘ e.invFun ∘ I.invFun) x)).comp
              (mfderiv 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x)))))
      rfl)
    rfl
x' : M := ↑(e.extend I).symm x
aux : x' ∈ s
this✝¹ : f' x' = B
hBsurj : ¬Surjective ⇑B
hA : Bijective ⇑A
hC : Bijective ⇑C
this✝ : Surjective ⇑B ↔ Surjective ⇑comp
this : ¬Surjective ⇑comp
⊢ ¬Surjective ⇑comp
Tactic:
exact this
State after:
no goals

State before:
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
⊢ ↑(e.extend I) '' e.source ∈ 𝓝 x
Tactic:
let x' := (e.extend I).symm x
State after:
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
x' : M := ↑(e.extend I).symm x
⊢ ↑(e.extend I) '' e.source ∈ 𝓝 x

State before:
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
x' : M := ↑(e.extend I).symm x
⊢ ↑(e.extend I) '' e.source ∈ 𝓝 x
Tactic:
have : e.extend I x' = x := e.extend_right_inv _ (hsbetter₀ hx)
State after:
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
x' : M := ↑(e.extend I).symm x
this : ↑(e.extend I) x' = x
⊢ ↑(e.extend I) '' e.source ∈ 𝓝 x

State before:
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
x' : M := ↑(e.extend I).symm x
this : ↑(e.extend I) x' = x
⊢ ↑(e.extend I) '' e.source ∈ 𝓝 x
Tactic:
rw [← this]
State after:
E : Type u_1
inst✝²⁰ : NormedAddCommGroup E
inst✝¹⁹ : NormedSpace ℝ E
H : Type u_2
inst✝¹⁸ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝¹⁷ : TopologicalSpace M
inst✝¹⁶ : ChartedSpace H M
inst✝¹⁵ : SmoothManifoldWithCorners I M
inst✝¹⁴ : FiniteDimensional ℝ E
inst✝¹³ : SecondCountableTopology M
inst✝¹² : MeasurableSpace E
inst✝¹¹ : BorelSpace E
F : Type u_4
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
G : Type u_5
inst✝⁸ : TopologicalSpace G
J : ModelWithCorners ℝ F G
N : Type u_6
inst✝⁷ : TopologicalSpace N
inst✝⁶ : ChartedSpace G N
inst✝⁵ : SmoothManifoldWithCorners J N
inst✝⁴ : FiniteDimensional ℝ F
inst✝³ : MeasurableSpace F
inst✝² : BorelSpace F
m n r : ℕ
hm : finrank ℝ E = m
hn : finrank ℝ F = n
hr : r > m - n
f : M → N
hf : ContMDiff I J (↑r) f
inst✝¹ : I.Boundaryless
inst✝ : J.Boundaryless
f' : (x : M) → TangentSpace I x →L[ℝ] TangentSpace J (f x)
s : Set M
hf' : ∀ x ∈ s, HasMFDerivAt I J f x (f' x)
h'f' : ∀ x ∈ s, ¬Surjective ⇑(f' x)
x✝ : M
e : PartialHomeomorph M H := chartAt H x✝
μ : Measure F
hμ : μ.IsAddHaarMeasure
y : N
e' : PartialHomeomorph N G := chartAt G y
w : Set E := ↑(e.extend I) '' (e.source ∩ f ⁻¹' e'.source)
s_better : Set E := ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source)
f_local : E → F := (↑J ∘ ↑e') ∘ f ∘ ↑(e.extend I).symm
hwopen : IsOpen w
hsw : s_better ⊆ w
hsbetter₀ : s_better ⊆ ↑(e.extend I) '' e.source
cor : ↑(e.extend I).symm ∘ ↑(e.extend I) '' (s ∩ e.source ∩ f ⁻¹' e'.source) = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter : ↑(e.extend I).symm '' s_better = s ∩ e.source ∩ f ⁻¹' e'.source
hsbetter₁ : ↑(e.extend I).symm '' s_better ⊆ s
hsbetter₂ : ↑(e.extend I).symm '' s_better ⊆ e.source
hw : f ∘ ↑(e.extend I).symm '' w ⊆ e'.source
hsbetter₃ : f ∘ ↑(e.extend I).symm '' s_better ⊆ e'.source
this✝ : ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s)) = f_local '' s_better
x : E
hx : x ∈ s_better
D : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace 𝓘(ℝ, F) (f_local x) := mfderiv 𝓘(ℝ, E) 𝓘(ℝ, F) f_local x
A : TangentSpace 𝓘(ℝ, E) x →L[ℝ] TangentSpace I (↑(e.extend I).symm x) := mfderiv 𝓘(ℝ, E) I (↑(e.extend I).symm) x
B : TangentSpace I (↑(e.extend I).symm x) →L[ℝ] TangentSpace J (f (↑(e.extend I).symm x)) :=
  mfderiv I J f (↑(e.extend I).symm x)
C : TangentSpace J ((f ∘ ↑(e.extend I).symm) x) →L[ℝ]
  TangentSpace 𝓘(ℝ, F) (↑(e'.extend J) ((f ∘ ↑(e.extend I).symm) x)) :=
  mfderiv J 𝓘(ℝ, F) (↑(e'.extend J)) ((f ∘ ↑(e.extend I).symm) x)
x' : M := ↑(e.extend I).symm x
this : ↑(e.extend I) x' = x
⊢ ↑(e.extend I) '' e.source ∈ 𝓝 (↑(e.extend I) x')