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)