topology.instances.real
⟷
Mathlib.Topology.Instances.Real
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -51,7 +51,7 @@ theorem Real.uniformContinuous_add : UniformContinuous fun p : ℝ × ℝ => p.1
#print Real.uniformContinuous_neg /-
theorem Real.uniformContinuous_neg : UniformContinuous (@Neg.neg ℝ _) :=
Metric.uniformContinuous_iff.2 fun ε ε0 =>
- ⟨_, ε0, fun a b h => by rw [dist_comm] at h <;> simpa [Real.dist_eq] using h⟩
+ ⟨_, ε0, fun a b h => by rw [dist_comm] at h <;> simpa [Real.dist_eq] using h⟩
#align real.uniform_continuous_neg Real.uniformContinuous_neg
-/
@@ -121,7 +121,7 @@ theorem Real.uniformContinuous_abs : UniformContinuous (abs : ℝ → ℝ) :=
#print Real.tendsto_inv /-
theorem Real.tendsto_inv {r : ℝ} (r0 : r ≠ 0) : Tendsto (fun q => q⁻¹) (𝓝 r) (𝓝 r⁻¹) := by
- rw [← abs_pos] at r0 <;>
+ rw [← abs_pos] at r0 <;>
exact
tendsto_of_uniformContinuous_subtype
(Real.uniformContinuous_inv {x | |r| / 2 < |x|} (half_pos r0) fun x h => le_of_lt h)
@@ -223,7 +223,7 @@ theorem Real.isBounded_iff_bddBelow_bddAbove {s : Set ℝ} : Bounded s ↔ BddBe
intro bdd
rcases(bounded_iff_subset_ball 0).1 bdd with ⟨r, hr⟩
-- hr : s ⊆ closed_ball 0 r
- rw [Real.closedBall_eq_Icc] at hr
+ rw [Real.closedBall_eq_Icc] at hr
-- hr : s ⊆ Icc (0 - r) (0 + r)
exact ⟨bdd_below_Icc.mono hr, bdd_above_Icc.mono hr⟩,
fun h => isBounded_of_bddAbove_of_bddBelow h.2 h.1⟩
@@ -339,7 +339,7 @@ theorem AddSubgroup.dense_of_no_min {G : AddSubgroup ℝ} {g₀ : ℝ} (g₀_in
(H' : ¬∃ a : ℝ, IsLeast {g : ℝ | g ∈ G ∧ 0 < g} a) : Dense (G : Set ℝ) :=
by
let G_pos := {g : ℝ | g ∈ G ∧ 0 < g}
- push_neg at H'
+ push_neg at H'
intro x
suffices ∀ ε > (0 : ℝ), ∃ g ∈ G, |x - g| < ε by simpa only [Real.mem_closure_iff, abs_sub_comm]
intro ε ε_pos
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -199,7 +199,7 @@ section
#print closure_of_rat_image_lt /-
theorem closure_of_rat_image_lt {q : ℚ} : closure ((coe : ℚ → ℝ) '' {x | q < x}) = {r | ↑q ≤ r} :=
Subset.antisymm
- ((ClosedIciTopology.isClosed_ge' _).closure_subset_iff.2
+ ((isClosed_Ici _).closure_subset_iff.2
(image_subset_iff.2 fun p h => le_of_lt <| (@Rat.cast_lt ℝ _ _ _).2 h))
fun x hx =>
mem_closure_iff_nhds.2 fun t ht =>
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -74,7 +74,7 @@ instance : SecondCountableTopology ℝ :=
#print Real.isTopologicalBasis_Ioo_rat /-
theorem Real.isTopologicalBasis_Ioo_rat :
@IsTopologicalBasis ℝ _ (⋃ (a : ℚ) (b : ℚ) (h : a < b), {Ioo a b}) :=
- isTopologicalBasis_of_open_of_nhds (by simp (config := { contextual := true }) [isOpen_Ioo])
+ isTopologicalBasis_of_isOpen_of_nhds (by simp (config := { contextual := true }) [isOpen_Ioo])
fun a v hav hv =>
let ⟨l, u, ⟨hl, hu⟩, h⟩ := mem_nhds_iff_exists_Ioo_subset.mp (IsOpen.mem_nhds hv hav)
let ⟨q, hlq, hqa⟩ := exists_rat_btwn hl
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -87,8 +87,7 @@ theorem Real.isTopologicalBasis_Ioo_rat :
#print Real.cocompact_eq /-
@[simp]
theorem Real.cocompact_eq : cocompact ℝ = atBot ⊔ atTop := by
- simp only [← comap_dist_right_atTop_eq_cocompact (0 : ℝ), Real.dist_eq, sub_zero,
- comap_abs_at_top]
+ simp only [← Metric.cobounded_eq_cocompact (0 : ℝ), Real.dist_eq, sub_zero, comap_abs_at_top]
#align real.cocompact_eq Real.cocompact_eq
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,17 +3,17 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Mario Carneiro
-/
-import Mathbin.Topology.MetricSpace.Basic
-import Mathbin.Topology.Algebra.UniformGroup
-import Mathbin.Topology.Algebra.UniformMulAction
-import Mathbin.Topology.Algebra.Ring.Basic
-import Mathbin.Topology.Algebra.Star
-import Mathbin.Topology.Algebra.Order.Field
-import Mathbin.RingTheory.Subring.Basic
-import Mathbin.GroupTheory.Archimedean
-import Mathbin.Algebra.Order.Group.Bounds
-import Mathbin.Algebra.Periodic
-import Mathbin.Topology.Instances.Int
+import Topology.MetricSpace.Basic
+import Topology.Algebra.UniformGroup
+import Topology.Algebra.UniformMulAction
+import Topology.Algebra.Ring.Basic
+import Topology.Algebra.Star
+import Topology.Algebra.Order.Field
+import RingTheory.Subring.Basic
+import GroupTheory.Archimedean
+import Algebra.Order.Group.Bounds
+import Algebra.Periodic
+import Topology.Instances.Int
#align_import topology.instances.real from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -211,7 +211,7 @@ theorem closure_of_rat_image_lt {q : ℚ} : closure ((coe : ℚ → ℝ) '' {x |
#align closure_of_rat_image_lt closure_of_rat_image_lt
-/
-#print Real.bounded_iff_bddBelow_bddAbove /-
+#print Real.isBounded_iff_bddBelow_bddAbove /-
/- TODO(Mario): Put these back only if needed later
lemma closure_of_rat_image_le_eq {q : ℚ} : closure ((coe:ℚ → ℝ) '' {x | q ≤ x}) = {r | ↑q ≤ r} :=
_
@@ -219,7 +219,7 @@ _
lemma closure_of_rat_image_le_le_eq {a b : ℚ} (hab : a ≤ b) :
closure (of_rat '' {q:ℚ | a ≤ q ∧ q ≤ b}) = {r:ℝ | of_rat a ≤ r ∧ r ≤ of_rat b} :=
_-/
-theorem Real.bounded_iff_bddBelow_bddAbove {s : Set ℝ} : Bounded s ↔ BddBelow s ∧ BddAbove s :=
+theorem Real.isBounded_iff_bddBelow_bddAbove {s : Set ℝ} : Bounded s ↔ BddBelow s ∧ BddAbove s :=
⟨by
intro bdd
rcases(bounded_iff_subset_ball 0).1 bdd with ⟨r, hr⟩
@@ -227,16 +227,16 @@ theorem Real.bounded_iff_bddBelow_bddAbove {s : Set ℝ} : Bounded s ↔ BddBelo
rw [Real.closedBall_eq_Icc] at hr
-- hr : s ⊆ Icc (0 - r) (0 + r)
exact ⟨bdd_below_Icc.mono hr, bdd_above_Icc.mono hr⟩,
- fun h => bounded_of_bddAbove_of_bddBelow h.2 h.1⟩
-#align real.bounded_iff_bdd_below_bdd_above Real.bounded_iff_bddBelow_bddAbove
+ fun h => isBounded_of_bddAbove_of_bddBelow h.2 h.1⟩
+#align real.bounded_iff_bdd_below_bdd_above Real.isBounded_iff_bddBelow_bddAbove
-/
-#print Real.subset_Icc_sInf_sSup_of_bounded /-
-theorem Real.subset_Icc_sInf_sSup_of_bounded {s : Set ℝ} (h : Bounded s) :
+#print Real.subset_Icc_sInf_sSup_of_isBounded /-
+theorem Real.subset_Icc_sInf_sSup_of_isBounded {s : Set ℝ} (h : Bounded s) :
s ⊆ Icc (sInf s) (sSup s) :=
- subset_Icc_csInf_csSup (Real.bounded_iff_bddBelow_bddAbove.1 h).1
- (Real.bounded_iff_bddBelow_bddAbove.1 h).2
-#align real.subset_Icc_Inf_Sup_of_bounded Real.subset_Icc_sInf_sSup_of_bounded
+ subset_Icc_csInf_csSup (Real.isBounded_iff_bddBelow_bddAbove.1 h).1
+ (Real.isBounded_iff_bddBelow_bddAbove.1 h).2
+#align real.subset_Icc_Inf_Sup_of_bounded Real.subset_Icc_sInf_sSup_of_isBounded
-/
end
@@ -268,12 +268,12 @@ theorem Periodic.compact_of_continuous [TopologicalSpace α] {f : ℝ → α} {c
#align function.periodic.compact_of_continuous Function.Periodic.compact_of_continuous
-/
-#print Function.Periodic.bounded_of_continuous /-
+#print Function.Periodic.isBounded_of_continuous /-
/-- A continuous, periodic function is bounded. -/
-theorem Periodic.bounded_of_continuous [PseudoMetricSpace α] {f : ℝ → α} {c : ℝ} (hp : Periodic f c)
- (hc : c ≠ 0) (hf : Continuous f) : Bounded (range f) :=
+theorem Periodic.isBounded_of_continuous [PseudoMetricSpace α] {f : ℝ → α} {c : ℝ}
+ (hp : Periodic f c) (hc : c ≠ 0) (hf : Continuous f) : Bounded (range f) :=
(hp.compact_of_continuous hc hf).Bounded
-#align function.periodic.bounded_of_continuous Function.Periodic.bounded_of_continuous
+#align function.periodic.bounded_of_continuous Function.Periodic.isBounded_of_continuous
-/
end Function
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -177,7 +177,7 @@ protected theorem Real.continuous_mul : Continuous fun p : ℝ × ℝ => p.1 * p
-/
instance : TopologicalRing ℝ :=
- { Real.topologicalAddGroup with continuous_mul := Real.continuous_mul }
+ { Real.topologicalAddGroup with continuous_hMul := Real.continuous_mul }
instance : CompleteSpace ℝ := by
apply complete_of_cauchy_seq_tendsto
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -200,7 +200,7 @@ section
#print closure_of_rat_image_lt /-
theorem closure_of_rat_image_lt {q : ℚ} : closure ((coe : ℚ → ℝ) '' {x | q < x}) = {r | ↑q ≤ r} :=
Subset.antisymm
- ((isClosed_ge' _).closure_subset_iff.2
+ ((ClosedIciTopology.isClosed_ge' _).closure_subset_iff.2
(image_subset_iff.2 fun p h => le_of_lt <| (@Rat.cast_lt ℝ _ _ _).2 h))
fun x hx =>
mem_closure_iff_nhds.2 fun t ht =>
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,11 +2,6 @@
Copyright (c) 2017 Johannes Hölzl. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Mario Carneiro
-
-! This file was ported from Lean 3 source module topology.instances.real
-! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Topology.MetricSpace.Basic
import Mathbin.Topology.Algebra.UniformGroup
@@ -20,6 +15,8 @@ import Mathbin.Algebra.Order.Group.Bounds
import Mathbin.Algebra.Periodic
import Mathbin.Topology.Instances.Int
+#align_import topology.instances.real from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
+
/-!
# Topological properties of ℝ
mathlib commit https://github.com/leanprover-community/mathlib/commit/9240e8be927a0955b9a82c6c85ef499ee3a626b8
@@ -175,7 +175,7 @@ protected theorem Real.continuous_mul : Continuous fun p : ℝ × ℝ => p.1 * p
(IsOpen.mem_nhds
(((isOpen_gt' (|a₁| + 1)).Preimage continuous_abs).Prod
((isOpen_gt' (|a₂| + 1)).Preimage continuous_abs))
- ⟨lt_add_one (|a₁|), lt_add_one (|a₂|)⟩)
+ ⟨lt_add_one |a₁|, lt_add_one |a₂|⟩)
#align real.continuous_mul Real.continuous_mul
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -41,6 +41,7 @@ variable {α : Type u} {β : Type v} {γ : Type w}
instance : NoncompactSpace ℝ :=
Int.closedEmbedding_coe_real.NoncompactSpace
+#print Real.uniformContinuous_add /-
theorem Real.uniformContinuous_add : UniformContinuous fun p : ℝ × ℝ => p.1 + p.2 :=
Metric.uniformContinuous_iff.2 fun ε ε0 =>
let ⟨δ, δ0, Hδ⟩ := rat_add_continuous_lemma abs ε0
@@ -48,11 +49,14 @@ theorem Real.uniformContinuous_add : UniformContinuous fun p : ℝ × ℝ => p.1
let ⟨h₁, h₂⟩ := max_lt_iff.1 h
Hδ h₁ h₂⟩
#align real.uniform_continuous_add Real.uniformContinuous_add
+-/
+#print Real.uniformContinuous_neg /-
theorem Real.uniformContinuous_neg : UniformContinuous (@Neg.neg ℝ _) :=
Metric.uniformContinuous_iff.2 fun ε ε0 =>
⟨_, ε0, fun a b h => by rw [dist_comm] at h <;> simpa [Real.dist_eq] using h⟩
#align real.uniform_continuous_neg Real.uniformContinuous_neg
+-/
instance : ContinuousStar ℝ :=
⟨continuous_id⟩
@@ -70,6 +74,7 @@ instance : SecondCountableTopology ℝ :=
secondCountable_of_proper
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (a b) -/
+#print Real.isTopologicalBasis_Ioo_rat /-
theorem Real.isTopologicalBasis_Ioo_rat :
@IsTopologicalBasis ℝ _ (⋃ (a : ℚ) (b : ℚ) (h : a < b), {Ioo a b}) :=
isTopologicalBasis_of_open_of_nhds (by simp (config := { contextual := true }) [isOpen_Ioo])
@@ -80,13 +85,17 @@ theorem Real.isTopologicalBasis_Ioo_rat :
⟨Ioo q p, by simp only [mem_Union]; exact ⟨q, p, Rat.cast_lt.1 <| hqa.trans hap, rfl⟩,
⟨hqa, hap⟩, fun a' ⟨hqa', ha'p⟩ => h ⟨hlq.trans hqa', ha'p.trans hpu⟩⟩
#align real.is_topological_basis_Ioo_rat Real.isTopologicalBasis_Ioo_rat
+-/
+#print Real.cocompact_eq /-
@[simp]
theorem Real.cocompact_eq : cocompact ℝ = atBot ⊔ atTop := by
simp only [← comap_dist_right_atTop_eq_cocompact (0 : ℝ), Real.dist_eq, sub_zero,
comap_abs_at_top]
#align real.cocompact_eq Real.cocompact_eq
+-/
+#print Real.mem_closure_iff /-
/- TODO(Mario): Prove that these are uniform isomorphisms instead of uniform embeddings
lemma uniform_embedding_add_rat {r : ℚ} : uniform_embedding (λp:ℚ, p + r) :=
_
@@ -96,19 +105,25 @@ _ -/
theorem Real.mem_closure_iff {s : Set ℝ} {x : ℝ} : x ∈ closure s ↔ ∀ ε > 0, ∃ y ∈ s, |y - x| < ε :=
by simp [mem_closure_iff_nhds_basis nhds_basis_ball, Real.dist_eq]
#align real.mem_closure_iff Real.mem_closure_iff
+-/
+#print Real.uniformContinuous_inv /-
theorem Real.uniformContinuous_inv (s : Set ℝ) {r : ℝ} (r0 : 0 < r) (H : ∀ x ∈ s, r ≤ |x|) :
UniformContinuous fun p : s => p.1⁻¹ :=
Metric.uniformContinuous_iff.2 fun ε ε0 =>
let ⟨δ, δ0, Hδ⟩ := rat_inv_continuous_lemma abs ε0 r0
⟨δ, δ0, fun a b h => Hδ (H _ a.2) (H _ b.2) h⟩
#align real.uniform_continuous_inv Real.uniformContinuous_inv
+-/
+#print Real.uniformContinuous_abs /-
theorem Real.uniformContinuous_abs : UniformContinuous (abs : ℝ → ℝ) :=
Metric.uniformContinuous_iff.2 fun ε ε0 =>
⟨ε, ε0, fun a b => lt_of_le_of_lt (abs_abs_sub_abs_le_abs_sub _ _)⟩
#align real.uniform_continuous_abs Real.uniformContinuous_abs
+-/
+#print Real.tendsto_inv /-
theorem Real.tendsto_inv {r : ℝ} (r0 : r ≠ 0) : Tendsto (fun q => q⁻¹) (𝓝 r) (𝓝 r⁻¹) := by
rw [← abs_pos] at r0 <;>
exact
@@ -116,22 +131,30 @@ theorem Real.tendsto_inv {r : ℝ} (r0 : r ≠ 0) : Tendsto (fun q => q⁻¹) (
(Real.uniformContinuous_inv {x | |r| / 2 < |x|} (half_pos r0) fun x h => le_of_lt h)
(IsOpen.mem_nhds ((isOpen_lt' (|r| / 2)).Preimage continuous_abs) (half_lt_self r0))
#align real.tendsto_inv Real.tendsto_inv
+-/
+#print Real.continuous_inv /-
theorem Real.continuous_inv : Continuous fun a : { r : ℝ // r ≠ 0 } => a.val⁻¹ :=
continuous_iff_continuousAt.mpr fun ⟨r, hr⟩ =>
Tendsto.comp (Real.tendsto_inv hr) (continuous_iff_continuousAt.mp continuous_subtype_val _)
#align real.continuous_inv Real.continuous_inv
+-/
+#print Real.Continuous.inv /-
theorem Real.Continuous.inv [TopologicalSpace α] {f : α → ℝ} (h : ∀ a, f a ≠ 0)
(hf : Continuous f) : Continuous fun a => (f a)⁻¹ :=
show Continuous ((Inv.inv ∘ @Subtype.val ℝ fun r => r ≠ 0) ∘ fun a => ⟨f a, h a⟩) from
Real.continuous_inv.comp (hf.subtype_mk _)
#align real.continuous.inv Real.Continuous.inv
+-/
+#print Real.uniformContinuous_const_mul /-
theorem Real.uniformContinuous_const_mul {x : ℝ} : UniformContinuous ((· * ·) x) :=
uniformContinuous_const_smul x
#align real.uniform_continuous_const_mul Real.uniformContinuous_const_mul
+-/
+#print Real.uniformContinuous_mul /-
theorem Real.uniformContinuous_mul (s : Set (ℝ × ℝ)) {r₁ r₂ : ℝ}
(H : ∀ x ∈ s, |(x : ℝ × ℝ).1| < r₁ ∧ |x.2| < r₂) :
UniformContinuous fun p : s => p.1.1 * p.1.2 :=
@@ -141,8 +164,10 @@ theorem Real.uniformContinuous_mul (s : Set (ℝ × ℝ)) {r₁ r₂ : ℝ}
let ⟨h₁, h₂⟩ := max_lt_iff.1 h
Hδ (H _ a.2).1 (H _ b.2).2 h₁ h₂⟩
#align real.uniform_continuous_mul Real.uniformContinuous_mul
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Real.continuous_mul /-
protected theorem Real.continuous_mul : Continuous fun p : ℝ × ℝ => p.1 * p.2 :=
continuous_iff_continuousAt.2 fun ⟨a₁, a₂⟩ =>
tendsto_of_uniformContinuous_subtype
@@ -152,6 +177,7 @@ protected theorem Real.continuous_mul : Continuous fun p : ℝ × ℝ => p.1 * p
((isOpen_gt' (|a₂| + 1)).Preimage continuous_abs))
⟨lt_add_one (|a₁|), lt_add_one (|a₂|)⟩)
#align real.continuous_mul Real.continuous_mul
+-/
instance : TopologicalRing ℝ :=
{ Real.topologicalAddGroup with continuous_mul := Real.continuous_mul }
@@ -174,6 +200,7 @@ theorem Real.totallyBounded_ball (x ε : ℝ) : TotallyBounded (ball x ε) := by
section
+#print closure_of_rat_image_lt /-
theorem closure_of_rat_image_lt {q : ℚ} : closure ((coe : ℚ → ℝ) '' {x | q < x}) = {r | ↑q ≤ r} :=
Subset.antisymm
((isClosed_ge' _).closure_subset_iff.2
@@ -185,6 +212,7 @@ theorem closure_of_rat_image_lt {q : ℚ} : closure ((coe : ℚ → ℝ) '' {x |
⟨_, hε (show abs _ < _ by rwa [abs_of_nonneg (le_of_lt <| sub_pos.2 h₁), sub_lt_iff_lt_add']),
p, Rat.cast_lt.1 (@lt_of_le_of_lt ℝ _ _ _ _ hx h₁), rfl⟩
#align closure_of_rat_image_lt closure_of_rat_image_lt
+-/
#print Real.bounded_iff_bddBelow_bddAbove /-
/- TODO(Mario): Put these back only if needed later
@@ -206,11 +234,13 @@ theorem Real.bounded_iff_bddBelow_bddAbove {s : Set ℝ} : Bounded s ↔ BddBelo
#align real.bounded_iff_bdd_below_bdd_above Real.bounded_iff_bddBelow_bddAbove
-/
+#print Real.subset_Icc_sInf_sSup_of_bounded /-
theorem Real.subset_Icc_sInf_sSup_of_bounded {s : Set ℝ} (h : Bounded s) :
s ⊆ Icc (sInf s) (sSup s) :=
subset_Icc_csInf_csSup (Real.bounded_iff_bddBelow_bddAbove.1 h).1
(Real.bounded_iff_bddBelow_bddAbove.1 h).2
#align real.subset_Icc_Inf_Sup_of_bounded Real.subset_Icc_sInf_sSup_of_bounded
+-/
end
@@ -218,6 +248,7 @@ section Periodic
namespace Function
+#print Function.Periodic.compact_of_continuous' /-
theorem Periodic.compact_of_continuous' [TopologicalSpace α] {f : ℝ → α} {c : ℝ} (hp : Periodic f c)
(hc : 0 < c) (hf : Continuous f) : IsCompact (range f) :=
by
@@ -228,7 +259,9 @@ theorem Periodic.compact_of_continuous' [TopologicalSpace α] {f : ℝ → α} {
obtain ⟨z, hz, h2⟩ := hp.exists_mem_Ico₀ hc y
exact ⟨z, mem_Icc_of_Ico hz, h2.symm.trans h1⟩
#align function.periodic.compact_of_continuous' Function.Periodic.compact_of_continuous'
+-/
+#print Function.Periodic.compact_of_continuous /-
/-- A continuous, periodic function has compact range. -/
theorem Periodic.compact_of_continuous [TopologicalSpace α] {f : ℝ → α} {c : ℝ} (hp : Periodic f c)
(hc : c ≠ 0) (hf : Continuous f) : IsCompact (range f) :=
@@ -236,12 +269,15 @@ theorem Periodic.compact_of_continuous [TopologicalSpace α] {f : ℝ → α} {c
cases' lt_or_gt_of_ne hc with hneg hpos
exacts [hp.neg.compact_of_continuous' (neg_pos.mpr hneg) hf, hp.compact_of_continuous' hpos hf]
#align function.periodic.compact_of_continuous Function.Periodic.compact_of_continuous
+-/
+#print Function.Periodic.bounded_of_continuous /-
/-- A continuous, periodic function is bounded. -/
theorem Periodic.bounded_of_continuous [PseudoMetricSpace α] {f : ℝ → α} {c : ℝ} (hp : Periodic f c)
(hc : c ≠ 0) (hf : Continuous f) : Bounded (range f) :=
(hp.compact_of_continuous hc hf).Bounded
#align function.periodic.bounded_of_continuous Function.Periodic.bounded_of_continuous
+-/
end Function
@@ -253,6 +289,7 @@ namespace Int
open Metric
+#print Int.tendsto_coe_cofinite /-
/-- Under the coercion from `ℤ` to `ℝ`, inverse images of compact sets are finite. -/
theorem tendsto_coe_cofinite : Tendsto (coe : ℤ → ℝ) cofinite (cocompact ℝ) :=
by
@@ -261,7 +298,9 @@ theorem tendsto_coe_cofinite : Tendsto (coe : ℤ → ℝ) cofinite (cocompact
change ∀ r : ℝ, (coe ⁻¹' ball (0 : ℝ) r).Finite
simp [Real.ball_eq_Ioo, Set.finite_Ioo]
#align int.tendsto_coe_cofinite Int.tendsto_coe_cofinite
+-/
+#print Int.tendsto_zmultiplesHom_cofinite /-
/-- For nonzero `a`, the "multiples of `a`" map `zmultiples_hom` from `ℤ` to `ℝ` is discrete, i.e.
inverse images of compact sets are finite. -/
theorem tendsto_zmultiplesHom_cofinite {a : ℝ} (ha : a ≠ 0) :
@@ -271,11 +310,13 @@ theorem tendsto_zmultiplesHom_cofinite {a : ℝ} (ha : a ≠ 0) :
ext n
simp
#align int.tendsto_zmultiples_hom_cofinite Int.tendsto_zmultiplesHom_cofinite
+-/
end Int
namespace AddSubgroup
+#print AddSubgroup.tendsto_zmultiples_subtype_cofinite /-
/-- The subgroup "multiples of `a`" (`zmultiples a`) is a discrete subgroup of `ℝ`, i.e. its
intersection with compact sets is finite. -/
theorem tendsto_zmultiples_subtype_cofinite (a : ℝ) :
@@ -293,6 +334,7 @@ theorem tendsto_zmultiples_subtype_cofinite (a : ℝ) :
← preimage_comp, ← AddMonoidHom.coe_comp_rangeRestrict]
exact finite.image _ H
#align add_subgroup.tendsto_zmultiples_subtype_cofinite AddSubgroup.tendsto_zmultiples_subtype_cofinite
+-/
end AddSubgroup
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -113,7 +113,7 @@ theorem Real.tendsto_inv {r : ℝ} (r0 : r ≠ 0) : Tendsto (fun q => q⁻¹) (
rw [← abs_pos] at r0 <;>
exact
tendsto_of_uniformContinuous_subtype
- (Real.uniformContinuous_inv { x | |r| / 2 < |x| } (half_pos r0) fun x h => le_of_lt h)
+ (Real.uniformContinuous_inv {x | |r| / 2 < |x|} (half_pos r0) fun x h => le_of_lt h)
(IsOpen.mem_nhds ((isOpen_lt' (|r| / 2)).Preimage continuous_abs) (half_lt_self r0))
#align real.tendsto_inv Real.tendsto_inv
@@ -146,7 +146,7 @@ theorem Real.uniformContinuous_mul (s : Set (ℝ × ℝ)) {r₁ r₂ : ℝ}
protected theorem Real.continuous_mul : Continuous fun p : ℝ × ℝ => p.1 * p.2 :=
continuous_iff_continuousAt.2 fun ⟨a₁, a₂⟩ =>
tendsto_of_uniformContinuous_subtype
- (Real.uniformContinuous_mul ({ x | |x| < |a₁| + 1 } ×ˢ { x | |x| < |a₂| + 1 }) fun x => id)
+ (Real.uniformContinuous_mul ({x | |x| < |a₁| + 1} ×ˢ {x | |x| < |a₂| + 1}) fun x => id)
(IsOpen.mem_nhds
(((isOpen_gt' (|a₁| + 1)).Preimage continuous_abs).Prod
((isOpen_gt' (|a₂| + 1)).Preimage continuous_abs))
@@ -174,8 +174,7 @@ theorem Real.totallyBounded_ball (x ε : ℝ) : TotallyBounded (ball x ε) := by
section
-theorem closure_of_rat_image_lt {q : ℚ} :
- closure ((coe : ℚ → ℝ) '' { x | q < x }) = { r | ↑q ≤ r } :=
+theorem closure_of_rat_image_lt {q : ℚ} : closure ((coe : ℚ → ℝ) '' {x | q < x}) = {r | ↑q ≤ r} :=
Subset.antisymm
((isClosed_ge' _).closure_subset_iff.2
(image_subset_iff.2 fun p h => le_of_lt <| (@Rat.cast_lt ℝ _ _ _).2 h))
@@ -268,7 +267,7 @@ inverse images of compact sets are finite. -/
theorem tendsto_zmultiplesHom_cofinite {a : ℝ} (ha : a ≠ 0) :
Tendsto (zmultiplesHom ℝ a) cofinite (cocompact ℝ) :=
by
- convert(tendsto_cocompact_mul_right₀ ha).comp Int.tendsto_coe_cofinite
+ convert (tendsto_cocompact_mul_right₀ ha).comp Int.tendsto_coe_cofinite
ext n
simp
#align int.tendsto_zmultiples_hom_cofinite Int.tendsto_zmultiplesHom_cofinite
@@ -299,10 +298,10 @@ end AddSubgroup
/-- Given a nontrivial subgroup `G ⊆ ℝ`, if `G ∩ ℝ_{>0}` has no minimum then `G` is dense. -/
theorem AddSubgroup.dense_of_no_min {G : AddSubgroup ℝ} {g₀ : ℝ} (g₀_in : g₀ ∈ G) (g₀_ne : g₀ ≠ 0)
- (H' : ¬∃ a : ℝ, IsLeast { g : ℝ | g ∈ G ∧ 0 < g } a) : Dense (G : Set ℝ) :=
+ (H' : ¬∃ a : ℝ, IsLeast {g : ℝ | g ∈ G ∧ 0 < g} a) : Dense (G : Set ℝ) :=
by
- let G_pos := { g : ℝ | g ∈ G ∧ 0 < g }
- push_neg at H'
+ let G_pos := {g : ℝ | g ∈ G ∧ 0 < g}
+ push_neg at H'
intro x
suffices ∀ ε > (0 : ℝ), ∃ g ∈ G, |x - g| < ε by simpa only [Real.mem_closure_iff, abs_sub_comm]
intro ε ε_pos
@@ -336,7 +335,7 @@ theorem AddSubgroup.dense_or_cyclic (G : AddSubgroup ℝ) :
· right
use 0
rw [H, AddSubgroup.closure_singleton_zero]
- · let G_pos := { g : ℝ | g ∈ G ∧ 0 < g }
+ · let G_pos := {g : ℝ | g ∈ G ∧ 0 < g}
by_cases H' : ∃ a, IsLeast G_pos a
· right
rcases H' with ⟨a, ha⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -51,7 +51,7 @@ theorem Real.uniformContinuous_add : UniformContinuous fun p : ℝ × ℝ => p.1
theorem Real.uniformContinuous_neg : UniformContinuous (@Neg.neg ℝ _) :=
Metric.uniformContinuous_iff.2 fun ε ε0 =>
- ⟨_, ε0, fun a b h => by rw [dist_comm] at h <;> simpa [Real.dist_eq] using h⟩
+ ⟨_, ε0, fun a b h => by rw [dist_comm] at h <;> simpa [Real.dist_eq] using h⟩
#align real.uniform_continuous_neg Real.uniformContinuous_neg
instance : ContinuousStar ℝ :=
@@ -110,7 +110,7 @@ theorem Real.uniformContinuous_abs : UniformContinuous (abs : ℝ → ℝ) :=
#align real.uniform_continuous_abs Real.uniformContinuous_abs
theorem Real.tendsto_inv {r : ℝ} (r0 : r ≠ 0) : Tendsto (fun q => q⁻¹) (𝓝 r) (𝓝 r⁻¹) := by
- rw [← abs_pos] at r0 <;>
+ rw [← abs_pos] at r0 <;>
exact
tendsto_of_uniformContinuous_subtype
(Real.uniformContinuous_inv { x | |r| / 2 < |x| } (half_pos r0) fun x h => le_of_lt h)
@@ -200,7 +200,7 @@ theorem Real.bounded_iff_bddBelow_bddAbove {s : Set ℝ} : Bounded s ↔ BddBelo
intro bdd
rcases(bounded_iff_subset_ball 0).1 bdd with ⟨r, hr⟩
-- hr : s ⊆ closed_ball 0 r
- rw [Real.closedBall_eq_Icc] at hr
+ rw [Real.closedBall_eq_Icc] at hr
-- hr : s ⊆ Icc (0 - r) (0 + r)
exact ⟨bdd_below_Icc.mono hr, bdd_above_Icc.mono hr⟩,
fun h => bounded_of_bddAbove_of_bddBelow h.2 h.1⟩
@@ -235,7 +235,7 @@ theorem Periodic.compact_of_continuous [TopologicalSpace α] {f : ℝ → α} {c
(hc : c ≠ 0) (hf : Continuous f) : IsCompact (range f) :=
by
cases' lt_or_gt_of_ne hc with hneg hpos
- exacts[hp.neg.compact_of_continuous' (neg_pos.mpr hneg) hf, hp.compact_of_continuous' hpos hf]
+ exacts [hp.neg.compact_of_continuous' (neg_pos.mpr hneg) hf, hp.compact_of_continuous' hpos hf]
#align function.periodic.compact_of_continuous Function.Periodic.compact_of_continuous
/-- A continuous, periodic function is bounded. -/
@@ -289,7 +289,7 @@ theorem tendsto_zmultiples_subtype_cofinite (a : ℝ) :
apply Set.toFinite
intro K hK
have H := Int.tendsto_zmultiplesHom_cofinite ha hK
- simp only [Filter.mem_map, mem_cofinite, ← preimage_compl] at H⊢
+ simp only [Filter.mem_map, mem_cofinite, ← preimage_compl] at H ⊢
rw [← (zmultiplesHom ℝ a).rangeRestrict_surjective.image_preimage ((zmultiples a).Subtype ⁻¹' Kᶜ),
← preimage_comp, ← AddMonoidHom.coe_comp_rangeRestrict]
exact finite.image _ H
@@ -302,7 +302,7 @@ theorem AddSubgroup.dense_of_no_min {G : AddSubgroup ℝ} {g₀ : ℝ} (g₀_in
(H' : ¬∃ a : ℝ, IsLeast { g : ℝ | g ∈ G ∧ 0 < g } a) : Dense (G : Set ℝ) :=
by
let G_pos := { g : ℝ | g ∈ G ∧ 0 < g }
- push_neg at H'
+ push_neg at H'
intro x
suffices ∀ ε > (0 : ℝ), ∃ g ∈ G, |x - g| < ε by simpa only [Real.mem_closure_iff, abs_sub_comm]
intro ε ε_pos
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -32,7 +32,7 @@ noncomputable section
open Classical Filter Int Metric Set TopologicalSpace
-open Classical Topology Filter uniformity Interval
+open scoped Classical Topology Filter uniformity Interval
universe u v w
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -41,12 +41,6 @@ variable {α : Type u} {β : Type v} {γ : Type w}
instance : NoncompactSpace ℝ :=
Int.closedEmbedding_coe_real.NoncompactSpace
-/- warning: real.uniform_continuous_add -> Real.uniformContinuous_add is a dubious translation:
-lean 3 declaration is
- UniformContinuous.{0, 0} (Prod.{0, 0} Real Real) Real (Prod.uniformSpace.{0, 0} Real Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (fun (p : Prod.{0, 0} Real Real) => HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (Prod.fst.{0, 0} Real Real p) (Prod.snd.{0, 0} Real Real p))
-but is expected to have type
- UniformContinuous.{0, 0} (Prod.{0, 0} Real Real) Real (instUniformSpaceProd.{0, 0} Real Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (fun (p : Prod.{0, 0} Real Real) => HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Prod.fst.{0, 0} Real Real p) (Prod.snd.{0, 0} Real Real p))
-Case conversion may be inaccurate. Consider using '#align real.uniform_continuous_add Real.uniformContinuous_addₓ'. -/
theorem Real.uniformContinuous_add : UniformContinuous fun p : ℝ × ℝ => p.1 + p.2 :=
Metric.uniformContinuous_iff.2 fun ε ε0 =>
let ⟨δ, δ0, Hδ⟩ := rat_add_continuous_lemma abs ε0
@@ -55,12 +49,6 @@ theorem Real.uniformContinuous_add : UniformContinuous fun p : ℝ × ℝ => p.1
Hδ h₁ h₂⟩
#align real.uniform_continuous_add Real.uniformContinuous_add
-/- warning: real.uniform_continuous_neg -> Real.uniformContinuous_neg is a dubious translation:
-lean 3 declaration is
- UniformContinuous.{0, 0} Real Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (Neg.neg.{0} Real Real.hasNeg)
-but is expected to have type
- UniformContinuous.{0, 0} Real Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (Neg.neg.{0} Real Real.instNegReal)
-Case conversion may be inaccurate. Consider using '#align real.uniform_continuous_neg Real.uniformContinuous_negₓ'. -/
theorem Real.uniformContinuous_neg : UniformContinuous (@Neg.neg ℝ _) :=
Metric.uniformContinuous_iff.2 fun ε ε0 =>
⟨_, ε0, fun a b h => by rw [dist_comm] at h <;> simpa [Real.dist_eq] using h⟩
@@ -81,12 +69,6 @@ instance : ProperSpace ℝ
instance : SecondCountableTopology ℝ :=
secondCountable_of_proper
-/- warning: real.is_topological_basis_Ioo_rat -> Real.isTopologicalBasis_Ioo_rat is a dubious translation:
-lean 3 declaration is
- TopologicalSpace.IsTopologicalBasis.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Set.iUnion.{0, 1} (Set.{0} Real) Rat (fun (a : Rat) => Set.iUnion.{0, 1} (Set.{0} Real) Rat (fun (b : Rat) => Set.iUnion.{0, 0} (Set.{0} Real) (LT.lt.{0} Rat Rat.hasLt a b) (fun (h : LT.lt.{0} Rat Rat.hasLt a b) => Singleton.singleton.{0, 0} (Set.{0} Real) (Set.{0} (Set.{0} Real)) (Set.hasSingleton.{0} (Set.{0} Real)) (Set.Ioo.{0} Real Real.preorder ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Rat Real (HasLiftT.mk.{1, 1} Rat Real (CoeTCₓ.coe.{1, 1} Rat Real (Rat.castCoe.{0} Real Real.hasRatCast))) a) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Rat Real (HasLiftT.mk.{1, 1} Rat Real (CoeTCₓ.coe.{1, 1} Rat Real (Rat.castCoe.{0} Real Real.hasRatCast))) b))))))
-but is expected to have type
- TopologicalSpace.IsTopologicalBasis.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Set.iUnion.{0, 1} (Set.{0} Real) Rat (fun (a : Rat) => Set.iUnion.{0, 1} (Set.{0} Real) Rat (fun (b : Rat) => Set.iUnion.{0, 0} (Set.{0} Real) (LT.lt.{0} Rat Rat.instLTRat_1 a b) (fun (h : LT.lt.{0} Rat Rat.instLTRat_1 a b) => Singleton.singleton.{0, 0} (Set.{0} Real) (Set.{0} (Set.{0} Real)) (Set.instSingletonSet.{0} (Set.{0} Real)) (Set.Ioo.{0} Real Real.instPreorderReal (Rat.cast.{0} Real Real.ratCast a) (Rat.cast.{0} Real Real.ratCast b))))))
-Case conversion may be inaccurate. Consider using '#align real.is_topological_basis_Ioo_rat Real.isTopologicalBasis_Ioo_ratₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (a b) -/
theorem Real.isTopologicalBasis_Ioo_rat :
@IsTopologicalBasis ℝ _ (⋃ (a : ℚ) (b : ℚ) (h : a < b), {Ioo a b}) :=
@@ -99,24 +81,12 @@ theorem Real.isTopologicalBasis_Ioo_rat :
⟨hqa, hap⟩, fun a' ⟨hqa', ha'p⟩ => h ⟨hlq.trans hqa', ha'p.trans hpu⟩⟩
#align real.is_topological_basis_Ioo_rat Real.isTopologicalBasis_Ioo_rat
-/- warning: real.cocompact_eq -> Real.cocompact_eq is a dubious translation:
-lean 3 declaration is
- Eq.{1} (Filter.{0} Real) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (Sup.sup.{0} (Filter.{0} Real) (SemilatticeSup.toHasSup.{0} (Filter.{0} Real) (Lattice.toSemilatticeSup.{0} (Filter.{0} Real) (ConditionallyCompleteLattice.toLattice.{0} (Filter.{0} Real) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} Real) (Filter.completeLattice.{0} Real))))) (Filter.atBot.{0} Real Real.preorder) (Filter.atTop.{0} Real Real.preorder))
-but is expected to have type
- Eq.{1} (Filter.{0} Real) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (Sup.sup.{0} (Filter.{0} Real) (SemilatticeSup.toSup.{0} (Filter.{0} Real) (Lattice.toSemilatticeSup.{0} (Filter.{0} Real) (ConditionallyCompleteLattice.toLattice.{0} (Filter.{0} Real) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} Real) (Filter.instCompleteLatticeFilter.{0} Real))))) (Filter.atBot.{0} Real Real.instPreorderReal) (Filter.atTop.{0} Real Real.instPreorderReal))
-Case conversion may be inaccurate. Consider using '#align real.cocompact_eq Real.cocompact_eqₓ'. -/
@[simp]
theorem Real.cocompact_eq : cocompact ℝ = atBot ⊔ atTop := by
simp only [← comap_dist_right_atTop_eq_cocompact (0 : ℝ), Real.dist_eq, sub_zero,
comap_abs_at_top]
#align real.cocompact_eq Real.cocompact_eq
-/- warning: real.mem_closure_iff -> Real.mem_closure_iff is a dubious translation:
-lean 3 declaration is
- forall {s : Set.{0} Real} {x : Real}, Iff (Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (closure.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) s)) (forall (ε : Real), (GT.gt.{0} Real Real.hasLt ε (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Exists.{1} Real (fun (y : Real) => Exists.{0} (Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) y s) (fun (H : Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) y s) => LT.lt.{0} Real Real.hasLt (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.hasNeg Real.hasSup) (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.hasSub) y x)) ε))))
-but is expected to have type
- forall {s : Set.{0} Real} {x : Real}, Iff (Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (closure.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) s)) (forall (ε : Real), (GT.gt.{0} Real Real.instLTReal ε (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Exists.{1} Real (fun (y : Real) => And (Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) y s) (LT.lt.{0} Real Real.instLTReal (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.instNegReal Real.instSupReal) (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.instSubReal) y x)) ε))))
-Case conversion may be inaccurate. Consider using '#align real.mem_closure_iff Real.mem_closure_iffₓ'. -/
/- TODO(Mario): Prove that these are uniform isomorphisms instead of uniform embeddings
lemma uniform_embedding_add_rat {r : ℚ} : uniform_embedding (λp:ℚ, p + r) :=
_
@@ -127,12 +97,6 @@ theorem Real.mem_closure_iff {s : Set ℝ} {x : ℝ} : x ∈ closure s ↔ ∀
by simp [mem_closure_iff_nhds_basis nhds_basis_ball, Real.dist_eq]
#align real.mem_closure_iff Real.mem_closure_iff
-/- warning: real.uniform_continuous_inv -> Real.uniformContinuous_inv is a dubious translation:
-lean 3 declaration is
- forall (s : Set.{0} Real) {r : Real}, (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) r) -> (forall (x : Real), (Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x s) -> (LE.le.{0} Real Real.hasLe r (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.hasNeg Real.hasSup) x))) -> (UniformContinuous.{0, 0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) s) Real (Subtype.uniformSpace.{0} Real (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x s) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (fun (p : coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) s) => Inv.inv.{0} Real Real.hasInv (Subtype.val.{1} Real (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x s) p)))
-but is expected to have type
- forall (s : Set.{0} Real) {r : Real}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) r) -> (forall (x : Real), (Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x s) -> (LE.le.{0} Real Real.instLEReal r (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.instNegReal Real.instSupReal) x))) -> (UniformContinuous.{0, 0} (Set.Elem.{0} Real s) Real (instUniformSpaceSubtype.{0} Real (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x s) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (fun (p : Set.Elem.{0} Real s) => Inv.inv.{0} Real Real.instInvReal (Subtype.val.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x s) p)))
-Case conversion may be inaccurate. Consider using '#align real.uniform_continuous_inv Real.uniformContinuous_invₓ'. -/
theorem Real.uniformContinuous_inv (s : Set ℝ) {r : ℝ} (r0 : 0 < r) (H : ∀ x ∈ s, r ≤ |x|) :
UniformContinuous fun p : s => p.1⁻¹ :=
Metric.uniformContinuous_iff.2 fun ε ε0 =>
@@ -140,23 +104,11 @@ theorem Real.uniformContinuous_inv (s : Set ℝ) {r : ℝ} (r0 : 0 < r) (H : ∀
⟨δ, δ0, fun a b h => Hδ (H _ a.2) (H _ b.2) h⟩
#align real.uniform_continuous_inv Real.uniformContinuous_inv
-/- warning: real.uniform_continuous_abs -> Real.uniformContinuous_abs is a dubious translation:
-lean 3 declaration is
- UniformContinuous.{0, 0} Real Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.hasNeg Real.hasSup))
-but is expected to have type
- UniformContinuous.{0, 0} Real Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.instNegReal Real.instSupReal))
-Case conversion may be inaccurate. Consider using '#align real.uniform_continuous_abs Real.uniformContinuous_absₓ'. -/
theorem Real.uniformContinuous_abs : UniformContinuous (abs : ℝ → ℝ) :=
Metric.uniformContinuous_iff.2 fun ε ε0 =>
⟨ε, ε0, fun a b => lt_of_le_of_lt (abs_abs_sub_abs_le_abs_sub _ _)⟩
#align real.uniform_continuous_abs Real.uniformContinuous_abs
-/- warning: real.tendsto_inv -> Real.tendsto_inv is a dubious translation:
-lean 3 declaration is
- forall {r : Real}, (Ne.{1} Real r (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Filter.Tendsto.{0, 0} Real Real (fun (q : Real) => Inv.inv.{0} Real Real.hasInv q) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) r) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Inv.inv.{0} Real Real.hasInv r)))
-but is expected to have type
- forall {r : Real}, (Ne.{1} Real r (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Filter.Tendsto.{0, 0} Real Real (fun (q : Real) => Inv.inv.{0} Real Real.instInvReal q) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) r) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Inv.inv.{0} Real Real.instInvReal r)))
-Case conversion may be inaccurate. Consider using '#align real.tendsto_inv Real.tendsto_invₓ'. -/
theorem Real.tendsto_inv {r : ℝ} (r0 : r ≠ 0) : Tendsto (fun q => q⁻¹) (𝓝 r) (𝓝 r⁻¹) := by
rw [← abs_pos] at r0 <;>
exact
@@ -165,45 +117,21 @@ theorem Real.tendsto_inv {r : ℝ} (r0 : r ≠ 0) : Tendsto (fun q => q⁻¹) (
(IsOpen.mem_nhds ((isOpen_lt' (|r| / 2)).Preimage continuous_abs) (half_lt_self r0))
#align real.tendsto_inv Real.tendsto_inv
-/- warning: real.continuous_inv -> Real.continuous_inv is a dubious translation:
-lean 3 declaration is
- Continuous.{0, 0} (Subtype.{1} Real (fun (r : Real) => Ne.{1} Real r (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (Subtype.topologicalSpace.{0} Real (fun (r : Real) => Ne.{1} Real r (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (fun (a : Subtype.{1} Real (fun (r : Real) => Ne.{1} Real r (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) => Inv.inv.{0} Real Real.hasInv (Subtype.val.{1} Real (fun (r : Real) => Ne.{1} Real r (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) a))
-but is expected to have type
- Continuous.{0, 0} (Subtype.{1} Real (fun (r : Real) => Ne.{1} Real r (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) Real (instTopologicalSpaceSubtype.{0} Real (fun (r : Real) => Ne.{1} Real r (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (fun (a : Subtype.{1} Real (fun (r : Real) => Ne.{1} Real r (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => Inv.inv.{0} Real Real.instInvReal (Subtype.val.{1} Real (fun (r : Real) => Ne.{1} Real r (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) a))
-Case conversion may be inaccurate. Consider using '#align real.continuous_inv Real.continuous_invₓ'. -/
theorem Real.continuous_inv : Continuous fun a : { r : ℝ // r ≠ 0 } => a.val⁻¹ :=
continuous_iff_continuousAt.mpr fun ⟨r, hr⟩ =>
Tendsto.comp (Real.tendsto_inv hr) (continuous_iff_continuousAt.mp continuous_subtype_val _)
#align real.continuous_inv Real.continuous_inv
-/- warning: real.continuous.inv -> Real.Continuous.inv is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {f : α -> Real}, (forall (a : α), Ne.{1} Real (f a) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Continuous.{u1, 0} α Real _inst_1 (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) f) -> (Continuous.{u1, 0} α Real _inst_1 (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (fun (a : α) => Inv.inv.{0} Real Real.hasInv (f a)))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {f : α -> Real}, (forall (a : α), Ne.{1} Real (f a) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Continuous.{u1, 0} α Real _inst_1 (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) f) -> (Continuous.{u1, 0} α Real _inst_1 (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (fun (a : α) => Inv.inv.{0} Real Real.instInvReal (f a)))
-Case conversion may be inaccurate. Consider using '#align real.continuous.inv Real.Continuous.invₓ'. -/
theorem Real.Continuous.inv [TopologicalSpace α] {f : α → ℝ} (h : ∀ a, f a ≠ 0)
(hf : Continuous f) : Continuous fun a => (f a)⁻¹ :=
show Continuous ((Inv.inv ∘ @Subtype.val ℝ fun r => r ≠ 0) ∘ fun a => ⟨f a, h a⟩) from
Real.continuous_inv.comp (hf.subtype_mk _)
#align real.continuous.inv Real.Continuous.inv
-/- warning: real.uniform_continuous_const_mul -> Real.uniformContinuous_const_mul is a dubious translation:
-lean 3 declaration is
- forall {x : Real}, UniformContinuous.{0, 0} Real Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) x)
-but is expected to have type
- forall {x : Real}, UniformContinuous.{0, 0} Real Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) ((fun (x._@.Mathlib.Topology.Instances.Real._hyg.946 : Real) (x._@.Mathlib.Topology.Instances.Real._hyg.948 : Real) => HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) x._@.Mathlib.Topology.Instances.Real._hyg.946 x._@.Mathlib.Topology.Instances.Real._hyg.948) x)
-Case conversion may be inaccurate. Consider using '#align real.uniform_continuous_const_mul Real.uniformContinuous_const_mulₓ'. -/
theorem Real.uniformContinuous_const_mul {x : ℝ} : UniformContinuous ((· * ·) x) :=
uniformContinuous_const_smul x
#align real.uniform_continuous_const_mul Real.uniformContinuous_const_mul
-/- warning: real.uniform_continuous_mul -> Real.uniformContinuous_mul is a dubious translation:
-lean 3 declaration is
- forall (s : Set.{0} (Prod.{0, 0} Real Real)) {r₁ : Real} {r₂ : Real}, (forall (x : Prod.{0, 0} Real Real), (Membership.Mem.{0, 0} (Prod.{0, 0} Real Real) (Set.{0} (Prod.{0, 0} Real Real)) (Set.hasMem.{0} (Prod.{0, 0} Real Real)) x s) -> (And (LT.lt.{0} Real Real.hasLt (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.hasNeg Real.hasSup) (Prod.fst.{0, 0} Real Real x)) r₁) (LT.lt.{0} Real Real.hasLt (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.hasNeg Real.hasSup) (Prod.snd.{0, 0} Real Real x)) r₂))) -> (UniformContinuous.{0, 0} (coeSort.{1, 2} (Set.{0} (Prod.{0, 0} Real Real)) Type (Set.hasCoeToSort.{0} (Prod.{0, 0} Real Real)) s) Real (Subtype.uniformSpace.{0} (Prod.{0, 0} Real Real) (fun (x : Prod.{0, 0} Real Real) => Membership.Mem.{0, 0} (Prod.{0, 0} Real Real) (Set.{0} (Prod.{0, 0} Real Real)) (Set.hasMem.{0} (Prod.{0, 0} Real Real)) x s) (Prod.uniformSpace.{0, 0} Real Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (fun (p : coeSort.{1, 2} (Set.{0} (Prod.{0, 0} Real Real)) Type (Set.hasCoeToSort.{0} (Prod.{0, 0} Real Real)) s) => HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Prod.fst.{0, 0} Real Real (Subtype.val.{1} (Prod.{0, 0} Real Real) (fun (x : Prod.{0, 0} Real Real) => Membership.Mem.{0, 0} (Prod.{0, 0} Real Real) (Set.{0} (Prod.{0, 0} Real Real)) (Set.hasMem.{0} (Prod.{0, 0} Real Real)) x s) p)) (Prod.snd.{0, 0} Real Real (Subtype.val.{1} (Prod.{0, 0} Real Real) (fun (x : Prod.{0, 0} Real Real) => Membership.Mem.{0, 0} (Prod.{0, 0} Real Real) (Set.{0} (Prod.{0, 0} Real Real)) (Set.hasMem.{0} (Prod.{0, 0} Real Real)) x s) p))))
-but is expected to have type
- forall (s : Set.{0} (Prod.{0, 0} Real Real)) {r₁ : Real} {r₂ : Real}, (forall (x : Prod.{0, 0} Real Real), (Membership.mem.{0, 0} (Prod.{0, 0} Real Real) (Set.{0} (Prod.{0, 0} Real Real)) (Set.instMembershipSet.{0} (Prod.{0, 0} Real Real)) x s) -> (And (LT.lt.{0} Real Real.instLTReal (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.instNegReal Real.instSupReal) (Prod.fst.{0, 0} Real Real x)) r₁) (LT.lt.{0} Real Real.instLTReal (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.instNegReal Real.instSupReal) (Prod.snd.{0, 0} Real Real x)) r₂))) -> (UniformContinuous.{0, 0} (Set.Elem.{0} (Prod.{0, 0} Real Real) s) Real (instUniformSpaceSubtype.{0} (Prod.{0, 0} Real Real) (fun (x : Prod.{0, 0} Real Real) => Membership.mem.{0, 0} (Prod.{0, 0} Real Real) (Set.{0} (Prod.{0, 0} Real Real)) (Set.instMembershipSet.{0} (Prod.{0, 0} Real Real)) x s) (instUniformSpaceProd.{0, 0} Real Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (fun (p : Set.Elem.{0} (Prod.{0, 0} Real Real) s) => HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Prod.fst.{0, 0} Real Real (Subtype.val.{1} (Prod.{0, 0} Real Real) (fun (x : Prod.{0, 0} Real Real) => Membership.mem.{0, 0} (Prod.{0, 0} Real Real) (Set.{0} (Prod.{0, 0} Real Real)) (Set.instMembershipSet.{0} (Prod.{0, 0} Real Real)) x s) p)) (Prod.snd.{0, 0} Real Real (Subtype.val.{1} (Prod.{0, 0} Real Real) (fun (x : Prod.{0, 0} Real Real) => Membership.mem.{0, 0} (Prod.{0, 0} Real Real) (Set.{0} (Prod.{0, 0} Real Real)) (Set.instMembershipSet.{0} (Prod.{0, 0} Real Real)) x s) p))))
-Case conversion may be inaccurate. Consider using '#align real.uniform_continuous_mul Real.uniformContinuous_mulₓ'. -/
theorem Real.uniformContinuous_mul (s : Set (ℝ × ℝ)) {r₁ r₂ : ℝ}
(H : ∀ x ∈ s, |(x : ℝ × ℝ).1| < r₁ ∧ |x.2| < r₂) :
UniformContinuous fun p : s => p.1.1 * p.1.2 :=
@@ -214,12 +142,6 @@ theorem Real.uniformContinuous_mul (s : Set (ℝ × ℝ)) {r₁ r₂ : ℝ}
Hδ (H _ a.2).1 (H _ b.2).2 h₁ h₂⟩
#align real.uniform_continuous_mul Real.uniformContinuous_mul
-/- warning: real.continuous_mul -> Real.continuous_mul is a dubious translation:
-lean 3 declaration is
- Continuous.{0, 0} (Prod.{0, 0} Real Real) Real (Prod.topologicalSpace.{0, 0} Real Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (fun (p : Prod.{0, 0} Real Real) => HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Prod.fst.{0, 0} Real Real p) (Prod.snd.{0, 0} Real Real p))
-but is expected to have type
- Continuous.{0, 0} (Prod.{0, 0} Real Real) Real (instTopologicalSpaceProd.{0, 0} Real Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (fun (p : Prod.{0, 0} Real Real) => HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Prod.fst.{0, 0} Real Real p) (Prod.snd.{0, 0} Real Real p))
-Case conversion may be inaccurate. Consider using '#align real.continuous_mul Real.continuous_mulₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
protected theorem Real.continuous_mul : Continuous fun p : ℝ × ℝ => p.1 * p.2 :=
continuous_iff_continuousAt.2 fun ⟨a₁, a₂⟩ =>
@@ -252,12 +174,6 @@ theorem Real.totallyBounded_ball (x ε : ℝ) : TotallyBounded (ball x ε) := by
section
-/- warning: closure_of_rat_image_lt -> closure_of_rat_image_lt is a dubious translation:
-lean 3 declaration is
- forall {q : Rat}, Eq.{1} (Set.{0} Real) (closure.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Set.image.{0, 0} Rat Real ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Rat Real (HasLiftT.mk.{1, 1} Rat Real (CoeTCₓ.coe.{1, 1} Rat Real (Rat.castCoe.{0} Real Real.hasRatCast)))) (setOf.{0} Rat (fun (x : Rat) => LT.lt.{0} Rat Rat.hasLt q x)))) (setOf.{0} Real (fun (r : Real) => LE.le.{0} Real Real.hasLe ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Rat Real (HasLiftT.mk.{1, 1} Rat Real (CoeTCₓ.coe.{1, 1} Rat Real (Rat.castCoe.{0} Real Real.hasRatCast))) q) r))
-but is expected to have type
- forall {q : Rat}, Eq.{1} (Set.{0} Real) (closure.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Set.image.{0, 0} Rat Real (Rat.cast.{0} Real Real.ratCast) (setOf.{0} Rat (fun (x : Rat) => LT.lt.{0} Rat Rat.instLTRat_1 q x)))) (setOf.{0} Real (fun (r : Real) => LE.le.{0} Real Real.instLEReal (Rat.cast.{0} Real Real.ratCast q) r))
-Case conversion may be inaccurate. Consider using '#align closure_of_rat_image_lt closure_of_rat_image_ltₓ'. -/
theorem closure_of_rat_image_lt {q : ℚ} :
closure ((coe : ℚ → ℝ) '' { x | q < x }) = { r | ↑q ≤ r } :=
Subset.antisymm
@@ -291,12 +207,6 @@ theorem Real.bounded_iff_bddBelow_bddAbove {s : Set ℝ} : Bounded s ↔ BddBelo
#align real.bounded_iff_bdd_below_bdd_above Real.bounded_iff_bddBelow_bddAbove
-/
-/- warning: real.subset_Icc_Inf_Sup_of_bounded -> Real.subset_Icc_sInf_sSup_of_bounded is a dubious translation:
-lean 3 declaration is
- forall {s : Set.{0} Real}, (Metric.Bounded.{0} Real Real.pseudoMetricSpace s) -> (HasSubset.Subset.{0} (Set.{0} Real) (Set.hasSubset.{0} Real) s (Set.Icc.{0} Real Real.preorder (InfSet.sInf.{0} Real Real.hasInf s) (SupSet.sSup.{0} Real Real.hasSup s)))
-but is expected to have type
- forall {s : Set.{0} Real}, (Metric.Bounded.{0} Real Real.pseudoMetricSpace s) -> (HasSubset.Subset.{0} (Set.{0} Real) (Set.instHasSubsetSet.{0} Real) s (Set.Icc.{0} Real Real.instPreorderReal (InfSet.sInf.{0} Real Real.instInfSetReal s) (SupSet.sSup.{0} Real Real.instSupSetReal s)))
-Case conversion may be inaccurate. Consider using '#align real.subset_Icc_Inf_Sup_of_bounded Real.subset_Icc_sInf_sSup_of_boundedₓ'. -/
theorem Real.subset_Icc_sInf_sSup_of_bounded {s : Set ℝ} (h : Bounded s) :
s ⊆ Icc (sInf s) (sSup s) :=
subset_Icc_csInf_csSup (Real.bounded_iff_bddBelow_bddAbove.1 h).1
@@ -309,12 +219,6 @@ section Periodic
namespace Function
-/- warning: function.periodic.compact_of_continuous' -> Function.Periodic.compact_of_continuous' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {f : Real -> α} {c : Real}, (Function.Periodic.{0, u1} Real α Real.hasAdd f c) -> (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) c) -> (Continuous.{0, u1} Real α (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) _inst_1 f) -> (IsCompact.{u1} α _inst_1 (Set.range.{u1, 1} α Real f))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {f : Real -> α} {c : Real}, (Function.Periodic.{0, u1} Real α Real.instAddReal f c) -> (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) c) -> (Continuous.{0, u1} Real α (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) _inst_1 f) -> (IsCompact.{u1} α _inst_1 (Set.range.{u1, 1} α Real f))
-Case conversion may be inaccurate. Consider using '#align function.periodic.compact_of_continuous' Function.Periodic.compact_of_continuous'ₓ'. -/
theorem Periodic.compact_of_continuous' [TopologicalSpace α] {f : ℝ → α} {c : ℝ} (hp : Periodic f c)
(hc : 0 < c) (hf : Continuous f) : IsCompact (range f) :=
by
@@ -326,12 +230,6 @@ theorem Periodic.compact_of_continuous' [TopologicalSpace α] {f : ℝ → α} {
exact ⟨z, mem_Icc_of_Ico hz, h2.symm.trans h1⟩
#align function.periodic.compact_of_continuous' Function.Periodic.compact_of_continuous'
-/- warning: function.periodic.compact_of_continuous -> Function.Periodic.compact_of_continuous is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {f : Real -> α} {c : Real}, (Function.Periodic.{0, u1} Real α Real.hasAdd f c) -> (Ne.{1} Real c (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Continuous.{0, u1} Real α (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) _inst_1 f) -> (IsCompact.{u1} α _inst_1 (Set.range.{u1, 1} α Real f))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {f : Real -> α} {c : Real}, (Function.Periodic.{0, u1} Real α Real.instAddReal f c) -> (Ne.{1} Real c (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Continuous.{0, u1} Real α (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) _inst_1 f) -> (IsCompact.{u1} α _inst_1 (Set.range.{u1, 1} α Real f))
-Case conversion may be inaccurate. Consider using '#align function.periodic.compact_of_continuous Function.Periodic.compact_of_continuousₓ'. -/
/-- A continuous, periodic function has compact range. -/
theorem Periodic.compact_of_continuous [TopologicalSpace α] {f : ℝ → α} {c : ℝ} (hp : Periodic f c)
(hc : c ≠ 0) (hf : Continuous f) : IsCompact (range f) :=
@@ -340,12 +238,6 @@ theorem Periodic.compact_of_continuous [TopologicalSpace α] {f : ℝ → α} {c
exacts[hp.neg.compact_of_continuous' (neg_pos.mpr hneg) hf, hp.compact_of_continuous' hpos hf]
#align function.periodic.compact_of_continuous Function.Periodic.compact_of_continuous
-/- warning: function.periodic.bounded_of_continuous -> Function.Periodic.bounded_of_continuous is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : PseudoMetricSpace.{u1} α] {f : Real -> α} {c : Real}, (Function.Periodic.{0, u1} Real α Real.hasAdd f c) -> (Ne.{1} Real c (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Continuous.{0, u1} Real α (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α _inst_1)) f) -> (Metric.Bounded.{u1} α _inst_1 (Set.range.{u1, 1} α Real f))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : PseudoMetricSpace.{u1} α] {f : Real -> α} {c : Real}, (Function.Periodic.{0, u1} Real α Real.instAddReal f c) -> (Ne.{1} Real c (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Continuous.{0, u1} Real α (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α _inst_1)) f) -> (Metric.Bounded.{u1} α _inst_1 (Set.range.{u1, 1} α Real f))
-Case conversion may be inaccurate. Consider using '#align function.periodic.bounded_of_continuous Function.Periodic.bounded_of_continuousₓ'. -/
/-- A continuous, periodic function is bounded. -/
theorem Periodic.bounded_of_continuous [PseudoMetricSpace α] {f : ℝ → α} {c : ℝ} (hp : Periodic f c)
(hc : c ≠ 0) (hf : Continuous f) : Bounded (range f) :=
@@ -362,12 +254,6 @@ namespace Int
open Metric
-/- warning: int.tendsto_coe_cofinite -> Int.tendsto_coe_cofinite is a dubious translation:
-lean 3 declaration is
- Filter.Tendsto.{0, 0} Int Real ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast)))) (Filter.cofinite.{0} Int) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))
-but is expected to have type
- Filter.Tendsto.{0, 0} Int Real (Int.cast.{0} Real Real.intCast) (Filter.cofinite.{0} Int) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))
-Case conversion may be inaccurate. Consider using '#align int.tendsto_coe_cofinite Int.tendsto_coe_cofiniteₓ'. -/
/-- Under the coercion from `ℤ` to `ℝ`, inverse images of compact sets are finite. -/
theorem tendsto_coe_cofinite : Tendsto (coe : ℤ → ℝ) cofinite (cocompact ℝ) :=
by
@@ -377,12 +263,6 @@ theorem tendsto_coe_cofinite : Tendsto (coe : ℤ → ℝ) cofinite (cocompact
simp [Real.ball_eq_Ioo, Set.finite_Ioo]
#align int.tendsto_coe_cofinite Int.tendsto_coe_cofinite
-/- warning: int.tendsto_zmultiples_hom_cofinite -> Int.tendsto_zmultiplesHom_cofinite is a dubious translation:
-lean 3 declaration is
- forall {a : Real}, (Ne.{1} Real a (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Filter.Tendsto.{0, 0} Int Real (coeFn.{1, 1} (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) (fun (_x : AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) => Int -> Real) (AddMonoidHom.hasCoeToFun.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) (coeFn.{1, 1} (Equiv.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup))))) (fun (_x : Equiv.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup))))) => Real -> (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup))))) (Equiv.hasCoeToFun.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup))))) (zmultiplesHom.{0} Real Real.addGroup) a)) (Filter.cofinite.{0} Int) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))))
-but is expected to have type
- forall {a : Real}, (Ne.{1} Real a (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Filter.Tendsto.{0, 0} Int Real (FunLike.coe.{1, 1, 1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) a) Int (fun (_x : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Int) => Real) _x) (AddHomClass.toFunLike.{0, 0, 0} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) a) Int Real (AddZeroClass.toAdd.{0} Int (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (AddZeroClass.toAdd.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (AddMonoidHomClass.toAddHomClass.{0, 0, 0} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) a) Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddMonoidHom.addMonoidHomClass.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))))) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))))) Real (fun (_x : Real) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) _x) (Equiv.instFunLikeEquiv.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))))) (zmultiplesHom.{0} Real Real.instAddGroupReal) a)) (Filter.cofinite.{0} Int) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))))
-Case conversion may be inaccurate. Consider using '#align int.tendsto_zmultiples_hom_cofinite Int.tendsto_zmultiplesHom_cofiniteₓ'. -/
/-- For nonzero `a`, the "multiples of `a`" map `zmultiples_hom` from `ℤ` to `ℝ` is discrete, i.e.
inverse images of compact sets are finite. -/
theorem tendsto_zmultiplesHom_cofinite {a : ℝ} (ha : a ≠ 0) :
@@ -397,9 +277,6 @@ end Int
namespace AddSubgroup
-/- warning: add_subgroup.tendsto_zmultiples_subtype_cofinite -> AddSubgroup.tendsto_zmultiples_subtype_cofinite is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align add_subgroup.tendsto_zmultiples_subtype_cofinite AddSubgroup.tendsto_zmultiples_subtype_cofiniteₓ'. -/
/-- The subgroup "multiples of `a`" (`zmultiples a`) is a discrete subgroup of `ℝ`, i.e. its
intersection with compact sets is finite. -/
theorem tendsto_zmultiples_subtype_cofinite (a : ℝ) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -76,10 +76,7 @@ instance : UniformAddGroup ℝ :=
instance : TopologicalAddGroup ℝ := by infer_instance
instance : ProperSpace ℝ
- where isCompact_closedBall x r :=
- by
- rw [Real.closedBall_eq_Icc]
- apply is_compact_Icc
+ where isCompact_closedBall x r := by rw [Real.closedBall_eq_Icc]; apply is_compact_Icc
instance : SecondCountableTopology ℝ :=
secondCountable_of_proper
@@ -98,10 +95,8 @@ theorem Real.isTopologicalBasis_Ioo_rat :
let ⟨l, u, ⟨hl, hu⟩, h⟩ := mem_nhds_iff_exists_Ioo_subset.mp (IsOpen.mem_nhds hv hav)
let ⟨q, hlq, hqa⟩ := exists_rat_btwn hl
let ⟨p, hap, hpu⟩ := exists_rat_btwn hu
- ⟨Ioo q p, by
- simp only [mem_Union]
- exact ⟨q, p, Rat.cast_lt.1 <| hqa.trans hap, rfl⟩, ⟨hqa, hap⟩, fun a' ⟨hqa', ha'p⟩ =>
- h ⟨hlq.trans hqa', ha'p.trans hpu⟩⟩
+ ⟨Ioo q p, by simp only [mem_Union]; exact ⟨q, p, Rat.cast_lt.1 <| hqa.trans hap, rfl⟩,
+ ⟨hqa, hap⟩, fun a' ⟨hqa', ha'p⟩ => h ⟨hlq.trans hqa', ha'p.trans hpu⟩⟩
#align real.is_topological_basis_Ioo_rat Real.isTopologicalBasis_Ioo_rat
/- warning: real.cocompact_eq -> Real.cocompact_eq is a dubious translation:
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -403,10 +403,7 @@ end Int
namespace AddSubgroup
/- warning: add_subgroup.tendsto_zmultiples_subtype_cofinite -> AddSubgroup.tendsto_zmultiples_subtype_cofinite is a dubious translation:
-lean 3 declaration is
- forall (a : Real), Filter.Tendsto.{0, 0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) Real (coeFn.{1, 1} (AddMonoidHom.{0, 0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) Real (AddMonoid.toAddZeroClass.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (SubNegMonoid.toAddMonoid.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (AddGroup.toSubNegMonoid.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (AddSubgroup.toAddGroup.{0} Real Real.addGroup (AddSubgroup.zmultiples.{0} Real Real.addGroup a))))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) (fun (_x : AddMonoidHom.{0, 0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) Real (AddMonoid.toAddZeroClass.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (SubNegMonoid.toAddMonoid.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (AddGroup.toSubNegMonoid.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (AddSubgroup.toAddGroup.{0} Real Real.addGroup (AddSubgroup.zmultiples.{0} Real Real.addGroup a))))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) => (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) -> Real) (AddMonoidHom.hasCoeToFun.{0, 0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) Real (AddMonoid.toAddZeroClass.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (SubNegMonoid.toAddMonoid.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (AddGroup.toSubNegMonoid.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (AddSubgroup.toAddGroup.{0} Real Real.addGroup (AddSubgroup.zmultiples.{0} Real Real.addGroup a))))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) (AddSubgroup.subtype.{0} Real Real.addGroup (AddSubgroup.zmultiples.{0} Real Real.addGroup a))) (Filter.cofinite.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a))) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))
-but is expected to have type
- forall (a : Real), Filter.Tendsto.{0, 0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (FunLike.coe.{1, 1, 1} (AddMonoidHom.{0, 0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (fun (_x : Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) => Real) _x) (AddHomClass.toFunLike.{0, 0, 0} (AddMonoidHom.{0, 0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddZeroClass.toAdd.{0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a)))) (AddZeroClass.toAdd.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (AddMonoidHomClass.toAddHomClass.{0, 0, 0} (AddMonoidHom.{0, 0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddMonoidHom.addMonoidHomClass.{0, 0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))))) (AddSubgroup.subtype.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (Filter.cofinite.{0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a)))) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))
+<too large>
Case conversion may be inaccurate. Consider using '#align add_subgroup.tendsto_zmultiples_subtype_cofinite AddSubgroup.tendsto_zmultiples_subtype_cofiniteₓ'. -/
/-- The subgroup "multiples of `a`" (`zmultiples a`) is a discrete subgroup of `ℝ`, i.e. its
intersection with compact sets is finite. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -386,7 +386,7 @@ theorem tendsto_coe_cofinite : Tendsto (coe : ℤ → ℝ) cofinite (cocompact
lean 3 declaration is
forall {a : Real}, (Ne.{1} Real a (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Filter.Tendsto.{0, 0} Int Real (coeFn.{1, 1} (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) (fun (_x : AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) => Int -> Real) (AddMonoidHom.hasCoeToFun.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) (coeFn.{1, 1} (Equiv.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup))))) (fun (_x : Equiv.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup))))) => Real -> (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup))))) (Equiv.hasCoeToFun.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup))))) (zmultiplesHom.{0} Real Real.addGroup) a)) (Filter.cofinite.{0} Int) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))))
but is expected to have type
- forall {a : Real}, (Ne.{1} Real a (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Filter.Tendsto.{0, 0} Int Real (FunLike.coe.{1, 1, 1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) a) Int (fun (_x : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Int) => Real) _x) (AddHomClass.toFunLike.{0, 0, 0} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) a) Int Real (AddZeroClass.toAdd.{0} Int (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (AddZeroClass.toAdd.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (AddMonoidHomClass.toAddHomClass.{0, 0, 0} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) a) Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddMonoidHom.addMonoidHomClass.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))))) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))))) Real (fun (_x : Real) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) _x) (Equiv.instFunLikeEquiv.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))))) (zmultiplesHom.{0} Real Real.instAddGroupReal) a)) (Filter.cofinite.{0} Int) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))))
+ forall {a : Real}, (Ne.{1} Real a (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Filter.Tendsto.{0, 0} Int Real (FunLike.coe.{1, 1, 1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) a) Int (fun (_x : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Int) => Real) _x) (AddHomClass.toFunLike.{0, 0, 0} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) a) Int Real (AddZeroClass.toAdd.{0} Int (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (AddZeroClass.toAdd.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (AddMonoidHomClass.toAddHomClass.{0, 0, 0} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) a) Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddMonoidHom.addMonoidHomClass.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))))) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))))) Real (fun (_x : Real) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) _x) (Equiv.instFunLikeEquiv.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))))) (zmultiplesHom.{0} Real Real.instAddGroupReal) a)) (Filter.cofinite.{0} Int) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))))
Case conversion may be inaccurate. Consider using '#align int.tendsto_zmultiples_hom_cofinite Int.tendsto_zmultiplesHom_cofiniteₓ'. -/
/-- For nonzero `a`, the "multiples of `a`" map `zmultiples_hom` from `ℤ` to `ℝ` is discrete, i.e.
inverse images of compact sets are finite. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -86,9 +86,9 @@ instance : SecondCountableTopology ℝ :=
/- warning: real.is_topological_basis_Ioo_rat -> Real.isTopologicalBasis_Ioo_rat is a dubious translation:
lean 3 declaration is
- TopologicalSpace.IsTopologicalBasis.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Set.unionᵢ.{0, 1} (Set.{0} Real) Rat (fun (a : Rat) => Set.unionᵢ.{0, 1} (Set.{0} Real) Rat (fun (b : Rat) => Set.unionᵢ.{0, 0} (Set.{0} Real) (LT.lt.{0} Rat Rat.hasLt a b) (fun (h : LT.lt.{0} Rat Rat.hasLt a b) => Singleton.singleton.{0, 0} (Set.{0} Real) (Set.{0} (Set.{0} Real)) (Set.hasSingleton.{0} (Set.{0} Real)) (Set.Ioo.{0} Real Real.preorder ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Rat Real (HasLiftT.mk.{1, 1} Rat Real (CoeTCₓ.coe.{1, 1} Rat Real (Rat.castCoe.{0} Real Real.hasRatCast))) a) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Rat Real (HasLiftT.mk.{1, 1} Rat Real (CoeTCₓ.coe.{1, 1} Rat Real (Rat.castCoe.{0} Real Real.hasRatCast))) b))))))
+ TopologicalSpace.IsTopologicalBasis.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Set.iUnion.{0, 1} (Set.{0} Real) Rat (fun (a : Rat) => Set.iUnion.{0, 1} (Set.{0} Real) Rat (fun (b : Rat) => Set.iUnion.{0, 0} (Set.{0} Real) (LT.lt.{0} Rat Rat.hasLt a b) (fun (h : LT.lt.{0} Rat Rat.hasLt a b) => Singleton.singleton.{0, 0} (Set.{0} Real) (Set.{0} (Set.{0} Real)) (Set.hasSingleton.{0} (Set.{0} Real)) (Set.Ioo.{0} Real Real.preorder ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Rat Real (HasLiftT.mk.{1, 1} Rat Real (CoeTCₓ.coe.{1, 1} Rat Real (Rat.castCoe.{0} Real Real.hasRatCast))) a) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Rat Real (HasLiftT.mk.{1, 1} Rat Real (CoeTCₓ.coe.{1, 1} Rat Real (Rat.castCoe.{0} Real Real.hasRatCast))) b))))))
but is expected to have type
- TopologicalSpace.IsTopologicalBasis.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Set.unionᵢ.{0, 1} (Set.{0} Real) Rat (fun (a : Rat) => Set.unionᵢ.{0, 1} (Set.{0} Real) Rat (fun (b : Rat) => Set.unionᵢ.{0, 0} (Set.{0} Real) (LT.lt.{0} Rat Rat.instLTRat_1 a b) (fun (h : LT.lt.{0} Rat Rat.instLTRat_1 a b) => Singleton.singleton.{0, 0} (Set.{0} Real) (Set.{0} (Set.{0} Real)) (Set.instSingletonSet.{0} (Set.{0} Real)) (Set.Ioo.{0} Real Real.instPreorderReal (Rat.cast.{0} Real Real.ratCast a) (Rat.cast.{0} Real Real.ratCast b))))))
+ TopologicalSpace.IsTopologicalBasis.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Set.iUnion.{0, 1} (Set.{0} Real) Rat (fun (a : Rat) => Set.iUnion.{0, 1} (Set.{0} Real) Rat (fun (b : Rat) => Set.iUnion.{0, 0} (Set.{0} Real) (LT.lt.{0} Rat Rat.instLTRat_1 a b) (fun (h : LT.lt.{0} Rat Rat.instLTRat_1 a b) => Singleton.singleton.{0, 0} (Set.{0} Real) (Set.{0} (Set.{0} Real)) (Set.instSingletonSet.{0} (Set.{0} Real)) (Set.Ioo.{0} Real Real.instPreorderReal (Rat.cast.{0} Real Real.ratCast a) (Rat.cast.{0} Real Real.ratCast b))))))
Case conversion may be inaccurate. Consider using '#align real.is_topological_basis_Ioo_rat Real.isTopologicalBasis_Ioo_ratₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (a b) -/
theorem Real.isTopologicalBasis_Ioo_rat :
@@ -296,17 +296,17 @@ theorem Real.bounded_iff_bddBelow_bddAbove {s : Set ℝ} : Bounded s ↔ BddBelo
#align real.bounded_iff_bdd_below_bdd_above Real.bounded_iff_bddBelow_bddAbove
-/
-/- warning: real.subset_Icc_Inf_Sup_of_bounded -> Real.subset_Icc_infₛ_supₛ_of_bounded is a dubious translation:
+/- warning: real.subset_Icc_Inf_Sup_of_bounded -> Real.subset_Icc_sInf_sSup_of_bounded is a dubious translation:
lean 3 declaration is
- forall {s : Set.{0} Real}, (Metric.Bounded.{0} Real Real.pseudoMetricSpace s) -> (HasSubset.Subset.{0} (Set.{0} Real) (Set.hasSubset.{0} Real) s (Set.Icc.{0} Real Real.preorder (InfSet.infₛ.{0} Real Real.hasInf s) (SupSet.supₛ.{0} Real Real.hasSup s)))
+ forall {s : Set.{0} Real}, (Metric.Bounded.{0} Real Real.pseudoMetricSpace s) -> (HasSubset.Subset.{0} (Set.{0} Real) (Set.hasSubset.{0} Real) s (Set.Icc.{0} Real Real.preorder (InfSet.sInf.{0} Real Real.hasInf s) (SupSet.sSup.{0} Real Real.hasSup s)))
but is expected to have type
- forall {s : Set.{0} Real}, (Metric.Bounded.{0} Real Real.pseudoMetricSpace s) -> (HasSubset.Subset.{0} (Set.{0} Real) (Set.instHasSubsetSet.{0} Real) s (Set.Icc.{0} Real Real.instPreorderReal (InfSet.infₛ.{0} Real Real.instInfSetReal s) (SupSet.supₛ.{0} Real Real.instSupSetReal s)))
-Case conversion may be inaccurate. Consider using '#align real.subset_Icc_Inf_Sup_of_bounded Real.subset_Icc_infₛ_supₛ_of_boundedₓ'. -/
-theorem Real.subset_Icc_infₛ_supₛ_of_bounded {s : Set ℝ} (h : Bounded s) :
- s ⊆ Icc (infₛ s) (supₛ s) :=
- subset_Icc_cinfₛ_csupₛ (Real.bounded_iff_bddBelow_bddAbove.1 h).1
+ forall {s : Set.{0} Real}, (Metric.Bounded.{0} Real Real.pseudoMetricSpace s) -> (HasSubset.Subset.{0} (Set.{0} Real) (Set.instHasSubsetSet.{0} Real) s (Set.Icc.{0} Real Real.instPreorderReal (InfSet.sInf.{0} Real Real.instInfSetReal s) (SupSet.sSup.{0} Real Real.instSupSetReal s)))
+Case conversion may be inaccurate. Consider using '#align real.subset_Icc_Inf_Sup_of_bounded Real.subset_Icc_sInf_sSup_of_boundedₓ'. -/
+theorem Real.subset_Icc_sInf_sSup_of_bounded {s : Set ℝ} (h : Bounded s) :
+ s ⊆ Icc (sInf s) (sSup s) :=
+ subset_Icc_csInf_csSup (Real.bounded_iff_bddBelow_bddAbove.1 h).1
(Real.bounded_iff_bddBelow_bddAbove.1 h).2
-#align real.subset_Icc_Inf_Sup_of_bounded Real.subset_Icc_infₛ_supₛ_of_bounded
+#align real.subset_Icc_Inf_Sup_of_bounded Real.subset_Icc_sInf_sSup_of_bounded
end
@@ -443,7 +443,7 @@ theorem AddSubgroup.dense_of_no_min {G : AddSubgroup ℝ} {g₀ : ℝ} (g₀_in
· exact ⟨-g₀, G.neg_mem g₀_in, neg_pos.mpr Hg₀⟩
· exact ⟨g₀, g₀_in, Hg₀⟩
obtain ⟨a, ha⟩ : ∃ a, IsGLB G_pos a :=
- ⟨Inf G_pos, isGLB_cinfₛ ⟨g₁, g₁_in, g₁_pos⟩ ⟨0, fun _ hx => le_of_lt hx.2⟩⟩
+ ⟨Inf G_pos, isGLB_csInf ⟨g₁, g₁_in, g₁_pos⟩ ⟨0, fun _ hx => le_of_lt hx.2⟩⟩
have a_notin : a ∉ G_pos := by
intro H
exact H' a ⟨H, ha.1⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -393,7 +393,7 @@ inverse images of compact sets are finite. -/
theorem tendsto_zmultiplesHom_cofinite {a : ℝ} (ha : a ≠ 0) :
Tendsto (zmultiplesHom ℝ a) cofinite (cocompact ℝ) :=
by
- convert (tendsto_cocompact_mul_right₀ ha).comp Int.tendsto_coe_cofinite
+ convert(tendsto_cocompact_mul_right₀ ha).comp Int.tendsto_coe_cofinite
ext n
simp
#align int.tendsto_zmultiples_hom_cofinite Int.tendsto_zmultiplesHom_cofinite
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -88,7 +88,7 @@ instance : SecondCountableTopology ℝ :=
lean 3 declaration is
TopologicalSpace.IsTopologicalBasis.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Set.unionᵢ.{0, 1} (Set.{0} Real) Rat (fun (a : Rat) => Set.unionᵢ.{0, 1} (Set.{0} Real) Rat (fun (b : Rat) => Set.unionᵢ.{0, 0} (Set.{0} Real) (LT.lt.{0} Rat Rat.hasLt a b) (fun (h : LT.lt.{0} Rat Rat.hasLt a b) => Singleton.singleton.{0, 0} (Set.{0} Real) (Set.{0} (Set.{0} Real)) (Set.hasSingleton.{0} (Set.{0} Real)) (Set.Ioo.{0} Real Real.preorder ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Rat Real (HasLiftT.mk.{1, 1} Rat Real (CoeTCₓ.coe.{1, 1} Rat Real (Rat.castCoe.{0} Real Real.hasRatCast))) a) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Rat Real (HasLiftT.mk.{1, 1} Rat Real (CoeTCₓ.coe.{1, 1} Rat Real (Rat.castCoe.{0} Real Real.hasRatCast))) b))))))
but is expected to have type
- TopologicalSpace.IsTopologicalBasis.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Set.unionᵢ.{0, 1} (Set.{0} Real) Rat (fun (a : Rat) => Set.unionᵢ.{0, 1} (Set.{0} Real) Rat (fun (b : Rat) => Set.unionᵢ.{0, 0} (Set.{0} Real) (LT.lt.{0} Rat Rat.instLTRat_1 a b) (fun (h : LT.lt.{0} Rat Rat.instLTRat_1 a b) => Singleton.singleton.{0, 0} (Set.{0} Real) (Set.{0} (Set.{0} Real)) (Set.instSingletonSet.{0} (Set.{0} Real)) (Set.Ioo.{0} Real Real.instPreorderReal (RatCast.ratCast.{0} Real Real.ratCast a) (RatCast.ratCast.{0} Real Real.ratCast b))))))
+ TopologicalSpace.IsTopologicalBasis.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Set.unionᵢ.{0, 1} (Set.{0} Real) Rat (fun (a : Rat) => Set.unionᵢ.{0, 1} (Set.{0} Real) Rat (fun (b : Rat) => Set.unionᵢ.{0, 0} (Set.{0} Real) (LT.lt.{0} Rat Rat.instLTRat_1 a b) (fun (h : LT.lt.{0} Rat Rat.instLTRat_1 a b) => Singleton.singleton.{0, 0} (Set.{0} Real) (Set.{0} (Set.{0} Real)) (Set.instSingletonSet.{0} (Set.{0} Real)) (Set.Ioo.{0} Real Real.instPreorderReal (Rat.cast.{0} Real Real.ratCast a) (Rat.cast.{0} Real Real.ratCast b))))))
Case conversion may be inaccurate. Consider using '#align real.is_topological_basis_Ioo_rat Real.isTopologicalBasis_Ioo_ratₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (a b) -/
theorem Real.isTopologicalBasis_Ioo_rat :
@@ -261,7 +261,7 @@ section
lean 3 declaration is
forall {q : Rat}, Eq.{1} (Set.{0} Real) (closure.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Set.image.{0, 0} Rat Real ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Rat Real (HasLiftT.mk.{1, 1} Rat Real (CoeTCₓ.coe.{1, 1} Rat Real (Rat.castCoe.{0} Real Real.hasRatCast)))) (setOf.{0} Rat (fun (x : Rat) => LT.lt.{0} Rat Rat.hasLt q x)))) (setOf.{0} Real (fun (r : Real) => LE.le.{0} Real Real.hasLe ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Rat Real (HasLiftT.mk.{1, 1} Rat Real (CoeTCₓ.coe.{1, 1} Rat Real (Rat.castCoe.{0} Real Real.hasRatCast))) q) r))
but is expected to have type
- forall {q : Rat}, Eq.{1} (Set.{0} Real) (closure.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Set.image.{0, 0} Rat Real (RatCast.ratCast.{0} Real Real.ratCast) (setOf.{0} Rat (fun (x : Rat) => LT.lt.{0} Rat Rat.instLTRat_1 q x)))) (setOf.{0} Real (fun (r : Real) => LE.le.{0} Real Real.instLEReal (RatCast.ratCast.{0} Real Real.ratCast q) r))
+ forall {q : Rat}, Eq.{1} (Set.{0} Real) (closure.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Set.image.{0, 0} Rat Real (Rat.cast.{0} Real Real.ratCast) (setOf.{0} Rat (fun (x : Rat) => LT.lt.{0} Rat Rat.instLTRat_1 q x)))) (setOf.{0} Real (fun (r : Real) => LE.le.{0} Real Real.instLEReal (Rat.cast.{0} Real Real.ratCast q) r))
Case conversion may be inaccurate. Consider using '#align closure_of_rat_image_lt closure_of_rat_image_ltₓ'. -/
theorem closure_of_rat_image_lt {q : ℚ} :
closure ((coe : ℚ → ℝ) '' { x | q < x }) = { r | ↑q ≤ r } :=
@@ -386,7 +386,7 @@ theorem tendsto_coe_cofinite : Tendsto (coe : ℤ → ℝ) cofinite (cocompact
lean 3 declaration is
forall {a : Real}, (Ne.{1} Real a (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Filter.Tendsto.{0, 0} Int Real (coeFn.{1, 1} (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) (fun (_x : AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) => Int -> Real) (AddMonoidHom.hasCoeToFun.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) (coeFn.{1, 1} (Equiv.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup))))) (fun (_x : Equiv.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup))))) => Real -> (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup))))) (Equiv.hasCoeToFun.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup))))) (zmultiplesHom.{0} Real Real.addGroup) a)) (Filter.cofinite.{0} Int) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))))
but is expected to have type
- forall {a : Real}, (Ne.{1} Real a (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Filter.Tendsto.{0, 0} Int Real (FunLike.coe.{1, 1, 1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) a) Int (fun (_x : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : Int) => Real) _x) (AddHomClass.toFunLike.{0, 0, 0} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) a) Int Real (AddZeroClass.toAdd.{0} Int (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (AddZeroClass.toAdd.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (AddMonoidHomClass.toAddHomClass.{0, 0, 0} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) a) Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddMonoidHom.addMonoidHomClass.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))))) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))))) Real (fun (_x : Real) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) _x) (Equiv.instFunLikeEquiv.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))))) (zmultiplesHom.{0} Real Real.instAddGroupReal) a)) (Filter.cofinite.{0} Int) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))))
+ forall {a : Real}, (Ne.{1} Real a (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Filter.Tendsto.{0, 0} Int Real (FunLike.coe.{1, 1, 1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) a) Int (fun (_x : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Int) => Real) _x) (AddHomClass.toFunLike.{0, 0, 0} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) a) Int Real (AddZeroClass.toAdd.{0} Int (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (AddZeroClass.toAdd.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (AddMonoidHomClass.toAddHomClass.{0, 0, 0} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) a) Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddMonoidHom.addMonoidHomClass.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))))) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))))) Real (fun (_x : Real) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) _x) (Equiv.instFunLikeEquiv.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))))) (zmultiplesHom.{0} Real Real.instAddGroupReal) a)) (Filter.cofinite.{0} Int) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))))
Case conversion may be inaccurate. Consider using '#align int.tendsto_zmultiples_hom_cofinite Int.tendsto_zmultiplesHom_cofiniteₓ'. -/
/-- For nonzero `a`, the "multiples of `a`" map `zmultiples_hom` from `ℤ` to `ℝ` is discrete, i.e.
inverse images of compact sets are finite. -/
@@ -406,7 +406,7 @@ namespace AddSubgroup
lean 3 declaration is
forall (a : Real), Filter.Tendsto.{0, 0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) Real (coeFn.{1, 1} (AddMonoidHom.{0, 0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) Real (AddMonoid.toAddZeroClass.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (SubNegMonoid.toAddMonoid.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (AddGroup.toSubNegMonoid.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (AddSubgroup.toAddGroup.{0} Real Real.addGroup (AddSubgroup.zmultiples.{0} Real Real.addGroup a))))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) (fun (_x : AddMonoidHom.{0, 0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) Real (AddMonoid.toAddZeroClass.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (SubNegMonoid.toAddMonoid.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (AddGroup.toSubNegMonoid.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (AddSubgroup.toAddGroup.{0} Real Real.addGroup (AddSubgroup.zmultiples.{0} Real Real.addGroup a))))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) => (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) -> Real) (AddMonoidHom.hasCoeToFun.{0, 0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) Real (AddMonoid.toAddZeroClass.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (SubNegMonoid.toAddMonoid.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (AddGroup.toSubNegMonoid.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (AddSubgroup.toAddGroup.{0} Real Real.addGroup (AddSubgroup.zmultiples.{0} Real Real.addGroup a))))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) (AddSubgroup.subtype.{0} Real Real.addGroup (AddSubgroup.zmultiples.{0} Real Real.addGroup a))) (Filter.cofinite.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a))) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))
but is expected to have type
- forall (a : Real), Filter.Tendsto.{0, 0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (FunLike.coe.{1, 1, 1} (AddMonoidHom.{0, 0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (fun (_x : Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) => Real) _x) (AddHomClass.toFunLike.{0, 0, 0} (AddMonoidHom.{0, 0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddZeroClass.toAdd.{0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a)))) (AddZeroClass.toAdd.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (AddMonoidHomClass.toAddHomClass.{0, 0, 0} (AddMonoidHom.{0, 0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddMonoidHom.addMonoidHomClass.{0, 0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))))) (AddSubgroup.subtype.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (Filter.cofinite.{0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a)))) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))
+ forall (a : Real), Filter.Tendsto.{0, 0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (FunLike.coe.{1, 1, 1} (AddMonoidHom.{0, 0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (fun (_x : Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.403 : Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) => Real) _x) (AddHomClass.toFunLike.{0, 0, 0} (AddMonoidHom.{0, 0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddZeroClass.toAdd.{0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a)))) (AddZeroClass.toAdd.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (AddMonoidHomClass.toAddHomClass.{0, 0, 0} (AddMonoidHom.{0, 0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddMonoidHom.addMonoidHomClass.{0, 0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))))) (AddSubgroup.subtype.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (Filter.cofinite.{0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a)))) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))
Case conversion may be inaccurate. Consider using '#align add_subgroup.tendsto_zmultiples_subtype_cofinite AddSubgroup.tendsto_zmultiples_subtype_cofiniteₓ'. -/
/-- The subgroup "multiples of `a`" (`zmultiples a`) is a discrete subgroup of `ℝ`, i.e. its
intersection with compact sets is finite. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/21e3562c5e12d846c7def5eff8cdbc520d7d4936
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Mario Carneiro
! This file was ported from Lean 3 source module topology.instances.real
-! leanprover-community/mathlib commit 9a59dcb7a2d06bf55da57b9030169219980660cd
+! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -22,6 +22,9 @@ import Mathbin.Topology.Instances.Int
/-!
# Topological properties of ℝ
+
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/3b267e70a936eebb21ab546f49a8df34dd300b25
@@ -38,6 +38,12 @@ variable {α : Type u} {β : Type v} {γ : Type w}
instance : NoncompactSpace ℝ :=
Int.closedEmbedding_coe_real.NoncompactSpace
+/- warning: real.uniform_continuous_add -> Real.uniformContinuous_add is a dubious translation:
+lean 3 declaration is
+ UniformContinuous.{0, 0} (Prod.{0, 0} Real Real) Real (Prod.uniformSpace.{0, 0} Real Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (fun (p : Prod.{0, 0} Real Real) => HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) (Prod.fst.{0, 0} Real Real p) (Prod.snd.{0, 0} Real Real p))
+but is expected to have type
+ UniformContinuous.{0, 0} (Prod.{0, 0} Real Real) Real (instUniformSpaceProd.{0, 0} Real Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (fun (p : Prod.{0, 0} Real Real) => HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Prod.fst.{0, 0} Real Real p) (Prod.snd.{0, 0} Real Real p))
+Case conversion may be inaccurate. Consider using '#align real.uniform_continuous_add Real.uniformContinuous_addₓ'. -/
theorem Real.uniformContinuous_add : UniformContinuous fun p : ℝ × ℝ => p.1 + p.2 :=
Metric.uniformContinuous_iff.2 fun ε ε0 =>
let ⟨δ, δ0, Hδ⟩ := rat_add_continuous_lemma abs ε0
@@ -46,6 +52,12 @@ theorem Real.uniformContinuous_add : UniformContinuous fun p : ℝ × ℝ => p.1
Hδ h₁ h₂⟩
#align real.uniform_continuous_add Real.uniformContinuous_add
+/- warning: real.uniform_continuous_neg -> Real.uniformContinuous_neg is a dubious translation:
+lean 3 declaration is
+ UniformContinuous.{0, 0} Real Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (Neg.neg.{0} Real Real.hasNeg)
+but is expected to have type
+ UniformContinuous.{0, 0} Real Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (Neg.neg.{0} Real Real.instNegReal)
+Case conversion may be inaccurate. Consider using '#align real.uniform_continuous_neg Real.uniformContinuous_negₓ'. -/
theorem Real.uniformContinuous_neg : UniformContinuous (@Neg.neg ℝ _) :=
Metric.uniformContinuous_iff.2 fun ε ε0 =>
⟨_, ε0, fun a b h => by rw [dist_comm] at h <;> simpa [Real.dist_eq] using h⟩
@@ -69,6 +81,12 @@ instance : ProperSpace ℝ
instance : SecondCountableTopology ℝ :=
secondCountable_of_proper
+/- warning: real.is_topological_basis_Ioo_rat -> Real.isTopologicalBasis_Ioo_rat is a dubious translation:
+lean 3 declaration is
+ TopologicalSpace.IsTopologicalBasis.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Set.unionᵢ.{0, 1} (Set.{0} Real) Rat (fun (a : Rat) => Set.unionᵢ.{0, 1} (Set.{0} Real) Rat (fun (b : Rat) => Set.unionᵢ.{0, 0} (Set.{0} Real) (LT.lt.{0} Rat Rat.hasLt a b) (fun (h : LT.lt.{0} Rat Rat.hasLt a b) => Singleton.singleton.{0, 0} (Set.{0} Real) (Set.{0} (Set.{0} Real)) (Set.hasSingleton.{0} (Set.{0} Real)) (Set.Ioo.{0} Real Real.preorder ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Rat Real (HasLiftT.mk.{1, 1} Rat Real (CoeTCₓ.coe.{1, 1} Rat Real (Rat.castCoe.{0} Real Real.hasRatCast))) a) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Rat Real (HasLiftT.mk.{1, 1} Rat Real (CoeTCₓ.coe.{1, 1} Rat Real (Rat.castCoe.{0} Real Real.hasRatCast))) b))))))
+but is expected to have type
+ TopologicalSpace.IsTopologicalBasis.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Set.unionᵢ.{0, 1} (Set.{0} Real) Rat (fun (a : Rat) => Set.unionᵢ.{0, 1} (Set.{0} Real) Rat (fun (b : Rat) => Set.unionᵢ.{0, 0} (Set.{0} Real) (LT.lt.{0} Rat Rat.instLTRat_1 a b) (fun (h : LT.lt.{0} Rat Rat.instLTRat_1 a b) => Singleton.singleton.{0, 0} (Set.{0} Real) (Set.{0} (Set.{0} Real)) (Set.instSingletonSet.{0} (Set.{0} Real)) (Set.Ioo.{0} Real Real.instPreorderReal (RatCast.ratCast.{0} Real Real.ratCast a) (RatCast.ratCast.{0} Real Real.ratCast b))))))
+Case conversion may be inaccurate. Consider using '#align real.is_topological_basis_Ioo_rat Real.isTopologicalBasis_Ioo_ratₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (a b) -/
theorem Real.isTopologicalBasis_Ioo_rat :
@IsTopologicalBasis ℝ _ (⋃ (a : ℚ) (b : ℚ) (h : a < b), {Ioo a b}) :=
@@ -83,12 +101,24 @@ theorem Real.isTopologicalBasis_Ioo_rat :
h ⟨hlq.trans hqa', ha'p.trans hpu⟩⟩
#align real.is_topological_basis_Ioo_rat Real.isTopologicalBasis_Ioo_rat
+/- warning: real.cocompact_eq -> Real.cocompact_eq is a dubious translation:
+lean 3 declaration is
+ Eq.{1} (Filter.{0} Real) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (Sup.sup.{0} (Filter.{0} Real) (SemilatticeSup.toHasSup.{0} (Filter.{0} Real) (Lattice.toSemilatticeSup.{0} (Filter.{0} Real) (ConditionallyCompleteLattice.toLattice.{0} (Filter.{0} Real) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} Real) (Filter.completeLattice.{0} Real))))) (Filter.atBot.{0} Real Real.preorder) (Filter.atTop.{0} Real Real.preorder))
+but is expected to have type
+ Eq.{1} (Filter.{0} Real) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (Sup.sup.{0} (Filter.{0} Real) (SemilatticeSup.toSup.{0} (Filter.{0} Real) (Lattice.toSemilatticeSup.{0} (Filter.{0} Real) (ConditionallyCompleteLattice.toLattice.{0} (Filter.{0} Real) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} Real) (Filter.instCompleteLatticeFilter.{0} Real))))) (Filter.atBot.{0} Real Real.instPreorderReal) (Filter.atTop.{0} Real Real.instPreorderReal))
+Case conversion may be inaccurate. Consider using '#align real.cocompact_eq Real.cocompact_eqₓ'. -/
@[simp]
theorem Real.cocompact_eq : cocompact ℝ = atBot ⊔ atTop := by
simp only [← comap_dist_right_atTop_eq_cocompact (0 : ℝ), Real.dist_eq, sub_zero,
comap_abs_at_top]
#align real.cocompact_eq Real.cocompact_eq
+/- warning: real.mem_closure_iff -> Real.mem_closure_iff is a dubious translation:
+lean 3 declaration is
+ forall {s : Set.{0} Real} {x : Real}, Iff (Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x (closure.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) s)) (forall (ε : Real), (GT.gt.{0} Real Real.hasLt ε (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Exists.{1} Real (fun (y : Real) => Exists.{0} (Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) y s) (fun (H : Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) y s) => LT.lt.{0} Real Real.hasLt (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.hasNeg Real.hasSup) (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.hasSub) y x)) ε))))
+but is expected to have type
+ forall {s : Set.{0} Real} {x : Real}, Iff (Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x (closure.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) s)) (forall (ε : Real), (GT.gt.{0} Real Real.instLTReal ε (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Exists.{1} Real (fun (y : Real) => And (Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) y s) (LT.lt.{0} Real Real.instLTReal (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.instNegReal Real.instSupReal) (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.instSubReal) y x)) ε))))
+Case conversion may be inaccurate. Consider using '#align real.mem_closure_iff Real.mem_closure_iffₓ'. -/
/- TODO(Mario): Prove that these are uniform isomorphisms instead of uniform embeddings
lemma uniform_embedding_add_rat {r : ℚ} : uniform_embedding (λp:ℚ, p + r) :=
_
@@ -99,6 +129,12 @@ theorem Real.mem_closure_iff {s : Set ℝ} {x : ℝ} : x ∈ closure s ↔ ∀
by simp [mem_closure_iff_nhds_basis nhds_basis_ball, Real.dist_eq]
#align real.mem_closure_iff Real.mem_closure_iff
+/- warning: real.uniform_continuous_inv -> Real.uniformContinuous_inv is a dubious translation:
+lean 3 declaration is
+ forall (s : Set.{0} Real) {r : Real}, (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) r) -> (forall (x : Real), (Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x s) -> (LE.le.{0} Real Real.hasLe r (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.hasNeg Real.hasSup) x))) -> (UniformContinuous.{0, 0} (coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) s) Real (Subtype.uniformSpace.{0} Real (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x s) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (fun (p : coeSort.{1, 2} (Set.{0} Real) Type (Set.hasCoeToSort.{0} Real) s) => Inv.inv.{0} Real Real.hasInv (Subtype.val.{1} Real (fun (x : Real) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) x s) p)))
+but is expected to have type
+ forall (s : Set.{0} Real) {r : Real}, (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) r) -> (forall (x : Real), (Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x s) -> (LE.le.{0} Real Real.instLEReal r (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.instNegReal Real.instSupReal) x))) -> (UniformContinuous.{0, 0} (Set.Elem.{0} Real s) Real (instUniformSpaceSubtype.{0} Real (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x s) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (fun (p : Set.Elem.{0} Real s) => Inv.inv.{0} Real Real.instInvReal (Subtype.val.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) x s) p)))
+Case conversion may be inaccurate. Consider using '#align real.uniform_continuous_inv Real.uniformContinuous_invₓ'. -/
theorem Real.uniformContinuous_inv (s : Set ℝ) {r : ℝ} (r0 : 0 < r) (H : ∀ x ∈ s, r ≤ |x|) :
UniformContinuous fun p : s => p.1⁻¹ :=
Metric.uniformContinuous_iff.2 fun ε ε0 =>
@@ -106,11 +142,23 @@ theorem Real.uniformContinuous_inv (s : Set ℝ) {r : ℝ} (r0 : 0 < r) (H : ∀
⟨δ, δ0, fun a b h => Hδ (H _ a.2) (H _ b.2) h⟩
#align real.uniform_continuous_inv Real.uniformContinuous_inv
+/- warning: real.uniform_continuous_abs -> Real.uniformContinuous_abs is a dubious translation:
+lean 3 declaration is
+ UniformContinuous.{0, 0} Real Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.hasNeg Real.hasSup))
+but is expected to have type
+ UniformContinuous.{0, 0} Real Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.instNegReal Real.instSupReal))
+Case conversion may be inaccurate. Consider using '#align real.uniform_continuous_abs Real.uniformContinuous_absₓ'. -/
theorem Real.uniformContinuous_abs : UniformContinuous (abs : ℝ → ℝ) :=
Metric.uniformContinuous_iff.2 fun ε ε0 =>
⟨ε, ε0, fun a b => lt_of_le_of_lt (abs_abs_sub_abs_le_abs_sub _ _)⟩
#align real.uniform_continuous_abs Real.uniformContinuous_abs
+/- warning: real.tendsto_inv -> Real.tendsto_inv is a dubious translation:
+lean 3 declaration is
+ forall {r : Real}, (Ne.{1} Real r (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Filter.Tendsto.{0, 0} Real Real (fun (q : Real) => Inv.inv.{0} Real Real.hasInv q) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) r) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Inv.inv.{0} Real Real.hasInv r)))
+but is expected to have type
+ forall {r : Real}, (Ne.{1} Real r (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Filter.Tendsto.{0, 0} Real Real (fun (q : Real) => Inv.inv.{0} Real Real.instInvReal q) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) r) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Inv.inv.{0} Real Real.instInvReal r)))
+Case conversion may be inaccurate. Consider using '#align real.tendsto_inv Real.tendsto_invₓ'. -/
theorem Real.tendsto_inv {r : ℝ} (r0 : r ≠ 0) : Tendsto (fun q => q⁻¹) (𝓝 r) (𝓝 r⁻¹) := by
rw [← abs_pos] at r0 <;>
exact
@@ -119,21 +167,45 @@ theorem Real.tendsto_inv {r : ℝ} (r0 : r ≠ 0) : Tendsto (fun q => q⁻¹) (
(IsOpen.mem_nhds ((isOpen_lt' (|r| / 2)).Preimage continuous_abs) (half_lt_self r0))
#align real.tendsto_inv Real.tendsto_inv
+/- warning: real.continuous_inv -> Real.continuous_inv is a dubious translation:
+lean 3 declaration is
+ Continuous.{0, 0} (Subtype.{1} Real (fun (r : Real) => Ne.{1} Real r (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) Real (Subtype.topologicalSpace.{0} Real (fun (r : Real) => Ne.{1} Real r (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (fun (a : Subtype.{1} Real (fun (r : Real) => Ne.{1} Real r (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))))) => Inv.inv.{0} Real Real.hasInv (Subtype.val.{1} Real (fun (r : Real) => Ne.{1} Real r (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) a))
+but is expected to have type
+ Continuous.{0, 0} (Subtype.{1} Real (fun (r : Real) => Ne.{1} Real r (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) Real (instTopologicalSpaceSubtype.{0} Real (fun (r : Real) => Ne.{1} Real r (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (fun (a : Subtype.{1} Real (fun (r : Real) => Ne.{1} Real r (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)))) => Inv.inv.{0} Real Real.instInvReal (Subtype.val.{1} Real (fun (r : Real) => Ne.{1} Real r (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) a))
+Case conversion may be inaccurate. Consider using '#align real.continuous_inv Real.continuous_invₓ'. -/
theorem Real.continuous_inv : Continuous fun a : { r : ℝ // r ≠ 0 } => a.val⁻¹ :=
continuous_iff_continuousAt.mpr fun ⟨r, hr⟩ =>
Tendsto.comp (Real.tendsto_inv hr) (continuous_iff_continuousAt.mp continuous_subtype_val _)
#align real.continuous_inv Real.continuous_inv
+/- warning: real.continuous.inv -> Real.Continuous.inv is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {f : α -> Real}, (forall (a : α), Ne.{1} Real (f a) (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Continuous.{u1, 0} α Real _inst_1 (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) f) -> (Continuous.{u1, 0} α Real _inst_1 (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (fun (a : α) => Inv.inv.{0} Real Real.hasInv (f a)))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {f : α -> Real}, (forall (a : α), Ne.{1} Real (f a) (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Continuous.{u1, 0} α Real _inst_1 (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) f) -> (Continuous.{u1, 0} α Real _inst_1 (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (fun (a : α) => Inv.inv.{0} Real Real.instInvReal (f a)))
+Case conversion may be inaccurate. Consider using '#align real.continuous.inv Real.Continuous.invₓ'. -/
theorem Real.Continuous.inv [TopologicalSpace α] {f : α → ℝ} (h : ∀ a, f a ≠ 0)
(hf : Continuous f) : Continuous fun a => (f a)⁻¹ :=
show Continuous ((Inv.inv ∘ @Subtype.val ℝ fun r => r ≠ 0) ∘ fun a => ⟨f a, h a⟩) from
Real.continuous_inv.comp (hf.subtype_mk _)
#align real.continuous.inv Real.Continuous.inv
+/- warning: real.uniform_continuous_const_mul -> Real.uniformContinuous_const_mul is a dubious translation:
+lean 3 declaration is
+ forall {x : Real}, UniformContinuous.{0, 0} Real Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) x)
+but is expected to have type
+ forall {x : Real}, UniformContinuous.{0, 0} Real Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) ((fun (x._@.Mathlib.Topology.Instances.Real._hyg.946 : Real) (x._@.Mathlib.Topology.Instances.Real._hyg.948 : Real) => HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) x._@.Mathlib.Topology.Instances.Real._hyg.946 x._@.Mathlib.Topology.Instances.Real._hyg.948) x)
+Case conversion may be inaccurate. Consider using '#align real.uniform_continuous_const_mul Real.uniformContinuous_const_mulₓ'. -/
theorem Real.uniformContinuous_const_mul {x : ℝ} : UniformContinuous ((· * ·) x) :=
uniformContinuous_const_smul x
#align real.uniform_continuous_const_mul Real.uniformContinuous_const_mul
+/- warning: real.uniform_continuous_mul -> Real.uniformContinuous_mul is a dubious translation:
+lean 3 declaration is
+ forall (s : Set.{0} (Prod.{0, 0} Real Real)) {r₁ : Real} {r₂ : Real}, (forall (x : Prod.{0, 0} Real Real), (Membership.Mem.{0, 0} (Prod.{0, 0} Real Real) (Set.{0} (Prod.{0, 0} Real Real)) (Set.hasMem.{0} (Prod.{0, 0} Real Real)) x s) -> (And (LT.lt.{0} Real Real.hasLt (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.hasNeg Real.hasSup) (Prod.fst.{0, 0} Real Real x)) r₁) (LT.lt.{0} Real Real.hasLt (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.hasNeg Real.hasSup) (Prod.snd.{0, 0} Real Real x)) r₂))) -> (UniformContinuous.{0, 0} (coeSort.{1, 2} (Set.{0} (Prod.{0, 0} Real Real)) Type (Set.hasCoeToSort.{0} (Prod.{0, 0} Real Real)) s) Real (Subtype.uniformSpace.{0} (Prod.{0, 0} Real Real) (fun (x : Prod.{0, 0} Real Real) => Membership.Mem.{0, 0} (Prod.{0, 0} Real Real) (Set.{0} (Prod.{0, 0} Real Real)) (Set.hasMem.{0} (Prod.{0, 0} Real Real)) x s) (Prod.uniformSpace.{0, 0} Real Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (fun (p : coeSort.{1, 2} (Set.{0} (Prod.{0, 0} Real Real)) Type (Set.hasCoeToSort.{0} (Prod.{0, 0} Real Real)) s) => HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Prod.fst.{0, 0} Real Real (Subtype.val.{1} (Prod.{0, 0} Real Real) (fun (x : Prod.{0, 0} Real Real) => Membership.Mem.{0, 0} (Prod.{0, 0} Real Real) (Set.{0} (Prod.{0, 0} Real Real)) (Set.hasMem.{0} (Prod.{0, 0} Real Real)) x s) p)) (Prod.snd.{0, 0} Real Real (Subtype.val.{1} (Prod.{0, 0} Real Real) (fun (x : Prod.{0, 0} Real Real) => Membership.Mem.{0, 0} (Prod.{0, 0} Real Real) (Set.{0} (Prod.{0, 0} Real Real)) (Set.hasMem.{0} (Prod.{0, 0} Real Real)) x s) p))))
+but is expected to have type
+ forall (s : Set.{0} (Prod.{0, 0} Real Real)) {r₁ : Real} {r₂ : Real}, (forall (x : Prod.{0, 0} Real Real), (Membership.mem.{0, 0} (Prod.{0, 0} Real Real) (Set.{0} (Prod.{0, 0} Real Real)) (Set.instMembershipSet.{0} (Prod.{0, 0} Real Real)) x s) -> (And (LT.lt.{0} Real Real.instLTReal (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.instNegReal Real.instSupReal) (Prod.fst.{0, 0} Real Real x)) r₁) (LT.lt.{0} Real Real.instLTReal (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.instNegReal Real.instSupReal) (Prod.snd.{0, 0} Real Real x)) r₂))) -> (UniformContinuous.{0, 0} (Set.Elem.{0} (Prod.{0, 0} Real Real) s) Real (instUniformSpaceSubtype.{0} (Prod.{0, 0} Real Real) (fun (x : Prod.{0, 0} Real Real) => Membership.mem.{0, 0} (Prod.{0, 0} Real Real) (Set.{0} (Prod.{0, 0} Real Real)) (Set.instMembershipSet.{0} (Prod.{0, 0} Real Real)) x s) (instUniformSpaceProd.{0, 0} Real Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (fun (p : Set.Elem.{0} (Prod.{0, 0} Real Real) s) => HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Prod.fst.{0, 0} Real Real (Subtype.val.{1} (Prod.{0, 0} Real Real) (fun (x : Prod.{0, 0} Real Real) => Membership.mem.{0, 0} (Prod.{0, 0} Real Real) (Set.{0} (Prod.{0, 0} Real Real)) (Set.instMembershipSet.{0} (Prod.{0, 0} Real Real)) x s) p)) (Prod.snd.{0, 0} Real Real (Subtype.val.{1} (Prod.{0, 0} Real Real) (fun (x : Prod.{0, 0} Real Real) => Membership.mem.{0, 0} (Prod.{0, 0} Real Real) (Set.{0} (Prod.{0, 0} Real Real)) (Set.instMembershipSet.{0} (Prod.{0, 0} Real Real)) x s) p))))
+Case conversion may be inaccurate. Consider using '#align real.uniform_continuous_mul Real.uniformContinuous_mulₓ'. -/
theorem Real.uniformContinuous_mul (s : Set (ℝ × ℝ)) {r₁ r₂ : ℝ}
(H : ∀ x ∈ s, |(x : ℝ × ℝ).1| < r₁ ∧ |x.2| < r₂) :
UniformContinuous fun p : s => p.1.1 * p.1.2 :=
@@ -144,6 +216,12 @@ theorem Real.uniformContinuous_mul (s : Set (ℝ × ℝ)) {r₁ r₂ : ℝ}
Hδ (H _ a.2).1 (H _ b.2).2 h₁ h₂⟩
#align real.uniform_continuous_mul Real.uniformContinuous_mul
+/- warning: real.continuous_mul -> Real.continuous_mul is a dubious translation:
+lean 3 declaration is
+ Continuous.{0, 0} (Prod.{0, 0} Real Real) Real (Prod.topologicalSpace.{0, 0} Real Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (fun (p : Prod.{0, 0} Real Real) => HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.hasMul) (Prod.fst.{0, 0} Real Real p) (Prod.snd.{0, 0} Real Real p))
+but is expected to have type
+ Continuous.{0, 0} (Prod.{0, 0} Real Real) Real (instTopologicalSpaceProd.{0, 0} Real Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (fun (p : Prod.{0, 0} Real Real) => HMul.hMul.{0, 0, 0} Real Real Real (instHMul.{0} Real Real.instMulReal) (Prod.fst.{0, 0} Real Real p) (Prod.snd.{0, 0} Real Real p))
+Case conversion may be inaccurate. Consider using '#align real.continuous_mul Real.continuous_mulₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
protected theorem Real.continuous_mul : Continuous fun p : ℝ × ℝ => p.1 * p.2 :=
continuous_iff_continuousAt.2 fun ⟨a₁, a₂⟩ =>
@@ -168,12 +246,20 @@ instance : CompleteSpace ℝ := by
simp only [mem_map, mem_at_top_sets, mem_set_of_eq]
refine' this.imp fun N hN n hn => hε (hN n hn)
+#print Real.totallyBounded_ball /-
theorem Real.totallyBounded_ball (x ε : ℝ) : TotallyBounded (ball x ε) := by
rw [Real.ball_eq_Ioo] <;> apply totallyBounded_Ioo
#align real.totally_bounded_ball Real.totallyBounded_ball
+-/
section
+/- warning: closure_of_rat_image_lt -> closure_of_rat_image_lt is a dubious translation:
+lean 3 declaration is
+ forall {q : Rat}, Eq.{1} (Set.{0} Real) (closure.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Set.image.{0, 0} Rat Real ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Rat Real (HasLiftT.mk.{1, 1} Rat Real (CoeTCₓ.coe.{1, 1} Rat Real (Rat.castCoe.{0} Real Real.hasRatCast)))) (setOf.{0} Rat (fun (x : Rat) => LT.lt.{0} Rat Rat.hasLt q x)))) (setOf.{0} Real (fun (r : Real) => LE.le.{0} Real Real.hasLe ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Rat Real (HasLiftT.mk.{1, 1} Rat Real (CoeTCₓ.coe.{1, 1} Rat Real (Rat.castCoe.{0} Real Real.hasRatCast))) q) r))
+but is expected to have type
+ forall {q : Rat}, Eq.{1} (Set.{0} Real) (closure.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Set.image.{0, 0} Rat Real (RatCast.ratCast.{0} Real Real.ratCast) (setOf.{0} Rat (fun (x : Rat) => LT.lt.{0} Rat Rat.instLTRat_1 q x)))) (setOf.{0} Real (fun (r : Real) => LE.le.{0} Real Real.instLEReal (RatCast.ratCast.{0} Real Real.ratCast q) r))
+Case conversion may be inaccurate. Consider using '#align closure_of_rat_image_lt closure_of_rat_image_ltₓ'. -/
theorem closure_of_rat_image_lt {q : ℚ} :
closure ((coe : ℚ → ℝ) '' { x | q < x }) = { r | ↑q ≤ r } :=
Subset.antisymm
@@ -187,6 +273,7 @@ theorem closure_of_rat_image_lt {q : ℚ} :
p, Rat.cast_lt.1 (@lt_of_le_of_lt ℝ _ _ _ _ hx h₁), rfl⟩
#align closure_of_rat_image_lt closure_of_rat_image_lt
+#print Real.bounded_iff_bddBelow_bddAbove /-
/- TODO(Mario): Put these back only if needed later
lemma closure_of_rat_image_le_eq {q : ℚ} : closure ((coe:ℚ → ℝ) '' {x | q ≤ x}) = {r | ↑q ≤ r} :=
_
@@ -204,7 +291,14 @@ theorem Real.bounded_iff_bddBelow_bddAbove {s : Set ℝ} : Bounded s ↔ BddBelo
exact ⟨bdd_below_Icc.mono hr, bdd_above_Icc.mono hr⟩,
fun h => bounded_of_bddAbove_of_bddBelow h.2 h.1⟩
#align real.bounded_iff_bdd_below_bdd_above Real.bounded_iff_bddBelow_bddAbove
+-/
+/- warning: real.subset_Icc_Inf_Sup_of_bounded -> Real.subset_Icc_infₛ_supₛ_of_bounded is a dubious translation:
+lean 3 declaration is
+ forall {s : Set.{0} Real}, (Metric.Bounded.{0} Real Real.pseudoMetricSpace s) -> (HasSubset.Subset.{0} (Set.{0} Real) (Set.hasSubset.{0} Real) s (Set.Icc.{0} Real Real.preorder (InfSet.infₛ.{0} Real Real.hasInf s) (SupSet.supₛ.{0} Real Real.hasSup s)))
+but is expected to have type
+ forall {s : Set.{0} Real}, (Metric.Bounded.{0} Real Real.pseudoMetricSpace s) -> (HasSubset.Subset.{0} (Set.{0} Real) (Set.instHasSubsetSet.{0} Real) s (Set.Icc.{0} Real Real.instPreorderReal (InfSet.infₛ.{0} Real Real.instInfSetReal s) (SupSet.supₛ.{0} Real Real.instSupSetReal s)))
+Case conversion may be inaccurate. Consider using '#align real.subset_Icc_Inf_Sup_of_bounded Real.subset_Icc_infₛ_supₛ_of_boundedₓ'. -/
theorem Real.subset_Icc_infₛ_supₛ_of_bounded {s : Set ℝ} (h : Bounded s) :
s ⊆ Icc (infₛ s) (supₛ s) :=
subset_Icc_cinfₛ_csupₛ (Real.bounded_iff_bddBelow_bddAbove.1 h).1
@@ -217,6 +311,12 @@ section Periodic
namespace Function
+/- warning: function.periodic.compact_of_continuous' -> Function.Periodic.compact_of_continuous' is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {f : Real -> α} {c : Real}, (Function.Periodic.{0, u1} Real α Real.hasAdd f c) -> (LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) c) -> (Continuous.{0, u1} Real α (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) _inst_1 f) -> (IsCompact.{u1} α _inst_1 (Set.range.{u1, 1} α Real f))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {f : Real -> α} {c : Real}, (Function.Periodic.{0, u1} Real α Real.instAddReal f c) -> (LT.lt.{0} Real Real.instLTReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal)) c) -> (Continuous.{0, u1} Real α (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) _inst_1 f) -> (IsCompact.{u1} α _inst_1 (Set.range.{u1, 1} α Real f))
+Case conversion may be inaccurate. Consider using '#align function.periodic.compact_of_continuous' Function.Periodic.compact_of_continuous'ₓ'. -/
theorem Periodic.compact_of_continuous' [TopologicalSpace α] {f : ℝ → α} {c : ℝ} (hp : Periodic f c)
(hc : 0 < c) (hf : Continuous f) : IsCompact (range f) :=
by
@@ -228,6 +328,12 @@ theorem Periodic.compact_of_continuous' [TopologicalSpace α] {f : ℝ → α} {
exact ⟨z, mem_Icc_of_Ico hz, h2.symm.trans h1⟩
#align function.periodic.compact_of_continuous' Function.Periodic.compact_of_continuous'
+/- warning: function.periodic.compact_of_continuous -> Function.Periodic.compact_of_continuous is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {f : Real -> α} {c : Real}, (Function.Periodic.{0, u1} Real α Real.hasAdd f c) -> (Ne.{1} Real c (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Continuous.{0, u1} Real α (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) _inst_1 f) -> (IsCompact.{u1} α _inst_1 (Set.range.{u1, 1} α Real f))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {f : Real -> α} {c : Real}, (Function.Periodic.{0, u1} Real α Real.instAddReal f c) -> (Ne.{1} Real c (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Continuous.{0, u1} Real α (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) _inst_1 f) -> (IsCompact.{u1} α _inst_1 (Set.range.{u1, 1} α Real f))
+Case conversion may be inaccurate. Consider using '#align function.periodic.compact_of_continuous Function.Periodic.compact_of_continuousₓ'. -/
/-- A continuous, periodic function has compact range. -/
theorem Periodic.compact_of_continuous [TopologicalSpace α] {f : ℝ → α} {c : ℝ} (hp : Periodic f c)
(hc : c ≠ 0) (hf : Continuous f) : IsCompact (range f) :=
@@ -236,6 +342,12 @@ theorem Periodic.compact_of_continuous [TopologicalSpace α] {f : ℝ → α} {c
exacts[hp.neg.compact_of_continuous' (neg_pos.mpr hneg) hf, hp.compact_of_continuous' hpos hf]
#align function.periodic.compact_of_continuous Function.Periodic.compact_of_continuous
+/- warning: function.periodic.bounded_of_continuous -> Function.Periodic.bounded_of_continuous is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : PseudoMetricSpace.{u1} α] {f : Real -> α} {c : Real}, (Function.Periodic.{0, u1} Real α Real.hasAdd f c) -> (Ne.{1} Real c (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Continuous.{0, u1} Real α (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α _inst_1)) f) -> (Metric.Bounded.{u1} α _inst_1 (Set.range.{u1, 1} α Real f))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : PseudoMetricSpace.{u1} α] {f : Real -> α} {c : Real}, (Function.Periodic.{0, u1} Real α Real.instAddReal f c) -> (Ne.{1} Real c (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Continuous.{0, u1} Real α (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (UniformSpace.toTopologicalSpace.{u1} α (PseudoMetricSpace.toUniformSpace.{u1} α _inst_1)) f) -> (Metric.Bounded.{u1} α _inst_1 (Set.range.{u1, 1} α Real f))
+Case conversion may be inaccurate. Consider using '#align function.periodic.bounded_of_continuous Function.Periodic.bounded_of_continuousₓ'. -/
/-- A continuous, periodic function is bounded. -/
theorem Periodic.bounded_of_continuous [PseudoMetricSpace α] {f : ℝ → α} {c : ℝ} (hp : Periodic f c)
(hc : c ≠ 0) (hf : Continuous f) : Bounded (range f) :=
@@ -252,6 +364,12 @@ namespace Int
open Metric
+/- warning: int.tendsto_coe_cofinite -> Int.tendsto_coe_cofinite is a dubious translation:
+lean 3 declaration is
+ Filter.Tendsto.{0, 0} Int Real ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast)))) (Filter.cofinite.{0} Int) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))
+but is expected to have type
+ Filter.Tendsto.{0, 0} Int Real (Int.cast.{0} Real Real.intCast) (Filter.cofinite.{0} Int) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))
+Case conversion may be inaccurate. Consider using '#align int.tendsto_coe_cofinite Int.tendsto_coe_cofiniteₓ'. -/
/-- Under the coercion from `ℤ` to `ℝ`, inverse images of compact sets are finite. -/
theorem tendsto_coe_cofinite : Tendsto (coe : ℤ → ℝ) cofinite (cocompact ℝ) :=
by
@@ -261,6 +379,12 @@ theorem tendsto_coe_cofinite : Tendsto (coe : ℤ → ℝ) cofinite (cocompact
simp [Real.ball_eq_Ioo, Set.finite_Ioo]
#align int.tendsto_coe_cofinite Int.tendsto_coe_cofinite
+/- warning: int.tendsto_zmultiples_hom_cofinite -> Int.tendsto_zmultiplesHom_cofinite is a dubious translation:
+lean 3 declaration is
+ forall {a : Real}, (Ne.{1} Real a (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) -> (Filter.Tendsto.{0, 0} Int Real (coeFn.{1, 1} (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) (fun (_x : AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) => Int -> Real) (AddMonoidHom.hasCoeToFun.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) (coeFn.{1, 1} (Equiv.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup))))) (fun (_x : Equiv.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup))))) => Real -> (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup))))) (Equiv.hasCoeToFun.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.addMonoid) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup))))) (zmultiplesHom.{0} Real Real.addGroup) a)) (Filter.cofinite.{0} Int) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))))
+but is expected to have type
+ forall {a : Real}, (Ne.{1} Real a (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) -> (Filter.Tendsto.{0, 0} Int Real (FunLike.coe.{1, 1, 1} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) a) Int (fun (_x : Int) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : Int) => Real) _x) (AddHomClass.toFunLike.{0, 0, 0} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) a) Int Real (AddZeroClass.toAdd.{0} Int (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt)) (AddZeroClass.toAdd.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (AddMonoidHomClass.toAddHomClass.{0, 0, 0} ((fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) a) Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddMonoidHom.addMonoidHomClass.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))))) (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))))) Real (fun (_x : Real) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : Real) => AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) _x) (Equiv.instFunLikeEquiv.{1, 1} Real (AddMonoidHom.{0, 0} Int Real (AddMonoid.toAddZeroClass.{0} Int Int.instAddMonoidInt) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))))) (zmultiplesHom.{0} Real Real.instAddGroupReal) a)) (Filter.cofinite.{0} Int) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))))
+Case conversion may be inaccurate. Consider using '#align int.tendsto_zmultiples_hom_cofinite Int.tendsto_zmultiplesHom_cofiniteₓ'. -/
/-- For nonzero `a`, the "multiples of `a`" map `zmultiples_hom` from `ℤ` to `ℝ` is discrete, i.e.
inverse images of compact sets are finite. -/
theorem tendsto_zmultiplesHom_cofinite {a : ℝ} (ha : a ≠ 0) :
@@ -275,6 +399,12 @@ end Int
namespace AddSubgroup
+/- warning: add_subgroup.tendsto_zmultiples_subtype_cofinite -> AddSubgroup.tendsto_zmultiples_subtype_cofinite is a dubious translation:
+lean 3 declaration is
+ forall (a : Real), Filter.Tendsto.{0, 0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) Real (coeFn.{1, 1} (AddMonoidHom.{0, 0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) Real (AddMonoid.toAddZeroClass.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (SubNegMonoid.toAddMonoid.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (AddGroup.toSubNegMonoid.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (AddSubgroup.toAddGroup.{0} Real Real.addGroup (AddSubgroup.zmultiples.{0} Real Real.addGroup a))))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) (fun (_x : AddMonoidHom.{0, 0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) Real (AddMonoid.toAddZeroClass.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (SubNegMonoid.toAddMonoid.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (AddGroup.toSubNegMonoid.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (AddSubgroup.toAddGroup.{0} Real Real.addGroup (AddSubgroup.zmultiples.{0} Real Real.addGroup a))))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) => (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) -> Real) (AddMonoidHom.hasCoeToFun.{0, 0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) Real (AddMonoid.toAddZeroClass.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (SubNegMonoid.toAddMonoid.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (AddGroup.toSubNegMonoid.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a)) (AddSubgroup.toAddGroup.{0} Real Real.addGroup (AddSubgroup.zmultiples.{0} Real Real.addGroup a))))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.addGroup)))) (AddSubgroup.subtype.{0} Real Real.addGroup (AddSubgroup.zmultiples.{0} Real Real.addGroup a))) (Filter.cofinite.{0} (coeSort.{1, 2} (AddSubgroup.{0} Real Real.addGroup) Type (SetLike.hasCoeToSort.{0, 0} (AddSubgroup.{0} Real Real.addGroup) Real (AddSubgroup.setLike.{0} Real Real.addGroup)) (AddSubgroup.zmultiples.{0} Real Real.addGroup a))) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))
+but is expected to have type
+ forall (a : Real), Filter.Tendsto.{0, 0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (FunLike.coe.{1, 1, 1} (AddMonoidHom.{0, 0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (fun (_x : Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.398 : Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) => Real) _x) (AddHomClass.toFunLike.{0, 0, 0} (AddMonoidHom.{0, 0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddZeroClass.toAdd.{0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a)))) (AddZeroClass.toAdd.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (AddMonoidHomClass.toAddHomClass.{0, 0, 0} (AddMonoidHom.{0, 0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))) (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddMonoidHom.addMonoidHomClass.{0, 0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) Real (AddSubmonoid.toAddZeroClass.{0} Real (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal))) (AddSubgroup.toAddSubmonoid.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (AddMonoid.toAddZeroClass.{0} Real (SubNegMonoid.toAddMonoid.{0} Real (AddGroup.toSubNegMonoid.{0} Real Real.instAddGroupReal)))))) (AddSubgroup.subtype.{0} Real Real.instAddGroupReal (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a))) (Filter.cofinite.{0} (Subtype.{1} Real (fun (x : Real) => Membership.mem.{0, 0} Real (AddSubgroup.{0} Real Real.instAddGroupReal) (SetLike.instMembership.{0, 0} (AddSubgroup.{0} Real Real.instAddGroupReal) Real (AddSubgroup.instSetLikeAddSubgroup.{0} Real Real.instAddGroupReal)) x (AddSubgroup.zmultiples.{0} Real Real.instAddGroupReal a)))) (Filter.cocompact.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))
+Case conversion may be inaccurate. Consider using '#align add_subgroup.tendsto_zmultiples_subtype_cofinite AddSubgroup.tendsto_zmultiples_subtype_cofiniteₓ'. -/
/-- The subgroup "multiples of `a`" (`zmultiples a`) is a discrete subgroup of `ℝ`, i.e. its
intersection with compact sets is finite. -/
theorem tendsto_zmultiples_subtype_cofinite (a : ℝ) :
@@ -296,7 +426,7 @@ theorem tendsto_zmultiples_subtype_cofinite (a : ℝ) :
end AddSubgroup
/-- Given a nontrivial subgroup `G ⊆ ℝ`, if `G ∩ ℝ_{>0}` has no minimum then `G` is dense. -/
-theorem Real.subgroup_dense_of_no_min {G : AddSubgroup ℝ} {g₀ : ℝ} (g₀_in : g₀ ∈ G) (g₀_ne : g₀ ≠ 0)
+theorem AddSubgroup.dense_of_no_min {G : AddSubgroup ℝ} {g₀ : ℝ} (g₀_in : g₀ ∈ G) (g₀_ne : g₀ ≠ 0)
(H' : ¬∃ a : ℝ, IsLeast { g : ℝ | g ∈ G ∧ 0 < g } a) : Dense (G : Set ℝ) :=
by
let G_pos := { g : ℝ | g ∈ G ∧ 0 < g }
@@ -323,11 +453,11 @@ theorem Real.subgroup_dense_of_no_min {G : AddSubgroup ℝ} {g₀ : ℝ} (g₀_i
· exact AddSubgroup.int_mul_mem _ g₂_in
· rw [abs_of_nonneg (sub_floor_div_mul_nonneg x g₂_pos)]
linarith [sub_floor_div_mul_lt x g₂_pos]
-#align real.subgroup_dense_of_no_min Real.subgroup_dense_of_no_min
+#align real.subgroup_dense_of_no_min AddSubgroup.dense_of_no_minₓ
/-- Subgroups of `ℝ` are either dense or cyclic. See `real.subgroup_dense_of_no_min` and
`subgroup_cyclic_of_min` for more precise statements. -/
-theorem Real.subgroup_dense_or_cyclic (G : AddSubgroup ℝ) :
+theorem AddSubgroup.dense_or_cyclic (G : AddSubgroup ℝ) :
Dense (G : Set ℝ) ∨ ∃ a : ℝ, G = AddSubgroup.closure {a} :=
by
cases' AddSubgroup.bot_or_exists_ne_zero G with H H
@@ -341,8 +471,8 @@ theorem Real.subgroup_dense_or_cyclic (G : AddSubgroup ℝ) :
exact ⟨a, AddSubgroup.cyclic_of_min ha⟩
· left
rcases H with ⟨g₀, g₀_in, g₀_ne⟩
- exact Real.subgroup_dense_of_no_min g₀_in g₀_ne H'
-#align real.subgroup_dense_or_cyclic Real.subgroup_dense_or_cyclic
+ exact AddSubgroup.dense_of_no_min g₀_in g₀_ne H'
+#align real.subgroup_dense_or_cyclic AddSubgroup.dense_or_cyclicₓ
end Subgroups
mathlib commit https://github.com/leanprover-community/mathlib/commit/62e8311c791f02c47451bf14aa2501048e7c2f33
@@ -4,14 +4,14 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Mario Carneiro
! This file was ported from Lean 3 source module topology.instances.real
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! leanprover-community/mathlib commit 9a59dcb7a2d06bf55da57b9030169219980660cd
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathbin.Topology.MetricSpace.Basic
import Mathbin.Topology.Algebra.UniformGroup
import Mathbin.Topology.Algebra.UniformMulAction
-import Mathbin.Topology.Algebra.Ring
+import Mathbin.Topology.Algebra.Ring.Basic
import Mathbin.Topology.Algebra.Star
import Mathbin.Topology.Algebra.Order.Field
import Mathbin.RingTheory.Subring.Basic
mathlib commit https://github.com/leanprover-community/mathlib/commit/195fcd60ff2bfe392543bceb0ec2adcdb472db4c
@@ -67,7 +67,7 @@ instance : ProperSpace ℝ
apply is_compact_Icc
instance : SecondCountableTopology ℝ :=
- second_countable_of_proper
+ secondCountable_of_proper
/- ./././Mathport/Syntax/Translate/Expr.lean:107:6: warning: expanding binder group (a b) -/
theorem Real.isTopologicalBasis_Ioo_rat :
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -79,7 +79,7 @@ theorem Real.cobounded_eq : cobounded ℝ = atBot ⊔ atTop := by
#align real.cocompact_eq Real.cocompact_eq
@[deprecated] alias Real.atBot_le_cocompact := atBot_le_cocompact -- deprecated on 2024-02-07
-@[deprecated] alias Real.atTop_le_cocompact := atBot_le_cocompact -- deprecated on 2024-02-07
+@[deprecated] alias Real.atTop_le_cocompact := atTop_le_cocompact -- deprecated on 2024-02-07
/- TODO(Mario): Prove that these are uniform isomorphisms instead of uniform embeddings
lemma uniform_embedding_add_rat {r : ℚ} : uniform_embedding (fun p : ℚ => p + r) :=
open Classical
(#11199)
We remove all but one open Classical
s, instead preferring to use open scoped Classical
. The only real side-effect this led to is moving a couple declarations to use Exists.choose
instead of Classical.choose
.
The first few commits are explicitly labelled regex replaces for ease of review.
@@ -18,7 +18,8 @@ import Mathlib.Topology.Instances.Int
noncomputable section
-open Classical Filter Int Metric Set TopologicalSpace Bornology
+open scoped Classical
+open Filter Int Metric Set TopologicalSpace Bornology
open scoped Topology Uniformity Interval
universe u v w
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -135,7 +135,7 @@ theorem Real.uniformContinuous_mul (s : Set (ℝ × ℝ)) {r₁ r₂ : ℝ}
protected theorem Real.continuous_mul : Continuous fun p : ℝ × ℝ => p.1 * p.2 := continuous_mul
#align real.continuous_mul Real.continuous_mul
--- porting note: moved `TopologicalRing` instance up
+-- Porting note: moved `TopologicalRing` instance up
instance : CompleteSpace ℝ := by
apply complete_of_cauchySeq_tendsto
refine
s (#10762)
I replaced a few "terminal" refine/refine'
s with exact
.
The strategy was very simple-minded: essentially any refine
whose following line had smaller indentation got replaced by exact
and then I cleaned up the mess.
This PR certainly leaves some further terminal refine
s, but maybe the current change is beneficial.
@@ -145,7 +145,7 @@ instance : CompleteSpace ℝ := by
rcases Metric.mem_nhds_iff.1 h with ⟨ε, ε0, hε⟩
have := c.equiv_lim ε ε0
simp only [mem_map, mem_atTop_sets, mem_setOf_eq]
- refine' this.imp fun N hN n hn => hε (hN n hn)
+ exact this.imp fun N hN n hn => hε (hN n hn)
theorem Real.totallyBounded_ball (x ε : ℝ) : TotallyBounded (ball x ε) := by
rw [Real.ball_eq_Ioo]; apply totallyBounded_Ioo
OrderClosedTopology
to ClosedIciTopology
or ClosedIicTopology
.isClosed_le'
/isClosed_ge'
,
use more readable isClosed_Iic
/isClosed_Ici
instead.@@ -156,7 +156,7 @@ section
theorem closure_of_rat_image_lt {q : ℚ} :
closure (((↑) : ℚ → ℝ) '' { x | q < x }) = { r | ↑q ≤ r } :=
Subset.antisymm
- ((isClosed_ge' _).closure_subset_iff.2
+ (isClosed_Ici.closure_subset_iff.2
(image_subset_iff.2 fun p h => le_of_lt <| (@Rat.cast_lt ℝ _ _ _).2 h))
fun x hx => mem_closure_iff_nhds.2 fun t ht =>
let ⟨ε, ε0, hε⟩ := Metric.mem_nhds_iff.1 ht
@@ -74,13 +74,11 @@ theorem Real.isTopologicalBasis_Ioo_rat :
theorem Real.cobounded_eq : cobounded ℝ = atBot ⊔ atTop := by
simp only [← comap_dist_right_atTop (0 : ℝ), Real.dist_eq, sub_zero, comap_abs_atTop]
-@[simp]
-theorem Real.cocompact_eq : cocompact ℝ = atBot ⊔ atTop := by
- rw [← cobounded_eq_cocompact, cobounded_eq]
+@[deprecated] alias Real.cocompact_eq := cocompact_eq_atBot_atTop
#align real.cocompact_eq Real.cocompact_eq
-theorem Real.atBot_le_cocompact : atBot ≤ cocompact ℝ := by simp
-theorem Real.atTop_le_cocompact : atTop ≤ cocompact ℝ := by simp
+@[deprecated] alias Real.atBot_le_cocompact := atBot_le_cocompact -- deprecated on 2024-02-07
+@[deprecated] alias Real.atTop_le_cocompact := atBot_le_cocompact -- deprecated on 2024-02-07
/- TODO(Mario): Prove that these are uniform isomorphisms instead of uniform embeddings
lemma uniform_embedding_add_rat {r : ℚ} : uniform_embedding (fun p : ℚ => p + r) :=
Algebra.GroupPower.Lemmas
(#9411)
Algebra.GroupPower.Lemmas
used to be a big bag of lemmas that made it there on the criterion that they needed "more imports". This was completely untrue, as all lemmas could be moved to earlier files in PRs:
There are several reasons for this:
Algebra.GroupPower.Lemmas
Int
and Nat
lemmas which let us shortcircuit the part of the algebraic order hierarchy on which the corresponding general lemmas restThis PR finishes the job by moving the last few lemmas out of Algebra.GroupPower.Lemmas
, which is therefore deleted.
@@ -3,7 +3,6 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Mario Carneiro
-/
-import Mathlib.Algebra.GroupPower.Lemmas
import Mathlib.Algebra.Periodic
import Mathlib.Topology.Algebra.UniformMulAction
import Mathlib.Topology.Algebra.Star
@@ -3,10 +3,11 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Mario Carneiro
-/
+import Mathlib.Algebra.GroupPower.Lemmas
+import Mathlib.Algebra.Periodic
import Mathlib.Topology.Algebra.UniformMulAction
import Mathlib.Topology.Algebra.Star
import Mathlib.Topology.Algebra.Order.Field
-import Mathlib.Algebra.Periodic
import Mathlib.Topology.Instances.Int
#align_import topology.instances.real from "leanprover-community/mathlib"@"9a59dcb7a2d06bf55da57b9030169219980660cd"
$
with <|
(#9319)
See Zulip thread for the discussion.
@@ -247,7 +247,7 @@ theorem tendsto_coe_cofinite : Tendsto ((↑) : ℤ → ℝ) cofinite (cocompact
inverse images of compact sets are finite. -/
theorem tendsto_zmultiplesHom_cofinite {a : ℝ} (ha : a ≠ 0) :
Tendsto (zmultiplesHom ℝ a) cofinite (cocompact ℝ) := by
- apply (zmultiplesHom ℝ a).tendsto_coe_cofinite_of_discrete $ smul_left_injective ℤ ha
+ apply (zmultiplesHom ℝ a).tendsto_coe_cofinite_of_discrete <| smul_left_injective ℤ ha
rw [AddSubgroup.range_zmultiplesHom]
infer_instance
#align int.tendsto_zmultiples_hom_cofinite Int.tendsto_zmultiplesHom_cofinite
(· op ·) a
by (a op ·)
(#8843)
I used the regex \(\(· (.) ·\) (.)\)
, replacing with ($2 $1 ·)
.
@@ -119,7 +119,7 @@ theorem Real.Continuous.inv [TopologicalSpace α] {f : α → ℝ} (h : ∀ a, f
hf.inv₀ h
#align real.continuous.inv Real.Continuous.inv
-theorem Real.uniformContinuous_const_mul {x : ℝ} : UniformContinuous ((· * ·) x) :=
+theorem Real.uniformContinuous_const_mul {x : ℝ} : UniformContinuous (x * ·) :=
uniformContinuous_const_smul x
#align real.uniform_continuous_const_mul Real.uniformContinuous_const_mul
Mostly, this means replacing "of_open" by "of_isOpen". A few lemmas names were misleading and are corrected differently. Zulip discussion.
@@ -59,7 +59,7 @@ instance : SecondCountableTopology ℝ := secondCountable_of_proper
theorem Real.isTopologicalBasis_Ioo_rat :
@IsTopologicalBasis ℝ _ (⋃ (a : ℚ) (b : ℚ) (_ : a < b), {Ioo (a : ℝ) b}) :=
- isTopologicalBasis_of_open_of_nhds (by simp (config := { contextual := true }) [isOpen_Ioo])
+ isTopologicalBasis_of_isOpen_of_nhds (by simp (config := { contextual := true }) [isOpen_Ioo])
fun a v hav hv =>
let ⟨l, u, ⟨hl, hu⟩, h⟩ := mem_nhds_iff_exists_Ioo_subset.mp (IsOpen.mem_nhds hv hav)
let ⟨q, hlq, hqa⟩ := exists_rat_btwn hl
@@ -230,7 +230,7 @@ instance {a : ℝ} : DiscreteTopology (AddSubgroup.zmultiples a) := by
rcases eq_or_ne a 0 with (rfl | ha)
· rw [AddSubgroup.zmultiples_zero_eq_bot]
exact Subsingleton.discreteTopology (α := (⊥ : Submodule ℤ ℝ))
- rw [discreteTopology_iff_open_singleton_zero, isOpen_induced_iff]
+ rw [discreteTopology_iff_isOpen_singleton_zero, isOpen_induced_iff]
refine' ⟨ball 0 |a|, isOpen_ball, _⟩
ext ⟨x, hx⟩
obtain ⟨k, rfl⟩ := AddSubgroup.mem_zmultiples_iff.mp hx
@@ -79,6 +79,9 @@ theorem Real.cocompact_eq : cocompact ℝ = atBot ⊔ atTop := by
rw [← cobounded_eq_cocompact, cobounded_eq]
#align real.cocompact_eq Real.cocompact_eq
+theorem Real.atBot_le_cocompact : atBot ≤ cocompact ℝ := by simp
+theorem Real.atTop_le_cocompact : atTop ≤ cocompact ℝ := by simp
+
/- TODO(Mario): Prove that these are uniform isomorphisms instead of uniform embeddings
lemma uniform_embedding_add_rat {r : ℚ} : uniform_embedding (fun p : ℚ => p + r) :=
_
This reduces the main file from 3340 to 2220 lines. The remaining file is somewhat entangled, so splitting is less obvious. Help is welcome, though a follow-up PR is probably better :-)
I've kept copyright and authors as they were originally.
@@ -3,16 +3,9 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Mario Carneiro
-/
-import Mathlib.Topology.MetricSpace.Basic
-import Mathlib.Topology.Algebra.UniformGroup
import Mathlib.Topology.Algebra.UniformMulAction
-import Mathlib.Topology.Algebra.Ring.Basic
import Mathlib.Topology.Algebra.Star
import Mathlib.Topology.Algebra.Order.Field
-import Mathlib.Topology.Algebra.Order.Archimedean
-import Mathlib.RingTheory.Subring.Basic
-import Mathlib.GroupTheory.Archimedean
-import Mathlib.Algebra.Order.Group.Bounds
import Mathlib.Algebra.Periodic
import Mathlib.Topology.Instances.Int
@@ -77,10 +77,13 @@ theorem Real.isTopologicalBasis_Ioo_rat :
h ⟨hlq.trans hqa', ha'p.trans hpu⟩⟩
#align real.is_topological_basis_Ioo_rat Real.isTopologicalBasis_Ioo_rat
+@[simp]
+theorem Real.cobounded_eq : cobounded ℝ = atBot ⊔ atTop := by
+ simp only [← comap_dist_right_atTop (0 : ℝ), Real.dist_eq, sub_zero, comap_abs_atTop]
+
@[simp]
theorem Real.cocompact_eq : cocompact ℝ = atBot ⊔ atTop := by
- simp only [← comap_dist_right_atTop_eq_cocompact (0 : ℝ), Real.dist_eq, sub_zero,
- comap_abs_atTop]
+ rw [← cobounded_eq_cocompact, cobounded_eq]
#align real.cocompact_eq Real.cocompact_eq
/- TODO(Mario): Prove that these are uniform isomorphisms instead of uniform embeddings
Metric.Bounded
(#7240)
Use Bornology.IsBounded
instead.
@@ -25,7 +25,8 @@ import Mathlib.Topology.Instances.Int
noncomputable section
-open Classical Filter Int Metric Set TopologicalSpace Topology Uniformity Interval
+open Classical Filter Int Metric Set TopologicalSpace Bornology
+open scoped Topology Uniformity Interval
universe u v w
@@ -175,22 +176,19 @@ lemma closure_of_rat_image_le_le_eq {a b : ℚ} (hab : a ≤ b) :
closure (of_rat '' {q:ℚ | a ≤ q ∧ q ≤ b}) = {r:ℝ | of_rat a ≤ r ∧ r ≤ of_rat b} :=
_
-/
-theorem Real.bounded_iff_bddBelow_bddAbove {s : Set ℝ} : Bounded s ↔ BddBelow s ∧ BddAbove s :=
- ⟨by
- intro bdd
- rcases (bounded_iff_subset_ball 0).1 bdd with ⟨r, hr⟩
- -- hr : s ⊆ closed_ball 0 r
- rw [Real.closedBall_eq_Icc] at hr
- -- hr : s ⊆ Icc (0 - r) (0 + r)
+theorem Real.isBounded_iff_bddBelow_bddAbove {s : Set ℝ} : IsBounded s ↔ BddBelow s ∧ BddAbove s :=
+ ⟨fun bdd ↦ by
+ obtain ⟨r, hr⟩ : ∃ r : ℝ, s ⊆ Icc (-r) r := by
+ simpa [Real.closedBall_eq_Icc] using bdd.subset_closedBall 0
exact ⟨bddBelow_Icc.mono hr, bddAbove_Icc.mono hr⟩,
- fun h => bounded_of_bddAbove_of_bddBelow h.2 h.1⟩
-#align real.bounded_iff_bdd_below_bdd_above Real.bounded_iff_bddBelow_bddAbove
+ fun h => isBounded_of_bddAbove_of_bddBelow h.2 h.1⟩
+#align real.bounded_iff_bdd_below_bdd_above Real.isBounded_iff_bddBelow_bddAbove
-theorem Real.subset_Icc_sInf_sSup_of_bounded {s : Set ℝ} (h : Bounded s) :
+theorem Real.subset_Icc_sInf_sSup_of_isBounded {s : Set ℝ} (h : IsBounded s) :
s ⊆ Icc (sInf s) (sSup s) :=
- subset_Icc_csInf_csSup (Real.bounded_iff_bddBelow_bddAbove.1 h).1
- (Real.bounded_iff_bddBelow_bddAbove.1 h).2
-#align real.subset_Icc_Inf_Sup_of_bounded Real.subset_Icc_sInf_sSup_of_bounded
+ subset_Icc_csInf_csSup (Real.isBounded_iff_bddBelow_bddAbove.1 h).1
+ (Real.isBounded_iff_bddBelow_bddAbove.1 h).2
+#align real.subset_Icc_Inf_Sup_of_bounded Real.subset_Icc_sInf_sSup_of_isBounded
end
@@ -212,10 +210,10 @@ theorem Periodic.compact_of_continuous' [TopologicalSpace α] {f : ℝ → α} {
#align function.periodic.compact_of_continuous' Function.Periodic.compact_of_continuous'
/-- A continuous, periodic function is bounded. -/
-theorem Periodic.bounded_of_continuous [PseudoMetricSpace α] {f : ℝ → α} {c : ℝ} (hp : Periodic f c)
- (hc : c ≠ 0) (hf : Continuous f) : Bounded (range f) :=
- (hp.compact_of_continuous hc hf).bounded
-#align function.periodic.bounded_of_continuous Function.Periodic.bounded_of_continuous
+theorem Periodic.isBounded_of_continuous [PseudoMetricSpace α] {f : ℝ → α} {c : ℝ}
+ (hp : Periodic f c) (hc : c ≠ 0) (hf : Continuous f) : IsBounded (range f) :=
+ (hp.compact_of_continuous hc hf).isBounded
+#align function.periodic.bounded_of_continuous Function.Periodic.isBounded_of_continuous
end Function
@@ -227,21 +227,32 @@ namespace Int
open Metric
+/-- This is a special case of `NormedSpace.discreteTopology_zmultiples`. It exists only to simplify
+dependencies. -/
+instance {a : ℝ} : DiscreteTopology (AddSubgroup.zmultiples a) := by
+ rcases eq_or_ne a 0 with (rfl | ha)
+ · rw [AddSubgroup.zmultiples_zero_eq_bot]
+ exact Subsingleton.discreteTopology (α := (⊥ : Submodule ℤ ℝ))
+ rw [discreteTopology_iff_open_singleton_zero, isOpen_induced_iff]
+ refine' ⟨ball 0 |a|, isOpen_ball, _⟩
+ ext ⟨x, hx⟩
+ obtain ⟨k, rfl⟩ := AddSubgroup.mem_zmultiples_iff.mp hx
+ simp [ha, Real.dist_eq, abs_mul, (by norm_cast : |(k : ℝ)| < 1 ↔ |k| < 1)]
+
/-- Under the coercion from `ℤ` to `ℝ`, inverse images of compact sets are finite. -/
theorem tendsto_coe_cofinite : Tendsto ((↑) : ℤ → ℝ) cofinite (cocompact ℝ) := by
- refine' tendsto_cocompact_of_tendsto_dist_comp_atTop (0 : ℝ) _
- simp only [Filter.tendsto_atTop, eventually_cofinite, not_le, ← mem_ball]
- change ∀ r : ℝ, (Int.cast ⁻¹' ball (0 : ℝ) r).Finite
- simp [Real.ball_eq_Ioo, Set.finite_Ioo]
+ apply (castAddHom ℝ).tendsto_coe_cofinite_of_discrete cast_injective
+ rw [range_castAddHom]
+ infer_instance
#align int.tendsto_coe_cofinite Int.tendsto_coe_cofinite
/-- For nonzero `a`, the "multiples of `a`" map `zmultiplesHom` from `ℤ` to `ℝ` is discrete, i.e.
inverse images of compact sets are finite. -/
theorem tendsto_zmultiplesHom_cofinite {a : ℝ} (ha : a ≠ 0) :
Tendsto (zmultiplesHom ℝ a) cofinite (cocompact ℝ) := by
- convert (tendsto_cocompact_mul_right₀ ha).comp Int.tendsto_coe_cofinite
- ext n
- simp
+ apply (zmultiplesHom ℝ a).tendsto_coe_cofinite_of_discrete $ smul_left_injective ℤ ha
+ rw [AddSubgroup.range_zmultiplesHom]
+ infer_instance
#align int.tendsto_zmultiples_hom_cofinite Int.tendsto_zmultiplesHom_cofinite
end Int
@@ -251,14 +262,8 @@ namespace AddSubgroup
/-- The subgroup "multiples of `a`" (`zmultiples a`) is a discrete subgroup of `ℝ`, i.e. its
intersection with compact sets is finite. -/
theorem tendsto_zmultiples_subtype_cofinite (a : ℝ) :
- Tendsto (zmultiples a).subtype cofinite (cocompact ℝ) := by
- rcases eq_or_ne a 0 with rfl | ha
- · rw [zmultiples_zero_eq_bot, cofinite_eq_bot]; exact tendsto_bot
- · calc cofinite.map (zmultiples a).subtype
- ≤ .map (zmultiples a).subtype (.map (rangeFactorization (· • a)) (@cofinite ℤ)) :=
- Filter.map_mono surjective_onto_range.le_map_cofinite
- _ = (@cofinite ℤ).map (zmultiplesHom ℝ a) := Filter.map_map
- _ ≤ cocompact ℝ := Int.tendsto_zmultiplesHom_cofinite ha
+ Tendsto (zmultiples a).subtype cofinite (cocompact ℝ) :=
+ (zmultiples a).tendsto_coe_cofinite_of_discrete
#align add_subgroup.tendsto_zmultiples_subtype_cofinite AddSubgroup.tendsto_zmultiples_subtype_cofinite
end AddSubgroup
@@ -2,11 +2,6 @@
Copyright (c) 2017 Johannes Hölzl. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Mario Carneiro
-
-! This file was ported from Lean 3 source module topology.instances.real
-! leanprover-community/mathlib commit 9a59dcb7a2d06bf55da57b9030169219980660cd
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Topology.MetricSpace.Basic
import Mathlib.Topology.Algebra.UniformGroup
@@ -21,6 +16,8 @@ import Mathlib.Algebra.Order.Group.Bounds
import Mathlib.Algebra.Periodic
import Mathlib.Topology.Instances.Int
+#align_import topology.instances.real from "leanprover-community/mathlib"@"9a59dcb7a2d06bf55da57b9030169219980660cd"
+
/-!
# Topological properties of ℝ
-/
@@ -86,7 +86,7 @@ theorem Real.cocompact_eq : cocompact ℝ = atBot ⊔ atTop := by
#align real.cocompact_eq Real.cocompact_eq
/- TODO(Mario): Prove that these are uniform isomorphisms instead of uniform embeddings
-lemma uniform_embedding_add_rat {r : ℚ} : uniform_embedding (λp:ℚ, p + r) :=
+lemma uniform_embedding_add_rat {r : ℚ} : uniform_embedding (fun p : ℚ => p + r) :=
_
lemma uniform_embedding_mul_rat {q : ℚ} (hq : q ≠ 0) : uniform_embedding ((*) q) :=
@@ -171,12 +171,13 @@ theorem closure_of_rat_image_lt {q : ℚ} :
#align closure_of_rat_image_lt closure_of_rat_image_lt
/- TODO(Mario): Put these back only if needed later
-lemma closure_of_rat_image_le_eq {q : ℚ} : closure ((coe:ℚ → ℝ) '' {x | q ≤ x}) = {r | ↑q ≤ r} :=
-_
+lemma closure_of_rat_image_le_eq {q : ℚ} : closure ((coe : ℚ → ℝ) '' {x | q ≤ x}) = {r | ↑q ≤ r} :=
+ _
lemma closure_of_rat_image_le_le_eq {a b : ℚ} (hab : a ≤ b) :
- closure (of_rat '' {q:ℚ | a ≤ q ∧ q ≤ b}) = {r:ℝ | of_rat a ≤ r ∧ r ≤ of_rat b} :=
-_-/
+ closure (of_rat '' {q:ℚ | a ≤ q ∧ q ≤ b}) = {r:ℝ | of_rat a ≤ r ∧ r ≤ of_rat b} :=
+ _
+-/
theorem Real.bounded_iff_bddBelow_bddAbove {s : Set ℝ} : Bounded s ↔ BddBelow s ∧ BddAbove s :=
⟨by
intro bdd
@@ -67,7 +67,7 @@ instance : ProperSpace ℝ where
instance : SecondCountableTopology ℝ := secondCountable_of_proper
theorem Real.isTopologicalBasis_Ioo_rat :
- @IsTopologicalBasis ℝ _ (⋃ (a : ℚ) (b : ℚ) (_h : a < b), {Ioo (a : ℝ) b}) :=
+ @IsTopologicalBasis ℝ _ (⋃ (a : ℚ) (b : ℚ) (_ : a < b), {Ioo (a : ℝ) b}) :=
isTopologicalBasis_of_open_of_nhds (by simp (config := { contextual := true }) [isOpen_Ioo])
fun a v hav hv =>
let ⟨l, u, ⟨hl, hu⟩, h⟩ := mem_nhds_iff_exists_Ioo_subset.mp (IsOpen.mem_nhds hv hav)
fix-comments.py
on all files.@@ -237,7 +237,7 @@ theorem tendsto_coe_cofinite : Tendsto ((↑) : ℤ → ℝ) cofinite (cocompact
simp [Real.ball_eq_Ioo, Set.finite_Ioo]
#align int.tendsto_coe_cofinite Int.tendsto_coe_cofinite
-/-- For nonzero `a`, the "multiples of `a`" map `zmultiples_hom` from `ℤ` to `ℝ` is discrete, i.e.
+/-- For nonzero `a`, the "multiples of `a`" map `zmultiplesHom` from `ℤ` to `ℝ` is discrete, i.e.
inverse images of compact sets are finite. -/
theorem tendsto_zmultiplesHom_cofinite {a : ℝ} (ha : a ≠ 0) :
Tendsto (zmultiplesHom ℝ a) cofinite (cocompact ℝ) := by
sSup
/iSup
(#3938)
As discussed on Zulip
supₛ
→ sSup
infₛ
→ sInf
supᵢ
→ iSup
infᵢ
→ iInf
bsupₛ
→ bsSup
binfₛ
→ bsInf
bsupᵢ
→ biSup
binfᵢ
→ biInf
csupₛ
→ csSup
cinfₛ
→ csInf
csupᵢ
→ ciSup
cinfᵢ
→ ciInf
unionₛ
→ sUnion
interₛ
→ sInter
unionᵢ
→ iUnion
interᵢ
→ iInter
bunionₛ
→ bsUnion
binterₛ
→ bsInter
bunionᵢ
→ biUnion
binterᵢ
→ biInter
Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>
@@ -74,7 +74,7 @@ theorem Real.isTopologicalBasis_Ioo_rat :
let ⟨q, hlq, hqa⟩ := exists_rat_btwn hl
let ⟨p, hap, hpu⟩ := exists_rat_btwn hu
⟨Ioo q p, by
- simp only [mem_unionᵢ]
+ simp only [mem_iUnion]
exact ⟨q, p, Rat.cast_lt.1 <| hqa.trans hap, rfl⟩, ⟨hqa, hap⟩, fun a' ⟨hqa', ha'p⟩ =>
h ⟨hlq.trans hqa', ha'p.trans hpu⟩⟩
#align real.is_topological_basis_Ioo_rat Real.isTopologicalBasis_Ioo_rat
@@ -188,11 +188,11 @@ theorem Real.bounded_iff_bddBelow_bddAbove {s : Set ℝ} : Bounded s ↔ BddBelo
fun h => bounded_of_bddAbove_of_bddBelow h.2 h.1⟩
#align real.bounded_iff_bdd_below_bdd_above Real.bounded_iff_bddBelow_bddAbove
-theorem Real.subset_Icc_infₛ_supₛ_of_bounded {s : Set ℝ} (h : Bounded s) :
- s ⊆ Icc (infₛ s) (supₛ s) :=
- subset_Icc_cinfₛ_csupₛ (Real.bounded_iff_bddBelow_bddAbove.1 h).1
+theorem Real.subset_Icc_sInf_sSup_of_bounded {s : Set ℝ} (h : Bounded s) :
+ s ⊆ Icc (sInf s) (sSup s) :=
+ subset_Icc_csInf_csSup (Real.bounded_iff_bddBelow_bddAbove.1 h).1
(Real.bounded_iff_bddBelow_bddAbove.1 h).2
-#align real.subset_Icc_Inf_Sup_of_bounded Real.subset_Icc_infₛ_supₛ_of_bounded
+#align real.subset_Icc_Inf_Sup_of_bounded Real.subset_Icc_sInf_sSup_of_bounded
end
@@ -266,4 +266,3 @@ theorem tendsto_zmultiples_subtype_cofinite (a : ℝ) :
end AddSubgroup
end Subgroups
-
The unported dependencies are
algebra.order.module
init.core
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
algebra.order.monoid.cancel.basic
init.data.list.default
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file