Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions SphereEversion/Global/Immersion.lean
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ theorem immersionRel_open [FiniteDimensional ℝ E] : IsOpen (immersionRel I M I

omit [IsManifold I ∞ M] [IsManifold I' ∞ M'] in
@[simp]
theorem immersionRel_slice_eq {m : M} {m' : M'} {p : DualPair <| TangentSpace I m}
{φ : TangentSpace I m →L[ℝ] TangentSpace I' m'} (hφ : Injective φ) :
theorem immersionRel_slice_eq {m : M} {m' : M'} {p : DualPair <| TangentSpace% m}
{φ : TangentSpace% m →L[ℝ] TangentSpace% m'} (hφ : Injective φ) :
(immersionRel I M I' M').slice ⟨(m, m'), φ⟩ p =
(((p.π.ker).map (φ : TM m →ₛₗ[.id ℝ] TM' m')): Set <| TM' m')ᶜ :=
Set.ext_iff.mpr fun _ ↦ p.injective_update_iff hφ
Expand All @@ -83,9 +83,9 @@ variable [FiniteDimensional ℝ E] [FiniteDimensional ℝ E']
omit [IsManifold I ∞ M] [IsManifold I' ∞ M'] in
theorem immersionRel_ample (h : finrank ℝ E < finrank ℝ E') : (immersionRel I M I' M').Ample := by
rw [RelMfld.ample_iff]
rintro ⟨⟨m, m'⟩, φ : TangentSpace I m →L[ℝ] TangentSpace I' m'⟩ (p : DualPair (TangentSpace I m))
rintro ⟨⟨m, m'⟩, φ : TangentSpace% m →L[ℝ] TangentSpace% m'⟩ (p : DualPair (TangentSpace% m))
(hφ : Injective φ)
haveI : FiniteDimensional ℝ (TangentSpace I m) := (by infer_instance : FiniteDimensional ℝ E)
haveI : FiniteDimensional ℝ (TangentSpace% m) := (by infer_instance : FiniteDimensional ℝ E)
have hcodim := one_lt_rank_of_rank_lt_rank p.ker_pi_ne_top h φ.toLinearMap
rw [immersionRel_slice_eq I I' hφ]
exact AmpleSet.of_one_lt_codim hcodim
Expand Down
18 changes: 9 additions & 9 deletions SphereEversion/Global/OneJetBundle.lean
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ local notation "FJ¹MM'" => (OneJetSpace I I' : M × M' → Type _)

variable (I I')

instance (p : M × M') : FunLike (OneJetSpace I I' p) (TangentSpace I p.1) (TangentSpace I' p.2)
instance (p : M × M') : FunLike (OneJetSpace I I' p) (TangentSpace% p.1) (TangentSpace% p.2)
where
coe := fun φ ↦ φ.toFun
coe_injective := fun _ _ h ↦ ContinuousLinearMap.ext (congrFun h)
Expand Down Expand Up @@ -480,7 +480,7 @@ variable (I' J')

/-- A useful definition to define maps between two `OneJetBundle`s. -/
protected def OneJetBundle.map (f : M → N) (g : M' → N')
(Dfinv : ∀ x : M, TangentSpace J (f x) →L[𝕜] TangentSpace I x) :
(Dfinv : ∀ x : M, TangentSpace% (f x) →L[𝕜] TangentSpace% x) :
OneJetBundle I M I' M' → OneJetBundle J N J' N' := fun p ↦
OneJetBundle.mk (f p.1.1) (g p.1.2) ((mfderiv% g p.1.2 ∘L p.2) ∘L Dfinv p.1.1)

Expand All @@ -491,9 +491,9 @@ omit [IsManifold I ∞ M] [IsManifold I' ∞ M']
[IsManifold I₂ ∞ M₂] [IsManifold I₃ ∞ M₃]
[IsManifold J' ∞ N'] [IsManifold J ∞ N] in
theorem OneJetBundle.map_map {f₂ : N → M₂} {f : M → N} {g₂ : N' → M₃} {g : M' → N'}
{Dfinv : ∀ x : M, TangentSpace J (f x) →L[𝕜] TangentSpace I x}
{Df₂inv : ∀ x : N, TangentSpace I₂ (f₂ x) →L[𝕜] TangentSpace J x} {x : J¹MM'}
(hg₂ : MDifferentiableAt J' I₃ g₂ (g x.1.2)) (hg : MDifferentiableAt I' J' g x.1.2) :
{Dfinv : ∀ x : M, TangentSpace% (f x) →L[𝕜] TangentSpace% x}
{Df₂inv : ∀ x : N, TangentSpace% (f₂ x) →L[𝕜] TangentSpace% x} {x : J¹MM'}
(hg₂ : MDiffAt g₂ (g x.1.2)) (hg : MDiffAt g x.1.2) :
OneJetBundle.map J' I₃ f₂ g₂ Df₂inv (OneJetBundle.map I' J' f g Dfinv x) =
OneJetBundle.map I' I₃ (f₂ ∘ f) (g₂ ∘ g) (fun x ↦ Dfinv x ∘L Df₂inv (f x)) x := by
ext
Expand All @@ -517,7 +517,7 @@ theorem OneJetBundle.map_id (x : J¹MM') :
erw [ContinuousLinearMap.id_comp]

theorem ContMDiffAt.oneJetBundle_map {f : M'' → M → N} {g : M'' → M' → N'} {x₀ : M''}
{Dfinv : ∀ (z : M'') (x : M), TangentSpace J (f z x) →L[𝕜] TangentSpace I x} {k : M'' → J¹MM'}
{Dfinv : ∀ (z : M'') (x : M), TangentSpace% (f z x) →L[𝕜] TangentSpace% x} {k : M'' → J¹MM'}
(hf : ContMDiffAt (I''.prod I) J ∞ f.uncurry (x₀, (k x₀).1.1))
(hg : ContMDiffAt (I''.prod I') J' ∞ g.uncurry (x₀, (k x₀).1.2))
(hDfinv :
Expand All @@ -539,21 +539,21 @@ theorem ContMDiffAt.oneJetBundle_map {f : M'' → M → N} {g : M'' → M' → N


/-- A useful definition to define maps between two `OneJetBundle`s. -/
def mapLeft (f : M → N) (Dfinv : ∀ x : M, TangentSpace J (f x) →L[𝕜] TangentSpace I x) :
def mapLeft (f : M → N) (Dfinv : ∀ x : M, TangentSpace% (f x) →L[𝕜] TangentSpace% x) :
J¹MM' → OneJetBundle J N I' M' := fun p ↦ OneJetBundle.mk (f p.1.1) p.1.2 (p.2 ∘L Dfinv p.1.1)

set_option backward.isDefEq.respectTransparency false in
set_option linter.style.multiGoal false in
omit [IsManifold I ∞ M] [IsManifold I' ∞ M']
[IsManifold I₂ ∞ M₂] [IsManifold I₃ ∞ M₃]
[IsManifold J' ∞ N'] [IsManifold J ∞ N] in
theorem mapLeft_eq_map (f : M → N) (Dfinv : ∀ x : M, TangentSpace J (f x) →L[𝕜] TangentSpace I x) :
theorem mapLeft_eq_map (f : M → N) (Dfinv : ∀ x : M, TangentSpace% (f x) →L[𝕜] TangentSpace% x) :
mapLeft f Dfinv = OneJetBundle.map I' I' f (id : M' → M') Dfinv := by
ext x; rfl; rfl; dsimp only [OneJetBundle.map, mapLeft, oneJetBundle_mk_snd]
simp_rw [mfderiv_id, ContinuousLinearMap.id_comp]

theorem ContMDiffAt.mapLeft {f : N' → M → N} {x₀ : N'}
{Dfinv : ∀ (z : N') (x : M), TangentSpace J (f z x) →L[𝕜] TangentSpace I x} {g : N' → J¹MM'}
{Dfinv : ∀ (z : N') (x : M), TangentSpace% (f z x) →L[𝕜] TangentSpace% x} {g : N' → J¹MM'}
(hf : ContMDiffAt (J'.prod I) J ∞ f.uncurry (x₀, (g x₀).1.1))
(hDfinv :
ContMDiffAt J' 𝓘(𝕜, F →L[𝕜] E) ∞
Expand Down
4 changes: 2 additions & 2 deletions SphereEversion/Global/OneJetSec.lean
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ variable {𝕜 : Type*} [NontriviallyNormedField 𝕜]
/-- A section of a 1-jet bundle seen as a bundle over the source manifold. -/
@[ext] structure OneJetSec where
bs : M → M'
ϕ : ∀ x : M, TangentSpace I x →L[𝕜] TangentSpace I' (bs x)
ϕ : ∀ x : M, TangentSpace% x →L[𝕜] TangentSpace% (bs x)
contMDiff' : ContMDiff I ((I.prod I').prod 𝓘(𝕜, E →L[𝕜] E')) ∞
fun x ↦ OneJetBundle.mk x (bs x) (ϕ x)

Expand Down Expand Up @@ -176,7 +176,7 @@ variable {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] {H : Type*} [Top
in such a way that the function is smooth as a function of all arguments. -/
@[ext] structure FamilyOneJetSec where
bs : N → M → M'
ϕ : ∀ (n : N) (m : M), TangentSpace I m →L[ℝ] TangentSpace I' (bs n m)
ϕ : ∀ (n : N) (m : M), TangentSpace% m →L[ℝ] TangentSpace% (bs n m)
contMDiff' :
ContMDiff (J.prod I) ((I.prod I').prod 𝓘(ℝ, E →L[ℝ] E')) ∞ fun p : N × M ↦
OneJetBundle.mk p.2 (bs p.1 p.2) (ϕ p.1 p.2)
Expand Down
20 changes: 10 additions & 10 deletions SphereEversion/Global/ParametricityForFree.lean
Original file line number Diff line number Diff line change
Expand Up @@ -50,22 +50,22 @@ Porting note: the next statement has huge elaboration issue because of defEq abu
We force our way using hard type ascription, ie. using `id`.
The following commented out variables and check show the issue.
variable {σ : OneJetBundle (IP.prod I) (P × M) I' M'}
{p : DualPair <| TangentSpace (IP.prod I) σ.1.1}(q : DualPair <| TangentSpace I σ.1.1.2)
{p : DualPair <| TangentSpace% σ.1.1}(q : DualPair <| TangentSpace% σ.1.1.2)

#check p.v
#check (p.v - (id ((0 : EP), (q.v : E)) : TangentSpace (IP.prod I) σ.proj.1))
#check (p.v - (id ((0 : EP), (q.v : E)) : TangentSpace% σ.proj.1))
#check (R.relativize IP P).slice σ p
#check (R.slice (bundleSnd σ) q : Set <| TangentSpace I' σ.proj.2) -/
#check (R.slice (bundleSnd σ) q : Set <| TangentSpace% σ.proj.2) -/

set_option backward.isDefEq.respectTransparency false in
omit [IsManifold I ∞ M] [IsManifold I' ∞ M'] [IsManifold IP ∞ P] in
theorem relativize_slice {σ : OneJetBundle (IP.prod I) (P × M) I' M'}
{p : DualPair <| TangentSpace (IP.prod I) σ.1.1} (q : DualPair <| TangentSpace I σ.1.1.2)
{p : DualPair <| TangentSpace% σ.1.1} (q : DualPair <| TangentSpace% σ.1.1.2)
(hpq : p.π.comp (ContinuousLinearMap.inr ℝ EP E) = q.π) :
(R.relativize IP P).slice σ p =
σ.2 (p.v - (id (0, (q.v : E)) : TangentSpace (IP.prod I) σ.proj.1)) +ᵥ
(id (R.slice (bundleSnd σ) q) : Set <| TangentSpace I' σ.proj.2) := by
set z := (p.v - (id (0, (q.v : E)) : TangentSpace (IP.prod I) σ.proj.1))
σ.2 (p.v - (id (0, (q.v : E)) : TangentSpace% σ.proj.1)) +ᵥ
(id (R.slice (bundleSnd σ) q) : Set <| TangentSpace% σ.proj.2) := by
set z := (p.v - (id (0, (q.v : E)) : TangentSpace% σ.proj.1))
have h2pq : ∀ x : E, p.π ((0 : EP), x) = q.π x := fun x ↦
congr_arg (fun f : E →L[ℝ] ℝ ↦ f x) hpq
ext1 w
Expand All @@ -76,7 +76,7 @@ theorem relativize_slice {σ : OneJetBundle (IP.prod I) (P × M) I' M'}
erw [ContinuousLinearMap.comp_apply, ContinuousLinearMap.inr_apply,
← ContinuousLinearMap.map_neg, neg_sub]
obtain ⟨u, hu, t, rfl⟩ := q.decomp x
have hv : (id (0, (q.v : E)) : TangentSpace (IP.prod I) σ.proj.1) - p.v ∈ p.π.ker := by
have hv : (id (0, (q.v : E)) : TangentSpace% σ.proj.1) - p.v ∈ p.π.ker := by
simp [LinearMap.mem_ker, map_sub, p.pairing, h2pq, q.pairing, sub_self]
have hup : ((0 : EP), u) ∈ p.π.ker := (h2pq u).trans hu
erw [q.update_apply _ hu, ← Prod.zero_mk_add_zero_mk, map_add, p.update_ker_pi _ _ hup, ←
Expand All @@ -89,7 +89,7 @@ theorem relativize_slice {σ : OneJetBundle (IP.prod I) (P × M) I' M'}

omit [IsManifold I ∞ M] [IsManifold I' ∞ M'] [IsManifold IP ∞ P] in
theorem relativize_slice_eq_univ {σ : OneJetBundle (IP.prod I) (P × M) I' M'}
{p : DualPair <| TangentSpace (IP.prod I) σ.1.1}
{p : DualPair <| TangentSpace% σ.1.1}
(hp : p.π.comp (ContinuousLinearMap.inr ℝ EP E) = 0) :
((R.relativize IP P).slice σ p).Nonempty ↔ (R.relativize IP P).slice σ p = univ := by
rcases σ with ⟨⟨⟨q, m⟩,m'⟩, φ⟩
Expand Down Expand Up @@ -123,7 +123,7 @@ theorem RelMfld.Ample.relativize (hR : R.Ample) : (R.relativize IP P).Ample := b
PreconnectedSpace.connectedComponent_eq_univ, convexHull_univ]
obtain ⟨u', hu'⟩ := ContinuousLinearMap.exists_ne_zero h
let u := (p2 u')⁻¹ • u'
let q : DualPair (TangentSpace I σ.1.1.2) :=
let q : DualPair (TangentSpace% σ.1.1.2) :=
⟨p2, u, by erw [p2.map_smul, smul_eq_mul, inv_mul_cancel₀ hu']⟩
rw [relativize_slice q rfl]
exact (hR q).vadd
Expand Down
4 changes: 2 additions & 2 deletions SphereEversion/Global/Relation.lean
Original file line number Diff line number Diff line change
Expand Up @@ -488,8 +488,8 @@ theorem OpenSmoothEmbedding.range_transfer :
· rintro ⟨σ, rfl⟩; exact mk_mem_prod (mem_range_self _) (mem_range_self _)
· rcases σ with ⟨⟨x, y⟩, τ⟩
rintro ⟨⟨x, rfl⟩ : x ∈ range φ, ⟨y, rfl⟩ : y ∈ range ψ⟩
refine ⟨⟨(x, y), ((ψ.fderiv y).symm : TangentSpace IN (ψ y) →L[ℝ] TangentSpace IY y) ∘L
τ ∘L (φ.fderiv x : TangentSpace IX x →L[ℝ] TangentSpace IM (φ x))⟩, ?_⟩
refine ⟨⟨(x, y), ((ψ.fderiv y).symm : TangentSpace% (ψ y) →L[ℝ] TangentSpace% y) ∘L
τ ∘L (φ.fderiv x : TangentSpace% x →L[ℝ] TangentSpace% (φ x))⟩, ?_⟩
refine congr_arg (Bundle.TotalSpace.mk _) (ContinuousLinearMap.ext fun v ↦ ?_)
/- Porting note: Lean 3 version was
simp_rw [continuous_linear_map.comp_apply, ← ψ.fderiv_coe, continuous_linear_equiv.coe_coe,
Expand Down
14 changes: 7 additions & 7 deletions SphereEversion/Global/SmoothEmbedding.lean
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,12 @@ variable [IsManifold I ∞ M] [IsManifold I' ∞ M']

/- Note that we are slightly abusing the fact that `TangentSpace I x` and
`TangentSpace I (f.invFun (f x))` are both definitionally `E` below. -/
def fderiv (x : M) : TangentSpace I x ≃L[𝕜] TangentSpace I' (f x) :=
have h₁ : MDifferentiableAt I' I f.invFun (f x) :=
def fderiv (x : M) : TangentSpace% x ≃L[𝕜] TangentSpace% (f x) :=
have h₁ : MDiffAt f.invFun (f x) :=
((f.contMDiffOn_inv (f x)
(mem_range_self x)).mdifferentiableWithinAt (by simp)).mdifferentiableAt
(f.isOpenMap.range_mem_nhds x)
have h₂ : MDifferentiableAt I I' f x := f.contMDiff_to.mdifferentiableAt (by simp)
have h₂ : MDiffAt f x := f.contMDiff_to.mdifferentiableAt (by simp)
ContinuousLinearEquiv.equivOfInverse (mfderiv% f x) (mfderiv% f.invFun (f x))
(by
intro v
Expand All @@ -110,19 +110,19 @@ def fderiv (x : M) : TangentSpace I x ≃L[𝕜] TangentSpace I' (f x) :=
omit [IsManifold I ∞ M] [IsManifold I' ∞ M'] in
@[simp]
theorem fderiv_coe (x : M) :
(f.fderiv x : TangentSpace I x →L[𝕜] TangentSpace I' (f x)) = mfderiv% f x := by ext; rfl
(f.fderiv x : TangentSpace% x →L[𝕜] TangentSpace% (f x)) = mfderiv% f x := by ext; rfl

omit [IsManifold I ∞ M] [IsManifold I' ∞ M'] in
@[simp]
theorem fderiv_symm_coe (x : M) :
((f.fderiv x).symm : TangentSpace I' (f x) →L[𝕜] TangentSpace I x) =
((f.fderiv x).symm : TangentSpace% (f x) →L[𝕜] TangentSpace% x) =
mfderiv% f.invFun (f x) := by ext; rfl

omit [IsManifold I ∞ M] [IsManifold I' ∞ M'] in
theorem fderiv_symm_coe' {x : M'} (hx : x ∈ range f) :
((f.fderiv (f.invFun x)).symm :
TangentSpace I' (f (f.invFun x)) →L[𝕜] TangentSpace I (f.invFun x)) =
(mfderiv% f.invFun x : TangentSpace I' x →L[𝕜] TangentSpace I (f.invFun x)) :=
TangentSpace% (f (f.invFun x)) →L[𝕜] TangentSpace% (f.invFun x)) =
(mfderiv% f.invFun x : TangentSpace% x →L[𝕜] TangentSpace% (f.invFun x)) :=
by rw [fderiv_symm_coe, f.right_inv hx]

end
Expand Down
4 changes: 2 additions & 2 deletions SphereEversion/Global/TwistOneJetSec.lean
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@ end Sections

section proj

instance piBugInstanceRestatement (x : M) : TopologicalSpace
(TangentSpace I x →L[𝕜] Trivial M V x) := by
instance piBugInstanceRestatement (x : M) :
TopologicalSpace (TangentSpace% x →L[𝕜] Trivial M V x) := by
infer_instance

instance piBugInstanceRestatement2 (x : M × V) : TopologicalSpace (OneJetSpace I 𝓘(𝕜, V) x) := by
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -188,9 +188,9 @@ protected nonrec def ContMDiffAt {x : M} (φ : Germ (𝓝 x) F) (n : WithTop ℕ

-- currently unused
nonrec def mfderiv {x : M} (φ : Germ (𝓝 x) N) :
TangentSpace I x →L[ℝ] TangentSpace IG φ.value :=
TangentSpace% x →L[ℝ] TangentSpace% φ.value :=
@Quotient.hrecOn _ (germSetoid (𝓝 x) N)
(fun φ : Germ (𝓝 x) N ↦ TangentSpace I x →L[ℝ] TangentSpace IG φ.value) φ
(fun φ : Germ (𝓝 x) N ↦ TangentSpace% x →L[ℝ] TangentSpace% φ.value) φ
(fun f ↦ mfderiv% f x) fun _f _g hfg ↦ heq_of_eq (EventuallyEq.mfderiv_eq hfg : _)

variable {I}
Expand Down
5 changes: 3 additions & 2 deletions SphereEversion/ToMathlib/Unused/GeometryManifoldMisc.lean
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ attribute [mfld_simps] mem_insert_iff
-- sorry
-- end
theorem contMDiffAt_tangentBundle_trivializationAt_continuousLinearMap (x₀ : TangentBundle I M) :
ContMDiffAt I.tangent 𝓘(𝕜, E) m
CMDiffAt m
(fun x : TangentBundle I M ↦
(trivializationAt E (TangentSpace I) x₀.proj).continuousLinearMapAt 𝕜 x.proj x.2)
x₀ := by
Expand Down Expand Up @@ -374,7 +374,8 @@ theorem ContMDiffAt.contMDiffAt_tangentMap (x₀ : TangentBundle I M)
(FiberBundle.continuous_proj E (TangentSpace I)).continuousAt.preimage_mem_nhds
(e.open_baseSet.mem_nhds <| mem_baseSet_trivializationAt _ _ _)
have h2 :=
(hf.continuousAt.comp (FiberBundle.continuous_proj E (TangentSpace I)).continuousAt).preimage_mem_nhds
(hf.continuousAt.comp
(FiberBundle.continuous_proj E (TangentSpace I)).continuousAt).preimage_mem_nhds
(e'.open_baseSet.mem_nhds <| mem_baseSet_trivializationAt _ _ _)
sorry /-filter_upwards [h1, h2] with x hx h2x
dsimp only [inTangentCoordinates, in_coordinates, id_def]
Expand Down
Loading