Zulip Chat Archive

Stream: Is there code for X?

Topic: MapClusterPt and EventuallyEq


Thomas Browning (Jul 23 2025 at 03:35):

Does a result like this exist in Mathlib, or is there a more idiomatic proof?

import Mathlib.MeasureTheory.Measure.Regular

lemma MapClusterPt.eq_of_eventually
    {X Y : Type*} [TopologicalSpace X] [TopologicalSpace Y] [T2Space X]
    {f g : Y  X} {y : Y}
    {ι : Type*} {F : Filter ι} {z : ι  Y}
    (h : MapClusterPt y F z) (ha : ContinuousAt f y) (hb : ContinuousAt g y)
    (hfg : f  z =ᶠ[F] g  z) : f y = g y := by
  refine tendsto_nhds_unique_of_frequently_eq ha hb ?_
  rw [Filter.eventuallyEq_iff_exists_mem] at hfg
  obtain s, hs1, hs2 := hfg
  rw [mapClusterPt_def] at h
  have key : z '' s  F.map z := Filter.image_mem_map hs1
  rw [clusterPt_iff_frequently] at h
  rw [frequently_nhds_iff]
  intro U hy hU
  specialize h U (hU.mem_nhds hy)
  rw [Filter.frequently_iff] at h
  specialize h key
  obtain T, hT1, hT2 := h
  use T
  use hT2
  obtain i, hi, rfl := hT1
  apply hs2
  exact hi

Aaron Liu (Jul 23 2025 at 05:49):

import Mathlib.Topology.Separation.Hausdorff

open Filter

lemma MapClusterPt.eq_of_eventually
    {X Y : Type*} [TopologicalSpace X] [TopologicalSpace Y] [T2Space X]
    {f g : Y  X} {y : Y}
    {ι : Type*} {F : Filter ι} {z : ι  Y}
    (h : MapClusterPt y F z) (ha : ContinuousAt f y) (hb : ContinuousAt g y)
    (hfg : f  z =ᶠ[F] g  z) : f y = g y := by
  replace h := h.neBot.map f
  apply eq_of_nhds_neBot
  replace hfg : map f (nhds y  map z F) = map g (nhds y  map z F) :=
    Filter.map_congr ((eventuallyEq_map.mpr hfg).filter_mono inf_le_right)
  rw [ inf_of_le_left hfg.le] at h
  apply h.mono
  apply inf_le_inf
  · apply map_inf_le.trans
    apply inf_le_of_left_le
    exact ha.tendsto
  · apply map_inf_le.trans
    apply inf_le_of_left_le
    exact hb.tendsto

Aaron Liu (Jul 23 2025 at 05:52):

I think in filters

Thomas Browning (Jul 23 2025 at 15:59):

Thanks! Working off of this, I think I've found something more-or-less idomatic. I'm just surprised the first lemma isn't in mathlib yet

import Mathlib.Topology.Separation.Hausdorff

open Filter

variable {X Y ι : Type*} [TopologicalSpace X] [T2Space X] [TopologicalSpace Y] {y : Y}

lemma ClusterPt.frequently' {F : Filter Y} (h : ClusterPt y F)
    {p : Y  Prop} (hp : ∀ᶠ x in F, p x) :
    ∃ᶠ x in nhds y, p x := by
  rw [eventually_iff,  le_principal_iff] at hp
  exact clusterPt_principal_iff_frequently.mp (h.mono hp)

lemma ClusterPt.apply_eq_of_eventually {F : Filter Y} (h : ClusterPt y F)
    {f g : Y  X} (ha : ContinuousAt f y) (hb : ContinuousAt g y) (hfg : f =ᶠ[F] g) :
    f y = g y :=
  tendsto_nhds_unique_of_frequently_eq ha hb (h.frequently' hfg)

lemma MapClusterPt.apply_eq_of_eventually {F : Filter ι} {z : ι  Y} (h : MapClusterPt y F z)
    {f g : Y  X} (ha : ContinuousAt f y) (hb : ContinuousAt g y) (hfg : f  z =ᶠ[F] g  z) :
    f y = g y :=
  ClusterPt.apply_eq_of_eventually h ha hb hfg

Last updated: Dec 20 2025 at 21:32 UTC