topology.instances.intMathlib.Topology.Instances.Int

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)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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
@@ -97,8 +97,8 @@ instance : ProperSpace ℤ :=
 #print Int.cocompact_eq /-
 @[simp]
 theorem cocompact_eq : cocompact ℤ = atBot ⊔ atTop := by
-  simp only [← comap_dist_right_atTop_eq_cocompact (0 : ℤ), dist_eq, sub_zero, cast_zero, ←
-    cast_abs, ← @comap_comap _ _ _ _ abs, Int.comap_cast_atTop, comap_abs_at_top]
+  simp only [← Metric.cobounded_eq_cocompact (0 : ℤ), dist_eq, sub_zero, cast_zero, ← cast_abs, ←
+    @comap_comap _ _ _ _ abs, Int.comap_cast_atTop, comap_abs_at_top]
 #align int.cocompact_eq Int.cocompact_eq
 -/
 
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Mario Carneiro
 -/
-import Mathbin.Data.Int.Interval
-import Mathbin.Topology.MetricSpace.Basic
-import Mathbin.Order.Filter.Archimedean
+import Data.Int.Interval
+import Topology.MetricSpace.Basic
+import Order.Filter.Archimedean
 
 #align_import topology.instances.int from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
 
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2017 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Mario Carneiro
-
-! This file was ported from Lean 3 source module topology.instances.int
-! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Data.Int.Interval
 import Mathbin.Topology.MetricSpace.Basic
 import Mathbin.Order.Filter.Archimedean
 
+#align_import topology.instances.int from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
+
 /-!
 # Topology on the integers
 
Diff
@@ -31,47 +31,65 @@ namespace Int
 instance : Dist ℤ :=
   ⟨fun x y => dist (x : ℝ) y⟩
 
+#print Int.dist_eq /-
 theorem dist_eq (x y : ℤ) : dist x y = |x - y| :=
   rfl
 #align int.dist_eq Int.dist_eq
+-/
 
+#print Int.dist_cast_real /-
 @[norm_cast, simp]
 theorem dist_cast_real (x y : ℤ) : dist (x : ℝ) y = dist x y :=
   rfl
 #align int.dist_cast_real Int.dist_cast_real
+-/
 
+#print Int.pairwise_one_le_dist /-
 theorem pairwise_one_le_dist : Pairwise fun m n : ℤ => 1 ≤ dist m n :=
   by
   intro m n hne
   rw [dist_eq]; norm_cast; rwa [← zero_add (1 : ℤ), Int.add_one_le_iff, abs_pos, sub_ne_zero]
 #align int.pairwise_one_le_dist Int.pairwise_one_le_dist
+-/
 
+#print Int.uniformEmbedding_coe_real /-
 theorem uniformEmbedding_coe_real : UniformEmbedding (coe : ℤ → ℝ) :=
   uniformEmbedding_bot_of_pairwise_le_dist zero_lt_one pairwise_one_le_dist
 #align int.uniform_embedding_coe_real Int.uniformEmbedding_coe_real
+-/
 
+#print Int.closedEmbedding_coe_real /-
 theorem closedEmbedding_coe_real : ClosedEmbedding (coe : ℤ → ℝ) :=
   closedEmbedding_of_pairwise_le_dist zero_lt_one pairwise_one_le_dist
 #align int.closed_embedding_coe_real Int.closedEmbedding_coe_real
+-/
 
 instance : MetricSpace ℤ :=
   Int.uniformEmbedding_coe_real.comapMetricSpace _
 
+#print Int.preimage_ball /-
 theorem preimage_ball (x : ℤ) (r : ℝ) : coe ⁻¹' ball (x : ℝ) r = ball x r :=
   rfl
 #align int.preimage_ball Int.preimage_ball
+-/
 
+#print Int.preimage_closedBall /-
 theorem preimage_closedBall (x : ℤ) (r : ℝ) : coe ⁻¹' closedBall (x : ℝ) r = closedBall x r :=
   rfl
 #align int.preimage_closed_ball Int.preimage_closedBall
+-/
 
+#print Int.ball_eq_Ioo /-
 theorem ball_eq_Ioo (x : ℤ) (r : ℝ) : ball x r = Ioo ⌊↑x - r⌋ ⌈↑x + r⌉ := by
   rw [← preimage_ball, Real.ball_eq_Ioo, preimage_Ioo]
 #align int.ball_eq_Ioo Int.ball_eq_Ioo
+-/
 
+#print Int.closedBall_eq_Icc /-
 theorem closedBall_eq_Icc (x : ℤ) (r : ℝ) : closedBall x r = Icc ⌈↑x - r⌉ ⌊↑x + r⌋ := by
   rw [← preimage_closed_ball, Real.closedBall_eq_Icc, preimage_Icc]
 #align int.closed_ball_eq_Icc Int.closedBall_eq_Icc
+-/
 
 instance : ProperSpace ℤ :=
   ⟨by
@@ -87,10 +105,12 @@ theorem cocompact_eq : cocompact ℤ = atBot ⊔ atTop := by
 #align int.cocompact_eq Int.cocompact_eq
 -/
 
