ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- SeparationQuotient.image_mk_closure
theorem image_mk_closure : mk '' closure s = closure (mk '' s) 
Arguments: {X : Type u_1} [TopologicalSpace X] {s : Set X}
Goal: SeparationQuotient.mk '' closure s = closure (SeparationQuotient.mk '' s)
-- SeparationQuotient.map_prod_map_mk_nhds
theorem map_prod_map_mk_nhds (x : X) (y : Y) :
    map (Prod.map mk mk) (𝓝 (x, y)) = 𝓝 (mk x, mk y) 
Arguments: {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] (x : X) (y : Y)
Goal: Filter.map (Prod.map SeparationQuotient.mk SeparationQuotient.mk) (𝓝 (x, y)) =
  𝓝 (SeparationQuotient.mk x, SeparationQuotient.mk y)
-- SeparationQuotient.map_mk_nhdsWithin_preimage
theorem map_mk_nhdsWithin_preimage (s : Set (SeparationQuotient X)) (x : X) :
    map mk (𝓝[mk ⁻¹' s] x) = 𝓝[s] mk x 
Arguments: {X : Type u_1} [TopologicalSpace X] (s : Set (SeparationQuotient X)) (x : X)
Goal: Filter.map SeparationQuotient.mk (𝓝[SeparationQuotient.mk ⁻¹' s] x) = 𝓝[s] SeparationQuotient.mk x
-- SeparationQuotient.quotientMap_prodMap_mk
theorem quotientMap_prodMap_mk : QuotientMap (Prod.map mk mk : X × Y → _) 
Arguments: {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y]
Goal: QuotientMap (Prod.map SeparationQuotient.mk SeparationQuotient.mk)
-- SeparationQuotient.lift_mk
@[simp]
theorem lift_mk {f : X → α} (hf : ∀ x y, (x ~ᵢ y) → f x = f y) (x : X) : lift f hf (mk x) = f x 
Arguments: {X : Type u_1} {α : Type u_4} [TopologicalSpace X] {f : X → α} (hf : ∀ (x y : X), (x ~ᵢ y) → f x = f y) (x : X)
Goal: SeparationQuotient.lift f hf (SeparationQuotient.mk x) = f x
-- SeparationQuotient.lift_comp_mk
@[simp]
theorem lift_comp_mk {f : X → α} (hf : ∀ x y, (x ~ᵢ y) → f x = f y) : lift f hf ∘ mk = f 
Arguments: {X : Type u_1} {α : Type u_4} [TopologicalSpace X] {f : X → α} (hf : ∀ (x y : X), (x ~ᵢ y) → f x = f y)
Goal: SeparationQuotient.lift f hf ∘ SeparationQuotient.mk = f
-- SeparationQuotient.tendsto_lift_nhds_mk
@[simp]
theorem tendsto_lift_nhds_mk {f : X → α} {hf : ∀ x y, (x ~ᵢ y) → f x = f y} {l : Filter α} :
    Tendsto (lift f hf) (𝓝 <| mk x) l ↔ Tendsto f (𝓝 x) l 
Arguments: {X : Type u_1} {α : Type u_4} [TopologicalSpace X] {x : X} {f : X → α} {hf : ∀ (x y : X), (x ~ᵢ y) → f x = f y} {l : Filter α}
Goal: Filter.Tendsto (SeparationQuotient.lift f hf) (𝓝 (SeparationQuotient.mk x)) l ↔ Filter.Tendsto f (𝓝 x) l
-- SeparationQuotient.tendsto_lift_nhdsWithin_mk
@[simp]
theorem tendsto_lift_nhdsWithin_mk {f : X → α} {hf : ∀ x y, (x ~ᵢ y) → f x = f y}
    {s : Set (SeparationQuotient X)} {l : Filter α} :
    Tendsto (lift f hf) (𝓝[s] mk x) l ↔ Tendsto f (𝓝[mk ⁻¹' s] x) l 
Arguments: {X : Type u_1} {α : Type u_4} [TopologicalSpace X] {x : X} {f : X → α} {hf : ∀ (x y : X), (x ~ᵢ y) → f x = f y} {s : Set (SeparationQuotient X)} {l : Filter α}
Goal: Filter.Tendsto (SeparationQuotient.lift f hf) (𝓝[s] SeparationQuotient.mk x) l ↔
  Filter.Tendsto f (𝓝[SeparationQuotient.mk ⁻¹' s] x) l
-- SeparationQuotient.continuousAt_lift
@[simp]
theorem continuousAt_lift {hf : ∀ x y, (x ~ᵢ y) → f x = f y} :
    ContinuousAt (lift f hf) (mk x) ↔ ContinuousAt f x 
Arguments: {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {x : X} {f : X → Y} {hf : ∀ (x y : X), (x ~ᵢ y) → f x = f y}
Goal: ContinuousAt (SeparationQuotient.lift f hf) (SeparationQuotient.mk x) ↔ ContinuousAt f x
-- SeparationQuotient.continuousWithinAt_lift
@[simp]
theorem continuousWithinAt_lift {hf : ∀ x y, (x ~ᵢ y) → f x = f y}
    {s : Set (SeparationQuotient X)} :
    ContinuousWithinAt (lift f hf) s (mk x) ↔ ContinuousWithinAt f (mk ⁻¹' s) x 
Arguments: {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {x : X} {f : X → Y} {hf : ∀ (x y : X), (x ~ᵢ y) → f x = f y} {s : Set (SeparationQuotient X)}
Goal: ContinuousWithinAt (SeparationQuotient.lift f hf) s (SeparationQuotient.mk x) ↔
  ContinuousWithinAt f (SeparationQuotient.mk ⁻¹' s) x
-- SeparationQuotient.continuousOn_lift
@[simp]
theorem continuousOn_lift {hf : ∀ x y, (x ~ᵢ y) → f x = f y} {s : Set (SeparationQuotient X)} :
    ContinuousOn (lift f hf) s ↔ ContinuousOn f (mk ⁻¹' s) 
Arguments: {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f : X → Y} {hf : ∀ (x y : X), (x ~ᵢ y) → f x = f y} {s : Set (SeparationQuotient X)}
Goal: ContinuousOn (SeparationQuotient.lift f hf) s ↔ ContinuousOn f (SeparationQuotient.mk ⁻¹' s)
-- SeparationQuotient.continuous_lift
@[simp]
theorem continuous_lift {hf : ∀ x y, (x ~ᵢ y) → f x = f y} :
    Continuous (lift f hf) ↔ Continuous f 
Arguments: {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f : X → Y} {hf : ∀ (x y : X), (x ~ᵢ y) → f x = f y}
Goal: Continuous (SeparationQuotient.lift f hf) ↔ Continuous f
-- SeparationQuotient.lift₂_mk
@[simp]
theorem lift₂_mk {f : X → Y → α} (hf : ∀ a b c d, (a ~ᵢ c) → (b ~ᵢ d) → f a b = f c d) (x : X)
    (y : Y) : lift₂ f hf (mk x) (mk y) = f x y 
Arguments: {X : Type u_1} {Y : Type u_2} {α : Type u_4} [TopologicalSpace X] [TopologicalSpace Y] {f : X → Y → α} (hf : ∀ (a : X) (b : Y) (c : X) (d : Y), (a ~ᵢ c) → (b ~ᵢ d) → f a b = f c d) (x : X) (y : Y)
Goal: SeparationQuotient.lift₂ f hf (SeparationQuotient.mk x) (SeparationQuotient.mk y) = f x y
-- SeparationQuotient.tendsto_lift₂_nhds
@[simp]
theorem tendsto_lift₂_nhds {f : X → Y → α} {hf : ∀ a b c d, (a ~ᵢ c) → (b ~ᵢ d) → f a b = f c d}
    {x : X} {y : Y} {l : Filter α} :
    Tendsto (uncurry <| lift₂ f hf) (𝓝 (mk x, mk y)) l ↔ Tendsto (uncurry f) (𝓝 (x, y)) l 
Arguments: {X : Type u_1} {Y : Type u_2} {α : Type u_4} [TopologicalSpace X] [TopologicalSpace Y] {f : X → Y → α} {hf : ∀ (a : X) (b : Y) (c : X) (d : Y), (a ~ᵢ c) → (b ~ᵢ d) → f a b = f c d} {x : X} {y : Y} {l : Filter α}
Goal: Filter.Tendsto (Function.uncurry (SeparationQuotient.lift₂ f hf)) (𝓝 (SeparationQuotient.mk x, SeparationQuotient.mk y))
    l ↔
  Filter.Tendsto (Function.uncurry f) (𝓝 (x, y)) l
-- SeparationQuotient.tendsto_lift₂_nhdsWithin
@[simp] theorem tendsto_lift₂_nhdsWithin {f : X → Y → α}
    {hf : ∀ a b c d, (a ~ᵢ c) → (b ~ᵢ d) → f a b = f c d} {x : X} {y : Y}
    {s : Set (SeparationQuotient X × SeparationQuotient Y)} {l : Filter α} :
    Tendsto (uncurry <| lift₂ f hf) (𝓝[s] (mk x, mk y)) l ↔
      Tendsto (uncurry f) (𝓝[Prod.map mk mk ⁻¹' s] (x, y)) l 
Arguments: {X : Type u_1} {Y : Type u_2} {α : Type u_4} [TopologicalSpace X] [TopologicalSpace Y] {f : X → Y → α} {hf : ∀ (a : X) (b : Y) (c : X) (d : Y), (a ~ᵢ c) → (b ~ᵢ d) → f a b = f c d} {x : X} {y : Y} {s : Set (SeparationQuotient X × SeparationQuotient Y)} {l : Filter α}
Goal: Filter.Tendsto (Function.uncurry (SeparationQuotient.lift₂ f hf))
    (𝓝[s] (SeparationQuotient.mk x, SeparationQuotient.mk y)) l ↔
  Filter.Tendsto (Function.uncurry f) (𝓝[Prod.map SeparationQuotient.mk SeparationQuotient.mk ⁻¹' s] (x, y)) l
-- SeparationQuotient.continuousAt_lift₂
@[simp]
theorem continuousAt_lift₂ {f : X → Y → Z} {hf : ∀ a b c d, (a ~ᵢ c) → (b ~ᵢ d) → f a b = f c d}
    {x : X} {y : Y} :
    ContinuousAt (uncurry <| lift₂ f hf) (mk x, mk y) ↔ ContinuousAt (uncurry f) (x, y) 
Arguments: {X : Type u_1} {Y : Type u_2} {Z : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] {f : X → Y → Z} {hf : ∀ (a : X) (b : Y) (c : X) (d : Y), (a ~ᵢ c) → (b ~ᵢ d) → f a b = f c d} {x : X} {y : Y}
Goal: ContinuousAt (Function.uncurry (SeparationQuotient.lift₂ f hf)) (SeparationQuotient.mk x, SeparationQuotient.mk y) ↔
  ContinuousAt (Function.uncurry f) (x, y)
-- SeparationQuotient.continuousWithinAt_lift₂
@[simp] theorem continuousWithinAt_lift₂ {f : X → Y → Z}
    {hf : ∀ a b c d, (a ~ᵢ c) → (b ~ᵢ d) → f a b = f c d}
    {s : Set (SeparationQuotient X × SeparationQuotient Y)} {x : X} {y : Y} :
    ContinuousWithinAt (uncurry <| lift₂ f hf) s (mk x, mk y) ↔
      ContinuousWithinAt (uncurry f) (Prod.map mk mk ⁻¹' s) (x, y) 
Arguments: {X : Type u_1} {Y : Type u_2} {Z : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] {f : X → Y → Z} {hf : ∀ (a : X) (b : Y) (c : X) (d : Y), (a ~ᵢ c) → (b ~ᵢ d) → f a b = f c d} {s : Set (SeparationQuotient X × SeparationQuotient Y)} {x : X} {y : Y}
Goal: ContinuousWithinAt (Function.uncurry (SeparationQuotient.lift₂ f hf)) s
    (SeparationQuotient.mk x, SeparationQuotient.mk y) ↔
  ContinuousWithinAt (Function.uncurry f) (Prod.map SeparationQuotient.mk SeparationQuotient.mk ⁻¹' s) (x, y)
-- SeparationQuotient.continuousOn_lift₂
@[simp]
theorem continuousOn_lift₂ {f : X → Y → Z} {hf : ∀ a b c d, (a ~ᵢ c) → (b ~ᵢ d) → f a b = f c d}
    {s : Set (SeparationQuotient X × SeparationQuotient Y)} :
    ContinuousOn (uncurry <| lift₂ f hf) s ↔ ContinuousOn (uncurry f) (Prod.map mk mk ⁻¹' s) 
Arguments: {X : Type u_1} {Y : Type u_2} {Z : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] {f : X → Y → Z} {hf : ∀ (a : X) (b : Y) (c : X) (d : Y), (a ~ᵢ c) → (b ~ᵢ d) → f a b = f c d} {s : Set (SeparationQuotient X × SeparationQuotient Y)}
Goal: ContinuousOn (Function.uncurry (SeparationQuotient.lift₂ f hf)) s ↔
  ContinuousOn (Function.uncurry f) (Prod.map SeparationQuotient.mk SeparationQuotient.mk ⁻¹' s)
-- SeparationQuotient.continuous_lift₂
@[simp]
theorem continuous_lift₂ {f : X → Y → Z} {hf : ∀ a b c d, (a ~ᵢ c) → (b ~ᵢ d) → f a b = f c d} :
    Continuous (uncurry <| lift₂ f hf) ↔ Continuous (uncurry f) 
Arguments: {X : Type u_1} {Y : Type u_2} {Z : Type u_3} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z] {f : X → Y → Z} {hf : ∀ (a : X) (b : Y) (c : X) (d : Y), (a ~ᵢ c) → (b ~ᵢ d) → f a b = f c d}
Goal: Continuous (Function.uncurry (SeparationQuotient.lift₂ f hf)) ↔ Continuous (Function.uncurry f)
-- continuous_congr_of_inseparable
theorem continuous_congr_of_inseparable (h : ∀ x, f x ~ᵢ g x) :
    Continuous f ↔ Continuous g 
Arguments: {X : Type u_1} {Y : Type u_2} [TopologicalSpace X] [TopologicalSpace Y] {f g : X → Y} (h : ∀ (x : X), f x ~ᵢ g x)
Goal: Continuous f ↔ Continuous g
-- TopCat.Presheaf.stalkToFiber_surjective
theorem stalkToFiber_surjective (x : X) : Function.Surjective (F.stalkToFiber x) 
Arguments: {X : TopCat} (F : TopCat.Presheaf (Type v) X) (x : ↑X)
Goal: Function.Surjective (F.stalkToFiber x)
-- TopCat.Presheaf.stalkToFiber_injective
theorem stalkToFiber_injective (x : X) : Function.Injective (F.stalkToFiber x) 
Arguments: {X : TopCat} (F : TopCat.Presheaf (Type v) X) (x : ↑X)
Goal: Function.Injective (F.stalkToFiber x)
-- TopCat.Presheaf.isSheaf_of_isTerminal_of_indiscrete
theorem isSheaf_of_isTerminal_of_indiscrete {X : TopCat.{w}} (hind : X.str = ⊤) (F : Presheaf C X)
    (it : IsTerminal <| F.obj <| op ⊥) : F.IsSheaf 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : TopCat} (hind : X.str = ⊤) (F : TopCat.Presheaf C X) (it : CategoryTheory.Limits.IsTerminal (F.obj (Opposite.op ⊥)))
Goal: F.IsSheaf
-- TopCat.Presheaf.isSheaf_iff_isTerminal_of_indiscrete
theorem isSheaf_iff_isTerminal_of_indiscrete {X : TopCat.{w}} (hind : X.str = ⊤)
    (F : Presheaf C X) : F.IsSheaf ↔ Nonempty (IsTerminal <| F.obj <| op ⊥) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : TopCat} (hind : X.str = ⊤) (F : TopCat.Presheaf C X)
Goal: F.IsSheaf ↔ Nonempty (CategoryTheory.Limits.IsTerminal (F.obj (Opposite.op ⊥)))
-- TopCat.Presheaf.isSheaf_on_punit_of_isTerminal
theorem isSheaf_on_punit_of_isTerminal (F : Presheaf C (TopCat.of PUnit))
    (it : IsTerminal <| F.obj <| op ⊥) : F.IsSheaf 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (F : TopCat.Presheaf C (TopCat.of PUnit.{u_1 + 1})) (it : CategoryTheory.Limits.IsTerminal (F.obj (Opposite.op ⊥)))
Goal: F.IsSheaf
-- TopCat.Presheaf.isSheaf_on_punit_iff_isTerminal
theorem isSheaf_on_punit_iff_isTerminal (F : Presheaf C (TopCat.of PUnit)) :
    F.IsSheaf ↔ Nonempty (IsTerminal <| F.obj <| op ⊥) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (F : TopCat.Presheaf C (TopCat.of PUnit.{u_1 + 1}))
Goal: F.IsSheaf ↔ Nonempty (CategoryTheory.Limits.IsTerminal (F.obj (Opposite.op ⊥)))
-- TopCat.Presheaf.isLocallySurjective_iff
theorem isLocallySurjective_iff (T : ℱ ⟶ 𝒢) :
    IsLocallySurjective T ↔
      ∀ (U t), ∀ x ∈ U, ∃ (V : _) (ι : V ⟶ U), (∃ s, T.app _ s = t |_ₕ ι) ∧ x ∈ V 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.ConcreteCategory C] {X : TopCat} {ℱ 𝒢 : TopCat.Presheaf C X} (T : ℱ ⟶ 𝒢)
Goal: TopCat.Presheaf.IsLocallySurjective T ↔
  ∀ (U : TopologicalSpace.Opens ↑X) (t : (CategoryTheory.forget C).obj (𝒢.obj (Opposite.op U))),
    ∀ x ∈ U, ∃ V ι, (∃ s, (T.app (Opposite.op V)) s = TopCat.Presheaf.restrict t ι) ∧ x ∈ V
-- TopCat.Presheaf.locally_surjective_iff_surjective_on_stalks
theorem locally_surjective_iff_surjective_on_stalks (T : ℱ ⟶ 𝒢) :
    IsLocallySurjective T ↔ ∀ x : X, Function.Surjective ((stalkFunctor C x).map T) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.ConcreteCategory C] {X : TopCat} {ℱ 𝒢 : TopCat.Presheaf C X} [CategoryTheory.Limits.HasColimits C] [CategoryTheory.Limits.PreservesFilteredColimits (CategoryTheory.forget C)] (T : ℱ ⟶ 𝒢)
Goal: TopCat.Presheaf.IsLocallySurjective T ↔ ∀ (x : ↑X), Function.Surjective ⇑((TopCat.Presheaf.stalkFunctor C x).map T)
-- EMetric.infEdist_empty
@[simp]
theorem infEdist_empty : infEdist x ∅ = ∞ 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x : α}
Goal: EMetric.infEdist x ∅ = ⊤
-- EMetric.le_infEdist
theorem le_infEdist {d} : d ≤ infEdist x s ↔ ∀ y ∈ s, d ≤ edist x y 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x : α} {s : Set α} {d : ℝ≥0∞}
Goal: d ≤ EMetric.infEdist x s ↔ ∀ y ∈ s, d ≤ edist x y
-- EMetric.infEdist_union
@[simp]
theorem infEdist_union : infEdist x (s ∪ t) = infEdist x s ⊓ infEdist x t 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x : α} {s t : Set α}
Goal: EMetric.infEdist x (s ∪ t) = EMetric.infEdist x s ⊓ EMetric.infEdist x t
-- EMetric.infEdist_iUnion
@[simp]
theorem infEdist_iUnion (f : ι → Set α) (x : α) : infEdist x (⋃ i, f i) = ⨅ i, infEdist x (f i) 
Arguments: {ι : Sort u_1} {α : Type u} [PseudoEMetricSpace α] (f : ι → Set α) (x : α)
Goal: EMetric.infEdist x (⋃ i, f i) = ⨅ i, EMetric.infEdist x (f i)
-- EMetric.infEdist_biUnion
lemma infEdist_biUnion {ι : Type*} (f : ι → Set α) (I : Set ι) (x : α) :
    infEdist x (⋃ i ∈ I, f i) = ⨅ i ∈ I, infEdist x (f i) 
Arguments: {α : Type u} [PseudoEMetricSpace α] {ι : Type u_2} (f : ι → Set α) (I : Set ι) (x : α)
Goal: EMetric.infEdist x (⋃ i ∈ I, f i) = ⨅ i ∈ I, EMetric.infEdist x (f i)
-- EMetric.infEdist_singleton
@[simp]
theorem infEdist_singleton : infEdist x {y} = edist x y 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x y : α}
Goal: EMetric.infEdist x {y} = edist x y
-- EMetric.infEdist_le_edist_of_mem
theorem infEdist_le_edist_of_mem (h : y ∈ s) : infEdist x s ≤ edist x y 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x y : α} {s : Set α} (h : y ∈ s)
Goal: EMetric.infEdist x s ≤ edist x y
-- EMetric.infEdist_zero_of_mem
theorem infEdist_zero_of_mem (h : x ∈ s) : infEdist x s = 0 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x : α} {s : Set α} (h : x ∈ s)
Goal: EMetric.infEdist x s = 0
-- EMetric.infEdist_anti
theorem infEdist_anti (h : s ⊆ t) : infEdist x t ≤ infEdist x s 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x : α} {s t : Set α} (h : s ⊆ t)
Goal: EMetric.infEdist x t ≤ EMetric.infEdist x s
-- EMetric.infEdist_lt_iff
theorem infEdist_lt_iff {r : ℝ≥0∞} : infEdist x s < r ↔ ∃ y ∈ s, edist x y < r 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x : α} {s : Set α} {r : ℝ≥0∞}
Goal: EMetric.infEdist x s < r ↔ ∃ y ∈ s, edist x y < r
-- EMetric.infEdist_le_infEdist_add_edist
theorem infEdist_le_infEdist_add_edist : infEdist x s ≤ infEdist y s + edist x y 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x y : α} {s : Set α}
Goal: EMetric.infEdist x s ≤ EMetric.infEdist y s + edist x y
-- EMetric.infEdist_le_edist_add_infEdist
theorem infEdist_le_edist_add_infEdist : infEdist x s ≤ edist x y + infEdist y s 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x y : α} {s : Set α}
Goal: EMetric.infEdist x s ≤ edist x y + EMetric.infEdist y s
-- EMetric.edist_le_infEdist_add_ediam
theorem edist_le_infEdist_add_ediam (hy : y ∈ s) : edist x y ≤ infEdist x s + diam s 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x y : α} {s : Set α} (hy : y ∈ s)
Goal: edist x y ≤ EMetric.infEdist x s + EMetric.diam s
-- EMetric.continuous_infEdist
@[continuity]
theorem continuous_infEdist : Continuous fun x => infEdist x s 
Arguments: {α : Type u} [PseudoEMetricSpace α] {s : Set α}
Goal: Continuous fun x => EMetric.infEdist x s
-- EMetric.infEdist_closure
theorem infEdist_closure : infEdist x (closure s) = infEdist x s 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x : α} {s : Set α}
Goal: EMetric.infEdist x (closure s) = EMetric.infEdist x s
-- EMetric.mem_closure_iff_infEdist_zero
theorem mem_closure_iff_infEdist_zero : x ∈ closure s ↔ infEdist x s = 0 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x : α} {s : Set α}
Goal: x ∈ closure s ↔ EMetric.infEdist x s = 0
-- EMetric.mem_iff_infEdist_zero_of_closed
theorem mem_iff_infEdist_zero_of_closed (h : IsClosed s) : x ∈ s ↔ infEdist x s = 0 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x : α} {s : Set α} (h : IsClosed s)
Goal: x ∈ s ↔ EMetric.infEdist x s = 0
-- EMetric.infEdist_pos_iff_not_mem_closure
theorem infEdist_pos_iff_not_mem_closure {x : α} {E : Set α} :
    0 < infEdist x E ↔ x ∉ closure E 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x : α} {E : Set α}
Goal: 0 < EMetric.infEdist x E ↔ x ∉ closure E
-- EMetric.infEdist_closure_pos_iff_not_mem_closure
theorem infEdist_closure_pos_iff_not_mem_closure {x : α} {E : Set α} :
    0 < infEdist x (closure E) ↔ x ∉ closure E 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x : α} {E : Set α}
Goal: 0 < EMetric.infEdist x (closure E) ↔ x ∉ closure E
-- EMetric.exists_real_pos_lt_infEdist_of_not_mem_closure
theorem exists_real_pos_lt_infEdist_of_not_mem_closure {x : α} {E : Set α} (h : x ∉ closure E) :
    ∃ ε : ℝ, 0 < ε ∧ ENNReal.ofReal ε < infEdist x E 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x : α} {E : Set α} (h : x ∉ closure E)
