Module docstring
{"# Topology on the rational numbers
The structure of a metric space on ℚ is introduced in this file, induced from ℝ.
"}
{"# Topology on the rational numbers
The structure of a metric space on ℚ is introduced in this file, induced from ℝ.
"}
Rat.instMetricSpace
instance
: MetricSpace ℚ
instance : MetricSpace ℚ :=
MetricSpace.induced (↑) Rat.cast_injective Real.metricSpace
Rat.dist_eq
theorem
(x y : ℚ) : dist x y = |(x : ℝ) - y|
theorem dist_eq (x y : ℚ) : dist x y = |(x : ℝ) - y| := rfl
Rat.dist_cast
theorem
(x y : ℚ) : dist (x : ℝ) y = dist x y
Rat.uniformContinuous_coe_real
theorem
: UniformContinuous ((↑) : ℚ → ℝ)
theorem uniformContinuous_coe_real : UniformContinuous ((↑) : ℚ → ℝ) :=
uniformContinuous_comap
Rat.isUniformEmbedding_coe_real
theorem
: IsUniformEmbedding ((↑) : ℚ → ℝ)
theorem isUniformEmbedding_coe_real : IsUniformEmbedding ((↑) : ℚ → ℝ) :=
isUniformEmbedding_comap Rat.cast_injective
Rat.isDenseEmbedding_coe_real
theorem
: IsDenseEmbedding ((↑) : ℚ → ℝ)
theorem isDenseEmbedding_coe_real : IsDenseEmbedding ((↑) : ℚ → ℝ) :=
isUniformEmbedding_coe_real.isDenseEmbedding Rat.denseRange_cast
Rat.isEmbedding_coe_real
theorem
: IsEmbedding ((↑) : ℚ → ℝ)
theorem isEmbedding_coe_real : IsEmbedding ((↑) : ℚ → ℝ) :=
isDenseEmbedding_coe_real.isEmbedding
Rat.continuous_coe_real
theorem
: Continuous ((↑) : ℚ → ℝ)
theorem continuous_coe_real : Continuous ((↑) : ℚ → ℝ) :=
uniformContinuous_coe_real.continuous
Nat.dist_cast_rat
theorem
(x y : ℕ) : dist (x : ℚ) y = dist x y
@[norm_cast, simp]
theorem Nat.dist_cast_rat (x y : ℕ) : dist (x : ℚ) y = dist x y := by
rw [← Nat.dist_cast_real, ← Rat.dist_cast]; congr
Nat.isUniformEmbedding_coe_rat
theorem
: IsUniformEmbedding ((↑) : ℕ → ℚ)
theorem Nat.isUniformEmbedding_coe_rat : IsUniformEmbedding ((↑) : ℕ → ℚ) :=
isUniformEmbedding_bot_of_pairwise_le_dist zero_lt_one <| by simpa using Nat.pairwise_one_le_dist
Nat.isClosedEmbedding_coe_rat
theorem
: IsClosedEmbedding ((↑) : ℕ → ℚ)
theorem Nat.isClosedEmbedding_coe_rat : IsClosedEmbedding ((↑) : ℕ → ℚ) :=
isClosedEmbedding_of_pairwise_le_dist zero_lt_one <| by simpa using Nat.pairwise_one_le_dist
Int.dist_cast_rat
theorem
(x y : ℤ) : dist (x : ℚ) y = dist x y
@[norm_cast, simp]
theorem Int.dist_cast_rat (x y : ℤ) : dist (x : ℚ) y = dist x y := by
rw [← Int.dist_cast_real, ← Rat.dist_cast]; congr
Int.isUniformEmbedding_coe_rat
theorem
: IsUniformEmbedding ((↑) : ℤ → ℚ)
theorem Int.isUniformEmbedding_coe_rat : IsUniformEmbedding ((↑) : ℤ → ℚ) :=
isUniformEmbedding_bot_of_pairwise_le_dist zero_lt_one <| by simpa using Int.pairwise_one_le_dist
Int.isClosedEmbedding_coe_rat
theorem
: IsClosedEmbedding ((↑) : ℤ → ℚ)
theorem Int.isClosedEmbedding_coe_rat : IsClosedEmbedding ((↑) : ℤ → ℚ) :=
isClosedEmbedding_of_pairwise_le_dist zero_lt_one <| by simpa using Int.pairwise_one_le_dist
Rat.instNoncompactSpace
instance
: NoncompactSpace ℚ
instance : NoncompactSpace ℚ := Int.isClosedEmbedding_coe_rat.noncompactSpace
Rat.uniformContinuous_add
theorem
: UniformContinuous fun p : ℚ × ℚ => p.1 + p.2
theorem uniformContinuous_add : UniformContinuous fun p : ℚℚ × ℚ => p.1 + p.2 :=
Rat.isUniformEmbedding_coe_real.isUniformInducing.uniformContinuous_iff.2 <| by
simp only [Function.comp_def, Rat.cast_add]
exact Real.uniformContinuous_add.comp
(Rat.uniformContinuous_coe_real.prodMap Rat.uniformContinuous_coe_real)
Rat.uniformContinuous_neg
theorem
: UniformContinuous (@Neg.neg ℚ _)
theorem uniformContinuous_neg : UniformContinuous (@Neg.neg ℚ _) :=
Metric.uniformContinuous_iff.2 fun ε ε0 =>
⟨_, ε0, fun _ _ h => by simpa only [abs_sub_comm, dist_eq, cast_neg, neg_sub_neg] using h⟩
Rat.instIsUniformAddGroup
instance
: IsUniformAddGroup ℚ
Rat.instIsTopologicalAddGroup
instance
: IsTopologicalAddGroup ℚ
instance : IsTopologicalAddGroup ℚ := inferInstance
Rat.instOrderTopology
instance
: OrderTopology ℚ
instance : OrderTopology ℚ := induced_orderTopology _ Rat.cast_lt exists_rat_btwn
Rat.uniformContinuous_abs
theorem
: UniformContinuous (abs : ℚ → ℚ)
theorem uniformContinuous_abs : UniformContinuous (abs : ℚ → ℚ) :=
Metric.uniformContinuous_iff.2 fun ε ε0 =>
⟨ε, ε0, fun _ _ h =>
lt_of_le_of_lt (by simpa [Rat.dist_eq] using abs_abs_sub_abs_le_abs_sub _ _) h⟩
Rat.instIsTopologicalRing
instance
: IsTopologicalRing ℚ
instance : IsTopologicalRing ℚ := inferInstance
Rat.totallyBounded_Icc
theorem
(a b : ℚ) : TotallyBounded (Icc a b)
nonrec theorem totallyBounded_Icc (a b : ℚ) : TotallyBounded (Icc a b) := by
simpa only [preimage_cast_Icc]
using totallyBounded_preimage Rat.isUniformEmbedding_coe_real.isUniformInducing
(totallyBounded_Icc (a : ℝ) b)
NNRat.instMetricSpace
instance
: MetricSpace ℚ≥0
instance : MetricSpace ℚ≥0 :=
Subtype.metricSpace
NNRat.dist_eq
theorem
(p q : ℚ≥0) : dist p q = dist (p : ℚ) (q : ℚ)
NNRat.nndist_eq
theorem
(p q : ℚ≥0) : nndist p q = nndist (p : ℚ) (q : ℚ)
NNRat.instIsTopologicalSemiring
instance
: IsTopologicalSemiring ℚ≥0
instance : IsTopologicalSemiring ℚ≥0 where
toContinuousAdd := continuousAdd_induced Nonneg.coeRingHom
toContinuousMul := continuousMul_induced Nonneg.coeRingHom
NNRat.instContinuousSub
instance
: ContinuousSub ℚ≥0
NNRat.instOrderTopology
instance
: OrderTopology ℚ≥0
instance : OrderTopology ℚ≥0 := orderTopology_of_ordConnected (t := Set.Ici 0)
NNRat.instHasContinuousInv₀
instance
: HasContinuousInv₀ ℚ≥0
instance : HasContinuousInv₀ ℚ≥0 := inferInstance