@@ -18,8 +18,8 @@ non-commutative monoids.
18
18
## Notations
19
19
20
20
This file declares the notations:
21
- - `R ⁰` for the submonoid of non-zero-divisors of `R `, in the locale `nonZeroDivisors`.
22
- - `R ⁰[M]` for the submonoid of non-zero smul-divisors of `R ` with respect to `M`, in the locale
21
+ - `M₀ ⁰` for the submonoid of non-zero-divisors of `M₀ `, in the locale `nonZeroDivisors`.
22
+ - `M₀ ⁰[M]` for the submonoid of non-zero smul-divisors of `M₀ ` with respect to `M`, in the locale
23
23
`nonZeroSMulDivisors`
24
24
25
25
Use the statement `open scoped nonZeroDivisors nonZeroSMulDivisors` to access this notation in
@@ -29,8 +29,10 @@ your own code.
29
29
30
30
assert_not_exists Ring
31
31
32
+ open Function
33
+
32
34
section
33
- variable (M₀ : Type *) [MonoidWithZero M₀]
35
+ variable (M₀ : Type *) [MonoidWithZero M₀] {x : M₀}
34
36
35
37
/-- The collection of elements of a `MonoidWithZero` that are not left zero divisors form a
36
38
`Submonoid`. -/
@@ -39,12 +41,11 @@ def nonZeroDivisorsLeft : Submonoid M₀ where
39
41
one_mem' := by simp
40
42
mul_mem' {x} {y} hx hy := fun z hz ↦ hx _ <| hy _ (mul_assoc z x y ▸ hz)
41
43
42
- @[simp] lemma mem_nonZeroDivisorsLeft_iff {x : M₀} :
43
- x ∈ nonZeroDivisorsLeft M₀ ↔ ∀ y, y * x = 0 → y = 0 :=
44
- Iff.rfl
44
+ @[simp]
45
+ lemma mem_nonZeroDivisorsLeft_iff : x ∈ nonZeroDivisorsLeft M₀ ↔ ∀ y, y * x = 0 → y = 0 := .rfl
45
46
46
- lemma nmem_nonZeroDivisorsLeft_iff {r : M₀} :
47
- r ∉ nonZeroDivisorsLeft M₀ ↔ {s | s * r = 0 ∧ s ≠ 0 }.Nonempty := by
47
+ lemma nmem_nonZeroDivisorsLeft_iff :
48
+ x ∉ nonZeroDivisorsLeft M₀ ↔ {y | y * x = 0 ∧ y ≠ 0 }.Nonempty := by
48
49
simpa [mem_nonZeroDivisorsLeft_iff] using Set.nonempty_def.symm
49
50
50
51
/-- The collection of elements of a `MonoidWithZero` that are not right zero divisors form a
@@ -54,12 +55,11 @@ def nonZeroDivisorsRight : Submonoid M₀ where
54
55
one_mem' := by simp
55
56
mul_mem' := fun {x} {y} hx hy z hz ↦ hy _ (hx _ ((mul_assoc x y z).symm ▸ hz))
56
57
57
- @[simp] lemma mem_nonZeroDivisorsRight_iff {x : M₀} :
58
- x ∈ nonZeroDivisorsRight M₀ ↔ ∀ y, x * y = 0 → y = 0 :=
59
- Iff.rfl
58
+ @[simp]
59
+ lemma mem_nonZeroDivisorsRight_iff : x ∈ nonZeroDivisorsRight M₀ ↔ ∀ y, x * y = 0 → y = 0 := .rfl
60
60
61
- lemma nmem_nonZeroDivisorsRight_iff {r : M₀} :
62
- r ∉ nonZeroDivisorsRight M₀ ↔ {s | r * s = 0 ∧ s ≠ 0 }.Nonempty := by
61
+ lemma nmem_nonZeroDivisorsRight_iff :
62
+ x ∉ nonZeroDivisorsRight M₀ ↔ {y | x * y = 0 ∧ y ≠ 0 }.Nonempty := by
63
63
simpa [mem_nonZeroDivisorsRight_iff] using Set.nonempty_def.symm
64
64
65
65
lemma nonZeroDivisorsLeft_eq_right (M₀ : Type *) [CommMonoidWithZero M₀] :
@@ -85,148 +85,160 @@ lemma nonZeroDivisorsLeft_eq_right (M₀ : Type*) [CommMonoidWithZero M₀] :
85
85
86
86
end
87
87
88
- /-- The submonoid of non-zero-divisors of a `MonoidWithZero` `R `. -/
89
- def nonZeroDivisors (R : Type *) [MonoidWithZero R ] : Submonoid R where
88
+ /-- The submonoid of non-zero-divisors of a `MonoidWithZero` `M₀ `. -/
89
+ def nonZeroDivisors (M₀ : Type *) [MonoidWithZero M₀ ] : Submonoid M₀ where
90
90
carrier := { x | ∀ z, z * x = 0 → z = 0 }
91
91
one_mem' _ hz := by rwa [mul_one] at hz
92
92
mul_mem' hx₁ hx₂ _ hz := by
93
93
rw [← mul_assoc] at hz
94
94
exact hx₁ _ (hx₂ _ hz)
95
95
96
- /-- The notation for the submonoid of non-zerodivisors . -/
97
- scoped [nonZeroDivisors] notation :9000 R "⁰" => nonZeroDivisors R
96
+ /-- The notation for the submonoid of non-zero divisors . -/
97
+ scoped [nonZeroDivisors] notation :9000 M₀ "⁰" => nonZeroDivisors M₀
98
98
99
- /-- Let `R` be a monoid with zero and `M` an additive monoid with an `R`-action, then the collection
100
- of non-zero smul-divisors forms a submonoid. These elements are also called `M`-regular. -/
101
- def nonZeroSMulDivisors (R : Type *) [MonoidWithZero R] (M : Type _) [Zero M] [MulAction R M] :
102
- Submonoid R where
99
+ /-- Let `M₀` be a monoid with zero and `M` an additive monoid with an `M₀`-action, then the
100
+ collection of non-zero smul-divisors forms a submonoid.
101
+
102
+ These elements are also called `M`-regular. -/
103
+ def nonZeroSMulDivisors (M₀ : Type *) [MonoidWithZero M₀] (M : Type *) [Zero M] [MulAction M₀ M] :
104
+ Submonoid M₀ where
103
105
carrier := { r | ∀ m : M, r • m = 0 → m = 0 }
104
- one_mem' m h := (one_smul R m) ▸ h
106
+ one_mem' m h := (one_smul M₀ m) ▸ h
105
107
mul_mem' {r₁ r₂} h₁ h₂ m H := h₂ _ <| h₁ _ <| mul_smul r₁ r₂ m ▸ H
106
108
107
109
/-- The notation for the submonoid of non-zero smul-divisors. -/
108
- scoped [nonZeroSMulDivisors] notation :9000 R "⁰[" M "]" => nonZeroSMulDivisors R M
110
+ scoped [nonZeroSMulDivisors] notation :9000 M₀ "⁰[" M "]" => nonZeroSMulDivisors M₀ M
109
111
110
112
open nonZeroDivisors
111
113
112
114
section MonoidWithZero
113
- variable {M M' M₁ R R' F : Type *} [MonoidWithZero M] [MonoidWithZero M'] [CommMonoidWithZero M₁]
115
+ variable {F M₀ M₀' : Type *} [MonoidWithZero M₀ ] [MonoidWithZero M₀ '] {r x y : M₀}
114
116
115
- theorem mem_nonZeroDivisors_iff {r : M} : r ∈ M⁰ ↔ ∀ x, x * r = 0 → x = 0 := Iff.rfl
117
+ theorem mem_nonZeroDivisors_iff : r ∈ M₀ ⁰ ↔ ∀ x, x * r = 0 → x = 0 := Iff.rfl
116
118
117
- lemma nmem_nonZeroDivisors_iff {r : M} : r ∉ M⁰ ↔ {s | s * r = 0 ∧ s ≠ 0 }.Nonempty := by
119
+ lemma nmem_nonZeroDivisors_iff : r ∉ M₀ ⁰ ↔ {s | s * r = 0 ∧ s ≠ 0 }.Nonempty := by
118
120
simpa [mem_nonZeroDivisors_iff] using Set.nonempty_def.symm
119
121
120
- theorem mul_right_mem_nonZeroDivisors_eq_zero_iff {x r : M} (hr : r ∈ M⁰) : x * r = 0 ↔ x = 0 :=
122
+ theorem mul_right_mem_nonZeroDivisors_eq_zero_iff (hr : r ∈ M₀ ⁰) : x * r = 0 ↔ x = 0 :=
121
123
⟨hr _, by simp +contextual⟩
124
+
122
125
@[simp]
123
- theorem mul_right_coe_nonZeroDivisors_eq_zero_iff {x : M} { c : M⁰} : x * c = 0 ↔ x = 0 :=
126
+ theorem mul_right_coe_nonZeroDivisors_eq_zero_iff {c : M₀ ⁰} : x * c = 0 ↔ x = 0 :=
124
127
mul_right_mem_nonZeroDivisors_eq_zero_iff c.prop
125
128
126
- theorem mul_left_mem_nonZeroDivisors_eq_zero_iff {r x : M₁} (hr : r ∈ M₁⁰) : r * x = 0 ↔ x = 0 := by
127
- rw [mul_comm, mul_right_mem_nonZeroDivisors_eq_zero_iff hr]
129
+ lemma IsUnit.mem_nonZeroDivisors (hx : IsUnit x) : x ∈ M₀⁰ := fun _ ↦ hx.mul_left_eq_zero.mp
128
130
129
- @[simp]
130
- theorem mul_left_coe_nonZeroDivisors_eq_zero_iff {c : M₁⁰} {x : M₁} : (c : M₁) * x = 0 ↔ x = 0 :=
131
- mul_left_mem_nonZeroDivisors_eq_zero_iff c.prop
131
+ section Nontrivial
132
+ variable [Nontrivial M₀]
132
133
133
- theorem zero_not_mem_nonZeroDivisors [Nontrivial M] : 0 ∉ M⁰ :=
134
- fun h ↦ one_ne_zero <| h 1 <| mul_zero _
134
+ theorem zero_not_mem_nonZeroDivisors : 0 ∉ M₀⁰ := fun h ↦ one_ne_zero <| h 1 <| mul_zero _
135
135
136
- theorem nonZeroDivisors.ne_zero [Nontrivial M] {x} (hx : x ∈ M⁰) : x ≠ 0 :=
136
+ theorem nonZeroDivisors.ne_zero (hx : x ∈ M₀ ⁰) : x ≠ 0 :=
137
137
ne_of_mem_of_not_mem hx zero_not_mem_nonZeroDivisors
138
138
139
139
@[simp]
140
- theorem nonZeroDivisors.coe_ne_zero [Nontrivial M] (x : M⁰) : (x : M) ≠ 0 :=
141
- nonZeroDivisors.ne_zero x.2
140
+ theorem nonZeroDivisors.coe_ne_zero (x : M₀⁰) : (x : M₀) ≠ 0 := nonZeroDivisors.ne_zero x.2
142
141
143
- theorem mul_mem_nonZeroDivisors {a b : M₁} : a * b ∈ M₁⁰ ↔ a ∈ M₁⁰ ∧ b ∈ M₁⁰ := by
144
- constructor
145
- · intro h
146
- constructor <;> intro x h' <;> apply h
147
- · rw [← mul_assoc, h', zero_mul]
148
- · rw [mul_comm a b, ← mul_assoc, h', zero_mul]
149
- · rintro ⟨ha, hb⟩ x hx
150
- apply ha
151
- apply hb
152
- rw [mul_assoc, hx]
142
+ end Nontrivial
153
143
154
- lemma IsUnit.mem_nonZeroDivisors {a : M} (ha : IsUnit a) : a ∈ M⁰ :=
155
- fun _ h ↦ ha.mul_left_eq_zero.mp h
144
+ section NoZeroDivisors
145
+ variable [NoZeroDivisors M₀]
156
146
157
- theorem eq_zero_of_ne_zero_of_mul_right_eq_zero [NoZeroDivisors M] {x y : M} (hnx : x ≠ 0 )
158
- (hxy : y * x = 0 ) : y = 0 :=
159
- Or.resolve_right (eq_zero_or_eq_zero_of_mul_eq_zero hxy) hnx
147
+ theorem eq_zero_of_ne_zero_of_mul_right_eq_zero (hx : x ≠ 0 ) (hxy : y * x = 0 ) : y = 0 :=
148
+ Or.resolve_right (eq_zero_or_eq_zero_of_mul_eq_zero hxy) hx
160
149
161
- theorem eq_zero_of_ne_zero_of_mul_left_eq_zero [NoZeroDivisors M] {x y : M} (hnx : x ≠ 0 )
162
- (hxy : x * y = 0 ) : y = 0 :=
163
- Or.resolve_left (eq_zero_or_eq_zero_of_mul_eq_zero hxy) hnx
150
+ theorem eq_zero_of_ne_zero_of_mul_left_eq_zero (hx : x ≠ 0 ) (hxy : x * y = 0 ) : y = 0 :=
151
+ Or.resolve_left (eq_zero_or_eq_zero_of_mul_eq_zero hxy) hx
164
152
165
- theorem mem_nonZeroDivisors_of_ne_zero [NoZeroDivisors M] {x : M} (hx : x ≠ 0 ) : x ∈ M⁰ := fun _ ↦
153
+ theorem mem_nonZeroDivisors_of_ne_zero (hx : x ≠ 0 ) : x ∈ M₀ ⁰ := fun _ ↦
166
154
eq_zero_of_ne_zero_of_mul_right_eq_zero hx
167
155
168
- @[simp] lemma mem_nonZeroDivisors_iff_ne_zero [NoZeroDivisors M] [Nontrivial M] {x : M} :
169
- x ∈ M⁰ ↔ x ≠ 0 := ⟨nonZeroDivisors.ne_zero, mem_nonZeroDivisors_of_ne_zero⟩
156
+ @[simp] lemma mem_nonZeroDivisors_iff_ne_zero [Nontrivial M₀] : x ∈ M₀⁰ ↔ x ≠ 0 :=
157
+ ⟨nonZeroDivisors.ne_zero, mem_nonZeroDivisors_of_ne_zero⟩
158
+
159
+ theorem le_nonZeroDivisors_of_noZeroDivisors {S : Submonoid M₀} (hS : (0 : M₀) ∉ S) :
160
+ S ≤ M₀⁰ := fun _ hx _ hy ↦
161
+ Or.recOn (eq_zero_or_eq_zero_of_mul_eq_zero hy) id fun h ↦
162
+ absurd (h ▸ hx : (0 : M₀) ∈ S) hS
163
+
164
+ theorem powers_le_nonZeroDivisors_of_noZeroDivisors (hx : x ≠ 0 ) : Submonoid.powers x ≤ M₀⁰ :=
165
+ le_nonZeroDivisors_of_noZeroDivisors fun h ↦ hx (h.recOn fun _ ↦ pow_eq_zero)
166
+
167
+ end NoZeroDivisors
170
168
171
- variable [FunLike F M M ']
169
+ variable [FunLike F M₀ M₀ ']
172
170
173
- theorem map_ne_zero_of_mem_nonZeroDivisors [Nontrivial M] [ZeroHomClass F M M '] (g : F)
174
- (hg : Function. Injective (g : M → M')) {x : M} (h : x ∈ M⁰) : g x ≠ 0 := fun h0 ↦
171
+ theorem map_ne_zero_of_mem_nonZeroDivisors [Nontrivial M₀ ] [ZeroHomClass F M₀ M₀ '] (g : F)
172
+ (hg : Injective (g : M₀ → M₀ ')) {x : M₀ } (h : x ∈ M₀ ⁰) : g x ≠ 0 := fun h0 ↦
175
173
one_ne_zero (h 1 ((one_mul x).symm ▸ hg (h0.trans (map_zero g).symm)))
176
174
177
- theorem map_mem_nonZeroDivisors [Nontrivial M] [NoZeroDivisors M'] [ZeroHomClass F M M '] (g : F)
178
- (hg : Function. Injective g) {x : M} (h : x ∈ M⁰) : g x ∈ M'⁰ := fun _ hz ↦
175
+ theorem map_mem_nonZeroDivisors [Nontrivial M₀ ] [NoZeroDivisors M₀ '] [ZeroHomClass F M₀ M₀ '] (g : F)
176
+ (hg : Injective g) {x : M₀ } (h : x ∈ M₀ ⁰) : g x ∈ M₀ '⁰ := fun _ hz ↦
179
177
eq_zero_of_ne_zero_of_mul_right_eq_zero (map_ne_zero_of_mem_nonZeroDivisors g hg h) hz
180
178
181
- theorem MulEquivClass.map_nonZeroDivisors {R S F : Type *} [MonoidWithZero R ] [MonoidWithZero S]
182
- [EquivLike F R S] [MulEquivClass F R S] (h : F) :
183
- Submonoid.map h (nonZeroDivisors R ) = nonZeroDivisors S := by
184
- let h : R ≃* S := h
179
+ theorem MulEquivClass.map_nonZeroDivisors {M₀ S F : Type *} [MonoidWithZero M₀ ] [MonoidWithZero S]
180
+ [EquivLike F M₀ S] [MulEquivClass F M₀ S] (h : F) :
181
+ Submonoid.map h (nonZeroDivisors M₀ ) = nonZeroDivisors S := by
182
+ let h : M₀ ≃* S := h
185
183
show Submonoid.map h.toMonoidHom _ = _
186
184
ext
187
185
simp_rw [Submonoid.map_equiv_eq_comap_symm, Submonoid.mem_comap, mem_nonZeroDivisors_iff,
188
186
← h.symm.forall_congr_right, h.symm.coe_toMonoidHom, h.symm.toEquiv_eq_coe, h.symm.coe_toEquiv,
189
187
← map_mul, map_eq_zero_iff _ h.symm.injective]
190
188
191
- theorem le_nonZeroDivisors_of_noZeroDivisors [NoZeroDivisors M] {S : Submonoid M}
192
- (hS : (0 : M) ∉ S) : S ≤ M⁰ := fun _ hx _ hy ↦
193
- Or.recOn (eq_zero_or_eq_zero_of_mul_eq_zero hy) id fun h ↦
194
- absurd (h ▸ hx : (0 : M) ∈ S) hS
195
-
196
- theorem powers_le_nonZeroDivisors_of_noZeroDivisors [NoZeroDivisors M] {a : M} (ha : a ≠ 0 ) :
197
- Submonoid.powers a ≤ M⁰ :=
198
- le_nonZeroDivisors_of_noZeroDivisors fun h ↦ absurd (h.recOn fun _ hn ↦ pow_eq_zero hn) ha
199
-
200
- theorem map_le_nonZeroDivisors_of_injective [NoZeroDivisors M'] [MonoidWithZeroHomClass F M M']
201
- (f : F) (hf : Function.Injective f) {S : Submonoid M} (hS : S ≤ M⁰) : S.map f ≤ M'⁰ := by
202
- cases subsingleton_or_nontrivial M
189
+ theorem map_le_nonZeroDivisors_of_injective [NoZeroDivisors M₀'] [MonoidWithZeroHomClass F M₀ M₀']
190
+ (f : F) (hf : Injective f) {S : Submonoid M₀} (hS : S ≤ M₀⁰) : S.map f ≤ M₀'⁰ := by
191
+ cases subsingleton_or_nontrivial M₀
203
192
· simp [Subsingleton.elim S ⊥]
204
- · exact le_nonZeroDivisors_of_noZeroDivisors fun h ↦
205
- let ⟨x, hx, hx0⟩ := h
206
- zero_ne_one ( hS (hf (hx0.trans (map_zero f).symm) ▸ hx : 0 ∈ S) 1 (mul_zero 1 )).symm
193
+ · refine le_nonZeroDivisors_of_noZeroDivisors ?_
194
+ rintro ⟨x, hx, hx0⟩
195
+ exact one_ne_zero <| hS (hf (hx0.trans (map_zero f).symm) ▸ hx : 0 ∈ S) 1 (mul_zero 1 )
207
196
208
- theorem nonZeroDivisors_le_comap_nonZeroDivisors_of_injective [NoZeroDivisors M']
209
- [MonoidWithZeroHomClass F M M '] (f : F) (hf : Function. Injective f) : M⁰ ≤ M'⁰.comap f :=
197
+ theorem nonZeroDivisors_le_comap_nonZeroDivisors_of_injective [NoZeroDivisors M₀ ']
198
+ [MonoidWithZeroHomClass F M₀ M₀ '] (f : F) (hf : Injective f) : M₀ ⁰ ≤ M₀ '⁰.comap f :=
210
199
Submonoid.le_comap_of_map_le _ (map_le_nonZeroDivisors_of_injective _ hf le_rfl)
211
200
212
201
/-- If an element maps to a non-zero-divisor via injective homomorphism,
213
- then it is non-zero-divisor. -/
214
- theorem mem_nonZeroDivisors_of_injective [MonoidWithZeroHomClass F M M '] {f : F}
215
- (hf : Function. Injective f) {a : M} (ha : f a ∈ M'⁰) : a ∈ M⁰ :=
216
- fun x hx ↦ hf <| map_zero f ▸ ha (f x ) (map_mul f x a ▸ map_zero f ▸ congrArg f hx )
202
+ then it is a non-zero-divisor. -/
203
+ theorem mem_nonZeroDivisors_of_injective [MonoidWithZeroHomClass F M₀ M₀ '] {f : F}
204
+ (hf : Injective f) (hx : f x ∈ M₀ '⁰) : x ∈ M₀ ⁰ :=
205
+ fun y hy ↦ hf <| map_zero f ▸ hx (f y ) (map_mul f y x ▸ map_zero f ▸ congrArg f hy )
217
206
218
207
@[deprecated (since := "2025-02-03")]
219
208
alias mem_nonZeroDivisor_of_injective := mem_nonZeroDivisors_of_injective
220
209
221
- theorem comap_nonZeroDivisors_le_of_injective [MonoidWithZeroHomClass F M M '] {f : F}
222
- (hf : Function. Injective f) : M'⁰.comap f ≤ M⁰ :=
210
+ theorem comap_nonZeroDivisors_le_of_injective [MonoidWithZeroHomClass F M₀ M₀ '] {f : F}
211
+ (hf : Injective f) : M₀ '⁰.comap f ≤ M₀ ⁰ :=
223
212
fun _ ha ↦ mem_nonZeroDivisors_of_injective hf (Submonoid.mem_comap.mp ha)
224
213
225
214
@[deprecated (since := "2025-02-03")]
226
215
alias comap_nonZeroDivisor_le_of_injective := comap_nonZeroDivisors_le_of_injective
227
216
228
217
end MonoidWithZero
229
218
219
+ section CommMonoidWithZero
220
+ variable {M₀ : Type *} [CommMonoidWithZero M₀] {a b r x : M₀}
221
+
222
+ lemma mul_left_mem_nonZeroDivisors_eq_zero_iff (hr : r ∈ M₀⁰) : r * x = 0 ↔ x = 0 := by
223
+ rw [mul_comm, mul_right_mem_nonZeroDivisors_eq_zero_iff hr]
224
+
225
+ @[simp]
226
+ lemma mul_left_coe_nonZeroDivisors_eq_zero_iff {c : M₀⁰} : (c : M₀) * x = 0 ↔ x = 0 :=
227
+ mul_left_mem_nonZeroDivisors_eq_zero_iff c.prop
228
+
229
+ lemma mul_mem_nonZeroDivisors : a * b ∈ M₀⁰ ↔ a ∈ M₀⁰ ∧ b ∈ M₀⁰ where
230
+ mp h := by
231
+ constructor <;> intro x h' <;> apply h
232
+ · rw [← mul_assoc, h', zero_mul]
233
+ · rw [mul_comm a b, ← mul_assoc, h', zero_mul]
234
+ mpr := by
235
+ rintro ⟨ha, hb⟩ x hx
236
+ apply ha
237
+ apply hb
238
+ rw [mul_assoc, hx]
239
+
240
+ end CommMonoidWithZero
241
+
230
242
section GroupWithZero
231
243
variable {G₀ : Type *} [GroupWithZero G₀] {x : G₀}
232
244
@@ -248,21 +260,21 @@ section nonZeroSMulDivisors
248
260
249
261
open nonZeroSMulDivisors nonZeroDivisors
250
262
251
- variable {R M : Type *} [MonoidWithZero R ] [Zero M] [MulAction R M]
263
+ variable {M₀ M : Type *} [MonoidWithZero M₀ ] [Zero M] [MulAction M₀ M] {x : M₀}
252
264
253
- lemma mem_nonZeroSMulDivisors_iff {x : R} : x ∈ R ⁰[M] ↔ ∀ (m : M), x • m = 0 → m = 0 := Iff.rfl
265
+ lemma mem_nonZeroSMulDivisors_iff : x ∈ M₀ ⁰[M] ↔ ∀ (m : M), x • m = 0 → m = 0 := Iff.rfl
254
266
255
- variable (R )
267
+ variable (M₀ )
256
268
257
269
@[simp]
258
270
lemma unop_nonZeroSMulDivisors_mulOpposite_eq_nonZeroDivisors :
259
- (Rᵐᵒᵖ ⁰[R ]).unop = R ⁰ := rfl
271
+ (M₀ᵐᵒᵖ ⁰[M₀ ]).unop = M₀ ⁰ := rfl
260
272
261
273
/-- The non-zero `•`-divisors with `•` as right multiplication correspond with the non-zero
262
274
divisors. Note that the `MulOpposite` is needed because we defined `nonZeroDivisors` with
263
275
multiplication on the right. -/
264
276
lemma nonZeroSMulDivisors_mulOpposite_eq_op_nonZeroDivisors :
265
- Rᵐᵒᵖ ⁰[R ] = R ⁰.op := rfl
277
+ M₀ᵐᵒᵖ ⁰[M₀ ] = M₀ ⁰.op := rfl
266
278
267
279
end nonZeroSMulDivisors
268
280
0 commit comments