+#print Int.cofinite_eq /-
 @[simp]
 theorem cofinite_eq : (cofinite : Filter ℤ) = atBot ⊔ atTop := by
   rw [← cocompact_eq_cofinite, cocompact_eq]
 #align int.cofinite_eq Int.cofinite_eq
+-/
 
 end Int
 
Diff
@@ -31,55 +31,25 @@ namespace Int
 instance : Dist ℤ :=
   ⟨fun x y => dist (x : ℝ) y⟩
 
-/- warning: int.dist_eq -> Int.dist_eq is a dubious translation:
-lean 3 declaration is
-  forall (x : Int) (y : Int), Eq.{1} Real (Dist.dist.{0} Int Int.hasDist x y) (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.hasNeg Real.hasSup) (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.hasSub) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))) x) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))) y)))
-but is expected to have type
-  forall (x : Int) (y : Int), Eq.{1} Real (Dist.dist.{0} Int Int.instDistInt x y) (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.instNegReal Real.instSupReal) (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.instSubReal) (Int.cast.{0} Real Real.intCast x) (Int.cast.{0} Real Real.intCast y)))
-Case conversion may be inaccurate. Consider using '#align int.dist_eq Int.dist_eqₓ'. -/
 theorem dist_eq (x y : ℤ) : dist x y = |x - y| :=
   rfl
 #align int.dist_eq Int.dist_eq
 
-/- warning: int.dist_cast_real -> Int.dist_cast_real is a dubious translation:
-lean 3 declaration is
-  forall (x : Int) (y : Int), Eq.{1} Real (Dist.dist.{0} Real (PseudoMetricSpace.toHasDist.{0} Real Real.pseudoMetricSpace) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))) x) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))) y)) (Dist.dist.{0} Int Int.hasDist x y)
-but is expected to have type
-  forall (x : Int) (y : Int), Eq.{1} Real (Dist.dist.{0} Real (PseudoMetricSpace.toDist.{0} Real Real.pseudoMetricSpace) (Int.cast.{0} Real Real.intCast x) (Int.cast.{0} Real Real.intCast y)) (Dist.dist.{0} Int Int.instDistInt x y)
-Case conversion may be inaccurate. Consider using '#align int.dist_cast_real Int.dist_cast_realₓ'. -/
 @[norm_cast, simp]
 theorem dist_cast_real (x y : ℤ) : dist (x : ℝ) y = dist x y :=
   rfl
 #align int.dist_cast_real Int.dist_cast_real
 
-/- warning: int.pairwise_one_le_dist -> Int.pairwise_one_le_dist is a dubious translation:
-lean 3 declaration is
-  Pairwise.{0} Int (fun (m : Int) (n : Int) => LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) (Dist.dist.{0} Int Int.hasDist m n))
-but is expected to have type
-  Pairwise.{0} Int (fun (m : Int) (n : Int) => LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (Dist.dist.{0} Int Int.instDistInt m n))
-Case conversion may be inaccurate. Consider using '#align int.pairwise_one_le_dist Int.pairwise_one_le_distₓ'. -/
 theorem pairwise_one_le_dist : Pairwise fun m n : ℤ => 1 ≤ dist m n :=
   by
   intro m n hne
   rw [dist_eq]; norm_cast; rwa [← zero_add (1 : ℤ), Int.add_one_le_iff, abs_pos, sub_ne_zero]
 #align int.pairwise_one_le_dist Int.pairwise_one_le_dist
 
-/- warning: int.uniform_embedding_coe_real -> Int.uniformEmbedding_coe_real is a dubious translation:
-lean 3 declaration is
-  UniformEmbedding.{0, 0} Int Real Int.uniformSpace (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))))
-but is expected to have type
-  UniformEmbedding.{0, 0} Int Real instUniformSpaceInt (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (Int.cast.{0} Real Real.intCast)
-Case conversion may be inaccurate. Consider using '#align int.uniform_embedding_coe_real Int.uniformEmbedding_coe_realₓ'. -/
 theorem uniformEmbedding_coe_real : UniformEmbedding (coe : ℤ → ℝ) :=
   uniformEmbedding_bot_of_pairwise_le_dist zero_lt_one pairwise_one_le_dist
 #align int.uniform_embedding_coe_real Int.uniformEmbedding_coe_real
 
-/- warning: int.closed_embedding_coe_real -> Int.closedEmbedding_coe_real is a dubious translation:
-lean 3 declaration is
-  ClosedEmbedding.{0, 0} Int Real Int.topologicalSpace (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))))
-but is expected to have type
-  ClosedEmbedding.{0, 0} Int Real instTopologicalSpaceInt (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Int.cast.{0} Real Real.intCast)
-Case conversion may be inaccurate. Consider using '#align int.closed_embedding_coe_real Int.closedEmbedding_coe_realₓ'. -/
 theorem closedEmbedding_coe_real : ClosedEmbedding (coe : ℤ → ℝ) :=
   closedEmbedding_of_pairwise_le_dist zero_lt_one pairwise_one_le_dist
 #align int.closed_embedding_coe_real Int.closedEmbedding_coe_real
