ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- addOrderOf_zero
@[to_additive (attr := simp)]
theorem orderOf_one : orderOf (1 : G) = 1 
Arguments: {G : Type u_1} [AddMonoid G]
Goal: addOrderOf 0 = 1
-- orderOf_eq_one_iff
@[to_additive (attr := simp) AddMonoid.addOrderOf_eq_one_iff]
theorem orderOf_eq_one_iff : orderOf x = 1 ↔ x = 1 
Arguments: {G : Type u_1} [Monoid G] {x : G}
Goal: orderOf x = 1 ↔ x = 1
-- AddMonoid.addOrderOf_eq_one_iff
@[to_additive (attr := simp) AddMonoid.addOrderOf_eq_one_iff]
theorem orderOf_eq_one_iff : orderOf x = 1 ↔ x = 1 
Arguments: {G : Type u_1} [AddMonoid G] {x : G}
Goal: addOrderOf x = 1 ↔ x = 0
-- mod_addOrderOf_nsmul
@[to_additive (attr := simp) mod_addOrderOf_nsmul]
lemma pow_mod_orderOf (x : G) (n : ℕ) : x ^ (n % orderOf x) = x ^ n 
Arguments: {G : Type u_1} [AddMonoid G] (x : G) (n : ℕ)
Goal: (n % addOrderOf x) • x = n • x
-- pow_mod_orderOf
@[to_additive (attr := simp) mod_addOrderOf_nsmul]
lemma pow_mod_orderOf (x : G) (n : ℕ) : x ^ (n % orderOf x) = x ^ n 
Arguments: {G : Type u_1} [Monoid G] (x : G) (n : ℕ)
Goal: x ^ (n % orderOf x) = x ^ n
-- orderOf_dvd_of_pow_eq_one
@[to_additive]
theorem orderOf_dvd_of_pow_eq_one (h : x ^ n = 1) : orderOf x ∣ n 
Arguments: {G : Type u_1} [Monoid G] {x : G} {n : ℕ} (h : x ^ n = 1)
Goal: orderOf x ∣ n
-- addOrderOf_dvd_of_nsmul_eq_zero
@[to_additive]
theorem orderOf_dvd_of_pow_eq_one (h : x ^ n = 1) : orderOf x ∣ n 
Arguments: {G : Type u_1} [AddMonoid G] {x : G} {n : ℕ} (h : n • x = 0)
Goal: addOrderOf x ∣ n
-- addOrderOf_dvd_iff_nsmul_eq_zero
@[to_additive]
theorem orderOf_dvd_iff_pow_eq_one {n : ℕ} : orderOf x ∣ n ↔ x ^ n = 1 
Arguments: {G : Type u_1} [AddMonoid G] {x : G} {n : ℕ}
Goal: addOrderOf x ∣ n ↔ n • x = 0
-- orderOf_dvd_iff_pow_eq_one
@[to_additive]
theorem orderOf_dvd_iff_pow_eq_one {n : ℕ} : orderOf x ∣ n ↔ x ^ n = 1 
Arguments: {G : Type u_1} [Monoid G] {x : G} {n : ℕ}
Goal: orderOf x ∣ n ↔ x ^ n = 1
-- orderOf_pow_dvd
@[to_additive addOrderOf_smul_dvd]
theorem orderOf_pow_dvd (n : ℕ) : orderOf (x ^ n) ∣ orderOf x 
Arguments: {G : Type u_1} [Monoid G] {x : G} (n : ℕ)
Goal: orderOf (x ^ n) ∣ orderOf x
-- addOrderOf_smul_dvd
@[to_additive addOrderOf_smul_dvd]
theorem orderOf_pow_dvd (n : ℕ) : orderOf (x ^ n) ∣ orderOf x 
Arguments: {G : Type u_1} [AddMonoid G] {x : G} (n : ℕ)
Goal: addOrderOf (n • x) ∣ addOrderOf x
-- nsmul_injOn_Iio_addOrderOf
@[to_additive]
lemma pow_injOn_Iio_orderOf : (Set.Iio <| orderOf x).InjOn (x ^ ·) 
Arguments: {G : Type u_1} [AddMonoid G] {x : G}
Goal: Set.InjOn (fun x_1 => x_1 • x) (Set.Iio (addOrderOf x))
-- pow_injOn_Iio_orderOf
@[to_additive]
lemma pow_injOn_Iio_orderOf : (Set.Iio <| orderOf x).InjOn (x ^ ·) 
Arguments: {G : Type u_1} [Monoid G] {x : G}
Goal: Set.InjOn (fun x_1 => x ^ x_1) (Set.Iio (orderOf x))
-- IsOfFinOrder.mem_powers_iff_mem_range_orderOf
@[to_additive]
protected lemma IsOfFinOrder.mem_powers_iff_mem_range_orderOf [DecidableEq G]
    (hx : IsOfFinOrder x) :
    y ∈ Submonoid.powers x ↔ y ∈ (Finset.range (orderOf x)).image (x ^ ·) 