Goal: ∃ ε, 0 < ε ∧ ENNReal.ofReal ε < EMetric.infEdist x E
-- EMetric.disjoint_closedBall_of_lt_infEdist
theorem disjoint_closedBall_of_lt_infEdist {r : ℝ≥0∞} (h : r < infEdist x s) :
    Disjoint (closedBall x r) s 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x : α} {s : Set α} {r : ℝ≥0∞} (h : r < EMetric.infEdist x s)
Goal: Disjoint (EMetric.closedBall x r) s
-- EMetric.infEdist_image
theorem infEdist_image (hΦ : Isometry Φ) : infEdist (Φ x) (Φ '' t) = infEdist x t 
Arguments: {α : Type u} {β : Type v} [PseudoEMetricSpace α] [PseudoEMetricSpace β] {x : α} {t : Set α} {Φ : α → β} (hΦ : Isometry Φ)
Goal: EMetric.infEdist (Φ x) (Φ '' t) = EMetric.infEdist x t
-- EMetric.infEdist_vadd
@[to_additive (attr := simp)]
theorem infEdist_smul {M} [SMul M α] [IsometricSMul M α] (c : M) (x : α) (s : Set α) :
    infEdist (c • x) (c • s) = infEdist x s 
Arguments: {α : Type u} [PseudoEMetricSpace α] {M : Type u_2} [VAdd M α] [IsometricVAdd M α] (c : M) (x : α) (s : Set α)
Goal: EMetric.infEdist (c +ᵥ x) (c +ᵥ s) = EMetric.infEdist x s
-- EMetric.infEdist_smul
@[to_additive (attr := simp)]
theorem infEdist_smul {M} [SMul M α] [IsometricSMul M α] (c : M) (x : α) (s : Set α) :
    infEdist (c • x) (c • s) = infEdist x s 
