A module over the natural numbers, i.e. a type with zero, addition, and scalar multiplication by natural numbers, satisfying appropriate compatibilities.
Equivalently, an additive commutative monoid.
Use IntModule
if the type has negation.
- zero : M
- add : M → M → M
Zero is the right identity for addition.
Addition is commutative.
Addition is associative.
Scalar multiplication by zero is zero.
Scalar multiplication by one is the identity.
Scalar multiplication is distributive over addition in the natural numbers.
Scalar multiplication of zero is zero.
Scalar multiplication is distributive over addition in the module.
Instances
A module over the integers, i.e. a type with zero, addition, negation, subtraction, and scalar multiplication by integers, satisfying appropriate compatibilities.
Equivalently, an additive commutative group.
- zero : M
- add : M → M → M
- neg : M → M
- sub : M → M → M
Scalar multiplication by natural numbers.
Scalar multiplication by integers.
Zero is the right identity for addition.
Addition is commutative.
Addition is associative.
Scalar multiplication by zero is zero.
Scalar multiplication by one is the identity.
Scalar multiplication is distributive over addition in the integers.
Scalar multiplication of zero is zero.
Scalar multiplication is distributive over addition in the module.
Negation is the left inverse of addition.
Subtraction is addition of the negative.
Scalar multiplication by natural numbers is consistent with scalar multiplication by integers.
Instances
Equations
- One or more equations did not get rendered due to their size.
We say a module has no natural number zero divisors if
k ≠ 0
and k * a = k * b
implies a = b
(here k
is a natural number and a
and b
are element of the module).
For a module over the integers this is equivalent to
k ≠ 0
and k * a = 0
implies a = 0
.
(See the alternative constructor NoNatZeroDivisors.mk'
,
and the theorem eq_zero_of_mul_eq_zero
.)
If
k * a ≠ k * b
thenk ≠ 0
ora ≠ b
.