Typeclasses for power-associative structures #
In this file we define power-associativity for algebraic structures with a multiplication operation.
The class is a Prop-valued mixin named NatPowAssoc
.
Results #
npow_add
a defining property:x ^ (k + n) = x ^ k * x ^ n
npow_one
a defining property:x ^ 1 = x
npow_assoc
strictly positive powers of an element have associative multiplication.npow_comm
x ^ m * x ^ n = x ^ n * x ^ m
for strictly positivem
andn
.npow_mul
x ^ (m * n) = (x ^ m) ^ n
for strictly positivem
andn
.npow_eq_pow
monoid exponentiation coincides with semigroup exponentiation.
Instances #
We also produce the following instances:
NatPowAssoc
for Monoids, Pi types and products.
Todo #
- to_additive?
A mixin for power-associative multiplication.
Multiplication is power-associative.
Exponent zero is one.
Exponent one is identity.
Instances
@[simp]
@[simp]
instance
Pi.instNatPowAssoc
{ι : Type u_2}
{α : ι → Type u_3}
[(i : ι) → MulOneClass (α i)]
[(i : ι) → Pow (α i) ℕ]
[∀ (i : ι), NatPowAssoc (α i)]
:
NatPowAssoc ((i : ι) → α i)
Equations
- (_ : NatPowAssoc ((i : ι) → α i)) = (_ : NatPowAssoc ((i : ι) → α i))
instance
Prod.instNatPowAssoc
{M : Type u_1}
{N : Type u_2}
[MulOneClass M]
[Pow M ℕ]
[NatPowAssoc M]
[MulOneClass N]
[Pow N ℕ]
[NatPowAssoc N]
:
NatPowAssoc (M × N)
Equations
- (_ : NatPowAssoc (M × N)) = (_ : NatPowAssoc (M × N))
Equations
- (_ : NatPowAssoc M) = (_ : NatPowAssoc M)
@[simp]
theorem
Nat.cast_npow
(R : Type u_2)
[NonAssocSemiring R]
[Pow R ℕ]
[NatPowAssoc R]
(n : ℕ)
(m : ℕ)
:
@[simp]