Arguments: {α : Type u} [PseudoEMetricSpace α] {M : Type u_2} [SMul M α] [IsometricSMul M α] (c : M) (x : α) (s : Set α)
Goal: EMetric.infEdist (c • x) (c • s) = EMetric.infEdist x s
-- IsOpen.exists_iUnion_isClosed
theorem _root_.IsOpen.exists_iUnion_isClosed {U : Set α} (hU : IsOpen U) :
    ∃ F : ℕ → Set α, (∀ n, IsClosed (F n)) ∧ (∀ n, F n ⊆ U) ∧ ⋃ n, F n = U ∧ Monotone F 
Arguments: {α : Type u} [PseudoEMetricSpace α] {U : Set α} (hU : IsOpen U)
Goal: ∃ F, (∀ (n : ℕ), IsClosed (F n)) ∧ (∀ (n : ℕ), F n ⊆ U) ∧ ⋃ n, F n = U ∧ Monotone F
-- IsCompact.exists_infEdist_eq_edist
theorem _root_.IsCompact.exists_infEdist_eq_edist (hs : IsCompact s) (hne : s.Nonempty) (x : α) :
    ∃ y ∈ s, infEdist x s = edist x y 
Arguments: {α : Type u} [PseudoEMetricSpace α] {s : Set α} (hs : IsCompact s) (hne : s.Nonempty) (x : α)
Goal: ∃ y ∈ s, EMetric.infEdist x s = edist x y
-- EMetric.exists_pos_forall_lt_edist
theorem exists_pos_forall_lt_edist (hs : IsCompact s) (ht : IsClosed t) (hst : Disjoint s t) :
    ∃ r : ℝ≥0, 0 < r ∧ ∀ x ∈ s, ∀ y ∈ t, (r : ℝ≥0∞) < edist x y 
