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 PNatPowAssoc, where PNat means only strictly positive
powers are considered.
Results #
ppow_adda defining property:x ^ (k + n) = x ^ k * x ^ nppow_onea defining property:x ^ 1 = xppow_assocstrictly positive powers of an element have associative multiplication.ppow_commx ^ m * x ^ n = x ^ n * x ^ mfor strictly positivemandn.ppow_mulx ^ (m * n) = (x ^ m) ^ nfor strictly positivemandn.ppow_eq_powmonoid exponentiation coincides with semigroup exponentiation.
Instances #
- PNatPowAssoc for products and Pi types
TODO #
NatPowAssocforMulOneClass- more or less the same flow- It seems unlikely that anyone will want
NatSMulAssocandPNatSMulAssocas additive versions of power-associativity, but we have found that it is not hard to write.
A Prop-valued mixin for power-associative multiplication in the non-unital setting.
Multiplication is power-associative.
Exponent one is identity.
Instances
instance
Pi.instPNatPowAssoc
{ι : Type u_2}
{α : ι → Type u_3}
[(i : ι) → Mul (α i)]
[(i : ι) → Pow (α i) ℕ+]
[∀ (i : ι), PNatPowAssoc (α i)]
:
PNatPowAssoc ((i : ι) → α i)
instance
Prod.instPNatPowAssoc
{M : Type u_1}
{N : Type u_2}
[Mul M]
[Pow M ℕ+]
[PNatPowAssoc M]
[Mul N]
[Pow N ℕ+]
[PNatPowAssoc N]
:
PNatPowAssoc (M × N)