@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
44Authors: Michael Stoll
55-/
66import Mathlib.Analysis.SpecialFunctions.Pow.Real
7+ import Mathlib.Analysis.Normed.Field.WithAbs
78
89/-!
910# Equivalence of real-valued absolute values
@@ -277,7 +278,7 @@ end LinearOrderedField
277278
278279section Real
279280
280- open Real
281+ open Real Topology
281282
282283variable {F : Type *} [Field F] {v w : AbsoluteValue F ℝ}
283284
@@ -337,6 +338,42 @@ theorem isEquiv_iff_exists_rpow_eq {v w : AbsoluteValue F ℝ} :
337338 · exact ⟨1 , zero_lt_one, funext fun x ↦ by rcases eq_or_ne x 0 with rfl | h₀ <;>
338339 aesop (add simp [h.isNontrivial_congr])⟩
339340
341+ theorem IsEquiv.equivWithAbs_image_mem_nhds_zero (h : v.IsEquiv w) {U : Set (WithAbs v)}
342+ (hU : U ∈ 𝓝 0 ) : WithAbs.equivWithAbs v w '' U ∈ 𝓝 0 := by
343+ rw [Metric.mem_nhds_iff] at hU ⊢
344+ obtain ⟨ε, hε, hU⟩ := hU
345+ obtain ⟨c, hc, hvw⟩ := isEquiv_iff_exists_rpow_eq.1 h
346+ refine ⟨ε ^ c, rpow_pos_of_pos hε _, fun x hx ↦ ?_⟩
347+ rw [← RingEquiv.apply_symm_apply (WithAbs.equivWithAbs v w) x]
348+ refine Set.mem_image_of_mem _ (hU ?_)
349+ rw [Metric.mem_ball, dist_zero_right, WithAbs.norm_eq_abv, ← funext_iff.1 hvw,
350+ rpow_lt_rpow_iff (v.nonneg _) hε.le hc] at hx
351+ simpa [WithAbs.norm_eq_abv]
352+
353+ open Topology IsTopologicalAddGroup in
354+ theorem IsEquiv.isEmbedding_equivWithAbs (h : v.IsEquiv w) :
355+ IsEmbedding (WithAbs.equivWithAbs v w) := by
356+ refine IsInducing.isEmbedding <| isInducing_iff_nhds_zero.2 <| Filter.ext fun U ↦
357+ ⟨fun hU ↦ ?_, fun hU ↦ ?_⟩
358+ · exact ⟨WithAbs.equivWithAbs v w '' U, h.equivWithAbs_image_mem_nhds_zero hU,
359+ by simp [RingEquiv.image_eq_preimage, Set.preimage_preimage]⟩
360+ · rw [← RingEquiv.coe_toEquiv, ← Filter.map_equiv_symm] at hU
361+ obtain ⟨s, hs, hss⟩ := Filter.mem_map_iff_exists_image.1 hU
362+ rw [← RingEquiv.coe_toEquiv_symm, WithAbs.equivWithAbs_symm] at hss
363+ exact Filter.mem_of_superset (h.symm.equivWithAbs_image_mem_nhds_zero hs) hss
364+
365+ theorem isEquiv_iff_isHomeomorph (v w : AbsoluteValue F ℝ) :
366+ v.IsEquiv w ↔ IsHomeomorph (WithAbs.equivWithAbs v w) := by
367+ rw [isHomeomorph_iff_isEmbedding_surjective]
368+ refine ⟨fun h ↦ ⟨h.isEmbedding_equivWithAbs, RingEquiv.surjective _⟩, fun ⟨hi, _⟩ ↦ ?_⟩
369+ refine isEquiv_iff_lt_one_iff.2 fun x ↦ ?_
370+ conv_lhs => rw [← (WithAbs.equiv v).apply_symm_apply x]
371+ conv_rhs => rw [← (WithAbs.equiv w).apply_symm_apply x]
372+ simp_rw [← WithAbs.norm_eq_abv, ← tendsto_pow_atTop_nhds_zero_iff_norm_lt_one]
373+ exact ⟨fun h ↦ by simpa [Function.comp_def] using (hi.continuous.tendsto 0 ).comp h, fun h ↦ by
374+ simpa [Function.comp_def] using (hi.continuous_iff (f := (WithAbs.equivWithAbs v w).symm)).2
375+ continuous_id |>.tendsto 0 |>.comp h ⟩
376+
340377end Real
341378
342379end AbsoluteValue
0 commit comments