Arguments: {α : Type u} [PseudoEMetricSpace α] {s t : Set α} (hs : IsCompact s) (ht : IsClosed t) (hst : Disjoint s t)
Goal: ∃ r, 0 < r ∧ ∀ x ∈ s, ∀ y ∈ t, ↑r < edist x y
-- EMetric.hausdorffEdist_def
irreducible_def hausdorffEdist {α : Type u} [PseudoEMetricSpace α] (s t : Set α) : ℝ≥0∞ 
Arguments: {α : Type u_2} [PseudoEMetricSpace α] (s t : Set α)
Goal: EMetric.hausdorffEdist s t = (⨆ x ∈ s, EMetric.infEdist x t) ⊔ ⨆ y ∈ t, EMetric.infEdist y s
-- EMetric.hausdorffEdist_self
@[simp]
theorem hausdorffEdist_self : hausdorffEdist s s = 0 
Arguments: {α : Type u} [PseudoEMetricSpace α] {s : Set α}
Goal: EMetric.hausdorffEdist s s = 0
-- EMetric.hausdorffEdist_comm
theorem hausdorffEdist_comm : hausdorffEdist s t = hausdorffEdist t s 
Arguments: {α : Type u} [PseudoEMetricSpace α] {s t : Set α}
Goal: EMetric.hausdorffEdist s t = EMetric.hausdorffEdist t s
-- EMetric.hausdorffEdist_le_of_infEdist
theorem hausdorffEdist_le_of_infEdist {r : ℝ≥0∞} (H1 : ∀ x ∈ s, infEdist x t ≤ r)
    (H2 : ∀ x ∈ t, infEdist x s ≤ r) : hausdorffEdist s t ≤ r 
