topology.uniform_space.matrix ⟷ Mathlib.Topology.UniformSpace.Matrix

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
@@ -45,8 +45,8 @@ theorem uniformContinuous {Ξ² : Type _} [UniformSpace Ξ²] {f : Ξ² β†’ Matrix m n
 instance [CompleteSpace π•œ] : CompleteSpace (Matrix m n π•œ) :=
   (by infer_instance : CompleteSpace (m β†’ n β†’ π•œ))
 
-instance [SeparatedSpace π•œ] : SeparatedSpace (Matrix m n π•œ) :=
-  (by infer_instance : SeparatedSpace (m β†’ n β†’ π•œ))
+instance [T0Space π•œ] : T0Space (Matrix m n π•œ) :=
+  (by infer_instance : T0Space (m β†’ n β†’ π•œ))
 
 end Matrix
 
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2022 Eric Wieser. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Eric Wieser, Heather Macbeth
 -/
-import Mathbin.Topology.UniformSpace.Pi
-import Mathbin.Data.Matrix.Basic
+import Topology.UniformSpace.Pi
+import Data.Matrix.Basic
 
 #align_import topology.uniform_space.matrix from "leanprover-community/mathlib"@"d64d67d000b974f0d86a2be7918cf800be6271c8"
 
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2022 Eric Wieser. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Eric Wieser, Heather Macbeth
-
-! This file was ported from Lean 3 source module topology.uniform_space.matrix
-! leanprover-community/mathlib commit d64d67d000b974f0d86a2be7918cf800be6271c8
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Topology.UniformSpace.Pi
 import Mathbin.Data.Matrix.Basic
 
+#align_import topology.uniform_space.matrix from "leanprover-community/mathlib"@"d64d67d000b974f0d86a2be7918cf800be6271c8"
+
 /-!
 # Uniform space structure on matrices
 
Diff
@@ -28,6 +28,7 @@ namespace Matrix
 instance : UniformSpace (Matrix m n π•œ) :=
   (by infer_instance : UniformSpace (m β†’ n β†’ π•œ))
 
+#print Matrix.uniformity /-
 theorem uniformity :
     𝓀 (Matrix m n π•œ) = β¨… (i : m) (j : n), (𝓀 π•œ).comap fun a => (a.1 i j, a.2 i j) :=
   by
@@ -35,11 +36,14 @@ theorem uniformity :
   simp_rw [Filter.comap_iInf, Filter.comap_comap]
   rfl
 #align matrix.uniformity Matrix.uniformity
+-/
 
+#print Matrix.uniformContinuous /-
 theorem uniformContinuous {Ξ² : Type _} [UniformSpace Ξ²] {f : Ξ² β†’ Matrix m n π•œ} :
     UniformContinuous f ↔ βˆ€ i j, UniformContinuous fun x => f x i j := by
   simp only [UniformContinuous, Matrix.uniformity, Filter.tendsto_iInf, Filter.tendsto_comap_iff]
 #align matrix.uniform_continuous Matrix.uniformContinuous
+-/
 
 instance [CompleteSpace π•œ] : CompleteSpace (Matrix m n π•œ) :=
   (by infer_instance : CompleteSpace (m β†’ n β†’ π•œ))
Diff
@@ -19,7 +19,7 @@ import Mathbin.Data.Matrix.Basic
 -/
 
 
-open uniformity Topology
+open scoped uniformity Topology
 
 variable (m n π•œ : Type _) [UniformSpace π•œ]
 
Diff
@@ -28,12 +28,6 @@ namespace Matrix
 instance : UniformSpace (Matrix m n π•œ) :=
   (by infer_instance : UniformSpace (m β†’ n β†’ π•œ))
 
-/- warning: matrix.uniformity -> Matrix.uniformity is a dubious translation:
-lean 3 declaration is
-  forall (m : Type.{u1}) (n : Type.{u2}) (π•œ : Type.{u3}) [_inst_1 : UniformSpace.{u3} π•œ], Eq.{succ (max u1 u2 u3)} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (uniformity.{max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.uniformSpace.{u1, u2, u3} m n π•œ _inst_1)) (iInf.{max u1 u2 u3, succ u1} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (ConditionallyCompleteLattice.toHasInf.{max u1 u2 u3} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (CompleteLattice.toConditionallyCompleteLattice.{max u1 u2 u3} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (Filter.completeLattice.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))))) m (fun (i : m) => iInf.{max u1 u2 u3, succ u2} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (ConditionallyCompleteLattice.toHasInf.{max u1 u2 u3} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (CompleteLattice.toConditionallyCompleteLattice.{max u1 u2 u3} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (Filter.completeLattice.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))))) n (fun (j : n) => Filter.comap.{max u1 u2 u3, u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ)) (Prod.{u3, u3} π•œ π•œ) (fun (a : Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ)) => Prod.mk.{u3, u3} π•œ π•œ (Prod.fst.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ) a i j) (Prod.snd.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ) a i j)) (uniformity.{u3} π•œ _inst_1))))
-but is expected to have type
-  forall (m : Type.{u3}) (n : Type.{u2}) (π•œ : Type.{u1}) [_inst_1 : UniformSpace.{u1} π•œ], Eq.{max (max (succ u3) (succ u2)) (succ u1)} (Filter.{max (max u1 u2) u3} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (uniformity.{max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.instUniformSpaceMatrix.{u3, u2, u1} m n π•œ _inst_1)) (iInf.{max (max u3 u2) u1, succ u3} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (ConditionallyCompleteLattice.toInfSet.{max (max u3 u2) u1} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (CompleteLattice.toConditionallyCompleteLattice.{max (max u3 u2) u1} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (Filter.instCompleteLatticeFilter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))))) m (fun (i : m) => iInf.{max (max u3 u2) u1, succ u2} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (ConditionallyCompleteLattice.toInfSet.{max (max u3 u2) u1} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (CompleteLattice.toConditionallyCompleteLattice.{max (max u3 u2) u1} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (Filter.instCompleteLatticeFilter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))))) n (fun (j : n) => Filter.comap.{max (max u3 u2) u1, u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ)) (Prod.{u1, u1} π•œ π•œ) (fun (a : Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ)) => Prod.mk.{u1, u1} π•œ π•œ (Prod.fst.{max (max u3 u2) u1, max (max u3 u2) u1} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ) a i j) (Prod.snd.{max (max u3 u2) u1, max (max u3 u2) u1} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ) a i j)) (uniformity.{u1} π•œ _inst_1))))
-Case conversion may be inaccurate. Consider using '#align matrix.uniformity Matrix.uniformityβ‚“'. -/
 theorem uniformity :
     𝓀 (Matrix m n π•œ) = β¨… (i : m) (j : n), (𝓀 π•œ).comap fun a => (a.1 i j, a.2 i j) :=
   by
