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
Scalar multiplication by natural numbers.
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.
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 by integers is distributive over addition in the module.
Scalar multiplication by natural numbers is consistent with scalar multiplication by integers.
Instances
Equations
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
.
Instances
Alternative constructor for NoNatZeroDivisors
when we have an IntModule
.