Arguments: {α : Type u} [PseudoEMetricSpace α] {s t : Set α} {r : ℝ≥0∞} (H1 : ∀ x ∈ s, EMetric.infEdist x t ≤ r) (H2 : ∀ x ∈ t, EMetric.infEdist x s ≤ r)
Goal: EMetric.hausdorffEdist s t ≤ r
-- EMetric.hausdorffEdist_le_of_mem_edist
theorem hausdorffEdist_le_of_mem_edist {r : ℝ≥0∞} (H1 : ∀ x ∈ s, ∃ y ∈ t, edist x y ≤ r)
    (H2 : ∀ x ∈ t, ∃ y ∈ s, edist x y ≤ r) : hausdorffEdist s t ≤ r 
Arguments: {α : Type u} [PseudoEMetricSpace α] {s t : Set α} {r : ℝ≥0∞} (H1 : ∀ x ∈ s, ∃ y ∈ t, edist x y ≤ r) (H2 : ∀ x ∈ t, ∃ y ∈ s, edist x y ≤ r)
Goal: EMetric.hausdorffEdist s t ≤ r
-- EMetric.infEdist_le_hausdorffEdist_of_mem
theorem infEdist_le_hausdorffEdist_of_mem (h : x ∈ s) : infEdist x t ≤ hausdorffEdist s t 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x : α} {s t : Set α} (h : x ∈ s)
Goal: EMetric.infEdist x t ≤ EMetric.hausdorffEdist s t
-- EMetric.exists_edist_lt_of_hausdorffEdist_lt
theorem exists_edist_lt_of_hausdorffEdist_lt {r : ℝ≥0∞} (h : x ∈ s) (H : hausdorffEdist s t < r) :
    ∃ y ∈ t, edist x y < r 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x : α} {s t : Set α} {r : ℝ≥0∞} (h : x ∈ s) (H : EMetric.hausdorffEdist s t < r)
