Zulip Chat Archive

Stream: Is there code for X?

Topic: If X and Y are homeomorphic and X is complete, then Y is


Michael Stoll (May 31 2025 at 20:54):

What is the best way of obtaining the following?

import Mathlib

example {X Y : Type*} [TopologicalSpace X] [TopologicalSpace Y] [UniformSpace X] [CompleteSpace X]
    [UniformSpace Y] {f : X  Y} (h : IsHomeomorph f) :
    CompleteSpace Y := by
  sorry

It doesn't look like there are a lot of results in Mathlib that allow to transport topological properties via homeomorphisms...

Ruben Van de Velde (May 31 2025 at 20:55):

How about with a map?

Michael Stoll (May 31 2025 at 20:56):

f is a map ??

Kalle Kytölä (May 31 2025 at 20:57):

Maybe I misunderstand the question, but R\R is complete and homeomorphic to, say (π/2,π/2)(-\pi/2,\pi/2), which is not complete.

Completeness is a metric property (or well, a uniformity property, I guess), so just homeomorphisms don't preserve it. (Isometries would of course preserve it.)

Michael Stoll (May 31 2025 at 20:58):

OK; maybe one needs more properties. In my use case, I have two equivalent absolute values on the real numbers (one is the standard one), and I want to show that R\R is complete w.r.t. the other one.

Michael Stoll (May 31 2025 at 20:59):

Is it enough if f maps the uniformities to each other?

Michael Stoll (May 31 2025 at 21:00):

How would I write this down?

Michael Stoll (May 31 2025 at 21:08):

Is the following reasonable?

lemma completeSpace_of_comap_uniformity {X Y : Type*} [TopologicalSpace X] [TopologicalSpace Y]
    [UniformSpace X] [CompleteSpace X] [UniformSpace Y] {f : X  Y}
    (h : Filter.comap (Prod.map f f) (uniformity Y) = uniformity X) :
    CompleteSpace Y := by
  sorry

Kalle Kytölä (May 31 2025 at 21:08):

We have docs#IsometryEquiv.completeSpace. It sounds like in your case you don't have an isometry but a bilipschitz map (which also preserves completeness). I don't know how those are called in Mathlib off the top of my head.

Michael Stoll (May 31 2025 at 21:09):

The relation is not linear: one absolute value (= metric) is a power of the other.

Michael Stoll (May 31 2025 at 21:09):

But they certainly induce the same uniformities...

Michael Stoll (May 31 2025 at 21:14):

It seems like I have to use docs#UniformSpace.complete_of_cauchySeq_tendsto and bash through the filters. I'll try that tomorrow (CEST) unless a better idea has emerged by then.

Kalle Kytölä (May 31 2025 at 21:17):

I don't understand your exact situation, but we also have docs#Cauchy.map. So if your homeomorphism is uniformly continuous (maybe in both directions, depending on what you want), using your mentioned docs#UniformSpace.complete_of_cauchySeq_tendsto may not be too bad. (Also I still don't know if Mathlib has something more direct. Are there any results about homeomorphisms which are uniformly continuous in both directions?)

Junyan Xu (May 31 2025 at 21:20):

I think we only have local uniform continuity provided by abs_pow_sub_pow_le.

Junyan Xu (May 31 2025 at 21:25):

More precisely, uniform_continuous_npow_on_bounded which makes it easy to show that a power of a Cauchy sequence is still Cauchy. But Michael is probably interested in real powers, not just natural powers ...

Junyan Xu (May 31 2025 at 21:53):

HolderWith.uniformContinuous is probably useful but the triangle inequality fails one way or the other so not both X and Y can be PseudoEMetricSpace ...

Aaron Liu (May 31 2025 at 22:29):

Michael Stoll said:

Is the following reasonable?

lemma completeSpace_of_comap_uniformity {X Y : Type*} [TopologicalSpace X] [TopologicalSpace Y]
    [UniformSpace X] [CompleteSpace X] [UniformSpace Y] {f : X  Y}
    (h : Filter.comap (Prod.map f f) (uniformity Y) = uniformity X) :
    CompleteSpace Y := by
  sorry

This is docs#IsUniformInducing.isComplete_range

Matt Diamond (May 31 2025 at 23:29):

@Aaron Liu is it? that gets you to IsComplete (Set.range f), not CompleteSpace Y

I think you might need the additional fact that f is surjective so you can use docs#IsUniformInducing.completeSpace_congr

Matt Diamond (May 31 2025 at 23:32):

though if you also have IsHomeomorph f then you've already got surjectivity

Jireh Loreaux (Jun 01 2025 at 02:59):

Junyan Xu said:

HolderWith.uniformContinuous is probably useful

I think you can use this to build a UniformEquiv quite easily, and then you can apply docs#UniformEquiv.completeSpace_iff

Anatole Dedecker (Jun 01 2025 at 07:32):

Maybe I’m missing something, but both of your uniformities are (additive) group uniformities right ? If so, showing that they induce the same topology is enough to know that they induce the same uniformity.

Michael Stoll (Jun 01 2025 at 08:37):

Is there a ready-made result in Mathlib that shows that?

Notification Bot (Jun 01 2025 at 15:33):

A message was moved from this topic to #Is there code for X? > Uniform structures on ℝ by Junyan Xu.

Anatole Dedecker (Jun 01 2025 at 15:52):

We have docs#IsUniformAddGroup.toUniformSpace_eq as well as docs#isUniformAddGroup_of_addCommGroup

Michael Stoll (Jun 01 2025 at 19:36):

Thanks everybody!

I now have the following (equiv₂ v₁ v₂ is the ring isomorphism between WithAbs v₁ and WithAbs v₂ whose underlying map is the identity, and I had already shown that it is continuous when the two absolute values are equivalent).

variable {F : Type*} [Field F] {v₁ v₂ : AbsoluteValue F } (h : v₁  v₂)

lemma uniformContinuous_equiv₂_of_isEquiv : UniformContinuous (equiv₂ v₁ v₂) :=
  uniformContinuous_of_continuousAt_zero _ (continuous_equiv₂ h).continuousAt

/-- If `v₁` and `v₂` are equivalent absolute values on `F`, then `WithAbs.equiv₂ v₁ v₂`
is an equivalence of uniformities. This gives the `UniformEquiv`. -/
def uniformEquivOfIsEquiv : WithAbs v₁ ≃ᵤ WithAbs v₂ :=
  UniformEquiv.mk (equiv₂ v₁ v₂) (uniformContinuous_equiv₂_of_isEquiv h)
    (uniformContinuous_equiv₂_of_isEquiv <| Setoid.symm h)

/-- The underlying equivalence of `uniformEquivOfIsEquiv h` is `WithAbs.equiv₂ _ _`. -/
lemma uniformEquiv_eq_equiv₂ :
    (uniformEquivOfIsEquiv h).toEquiv = (equiv₂ v₁ v₂).toEquiv :=
  rfl

/-- If `v₁` and `v₂` are equivalent absolute values on `F` and `F` is complete
with respect to `v₁`, then `F` is also complete with respect to `v₂`. -/
lemma completeSpace_of_isEquiv [CompleteSpace (WithAbs v₁)] :
    CompleteSpace (WithAbs v₂) :=
  (uniformEquivOfIsEquiv h).completeSpace_iff.mp CompleteSpace (WithAbs v₁)

Last updated: Dec 20 2025 at 21:32 UTC