Arguments: {G : Type u_1} [Monoid G] {x y : G} [DecidableEq G] (hx : IsOfFinOrder x)
Goal: y ∈ Submonoid.powers x ↔ y ∈ Finset.image (fun x_1 => x ^ x_1) (Finset.range (orderOf x))
-- IsOfFinAddOrder.mem_multiples_iff_mem_range_addOrderOf
@[to_additive]
protected lemma IsOfFinOrder.mem_powers_iff_mem_range_orderOf [DecidableEq G]
    (hx : IsOfFinOrder x) :
    y ∈ Submonoid.powers x ↔ y ∈ (Finset.range (orderOf x)).image (x ^ ·) 
Arguments: {G : Type u_1} [AddMonoid G] {x y : G} [DecidableEq G] (hx : IsOfFinAddOrder x)
Goal: y ∈ AddSubmonoid.multiples x ↔ y ∈ Finset.image (fun x_1 => x_1 • x) (Finset.range (addOrderOf x))
-- IsOfFinAddOrder.multiples_eq_image_range_addOrderOf
@[to_additive]
protected lemma IsOfFinOrder.powers_eq_image_range_orderOf [DecidableEq G] (hx : IsOfFinOrder x) :
    (Submonoid.powers x : Set G) = (Finset.range (orderOf x)).image (x ^ ·) 
Arguments: {G : Type u_1} [AddMonoid G] {x : G} [DecidableEq G] (hx : IsOfFinAddOrder x)
Goal: ↑(AddSubmonoid.multiples x) = ↑(Finset.image (fun x_1 => x_1 • x) (Finset.range (addOrderOf x)))
-- IsOfFinOrder.powers_eq_image_range_orderOf
@[to_additive]
protected lemma IsOfFinOrder.powers_eq_image_range_orderOf [DecidableEq G] (hx : IsOfFinOrder x) :
    (Submonoid.powers x : Set G) = (Finset.range (orderOf x)).image (x ^ ·) 
Arguments: {G : Type u_1} [Monoid G] {x : G} [DecidableEq G] (hx : IsOfFinOrder x)
Goal: ↑(Submonoid.powers x) = ↑(Finset.image (fun x_1 => x ^ x_1) (Finset.range (orderOf x)))
-- pow_eq_one_iff_modEq
@[to_additive]
theorem pow_eq_one_iff_modEq : x ^ n = 1 ↔ n ≡ 0 [MOD orderOf x] 
Arguments: {G : Type u_1} [Monoid G] {x : G} {n : ℕ}
Goal: x ^ n = 1 ↔ n ≡ 0 [MOD orderOf x]
-- nsmul_eq_zero_iff_modEq
@[to_additive]
theorem pow_eq_one_iff_modEq : x ^ n = 1 ↔ n ≡ 0 [MOD orderOf x] 
Arguments: {G : Type u_1} [AddMonoid G] {x : G} {n : ℕ}
Goal: n • x = 0 ↔ n ≡ 0 [MOD addOrderOf x]
-- orderOf_map_dvd
@[to_additive]
theorem orderOf_map_dvd {H : Type*} [Monoid H] (ψ : G →* H) (x : G) :
    orderOf (ψ x) ∣ orderOf x 
Arguments: {G : Type u_1} [Monoid G] {H : Type u_6} [Monoid H] (ψ : G →* H) (x : G)
Goal: orderOf (ψ x) ∣ orderOf x
-- addOrderOf_map_dvd
@[to_additive]
theorem orderOf_map_dvd {H : Type*} [Monoid H] (ψ : G →* H) (x : G) :
    orderOf (ψ x) ∣ orderOf x 