@@ -87,42 +57,18 @@ theorem closedEmbedding_coe_real : ClosedEmbedding (coe : ℤ → ℝ) :=
 instance : MetricSpace ℤ :=
   Int.uniformEmbedding_coe_real.comapMetricSpace _
 
-/- warning: int.preimage_ball -> Int.preimage_ball is a dubious translation:
-lean 3 declaration is
-  forall (x : Int) (r : Real), Eq.{1} (Set.{0} Int) (Set.preimage.{0, 0} Int Real ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast)))) (Metric.ball.{0} Real Real.pseudoMetricSpace ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))) x) r)) (Metric.ball.{0} Int (MetricSpace.toPseudoMetricSpace.{0} Int Int.metricSpace) x r)
-but is expected to have type
-  forall (x : Int) (r : Real), Eq.{1} (Set.{0} Int) (Set.preimage.{0, 0} Int Real (Int.cast.{0} Real Real.intCast) (Metric.ball.{0} Real Real.pseudoMetricSpace (Int.cast.{0} Real Real.intCast x) r)) (Metric.ball.{0} Int (MetricSpace.toPseudoMetricSpace.{0} Int Int.instMetricSpaceInt) x r)
-Case conversion may be inaccurate. Consider using '#align int.preimage_ball Int.preimage_ballₓ'. -/
 theorem preimage_ball (x : ℤ) (r : ℝ) : coe ⁻¹' ball (x : ℝ) r = ball x r :=
   rfl
 #align int.preimage_ball Int.preimage_ball
 
-/- warning: int.preimage_closed_ball -> Int.preimage_closedBall is a dubious translation:
-lean 3 declaration is
-  forall (x : Int) (r : Real), Eq.{1} (Set.{0} Int) (Set.preimage.{0, 0} Int Real ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast)))) (Metric.closedBall.{0} Real Real.pseudoMetricSpace ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))) x) r)) (Metric.closedBall.{0} Int (MetricSpace.toPseudoMetricSpace.{0} Int Int.metricSpace) x r)
-but is expected to have type
-  forall (x : Int) (r : Real), Eq.{1} (Set.{0} Int) (Set.preimage.{0, 0} Int Real (Int.cast.{0} Real Real.intCast) (Metric.closedBall.{0} Real Real.pseudoMetricSpace (Int.cast.{0} Real Real.intCast x) r)) (Metric.closedBall.{0} Int (MetricSpace.toPseudoMetricSpace.{0} Int Int.instMetricSpaceInt) x r)
-Case conversion may be inaccurate. Consider using '#align int.preimage_closed_ball Int.preimage_closedBallₓ'. -/
 theorem preimage_closedBall (x : ℤ) (r : ℝ) : coe ⁻¹' closedBall (x : ℝ) r = closedBall x r :=
   rfl
 #align int.preimage_closed_ball Int.preimage_closedBall
 
-/- warning: int.ball_eq_Ioo -> Int.ball_eq_Ioo is a dubious translation:
-lean 3 declaration is
-  forall (x : Int) (r : Real), Eq.{1} (Set.{0} Int) (Metric.ball.{0} Int (MetricSpace.toPseudoMetricSpace.{0} Int Int.metricSpace) x r) (Set.Ioo.{0} Int (PartialOrder.toPreorder.{0} Int (OrderedAddCommGroup.toPartialOrder.{0} Int (StrictOrderedRing.toOrderedAddCommGroup.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))) (Int.floor.{0} Real Real.linearOrderedRing Real.floorRing (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.hasSub) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))) x) r)) (Int.ceil.{0} Real Real.linearOrderedRing Real.floorRing (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))) x) r)))
-but is expected to have type
-  forall (x : Int) (r : Real), Eq.{1} (Set.{0} Int) (Metric.ball.{0} Int (MetricSpace.toPseudoMetricSpace.{0} Int Int.instMetricSpaceInt) x r) (Set.Ioo.{0} Int (PartialOrder.toPreorder.{0} Int (StrictOrderedRing.toPartialOrder.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))) (Int.floor.{0} Real Real.instLinearOrderedRingReal Real.instFloorRingRealInstLinearOrderedRingReal (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.instSubReal) (Int.cast.{0} Real Real.intCast x) r)) (Int.ceil.{0} Real Real.instLinearOrderedRingReal Real.instFloorRingRealInstLinearOrderedRingReal (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Int.cast.{0} Real Real.intCast x) r)))
-Case conversion may be inaccurate. Consider using '#align int.ball_eq_Ioo Int.ball_eq_Iooₓ'. -/
 theorem ball_eq_Ioo (x : ℤ) (r : ℝ) : ball x r = Ioo ⌊↑x - r⌋ ⌈↑x + r⌉ := by
   rw [← preimage_ball, Real.ball_eq_Ioo, preimage_Ioo]
 #align int.ball_eq_Ioo Int.ball_eq_Ioo
 
