9.5. Slices are Bi-Lipschitz Homeomorphisms
Fix (t,p) and let g(x) := u(t,p,x), an L_g-Lipschitz map X \to P. The
time-t slice of the homotopy is
\Phi(x) \;:=\; f\bigl(g(x), x\bigr) \;=\; \mathrm{slice}(g(x))(x).
Proposition 9.5.1
Proposition 9.5.1. Since L^2 L_g < 1 (and L > 0), the map \Phi is a
homeomorphism X \to T; moreover \Phi is L(1 + L_g)-Lipschitz and \Phi^{-1} is
\bigl(L / (1 - L^2 L_g)\bigr)-Lipschitz.
Proof. Upper bound. For x, y:
d(\Phi x, \Phi y) \le d\bigl(\mathrm{slice}(g x)(x), \mathrm{slice}(g x)(y)\bigr) + d\bigl(\mathrm{slice}(g x)(y), \mathrm{slice}(g y)(y)\bigr) \le L\,d(x,y) + L\,\|g x - g y\| \le L(1 + L_g)\,d(x,y).
In particular \Phi is continuous.
Lower bound. Since \mathrm{slice}(gy)^{-1} is L-Lipschitz,
d(\mathrm{slice}(gy)(x), \mathrm{slice}(gy)(y)) \ge \tfrac1L d(x,y). Hence
d(\Phi x, \Phi y) \;\ge\; d\bigl(\mathrm{slice}(g y)(x), \mathrm{slice}(g y)(y)\bigr) - d\bigl(\mathrm{slice}(g x)(x), \mathrm{slice}(g y)(x)\bigr) \;\ge\; \Bigl(\tfrac1L - L\,L_g\Bigr)\, d(x,y),
and \tfrac1L - L L_g = \tfrac{1 - L^2 L_g}{L} > 0. In particular \Phi is
injective.
Surjectivity (Banach fixed point). We may assume X \ne \emptyset (the empty case
was dispatched in 9.1). Fix a target \tau \in T and consider
\Psi(x) := \mathrm{slice}(g(x))^{-1}(\tau), a self-map of X. It is a contraction:
d(\Psi x, \Psi y) = d\bigl(\mathrm{slice}(gx)^{-1}\tau,\, \mathrm{slice}(gy)^{-1}\tau\bigr) \le L\, d\bigl(\tau,\, \mathrm{slice}(gx)\bigl(\mathrm{slice}(gy)^{-1} \tau\bigr)\bigr)
(rewrite \tau = \mathrm{slice}(gy)\bigl(\mathrm{slice}(gy)^{-1}\tau\bigr) and apply
the L-Lipschitz map \mathrm{slice}(gx)^{-1}), and the remaining distance is
d(\mathrm{slice}(gy)(z), \mathrm{slice}(gx)(z)) at the point
z := \mathrm{slice}(gy)^{-1}\tau, which is
\le L\,\|gx - gy\| \le L\,L_g\,d(x,y). Altogether
d(\Psi x, \Psi y) \le L^2 L_g\, d(x,y) with L^2 L_g < 1. The compact metric space
X is complete, so \Psi has a fixed point x^\ast:
\mathrm{slice}(g(x^\ast))^{-1}(\tau) = x^\ast, i.e. \Phi(x^\ast) = \tau.
So \Phi is a continuous bijection from a compact space to a Hausdorff (metric)
space, hence a homeomorphism. The Lipschitz bound for \Phi^{-1} follows from the
lower bound: d(\Phi^{-1}a, \Phi^{-1}b) \le \tfrac{L}{1 - L^2 L_g}\, d(a,b).
\blacksquare
Setting
L' \;:=\; L(1 + L_g) \;+\; \frac{L}{1 - L^2 L_g},
a single constant independent of (t,p), every slice \mathrm{Slice}(t,p) := \Phi
(for the parameters (t,p)) and its inverse is L'-Lipschitz. Together with the
properties of u from 9.4 and the reduction 9.1, this proves Theorem B.
\blacksquare
In Lean, surjectivity via the Banach fixed point and the assembled slice homeomorphism are:
open scoped NNReal Topology
namespace Submission
namespace FamiliesOfMapsB01
variable {X T P : Type*} [MetricSpace X] [MetricSpace T] [PseudoMetricSpace P]
/-
**Surjectivity of the perturbed slice** via the Banach fixed-point theorem.
-/
lemma slice_surjective
[CompleteSpace X] [Nonempty X]
(slc : P → (X ≃ₜ T)) (L Lg : ℝ≥0)
(hslcInv : ∀ p, LipschitzWith L (slc p).symm)
(hjoint : ∀ (x : X) (p p' : P), dist (slc p x) (slc p' x) ≤ (L : ℝ) * dist p p')
(g : X → P) (hg : LipschitzWith Lg g)
(hsmall : (L : ℝ) * L * Lg < 1) :
Function.Surjective (fun x => slc (g x) x) := X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompleteSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1⊢ Function.Surjective fun x => (slc (g x)) x
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompleteSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1τ:T⊢ ∃ a, (fun x => (slc (g x)) x) a = τ
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompleteSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1τ:TΨ:X → X := fun x => (slc (g x)).symm τ⊢ ∃ a, (fun x => (slc (g x)) x) a = τ;
have h_fixed_point : ∃ x, Ψ x = x := X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompleteSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1⊢ Function.Surjective fun x => (slc (g x)) x
have h_contractive : ContractingWith (L * L * Lg) Ψ := X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompleteSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1⊢ Function.Surjective fun x => (slc (g x)) x
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompleteSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1τ:TΨ:X → X := fun x => (slc (g x)).symm τ⊢ LipschitzWith (L * L * Lg) Ψ;
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompleteSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:∀ (x y : X), dist (g x) (g y) ≤ ↑Lg * dist x yhsmall:↑L * ↑L * ↑Lg < 1τ:TΨ:X → X := fun x => (slc (g x)).symm τ⊢ ∀ (x y : X), dist (Ψ x) (Ψ y) ≤ ↑(L * L * Lg) * dist x y;
intro x X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompleteSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:∀ (x y : X), dist (g x) (g y) ≤ ↑Lg * dist x yhsmall:↑L * ↑L * ↑Lg < 1τ:TΨ:X → X := fun x => (slc (g x)).symm τx:Xy:X⊢ dist (Ψ x) (Ψ y) ≤ ↑(L * L * Lg) * dist x y
have h_dist : dist ((slc (g y)).symm τ) ((slc (g x)).symm τ) ≤ L * dist ((slc (g y)) ((slc (g y)).symm τ)) ((slc (g x)) ((slc (g y)).symm τ)) := X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompleteSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1⊢ Function.Surjective fun x => (slc (g x)) x
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompleteSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:∀ (x y : X), dist (g x) (g y) ≤ ↑Lg * dist x yhsmall:↑L * ↑L * ↑Lg < 1τ:TΨ:X → X := fun x => (slc (g x)).symm τx:Xy:X⊢ dist ((slc (g y)).symm τ) ((slc (g x)).symm τ) =
dist ((slc (g x)).symm ((slc (g y)) ((slc (g y)).symm τ))) ((slc (g x)).symm ((slc (g x)) ((slc (g y)).symm τ)));
All goals completed! 🐙;
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompleteSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:∀ (x y : X), dist (g x) (g y) ≤ ↑Lg * dist x yhsmall:↑L * ↑L * ↑Lg < 1τ:TΨ:X → X := fun x => (slc (g x)).symm τx:Xy:Xh_dist:dist ((slc (g x)).symm τ) ((slc (g y)).symm τ) ≤
↑L * dist ((slc (g y)) ((slc (g y)).symm τ)) ((slc (g x)) ((slc (g y)).symm τ))⊢ dist (Ψ x) (Ψ y) ≤ ↑(L * L * Lg) * dist x y;
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompleteSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:∀ (x y : X), dist (g x) (g y) ≤ ↑Lg * dist x yhsmall:↑L * ↑L * ↑Lg < 1τ:TΨ:X → X := fun x => (slc (g x)).symm τx:Xy:Xh_dist:dist ((slc (g x)).symm τ) ((slc (g y)).symm τ) ≤
↑L * dist ((slc (g y)) ((slc (g y)).symm τ)) ((slc (g x)) ((slc (g y)).symm τ))⊢ ↑L * dist ((slc (g y)) ((slc (g y)).symm τ)) ((slc (g x)) ((slc (g y)).symm τ)) ≤ ↑(L * L * Lg) * dist x y;
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompleteSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:∀ (x y : X), dist (g x) (g y) ≤ ↑Lg * dist x yhsmall:↑L * ↑L * ↑Lg < 1τ:TΨ:X → X := fun x => (slc (g x)).symm τx:Xy:Xh_dist:dist ((slc (g x)).symm τ) ((slc (g y)).symm τ) ≤
↑L * dist ((slc (g y)) ((slc (g y)).symm τ)) ((slc (g x)) ((slc (g y)).symm τ))⊢ ↑L * (↑L * dist (g y) (g x)) ≤ ↑(L * L * Lg) * dist x y;
simpa [ mul_assoc, dist_comm ] using mul_le_mul_of_nonneg_left ( hg y x ) ( X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompleteSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:∀ (x y : X), dist (g x) (g y) ≤ ↑Lg * dist x yhsmall:↑L * ↑L * ↑Lg < 1τ:TΨ:X → X := fun x => (slc (g x)).symm τx:Xy:Xh_dist:dist ((slc (g x)).symm τ) ((slc (g y)).symm τ) ≤
↑L * dist ((slc (g y)) ((slc (g y)).symm τ)) ((slc (g x)) ((slc (g y)).symm τ))⊢ 0 ≤ ↑L * ↑L All goals completed! 🐙 : ( 0 : ℝ ) ≤ L * L );
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompleteSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1τ:TΨ:X → X := fun x => (slc (g x)).symm τh_contractive:ContractingWith (L * L * Lg) Ψthis:Function.IsFixedPt Ψ (ContractingWith.fixedPoint Ψ h_contractive)⊢ ∃ x, Ψ x = x; All goals completed! 🐙;
All goals completed! 🐙
/-
**The perturbed slice is a bi-Lipschitz homeomorphism.**
-/
lemma exists_slice_homeo
[CompactSpace X] [Nonempty X]
(slc : P → (X ≃ₜ T)) (L Lg : ℝ≥0)
(hslcLip : ∀ p, LipschitzWith L (slc p))
(hslcInv : ∀ p, LipschitzWith L (slc p).symm)
(hjoint : ∀ (x : X) (p p' : P), dist (slc p x) (slc p' x) ≤ (L : ℝ) * dist p p')
(g : X → P) (hg : LipschitzWith Lg g)
(hsmall : (L : ℝ) * L * Lg < 1)
(L' : ℝ≥0)
(hL'lip : (L : ℝ) * (1 + Lg) ≤ L')
(hL'inv : (L : ℝ) ≤ L' * (1 - (L : ℝ) * L * Lg)) :
∃ Φ : X ≃ₜ T, (∀ x, Φ x = slc (g x) x) ∧
LipschitzWith L' (Φ : X → T) ∧ LipschitzWith L' (Φ.symm : T → X) := X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ, (∀ (x : X), Φ x = (slc (g x)) x) ∧ LipschitzWith L' ⇑Φ ∧ LipschitzWith L' ⇑Φ.symm
-- Let `Φ₀ : X → T := fun x => slc (g x) x`. We need to show that `Φ₀` is a bi-Lipschitz homeomorphism.
obtain ⟨Φ₀, hΦ₀⟩ : ∃ (Φ₀ : X ≃ₜ T), (∀ x, Φ₀ x = (slc (g x)) x) := X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ₀, ∀ (x : X), Φ₀ x = (slc (g x)) x
have h_cont : Continuous (fun x => (slc (g x)) x) := X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ₀, ∀ (x : X), Φ₀ x = (slc (g x)) x
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)x:X⊢ ContinuousAt (fun x => (slc (g x)) x) x;
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)x:X⊢ Filter.Tendsto (fun b => dist ((slc (g b)) b) ((fun x => (slc (g x)) x) x)) (𝓝 x) (𝓝 0);
-- By the properties of the Lipschitz functions and the continuity of $g$, we can bound the distance.
have h_bound : ∀ b, dist ((slc (g b)) b) ((slc (g x)) x) ≤ L * dist b x + L * Lg * dist b x := X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ₀, ∀ (x : X), Φ₀ x = (slc (g x)) x
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)x:Xb:X⊢ dist ((slc (g b)) b) ((slc (g x)) x) ≤ ↑L * dist b x + ↑L * ↑Lg * dist b x
have h_bound : dist ((slc (g b)) b) ((slc (g x)) x) ≤ dist ((slc (g b)) b) ((slc (g b)) x) + dist ((slc (g b)) x) ((slc (g x)) x) := X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ₀, ∀ (x : X), Φ₀ x = (slc (g x)) x
All goals completed! 🐙;
exact h_bound.trans ( add_le_add ( hslcLip _ |> LipschitzWith.dist_le_mul |> fun h => h _ _ ) ( hjoint _ _ _ |> le_trans <| mul_le_mul_of_nonneg_left ( hg.dist_le_mul _ _ ) <| X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)x:Xb:Xh_bound:dist ((slc (g b)) b) ((slc (g x)) x) ≤ dist ((slc (g b)) b) ((slc (g b)) x) + dist ((slc (g b)) x) ((slc (g x)) x)⊢ 0 ≤ ↑L All goals completed! 🐙 ) ) |> le_trans <| X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)x:Xb:Xh_bound:dist ((slc (g b)) b) ((slc (g x)) x) ≤ dist ((slc (g b)) b) ((slc (g b)) x) + dist ((slc (g b)) x) ((slc (g x)) x)⊢ ↑L * dist b x + ↑L * (↑Lg * dist b x) ≤ ↑L * dist b x + ↑L * ↑Lg * dist b x All goals completed! 🐙 ;
exact squeeze_zero ( fun _ => dist_nonneg ) h_bound ( Continuous.tendsto' ( X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)x:Xh_bound:∀ (b : X), dist ((slc (g b)) b) ((slc (g x)) x) ≤ ↑L * dist b x + ↑L * ↑Lg * dist b x⊢ Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, _] fun t => ↑L * dist t x + ↑L * ↑Lg * dist t x All goals completed! 🐙 ) _ _ ( X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)x:Xh_bound:∀ (b : X), dist ((slc (g b)) b) ((slc (g x)) x) ≤ ↑L * dist b x + ↑L * ↑Lg * dist b x⊢ ↑L * dist x x + ↑L * ↑Lg * dist x x = 0 All goals completed! 🐙 ) );
have h_inj : Function.Injective (fun x => (slc (g x)) x) := X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ₀, ∀ (x : X), Φ₀ x = (slc (g x)) x
have h_lower_bound : ∀ x y : X, dist ((slc (g x)) x) ((slc (g y)) y) ≥ ((1 / L : ℝ) - L * Lg) * dist x y := X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ₀, ∀ (x : X), Φ₀ x = (slc (g x)) x
intro x X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xx:Xy:X⊢ dist ((slc (g x)) x) ((slc (g y)) y) ≥ (1 / ↑L - ↑L * ↑Lg) * dist x y
have h_lower_bound_step : dist ((slc (g y)) x) ((slc (g y)) y) ≥ (1 / L : ℝ) * dist x y := X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ₀, ∀ (x : X), Φ₀ x = (slc (g x)) x
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xx:Xy:Xthis:LipschitzWith L ⇑(slc (g y)).symm⊢ dist ((slc (g y)) x) ((slc (g y)) y) ≥ 1 / ↑L * dist x y;
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xx:Xy:Xthis✝:LipschitzWith L ⇑(slc (g y)).symmthis:dist ((slc (g y)).symm ((slc (g y)) x)) ((slc (g y)).symm ((slc (g y)) y)) ≤ ↑L * dist ((slc (g y)) x) ((slc (g y)) y)⊢ dist ((slc (g y)) x) ((slc (g y)) y) ≥ 1 / ↑L * dist x y ; X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xx:Xy:Xthis:dist x y ≤ ↑L * dist ((slc (g y)) x) ((slc (g y)) y)⊢ (↑L)⁻¹ * dist x y ≤ dist ((slc (g y)) x) ((slc (g y)) y) ;
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xx:Xy:Xthis:dist x y ≤ ↑L * dist ((slc (g y)) x) ((slc (g y)) y)hL:L = 0⊢ (↑L)⁻¹ * dist x y ≤ dist ((slc (g y)) x) ((slc (g y)) y)X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xx:Xy:Xthis:dist x y ≤ ↑L * dist ((slc (g y)) x) ((slc (g y)) y)hL:¬L = 0⊢ (↑L)⁻¹ * dist x y ≤ dist ((slc (g y)) x) ((slc (g y)) y) X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xx:Xy:Xthis:dist x y ≤ ↑L * dist ((slc (g y)) x) ((slc (g y)) y)hL:L = 0⊢ (↑L)⁻¹ * dist x y ≤ dist ((slc (g y)) x) ((slc (g y)) y)X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xx:Xy:Xthis:dist x y ≤ ↑L * dist ((slc (g y)) x) ((slc (g y)) y)hL:¬L = 0⊢ (↑L)⁻¹ * dist x y ≤ dist ((slc (g y)) x) ((slc (g y)) y) X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmg:X → PL':ℝ≥0x:Xy:Xhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ dist p p' * ↑Lhg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xthis:dist x y ≤ ↑L * dist ((slc (g y)) x) ((slc (g y)) y)hL:¬L = 0⊢ dist x y * (↑L)⁻¹ ≤ dist ((slc (g y)) x) ((slc (g y)) y);
rwa [ ← div_eq_mul_inv, div_le_iff₀' ( X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmg:X → PL':ℝ≥0x:Xy:Xhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ dist p p' * ↑Lhg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xthis:dist x y ≤ ↑L * dist ((slc (g y)) x) ((slc (g y)) y)hL:¬L = 0⊢ 0 < ↑L All goals completed! 🐙 ) X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmg:X → PL':ℝ≥0x:Xy:Xhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ dist p p' * ↑Lhg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xthis:dist x y ≤ ↑L * dist ((slc (g y)) x) ((slc (g y)) y)hL:¬L = 0⊢ dist x y ≤ ↑L * dist ((slc (g y)) x) ((slc (g y)) y);
have h_lower_bound_step2 : dist ((slc (g x)) x) ((slc (g y)) x) ≤ L * Lg * dist x y := X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ₀, ∀ (x : X), Φ₀ x = (slc (g x)) x
exact le_trans ( hjoint x _ _ ) ( X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xx:Xy:Xh_lower_bound_step:dist ((slc (g y)) x) ((slc (g y)) y) ≥ 1 / ↑L * dist x y⊢ ↑L * dist (g x) (g y) ≤ ↑L * ↑Lg * dist x y All goals completed! 🐙 );
All goals completed! 🐙;
intro x X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xh_lower_bound:∀ (x y : X), dist ((slc (g x)) x) ((slc (g y)) y) ≥ (1 / ↑L - ↑L * ↑Lg) * dist x yx:Xy:X⊢ (fun x => (slc (g x)) x) x = (fun x => (slc (g x)) x) y → x = y X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xh_lower_bound:∀ (x y : X), dist ((slc (g x)) x) ((slc (g y)) y) ≥ (1 / ↑L - ↑L * ↑Lg) * dist x yx:Xy:Xhxy:(fun x => (slc (g x)) x) x = (fun x => (slc (g x)) x) y⊢ x = y
have h_dist : dist x y = 0 := X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ₀, ∀ (x : X), Φ₀ x = (slc (g x)) x
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xh_lower_bound:∀ (x y : X), dist ((slc (g x)) x) ((slc (g y)) y) ≥ (1 / ↑L - ↑L * ↑Lg) * dist x yx:Xy:Xhxy:(fun x => (slc (g x)) x) x = (fun x => (slc (g x)) x) yhL:L = 0⊢ dist x y = 0X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xh_lower_bound:∀ (x y : X), dist ((slc (g x)) x) ((slc (g y)) y) ≥ (1 / ↑L - ↑L * ↑Lg) * dist x yx:Xy:Xhxy:(fun x => (slc (g x)) x) x = (fun x => (slc (g x)) x) yhL:¬L = 0⊢ dist x y = 0 X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xh_lower_bound:∀ (x y : X), dist ((slc (g x)) x) ((slc (g y)) y) ≥ (1 / ↑L - ↑L * ↑Lg) * dist x yx:Xy:Xhxy:(fun x => (slc (g x)) x) x = (fun x => (slc (g x)) x) yhL:L = 0⊢ dist x y = 0X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xh_lower_bound:∀ (x y : X), dist ((slc (g x)) x) ((slc (g y)) y) ≥ (1 / ↑L - ↑L * ↑Lg) * dist x yx:Xy:Xhxy:(fun x => (slc (g x)) x) x = (fun x => (slc (g x)) x) yhL:¬L = 0⊢ dist x y = 0 X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xx:Xy:Xh_lower_bound:∀ (x y : X), ((↑L)⁻¹ - ↑L * ↑Lg) * dist x y ≤ dist ((slc (g x)) x) ((slc (g y)) y)hxy:(slc (g x)) x = (slc (g y)) yhL:¬L = 0⊢ x = y;
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0g:X → PL':ℝ≥0x:Xy:XhslcLip:∀ (p : P) (x y : X), x = yhslcInv:∀ (p : P) (x y : T), x = yhjoint:∀ (x : X) (p p' : P), (slc p) x = (slc p') xhg:LipschitzWith Lg gh_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xhxy:(slc (g x)) x = (slc (g y)) yhL:L = 0⊢ x = y All goals completed! 🐙;
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xx:Xy:Xh_lower_bound:∀ (x y : X), ((↑L)⁻¹ - ↑L * ↑Lg) * dist x y ≤ dist ((slc (g x)) x) ((slc (g y)) y)hxy:(slc (g x)) x = (slc (g y)) yhL:¬L = 0⊢ x = y X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xx:Xy:Xhxy:(slc (g x)) x = (slc (g y)) yhL:¬L = 0h_lower_bound:x ≠ y⊢ ∃ x y, dist ((slc (g x)) x) ((slc (g y)) y) < ((↑L)⁻¹ - ↑L * ↑Lg) * dist x y;
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xx:Xy:Xhxy:(slc (g x)) x = (slc (g y)) yhL:¬L = 0h_lower_bound:x ≠ y⊢ dist ((slc (g x)) x) ((slc (g y)) y) < ((↑L)⁻¹ - ↑L * ↑Lg) * dist x y ; X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xx:Xy:Xhxy:(slc (g x)) x = (slc (g y)) yhL:¬L = 0h_lower_bound:¬x = y⊢ ↑L * ↑Lg < (↑L)⁻¹;
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xx:Xy:Xhxy:(slc (g x)) x = (slc (g y)) yhL:¬L = 0h_lower_bound:¬x = y⊢ ↑L * ↑Lg * ↑L < 1X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xx:Xy:Xhxy:(slc (g x)) x = (slc (g y)) yhL:¬L = 0h_lower_bound:¬x = y⊢ 0 < ↑L X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xx:Xy:Xhxy:(slc (g x)) x = (slc (g y)) yhL:¬L = 0h_lower_bound:¬x = y⊢ ↑L * ↑Lg * ↑L < 1X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xx:Xy:Xhxy:(slc (g x)) x = (slc (g y)) yhL:¬L = 0h_lower_bound:¬x = y⊢ 0 < ↑L first | All goals completed! 🐙 | All goals completed! 🐙 ;
All goals completed! 🐙;
have h_surj : Function.Surjective (fun x => (slc (g x)) x) := X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ₀, ∀ (x : X), Φ₀ x = (slc (g x)) x
All goals completed! 🐙;
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xh_inj:Function.Injective fun x => (slc (g x)) xh_surj:Function.Surjective fun x => (slc (g x)) x⊢ X ≃ₜ TX:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xh_inj:Function.Injective fun x => (slc (g x)) xh_surj:Function.Surjective fun x => (slc (g x)) x⊢ ∀ (x : X), ?refine'_1 x = (slc (g x)) x;
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xh_inj:Function.Injective fun x => (slc (g x)) xh_surj:Function.Surjective fun x => (slc (g x)) x⊢ X ≃ TX:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xh_inj:Function.Injective fun x => (slc (g x)) xh_surj:Function.Surjective fun x => (slc (g x)) x⊢ autoParam
(Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
(Equiv.toFun ?refine'_1.toEquiv))
Homeomorph.continuous_toFun._autoParamX:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xh_inj:Function.Injective fun x => (slc (g x)) xh_surj:Function.Surjective fun x => (slc (g x)) x⊢ autoParam
(Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
(Equiv.invFun ?refine'_1.toEquiv))
Homeomorph.continuous_invFun._autoParamX:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xh_inj:Function.Injective fun x => (slc (g x)) xh_surj:Function.Surjective fun x => (slc (g x)) x⊢ ∀ (x : X),
{ toEquiv := ?refine'_1.toEquiv, continuous_toFun := ?refine'_1.continuous_toFun,
continuous_invFun := ?refine'_1.continuous_invFun }
x =
(slc (g x)) x;
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xh_inj:Function.Injective fun x => (slc (g x)) xh_surj:Function.Surjective fun x => (slc (g x)) x⊢ autoParam
(Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
(Equiv.ofBijective (fun x => (slc (g x)) x) ⋯).toFun)
Homeomorph.continuous_toFun._autoParamX:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xh_inj:Function.Injective fun x => (slc (g x)) xh_surj:Function.Surjective fun x => (slc (g x)) x⊢ autoParam
(Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
(Equiv.ofBijective (fun x => (slc (g x)) x) ⋯).invFun)
Homeomorph.continuous_invFun._autoParamX:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xh_inj:Function.Injective fun x => (slc (g x)) xh_surj:Function.Surjective fun x => (slc (g x)) x⊢ ∀ (x : X),
{ toEquiv := Equiv.ofBijective (fun x => (slc (g x)) x) ⋯, continuous_toFun := ?refine'_1.continuous_toFun,
continuous_invFun := ?refine'_1.continuous_invFun }
x =
(slc (g x)) x;
all_goals All goals completed! 🐙;
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xh_inj:Function.Injective fun x => (slc (g x)) xh_surj:Function.Surjective fun x => (slc (g x)) x⊢ autoParam
(Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) x)
Homeomorph.continuous_toFun._autoParam All goals completed! 🐙;
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)h_cont:Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
fun x => (slc (g x)) xh_inj:Function.Injective fun x => (slc (g x)) xh_surj:Function.Surjective fun x => (slc (g x)) x⊢ autoParam
(Continuous[PseudoMetricSpace.toUniformSpace.toTopologicalSpace, PseudoMetricSpace.toUniformSpace.toTopologicalSpace]
⇑(Equiv.ofBijective (fun x => (slc (g x)) x) ⋯).symm)
Homeomorph.continuous_invFun._autoParam All goals completed! 🐙
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) x⊢ LipschitzWith L' ⇑Φ₀X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) x⊢ LipschitzWith L' ⇑Φ₀.symm;
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) x⊢ LipschitzWith L' ⇑Φ₀ X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) x⊢ ∀ (x y : X), dist (Φ₀ x) (Φ₀ y) ≤ ↑L' * dist x y;
intro x X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Xy:X⊢ dist (Φ₀ x) (Φ₀ y) ≤ ↑L' * dist x y
have h_dist : dist (slc (g x) x) (slc (g y) y) ≤ L * dist x y + L * Lg * dist x y := X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ, (∀ (x : X), Φ x = (slc (g x)) x) ∧ LipschitzWith L' ⇑Φ ∧ LipschitzWith L' ⇑Φ.symm
have h_dist : dist (slc (g x) x) (slc (g y) y) ≤ dist (slc (g x) x) (slc (g x) y) + dist (slc (g x) y) (slc (g y) y) := X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ, (∀ (x : X), Φ x = (slc (g x)) x) ∧ LipschitzWith L' ⇑Φ ∧ LipschitzWith L' ⇑Φ.symm
All goals completed! 🐙;
exact h_dist.trans ( add_le_add ( hslcLip _ |> fun h => h.dist_le_mul _ _ ) ( hjoint _ _ _ |> le_trans <| mul_le_mul_of_nonneg_left ( hg.dist_le_mul _ _ ) <| NNReal.coe_nonneg _ ) ) |> le_trans <| X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Xy:Xh_dist:dist ((slc (g x)) x) ((slc (g y)) y) ≤ dist ((slc (g x)) x) ((slc (g x)) y) + dist ((slc (g x)) y) ((slc (g y)) y)⊢ ↑L * dist x y + ↑L * (↑Lg * dist x y) ≤ ↑L * dist x y + ↑L * ↑Lg * dist x y X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Xy:Xh_dist:dist ((slc (g x)) x) ((slc (g y)) y) ≤ dist ((slc (g x)) x) ((slc (g x)) y) + dist ((slc (g x)) y) ((slc (g y)) y)⊢ ↑L * dist x y + ↑L * dist x y * ↑Lg ≤ ↑L * dist x y + ↑L * dist x y * ↑Lg; All goals completed! 🐙;
simpa only [ hΦ₀ ] using h_dist.trans ( X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Xy:Xh_dist:dist ((slc (g x)) x) ((slc (g y)) y) ≤ ↑L * dist x y + ↑L * ↑Lg * dist x y⊢ ↑L * dist x y + ↑L * ↑Lg * dist x y ≤ ↑L' * dist x y All goals completed! 🐙 );
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) x⊢ LipschitzWith L' ⇑Φ₀.symm -- For any `a b : T`, set `x := Φ.symm a`, `y := Φ.symm b` (so `Φ x = a`, `Φ y = b`). The lower bound gives `dist a b ≥ ((1 - L*L*Lg)/L)*dist x y`, hence `dist (Φ.symm a) (Φ.symm b) = dist x y ≤ (L/(1 - L*L*Lg))*dist a b ≤ L'*dist a b` (from `hL'inv` and `1 - L*L*Lg > 0`).
have h_lower_bound : ∀ x y : X, dist (Φ₀ x) (Φ₀ y) ≥ ((1 - L * L * Lg) / L) * dist x y := X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ, (∀ (x : X), Φ x = (slc (g x)) x) ∧ LipschitzWith L' ⇑Φ ∧ LipschitzWith L' ⇑Φ.symm
intro x X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Xy:X⊢ dist (Φ₀ x) (Φ₀ y) ≥ (1 - ↑L * ↑L * ↑Lg) / ↑L * dist x y;
have h_lower_bound : dist (slc (g y) x) (slc (g y) y) ≥ (1 / L : ℝ) * dist x y := X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ, (∀ (x : X), Φ x = (slc (g x)) x) ∧ LipschitzWith L' ⇑Φ ∧ LipschitzWith L' ⇑Φ.symm
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Xy:XhL:L = 0⊢ dist ((slc (g y)) x) ((slc (g y)) y) ≥ 1 / ↑L * dist x yX:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Xy:XhL:¬L = 0⊢ dist ((slc (g y)) x) ((slc (g y)) y) ≥ 1 / ↑L * dist x y X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Xy:XhL:L = 0⊢ dist ((slc (g y)) x) ((slc (g y)) y) ≥ 1 / ↑L * dist x yX:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Xy:XhL:¬L = 0⊢ dist ((slc (g y)) x) ((slc (g y)) y) ≥ 1 / ↑L * dist x y X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Xy:XhL:¬L = 0⊢ (↑L)⁻¹ * dist x y ≤ dist ((slc (g y)) x) ((slc (g y)) y);
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Xy:XhL:¬L = 0⊢ dist x y ≤ ↑L * dist ((slc (g y)) x) ((slc (g y)) y);
All goals completed! 🐙;
have h_lower_bound : dist (slc (g x) x) (slc (g y) x) ≤ L * Lg * dist x y := X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ, (∀ (x : X), Φ x = (slc (g x)) x) ∧ LipschitzWith L' ⇑Φ ∧ LipschitzWith L' ⇑Φ.symm
exact le_trans ( hjoint x _ _ ) ( X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Xy:Xh_lower_bound:dist ((slc (g y)) x) ((slc (g y)) y) ≥ 1 / ↑L * dist x y⊢ ↑L * dist (g x) (g y) ≤ ↑L * ↑Lg * dist x y All goals completed! 🐙 );
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Xy:Xh_lower_bound✝:dist ((slc (g y)) x) ((slc (g y)) y) ≥ 1 / ↑L * dist x yh_lower_bound:dist ((slc (g x)) x) ((slc (g y)) x) ≤ ↑L * ↑Lg * dist x yhL:L = 0⊢ dist (Φ₀ x) (Φ₀ y) ≥ (1 - ↑L * ↑L * ↑Lg) / ↑L * dist x yX:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Xy:Xh_lower_bound✝:dist ((slc (g y)) x) ((slc (g y)) y) ≥ 1 / ↑L * dist x yh_lower_bound:dist ((slc (g x)) x) ((slc (g y)) x) ≤ ↑L * ↑Lg * dist x yhL:¬L = 0⊢ dist (Φ₀ x) (Φ₀ y) ≥ (1 - ↑L * ↑L * ↑Lg) / ↑L * dist x y X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Xy:Xh_lower_bound✝:dist ((slc (g y)) x) ((slc (g y)) y) ≥ 1 / ↑L * dist x yh_lower_bound:dist ((slc (g x)) x) ((slc (g y)) x) ≤ ↑L * ↑Lg * dist x yhL:L = 0⊢ dist (Φ₀ x) (Φ₀ y) ≥ (1 - ↑L * ↑L * ↑Lg) / ↑L * dist x yX:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Xy:Xh_lower_bound✝:dist ((slc (g y)) x) ((slc (g y)) y) ≥ 1 / ↑L * dist x yh_lower_bound:dist ((slc (g x)) x) ((slc (g y)) x) ≤ ↑L * ↑Lg * dist x yhL:¬L = 0⊢ dist (Φ₀ x) (Φ₀ y) ≥ (1 - ↑L * ↑L * ↑Lg) / ↑L * dist x y X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg gL':ℝ≥0Φ₀:X ≃ₜ Tx:Xy:Xhsmall:↑L * (↑L * ↑Lg) < 1hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * (↑L * ↑Lg))hΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xh_lower_bound✝:(↑L)⁻¹ * dist x y ≤ dist ((slc (g y)) x) ((slc (g y)) y)h_lower_bound:dist ((slc (g x)) x) ((slc (g y)) x) ≤ ↑L * (↑Lg * dist x y)hL:¬L = 0⊢ (↑L)⁻¹ * ((1 - ↑L * (↑L * ↑Lg)) * dist x y) ≤ dist ((slc (g x)) x) ((slc (g y)) y);
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg gL':ℝ≥0Φ₀:X ≃ₜ Tx:Xy:Xhsmall:↑L * (↑L * ↑Lg) < 1hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * (↑L * ↑Lg))hΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xh_lower_bound✝:(↑L)⁻¹ * dist x y ≤ dist ((slc (g y)) x) ((slc (g y)) y)h_lower_bound:dist ((slc (g x)) x) ((slc (g y)) x) ≤ ↑L * (↑Lg * dist x y)hL:¬L = 0this:dist ((slc (g y)) x) ((slc (g y)) y) ≤ dist ((slc (g x)) x) ((slc (g y)) x) + dist ((slc (g x)) x) ((slc (g y)) y)⊢ (↑L)⁻¹ * ((1 - ↑L * (↑L * ↑Lg)) * dist x y) ≤ dist ((slc (g x)) x) ((slc (g y)) y) ; X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmg:X → PL':ℝ≥0Φ₀:X ≃ₜ Tx:Xy:Xhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ dist p p' * ↑Lhg:LipschitzWith Lg ghsmall:↑L * (↑L * ↑Lg) < 1hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * (↑L * ↑Lg))hΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xh_lower_bound✝:dist x y * (↑L)⁻¹ ≤ dist ((slc (g y)) x) ((slc (g y)) y)h_lower_bound:dist ((slc (g x)) x) ((slc (g y)) x) ≤ ↑L * (dist x y * ↑Lg)hL:¬L = 0this:dist ((slc (g y)) x) ((slc (g y)) y) ≤ dist ((slc (g x)) x) ((slc (g y)) x) + dist ((slc (g x)) x) ((slc (g y)) y)⊢ (↑L)⁻¹ * (dist x y * (1 - ↑L * (↑L * ↑Lg))) ≤ dist ((slc (g x)) x) ((slc (g y)) y);
nlinarith [ show 0 < ( L : ℝ ) X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ, (∀ (x : X), Φ x = (slc (g x)) x) ∧ LipschitzWith L' ⇑Φ ∧ LipschitzWith L' ⇑Φ.symm All goals completed! 🐙, inv_mul_cancel_left₀ ( show ( L : ℝ ) ≠ 0 X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ, (∀ (x : X), Φ x = (slc (g x)) x) ∧ LipschitzWith L' ⇑Φ ∧ LipschitzWith L' ⇑Φ.symm All goals completed! 🐙 ) ( dist x y ) ];
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xh_lower_bound:∀ (x y : X), dist (Φ₀ x) (Φ₀ y) ≥ (1 - ↑L * ↑L * ↑Lg) / ↑L * dist x y⊢ ∀ (x y : T), dist (Φ₀.symm x) (Φ₀.symm y) ≤ ↑L' * dist x y;
intro x X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xh_lower_bound:∀ (x y : X), dist (Φ₀ x) (Φ₀ y) ≥ (1 - ↑L * ↑L * ↑Lg) / ↑L * dist x yx:Ty:T⊢ dist (Φ₀.symm x) (Φ₀.symm y) ≤ ↑L' * dist x y; X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Ty:Th_lower_bound:dist (Φ₀ (Φ₀.symm x)) (Φ₀ (Φ₀.symm y)) ≥ (1 - ↑L * ↑L * ↑Lg) / ↑L * dist (Φ₀.symm x) (Φ₀.symm y)⊢ dist (Φ₀.symm x) (Φ₀.symm y) ≤ ↑L' * dist x y ; X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Ty:Th_lower_bound:(1 - ↑L * ↑L * ↑Lg) * dist (Φ₀.symm x) (Φ₀.symm y) / ↑L ≤
dist ((slc (g (Φ₀.symm x))) (Φ₀.symm x)) ((slc (g (Φ₀.symm y))) (Φ₀.symm y))⊢ dist (Φ₀.symm x) (Φ₀.symm y) ≤ ↑L' * dist x y ;
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Ty:Th_lower_bound:(1 - ↑L * ↑L * ↑Lg) * dist (Φ₀.symm x) (Φ₀.symm y) / ↑L ≤
dist ((slc (g (Φ₀.symm x))) (Φ₀.symm x)) ((slc (g (Φ₀.symm y))) (Φ₀.symm y))hL:L = 0⊢ dist (Φ₀.symm x) (Φ₀.symm y) ≤ ↑L' * dist x yX:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Ty:Th_lower_bound:(1 - ↑L * ↑L * ↑Lg) * dist (Φ₀.symm x) (Φ₀.symm y) / ↑L ≤
dist ((slc (g (Φ₀.symm x))) (Φ₀.symm x)) ((slc (g (Φ₀.symm y))) (Φ₀.symm y))hL:¬L = 0⊢ dist (Φ₀.symm x) (Φ₀.symm y) ≤ ↑L' * dist x y X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Ty:Th_lower_bound:(1 - ↑L * ↑L * ↑Lg) * dist (Φ₀.symm x) (Φ₀.symm y) / ↑L ≤
dist ((slc (g (Φ₀.symm x))) (Φ₀.symm x)) ((slc (g (Φ₀.symm y))) (Φ₀.symm y))hL:L = 0⊢ dist (Φ₀.symm x) (Φ₀.symm y) ≤ ↑L' * dist x yX:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)Φ₀:X ≃ₜ ThΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xx:Ty:Th_lower_bound:(1 - ↑L * ↑L * ↑Lg) * dist (Φ₀.symm x) (Φ₀.symm y) / ↑L ≤
dist ((slc (g (Φ₀.symm x))) (Φ₀.symm x)) ((slc (g (Φ₀.symm y))) (Φ₀.symm y))hL:¬L = 0⊢ dist (Φ₀.symm x) (Φ₀.symm y) ≤ ↑L' * dist x y X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmg:X → PL':ℝ≥0Φ₀:X ≃ₜ Tx:Ty:Thjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ dist p p' * ↑Lhg:LipschitzWith Lg ghsmall:↑L * (↑L * ↑Lg) < 1hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * (↑L * ↑Lg))hΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xh_lower_bound:(1 - ↑L * (↑L * ↑Lg)) * dist (Φ₀.symm x) (Φ₀.symm y) / ↑L ≤
dist ((slc (g (Φ₀.symm x))) (Φ₀.symm x)) ((slc (g (Φ₀.symm y))) (Φ₀.symm y))hL:¬L = 0⊢ dist (Φ₀.symm x) (Φ₀.symm y) ≤ dist x y * ↑L';
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0g:X → PL':ℝ≥0Φ₀:X ≃ₜ Tx:Ty:ThslcLip:∀ (p : P) (x y : X), x = yhslcInv:∀ (p : P) (x y : T), x = yhjoint:∀ (x : X) (p p' : P), (slc p) x = (slc p') xhg:LipschitzWith Lg ghΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xhL:L = 0⊢ dist (Φ₀.symm x) (Φ₀.symm y) ≤ dist x y * ↑L' X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0g:X → PL':ℝ≥0Φ₀:X ≃ₜ Tx:ThslcLip:∀ (p : P) (x y : X), x = yhslcInv:∀ (p : P) (x y : T), x = yhjoint:∀ (x : X) (p p' : P), (slc p) x = (slc p') xhg:LipschitzWith Lg ghΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xhL:L = 0⊢ dist (Φ₀.symm x) (Φ₀.symm x) ≤ dist x x * ↑L' ; All goals completed! 🐙;
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmg:X → PL':ℝ≥0Φ₀:X ≃ₜ Tx:Ty:Thjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ dist p p' * ↑Lhg:LipschitzWith Lg ghsmall:↑L * (↑L * ↑Lg) < 1hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * (↑L * ↑Lg))hΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xh_lower_bound:(1 - ↑L * (↑L * ↑Lg)) * dist (Φ₀.symm x) (Φ₀.symm y) / ↑L ≤
dist ((slc (g (Φ₀.symm x))) (Φ₀.symm x)) ((slc (g (Φ₀.symm y))) (Φ₀.symm y))hL:¬L = 0⊢ dist (Φ₀.symm x) (Φ₀.symm y) ≤ dist x y * ↑L' X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmg:X → PL':ℝ≥0Φ₀:X ≃ₜ Tx:Ty:Thjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ dist p p' * ↑Lhg:LipschitzWith Lg ghsmall:↑L * (↑L * ↑Lg) < 1hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * (↑L * ↑Lg))hΦ₀:∀ (x : X), Φ₀ x = (slc (g x)) xh_lower_bound:(1 - ↑L * (↑L * ↑Lg)) * dist (Φ₀.symm x) (Φ₀.symm y) ≤
dist ((slc (g (Φ₀.symm x))) (Φ₀.symm x)) ((slc (g (Φ₀.symm y))) (Φ₀.symm y)) * ↑LhL:¬L = 0⊢ dist (Φ₀.symm x) (Φ₀.symm y) ≤ dist x y * ↑L';
X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmg:X → PL':ℝ≥0Φ₀:X ≃ₜ Tx:Ty:Thjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ dist p p' * ↑Lhg:LipschitzWith Lg ghsmall:↑L * (↑L * ↑Lg) < 1hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * (↑L * ↑Lg))h_lower_bound:(1 - ↑L * (↑L * ↑Lg)) * dist (Φ₀.symm x) (Φ₀.symm y) ≤ dist x y * ↑LhL:¬L = 0⊢ dist (Φ₀.symm x) (Φ₀.symm y) ≤ dist x y * ↑L';
nlinarith [ show 0 < ( L : ℝ ) X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ, (∀ (x : X), Φ x = (slc (g x)) x) ∧ LipschitzWith L' ⇑Φ ∧ LipschitzWith L' ⇑Φ.symm All goals completed! 🐙, show 0 ≤ dist x y X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ, (∀ (x : X), Φ x = (slc (g x)) x) ∧ LipschitzWith L' ⇑Φ ∧ LipschitzWith L' ⇑Φ.symm All goals completed! 🐙, show 0 ≤ dist ( Φ₀.symm x ) ( Φ₀.symm y ) X:Type u_1T:Type u_2P:Type u_3inst✝⁴:MetricSpace Xinst✝³:MetricSpace Tinst✝²:PseudoMetricSpace Pinst✝¹:CompactSpace Xinst✝:Nonempty Xslc:P → X ≃ₜ TL:ℝ≥0Lg:ℝ≥0hslcLip:∀ (p : P), LipschitzWith L ⇑(slc p)hslcInv:∀ (p : P), LipschitzWith L ⇑(slc p).symmhjoint:∀ (x : X) (p p' : P), dist ((slc p) x) ((slc p') x) ≤ ↑L * dist p p'g:X → Phg:LipschitzWith Lg ghsmall:↑L * ↑L * ↑Lg < 1L':ℝ≥0hL'lip:↑L * (1 + ↑Lg) ≤ ↑L'hL'inv:↑L ≤ ↑L' * (1 - ↑L * ↑L * ↑Lg)⊢ ∃ Φ, (∀ (x : X), Φ x = (slc (g x)) x) ∧ LipschitzWith L' ⇑Φ ∧ LipschitzWith L' ⇑Φ.symm All goals completed! 🐙 ]
end FamiliesOfMapsB01
end Submission
(The Lean statement takes the target constant L' as an input constrained by
L(1 + L_g) \le L' and L \le L'(1 - L^2 L_g); the choice of L'
displayed above is made at the call site in the
main construction.)