internlm/Lean-Github huggingface dataset:
Theorem: sard_boundaryless
Proof 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
⊢ ↑J ∘ ↑e' '' (f '' (e.source ∩ s) ∩ e'.source) = ↑J ∘ ↑e' '' (e'.source ∩ f '' (e.source ∩ s))
Tactic:
rw [inter_comm]
Proof state after:
no goals
Theorem: sard_boundaryless
Proof state before:
case hw
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
⊢ IsOpen w
Tactic:
exact e.extend_isOpenMapOn_source _
  (e.open_source.inter (e'.open_source.preimage hf.continuous)) (inter_subset_left _ _)
Proof state after:
no goals
Theorem: sard_boundaryless
Proof state before:
case hsw.h
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
⊢ s ∩ (e.source ∩ f ⁻¹' e'.source) ⊆ e.source ∩ f ⁻¹' e'.source
Tactic:
exact inter_subset_right s _
Proof state after:
no goals
Theorem: sard_boundaryless
Proof state before:
case hf
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
he : e ∈ maximalAtlas I M
he' : e' ∈ maximalAtlas J N
hs : e.source ∩ f ⁻¹' e'.source ⊆ e.source
h2s : MapsTo f (e.source ∩ f ⁻¹' e'.source) e'.source
⊢ ContDiffOn ℝ (↑r) f_local w
Tactic:
exact (contMDiffOn_iff_of_mem_maximalAtlas' (n := r) he he' hs h2s).mp hf.contMDiffOn
Proof state after:
no goals
Theorem: sard_boundaryless
Proof 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
Proof state after:
no goals
Theorem: sard_boundaryless
Proof 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
hesource : e.source ∈ 𝓝 x'
⊢ ↑(e.extend I) '' e.source ∈ 𝓝 (↑(e.extend I) x')
Tactic:
exact extendedChart_image_nhds_on I hesource (Eq.subset rfl)
Proof state after:
no goals
Theorem: sard_boundaryless
Proof 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
this✝ : ↑(e.extend I).symm x = x'
this : x' ∈ e.source
⊢ e.source ∈ 𝓝 x'
Tactic:
exact e.open_source.mem_nhds this
Proof state after:
no goals
Theorem: sard_boundaryless
Proof 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
this : ↑(e.extend I).symm x = x'
⊢ x' ∈ e.source
Tactic:
sorry
Proof state after:
no goals
Theorem: sard_boundaryless
Proof 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)
hnA : ↑(e.extend I) '' e.source ∈ 𝓝 x
hr : 1 ≤ ↑r
⊢ e ∈ maximalAtlas I M
Tactic:
sorry
Proof state after:
no goals
Theorem: sard_boundaryless
Proof 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)
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)
⊢ MDifferentiableAt 𝓘(ℝ, E) J (f ∘ e.invFun ∘ I.invFun) x
Tactic:
sorry
Proof state after:
no goals