@@ -42,12 +36,6 @@ theorem uniformity :
   rfl
 #align matrix.uniformity Matrix.uniformity
 
-/- warning: matrix.uniform_continuous -> Matrix.uniformContinuous is a dubious translation:
-lean 3 declaration is
-  forall (m : Type.{u1}) (n : Type.{u2}) (π•œ : Type.{u3}) [_inst_1 : UniformSpace.{u3} π•œ] {Ξ² : Type.{u4}} [_inst_2 : UniformSpace.{u4} Ξ²] {f : Ξ² -> (Matrix.{u1, u2, u3} m n π•œ)}, Iff (UniformContinuous.{u4, max u1 u2 u3} Ξ² (Matrix.{u1, u2, u3} m n π•œ) _inst_2 (Matrix.uniformSpace.{u1, u2, u3} m n π•œ _inst_1) f) (forall (i : m) (j : n), UniformContinuous.{u4, u3} Ξ² π•œ _inst_2 _inst_1 (fun (x : Ξ²) => f x i j))
-but is expected to have type
-  forall (m : Type.{u3}) (n : Type.{u2}) (π•œ : Type.{u1}) [_inst_1 : UniformSpace.{u1} π•œ] {Ξ² : Type.{u4}} [_inst_2 : UniformSpace.{u4} Ξ²] {f : Ξ² -> (Matrix.{u3, u2, u1} m n π•œ)}, Iff (UniformContinuous.{u4, max (max u3 u2) u1} Ξ² (Matrix.{u3, u2, u1} m n π•œ) _inst_2 (Matrix.instUniformSpaceMatrix.{u3, u2, u1} m n π•œ _inst_1) f) (forall (i : m) (j : n), UniformContinuous.{u4, u1} Ξ² π•œ _inst_2 _inst_1 (fun (x : Ξ²) => f x i j))
-Case conversion may be inaccurate. Consider using '#align matrix.uniform_continuous Matrix.uniformContinuousβ‚“'. -/
 theorem uniformContinuous {Ξ² : Type _} [UniformSpace Ξ²] {f : Ξ² β†’ Matrix m n π•œ} :
     UniformContinuous f ↔ βˆ€ i j, UniformContinuous fun x => f x i j := by
   simp only [UniformContinuous, Matrix.uniformity, Filter.tendsto_iInf, Filter.tendsto_comap_iff]
