The power operator on ℤˣ by ZMod 2, ℕ, and ℤ #
See also the related negOnePow.
TODO #
Implementation notes #
In future, we could consider a LawfulPower M R typeclass; but we can save ourselves a lot of work
by using Module R (Additive M) in its place, especially since this already has instances for
R = ℕ and R = ℤ.
@[instance_reducible]
Equations
- instSMulZModOfNatNatAdditiveUnitsInt = { smul := fun (z : ZMod 2) (au : Additive ℤˣ) => Additive.ofMul (Additive.toMul au ^ z.val) }
@[instance_reducible]
There is a canonical power operation on ℤˣ by R if Additive ℤˣ is an R-module.
In lemma names, this operation is called uzpow to match zpow.
Notably this is satisfied by R ∈ {ℕ, ℤ, ZMod 2}.
Equations
- Int.instUnitsPow = { pow := fun (u : ℤˣ) (r : R) => Additive.toMul (r • Additive.ofMul u) }
@[simp]
@[simp]
theorem toMul_uzpow {R : Type u_1} [CommSemiring R] [Module R (Additive ℤˣ)] (u : Additive ℤˣ) (r : R) :
theorem uzpow_coe_nat {R : Type u_1} [CommSemiring R] [Module R (Additive ℤˣ)] (s : ℤˣ) (n : ℕ) [n.AtLeastTwo] :