topology.algebra.order.archimedean ⟷ Mathlib.Topology.Algebra.Order.Archimedean

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)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2022 Yury G. Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury G. Kudryashov
 -/
-import Mathbin.Topology.Order.Basic
-import Mathbin.Algebra.Order.Archimedean
+import Topology.Order.Basic
+import Algebra.Order.Archimedean
 
 #align_import topology.algebra.order.archimedean from "leanprover-community/mathlib"@"50832daea47b195a48b5b33b1c8b2162c48c3afc"
 
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2022 Yury G. Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury G. Kudryashov
-
-! This file was ported from Lean 3 source module topology.algebra.order.archimedean
-! leanprover-community/mathlib commit 50832daea47b195a48b5b33b1c8b2162c48c3afc
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Topology.Order.Basic
 import Mathbin.Algebra.Order.Archimedean
 
+#align_import topology.algebra.order.archimedean from "leanprover-community/mathlib"@"50832daea47b195a48b5b33b1c8b2162c48c3afc"
+
 /-!
 # Rational numbers are dense in a linear ordered archimedean field
 
Diff
@@ -25,8 +25,10 @@ This lemma is in a separate file because `topology.order.basic` does not import
 
 variable {π•œ : Type _} [LinearOrderedField π•œ] [TopologicalSpace π•œ] [OrderTopology π•œ] [Archimedean π•œ]
 
+#print Rat.denseRange_cast /-
 /-- Rational numbers are dense in a linear ordered archimedean field. -/
 theorem Rat.denseRange_cast : DenseRange (coe : β„š β†’ π•œ) :=
   dense_of_exists_between fun a b h => Set.exists_range_iff.2 <| exists_rat_btwn h
 #align rat.dense_range_cast Rat.denseRange_cast
+-/
 
Diff
@@ -25,12 +25,6 @@ This lemma is in a separate file because `topology.order.basic` does not import
 
 variable {π•œ : Type _} [LinearOrderedField π•œ] [TopologicalSpace π•œ] [OrderTopology π•œ] [Archimedean π•œ]
 
-/- warning: rat.dense_range_cast -> Rat.denseRange_cast is a dubious translation:
-lean 3 declaration is
-  forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : TopologicalSpace.{u1} π•œ] [_inst_3 : OrderTopology.{u1} π•œ _inst_2 (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))] [_inst_4 : Archimedean.{u1} π•œ (OrderedSemiring.toOrderedAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))], DenseRange.{u1, 0} π•œ _inst_2 Rat ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Rat π•œ (HasLiftT.mk.{1, succ u1} Rat π•œ (CoeTCβ‚“.coe.{1, succ u1} Rat π•œ (Rat.castCoe.{u1} π•œ (DivisionRing.toHasRatCast.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))
-but is expected to have type
-  forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : TopologicalSpace.{u1} π•œ] [_inst_3 : OrderTopology.{u1} π•œ _inst_2 (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))] [_inst_4 : Archimedean.{u1} π•œ (OrderedSemiring.toOrderedAddCommMonoid.{u1} π•œ (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))], DenseRange.{u1, 0} π•œ _inst_2 Rat (Rat.cast.{u1} π•œ (LinearOrderedField.toRatCast.{u1} π•œ _inst_1))
-Case conversion may be inaccurate. Consider using '#align rat.dense_range_cast Rat.denseRange_castβ‚“'. -/
 /-- Rational numbers are dense in a linear ordered archimedean field. -/
 theorem Rat.denseRange_cast : DenseRange (coe : β„š β†’ π•œ) :=
   dense_of_exists_between fun a b h => Set.exists_range_iff.2 <| exists_rat_btwn h
Diff
@@ -29,7 +29,7 @@ variable {π•œ : Type _} [LinearOrderedField π•œ] [TopologicalSpace π•œ] [Orde
 lean 3 declaration is
   forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : TopologicalSpace.{u1} π•œ] [_inst_3 : OrderTopology.{u1} π•œ _inst_2 (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))] [_inst_4 : Archimedean.{u1} π•œ (OrderedSemiring.toOrderedAddCommMonoid.{u1} π•œ (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))], DenseRange.{u1, 0} π•œ _inst_2 Rat ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Rat π•œ (HasLiftT.mk.{1, succ u1} Rat π•œ (CoeTCβ‚“.coe.{1, succ u1} Rat π•œ (Rat.castCoe.{u1} π•œ (DivisionRing.toHasRatCast.{u1} π•œ (Field.toDivisionRing.{u1} π•œ (LinearOrderedField.toField.{u1} π•œ _inst_1)))))))
 but is expected to have type
