Skip to content

Commit bb0335e

Browse files
committed
feat(AtTopBot/Archimedean): weaken TC assumptions (#18445)
... from linear ordered archimedean ring to an ordered archimedean ring.
1 parent ba40da6 commit bb0335e

File tree

2 files changed

+27
-11
lines changed

2 files changed

+27
-11
lines changed

Mathlib/Algebra/Order/Archimedean/Basic.lean

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,23 @@ lemma pow_unbounded_of_one_lt [ExistsAddOfLE α] (x : α) (hy1 : 1 < y) : ∃ n
174174

175175
end StrictOrderedSemiring
176176

177+
section OrderedRing
178+
179+
variable {R : Type*} [OrderedRing R] [Archimedean R]
180+
181+
theorem exists_int_ge (x : R) : ∃ n : ℤ, x ≤ n := let ⟨n, h⟩ := exists_nat_ge x; ⟨n, mod_cast h⟩
182+
183+
theorem exists_int_le (x : R) : ∃ n : ℤ, n ≤ x :=
184+
let ⟨n, h⟩ := exists_int_ge (-x); ⟨-n, by simpa [neg_le] using h⟩
185+
186+
instance (priority := 100) : IsDirected R (· ≥ ·) where
187+
directed a b :=
188+
let ⟨m, hm⟩ := exists_int_le a; let ⟨n, hn⟩ := exists_int_le b
189+
⟨(min m n : ℤ), le_trans (Int.cast_mono <| min_le_left _ _) hm,
190+
le_trans (Int.cast_mono <| min_le_right _ _) hn⟩
191+
192+
end OrderedRing
193+
177194
section StrictOrderedRing
178195
variable [StrictOrderedRing α] [Archimedean α]
179196

Mathlib/Order/Filter/AtTopBot/Archimedean.lean

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -138,24 +138,23 @@ theorem atTop_hasAntitoneBasis_of_archimedean [OrderedSemiring R] [Archimedean R
138138
(atTop : Filter R).HasAntitoneBasis fun n : ℕ => Ici n :=
139139
hasAntitoneBasis_atTop.comp_mono Nat.mono_cast tendsto_natCast_atTop_atTop
140140

141-
theorem atTop_hasCountableBasis_of_archimedean [StrictOrderedSemiring R] [Archimedean R] :
141+
theorem atTop_hasCountableBasis_of_archimedean [OrderedSemiring R] [Archimedean R] :
142142
(atTop : Filter R).HasCountableBasis (fun _ : ℕ => True) fun n => Ici n :=
143143
⟨atTop_hasAntitoneBasis_of_archimedean.1, to_countable _⟩
144144

145-
-- Porting note (#11215): TODO: generalize to a `StrictOrderedRing`
146-
theorem atBot_hasCountableBasis_of_archimedean [LinearOrderedRing R] [Archimedean R] :
147-
(atBot : Filter R).HasCountableBasis (fun _ : ℤ => True) fun m => Iic m :=
148-
{ countable := to_countable _
149-
toHasBasis :=
150-
atBot_basis.to_hasBasis
151-
(fun x _ => let ⟨m, hm⟩ := exists_int_lt x; ⟨m, trivial, Iic_subset_Iic.2 hm.le⟩)
152-
fun m _ => ⟨m, trivial, Subset.rfl⟩ }
145+
theorem atBot_hasCountableBasis_of_archimedean [OrderedRing R] [Archimedean R] :
146+
(atBot : Filter R).HasCountableBasis (fun _ : ℤ => True) fun m => Iic m where
147+
countable := to_countable _
148+
toHasBasis :=
149+
atBot_basis.to_hasBasis
150+
(fun x _ => let ⟨m, hm⟩ := exists_int_le x; ⟨m, trivial, Iic_subset_Iic.2 hm⟩)
151+
fun m _ => ⟨m, trivial, Subset.rfl⟩
153152

154-
instance (priority := 100) atTop_isCountablyGenerated_of_archimedean [StrictOrderedSemiring R]
153+
instance (priority := 100) atTop_isCountablyGenerated_of_archimedean [OrderedSemiring R]
155154
[Archimedean R] : (atTop : Filter R).IsCountablyGenerated :=
156155
atTop_hasCountableBasis_of_archimedean.isCountablyGenerated
157156

158-
instance (priority := 100) atBot_isCountablyGenerated_of_archimedean [LinearOrderedRing R]
157+
instance (priority := 100) atBot_isCountablyGenerated_of_archimedean [OrderedRing R]
159158
[Archimedean R] : (atBot : Filter R).IsCountablyGenerated :=
160159
atBot_hasCountableBasis_of_archimedean.isCountablyGenerated
161160

0 commit comments

Comments
 (0)