Diff
@@ -30,15 +30,15 @@ instance : UniformSpace (Matrix m n π•œ) :=
 
 /- warning: matrix.uniformity -> Matrix.uniformity is a dubious translation:
 lean 3 declaration is
-  forall (m : Type.{u1}) (n : Type.{u2}) (π•œ : Type.{u3}) [_inst_1 : UniformSpace.{u3} π•œ], Eq.{succ (max u1 u2 u3)} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (uniformity.{max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.uniformSpace.{u1, u2, u3} m n π•œ _inst_1)) (infα΅’.{max u1 u2 u3, succ u1} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (ConditionallyCompleteLattice.toHasInf.{max u1 u2 u3} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (CompleteLattice.toConditionallyCompleteLattice.{max u1 u2 u3} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (Filter.completeLattice.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))))) m (fun (i : m) => infα΅’.{max u1 u2 u3, succ u2} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (ConditionallyCompleteLattice.toHasInf.{max u1 u2 u3} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (CompleteLattice.toConditionallyCompleteLattice.{max u1 u2 u3} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (Filter.completeLattice.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))))) n (fun (j : n) => Filter.comap.{max u1 u2 u3, u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ)) (Prod.{u3, u3} π•œ π•œ) (fun (a : Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ)) => Prod.mk.{u3, u3} π•œ π•œ (Prod.fst.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ) a i j) (Prod.snd.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ) a i j)) (uniformity.{u3} π•œ _inst_1))))
+  forall (m : Type.{u1}) (n : Type.{u2}) (π•œ : Type.{u3}) [_inst_1 : UniformSpace.{u3} π•œ], Eq.{succ (max u1 u2 u3)} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (uniformity.{max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.uniformSpace.{u1, u2, u3} m n π•œ _inst_1)) (iInf.{max u1 u2 u3, succ u1} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (ConditionallyCompleteLattice.toHasInf.{max u1 u2 u3} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (CompleteLattice.toConditionallyCompleteLattice.{max u1 u2 u3} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (Filter.completeLattice.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))))) m (fun (i : m) => iInf.{max u1 u2 u3, succ u2} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (ConditionallyCompleteLattice.toHasInf.{max u1 u2 u3} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (CompleteLattice.toConditionallyCompleteLattice.{max u1 u2 u3} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (Filter.completeLattice.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))))) n (fun (j : n) => Filter.comap.{max u1 u2 u3, u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ)) (Prod.{u3, u3} π•œ π•œ) (fun (a : Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ)) => Prod.mk.{u3, u3} π•œ π•œ (Prod.fst.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ) a i j) (Prod.snd.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ) a i j)) (uniformity.{u3} π•œ _inst_1))))
 but is expected to have type
