topology.metric_space.cau_seq_filterMathlib.Topology.MetricSpace.CauSeqFilter

This file has been ported!

Changes since the initial port

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.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -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]
Diff
@@ -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"
 
Diff
@@ -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
 
Diff
@@ -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
+-/
 
Diff
@@ -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]
Diff
@@ -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]
Diff
@@ -26,7 +26,7 @@ universe u v
 
 open Set Filter
 
-open Topology Classical
+open scoped Topology Classical
 
 variable {β : Type v}
 
Diff
@@ -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. -/
Diff
@@ -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]
Diff
@@ -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
 
Diff
@@ -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.
Diff
@@ -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. -/

Changes in mathlib4

mathlib3
mathlib4
chore: scope open Classical (#11199)

We remove all but one open Classicals, 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.

Diff
@@ -20,7 +20,8 @@ universe u v
 
 open Set Filter
 
-open Topology Classical
+open scoped Classical
+open Topology
 
 variable {β : Type v}
 
chore: Remove nonterminal simp at (#7795)

Removes nonterminal uses of simp at. Replaces most of these with instances of simp? ... says.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Mario Carneiro <di.gama@gmail.com>

Diff
@@ -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]
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -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
 
chore: tidy various files (#3408)
Diff
@@ -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
feat: port Topology.MetricSpace.CauSeqFilter (#2852)

Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Dependencies 10 + 601

602 files ported (98.4%)
262531 lines ported (98.0%)
Show graph

The unported dependencies are

The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file