Goal: ∃ y ∈ t, edist x y < r
-- EMetric.infEdist_le_infEdist_add_hausdorffEdist
theorem infEdist_le_infEdist_add_hausdorffEdist :
    infEdist x t ≤ infEdist x s + hausdorffEdist s t 
Arguments: {α : Type u} [PseudoEMetricSpace α] {x : α} {s t : Set α}
Goal: EMetric.infEdist x t ≤ EMetric.infEdist x s + EMetric.hausdorffEdist s t
-- EMetric.hausdorffEdist_image
theorem hausdorffEdist_image (h : Isometry Φ) :
    hausdorffEdist (Φ '' s) (Φ '' t) = hausdorffEdist s t 
Arguments: {α : Type u} {β : Type v} [PseudoEMetricSpace α] [PseudoEMetricSpace β] {s t : Set α} {Φ : α → β} (h : Isometry Φ)
Goal: EMetric.hausdorffEdist (Φ '' s) (Φ '' t) = EMetric.hausdorffEdist s t
-- EMetric.hausdorffEdist_le_ediam
theorem hausdorffEdist_le_ediam (hs : s.Nonempty) (ht : t.Nonempty) :
    hausdorffEdist s t ≤ diam (s ∪ t) 
Arguments: {α : Type u} [PseudoEMetricSpace α] {s t : Set α} (hs : s.Nonempty) (ht : t.Nonempty)
Goal: EMetric.hausdorffEdist s t ≤ EMetric.diam (s ∪ t)
-- EMetric.hausdorffEdist_triangle
theorem hausdorffEdist_triangle : hausdorffEdist s u ≤ hausdorffEdist s t + hausdorffEdist t u 
Arguments: {α : Type u} [PseudoEMetricSpace α] {s t u : Set α}
Goal: EMetric.hausdorffEdist s u ≤ EMetric.hausdorffEdist s t + EMetric.hausdorffEdist t u
-- EMetric.hausdorffEdist_zero_iff_closure_eq_closure
theorem hausdorffEdist_zero_iff_closure_eq_closure :
    hausdorffEdist s t = 0 ↔ closure s = closure t 
Arguments: {α : Type u} [PseudoEMetricSpace α] {s t : Set α}
Goal: EMetric.hausdorffEdist s t = 0 ↔ closure s = closure t
-- EMetric.hausdorffEdist_self_closure
@[simp]
theorem hausdorffEdist_self_closure : hausdorffEdist s (closure s) = 0 
Arguments: {α : Type u} [PseudoEMetricSpace α] {s : Set α}
Goal: EMetric.hausdorffEdist s (closure s) = 0