-/- warning: int.closed_ball_eq_Icc -> Int.closedBall_eq_Icc is a dubious translation:
-lean 3 declaration is
-  forall (x : Int) (r : Real), Eq.{1} (Set.{0} Int) (Metric.closedBall.{0} Int (MetricSpace.toPseudoMetricSpace.{0} Int Int.metricSpace) x r) (Set.Icc.{0} Int (PartialOrder.toPreorder.{0} Int (OrderedAddCommGroup.toPartialOrder.{0} Int (StrictOrderedRing.toOrderedAddCommGroup.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))) (Int.ceil.{0} Real Real.linearOrderedRing Real.floorRing (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.hasSub) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))) x) r)) (Int.floor.{0} Real Real.linearOrderedRing Real.floorRing (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))) x) r)))
-but is expected to have type
-  forall (x : Int) (r : Real), Eq.{1} (Set.{0} Int) (Metric.closedBall.{0} Int (MetricSpace.toPseudoMetricSpace.{0} Int Int.instMetricSpaceInt) x r) (Set.Icc.{0} Int (PartialOrder.toPreorder.{0} Int (StrictOrderedRing.toPartialOrder.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))) (Int.ceil.{0} Real Real.instLinearOrderedRingReal Real.instFloorRingRealInstLinearOrderedRingReal (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.instSubReal) (Int.cast.{0} Real Real.intCast x) r)) (Int.floor.{0} Real Real.instLinearOrderedRingReal Real.instFloorRingRealInstLinearOrderedRingReal (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Int.cast.{0} Real Real.intCast x) r)))
-Case conversion may be inaccurate. Consider using '#align int.closed_ball_eq_Icc Int.closedBall_eq_Iccₓ'. -/
 theorem closedBall_eq_Icc (x : ℤ) (r : ℝ) : closedBall x r = Icc ⌈↑x - r⌉ ⌊↑x + r⌋ := by
   rw [← preimage_closed_ball, Real.closedBall_eq_Icc, preimage_Icc]
 #align int.closed_ball_eq_Icc Int.closedBall_eq_Icc
@@ -141,12 +87,6 @@ theorem cocompact_eq : cocompact ℤ = atBot ⊔ atTop := by
 #align int.cocompact_eq Int.cocompact_eq
 -/
 
-/- warning: int.cofinite_eq -> Int.cofinite_eq is a dubious translation:
-lean 3 declaration is
-  Eq.{1} (Filter.{0} Int) (Filter.cofinite.{0} Int) (Sup.sup.{0} (Filter.{0} Int) (SemilatticeSup.toHasSup.{0} (Filter.{0} Int) (Lattice.toSemilatticeSup.{0} (Filter.{0} Int) (ConditionallyCompleteLattice.toLattice.{0} (Filter.{0} Int) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} Int) (Filter.completeLattice.{0} Int))))) (Filter.atBot.{0} Int (PartialOrder.toPreorder.{0} Int (OrderedAddCommGroup.toPartialOrder.{0} Int (StrictOrderedRing.toOrderedAddCommGroup.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))) (Filter.atTop.{0} Int (PartialOrder.toPreorder.{0} Int (OrderedAddCommGroup.toPartialOrder.{0} Int (StrictOrderedRing.toOrderedAddCommGroup.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))))
-but is expected to have type
-  Eq.{1} (Filter.{0} Int) (Filter.cofinite.{0} Int) (Sup.sup.{0} (Filter.{0} Int) (SemilatticeSup.toSup.{0} (Filter.{0} Int) (Lattice.toSemilatticeSup.{0} (Filter.{0} Int) (ConditionallyCompleteLattice.toLattice.{0} (Filter.{0} Int) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} Int) (Filter.instCompleteLatticeFilter.{0} Int))))) (Filter.atBot.{0} Int (PartialOrder.toPreorder.{0} Int (StrictOrderedRing.toPartialOrder.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))) (Filter.atTop.{0} Int (PartialOrder.toPreorder.{0} Int (StrictOrderedRing.toPartialOrder.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))
-Case conversion may be inaccurate. Consider using '#align int.cofinite_eq Int.cofinite_eqₓ'. -/
 @[simp]
 theorem cofinite_eq : (cofinite : Filter ℤ) = atBot ⊔ atTop := by
   rw [← cocompact_eq_cofinite, cocompact_eq]
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Mario Carneiro
 
 ! This file was ported from Lean 3 source module topology.instances.int
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
+! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.Order.Filter.Archimedean
 /-!
 # Topology on the integers
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 The structure of a metric space on `ℤ` is introduced in this file, induced from `ℝ`.
 -/
 
Diff
@@ -28,25 +28,55 @@ namespace Int
 instance : Dist ℤ :=
   ⟨fun x y => dist (x : ℝ) y⟩
 
+/- warning: int.dist_eq -> Int.dist_eq is a dubious translation:
+lean 3 declaration is
+  forall (x : Int) (y : Int), Eq.{1} Real (Dist.dist.{0} Int Int.hasDist x y) (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.hasNeg Real.hasSup) (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.hasSub) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))) x) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))) y)))
+but is expected to have type
+  forall (x : Int) (y : Int), Eq.{1} Real (Dist.dist.{0} Int Int.instDistInt x y) (Abs.abs.{0} Real (Neg.toHasAbs.{0} Real Real.instNegReal Real.instSupReal) (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.instSubReal) (Int.cast.{0} Real Real.intCast x) (Int.cast.{0} Real Real.intCast y)))
+Case conversion may be inaccurate. Consider using '#align int.dist_eq Int.dist_eqₓ'. -/
 theorem dist_eq (x y : ℤ) : dist x y = |x - y| :=
   rfl
 #align int.dist_eq Int.dist_eq
 