-  forall (m : Type.{u3}) (n : Type.{u2}) (π•œ : Type.{u1}) [_inst_1 : UniformSpace.{u1} π•œ], Eq.{max (max (succ u3) (succ u2)) (succ u1)} (Filter.{max (max u1 u2) u3} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (uniformity.{max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.instUniformSpaceMatrix.{u3, u2, u1} m n π•œ _inst_1)) (infα΅’.{max (max u3 u2) u1, succ u3} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (ConditionallyCompleteLattice.toInfSet.{max (max u3 u2) u1} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (CompleteLattice.toConditionallyCompleteLattice.{max (max u3 u2) u1} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (Filter.instCompleteLatticeFilter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))))) m (fun (i : m) => infα΅’.{max (max u3 u2) u1, succ u2} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (ConditionallyCompleteLattice.toInfSet.{max (max u3 u2) u1} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (CompleteLattice.toConditionallyCompleteLattice.{max (max u3 u2) u1} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (Filter.instCompleteLatticeFilter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))))) n (fun (j : n) => Filter.comap.{max (max u3 u2) u1, u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ)) (Prod.{u1, u1} π•œ π•œ) (fun (a : Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ)) => Prod.mk.{u1, u1} π•œ π•œ (Prod.fst.{max (max u3 u2) u1, max (max u3 u2) u1} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ) a i j) (Prod.snd.{max (max u3 u2) u1, max (max u3 u2) u1} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ) a i j)) (uniformity.{u1} π•œ _inst_1))))
+  forall (m : Type.{u3}) (n : Type.{u2}) (π•œ : Type.{u1}) [_inst_1 : UniformSpace.{u1} π•œ], Eq.{max (max (succ u3) (succ u2)) (succ u1)} (Filter.{max (max u1 u2) u3} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (uniformity.{max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.instUniformSpaceMatrix.{u3, u2, u1} m n π•œ _inst_1)) (iInf.{max (max u3 u2) u1, succ u3} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (ConditionallyCompleteLattice.toInfSet.{max (max u3 u2) u1} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (CompleteLattice.toConditionallyCompleteLattice.{max (max u3 u2) u1} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (Filter.instCompleteLatticeFilter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))))) m (fun (i : m) => iInf.{max (max u3 u2) u1, succ u2} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (ConditionallyCompleteLattice.toInfSet.{max (max u3 u2) u1} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (CompleteLattice.toConditionallyCompleteLattice.{max (max u3 u2) u1} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (Filter.instCompleteLatticeFilter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))))) n (fun (j : n) => Filter.comap.{max (max u3 u2) u1, u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ)) (Prod.{u1, u1} π•œ π•œ) (fun (a : Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ)) => Prod.mk.{u1, u1} π•œ π•œ (Prod.fst.{max (max u3 u2) u1, max (max u3 u2) u1} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ) a i j) (Prod.snd.{max (max u3 u2) u1, max (max u3 u2) u1} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ) a i j)) (uniformity.{u1} π•œ _inst_1))))
 Case conversion may be inaccurate. Consider using '#align matrix.uniformity Matrix.uniformityβ‚“'. -/
 theorem uniformity :
     𝓀 (Matrix m n π•œ) = β¨… (i : m) (j : n), (𝓀 π•œ).comap fun a => (a.1 i j, a.2 i j) :=
   by
   erw [Pi.uniformity, Pi.uniformity]
-  simp_rw [Filter.comap_infα΅’, Filter.comap_comap]
+  simp_rw [Filter.comap_iInf, Filter.comap_comap]
   rfl
 #align matrix.uniformity Matrix.uniformity
 
@@ -50,7 +50,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align matrix.uniform_continuous Matrix.uniformContinuousβ‚“'. -/
 theorem uniformContinuous {Ξ² : Type _} [UniformSpace Ξ²] {f : Ξ² β†’ Matrix m n π•œ} :
     UniformContinuous f ↔ βˆ€ i j, UniformContinuous fun x => f x i j := by
-  simp only [UniformContinuous, Matrix.uniformity, Filter.tendsto_infα΅’, Filter.tendsto_comap_iff]
+  simp only [UniformContinuous, Matrix.uniformity, Filter.tendsto_iInf, Filter.tendsto_comap_iff]
 #align matrix.uniform_continuous Matrix.uniformContinuous
 
 instance [CompleteSpace π•œ] : CompleteSpace (Matrix m n π•œ) :=
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Eric Wieser, Heather Macbeth
 
 ! This file was ported from Lean 3 source module topology.uniform_space.matrix
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! leanprover-community/mathlib commit d64d67d000b974f0d86a2be7918cf800be6271c8
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -13,6 +13,9 @@ import Mathbin.Data.Matrix.Basic
 
 /-!
 # Uniform space structure on matrices
+
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
 -/
 
 
Diff
@@ -25,6 +25,12 @@ namespace Matrix
 instance : UniformSpace (Matrix m n π•œ) :=
   (by infer_instance : UniformSpace (m β†’ n β†’ π•œ))
 
