topology.metric_space.cau_seq_filter
⟷
Mathlib.Topology.MetricSpace.CauSeqFilter
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)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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
@@ -61,7 +61,7 @@ theorem CauchySeq.isCauSeq {f : ℕ → β} (hf : CauchySeq f) : IsCauSeq norm f
cases' cauchy_iff.1 hf with hf1 hf2
intro ε hε
rcases hf2 {x | dist x.1 x.2 < ε} (dist_mem_uniformity hε) with ⟨t, ⟨ht, htsub⟩⟩
- simp at ht ; cases' ht with N hN
+ simp at ht; cases' ht with N hN
exists N
intro j hj
rw [← dist_eq_norm]
@@ -81,7 +81,7 @@ theorem CauSeq.cauchySeq (f : CauSeq β norm) : CauchySeq f :=
constructor
· exists N; intro b hb; exists b; simp [hb]
· rintro ⟨a, b⟩ ⟨⟨a', ⟨ha'1, ha'2⟩⟩, ⟨b', ⟨hb'1, hb'2⟩⟩⟩
- dsimp at ha'1 ha'2 hb'1 hb'2
+ dsimp at ha'1 ha'2 hb'1 hb'2
rw [← ha'2, ← hb'2]
apply hεs
rw [dist_eq_norm]
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,7 +3,7 @@ Copyright (c) 2018 Robert Y. Lewis. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Robert Y. Lewis, Sébastien Gouëzel
-/
-import Mathbin.Analysis.Normed.Field.Basic
+import Analysis.Normed.Field.Basic
#align_import topology.metric_space.cau_seq_filter from "leanprover-community/mathlib"@"10bf4f825ad729c5653adc039dafa3622e7f93c9"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,14 +2,11 @@
Copyright (c) 2018 Robert Y. Lewis. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Robert Y. Lewis, Sébastien Gouëzel
-
-! This file was ported from Lean 3 source module topology.metric_space.cau_seq_filter
-! leanprover-community/mathlib commit 10bf4f825ad729c5653adc039dafa3622e7f93c9
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Analysis.Normed.Field.Basic
+#align_import topology.metric_space.cau_seq_filter from "leanprover-community/mathlib"@"10bf4f825ad729c5653adc039dafa3622e7f93c9"
+
/-!
# Completeness in terms of `cauchy` filters vs `is_cau_seq` sequences
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -30,6 +30,7 @@ open scoped Topology Classical
variable {β : Type v}
+#print CauSeq.tendsto_limit /-
theorem CauSeq.tendsto_limit [NormedRing β] [hn : IsAbsoluteValue (norm : β → ℝ)]
(f : CauSeq β norm) [CauSeq.IsComplete β norm] : Tendsto f atTop (𝓝 f.lim) :=
tendsto_nhds.mpr
@@ -44,6 +45,7 @@ theorem CauSeq.tendsto_limit [NormedRing β] [hn : IsAbsoluteValue (norm : β
dsimp [Metric.ball]; rw [dist_comm, dist_eq_norm]
solve_by_elim)
#align cau_seq.tendsto_limit CauSeq.tendsto_limit
+-/
variable [NormedField β]
@@ -56,6 +58,7 @@ variable [NormedField β]
-/
open Metric
+#print CauchySeq.isCauSeq /-
theorem CauchySeq.isCauSeq {f : ℕ → β} (hf : CauchySeq f) : IsCauSeq norm f :=
by
cases' cauchy_iff.1 hf with hf1 hf2
@@ -68,7 +71,9 @@ theorem CauchySeq.isCauSeq {f : ℕ → β} (hf : CauchySeq f) : IsCauSeq norm f
apply @htsub (f j, f N)
apply Set.mk_mem_prod <;> solve_by_elim [le_refl]
#align cauchy_seq.is_cau_seq CauchySeq.isCauSeq
+-/
+#print CauSeq.cauchySeq /-
theorem CauSeq.cauchySeq (f : CauSeq β norm) : CauchySeq f :=
by
refine' cauchy_iff.2 ⟨by infer_instance, fun s hs => _⟩
@@ -85,13 +90,17 @@ theorem CauSeq.cauchySeq (f : CauSeq β norm) : CauchySeq f :=
rw [dist_eq_norm]
apply hN <;> assumption
#align cau_seq.cauchy_seq CauSeq.cauchySeq
+-/
+#print isCauSeq_iff_cauchySeq /-
/-- In a normed field, `cau_seq` coincides with the usual notion of Cauchy sequences. -/
theorem isCauSeq_iff_cauchySeq {α : Type u} [NormedField α] {u : ℕ → α} :
IsCauSeq norm u ↔ CauchySeq u :=
⟨fun h => CauSeq.cauchySeq ⟨u, h⟩, fun h => h.IsCauSeq⟩
#align cau_seq_iff_cauchy_seq isCauSeq_iff_cauchySeq
+-/
+#print completeSpace_of_cauSeq_isComplete /-
-- see Note [lower instance priority]
/-- A complete normed field is complete as a metric space, as Cauchy sequences converge by
assumption and this suffices to characterize completeness. -/
@@ -107,4 +116,5 @@ instance (priority := 100) completeSpace_of_cauSeq_isComplete [CauSeq.IsComplete
exists N
simpa [dist_eq_norm] using hN
#align complete_space_of_cau_seq_complete completeSpace_of_cauSeq_isComplete
+-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -60,7 +60,7 @@ theorem CauchySeq.isCauSeq {f : ℕ → β} (hf : CauchySeq f) : IsCauSeq norm f
by
cases' cauchy_iff.1 hf with hf1 hf2
intro ε hε
- rcases hf2 { x | dist x.1 x.2 < ε } (dist_mem_uniformity hε) with ⟨t, ⟨ht, htsub⟩⟩
+ rcases hf2 {x | dist x.1 x.2 < ε} (dist_mem_uniformity hε) with ⟨t, ⟨ht, htsub⟩⟩
simp at ht ; cases' ht with N hN
exists N
intro j hj
@@ -74,7 +74,7 @@ theorem CauSeq.cauchySeq (f : CauSeq β norm) : CauchySeq f :=
refine' cauchy_iff.2 ⟨by infer_instance, fun s hs => _⟩
rcases mem_uniformity_dist.1 hs with ⟨ε, ⟨hε, hεs⟩⟩
cases' CauSeq.cauchy₂ f hε with N hN
- exists { n | n ≥ N }.image f
+ exists {n | n ≥ N}.image f
simp only [exists_prop, mem_at_top_sets, mem_map, mem_image, ge_iff_le, mem_set_of_eq]
constructor
· exists N; intro b hb; exists b; simp [hb]
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -61,7 +61,7 @@ theorem CauchySeq.isCauSeq {f : ℕ → β} (hf : CauchySeq f) : IsCauSeq norm f
cases' cauchy_iff.1 hf with hf1 hf2
intro ε hε
rcases hf2 { x | dist x.1 x.2 < ε } (dist_mem_uniformity hε) with ⟨t, ⟨ht, htsub⟩⟩
- simp at ht; cases' ht with N hN
+ simp at ht ; cases' ht with N hN
exists N
intro j hj
rw [← dist_eq_norm]
@@ -79,7 +79,7 @@ theorem CauSeq.cauchySeq (f : CauSeq β norm) : CauchySeq f :=
constructor
· exists N; intro b hb; exists b; simp [hb]
· rintro ⟨a, b⟩ ⟨⟨a', ⟨ha'1, ha'2⟩⟩, ⟨b', ⟨hb'1, hb'2⟩⟩⟩
- dsimp at ha'1 ha'2 hb'1 hb'2
+ dsimp at ha'1 ha'2 hb'1 hb'2
rw [← ha'2, ← hb'2]
apply hεs
rw [dist_eq_norm]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -26,7 +26,7 @@ universe u v
open Set Filter
-open Topology Classical
+open scoped Topology Classical
variable {β : Type v}
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -30,12 +30,6 @@ open Topology Classical
variable {β : Type v}
-/- warning: cau_seq.tendsto_limit -> CauSeq.tendsto_limit is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} [_inst_1 : NormedRing.{u1} β] [hn : IsAbsoluteValue.{0, u1} Real Real.orderedSemiring β (Ring.toSemiring.{u1} β (NormedRing.toRing.{u1} β _inst_1)) (Norm.norm.{u1} β (NormedRing.toHasNorm.{u1} β _inst_1))] (f : CauSeq.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β _inst_1) (Norm.norm.{u1} β (NormedRing.toHasNorm.{u1} β _inst_1))) [_inst_2 : CauSeq.IsComplete.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β _inst_1) (Norm.norm.{u1} β (NormedRing.toHasNorm.{u1} β _inst_1)) hn], Filter.Tendsto.{0, u1} Nat β (coeFn.{succ u1, succ u1} (CauSeq.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β _inst_1) (Norm.norm.{u1} β (NormedRing.toHasNorm.{u1} β _inst_1))) (fun (_x : CauSeq.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β _inst_1) (Norm.norm.{u1} β (NormedRing.toHasNorm.{u1} β _inst_1))) => Nat -> β) (CauSeq.hasCoeToFun.{0, u1} Real β Real.linearOrderedField (NormedRing.toRing.{u1} β _inst_1) (Norm.norm.{u1} β (NormedRing.toHasNorm.{u1} β _inst_1))) f) (Filter.atTop.{0} Nat (PartialOrder.toPreorder.{0} Nat (OrderedCancelAddCommMonoid.toPartialOrder.{0} Nat (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} Nat Nat.strictOrderedSemiring)))) (nhds.{u1} β (UniformSpace.toTopologicalSpace.{u1} β (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedRing.toPseudoMetricSpace.{u1} β (NormedRing.toSeminormedRing.{u1} β _inst_1)))) (CauSeq.lim.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β _inst_1) (Norm.norm.{u1} β (NormedRing.toHasNorm.{u1} β _inst_1)) hn _inst_2 f))
-but is expected to have type
- forall {β : Type.{u1}} [_inst_1 : NormedRing.{u1} β] [hn : IsAbsoluteValue.{0, u1} Real Real.orderedSemiring β (Ring.toSemiring.{u1} β (NormedRing.toRing.{u1} β _inst_1)) (Norm.norm.{u1} β (NormedRing.toNorm.{u1} β _inst_1))] (f : CauSeq.{0, u1} Real Real.instLinearOrderedFieldReal β (NormedRing.toRing.{u1} β _inst_1) (Norm.norm.{u1} β (NormedRing.toNorm.{u1} β _inst_1))) [_inst_2 : CauSeq.IsComplete.{0, u1} Real Real.instLinearOrderedFieldReal β (NormedRing.toRing.{u1} β _inst_1) (Norm.norm.{u1} β (NormedRing.toNorm.{u1} β _inst_1)) hn], Filter.Tendsto.{0, u1} Nat β (Subtype.val.{succ u1} (Nat -> β) (fun (f : Nat -> β) => IsCauSeq.{0, u1} Real Real.instLinearOrderedFieldReal β (NormedRing.toRing.{u1} β _inst_1) (Norm.norm.{u1} β (NormedRing.toNorm.{u1} β _inst_1)) f) f) (Filter.atTop.{0} Nat (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring))) (nhds.{u1} β (UniformSpace.toTopologicalSpace.{u1} β (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedRing.toPseudoMetricSpace.{u1} β (NormedRing.toSeminormedRing.{u1} β _inst_1)))) (CauSeq.lim.{0, u1} Real Real.instLinearOrderedFieldReal β (NormedRing.toRing.{u1} β _inst_1) (Norm.norm.{u1} β (NormedRing.toNorm.{u1} β _inst_1)) hn _inst_2 f))
-Case conversion may be inaccurate. Consider using '#align cau_seq.tendsto_limit CauSeq.tendsto_limitₓ'. -/
theorem CauSeq.tendsto_limit [NormedRing β] [hn : IsAbsoluteValue (norm : β → ℝ)]
(f : CauSeq β norm) [CauSeq.IsComplete β norm] : Tendsto f atTop (𝓝 f.lim) :=
tendsto_nhds.mpr
@@ -62,12 +56,6 @@ variable [NormedField β]
-/
open Metric
-/- warning: cauchy_seq.is_cau_seq -> CauchySeq.isCauSeq is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} [_inst_1 : NormedField.{u1} β] {f : Nat -> β}, (CauchySeq.{u1, 0} β Nat (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedRing.toPseudoMetricSpace.{u1} β (SeminormedCommRing.toSemiNormedRing.{u1} β (NormedCommRing.toSeminormedCommRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))))) (CanonicallyLinearOrderedAddMonoid.semilatticeSup.{0} Nat Nat.canonicallyLinearOrderedAddMonoid) f) -> (IsCauSeq.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toHasNorm.{u1} β _inst_1)) f)
-but is expected to have type
- forall {β : Type.{u1}} [_inst_1 : NormedField.{u1} β] {f : Nat -> β}, (CauchySeq.{u1, 0} β Nat (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedRing.toPseudoMetricSpace.{u1} β (SeminormedCommRing.toSeminormedRing.{u1} β (NormedCommRing.toSeminormedCommRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))))) (Lattice.toSemilatticeSup.{0} Nat Nat.instLatticeNat) f) -> (IsCauSeq.{0, u1} Real Real.instLinearOrderedFieldReal β (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toNorm.{u1} β _inst_1)) f)
-Case conversion may be inaccurate. Consider using '#align cauchy_seq.is_cau_seq CauchySeq.isCauSeqₓ'. -/
theorem CauchySeq.isCauSeq {f : ℕ → β} (hf : CauchySeq f) : IsCauSeq norm f :=
by
cases' cauchy_iff.1 hf with hf1 hf2
@@ -81,12 +69,6 @@ theorem CauchySeq.isCauSeq {f : ℕ → β} (hf : CauchySeq f) : IsCauSeq norm f
apply Set.mk_mem_prod <;> solve_by_elim [le_refl]
#align cauchy_seq.is_cau_seq CauchySeq.isCauSeq
-/- warning: cau_seq.cauchy_seq -> CauSeq.cauchySeq is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} [_inst_1 : NormedField.{u1} β] (f : CauSeq.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toHasNorm.{u1} β _inst_1))), CauchySeq.{u1, 0} β Nat (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedRing.toPseudoMetricSpace.{u1} β (SeminormedCommRing.toSemiNormedRing.{u1} β (NormedCommRing.toSeminormedCommRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))))) (CanonicallyLinearOrderedAddMonoid.semilatticeSup.{0} Nat Nat.canonicallyLinearOrderedAddMonoid) (coeFn.{succ u1, succ u1} (CauSeq.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toHasNorm.{u1} β _inst_1))) (fun (_x : CauSeq.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toHasNorm.{u1} β _inst_1))) => Nat -> β) (CauSeq.hasCoeToFun.{0, u1} Real β Real.linearOrderedField (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toHasNorm.{u1} β _inst_1))) f)
-but is expected to have type
- forall {β : Type.{u1}} [_inst_1 : NormedField.{u1} β] (f : CauSeq.{0, u1} Real Real.instLinearOrderedFieldReal β (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toNorm.{u1} β _inst_1))), CauchySeq.{u1, 0} β Nat (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedRing.toPseudoMetricSpace.{u1} β (SeminormedCommRing.toSeminormedRing.{u1} β (NormedCommRing.toSeminormedCommRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))))) (Lattice.toSemilatticeSup.{0} Nat Nat.instLatticeNat) (Subtype.val.{succ u1} (Nat -> β) (fun (f : Nat -> β) => IsCauSeq.{0, u1} Real Real.instLinearOrderedFieldReal β (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toNorm.{u1} β _inst_1)) f) f)
-Case conversion may be inaccurate. Consider using '#align cau_seq.cauchy_seq CauSeq.cauchySeqₓ'. -/
theorem CauSeq.cauchySeq (f : CauSeq β norm) : CauchySeq f :=
by
refine' cauchy_iff.2 ⟨by infer_instance, fun s hs => _⟩
@@ -104,24 +86,12 @@ theorem CauSeq.cauchySeq (f : CauSeq β norm) : CauchySeq f :=
apply hN <;> assumption
#align cau_seq.cauchy_seq CauSeq.cauchySeq
-/- warning: cau_seq_iff_cauchy_seq -> isCauSeq_iff_cauchySeq is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_2 : NormedField.{u1} α] {u : Nat -> α}, Iff (IsCauSeq.{0, u1} Real Real.linearOrderedField α (NormedRing.toRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_2))) (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α _inst_2)) u) (CauchySeq.{u1, 0} α Nat (PseudoMetricSpace.toUniformSpace.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (SeminormedCommRing.toSemiNormedRing.{u1} α (NormedCommRing.toSeminormedCommRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_2))))) (CanonicallyLinearOrderedAddMonoid.semilatticeSup.{0} Nat Nat.canonicallyLinearOrderedAddMonoid) u)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_2 : NormedField.{u1} α] {u : Nat -> α}, Iff (IsCauSeq.{0, u1} Real Real.instLinearOrderedFieldReal α (NormedRing.toRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_2))) (Norm.norm.{u1} α (NormedField.toNorm.{u1} α _inst_2)) u) (CauchySeq.{u1, 0} α Nat (PseudoMetricSpace.toUniformSpace.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (SeminormedCommRing.toSeminormedRing.{u1} α (NormedCommRing.toSeminormedCommRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_2))))) (Lattice.toSemilatticeSup.{0} Nat Nat.instLatticeNat) u)
-Case conversion may be inaccurate. Consider using '#align cau_seq_iff_cauchy_seq isCauSeq_iff_cauchySeqₓ'. -/
/-- In a normed field, `cau_seq` coincides with the usual notion of Cauchy sequences. -/
theorem isCauSeq_iff_cauchySeq {α : Type u} [NormedField α] {u : ℕ → α} :
IsCauSeq norm u ↔ CauchySeq u :=
⟨fun h => CauSeq.cauchySeq ⟨u, h⟩, fun h => h.IsCauSeq⟩
#align cau_seq_iff_cauchy_seq isCauSeq_iff_cauchySeq
-/- warning: complete_space_of_cau_seq_complete -> completeSpace_of_cauSeq_isComplete is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} [_inst_1 : NormedField.{u1} β] [_inst_2 : CauSeq.IsComplete.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toHasNorm.{u1} β _inst_1)) (isAbsoluteValue_norm.{u1} β (NormedField.toNormedDivisionRing.{u1} β _inst_1))], CompleteSpace.{u1} β (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedRing.toPseudoMetricSpace.{u1} β (SeminormedCommRing.toSemiNormedRing.{u1} β (NormedCommRing.toSeminormedCommRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1)))))
-but is expected to have type
- forall {β : Type.{u1}} [_inst_1 : NormedField.{u1} β] [_inst_2 : CauSeq.IsComplete.{0, u1} Real Real.instLinearOrderedFieldReal β (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toNorm.{u1} β _inst_1)) (isAbsoluteValue_norm.{u1} β (NormedField.toNormedDivisionRing.{u1} β _inst_1))], CompleteSpace.{u1} β (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedRing.toPseudoMetricSpace.{u1} β (SeminormedCommRing.toSeminormedRing.{u1} β (NormedCommRing.toSeminormedCommRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align complete_space_of_cau_seq_complete completeSpace_of_cauSeq_isCompleteₓ'. -/
-- see Note [lower instance priority]
/-- A complete normed field is complete as a metric space, as Cauchy sequences converge by
assumption and this suffices to characterize completeness. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -47,8 +47,7 @@ theorem CauSeq.tendsto_limit [NormedRing β] [hn : IsAbsoluteValue (norm : β
exists N
intro b hb
apply hεs
- dsimp [Metric.ball]
- rw [dist_comm, dist_eq_norm]
+ dsimp [Metric.ball]; rw [dist_comm, dist_eq_norm]
solve_by_elim)
#align cau_seq.tendsto_limit CauSeq.tendsto_limit
@@ -96,10 +95,7 @@ theorem CauSeq.cauchySeq (f : CauSeq β norm) : CauchySeq f :=
exists { n | n ≥ N }.image f
simp only [exists_prop, mem_at_top_sets, mem_map, mem_image, ge_iff_le, mem_set_of_eq]
constructor
- · exists N
- intro b hb
- exists b
- simp [hb]
+ · exists N; intro b hb; exists b; simp [hb]
· rintro ⟨a, b⟩ ⟨⟨a', ⟨ha'1, ha'2⟩⟩, ⟨b', ⟨hb'1, hb'2⟩⟩⟩
dsimp at ha'1 ha'2 hb'1 hb'2
rw [← ha'2, ← hb'2]
mathlib commit https://github.com/leanprover-community/mathlib/commit/039ef89bef6e58b32b62898dd48e9d1a4312bb65
@@ -108,37 +108,37 @@ theorem CauSeq.cauchySeq (f : CauSeq β norm) : CauchySeq f :=
apply hN <;> assumption
#align cau_seq.cauchy_seq CauSeq.cauchySeq
-/- warning: cau_seq_iff_cauchy_seq -> cau_seq_iff_cauchySeq is a dubious translation:
+/- warning: cau_seq_iff_cauchy_seq -> isCauSeq_iff_cauchySeq is a dubious translation:
lean 3 declaration is
forall {α : Type.{u1}} [_inst_2 : NormedField.{u1} α] {u : Nat -> α}, Iff (IsCauSeq.{0, u1} Real Real.linearOrderedField α (NormedRing.toRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_2))) (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α _inst_2)) u) (CauchySeq.{u1, 0} α Nat (PseudoMetricSpace.toUniformSpace.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (SeminormedCommRing.toSemiNormedRing.{u1} α (NormedCommRing.toSeminormedCommRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_2))))) (CanonicallyLinearOrderedAddMonoid.semilatticeSup.{0} Nat Nat.canonicallyLinearOrderedAddMonoid) u)
but is expected to have type
forall {α : Type.{u1}} [_inst_2 : NormedField.{u1} α] {u : Nat -> α}, Iff (IsCauSeq.{0, u1} Real Real.instLinearOrderedFieldReal α (NormedRing.toRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_2))) (Norm.norm.{u1} α (NormedField.toNorm.{u1} α _inst_2)) u) (CauchySeq.{u1, 0} α Nat (PseudoMetricSpace.toUniformSpace.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (SeminormedCommRing.toSeminormedRing.{u1} α (NormedCommRing.toSeminormedCommRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_2))))) (Lattice.toSemilatticeSup.{0} Nat Nat.instLatticeNat) u)
-Case conversion may be inaccurate. Consider using '#align cau_seq_iff_cauchy_seq cau_seq_iff_cauchySeqₓ'. -/
+Case conversion may be inaccurate. Consider using '#align cau_seq_iff_cauchy_seq isCauSeq_iff_cauchySeqₓ'. -/
/-- In a normed field, `cau_seq` coincides with the usual notion of Cauchy sequences. -/
-theorem cau_seq_iff_cauchySeq {α : Type u} [NormedField α] {u : ℕ → α} :
+theorem isCauSeq_iff_cauchySeq {α : Type u} [NormedField α] {u : ℕ → α} :
IsCauSeq norm u ↔ CauchySeq u :=
⟨fun h => CauSeq.cauchySeq ⟨u, h⟩, fun h => h.IsCauSeq⟩
-#align cau_seq_iff_cauchy_seq cau_seq_iff_cauchySeq
+#align cau_seq_iff_cauchy_seq isCauSeq_iff_cauchySeq
-/- warning: complete_space_of_cau_seq_complete -> completeSpace_of_cau_seq_complete is a dubious translation:
+/- warning: complete_space_of_cau_seq_complete -> completeSpace_of_cauSeq_isComplete is a dubious translation:
lean 3 declaration is
forall {β : Type.{u1}} [_inst_1 : NormedField.{u1} β] [_inst_2 : CauSeq.IsComplete.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toHasNorm.{u1} β _inst_1)) (isAbsoluteValue_norm.{u1} β (NormedField.toNormedDivisionRing.{u1} β _inst_1))], CompleteSpace.{u1} β (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedRing.toPseudoMetricSpace.{u1} β (SeminormedCommRing.toSemiNormedRing.{u1} β (NormedCommRing.toSeminormedCommRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1)))))
but is expected to have type
forall {β : Type.{u1}} [_inst_1 : NormedField.{u1} β] [_inst_2 : CauSeq.IsComplete.{0, u1} Real Real.instLinearOrderedFieldReal β (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toNorm.{u1} β _inst_1)) (isAbsoluteValue_norm.{u1} β (NormedField.toNormedDivisionRing.{u1} β _inst_1))], CompleteSpace.{u1} β (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedRing.toPseudoMetricSpace.{u1} β (SeminormedCommRing.toSeminormedRing.{u1} β (NormedCommRing.toSeminormedCommRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align complete_space_of_cau_seq_complete completeSpace_of_cau_seq_completeₓ'. -/
+Case conversion may be inaccurate. Consider using '#align complete_space_of_cau_seq_complete completeSpace_of_cauSeq_isCompleteₓ'. -/
-- see Note [lower instance priority]
/-- A complete normed field is complete as a metric space, as Cauchy sequences converge by
assumption and this suffices to characterize completeness. -/
-instance (priority := 100) completeSpace_of_cau_seq_complete [CauSeq.IsComplete β norm] :
+instance (priority := 100) completeSpace_of_cauSeq_isComplete [CauSeq.IsComplete β norm] :
CompleteSpace β := by
apply complete_of_cauchy_seq_tendsto
intro u hu
- have C : IsCauSeq norm u := cau_seq_iff_cauchySeq.2 hu
+ have C : IsCauSeq norm u := isCauSeq_iff_cauchySeq.2 hu
exists CauSeq.lim ⟨u, C⟩
rw [Metric.tendsto_atTop]
intro ε εpos
cases' (CauSeq.equiv_lim ⟨u, C⟩) _ εpos with N hN
exists N
simpa [dist_eq_norm] using hN
-#align complete_space_of_cau_seq_complete completeSpace_of_cau_seq_complete
+#align complete_space_of_cau_seq_complete completeSpace_of_cauSeq_isComplete
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Robert Y. Lewis, Sébastien Gouëzel
! This file was ported from Lean 3 source module topology.metric_space.cau_seq_filter
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! leanprover-community/mathlib commit 10bf4f825ad729c5653adc039dafa3622e7f93c9
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -13,6 +13,9 @@ import Mathbin.Analysis.Normed.Field.Basic
/-!
# Completeness in terms of `cauchy` filters vs `is_cau_seq` sequences
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
In this file we apply `metric.complete_of_cauchy_seq_tendsto` to prove that a `normed_ring`
is complete in terms of `cauchy` filter if and only if it is complete in terms
of `cau_seq` Cauchy sequences.
mathlib commit https://github.com/leanprover-community/mathlib/commit/2196ab363eb097c008d4497125e0dde23fb36db2
@@ -27,6 +27,12 @@ open Topology Classical
variable {β : Type v}
+/- warning: cau_seq.tendsto_limit -> CauSeq.tendsto_limit is a dubious translation:
+lean 3 declaration is
+ forall {β : Type.{u1}} [_inst_1 : NormedRing.{u1} β] [hn : IsAbsoluteValue.{0, u1} Real Real.orderedSemiring β (Ring.toSemiring.{u1} β (NormedRing.toRing.{u1} β _inst_1)) (Norm.norm.{u1} β (NormedRing.toHasNorm.{u1} β _inst_1))] (f : CauSeq.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β _inst_1) (Norm.norm.{u1} β (NormedRing.toHasNorm.{u1} β _inst_1))) [_inst_2 : CauSeq.IsComplete.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β _inst_1) (Norm.norm.{u1} β (NormedRing.toHasNorm.{u1} β _inst_1)) hn], Filter.Tendsto.{0, u1} Nat β (coeFn.{succ u1, succ u1} (CauSeq.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β _inst_1) (Norm.norm.{u1} β (NormedRing.toHasNorm.{u1} β _inst_1))) (fun (_x : CauSeq.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β _inst_1) (Norm.norm.{u1} β (NormedRing.toHasNorm.{u1} β _inst_1))) => Nat -> β) (CauSeq.hasCoeToFun.{0, u1} Real β Real.linearOrderedField (NormedRing.toRing.{u1} β _inst_1) (Norm.norm.{u1} β (NormedRing.toHasNorm.{u1} β _inst_1))) f) (Filter.atTop.{0} Nat (PartialOrder.toPreorder.{0} Nat (OrderedCancelAddCommMonoid.toPartialOrder.{0} Nat (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} Nat Nat.strictOrderedSemiring)))) (nhds.{u1} β (UniformSpace.toTopologicalSpace.{u1} β (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedRing.toPseudoMetricSpace.{u1} β (NormedRing.toSeminormedRing.{u1} β _inst_1)))) (CauSeq.lim.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β _inst_1) (Norm.norm.{u1} β (NormedRing.toHasNorm.{u1} β _inst_1)) hn _inst_2 f))
+but is expected to have type
+ forall {β : Type.{u1}} [_inst_1 : NormedRing.{u1} β] [hn : IsAbsoluteValue.{0, u1} Real Real.orderedSemiring β (Ring.toSemiring.{u1} β (NormedRing.toRing.{u1} β _inst_1)) (Norm.norm.{u1} β (NormedRing.toNorm.{u1} β _inst_1))] (f : CauSeq.{0, u1} Real Real.instLinearOrderedFieldReal β (NormedRing.toRing.{u1} β _inst_1) (Norm.norm.{u1} β (NormedRing.toNorm.{u1} β _inst_1))) [_inst_2 : CauSeq.IsComplete.{0, u1} Real Real.instLinearOrderedFieldReal β (NormedRing.toRing.{u1} β _inst_1) (Norm.norm.{u1} β (NormedRing.toNorm.{u1} β _inst_1)) hn], Filter.Tendsto.{0, u1} Nat β (Subtype.val.{succ u1} (Nat -> β) (fun (f : Nat -> β) => IsCauSeq.{0, u1} Real Real.instLinearOrderedFieldReal β (NormedRing.toRing.{u1} β _inst_1) (Norm.norm.{u1} β (NormedRing.toNorm.{u1} β _inst_1)) f) f) (Filter.atTop.{0} Nat (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring))) (nhds.{u1} β (UniformSpace.toTopologicalSpace.{u1} β (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedRing.toPseudoMetricSpace.{u1} β (NormedRing.toSeminormedRing.{u1} β _inst_1)))) (CauSeq.lim.{0, u1} Real Real.instLinearOrderedFieldReal β (NormedRing.toRing.{u1} β _inst_1) (Norm.norm.{u1} β (NormedRing.toNorm.{u1} β _inst_1)) hn _inst_2 f))
+Case conversion may be inaccurate. Consider using '#align cau_seq.tendsto_limit CauSeq.tendsto_limitₓ'. -/
theorem CauSeq.tendsto_limit [NormedRing β] [hn : IsAbsoluteValue (norm : β → ℝ)]
(f : CauSeq β norm) [CauSeq.IsComplete β norm] : Tendsto f atTop (𝓝 f.lim) :=
tendsto_nhds.mpr
@@ -54,6 +60,12 @@ variable [NormedField β]
-/
open Metric
+/- warning: cauchy_seq.is_cau_seq -> CauchySeq.isCauSeq is a dubious translation:
+lean 3 declaration is
+ forall {β : Type.{u1}} [_inst_1 : NormedField.{u1} β] {f : Nat -> β}, (CauchySeq.{u1, 0} β Nat (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedRing.toPseudoMetricSpace.{u1} β (SeminormedCommRing.toSemiNormedRing.{u1} β (NormedCommRing.toSeminormedCommRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))))) (CanonicallyLinearOrderedAddMonoid.semilatticeSup.{0} Nat Nat.canonicallyLinearOrderedAddMonoid) f) -> (IsCauSeq.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toHasNorm.{u1} β _inst_1)) f)
+but is expected to have type
+ forall {β : Type.{u1}} [_inst_1 : NormedField.{u1} β] {f : Nat -> β}, (CauchySeq.{u1, 0} β Nat (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedRing.toPseudoMetricSpace.{u1} β (SeminormedCommRing.toSeminormedRing.{u1} β (NormedCommRing.toSeminormedCommRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))))) (Lattice.toSemilatticeSup.{0} Nat Nat.instLatticeNat) f) -> (IsCauSeq.{0, u1} Real Real.instLinearOrderedFieldReal β (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toNorm.{u1} β _inst_1)) f)
+Case conversion may be inaccurate. Consider using '#align cauchy_seq.is_cau_seq CauchySeq.isCauSeqₓ'. -/
theorem CauchySeq.isCauSeq {f : ℕ → β} (hf : CauchySeq f) : IsCauSeq norm f :=
by
cases' cauchy_iff.1 hf with hf1 hf2
@@ -67,6 +79,12 @@ theorem CauchySeq.isCauSeq {f : ℕ → β} (hf : CauchySeq f) : IsCauSeq norm f
apply Set.mk_mem_prod <;> solve_by_elim [le_refl]
#align cauchy_seq.is_cau_seq CauchySeq.isCauSeq
+/- warning: cau_seq.cauchy_seq -> CauSeq.cauchySeq is a dubious translation:
+lean 3 declaration is
+ forall {β : Type.{u1}} [_inst_1 : NormedField.{u1} β] (f : CauSeq.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toHasNorm.{u1} β _inst_1))), CauchySeq.{u1, 0} β Nat (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedRing.toPseudoMetricSpace.{u1} β (SeminormedCommRing.toSemiNormedRing.{u1} β (NormedCommRing.toSeminormedCommRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))))) (CanonicallyLinearOrderedAddMonoid.semilatticeSup.{0} Nat Nat.canonicallyLinearOrderedAddMonoid) (coeFn.{succ u1, succ u1} (CauSeq.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toHasNorm.{u1} β _inst_1))) (fun (_x : CauSeq.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toHasNorm.{u1} β _inst_1))) => Nat -> β) (CauSeq.hasCoeToFun.{0, u1} Real β Real.linearOrderedField (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toHasNorm.{u1} β _inst_1))) f)
+but is expected to have type
+ forall {β : Type.{u1}} [_inst_1 : NormedField.{u1} β] (f : CauSeq.{0, u1} Real Real.instLinearOrderedFieldReal β (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toNorm.{u1} β _inst_1))), CauchySeq.{u1, 0} β Nat (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedRing.toPseudoMetricSpace.{u1} β (SeminormedCommRing.toSeminormedRing.{u1} β (NormedCommRing.toSeminormedCommRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))))) (Lattice.toSemilatticeSup.{0} Nat Nat.instLatticeNat) (Subtype.val.{succ u1} (Nat -> β) (fun (f : Nat -> β) => IsCauSeq.{0, u1} Real Real.instLinearOrderedFieldReal β (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toNorm.{u1} β _inst_1)) f) f)
+Case conversion may be inaccurate. Consider using '#align cau_seq.cauchy_seq CauSeq.cauchySeqₓ'. -/
theorem CauSeq.cauchySeq (f : CauSeq β norm) : CauchySeq f :=
by
refine' cauchy_iff.2 ⟨by infer_instance, fun s hs => _⟩
@@ -87,12 +105,24 @@ theorem CauSeq.cauchySeq (f : CauSeq β norm) : CauchySeq f :=
apply hN <;> assumption
#align cau_seq.cauchy_seq CauSeq.cauchySeq
+/- warning: cau_seq_iff_cauchy_seq -> cau_seq_iff_cauchySeq is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_2 : NormedField.{u1} α] {u : Nat -> α}, Iff (IsCauSeq.{0, u1} Real Real.linearOrderedField α (NormedRing.toRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_2))) (Norm.norm.{u1} α (NormedField.toHasNorm.{u1} α _inst_2)) u) (CauchySeq.{u1, 0} α Nat (PseudoMetricSpace.toUniformSpace.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (SeminormedCommRing.toSemiNormedRing.{u1} α (NormedCommRing.toSeminormedCommRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_2))))) (CanonicallyLinearOrderedAddMonoid.semilatticeSup.{0} Nat Nat.canonicallyLinearOrderedAddMonoid) u)
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_2 : NormedField.{u1} α] {u : Nat -> α}, Iff (IsCauSeq.{0, u1} Real Real.instLinearOrderedFieldReal α (NormedRing.toRing.{u1} α (NormedCommRing.toNormedRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_2))) (Norm.norm.{u1} α (NormedField.toNorm.{u1} α _inst_2)) u) (CauchySeq.{u1, 0} α Nat (PseudoMetricSpace.toUniformSpace.{u1} α (SeminormedRing.toPseudoMetricSpace.{u1} α (SeminormedCommRing.toSeminormedRing.{u1} α (NormedCommRing.toSeminormedCommRing.{u1} α (NormedField.toNormedCommRing.{u1} α _inst_2))))) (Lattice.toSemilatticeSup.{0} Nat Nat.instLatticeNat) u)
+Case conversion may be inaccurate. Consider using '#align cau_seq_iff_cauchy_seq cau_seq_iff_cauchySeqₓ'. -/
/-- In a normed field, `cau_seq` coincides with the usual notion of Cauchy sequences. -/
theorem cau_seq_iff_cauchySeq {α : Type u} [NormedField α] {u : ℕ → α} :
IsCauSeq norm u ↔ CauchySeq u :=
⟨fun h => CauSeq.cauchySeq ⟨u, h⟩, fun h => h.IsCauSeq⟩
#align cau_seq_iff_cauchy_seq cau_seq_iff_cauchySeq
+/- warning: complete_space_of_cau_seq_complete -> completeSpace_of_cau_seq_complete is a dubious translation:
+lean 3 declaration is
+ forall {β : Type.{u1}} [_inst_1 : NormedField.{u1} β] [_inst_2 : CauSeq.IsComplete.{0, u1} Real Real.linearOrderedField β (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toHasNorm.{u1} β _inst_1)) (isAbsoluteValue_norm.{u1} β (NormedField.toNormedDivisionRing.{u1} β _inst_1))], CompleteSpace.{u1} β (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedRing.toPseudoMetricSpace.{u1} β (SeminormedCommRing.toSemiNormedRing.{u1} β (NormedCommRing.toSeminormedCommRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1)))))
+but is expected to have type
+ forall {β : Type.{u1}} [_inst_1 : NormedField.{u1} β] [_inst_2 : CauSeq.IsComplete.{0, u1} Real Real.instLinearOrderedFieldReal β (NormedRing.toRing.{u1} β (NormedCommRing.toNormedRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1))) (Norm.norm.{u1} β (NormedField.toNorm.{u1} β _inst_1)) (isAbsoluteValue_norm.{u1} β (NormedField.toNormedDivisionRing.{u1} β _inst_1))], CompleteSpace.{u1} β (PseudoMetricSpace.toUniformSpace.{u1} β (SeminormedRing.toPseudoMetricSpace.{u1} β (SeminormedCommRing.toSeminormedRing.{u1} β (NormedCommRing.toSeminormedCommRing.{u1} β (NormedField.toNormedCommRing.{u1} β _inst_1)))))
+Case conversion may be inaccurate. Consider using '#align complete_space_of_cau_seq_complete completeSpace_of_cau_seq_completeₓ'. -/
-- see Note [lower instance priority]
/-- A complete normed field is complete as a metric space, as Cauchy sequences converge by
assumption and this suffices to characterize completeness. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
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.
@@ -20,7 +20,8 @@ universe u v
open Set Filter
-open Topology Classical
+open scoped Classical
+open Topology
variable {β : Type v}
@@ -55,7 +55,7 @@ theorem CauchySeq.isCauSeq {f : ℕ → β} (hf : CauchySeq f) : IsCauSeq norm f
cases' cauchy_iff.1 hf with hf1 hf2
intro ε hε
rcases hf2 { x | dist x.1 x.2 < ε } (dist_mem_uniformity hε) with ⟨t, ⟨ht, htsub⟩⟩
- simp at ht; cases' ht with N hN
+ simp only [mem_map, mem_atTop_sets, ge_iff_le, mem_preimage] at ht; cases' ht with N hN
exists N
intro j hj
rw [← dist_eq_norm]
@@ -2,14 +2,11 @@
Copyright (c) 2018 Robert Y. Lewis. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Robert Y. Lewis, Sébastien Gouëzel
-
-! This file was ported from Lean 3 source module topology.metric_space.cau_seq_filter
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Analysis.Normed.Field.Basic
+#align_import topology.metric_space.cau_seq_filter from "leanprover-community/mathlib"@"f2ce6086713c78a7f880485f7917ea547a215982"
+
/-!
# Completeness in terms of `Cauchy` filters vs `isCauSeq` sequences
@@ -85,23 +85,23 @@ theorem CauSeq.cauchySeq (f : CauSeq β norm) : CauchySeq f := by
#align cau_seq.cauchy_seq CauSeq.cauchySeq
/-- In a normed field, `CauSeq` coincides with the usual notion of Cauchy sequences. -/
-theorem cau_seq_iff_cauchySeq {α : Type u} [NormedField α] {u : ℕ → α} :
+theorem isCauSeq_iff_cauchySeq {α : Type u} [NormedField α] {u : ℕ → α} :
IsCauSeq norm u ↔ CauchySeq u :=
⟨fun h => CauSeq.cauchySeq ⟨u, h⟩, fun h => h.isCauSeq⟩
-#align cau_seq_iff_cauchy_seq cau_seq_iff_cauchySeq
+#align cau_seq_iff_cauchy_seq isCauSeq_iff_cauchySeq
-- see Note [lower instance priority]
/-- A complete normed field is complete as a metric space, as Cauchy sequences converge by
assumption and this suffices to characterize completeness. -/
-instance (priority := 100) completeSpace_of_cau_seq_complete [CauSeq.IsComplete β norm] :
+instance (priority := 100) completeSpace_of_cauSeq_isComplete [CauSeq.IsComplete β norm] :
CompleteSpace β := by
apply complete_of_cauchySeq_tendsto
intro u hu
- have C : IsCauSeq norm u := cau_seq_iff_cauchySeq.2 hu
+ have C : IsCauSeq norm u := isCauSeq_iff_cauchySeq.2 hu
exists CauSeq.lim ⟨u, C⟩
rw [Metric.tendsto_atTop]
intro ε εpos
cases' (CauSeq.equiv_lim ⟨u, C⟩) _ εpos with N hN
exists N
simpa [dist_eq_norm] using hN
-#align complete_space_of_cau_seq_complete completeSpace_of_cau_seq_complete
+#align complete_space_of_cau_seq_complete completeSpace_of_cauSeq_isComplete
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