+/- warning: int.dist_cast_real -> Int.dist_cast_real is a dubious translation:
+lean 3 declaration is
+  forall (x : Int) (y : Int), Eq.{1} Real (Dist.dist.{0} Real (PseudoMetricSpace.toHasDist.{0} Real Real.pseudoMetricSpace) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))) x) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))) y)) (Dist.dist.{0} Int Int.hasDist x y)
+but is expected to have type
+  forall (x : Int) (y : Int), Eq.{1} Real (Dist.dist.{0} Real (PseudoMetricSpace.toDist.{0} Real Real.pseudoMetricSpace) (Int.cast.{0} Real Real.intCast x) (Int.cast.{0} Real Real.intCast y)) (Dist.dist.{0} Int Int.instDistInt x y)
+Case conversion may be inaccurate. Consider using '#align int.dist_cast_real Int.dist_cast_realₓ'. -/
 @[norm_cast, simp]
 theorem dist_cast_real (x y : ℤ) : dist (x : ℝ) y = dist x y :=
   rfl
 #align int.dist_cast_real Int.dist_cast_real
 
+/- warning: int.pairwise_one_le_dist -> Int.pairwise_one_le_dist is a dubious translation:
+lean 3 declaration is
+  Pairwise.{0} Int (fun (m : Int) (n : Int) => LE.le.{0} Real Real.hasLe (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne))) (Dist.dist.{0} Int Int.hasDist m n))
+but is expected to have type
+  Pairwise.{0} Int (fun (m : Int) (n : Int) => LE.le.{0} Real Real.instLEReal (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal)) (Dist.dist.{0} Int Int.instDistInt m n))
+Case conversion may be inaccurate. Consider using '#align int.pairwise_one_le_dist Int.pairwise_one_le_distₓ'. -/
 theorem pairwise_one_le_dist : Pairwise fun m n : ℤ => 1 ≤ dist m n :=
   by
   intro m n hne
   rw [dist_eq]; norm_cast; rwa [← zero_add (1 : ℤ), Int.add_one_le_iff, abs_pos, sub_ne_zero]
 #align int.pairwise_one_le_dist Int.pairwise_one_le_dist
 
+/- warning: int.uniform_embedding_coe_real -> Int.uniformEmbedding_coe_real is a dubious translation:
+lean 3 declaration is
+  UniformEmbedding.{0, 0} Int Real Int.uniformSpace (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))))
+but is expected to have type
+  UniformEmbedding.{0, 0} Int Real instUniformSpaceInt (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace) (Int.cast.{0} Real Real.intCast)
+Case conversion may be inaccurate. Consider using '#align int.uniform_embedding_coe_real Int.uniformEmbedding_coe_realₓ'. -/
 theorem uniformEmbedding_coe_real : UniformEmbedding (coe : ℤ → ℝ) :=
   uniformEmbedding_bot_of_pairwise_le_dist zero_lt_one pairwise_one_le_dist
 #align int.uniform_embedding_coe_real Int.uniformEmbedding_coe_real
 
+/- warning: int.closed_embedding_coe_real -> Int.closedEmbedding_coe_real is a dubious translation:
+lean 3 declaration is
+  ClosedEmbedding.{0, 0} Int Real Int.topologicalSpace (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))))
+but is expected to have type
+  ClosedEmbedding.{0, 0} Int Real instTopologicalSpaceInt (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (Int.cast.{0} Real Real.intCast)
+Case conversion may be inaccurate. Consider using '#align int.closed_embedding_coe_real Int.closedEmbedding_coe_realₓ'. -/
 theorem closedEmbedding_coe_real : ClosedEmbedding (coe : ℤ → ℝ) :=
   closedEmbedding_of_pairwise_le_dist zero_lt_one pairwise_one_le_dist
 #align int.closed_embedding_coe_real Int.closedEmbedding_coe_real
@@ -54,18 +84,42 @@ theorem closedEmbedding_coe_real : ClosedEmbedding (coe : ℤ → ℝ) :=
 instance : MetricSpace ℤ :=
   Int.uniformEmbedding_coe_real.comapMetricSpace _
 
+/- warning: int.preimage_ball -> Int.preimage_ball is a dubious translation:
+lean 3 declaration is
+  forall (x : Int) (r : Real), Eq.{1} (Set.{0} Int) (Set.preimage.{0, 0} Int Real ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast)))) (Metric.ball.{0} Real Real.pseudoMetricSpace ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))) x) r)) (Metric.ball.{0} Int (MetricSpace.toPseudoMetricSpace.{0} Int Int.metricSpace) x r)
+but is expected to have type
+  forall (x : Int) (r : Real), Eq.{1} (Set.{0} Int) (Set.preimage.{0, 0} Int Real (Int.cast.{0} Real Real.intCast) (Metric.ball.{0} Real Real.pseudoMetricSpace (Int.cast.{0} Real Real.intCast x) r)) (Metric.ball.{0} Int (MetricSpace.toPseudoMetricSpace.{0} Int Int.instMetricSpaceInt) x r)
+Case conversion may be inaccurate. Consider using '#align int.preimage_ball Int.preimage_ballₓ'. -/
 theorem preimage_ball (x : ℤ) (r : ℝ) : coe ⁻¹' ball (x : ℝ) r = ball x r :=
   rfl
 #align int.preimage_ball Int.preimage_ball
 