+/- warning: matrix.uniformity -> Matrix.uniformity is a dubious translation:
+lean 3 declaration is
+  forall (m : Type.{u1}) (n : Type.{u2}) (π•œ : Type.{u3}) [_inst_1 : UniformSpace.{u3} π•œ], Eq.{succ (max u1 u2 u3)} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (uniformity.{max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.uniformSpace.{u1, u2, u3} m n π•œ _inst_1)) (infα΅’.{max u1 u2 u3, succ u1} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (ConditionallyCompleteLattice.toHasInf.{max u1 u2 u3} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (CompleteLattice.toConditionallyCompleteLattice.{max u1 u2 u3} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (Filter.completeLattice.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))))) m (fun (i : m) => infα΅’.{max u1 u2 u3, succ u2} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (ConditionallyCompleteLattice.toHasInf.{max u1 u2 u3} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (CompleteLattice.toConditionallyCompleteLattice.{max u1 u2 u3} (Filter.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))) (Filter.completeLattice.{max u1 u2 u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ))))) n (fun (j : n) => Filter.comap.{max u1 u2 u3, u3} (Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ)) (Prod.{u3, u3} π•œ π•œ) (fun (a : Prod.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ)) => Prod.mk.{u3, u3} π•œ π•œ (Prod.fst.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ) a i j) (Prod.snd.{max u1 u2 u3, max u1 u2 u3} (Matrix.{u1, u2, u3} m n π•œ) (Matrix.{u1, u2, u3} m n π•œ) a i j)) (uniformity.{u3} π•œ _inst_1))))
+but is expected to have type
+  forall (m : Type.{u3}) (n : Type.{u2}) (π•œ : Type.{u1}) [_inst_1 : UniformSpace.{u1} π•œ], Eq.{max (max (succ u3) (succ u2)) (succ u1)} (Filter.{max (max u1 u2) u3} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (uniformity.{max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.instUniformSpaceMatrix.{u3, u2, u1} m n π•œ _inst_1)) (infα΅’.{max (max u3 u2) u1, succ u3} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (ConditionallyCompleteLattice.toInfSet.{max (max u3 u2) u1} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (CompleteLattice.toConditionallyCompleteLattice.{max (max u3 u2) u1} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (Filter.instCompleteLatticeFilter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))))) m (fun (i : m) => infα΅’.{max (max u3 u2) u1, succ u2} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (ConditionallyCompleteLattice.toInfSet.{max (max u3 u2) u1} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (CompleteLattice.toConditionallyCompleteLattice.{max (max u3 u2) u1} (Filter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))) (Filter.instCompleteLatticeFilter.{max (max u3 u2) u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ))))) n (fun (j : n) => Filter.comap.{max (max u3 u2) u1, u1} (Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ)) (Prod.{u1, u1} π•œ π•œ) (fun (a : Prod.{max (max u1 u2) u3, max (max u1 u2) u3} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ)) => Prod.mk.{u1, u1} π•œ π•œ (Prod.fst.{max (max u3 u2) u1, max (max u3 u2) u1} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ) a i j) (Prod.snd.{max (max u3 u2) u1, max (max u3 u2) u1} (Matrix.{u3, u2, u1} m n π•œ) (Matrix.{u3, u2, u1} m n π•œ) a i j)) (uniformity.{u1} π•œ _inst_1))))
+Case conversion may be inaccurate. Consider using '#align matrix.uniformity Matrix.uniformityβ‚“'. -/
 theorem uniformity :
     𝓀 (Matrix m n π•œ) = β¨… (i : m) (j : n), (𝓀 π•œ).comap fun a => (a.1 i j, a.2 i j) :=
   by
@@ -33,6 +39,12 @@ theorem uniformity :
   rfl
 #align matrix.uniformity Matrix.uniformity
 
