@@ -6,9 +6,8 @@ Authors: Jakob von Raumer, Kevin Klinge, Andrew Yang
6
6
7
7
import Mathlib.Algebra.Algebra.Defs
8
8
import Mathlib.Algebra.Field.Defs
9
- import Mathlib.Algebra.GroupWithZero.NonZeroDivisors
10
9
import Mathlib.Algebra.Module.End
11
- import Mathlib.RingTheory.OreLocalization.Basic
10
+ import Mathlib.RingTheory.OreLocalization.NonZeroDivisors
12
11
13
12
/-!
14
13
@@ -70,9 +69,11 @@ variable {R : Type*} [Semiring R] {S : Submonoid R} [OreSet S]
70
69
71
70
attribute [local instance] OreLocalization.oreEqv
72
71
72
+ @[deprecated zero_mul (since := "2025-08-20")]
73
73
protected theorem zero_mul (x : R[S⁻¹]) : 0 * x = 0 :=
74
74
OreLocalization.zero_smul x
75
75
76
+ @[deprecated mul_zero (since := "2025-08-20")]
76
77
protected theorem mul_zero (x : R[S⁻¹]) : x * 0 = 0 :=
77
78
OreLocalization.smul_zero x
78
79
@@ -204,83 +205,13 @@ theorem numeratorHom_inj (hS : S ≤ nonZeroDivisorsLeft R) :
204
205
rw [← h₂, ← sub_eq_zero, ← mul_sub] at h₁
205
206
exact (sub_eq_zero.mp (hS u.2 _ h₁)).symm
206
207
207
- theorem subsingleton_iff :
208
- Subsingleton R[S⁻¹] ↔ 0 ∈ S := by
209
- rw [← subsingleton_iff_zero_eq_one, OreLocalization.one_def,
210
- OreLocalization.zero_def, oreDiv_eq_iff]
211
- simp
212
-
213
- theorem nontrivial_iff :
214
- Nontrivial R[S⁻¹] ↔ 0 ∉ S := by
215
- rw [← not_subsingleton_iff_nontrivial, subsingleton_iff]
216
-
217
- theorem nontrivial_of_nonZeroDivisorsLeft [Nontrivial R] (hS : S ≤ nonZeroDivisorsLeft R) :
218
- Nontrivial R[S⁻¹] :=
219
- nontrivial_iff.mpr (fun e ↦ one_ne_zero <| hS e 1 (zero_mul _))
220
-
221
- theorem nontrivial_of_nonZeroDivisorsRight [Nontrivial R] (hS : S ≤ nonZeroDivisorsRight R) :
222
- Nontrivial R[S⁻¹] :=
223
- nontrivial_iff.mpr (fun e ↦ one_ne_zero <| hS e 1 (mul_zero _))
224
-
225
- theorem nontrivial_of_nonZeroDivisors [Nontrivial R] (hS : S ≤ R⁰) :
226
- Nontrivial R[S⁻¹] :=
227
- nontrivial_of_nonZeroDivisorsLeft (hS.trans inf_le_left)
228
-
229
208
end Ring
230
209
231
210
noncomputable section DivisionRing
232
211
233
212
open nonZeroDivisors
234
213
235
- variable {R : Type *} [Ring R] [Nontrivial R] [OreSet R⁰]
236
-
237
- instance nontrivial : Nontrivial R[R⁰⁻¹] :=
238
- nontrivial_of_nonZeroDivisors (refl R⁰)
239
-
240
- variable [NoZeroDivisors R]
241
-
242
- open Classical in
243
- /-- The inversion of Ore fractions for a ring without zero divisors, satisfying `0⁻¹ = 0` and
244
- `(r /ₒ r')⁻¹ = r' /ₒ r` for `r ≠ 0`. -/
245
- @[irreducible]
246
- protected def inv : R[R⁰⁻¹] → R[R⁰⁻¹] :=
247
- liftExpand
248
- (fun r s =>
249
- if hr : r = (0 : R) then (0 : R[R⁰⁻¹])
250
- else s /ₒ ⟨r, mem_nonZeroDivisors_of_ne_zero hr⟩)
251
- (by
252
- intro r t s hst
253
- by_cases hr : r = 0
254
- · simp [hr]
255
- · by_cases ht : t = 0
256
- · exfalso
257
- apply nonZeroDivisors.coe_ne_zero ⟨_, hst⟩
258
- simp [ht]
259
- · simp only [hr, ht, dif_neg, not_false_iff, or_self_iff, mul_eq_zero, smul_eq_mul]
260
- apply OreLocalization.expand)
261
-
262
- instance inv' : Inv R[R⁰⁻¹] :=
263
- ⟨OreLocalization.inv⟩
264
-
265
- open Classical in
266
- protected theorem inv_def {r : R} {s : R⁰} :
267
- (r /ₒ s)⁻¹ =
268
- if hr : r = (0 : R) then (0 : R[R⁰⁻¹])
269
- else s /ₒ ⟨r, mem_nonZeroDivisors_of_ne_zero hr⟩ := by
270
- with_unfolding_all rfl
271
-
272
- protected theorem mul_inv_cancel (x : R[R⁰⁻¹]) (h : x ≠ 0 ) : x * x⁻¹ = 1 := by
273
- induction' x with r s
274
- rw [OreLocalization.inv_def, OreLocalization.one_def]
275
- have hr : r ≠ 0 := by
276
- rintro rfl
277
- simp at h
278
- simp only [hr]
279
- with_unfolding_all apply OreLocalization.mul_inv ⟨r, _⟩
280
-
281
- protected theorem inv_zero : (0 : R[R⁰⁻¹])⁻¹ = 0 := by
282
- rw [OreLocalization.zero_def, OreLocalization.inv_def]
283
- simp
214
+ variable {R : Type *} [Ring R] [Nontrivial R] [NoZeroDivisors R] [OreSet R⁰]
284
215
285
216
instance : DivisionRing R[R⁰⁻¹] where
286
217
mul_inv_cancel := OreLocalization.mul_inv_cancel
0 commit comments