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.
Instance Constructor
Lean.Grind.NatModule.mk.{u}
Extends
Methods
zero : M
add : M → M → M
hMul : Nat → M → M
add_zero : ∀ (a : M), a + 0 = a
Zero is the right identity for addition.
add_comm : ∀ (a b : M), a + b = b + a
Addition is commutative.
add_assoc : ∀ (a b c : M), a + b + c = a + (b + c)
Addition is associative.
zero_hmul : ∀ (a : M), 0 * a = 0
Scalar multiplication by zero is zero.
one_hmul : ∀ (a : M), 1 * a = a
Scalar multiplication by one is the identity.
add_hmul : ∀ (n m : Nat) (a : M), (n + m) * a = n * a + m * a
Scalar multiplication is distributive over addition in the natural numbers.
hmul_zero : ∀ (n : Nat), n * 0 = 0
Scalar multiplication of zero is zero.
hmul_add : ∀ (n : Nat) (a b : M), n * (a + b) = n * a + n * b
Scalar multiplication is distributive over addition in the module.