+/- warning: matrix.uniform_continuous -> Matrix.uniformContinuous is a dubious translation:
+lean 3 declaration is
+  forall (m : Type.{u1}) (n : Type.{u2}) (π•œ : Type.{u3}) [_inst_1 : UniformSpace.{u3} π•œ] {Ξ² : Type.{u4}} [_inst_2 : UniformSpace.{u4} Ξ²] {f : Ξ² -> (Matrix.{u1, u2, u3} m n π•œ)}, Iff (UniformContinuous.{u4, max u1 u2 u3} Ξ² (Matrix.{u1, u2, u3} m n π•œ) _inst_2 (Matrix.uniformSpace.{u1, u2, u3} m n π•œ _inst_1) f) (forall (i : m) (j : n), UniformContinuous.{u4, u3} Ξ² π•œ _inst_2 _inst_1 (fun (x : Ξ²) => f x i j))
+but is expected to have type
+  forall (m : Type.{u3}) (n : Type.{u2}) (π•œ : Type.{u1}) [_inst_1 : UniformSpace.{u1} π•œ] {Ξ² : Type.{u4}} [_inst_2 : UniformSpace.{u4} Ξ²] {f : Ξ² -> (Matrix.{u3, u2, u1} m n π•œ)}, Iff (UniformContinuous.{u4, max (max u3 u2) u1} Ξ² (Matrix.{u3, u2, u1} m n π•œ) _inst_2 (Matrix.instUniformSpaceMatrix.{u3, u2, u1} m n π•œ _inst_1) f) (forall (i : m) (j : n), UniformContinuous.{u4, u1} Ξ² π•œ _inst_2 _inst_1 (fun (x : Ξ²) => f x i j))
+Case conversion may be inaccurate. Consider using '#align matrix.uniform_continuous Matrix.uniformContinuousβ‚“'. -/
 theorem uniformContinuous {Ξ² : Type _} [UniformSpace Ξ²] {f : Ξ² β†’ Matrix m n π•œ} :
     UniformContinuous f ↔ βˆ€ i j, UniformContinuous fun x => f x i j := by
   simp only [UniformContinuous, Matrix.uniformity, Filter.tendsto_infα΅’, Filter.tendsto_comap_iff]

Changes in mathlib4