+/- warning: int.preimage_closed_ball -> Int.preimage_closedBall is a dubious translation:
+lean 3 declaration is
+  forall (x : Int) (r : Real), Eq.{1} (Set.{0} Int) (Set.preimage.{0, 0} Int Real ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast)))) (Metric.closedBall.{0} Real Real.pseudoMetricSpace ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))) x) r)) (Metric.closedBall.{0} Int (MetricSpace.toPseudoMetricSpace.{0} Int Int.metricSpace) x r)
+but is expected to have type
+  forall (x : Int) (r : Real), Eq.{1} (Set.{0} Int) (Set.preimage.{0, 0} Int Real (Int.cast.{0} Real Real.intCast) (Metric.closedBall.{0} Real Real.pseudoMetricSpace (Int.cast.{0} Real Real.intCast x) r)) (Metric.closedBall.{0} Int (MetricSpace.toPseudoMetricSpace.{0} Int Int.instMetricSpaceInt) x r)
+Case conversion may be inaccurate. Consider using '#align int.preimage_closed_ball Int.preimage_closedBallₓ'. -/
 theorem preimage_closedBall (x : ℤ) (r : ℝ) : coe ⁻¹' closedBall (x : ℝ) r = closedBall x r :=
   rfl
 #align int.preimage_closed_ball Int.preimage_closedBall
 
+/- warning: int.ball_eq_Ioo -> Int.ball_eq_Ioo is a dubious translation:
+lean 3 declaration is
+  forall (x : Int) (r : Real), Eq.{1} (Set.{0} Int) (Metric.ball.{0} Int (MetricSpace.toPseudoMetricSpace.{0} Int Int.metricSpace) x r) (Set.Ioo.{0} Int (PartialOrder.toPreorder.{0} Int (OrderedAddCommGroup.toPartialOrder.{0} Int (StrictOrderedRing.toOrderedAddCommGroup.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))) (Int.floor.{0} Real Real.linearOrderedRing Real.floorRing (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.hasSub) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))) x) r)) (Int.ceil.{0} Real Real.linearOrderedRing Real.floorRing (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))) x) r)))
+but is expected to have type
+  forall (x : Int) (r : Real), Eq.{1} (Set.{0} Int) (Metric.ball.{0} Int (MetricSpace.toPseudoMetricSpace.{0} Int Int.instMetricSpaceInt) x r) (Set.Ioo.{0} Int (PartialOrder.toPreorder.{0} Int (StrictOrderedRing.toPartialOrder.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))) (Int.floor.{0} Real Real.instLinearOrderedRingReal Real.instFloorRingRealInstLinearOrderedRingReal (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.instSubReal) (Int.cast.{0} Real Real.intCast x) r)) (Int.ceil.{0} Real Real.instLinearOrderedRingReal Real.instFloorRingRealInstLinearOrderedRingReal (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Int.cast.{0} Real Real.intCast x) r)))
+Case conversion may be inaccurate. Consider using '#align int.ball_eq_Ioo Int.ball_eq_Iooₓ'. -/
 theorem ball_eq_Ioo (x : ℤ) (r : ℝ) : ball x r = Ioo ⌊↑x - r⌋ ⌈↑x + r⌉ := by
   rw [← preimage_ball, Real.ball_eq_Ioo, preimage_Ioo]
 #align int.ball_eq_Ioo Int.ball_eq_Ioo
 
