File: Mathlib/Algebra/Group/NatPowAssoc.lean

full_name: NatPowAssoc.npow_one
code: /-- A mixin for power-associative multiplication. -/
class NatPowAssoc (M : Type*) [MulOneClass M] [Pow M ℕ] : Prop where
  /-- Multiplication is power-associative. -/
  protected npow_add : ∀ (k n : ℕ) (x : M), x ^ (k + n) = x ^ k * x ^ n
  /-- Exponent zero is one. -/
  protected npow_zero : ∀ (x : M), x ^ 0 = 1
  /-- Exponent one is identity. -/
  protected npow_one : ∀ (x : M), x ^ 1 = x
goal: x ^ 1 = x

full_name: NatPowAssoc
code: /-- A mixin for power-associative multiplication. -/
class NatPowAssoc (M : Type*) [MulOneClass M] [Pow M ℕ] : Prop where
  /-- Multiplication is power-associative. -/
  protected npow_add : ∀ (k n : ℕ) (x : M), x ^ (k + n) = x ^ k * x ^ n
  /-- Exponent zero is one. -/
  protected npow_zero : ∀ (x : M), x ^ 0 = 1
  /-- Exponent one is identity. -/
  protected npow_one : ∀ (x : M), x ^ 1 = x
goal: Prop

full_name: NatPowAssoc.npow_zero
code: /-- A mixin for power-associative multiplication. -/
class NatPowAssoc (M : Type*) [MulOneClass M] [Pow M ℕ] : Prop where
  /-- Multiplication is power-associative. -/
  protected npow_add : ∀ (k n : ℕ) (x : M), x ^ (k + n) = x ^ k * x ^ n
  /-- Exponent zero is one. -/
  protected npow_zero : ∀ (x : M), x ^ 0 = 1
  /-- Exponent one is identity. -/
  protected npow_one : ∀ (x : M), x ^ 1 = x
goal: x ^ 0 = 1

full_name: NatPowAssoc.npow_add
code: /-- A mixin for power-associative multiplication. -/
class NatPowAssoc (M : Type*) [MulOneClass M] [Pow M ℕ] : Prop where
  /-- Multiplication is power-associative. -/
  protected npow_add : ∀ (k n : ℕ) (x : M), x ^ (k + n) = x ^ k * x ^ n
  /-- Exponent zero is one. -/
  protected npow_zero : ∀ (x : M), x ^ 0 = 1
  /-- Exponent one is identity. -/
  protected npow_one : ∀ (x : M), x ^ 1 = x
goal: x ^ (k + n) = x ^ k * x ^ n

full_name: npow_add
code: theorem npow_add (k n : ℕ) (x : M) : x ^ (k + n) = x ^ k * x ^ n  
goal: x ^ (k + n) = x ^ k * x ^ n

full_name: npow_zero
code: @[simp]
theorem npow_zero (x : M) : x ^ 0 = 1 
goal: x ^ 0 = 1

full_name: npow_one
code: @[simp]
theorem npow_one (x : M) : x ^ 1 = x 
goal: x ^ 1 = x

full_name: npow_mul_assoc
code: theorem npow_mul_assoc (k m n : ℕ) (x : M) :
    (x ^ k * x ^ m) * x ^ n = x ^ k * (x ^ m * x ^ n) 
goal: x ^ k * x ^ m * x ^ n = x ^ k * (x ^ m * x ^ n)

full_name: npow_mul_comm
code: theorem npow_mul_comm (m n : ℕ) (x : M) :
    x ^ m * x ^ n = x ^ n * x ^ m 
goal: x ^ m * x ^ n = x ^ n * x ^ m

full_name: npow_mul
code: theorem npow_mul (x : M) (m n : ℕ) : x ^ (m * n) = (x ^ m) ^ n 
goal: x ^ (m * n) = (x ^ m) ^ n

full_name: npow_mul'
code: theorem npow_mul' (x : M) (m n : ℕ) : x ^ (m * n) = (x ^ n) ^ m 
goal: x ^ (m * n) = (x ^ n) ^ m

full_name: neg_npow_assoc
code: theorem neg_npow_assoc {R : Type*} [NonAssocRing R] [Pow R ℕ] [NatPowAssoc R] (a b : R) (k : ℕ) :
    (-1)^k * a * b = (-1)^k * (a * b) 
goal: (-1) ^ k * a * b = (-1) ^ k * (a * b)

full_name: Pi.instNatPowAssoc
code: instance Pi.instNatPowAssoc {ι : Type*} {α : ι → Type*} [∀ i, MulOneClass <| α i] [∀ i, Pow (α i) ℕ]
    [∀ i, NatPowAssoc <| α i] : NatPowAssoc (∀ i, α i) 
goal: NatPowAssoc ((i : ι) → α i)

full_name: Prod.instNatPowAssoc
code: instance Prod.instNatPowAssoc {N : Type*} [MulOneClass M] [Pow M ℕ] [NatPowAssoc M] [MulOneClass N]
    [Pow N ℕ] [NatPowAssoc N] : NatPowAssoc (M × N) 
goal: NatPowAssoc (M × N)

full_name: Monoid.PowAssoc
code: instance Monoid.PowAssoc : NatPowAssoc M 
goal: NatPowAssoc M

full_name: Nat.cast_npow
code: @[simp, norm_cast]
theorem Nat.cast_npow (R : Type*) [NonAssocSemiring R] [Pow R ℕ] [NatPowAssoc R] (n m : ℕ) :
    (↑(n ^ m) : R) = (↑n : R) ^ m 
goal: ↑(n ^ m) = ↑n ^ m

full_name: Int.cast_npow
code: @[simp, norm_cast]
theorem Int.cast_npow (R : Type*) [NonAssocRing R] [Pow R ℕ] [NatPowAssoc R]
    (n : ℤ) : ∀(m : ℕ), @Int.cast R NonAssocRing.toIntCast (n ^ m) = (n : R) ^ m
  
goal: ↑(n ^ m) = ↑n ^ m