-  forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : TopologicalSpace.{u1} π•œ] [_inst_3 : OrderTopology.{u1} π•œ _inst_2 (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))] [_inst_4 : Archimedean.{u1} π•œ (OrderedSemiring.toOrderedAddCommMonoid.{u1} π•œ (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))], DenseRange.{u1, 0} π•œ _inst_2 Rat (RatCast.ratCast.{u1} π•œ (LinearOrderedField.toRatCast.{u1} π•œ _inst_1))
+  forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] [_inst_2 : TopologicalSpace.{u1} π•œ] [_inst_3 : OrderTopology.{u1} π•œ _inst_2 (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))] [_inst_4 : Archimedean.{u1} π•œ (OrderedSemiring.toOrderedAddCommMonoid.{u1} π•œ (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))], DenseRange.{u1, 0} π•œ _inst_2 Rat (Rat.cast.{u1} π•œ (LinearOrderedField.toRatCast.{u1} π•œ _inst_1))
 Case conversion may be inaccurate. Consider using '#align rat.dense_range_cast Rat.denseRange_castβ‚“'. -/
 /-- Rational numbers are dense in a linear ordered archimedean field. -/
 theorem Rat.denseRange_cast : DenseRange (coe : β„š β†’ π•œ) :=

Changes in mathlib4