+/- warning: int.closed_ball_eq_Icc -> Int.closedBall_eq_Icc is a dubious translation:
+lean 3 declaration is
+  forall (x : Int) (r : Real), Eq.{1} (Set.{0} Int) (Metric.closedBall.{0} Int (MetricSpace.toPseudoMetricSpace.{0} Int Int.metricSpace) x r) (Set.Icc.{0} Int (PartialOrder.toPreorder.{0} Int (OrderedAddCommGroup.toPartialOrder.{0} Int (StrictOrderedRing.toOrderedAddCommGroup.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))) (Int.ceil.{0} Real Real.linearOrderedRing Real.floorRing (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.hasSub) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))) x) r)) (Int.floor.{0} Real Real.linearOrderedRing Real.floorRing (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.hasAdd) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Int Real (HasLiftT.mk.{1, 1} Int Real (CoeTCₓ.coe.{1, 1} Int Real (Int.castCoe.{0} Real Real.hasIntCast))) x) r)))
+but is expected to have type
+  forall (x : Int) (r : Real), Eq.{1} (Set.{0} Int) (Metric.closedBall.{0} Int (MetricSpace.toPseudoMetricSpace.{0} Int Int.instMetricSpaceInt) x r) (Set.Icc.{0} Int (PartialOrder.toPreorder.{0} Int (StrictOrderedRing.toPartialOrder.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))) (Int.ceil.{0} Real Real.instLinearOrderedRingReal Real.instFloorRingRealInstLinearOrderedRingReal (HSub.hSub.{0, 0, 0} Real Real Real (instHSub.{0} Real Real.instSubReal) (Int.cast.{0} Real Real.intCast x) r)) (Int.floor.{0} Real Real.instLinearOrderedRingReal Real.instFloorRingRealInstLinearOrderedRingReal (HAdd.hAdd.{0, 0, 0} Real Real Real (instHAdd.{0} Real Real.instAddReal) (Int.cast.{0} Real Real.intCast x) r)))
+Case conversion may be inaccurate. Consider using '#align int.closed_ball_eq_Icc Int.closedBall_eq_Iccₓ'. -/
 theorem closedBall_eq_Icc (x : ℤ) (r : ℝ) : closedBall x r = Icc ⌈↑x - r⌉ ⌊↑x + r⌋ := by
   rw [← preimage_closed_ball, Real.closedBall_eq_Icc, preimage_Icc]
 #align int.closed_ball_eq_Icc Int.closedBall_eq_Icc
@@ -76,12 +130,20 @@ instance : ProperSpace ℤ :=
     rw [closed_ball_eq_Icc]
     exact (Set.finite_Icc _ _).IsCompact⟩
 
+#print Int.cocompact_eq /-
 @[simp]
 theorem cocompact_eq : cocompact ℤ = atBot ⊔ atTop := by
   simp only [← comap_dist_right_atTop_eq_cocompact (0 : ℤ), dist_eq, sub_zero, cast_zero, ←
     cast_abs, ← @comap_comap _ _ _ _ abs, Int.comap_cast_atTop, comap_abs_at_top]
 #align int.cocompact_eq Int.cocompact_eq
+-/
 
+/- warning: int.cofinite_eq -> Int.cofinite_eq is a dubious translation:
+lean 3 declaration is
+  Eq.{1} (Filter.{0} Int) (Filter.cofinite.{0} Int) (Sup.sup.{0} (Filter.{0} Int) (SemilatticeSup.toHasSup.{0} (Filter.{0} Int) (Lattice.toSemilatticeSup.{0} (Filter.{0} Int) (ConditionallyCompleteLattice.toLattice.{0} (Filter.{0} Int) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} Int) (Filter.completeLattice.{0} Int))))) (Filter.atBot.{0} Int (PartialOrder.toPreorder.{0} Int (OrderedAddCommGroup.toPartialOrder.{0} Int (StrictOrderedRing.toOrderedAddCommGroup.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))) (Filter.atTop.{0} Int (PartialOrder.toPreorder.{0} Int (OrderedAddCommGroup.toPartialOrder.{0} Int (StrictOrderedRing.toOrderedAddCommGroup.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing)))))))
+but is expected to have type
+  Eq.{1} (Filter.{0} Int) (Filter.cofinite.{0} Int) (Sup.sup.{0} (Filter.{0} Int) (SemilatticeSup.toSup.{0} (Filter.{0} Int) (Lattice.toSemilatticeSup.{0} (Filter.{0} Int) (ConditionallyCompleteLattice.toLattice.{0} (Filter.{0} Int) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} Int) (Filter.instCompleteLatticeFilter.{0} Int))))) (Filter.atBot.{0} Int (PartialOrder.toPreorder.{0} Int (StrictOrderedRing.toPartialOrder.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))) (Filter.atTop.{0} Int (PartialOrder.toPreorder.{0} Int (StrictOrderedRing.toPartialOrder.{0} Int (LinearOrderedRing.toStrictOrderedRing.{0} Int (LinearOrderedCommRing.toLinearOrderedRing.{0} Int Int.linearOrderedCommRing))))))
+Case conversion may be inaccurate. Consider using '#align int.cofinite_eq Int.cofinite_eqₓ'. -/
 @[simp]
 theorem cofinite_eq : (cofinite : Filter ℤ) = atBot ⊔ atTop := by
   rw [← cocompact_eq_cofinite, cocompact_eq]
Diff
@@ -25,7 +25,7 @@ open Metric Set Filter
 
 namespace Int
 
-instance : HasDist ℤ :=
+instance : Dist ℤ :=
   ⟨fun x y => dist (x : ℝ) y⟩
 
 theorem dist_eq (x y : ℤ) : dist x y = |x - y| :=

