Skip to content

Commit de15078

Browse files
authored
Standardize scalar multiplication on all sorts of rings (#1707)
We had multiple competing definitions for rings, and many of the definitions didn't use the perfectly applicable definition of multiples for abelian groups...this is an attempt to standardize. (I ran into this while working on #1700.)
1 parent 01327a7 commit de15078

32 files changed

+1076
-714
lines changed

src/commutative-algebra.lagda.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ open import commutative-algebra.large-commutative-rings public
4242
open import commutative-algebra.local-commutative-rings public
4343
open import commutative-algebra.maximal-ideals-commutative-rings public
4444
open import commutative-algebra.multiples-of-elements-commutative-rings public
45+
open import commutative-algebra.multiples-of-elements-commutative-semirings public
46+
open import commutative-algebra.multiples-of-elements-euclidean-domains public
47+
open import commutative-algebra.multiples-of-elements-integral-domains public
4548
open import commutative-algebra.nilradical-commutative-rings public
4649
open import commutative-algebra.nilradicals-commutative-semirings public
4750
open import commutative-algebra.polynomials-commutative-rings public

src/commutative-algebra/binomial-theorem-commutative-rings.lagda.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ module commutative-algebra.binomial-theorem-commutative-rings where
99
```agda
1010
open import commutative-algebra.binomial-theorem-commutative-semirings
1111
open import commutative-algebra.commutative-rings
12+
open import commutative-algebra.multiples-of-elements-commutative-rings
1213
open import commutative-algebra.powers-of-elements-commutative-rings
1314
open import commutative-algebra.sums-of-finite-sequences-of-elements-commutative-rings
1415
@@ -168,7 +169,7 @@ is-linear-combination-power-add-Commutative-Ring :
168169
( power-Commutative-Ring A m y)
169170
( sum-fin-sequence-type-Commutative-Ring A n
170171
( λ i →
171-
mul-nat-scalar-Commutative-Ring A
172+
multiple-Commutative-Ring A
172173
( binomial-coefficient-ℕ (n +ℕ m) (nat-Fin n i))
173174
( mul-Commutative-Ring A
174175
( power-Commutative-Ring A (nat-Fin n i) x)
@@ -178,7 +179,7 @@ is-linear-combination-power-add-Commutative-Ring :
178179
( sum-fin-sequence-type-Commutative-Ring A
179180
( succ-ℕ m)
180181
( λ i →
181-
mul-nat-scalar-Commutative-Ring A
182+
multiple-Commutative-Ring A
182183
( binomial-coefficient-ℕ
183184
( n +ℕ m)
184185
( n +ℕ (nat-Fin (succ-ℕ m) i)))

src/commutative-algebra/binomial-theorem-commutative-semirings.lagda.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ module commutative-algebra.binomial-theorem-commutative-semirings where
88

99
```agda
1010
open import commutative-algebra.commutative-semirings
11+
open import commutative-algebra.multiples-of-elements-commutative-semirings
1112
open import commutative-algebra.powers-of-elements-commutative-semirings
1213
open import commutative-algebra.sums-of-finite-sequences-of-elements-commutative-semirings
1314
@@ -167,7 +168,7 @@ is-linear-combination-power-add-Commutative-Semiring :
167168
( power-Commutative-Semiring A m y)
168169
( sum-fin-sequence-type-Commutative-Semiring A n
169170
( λ i →
170-
mul-nat-scalar-Commutative-Semiring A
171+
multiple-Commutative-Semiring A
171172
( binomial-coefficient-ℕ (n +ℕ m) (nat-Fin n i))
172173
( mul-Commutative-Semiring A
173174
( power-Commutative-Semiring A (nat-Fin n i) x)
@@ -177,7 +178,7 @@ is-linear-combination-power-add-Commutative-Semiring :
177178
( sum-fin-sequence-type-Commutative-Semiring A
178179
( succ-ℕ m)
179180
( λ i →
180-
mul-nat-scalar-Commutative-Semiring A
181+
multiple-Commutative-Semiring A
181182
( binomial-coefficient-ℕ
182183
( n +ℕ m)
183184
( n +ℕ (nat-Fin (succ-ℕ m) i)))

src/commutative-algebra/commutative-rings.lagda.md

Lines changed: 0 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -583,74 +583,6 @@ module _
583583
right-distributive-mul-right-subtraction-Ring ring-Commutative-Ring
584584
```
585585

586-
### Scalar multiplication of elements of a commutative ring by natural numbers
587-
588-
```agda
589-
mul-nat-scalar-Commutative-Ring :
590-
ℕ → type-Commutative-Ring → type-Commutative-Ring
591-
mul-nat-scalar-Commutative-Ring =
592-
mul-nat-scalar-Ring ring-Commutative-Ring
593-
594-
ap-mul-nat-scalar-Commutative-Ring :
595-
{m n : ℕ} {x y : type-Commutative-Ring} →
596-
(m = n) → (x = y) →
597-
mul-nat-scalar-Commutative-Ring m x =
598-
mul-nat-scalar-Commutative-Ring n y
599-
ap-mul-nat-scalar-Commutative-Ring =
600-
ap-mul-nat-scalar-Ring ring-Commutative-Ring
601-
602-
left-zero-law-mul-nat-scalar-Commutative-Ring :
603-
(x : type-Commutative-Ring) →
604-
mul-nat-scalar-Commutative-Ring 0 x = zero-Commutative-Ring
605-
left-zero-law-mul-nat-scalar-Commutative-Ring =
606-
left-zero-law-mul-nat-scalar-Ring ring-Commutative-Ring
607-
608-
right-zero-law-mul-nat-scalar-Commutative-Ring :
609-
(n : ℕ) →
610-
mul-nat-scalar-Commutative-Ring n zero-Commutative-Ring =
611-
zero-Commutative-Ring
612-
right-zero-law-mul-nat-scalar-Commutative-Ring =
613-
right-zero-law-mul-nat-scalar-Ring ring-Commutative-Ring
614-
615-
left-unit-law-mul-nat-scalar-Commutative-Ring :
616-
(x : type-Commutative-Ring) →
617-
mul-nat-scalar-Commutative-Ring 1 x = x
618-
left-unit-law-mul-nat-scalar-Commutative-Ring =
619-
left-unit-law-mul-nat-scalar-Ring ring-Commutative-Ring
620-
621-
left-nat-scalar-law-mul-Commutative-Ring :
622-
(n : ℕ) (x y : type-Commutative-Ring) →
623-
mul-Commutative-Ring (mul-nat-scalar-Commutative-Ring n x) y =
624-
mul-nat-scalar-Commutative-Ring n (mul-Commutative-Ring x y)
625-
left-nat-scalar-law-mul-Commutative-Ring =
626-
left-nat-scalar-law-mul-Ring ring-Commutative-Ring
627-
628-
right-nat-scalar-law-mul-Commutative-Ring :
629-
(n : ℕ) (x y : type-Commutative-Ring) →
630-
mul-Commutative-Ring x (mul-nat-scalar-Commutative-Ring n y) =
631-
mul-nat-scalar-Commutative-Ring n (mul-Commutative-Ring x y)
632-
right-nat-scalar-law-mul-Commutative-Ring =
633-
right-nat-scalar-law-mul-Ring ring-Commutative-Ring
634-
635-
left-distributive-mul-nat-scalar-add-Commutative-Ring :
636-
(n : ℕ) (x y : type-Commutative-Ring) →
637-
mul-nat-scalar-Commutative-Ring n (add-Commutative-Ring x y) =
638-
add-Commutative-Ring
639-
( mul-nat-scalar-Commutative-Ring n x)
640-
( mul-nat-scalar-Commutative-Ring n y)
641-
left-distributive-mul-nat-scalar-add-Commutative-Ring =
642-
left-distributive-mul-nat-scalar-add-Ring ring-Commutative-Ring
643-
644-
right-distributive-mul-nat-scalar-add-Commutative-Ring :
645-
(m n : ℕ) (x : type-Commutative-Ring) →
646-
mul-nat-scalar-Commutative-Ring (m +ℕ n) x =
647-
add-Commutative-Ring
648-
( mul-nat-scalar-Commutative-Ring m x)
649-
( mul-nat-scalar-Commutative-Ring n x)
650-
right-distributive-mul-nat-scalar-add-Commutative-Ring =
651-
right-distributive-mul-nat-scalar-add-Ring ring-Commutative-Ring
652-
```
653-
654586
### Addition of a list of elements in a commutative ring
655587

656588
```agda

src/commutative-algebra/commutative-semirings.lagda.md

Lines changed: 0 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -283,73 +283,3 @@ module _
283283
( commutative-mul-Commutative-Semiring)
284284
( associative-mul-Commutative-Semiring)
285285
```
286-
287-
## Operations
288-
289-
### Scalar multiplication of elements of a commutative ring by natural numbers
290-
291-
```agda
292-
mul-nat-scalar-Commutative-Semiring :
293-
ℕ → type-Commutative-Semiring → type-Commutative-Semiring
294-
mul-nat-scalar-Commutative-Semiring =
295-
mul-nat-scalar-Semiring semiring-Commutative-Semiring
296-
297-
ap-mul-nat-scalar-Commutative-Semiring :
298-
{m n : ℕ} {x y : type-Commutative-Semiring} →
299-
(m = n) → (x = y) →
300-
mul-nat-scalar-Commutative-Semiring m x =
301-
mul-nat-scalar-Commutative-Semiring n y
302-
ap-mul-nat-scalar-Commutative-Semiring =
303-
ap-mul-nat-scalar-Semiring semiring-Commutative-Semiring
304-
305-
left-zero-law-mul-nat-scalar-Commutative-Semiring :
306-
(x : type-Commutative-Semiring) →
307-
mul-nat-scalar-Commutative-Semiring 0 x = zero-Commutative-Semiring
308-
left-zero-law-mul-nat-scalar-Commutative-Semiring =
309-
left-zero-law-mul-nat-scalar-Semiring semiring-Commutative-Semiring
310-
311-
right-zero-law-mul-nat-scalar-Commutative-Semiring :
312-
(n : ℕ) →
313-
mul-nat-scalar-Commutative-Semiring n zero-Commutative-Semiring =
314-
zero-Commutative-Semiring
315-
right-zero-law-mul-nat-scalar-Commutative-Semiring =
316-
right-zero-law-mul-nat-scalar-Semiring semiring-Commutative-Semiring
317-
318-
left-unit-law-mul-nat-scalar-Commutative-Semiring :
319-
(x : type-Commutative-Semiring) →
320-
mul-nat-scalar-Commutative-Semiring 1 x = x
321-
left-unit-law-mul-nat-scalar-Commutative-Semiring =
322-
left-unit-law-mul-nat-scalar-Semiring semiring-Commutative-Semiring
323-
324-
left-nat-scalar-law-mul-Commutative-Semiring :
325-
(n : ℕ) (x y : type-Commutative-Semiring) →
326-
mul-Commutative-Semiring (mul-nat-scalar-Commutative-Semiring n x) y =
327-
mul-nat-scalar-Commutative-Semiring n (mul-Commutative-Semiring x y)
328-
left-nat-scalar-law-mul-Commutative-Semiring =
329-
left-nat-scalar-law-mul-Semiring semiring-Commutative-Semiring
330-
331-
right-nat-scalar-law-mul-Commutative-Semiring :
332-
(n : ℕ) (x y : type-Commutative-Semiring) →
333-
mul-Commutative-Semiring x (mul-nat-scalar-Commutative-Semiring n y) =
334-
mul-nat-scalar-Commutative-Semiring n (mul-Commutative-Semiring x y)
335-
right-nat-scalar-law-mul-Commutative-Semiring =
336-
right-nat-scalar-law-mul-Semiring semiring-Commutative-Semiring
337-
338-
left-distributive-mul-nat-scalar-add-Commutative-Semiring :
339-
(n : ℕ) (x y : type-Commutative-Semiring) →
340-
mul-nat-scalar-Commutative-Semiring n (add-Commutative-Semiring x y) =
341-
add-Commutative-Semiring
342-
( mul-nat-scalar-Commutative-Semiring n x)
343-
( mul-nat-scalar-Commutative-Semiring n y)
344-
left-distributive-mul-nat-scalar-add-Commutative-Semiring =
345-
left-distributive-mul-nat-scalar-add-Semiring semiring-Commutative-Semiring
346-
347-
right-distributive-mul-nat-scalar-add-Commutative-Semiring :
348-
(m n : ℕ) (x : type-Commutative-Semiring) →
349-
mul-nat-scalar-Commutative-Semiring (m +ℕ n) x =
350-
add-Commutative-Semiring
351-
( mul-nat-scalar-Commutative-Semiring m x)
352-
( mul-nat-scalar-Commutative-Semiring n x)
353-
right-distributive-mul-nat-scalar-add-Commutative-Semiring =
354-
right-distributive-mul-nat-scalar-add-Semiring semiring-Commutative-Semiring
355-
```

src/commutative-algebra/euclidean-domains.lagda.md

Lines changed: 3 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,9 @@ open import ring-theory.semirings
5252

5353
## Idea
5454

55-
A **Euclidean domain** is an
56-
[integral domain](commutative-algebra.integral-domains.md) `R` that has a
55+
A
56+
{{#concept "Euclidean domain" Agda=Euclidean-Domain WDID=Q867345 WD="Euclidean domain"}}
57+
is an [integral domain](commutative-algebra.integral-domains.md) `R` that has a
5758
**Euclidean valuation**, i.e., a function `v : R → ℕ` such that for every
5859
`x y : R`, if `y` is nonzero then there are `q r : R` with `x = q y + r` and
5960
`v r < v y`.
@@ -544,83 +545,6 @@ module _
544545
integral-domain-Euclidean-Domain
545546
```
546547

547-
### Scalar multiplication of elements of a Euclidean domain by natural numbers
548-
549-
```agda
550-
mul-nat-scalar-Euclidean-Domain :
551-
ℕ → type-Euclidean-Domain → type-Euclidean-Domain
552-
mul-nat-scalar-Euclidean-Domain =
553-
mul-nat-scalar-Integral-Domain
554-
integral-domain-Euclidean-Domain
555-
556-
ap-mul-nat-scalar-Euclidean-Domain :
557-
{m n : ℕ} {x y : type-Euclidean-Domain} →
558-
(m = n) → (x = y) →
559-
mul-nat-scalar-Euclidean-Domain m x =
560-
mul-nat-scalar-Euclidean-Domain n y
561-
ap-mul-nat-scalar-Euclidean-Domain =
562-
ap-mul-nat-scalar-Integral-Domain
563-
integral-domain-Euclidean-Domain
564-
565-
left-zero-law-mul-nat-scalar-Euclidean-Domain :
566-
(x : type-Euclidean-Domain) →
567-
mul-nat-scalar-Euclidean-Domain 0 x = zero-Euclidean-Domain
568-
left-zero-law-mul-nat-scalar-Euclidean-Domain =
569-
left-zero-law-mul-nat-scalar-Integral-Domain
570-
integral-domain-Euclidean-Domain
571-
572-
right-zero-law-mul-nat-scalar-Euclidean-Domain :
573-
(n : ℕ) →
574-
mul-nat-scalar-Euclidean-Domain n zero-Euclidean-Domain =
575-
zero-Euclidean-Domain
576-
right-zero-law-mul-nat-scalar-Euclidean-Domain =
577-
right-zero-law-mul-nat-scalar-Integral-Domain
578-
integral-domain-Euclidean-Domain
579-
580-
left-unit-law-mul-nat-scalar-Euclidean-Domain :
581-
(x : type-Euclidean-Domain) →
582-
mul-nat-scalar-Euclidean-Domain 1 x = x
583-
left-unit-law-mul-nat-scalar-Euclidean-Domain =
584-
left-unit-law-mul-nat-scalar-Integral-Domain
585-
integral-domain-Euclidean-Domain
586-
587-
left-nat-scalar-law-mul-Euclidean-Domain :
588-
(n : ℕ) (x y : type-Euclidean-Domain) →
589-
mul-Euclidean-Domain (mul-nat-scalar-Euclidean-Domain n x) y =
590-
mul-nat-scalar-Euclidean-Domain n (mul-Euclidean-Domain x y)
591-
left-nat-scalar-law-mul-Euclidean-Domain =
592-
left-nat-scalar-law-mul-Integral-Domain
593-
integral-domain-Euclidean-Domain
594-
595-
right-nat-scalar-law-mul-Euclidean-Domain :
596-
(n : ℕ) (x y : type-Euclidean-Domain) →
597-
mul-Euclidean-Domain x (mul-nat-scalar-Euclidean-Domain n y) =
598-
mul-nat-scalar-Euclidean-Domain n (mul-Euclidean-Domain x y)
599-
right-nat-scalar-law-mul-Euclidean-Domain =
600-
right-nat-scalar-law-mul-Integral-Domain
601-
integral-domain-Euclidean-Domain
602-
603-
left-distributive-mul-nat-scalar-add-Euclidean-Domain :
604-
(n : ℕ) (x y : type-Euclidean-Domain) →
605-
mul-nat-scalar-Euclidean-Domain n (add-Euclidean-Domain x y) =
606-
add-Euclidean-Domain
607-
( mul-nat-scalar-Euclidean-Domain n x)
608-
( mul-nat-scalar-Euclidean-Domain n y)
609-
left-distributive-mul-nat-scalar-add-Euclidean-Domain =
610-
left-distributive-mul-nat-scalar-add-Integral-Domain
611-
integral-domain-Euclidean-Domain
612-
613-
right-distributive-mul-nat-scalar-add-Euclidean-Domain :
614-
(m n : ℕ) (x : type-Euclidean-Domain) →
615-
mul-nat-scalar-Euclidean-Domain (m +ℕ n) x =
616-
add-Euclidean-Domain
617-
( mul-nat-scalar-Euclidean-Domain m x)
618-
( mul-nat-scalar-Euclidean-Domain n x)
619-
right-distributive-mul-nat-scalar-add-Euclidean-Domain =
620-
right-distributive-mul-nat-scalar-add-Integral-Domain
621-
integral-domain-Euclidean-Domain
622-
```
623-
624548
### Addition of a list of elements in a Euclidean domain
625549

626550
```agda

src/commutative-algebra/integer-multiples-of-elements-commutative-rings.lagda.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,10 @@ module _
119119
{l : Level} (A : Commutative-Ring l) (a : type-Commutative-Ring A)
120120
where
121121
122-
integer-multiple-zero-Commutative-Ring :
122+
integer-right-zero-law-multiple-Commutative-Ring :
123123
integer-multiple-Commutative-Ring A zero-ℤ a = zero-Commutative-Ring A
124-
integer-multiple-zero-Commutative-Ring =
125-
integer-multiple-zero-Ring (ring-Commutative-Ring A) a
124+
integer-right-zero-law-multiple-Commutative-Ring =
125+
left-zero-law-integer-multiple-Ring (ring-Commutative-Ring A) a
126126
```
127127

128128
### `1x = x`

0 commit comments

Comments
 (0)