mathlib3
mathlib4
refactor(Topology/Order/Basic): split up large file (#11992)

This splits up the file Mathlib/Topology/Order/Basic.lean (currently > 2000 lines) into several smaller files.

Diff
@@ -3,8 +3,8 @@ Copyright (c) 2022 Yury G. Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury G. Kudryashov
 -/
-import Mathlib.Topology.Order.Basic
 import Mathlib.GroupTheory.Archimedean
+import Mathlib.Topology.Order.Basic
 
 #align_import topology.algebra.order.archimedean from "leanprover-community/mathlib"@"4c19a16e4b705bf135cf9a80ac18fcc99c438514"
 
chore: exactly 4 spaces in theorems (#7328)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -27,7 +27,7 @@ open Set
 
 /-- Rational numbers are dense in a linear ordered archimedean field. -/
 theorem Rat.denseRange_cast {π•œ} [LinearOrderedField π•œ] [TopologicalSpace π•œ] [OrderTopology π•œ]
-  [Archimedean π•œ] : DenseRange ((↑) : β„š β†’ π•œ) :=
+    [Archimedean π•œ] : DenseRange ((↑) : β„š β†’ π•œ) :=
   dense_of_exists_between fun _ _ h => Set.exists_range_iff.2 <| exists_rat_btwn h
 #align rat.dense_range_cast Rat.denseRange_cast
 
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
@@ -33,7 +33,7 @@ theorem Rat.denseRange_cast {π•œ} [LinearOrderedField π•œ] [TopologicalSpace 
 
 namespace AddSubgroup
 
-variable {G : Type _} [LinearOrderedAddCommGroup G] [TopologicalSpace G] [OrderTopology G]
+variable {G : Type*} [LinearOrderedAddCommGroup G] [TopologicalSpace G] [OrderTopology G]
   [Archimedean G]
 
 /-- An additive subgroup of an archimedean linear ordered additive commutative group with order
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 Yury G. Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury G. Kudryashov
-
-! This file was ported from Lean 3 source module topology.algebra.order.archimedean
-! leanprover-community/mathlib commit 4c19a16e4b705bf135cf9a80ac18fcc99c438514
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Topology.Order.Basic
 import Mathlib.GroupTheory.Archimedean
 
+#align_import topology.algebra.order.archimedean from "leanprover-community/mathlib"@"4c19a16e4b705bf135cf9a80ac18fcc99c438514"
+
 /-!
 # Topology on archimedean groups and fields
 
feat: port Topology.Instances.Real (#2633)

I generalized some lemmas from additive subgroups of the real numbers to additive subgroups of an archimedean additive group.

Diff
@@ -9,21 +9,67 @@ Authors: Yury G. Kudryashov
 ! if you have ported upstream changes.
 -/
 import Mathlib.Topology.Order.Basic
-import Mathlib.Algebra.Order.Archimedean
+import Mathlib.GroupTheory.Archimedean
 
 /-!
-# Rational numbers are dense in a linear ordered archimedean field
+# Topology on archimedean groups and fields
 
-In this file we prove that coercion from `β„š` to a linear ordered archimedean field has dense range.
-This lemma is in a separate file because `Mathlib.Topology.Order.Basic` does not import
-`Mathlib.Algebra.Order.Archimedean`.
--/
+In this file we prove the following theorems:
+
+- `Rat.denseRange_cast`: the coercion from `β„š` to a linear ordered archimedean field has dense
+  range;
 
+- `AddSubgroup.dense_of_not_isolated_zero`, `AddSubgroup.dense_of_no_min`: two sufficient conditions
+  for a subgroup of an archimedean linear ordered additive commutative group to be dense;
+
+- `AddSubgroup.dense_or_cyclic`: an additive subgroup of an archimedean linear ordered additive
+  commutative group `G` with order topology either is dense in `G` or is a cyclic subgroup.
+-/
 
-variable {π•œ : Type _} [LinearOrderedField π•œ] [TopologicalSpace π•œ] [OrderTopology π•œ] [Archimedean π•œ]
+open Set
 
 /-- Rational numbers are dense in a linear ordered archimedean field. -/
-theorem Rat.denseRange_cast : DenseRange ((↑) : β„š β†’ π•œ) :=
+theorem Rat.denseRange_cast {π•œ} [LinearOrderedField π•œ] [TopologicalSpace π•œ] [OrderTopology π•œ]
+  [Archimedean π•œ] : DenseRange ((↑) : β„š β†’ π•œ) :=
   dense_of_exists_between fun _ _ h => Set.exists_range_iff.2 <| exists_rat_btwn h
 #align rat.dense_range_cast Rat.denseRange_cast
 
+namespace AddSubgroup
+
+variable {G : Type _} [LinearOrderedAddCommGroup G] [TopologicalSpace G] [OrderTopology G]
+  [Archimedean G]
+
+/-- An additive subgroup of an archimedean linear ordered additive commutative group with order
+topology is dense provided that for all positive `Ξ΅` there exists a positive element of the
+subgroup that is less than `Ξ΅`. -/
+theorem dense_of_not_isolated_zero (S : AddSubgroup G) (hS : βˆ€ Ξ΅ > 0, βˆƒ g ∈ S, g ∈ Ioo 0 Ξ΅) :
+    Dense (S : Set G) := by
+  cases subsingleton_or_nontrivial G
+  Β· refine fun x => _root_.subset_closure ?_
+    rw [Subsingleton.elim x 0]
+    exact zero_mem S
+  refine dense_of_exists_between fun a b hlt => ?_
+  rcases hS (b - a) (sub_pos.2 hlt) with ⟨g, hgS, hg0, hg⟩
+  rcases (existsUnique_add_zsmul_mem_Ioc hg0 0 a).exists with ⟨m, hm⟩
+  rw [zero_add] at hm
+  refine ⟨m β€’ g, zsmul_mem hgS _, hm.1, hm.2.trans_lt ?_⟩
+  rwa [lt_sub_iff_add_lt'] at hg
+
+/-- Let `S` be a nontrivial additive subgroup in an archimedean linear ordered additive commutative
+group `G` with order topology. If the set of positive elements of `S` does not have a minimal
+element, then `S` is dense `G`. -/
+theorem dense_of_no_min (S : AddSubgroup G) (hbot : S β‰  βŠ₯)
+    (H : Β¬βˆƒ a : G, IsLeast { g : G | g ∈ S ∧ 0 < g } a) : Dense (S : Set G) := by
+  refine S.dense_of_not_isolated_zero fun Ξ΅ Ξ΅0 => ?_
+  contrapose! H
+  exact exists_isLeast_pos hbot Ξ΅0 (disjoint_left.2 H)
+#align real.subgroup_dense_of_no_min AddSubgroup.dense_of_no_minβ‚“
+
+/-- An additive subgroup of an archimedean linear ordered additive commutative group `G` with order
+topology either is dense in `G` or is a cyclic subgroup. -/
+theorem dense_or_cyclic (S : AddSubgroup G) : Dense (S : Set G) ∨ βˆƒ a : G, S = closure {a} := by
+  refine (em _).imp (dense_of_not_isolated_zero S) fun h => ?_
+  push_neg at h
+  rcases h with ⟨Ρ, Ρ0, hΡ⟩
+  exact cyclic_of_isolated_zero Ξ΅0 (disjoint_left.2 hΞ΅)
+#align real.subgroup_dense_or_cyclic AddSubgroup.dense_or_cyclicβ‚“
feat: port Topology.Algebra.Order.Archimedean (#2083)

Dependencies 8 + 324

325 files ported (97.6%)
141843 lines ported (96.6%)
Show graph

The unported dependencies are