Changes in mathlib4

mathlib3
mathlib4
feat: generalize cocompact_eq (#10285)

example use case: cocompact_le with integrable_iff_integrableAtFilter_cocompact from #10248 becomes a way to prove integrability from big-O estimates (e.g. #10258)

Co-authored-by: L Lllvvuu <git@llllvvuu.dev>

Diff
@@ -4,8 +4,9 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Mario Carneiro
 -/
 import Mathlib.Data.Int.Interval
-import Mathlib.Topology.MetricSpace.Basic
-import Mathlib.Topology.MetricSpace.PseudoMetric
+import Mathlib.Data.Int.SuccPred
+import Mathlib.Data.Int.ConditionallyCompleteOrder
+import Mathlib.Topology.Instances.Discrete
 import Mathlib.Topology.MetricSpace.Bounded
 import Mathlib.Order.Filter.Archimedean
 
@@ -76,14 +77,12 @@ theorem cobounded_eq : Bornology.cobounded ℤ = atBot ⊔ atTop := by
   simp_rw [← comap_dist_right_atTop (0 : ℤ), dist_eq', sub_zero,
     ← comap_abs_atTop, ← @Int.comap_cast_atTop ℝ, comap_comap]; rfl
 
-@[simp]
-theorem cocompact_eq : cocompact ℤ = atBot ⊔ atTop := by
-  rw [← cobounded_eq_cocompact, cobounded_eq]
+@[deprecated] alias cocompact_eq := cocompact_eq_atBot_atTop -- deprecated on 2024-02-07
 #align int.cocompact_eq Int.cocompact_eq
 
 @[simp]
 theorem cofinite_eq : (cofinite : Filter ℤ) = atBot ⊔ atTop := by
-  rw [← cocompact_eq_cofinite, cocompact_eq]
+  rw [← cocompact_eq_cofinite, cocompact_eq_atBot_atTop]
 #align int.cofinite_eq Int.cofinite_eq
 
 end Int
chore: reduce imports (#9830)

This uses the improved shake script from #9772 to reduce imports across mathlib. The corresponding noshake.json file has been added to #9772.

Co-authored-by: Mario Carneiro <di.gama@gmail.com>

Diff
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Mario Carneiro
 -/
 import Mathlib.Data.Int.Interval
+import Mathlib.Topology.MetricSpace.Basic
 import Mathlib.Topology.MetricSpace.PseudoMetric
 import Mathlib.Topology.MetricSpace.Bounded
 import Mathlib.Order.Filter.Archimedean
chore: split MetricSpace.basic (#7920)

This reduces the main file from 3340 to 2220 lines. The remaining file is somewhat entangled, so splitting is less obvious. Help is welcome, though a follow-up PR is probably better :-)

I've kept copyright and authors as they were originally.

Diff
@@ -4,7 +4,8 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Mario Carneiro
 -/
 import Mathlib.Data.Int.Interval
-import Mathlib.Topology.MetricSpace.Basic
+import Mathlib.Topology.MetricSpace.PseudoMetric
+import Mathlib.Topology.MetricSpace.Bounded
 import Mathlib.Order.Filter.Archimedean
 
 #align_import topology.instances.int from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
@@ -85,4 +86,3 @@ theorem cofinite_eq : (cofinite : Filter ℤ) = atBot ⊔ atTop := by
 #align int.cofinite_eq Int.cofinite_eq
 
 end Int
-
refactor(MetricSpace/Basic): use cobounded more (#7543)
Diff
@@ -70,9 +70,13 @@ instance : ProperSpace ℤ :=
     exact (Set.finite_Icc _ _).isCompact⟩
 
 @[simp]
-theorem cocompact_eq : cocompact ℤ = atBot ⊔ atTop := by
-  simp_rw [← comap_dist_right_atTop_eq_cocompact (0 : ℤ), dist_eq', sub_zero,
+theorem cobounded_eq : Bornology.cobounded ℤ = atBot ⊔ atTop := by
+  simp_rw [← comap_dist_right_atTop (0 : ℤ), dist_eq', sub_zero,
     ← comap_abs_atTop, ← @Int.comap_cast_atTop ℝ, comap_comap]; rfl
+
+@[simp]
+theorem cocompact_eq : cocompact ℤ = atBot ⊔ atTop := by
+  rw [← cobounded_eq_cocompact, cobounded_eq]
 #align int.cocompact_eq Int.cocompact_eq
 
 @[simp]
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,16 +2,13 @@
 Copyright (c) 2017 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl, Mario Carneiro
-
-! This file was ported from Lean 3 source module topology.instances.int
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Data.Int.Interval
 import Mathlib.Topology.MetricSpace.Basic
 import Mathlib.Order.Filter.Archimedean
 
+#align_import topology.instances.int from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
+
 /-!
 # Topology on the integers
 
feat: port Topology.Instances.Int (#2612)

Dependencies 10 + 445

446 files ported (97.8%)
197458 lines ported (97.4%)
Show graph

The unported dependencies are

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