mathlib3
mathlib4
chore: adaptations to lean 4.8.0 (#12549)
Diff
@@ -20,7 +20,7 @@ variable (m n π•œ : Type*) [UniformSpace π•œ]
 
 namespace Matrix
 
-instance : UniformSpace (Matrix m n π•œ) :=
+instance instUniformSpace : UniformSpace (Matrix m n π•œ) :=
   (by infer_instance : UniformSpace (m β†’ n β†’ π•œ))
 
 instance instUniformAddGroup [AddGroup π•œ] [UniformAddGroup π•œ] :
refactor(UniformSpace): drop separationRel (#10644)

We had duplicated API between topological spaces and uniform spaces. In this PR I mostly deduplicate it with some exceptions:

  • SeparationQuotient.lift' and SeparationQuotient.map are leftovers from the old version that are designed to work with uniform spaces;
  • probably, some theorems/instances still assume UniformSpace when TopologicalSpace would work.

Outside of UniformSpace/Separation, I mostly changed SeparatedSpace to T0Space and separationRel to Inseparable. I also rewrote a few proofs that were broken by the API change.

Fixes #2031

Diff
@@ -43,7 +43,7 @@ theorem uniformContinuous {Ξ² : Type*} [UniformSpace Ξ²] {f : Ξ² β†’ Matrix m n
 instance [CompleteSpace π•œ] : CompleteSpace (Matrix m n π•œ) :=
   (by infer_instance : CompleteSpace (m β†’ n β†’ π•œ))
 
-instance [SeparatedSpace π•œ] : SeparatedSpace (Matrix m n π•œ) :=
-  (by infer_instance : SeparatedSpace (m β†’ n β†’ π•œ))
+instance [T0Space π•œ] : T0Space (Matrix m n π•œ) :=
+  inferInstanceAs (T0Space (m β†’ n β†’ π•œ))
 
 end Matrix
feat: show matrices form a UniformAddGroup (#9468)
Diff
@@ -3,6 +3,7 @@ Copyright (c) 2022 Eric Wieser. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Eric Wieser, Heather Macbeth
 -/
+import Mathlib.Topology.Algebra.UniformGroup
 import Mathlib.Topology.UniformSpace.Pi
 import Mathlib.Data.Matrix.Basic
 
@@ -22,6 +23,10 @@ namespace Matrix
 instance : UniformSpace (Matrix m n π•œ) :=
   (by infer_instance : UniformSpace (m β†’ n β†’ π•œ))
 
+instance instUniformAddGroup [AddGroup π•œ] [UniformAddGroup π•œ] :
+    UniformAddGroup (Matrix m n π•œ) :=
+  inferInstanceAs <| UniformAddGroup (m β†’ n β†’ π•œ)
+
 theorem uniformity :
     𝓀 (Matrix m n π•œ) = β¨… (i : m) (j : n), (𝓀 π•œ).comap fun a => (a.1 i j, a.2 i j) := by
   erw [Pi.uniformity, Pi.uniformity]
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -15,7 +15,7 @@ import Mathlib.Data.Matrix.Basic
 
 open Uniformity Topology
 
-variable (m n π•œ : Type _) [UniformSpace π•œ]
+variable (m n π•œ : Type*) [UniformSpace π•œ]
 
 namespace Matrix
 
@@ -29,7 +29,7 @@ theorem uniformity :
   rfl
 #align matrix.uniformity Matrix.uniformity
 
-theorem uniformContinuous {Ξ² : Type _} [UniformSpace Ξ²] {f : Ξ² β†’ Matrix m n π•œ} :
+theorem uniformContinuous {Ξ² : Type*} [UniformSpace Ξ²] {f : Ξ² β†’ Matrix m n π•œ} :
     UniformContinuous f ↔ βˆ€ i j, UniformContinuous fun x => f x i j := by
   simp only [UniformContinuous, Matrix.uniformity, Filter.tendsto_iInf, Filter.tendsto_comap_iff]
   apply Iff.intro <;> intro a <;> apply a
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,15 +2,12 @@
 Copyright (c) 2022 Eric Wieser. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Eric Wieser, Heather Macbeth
-
-! This file was ported from Lean 3 source module topology.uniform_space.matrix
-! 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.Topology.UniformSpace.Pi
 import Mathlib.Data.Matrix.Basic
 
+#align_import topology.uniform_space.matrix from "leanprover-community/mathlib"@"f2ce6086713c78a7f880485f7917ea547a215982"
+
 /-!
 # Uniform space structure on matrices
 -/
chore: Rename to sSup/iSup (#3938)

As discussed on Zulip

Renames

  • supβ‚› β†’ sSup
  • infβ‚› β†’ sInf
  • supα΅’ β†’ iSup
  • infα΅’ β†’ iInf
  • bsupβ‚› β†’ bsSup
  • binfβ‚› β†’ bsInf
  • bsupα΅’ β†’ biSup
  • binfα΅’ β†’ biInf
  • csupβ‚› β†’ csSup
  • cinfβ‚› β†’ csInf
  • csupα΅’ β†’ ciSup
  • cinfα΅’ β†’ ciInf
  • unionβ‚› β†’ sUnion
  • interβ‚› β†’ sInter
  • unionα΅’ β†’ iUnion
  • interα΅’ β†’ iInter
  • bunionβ‚› β†’ bsUnion
  • binterβ‚› β†’ bsInter
  • bunionα΅’ β†’ biUnion
  • binterα΅’ β†’ biInter

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

Diff
@@ -28,13 +28,13 @@ instance : UniformSpace (Matrix m n π•œ) :=
 theorem uniformity :
     𝓀 (Matrix m n π•œ) = β¨… (i : m) (j : n), (𝓀 π•œ).comap fun a => (a.1 i j, a.2 i j) := by
   erw [Pi.uniformity, Pi.uniformity]
-  simp_rw [Filter.comap_infα΅’, Filter.comap_comap]
+  simp_rw [Filter.comap_iInf, Filter.comap_comap]
   rfl
 #align matrix.uniformity Matrix.uniformity
 
 theorem uniformContinuous {Ξ² : Type _} [UniformSpace Ξ²] {f : Ξ² β†’ Matrix m n π•œ} :
     UniformContinuous f ↔ βˆ€ i j, UniformContinuous fun x => f x i j := by
-  simp only [UniformContinuous, Matrix.uniformity, Filter.tendsto_infα΅’, Filter.tendsto_comap_iff]
+  simp only [UniformContinuous, Matrix.uniformity, Filter.tendsto_iInf, Filter.tendsto_comap_iff]
   apply Iff.intro <;> intro a <;> apply a
 #align matrix.uniform_continuous Matrix.uniformContinuous
 
feat: port Topology.UniformSpace.Matrix (#3262)

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

Dependencies 9 + 430

431 files ported (98.0%)
186274 lines ported (97.4%)
Show graph

The unported dependencies are