Dist update
OpenSmoothEmbedding.dist_update
Plain-language statement
This is lem:dist_updating in the blueprint.
Exact Lean statement
theorem dist_update [ProperSpace Y] {K : Set X} (hK : IsCompact K) {P : Type*} [MetricSpace P]
{KP : Set P} (hKP : IsCompact KP) (f : P → M → N) (hf : Continuous ↿f)
(hf' : ∀ p, f p '' range φ ⊆ range ψ) {ε : M → ℝ} (hε : ∀ m, 0 < ε m) (hε' : Continuous ε) :
∃ η > (0 : ℝ), ∀ g : P → X → Y, ∀ p ∈ KP, ∀ p' ∈ KP, ∀ x ∈ K,
dist (g p' x) (ψ.invFun (f p (φ x))) < η →
dist (update φ ψ (f p') (g p') <| φ x) (f p <| φ x) < ε (φ x)Formal artifact
Lean source
theorem dist_update [ProperSpace Y] {K : Set X} (hK : IsCompact K) {P : Type*} [MetricSpace P] {KP : Set P} (hKP : IsCompact KP) (f : P → M → N) (hf : Continuous ↿f) (hf' : ∀ p, f p '' range φ ⊆ range ψ) {ε : M → ℝ} (hε : ∀ m, 0 < ε m) (hε' : Continuous ε) : ∃ η > (0 : ℝ), ∀ g : P → X → Y, ∀ p ∈ KP, ∀ p' ∈ KP, ∀ x ∈ K, dist (g p' x) (ψ.invFun (f p (φ x))) < η → dist (update φ ψ (f p') (g p') <| φ x) (f p <| φ x) < ε (φ x) := by let F : P × X → Y := fun q ↦ (ψ.invFun ∘ f q.1 ∘ φ) q.2 let K₁ := Metric.cthickening 1 (F '' KP.prod K) have hK₁ : IsCompact K₁ := by refine Metric.isCompact_of_isClosed_isBounded Metric.isClosed_cthickening (Bornology.IsBounded.cthickening <| IsCompact.isBounded <| ?_) apply (hKP.prod hK).image exact ψ.contMDiffOn_inv.continuousOn.comp_continuous (hf.comp <| continuous_fst.prodMk <| φ.continuous.comp continuous_snd) fun q ↦ hf' q.1 ⟨φ q.2, mem_range_self _, rfl⟩ have h₁ : UniformContinuousOn ψ K₁ := hK₁.uniformContinuousOn_of_continuous ψ.continuous.continuousOn have hεφ : ∀ x ∈ K, 0 < (ε ∘ φ) x := fun x _hx ↦ hε _ obtain ⟨ε₀, hε₀, hε₀'⟩ := hK.exists_forall_le' (hε'.comp φ.continuous).continuousOn hεφ obtain ⟨τ, hτ : 0 < τ, hτ'⟩ := Metric.uniformContinuousOn_iff.mp h₁ ε₀ hε₀ refine ⟨min τ 1, by simp [hτ], fun g p hp p' _hp' x hx hη ↦ ?_⟩ obtain ⟨H, H'⟩ := lt_min_iff.mp hη apply lt_of_lt_of_le _ (hε₀' x hx); clear hε₀' simp only [update_apply_embedding] have h₁ : g p' x ∈ K₁ := Metric.mem_cthickening_of_dist_le (g p' x) (F (p, x)) 1 _ ⟨(p, x), ⟨hp, hx⟩, rfl⟩ H'.le have h₂ : f p (φ x) ∈ range ψ := hf' p ⟨φ x, mem_range_self _, rfl⟩ rw [← ψ.right_inv h₂] exact hτ' _ h₁ _ (Metric.self_subset_cthickening _ ⟨(p, x), ⟨hp, hx⟩, rfl⟩) H- Project
- Sphere eversion
- License
- Apache-2.0
- Commit
- ded8fda5e76b
- Source
- SphereEversion/Global/SmoothEmbedding.lean:454-482
Reuse this declaration
Bring the exact result into your workflow
The import identifies the source module. Your project still needs the pinned package dependency shown on this page.
What this badge means
This completion status comes from the project or community source. It has not yet been represented here as an independent rebuild and axiom audit.
Continue in this project
Related declarations
Continuous of Path
Continuous.ofPath
Plain-language statement
Loop.ofPath is continuous, general version.
Source project: Sphere eversion
Person-level attribution pending.
Injective update iff
DualPair.injective_update_iff
Project documentation
Map a dual pair under a linear equivalence. -/ @[simps] def map (p : DualPair E) (L : E ≃L[ℝ] E') : DualPair E' := ⟨p.π ∘L ↑L.symm, L p.v, (congr_arg p.π <| L.symm_apply_apply p.v).trans p.pairing⟩ theorem update_comp_left (p : DualPair E) (ψ' : F →L[ℝ] G) (φ : E →L[ℝ] F) (w : F) : p.update (ψ' ∘L φ) (ψ' w) = ψ' ∘L p.update φ w := by ext1 u simp only [upd...
Source project: Sphere eversion
Person-level attribution pending.
Extend loops
extend_loops
Project documentation
A more precise version of sfHomotopy_in. -/ theorem sfHomotopy_in' {ι} (h₀ : SurroundingFamily g b γ₀ U) (h₁ : SurroundingFamily g b γ₁ U) (τ : ι → ℝ) (x : ι → E) (i : ι) {V : Set E} (hx : x i ∈ V) {t : ℝ} (ht : t ∈ I) {s : ℝ} (h_in₀ : ∀ i, x i ∈ V → ∀ t ∈ I, ∀ (s : ℝ), τ i ≠ 1 → (x i, γ₀ (x i) t s) ∈ Ω) (h_in₁ : ∀ i, x i ∈ V → ∀ t ∈ I, ∀ (s : ℝ), τ i ≠...
Source project: Sphere eversion
Person-level attribution pending.