Arguments: {G : Type u_1} [AddMonoid G] {H : Type u_6} [AddMonoid H] (ψ : G →+ H) (x : G)
Goal: addOrderOf (ψ x) ∣ addOrderOf x
-- exists_pow_eq_self_of_coprime
@[to_additive]
theorem exists_pow_eq_self_of_coprime (h : n.Coprime (orderOf x)) : ∃ m : ℕ, (x ^ n) ^ m = x 
Arguments: {G : Type u_1} [Monoid G] {x : G} {n : ℕ} (h : n.Coprime (orderOf x))
Goal: ∃ m, (x ^ n) ^ m = x
-- exists_nsmul_eq_self_of_coprime
@[to_additive]
theorem exists_pow_eq_self_of_coprime (h : n.Coprime (orderOf x)) : ∃ m : ℕ, (x ^ n) ^ m = x 
Arguments: {G : Type u_1} [AddMonoid G] {x : G} {n : ℕ} (h : n.Coprime (addOrderOf x))
Goal: ∃ m, m • n • x = x
-- addOrderOf_eq_of_nsmul_and_div_prime_nsmul
@[to_additive addOrderOf_eq_of_nsmul_and_div_prime_nsmul "If `n * x = 0`, but `n/p * x ≠ 0` for
all prime factors `p` of `n`, then `x` has order `n` in `G`."]
theorem orderOf_eq_of_pow_and_pow_div_prime (hn : 0 < n) (hx : x ^ n = 1)
    (hd : ∀ p : ℕ, p.Prime → p ∣ n → x ^ (n / p) ≠ 1) : orderOf x = n 
Arguments: {G : Type u_1} [AddMonoid G] {x : G} {n : ℕ} (hn : 0 < n) (hx : n • x = 0) (hd : ∀ (p : ℕ), Nat.Prime p → p ∣ n → (n / p) • x ≠ 0)
Goal: addOrderOf x = n
-- orderOf_eq_of_pow_and_pow_div_prime
@[to_additive addOrderOf_eq_of_nsmul_and_div_prime_nsmul "If `n * x = 0`, but `n/p * x ≠ 0` for
all prime factors `p` of `n`, then `x` has order `n` in `G`."]
theorem orderOf_eq_of_pow_and_pow_div_prime (hn : 0 < n) (hx : x ^ n = 1)
    (hd : ∀ p : ℕ, p.Prime → p ∣ n → x ^ (n / p) ≠ 1) : orderOf x = n 
Arguments: {G : Type u_1} [Monoid G] {x : G} {n : ℕ} (hn : 0 < n) (hx : x ^ n = 1) (hd : ∀ (p : ℕ), Nat.Prime p → p ∣ n → x ^ (n / p) ≠ 1)
Goal: orderOf x = n
-- addOrderOf_eq_addOrderOf_iff
@[to_additive]
theorem orderOf_eq_orderOf_iff {H : Type*} [Monoid H] {y : H} :
    orderOf x = orderOf y ↔ ∀ n : ℕ, x ^ n = 1 ↔ y ^ n = 1 
Arguments: {G : Type u_1} [AddMonoid G] {x : G} {H : Type u_6} [AddMonoid H] {y : H}
Goal: addOrderOf x = addOrderOf y ↔ ∀ (n : ℕ), n • x = 0 ↔ n • y = 0
-- orderOf_eq_orderOf_iff
@[to_additive]
theorem orderOf_eq_orderOf_iff {H : Type*} [Monoid H] {y : H} :
    orderOf x = orderOf y ↔ ∀ n : ℕ, x ^ n = 1 ↔ y ^ n = 1 
Arguments: {G : Type u_1} [Monoid G] {x : G} {H : Type u_6} [Monoid H] {y : H}
Goal: orderOf x = orderOf y ↔ ∀ (n : ℕ), x ^ n = 1 ↔ y ^ n = 1
-- orderOf_injective
@[to_additive "An injective homomorphism of additive monoids preserves orders of elements."]
theorem orderOf_injective {H : Type*} [Monoid H] (f : G →* H) (hf : Function.Injective f) (x : G) :
    orderOf (f x) = orderOf x 
Arguments: {G : Type u_1} [Monoid G] {H : Type u_6} [Monoid H] (f : G →* H) (hf : Function.Injective ⇑f) (x : G)
Goal: orderOf (f x) = orderOf x
-- addOrderOf_injective
@[to_additive "An injective homomorphism of additive monoids preserves orders of elements."]
theorem orderOf_injective {H : Type*} [Monoid H] (f : G →* H) (hf : Function.Injective f) (x : G) :
    orderOf (f x) = orderOf x 
Arguments: {G : Type u_1} [AddMonoid G] {H : Type u_6} [AddMonoid H] (f : G →+ H) (hf : Function.Injective ⇑f) (x : G)
Goal: addOrderOf (f x) = addOrderOf x
-- AddEquiv.addOrderOf_eq
@[to_additive (attr := simp) "An additive equivalence preserves orders of elements."]
lemma MulEquiv.orderOf_eq {H : Type*} [Monoid H] (e : G ≃* H) (x : G) :
    orderOf (e x) = orderOf x 
Arguments: {G : Type u_1} [AddMonoid G] {H : Type u_6} [AddMonoid H] (e : G ≃+ H) (x : G)
Goal: addOrderOf (e x) = addOrderOf x
-- MulEquiv.orderOf_eq
@[to_additive (attr := simp) "An additive equivalence preserves orders of elements."]
lemma MulEquiv.orderOf_eq {H : Type*} [Monoid H] (e : G ≃* H) (x : G) :
    orderOf (e x) = orderOf x 
Arguments: {G : Type u_1} [Monoid G] {H : Type u_6} [Monoid H] (e : G ≃* H) (x : G)
Goal: orderOf (e x) = orderOf x
-- Function.Injective.isOfFinAddOrder_iff
@[to_additive]
theorem Function.Injective.isOfFinOrder_iff [Monoid H] {f : G →* H} (hf : Injective f) :
    IsOfFinOrder (f x) ↔ IsOfFinOrder x 
Arguments: {G : Type u_1} {H : Type u_2} [AddMonoid G] {x : G} [AddMonoid H] {f : G →+ H} (hf : Function.Injective ⇑f)
Goal: IsOfFinAddOrder (f x) ↔ IsOfFinAddOrder x
-- Function.Injective.isOfFinOrder_iff
@[to_additive]
theorem Function.Injective.isOfFinOrder_iff [Monoid H] {f : G →* H} (hf : Injective f) :
    IsOfFinOrder (f x) ↔ IsOfFinOrder x 
Arguments: {G : Type u_1} {H : Type u_2} [Monoid G] {x : G} [Monoid H] {f : G →* H} (hf : Function.Injective ⇑f)
Goal: IsOfFinOrder (f x) ↔ IsOfFinOrder x
-- orderOf_submonoid
@[to_additive (attr := norm_cast, simp)]
theorem orderOf_submonoid {H : Submonoid G} (y : H) : orderOf (y : G) = orderOf y 
Arguments: {G : Type u_1} [Monoid G] {H : Submonoid G} (y : ↥H)
Goal: orderOf ↑y = orderOf y
-- addOrderOf_addSubmonoid
@[to_additive (attr := norm_cast, simp)]
theorem orderOf_submonoid {H : Submonoid G} (y : H) : orderOf (y : G) = orderOf y 
Arguments: {G : Type u_1} [AddMonoid G] {H : AddSubmonoid G} (y : ↥H)
Goal: addOrderOf ↑y = addOrderOf y
-- orderOf_units
@[to_additive]
theorem orderOf_units {y : Gˣ} : orderOf (y : G) = orderOf y 
Arguments: {G : Type u_1} [Monoid G] {y : Gˣ}
Goal: orderOf ↑y = orderOf y
-- addOrderOf_addUnits
@[to_additive]
theorem orderOf_units {y : Gˣ} : orderOf (y : G) = orderOf y 
Arguments: {G : Type u_1} [AddMonoid G] {y : AddUnits G}
Goal: addOrderOf ↑y = addOrderOf y
-- IsOfFinOrder.val_unit
@[simps]
noncomputable
def IsOfFinOrder.unit {M} [Monoid M] {x : M} (hx : IsOfFinOrder x) : Mˣ 
Arguments: {M : Type u_6} [Monoid M] {x : M} (hx : IsOfFinOrder x)
Goal: ↑hx.unit = x
-- IsOfFinOrder.val_inv_unit
@[simps]
noncomputable
def IsOfFinOrder.unit {M} [Monoid M] {x : M} (hx : IsOfFinOrder x) : Mˣ 
Arguments: {M : Type u_6} [Monoid M] {x : M} (hx : IsOfFinOrder x)
Goal: ↑hx.unit⁻¹ = x ^ (orderOf x - 1)
-- IsOfFinOrder.isUnit
lemma IsOfFinOrder.isUnit {M} [Monoid M] {x : M} (hx : IsOfFinOrder x) : IsUnit x 
Arguments: {M : Type u_6} [Monoid M] {x : M} (hx : IsOfFinOrder x)
Goal: IsUnit x
-- addOrderOf_nsmul'
@[to_additive]
theorem orderOf_pow' (h : n ≠ 0) : orderOf (x ^ n) = orderOf x / gcd (orderOf x) n 
Arguments: {G : Type u_1} [AddMonoid G] (x : G) {n : ℕ} (h : n ≠ 0)
Goal: addOrderOf (n • x) = addOrderOf x / (addOrderOf x).gcd n
-- orderOf_pow'
@[to_additive]
theorem orderOf_pow' (h : n ≠ 0) : orderOf (x ^ n) = orderOf x / gcd (orderOf x) n 
Arguments: {G : Type u_1} [Monoid G] (x : G) {n : ℕ} (h : n ≠ 0)
Goal: orderOf (x ^ n) = orderOf x / (orderOf x).gcd n
-- addOrderOf_nsmul_of_dvd
@[to_additive]
lemma orderOf_pow_of_dvd {x : G} {n : ℕ} (hn : n ≠ 0) (dvd : n ∣ orderOf x) :
    orderOf (x ^ n) = orderOf x / n 
Arguments: {G : Type u_1} [AddMonoid G] {x : G} {n : ℕ} (hn : n ≠ 0) (dvd : n ∣ addOrderOf x)
Goal: addOrderOf (n • x) = addOrderOf x / n
-- orderOf_pow_of_dvd
@[to_additive]
lemma orderOf_pow_of_dvd {x : G} {n : ℕ} (hn : n ≠ 0) (dvd : n ∣ orderOf x) :
    orderOf (x ^ n) = orderOf x / n 
Arguments: {G : Type u_1} [Monoid G] {x : G} {n : ℕ} (hn : n ≠ 0) (dvd : n ∣ orderOf x)
Goal: orderOf (x ^ n) = orderOf x / n
-- orderOf_pow_orderOf_div
@[to_additive]
lemma orderOf_pow_orderOf_div {x : G} {n : ℕ} (hx : orderOf x ≠ 0) (hn : n ∣ orderOf x) :
    orderOf (x ^ (orderOf x / n)) = n 
Arguments: {G : Type u_1} [Monoid G] {x : G} {n : ℕ} (hx : orderOf x ≠ 0) (hn : n ∣ orderOf x)
Goal: orderOf (x ^ (orderOf x / n)) = n
-- addOrderOf_nsmul_addOrderOf_sub
@[to_additive]
lemma orderOf_pow_orderOf_div {x : G} {n : ℕ} (hx : orderOf x ≠ 0) (hn : n ∣ orderOf x) :
    orderOf (x ^ (orderOf x / n)) = n 
Arguments: {G : Type u_1} [AddMonoid G] {x : G} {n : ℕ} (hx : addOrderOf x ≠ 0) (hn : n ∣ addOrderOf x)
Goal: addOrderOf ((addOrderOf x / n) • x) = n
-- IsOfFinOrder.orderOf_pow
@[to_additive]
protected lemma IsOfFinOrder.orderOf_pow (h : IsOfFinOrder x) :
    orderOf (x ^ n) = orderOf x / gcd (orderOf x) n 
Arguments: {G : Type u_1} [Monoid G] (x : G) (n : ℕ) (h : IsOfFinOrder x)
Goal: orderOf (x ^ n) = orderOf x / (orderOf x).gcd n
-- IsOfFinAddOrder.addOrderOf_nsmul
@[to_additive]
protected lemma IsOfFinOrder.orderOf_pow (h : IsOfFinOrder x) :
    orderOf (x ^ n) = orderOf x / gcd (orderOf x) n 
Arguments: {G : Type u_1} [AddMonoid G] (x : G) (n : ℕ) (h : IsOfFinAddOrder x)
Goal: addOrderOf (n • x) = addOrderOf x / (addOrderOf x).gcd n
-- Nat.Coprime.addOrderOf_nsmul
@[to_additive]
lemma Nat.Coprime.orderOf_pow (h : (orderOf y).Coprime m) : orderOf (y ^ m) = orderOf y 
Arguments: {G : Type u_1} [AddMonoid G] {y : G} {m : ℕ} (h : (addOrderOf y).Coprime m)
Goal: addOrderOf (m • y) = addOrderOf y
-- Nat.Coprime.orderOf_pow
@[to_additive]
lemma Nat.Coprime.orderOf_pow (h : (orderOf y).Coprime m) : orderOf (y ^ m) = orderOf y 
Arguments: {G : Type u_1} [Monoid G] {y : G} {m : ℕ} (h : (orderOf y).Coprime m)
Goal: orderOf (y ^ m) = orderOf y
-- IsOfFinOrder.natCard_powers_le_orderOf
@[to_additive]
lemma IsOfFinOrder.natCard_powers_le_orderOf (ha : IsOfFinOrder a) :
    Nat.card (powers a : Set G) ≤ orderOf a 
Arguments: {G : Type u_1} [Monoid G] {a : G} (ha : IsOfFinOrder a)
Goal: Nat.card ↑↑(Submonoid.powers a) ≤ orderOf a
-- IsOfFinAddOrder.natCard_multiples_le_addOrderOf
@[to_additive]
lemma IsOfFinOrder.natCard_powers_le_orderOf (ha : IsOfFinOrder a) :
    Nat.card (powers a : Set G) ≤ orderOf a 
Arguments: {G : Type u_1} [AddMonoid G] {a : G} (ha : IsOfFinAddOrder a)
Goal: Nat.card ↑↑(AddSubmonoid.multiples a) ≤ addOrderOf a
-- IsOfFinAddOrder.finite_multiples
@[to_additive]
lemma IsOfFinOrder.finite_powers (ha : IsOfFinOrder a) : (powers a : Set G).Finite 
Arguments: {G : Type u_1} [AddMonoid G] {a : G} (ha : IsOfFinAddOrder a)
Goal: (↑(AddSubmonoid.multiples a)).Finite
-- IsOfFinOrder.finite_powers
@[to_additive]
lemma IsOfFinOrder.finite_powers (ha : IsOfFinOrder a) : (powers a : Set G).Finite 
Arguments: {G : Type u_1} [Monoid G] {a : G} (ha : IsOfFinOrder a)
Goal: (↑(Submonoid.powers a)).Finite
-- Commute.orderOf_mul_dvd_lcm
@[to_additive]
theorem orderOf_mul_dvd_lcm (h : Commute x y) :
    orderOf (x * y) ∣ Nat.lcm (orderOf x) (orderOf y) 
Arguments: {G : Type u_1} [Monoid G] {x y : G} (h : Commute x y)
Goal: orderOf (x * y) ∣ (orderOf x).lcm (orderOf y)
-- AddCommute.addOrderOf_add_dvd_lcm
@[to_additive]
theorem orderOf_mul_dvd_lcm (h : Commute x y) :
    orderOf (x * y) ∣ Nat.lcm (orderOf x) (orderOf y) 
Arguments: {G : Type u_1} [AddMonoid G] {x y : G} (h : AddCommute x y)
Goal: addOrderOf (x + y) ∣ (addOrderOf x).lcm (addOrderOf y)
-- Commute.orderOf_dvd_lcm_mul
@[to_additive]
theorem orderOf_dvd_lcm_mul (h : Commute x y):
    orderOf y ∣ Nat.lcm (orderOf x) (orderOf (x * y)) 
Arguments: {G : Type u_1} [Monoid G] {x y : G} (h : Commute x y)
Goal: orderOf y ∣ (orderOf x).lcm (orderOf (x * y))
-- AddCommute.addOrderOf_dvd_lcm_add
@[to_additive]
theorem orderOf_dvd_lcm_mul (h : Commute x y):
    orderOf y ∣ Nat.lcm (orderOf x) (orderOf (x * y)) 
Arguments: {G : Type u_1} [AddMonoid G] {x y : G} (h : AddCommute x y)
Goal: addOrderOf y ∣ (addOrderOf x).lcm (addOrderOf (x + y))
-- Commute.orderOf_mul_dvd_mul_orderOf
@[to_additive addOrderOf_add_dvd_mul_addOrderOf]
theorem orderOf_mul_dvd_mul_orderOf (h : Commute x y):
    orderOf (x * y) ∣ orderOf x * orderOf y 
Arguments: {G : Type u_1} [Monoid G] {x y : G} (h : Commute x y)
Goal: orderOf (x * y) ∣ orderOf x * orderOf y
-- AddCommute.addOrderOf_add_dvd_mul_addOrderOf
@[to_additive addOrderOf_add_dvd_mul_addOrderOf]
theorem orderOf_mul_dvd_mul_orderOf (h : Commute x y):
    orderOf (x * y) ∣ orderOf x * orderOf y 
Arguments: {G : Type u_1} [AddMonoid G] {x y : G} (h : AddCommute x y)
Goal: addOrderOf (x + y) ∣ addOrderOf x * addOrderOf y
-- Commute.orderOf_mul_eq_mul_orderOf_of_coprime
@[to_additive addOrderOf_add_eq_mul_addOrderOf_of_coprime]
theorem orderOf_mul_eq_mul_orderOf_of_coprime (h : Commute x y)
    (hco : (orderOf x).Coprime (orderOf y)) : orderOf (x * y) = orderOf x * orderOf y 
Arguments: {G : Type u_1} [Monoid G] {x y : G} (h : Commute x y) (hco : (orderOf x).Coprime (orderOf y))
Goal: orderOf (x * y) = orderOf x * orderOf y
-- AddCommute.addOrderOf_add_eq_mul_addOrderOf_of_coprime
@[to_additive addOrderOf_add_eq_mul_addOrderOf_of_coprime]
theorem orderOf_mul_eq_mul_orderOf_of_coprime (h : Commute x y)
    (hco : (orderOf x).Coprime (orderOf y)) : orderOf (x * y) = orderOf x * orderOf y 
Arguments: {G : Type u_1} [AddMonoid G] {x y : G} (h : AddCommute x y) (hco : (addOrderOf x).Coprime (addOrderOf y))
Goal: addOrderOf (x + y) = addOrderOf x * addOrderOf y
-- AddCommute.isOfFinAddOrder_add
@[to_additive "Commuting elements of finite additive order are closed under addition."]
theorem isOfFinOrder_mul (h : Commute x y) (hx : IsOfFinOrder x) (hy : IsOfFinOrder y) :
    IsOfFinOrder (x * y) 
Arguments: {G : Type u_1} [AddMonoid G] {x y : G} (h : AddCommute x y) (hx : IsOfFinAddOrder x) (hy : IsOfFinAddOrder y)
Goal: IsOfFinAddOrder (x + y)
-- Commute.isOfFinOrder_mul
@[to_additive "Commuting elements of finite additive order are closed under addition."]
theorem isOfFinOrder_mul (h : Commute x y) (hx : IsOfFinOrder x) (hy : IsOfFinOrder y) :
    IsOfFinOrder (x * y) 
Arguments: {G : Type u_1} [Monoid G] {x y : G} (h : Commute x y) (hx : IsOfFinOrder x) (hy : IsOfFinOrder y)
Goal: IsOfFinOrder (x * y)
-- Commute.orderOf_mul_eq_right_of_forall_prime_mul_dvd
@[to_additive addOrderOf_add_eq_right_of_forall_prime_mul_dvd
  "If each prime factor of
  `addOrderOf x` has higher multiplicity in `addOrderOf y`, and `x` commutes with `y`,
  then `x + y` has the same order as `y`."]
theorem orderOf_mul_eq_right_of_forall_prime_mul_dvd (h : Commute x y) (hy : IsOfFinOrder y)
    (hdvd : ∀ p : ℕ, p.Prime → p ∣ orderOf x → p * orderOf x ∣ orderOf y) :
    orderOf (x * y) = orderOf y 
Arguments: {G : Type u_1} [Monoid G] {x y : G} (h : Commute x y) (hy : IsOfFinOrder y) (hdvd : ∀ (p : ℕ), Nat.Prime p → p ∣ orderOf x → p * orderOf x ∣ orderOf y)
Goal: orderOf (x * y) = orderOf y
-- AddCommute.addOrderOf_add_eq_right_of_forall_prime_mul_dvd
@[to_additive addOrderOf_add_eq_right_of_forall_prime_mul_dvd
  "If each prime factor of
  `addOrderOf x` has higher multiplicity in `addOrderOf y`, and `x` commutes with `y`,
  then `x + y` has the same order as `y`."]
theorem orderOf_mul_eq_right_of_forall_prime_mul_dvd (h : Commute x y) (hy : IsOfFinOrder y)
    (hdvd : ∀ p : ℕ, p.Prime → p ∣ orderOf x → p * orderOf x ∣ orderOf y) :
    orderOf (x * y) = orderOf y 
Arguments: {G : Type u_1} [AddMonoid G] {x y : G} (h : AddCommute x y) (hy : IsOfFinAddOrder y) (hdvd : ∀ (p : ℕ), Nat.Prime p → p ∣ addOrderOf x → p * addOrderOf x ∣ addOrderOf y)
Goal: addOrderOf (x + y) = addOrderOf y
-- addOrderOf_eq_prime
@[to_additive]
theorem orderOf_eq_prime (hg : x ^ p = 1) (hg1 : x ≠ 1) : orderOf x = p 
Arguments: {G : Type u_1} [AddMonoid G] {x : G} {p : ℕ} [hp : Fact (Nat.Prime p)] (hg : p • x = 0) (hg1 : x ≠ 0)
Goal: addOrderOf x = p
-- orderOf_eq_prime
@[to_additive]
theorem orderOf_eq_prime (hg : x ^ p = 1) (hg1 : x ≠ 1) : orderOf x = p 
Arguments: {G : Type u_1} [Monoid G] {x : G} {p : ℕ} [hp : Fact (Nat.Prime p)] (hg : x ^ p = 1) (hg1 : x ≠ 1)
Goal: orderOf x = p
-- addOrderOf_eq_prime_pow
@[to_additive addOrderOf_eq_prime_pow]
theorem orderOf_eq_prime_pow (hnot : ¬x ^ p ^ n = 1) (hfin : x ^ p ^ (n + 1) = 1) :
    orderOf x = p ^ (n + 1) 
Arguments: {G : Type u_1} [AddMonoid G] {x : G} {n p : ℕ} [hp : Fact (Nat.Prime p)] (hnot : ¬p ^ n • x = 0) (hfin : p ^ (n + 1) • x = 0)
Goal: addOrderOf x = p ^ (n + 1)
-- orderOf_eq_prime_pow
@[to_additive addOrderOf_eq_prime_pow]
theorem orderOf_eq_prime_pow (hnot : ¬x ^ p ^ n = 1) (hfin : x ^ p ^ (n + 1) = 1) :
    orderOf x = p ^ (n + 1) 
Arguments: {G : Type u_1} [Monoid G] {x : G} {n p : ℕ} [hp : Fact (Nat.Prime p)] (hnot : ¬x ^ p ^ n = 1) (hfin : x ^ p ^ (n + 1) = 1)
Goal: orderOf x = p ^ (n + 1)
-- exists_addOrderOf_eq_prime_pow_iff
@[to_additive exists_addOrderOf_eq_prime_pow_iff]
theorem exists_orderOf_eq_prime_pow_iff :
    (∃ k : ℕ, orderOf x = p ^ k) ↔ ∃ m : ℕ, x ^ (p : ℕ) ^ m = 1 
Arguments: {G : Type u_1} [AddMonoid G] {x : G} {p : ℕ} [hp : Fact (Nat.Prime p)]
Goal: (∃ k, addOrderOf x = p ^ k) ↔ ∃ m, p ^ m • x = 0
-- exists_orderOf_eq_prime_pow_iff
@[to_additive exists_addOrderOf_eq_prime_pow_iff]
theorem exists_orderOf_eq_prime_pow_iff :
    (∃ k : ℕ, orderOf x = p ^ k) ↔ ∃ m : ℕ, x ^ (p : ℕ) ^ m = 1 
Arguments: {G : Type u_1} [Monoid G] {x : G} {p : ℕ} [hp : Fact (Nat.Prime p)]
Goal: (∃ k, orderOf x = p ^ k) ↔ ∃ m, x ^ p ^ m = 1
-- pow_eq_pow_iff_modEq
@[to_additive]
theorem pow_eq_pow_iff_modEq : x ^ n = x ^ m ↔ n ≡ m [MOD orderOf x] 
Arguments: {G : Type u_1} [LeftCancelMonoid G] {x : G} {m n : ℕ}
Goal: x ^ n = x ^ m ↔ n ≡ m [MOD orderOf x]
-- nsmul_eq_nsmul_iff_modEq
@[to_additive]
theorem pow_eq_pow_iff_modEq : x ^ n = x ^ m ↔ n ≡ m [MOD orderOf x] 
Arguments: {G : Type u_1} [AddLeftCancelMonoid G] {x : G} {m n : ℕ}
Goal: n • x = m • x ↔ n ≡ m [MOD addOrderOf x]
-- injective_nsmul_iff_not_isOfFinAddOrder
@[to_additive (attr := simp)]
lemma injective_pow_iff_not_isOfFinOrder : Injective (fun n : ℕ ↦ x ^ n) ↔ ¬IsOfFinOrder x 
Arguments: {G : Type u_1} [AddLeftCancelMonoid G] {x : G}
Goal: (Function.Injective fun n => n • x) ↔ ¬IsOfFinAddOrder x
-- injective_pow_iff_not_isOfFinOrder
@[to_additive (attr := simp)]
lemma injective_pow_iff_not_isOfFinOrder : Injective (fun n : ℕ ↦ x ^ n) ↔ ¬IsOfFinOrder x 
Arguments: {G : Type u_1} [LeftCancelMonoid G] {x : G}
Goal: (Function.Injective fun n => x ^ n) ↔ ¬IsOfFinOrder x
-- pow_inj_mod
@[to_additive]
lemma pow_inj_mod {n m : ℕ} : x ^ n = x ^ m ↔ n % orderOf x = m % orderOf x 
Arguments: {G : Type u_1} [LeftCancelMonoid G] {x : G} {n m : ℕ}
Goal: x ^ n = x ^ m ↔ n % orderOf x = m % orderOf x
-- nsmul_inj_mod
@[to_additive]
lemma pow_inj_mod {n m : ℕ} : x ^ n = x ^ m ↔ n % orderOf x = m % orderOf x 
Arguments: {G : Type u_1} [AddLeftCancelMonoid G] {x : G} {n m : ℕ}
Goal: n • x = m • x ↔ n % addOrderOf x = m % addOrderOf x
-- nsmul_inj_iff_of_addOrderOf_eq_zero
@[to_additive]
theorem pow_inj_iff_of_orderOf_eq_zero (h : orderOf x = 0) {n m : ℕ} : x ^ n = x ^ m ↔ n = m 
Arguments: {G : Type u_1} [AddLeftCancelMonoid G] {x : G} (h : addOrderOf x = 0) {n m : ℕ}
Goal: n • x = m • x ↔ n = m
-- pow_inj_iff_of_orderOf_eq_zero
@[to_additive]
theorem pow_inj_iff_of_orderOf_eq_zero (h : orderOf x = 0) {n m : ℕ} : x ^ n = x ^ m ↔ n = m 
Arguments: {G : Type u_1} [LeftCancelMonoid G] {x : G} (h : orderOf x = 0) {n m : ℕ}
Goal: x ^ n = x ^ m ↔ n = m
-- infinite_not_isOfFinAddOrder
@[to_additive]
theorem infinite_not_isOfFinOrder {x : G} (h : ¬IsOfFinOrder x) :
    { y : G | ¬IsOfFinOrder y }.Infinite 
Arguments: {G : Type u_1} [AddLeftCancelMonoid G] {x : G} (h : ¬IsOfFinAddOrder x)
Goal: {y | ¬IsOfFinAddOrder y}.Infinite
-- infinite_not_isOfFinOrder
@[to_additive]
theorem infinite_not_isOfFinOrder {x : G} (h : ¬IsOfFinOrder x) :
    { y : G | ¬IsOfFinOrder y }.Infinite 
Arguments: {G : Type u_1} [LeftCancelMonoid G] {x : G} (h : ¬IsOfFinOrder x)
Goal: {y | ¬IsOfFinOrder y}.Infinite
-- finite_powers
@[to_additive (attr := simp)]
lemma finite_powers : (powers a : Set G).Finite ↔ IsOfFinOrder a 
Arguments: {G : Type u_1} [LeftCancelMonoid G] {a : G}
Goal: (↑(Submonoid.powers a)).Finite ↔ IsOfFinOrder a