ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- isCyclic_iff_exists_ofOrder_eq_natCard
@[to_additive]
lemma isCyclic_iff_exists_ofOrder_eq_natCard [Finite α] :
    IsCyclic α ↔ ∃ g : α, orderOf g = Nat.card α 
Arguments: {α : Type u} [Group α] [Finite α]
Goal: IsCyclic α ↔ ∃ g, orderOf g = Nat.card α
-- isAddCyclic_iff_exists_ofOrder_eq_natCard
@[to_additive]
lemma isCyclic_iff_exists_ofOrder_eq_natCard [Finite α] :
    IsCyclic α ↔ ∃ g : α, orderOf g = Nat.card α 
Arguments: {α : Type u} [AddGroup α] [Finite α]
Goal: IsAddCyclic α ↔ ∃ g, addOrderOf g = Nat.card α
-- IsCyclic.image_range_orderOf
@[to_additive]
theorem IsCyclic.image_range_orderOf (ha : ∀ x : α, x ∈ zpowers a) :
    Finset.image (fun i => a ^ i) (range (orderOf a)) = univ 
Arguments: {α : Type u} {a : α} [Group α] [DecidableEq α] [Fintype α] (ha : ∀ (x : α), x ∈ Subgroup.zpowers a)
Goal: Finset.image (fun i => a ^ i) (Finset.range (orderOf a)) = Finset.univ
-- IsAddCyclic.image_range_addOrderOf
@[to_additive]
theorem IsCyclic.image_range_orderOf (ha : ∀ x : α, x ∈ zpowers a) :
    Finset.image (fun i => a ^ i) (range (orderOf a)) = univ 
Arguments: {α : Type u} {a : α} [AddGroup α] [DecidableEq α] [Fintype α] (ha : ∀ (x : α), x ∈ AddSubgroup.zmultiples a)
Goal: Finset.image (fun i => i • a) (Finset.range (addOrderOf a)) = Finset.univ
-- IsAddCyclic.image_range_card
@[to_additive]
theorem IsCyclic.image_range_card (ha : ∀ x : α, x ∈ zpowers a) :
    Finset.image (fun i => a ^ i) (range (Fintype.card α)) = univ 
Arguments: {α : Type u} {a : α} [AddGroup α] [DecidableEq α] [Fintype α] (ha : ∀ (x : α), x ∈ AddSubgroup.zmultiples a)
Goal: Finset.image (fun i => i • a) (Finset.range (Fintype.card α)) = Finset.univ
-- IsCyclic.image_range_card
@[to_additive]
theorem IsCyclic.image_range_card (ha : ∀ x : α, x ∈ zpowers a) :
    Finset.image (fun i => a ^ i) (range (Fintype.card α)) = univ 
Arguments: {α : Type u} {a : α} [Group α] [DecidableEq α] [Fintype α] (ha : ∀ (x : α), x ∈ Subgroup.zpowers a)
Goal: Finset.image (fun i => a ^ i) (Finset.range (Fintype.card α)) = Finset.univ
-- IsCyclic.unique_zpow_zmod
@[to_additive]
theorem IsCyclic.unique_zpow_zmod (ha : ∀ x : α, x ∈ zpowers a) (x : α) :
    ∃! n : ZMod (Fintype.card α), x = a ^ n.val 
Arguments: {α : Type u} {a : α} [Group α] [Fintype α] (ha : ∀ (x : α), x ∈ Subgroup.zpowers a) (x : α)
Goal: ∃! n, x = a ^ n.val
-- IsAddCyclic.unique_zsmul_zmod
@[to_additive]
theorem IsCyclic.unique_zpow_zmod (ha : ∀ x : α, x ∈ zpowers a) (x : α) :
    ∃! n : ZMod (Fintype.card α), x = a ^ n.val 
Arguments: {α : Type u} {a : α} [AddGroup α] [Fintype α] (ha : ∀ (x : α), x ∈ AddSubgroup.zmultiples a) (x : α)
Goal: ∃! n, x = n.val • a
-- IsCyclic.ext
@[to_additive]
lemma IsCyclic.ext {G : Type*} [Group G] [Fintype G] [IsCyclic G] {d : ℕ} {a b : ZMod d}
    (hGcard : Fintype.card G = d) (h : ∀ t : G, t ^ a.val = t ^ b.val) : a = b 
Arguments: {G : Type u_1} [Group G] [Fintype G] [IsCyclic G] {d : ℕ} {a b : ZMod d} (hGcard : Fintype.card G = d) (h : ∀ (t : G), t ^ a.val = t ^ b.val)
Goal: a = b
-- IsAddCyclic.ext
@[to_additive]
lemma IsCyclic.ext {G : Type*} [Group G] [Fintype G] [IsCyclic G] {d : ℕ} {a b : ZMod d}
    (hGcard : Fintype.card G = d) (h : ∀ t : G, t ^ a.val = t ^ b.val) : a = b 
Arguments: {G : Type u_1} [AddGroup G] [Fintype G] [IsAddCyclic G] {d : ℕ} {a b : ZMod d} (hGcard : Fintype.card G = d) (h : ∀ (t : G), a.val • t = b.val • t)
Goal: a = b
-- _private.Mathlib.GroupTheory.SpecificGroups.Cyclic.0.card_pow_eq_one_eq_orderOf_aux
@[to_additive]
private theorem card_pow_eq_one_eq_orderOf_aux (a : α) :
    (Finset.univ.filter fun b : α => b ^ orderOf a = 1).card = orderOf a 
Arguments: {α : Type u} [Group α] [DecidableEq α] [Fintype α] (hn : ∀ (n : ℕ), 0 < n → (Finset.filter (fun a => a ^ n = 1) Finset.univ).card ≤ n) (a : α)
Goal: (Finset.filter (fun b => b ^ orderOf a = 1) Finset.univ).card = orderOf a
-- _private.Mathlib.GroupTheory.SpecificGroups.Cyclic.0.card_nsmul_eq_zero_eq_addOrderOf_aux
@[to_additive]
private theorem card_pow_eq_one_eq_orderOf_aux (a : α) :
    (Finset.univ.filter fun b : α => b ^ orderOf a = 1).card = orderOf a 
Arguments: {α : Type u} [AddGroup α] [DecidableEq α] [Fintype α] (hn : ∀ (n : ℕ), 0 < n → (Finset.filter (fun a => n • a = 0) Finset.univ).card ≤ n) (a : α)
Goal: (Finset.filter (fun b => addOrderOf a • b = 0) Finset.univ).card = addOrderOf a
-- _private.Mathlib.GroupTheory.SpecificGroups.Cyclic.0.card_orderOf_eq_totient_aux₁
@[to_additive]
private theorem card_orderOf_eq_totient_aux₁ :
    ∀ {d : ℕ},
      d ∣ Fintype.card α →
        0 < (univ.filter fun a : α => orderOf a = d).card →
          (univ.filter fun a : α => orderOf a = d).card = φ d 
Arguments: {α : Type u} [Group α] [DecidableEq α] [Fintype α] (hn : ∀ (n : ℕ), 0 < n → (Finset.filter (fun a => a ^ n = 1) Finset.univ).card ≤ n) {d : ℕ}
Goal: d ∣ Fintype.card α →
  0 < (Finset.filter (fun a => orderOf a = d) Finset.univ).card →
    (Finset.filter (fun a => orderOf a = d) Finset.univ).card = d.totient
-- _private.Mathlib.GroupTheory.SpecificGroups.Cyclic.0.card_addOrderOf_eq_totient_aux₁
@[to_additive]
private theorem card_orderOf_eq_totient_aux₁ :
    ∀ {d : ℕ},
      d ∣ Fintype.card α →
        0 < (univ.filter fun a : α => orderOf a = d).card →
          (univ.filter fun a : α => orderOf a = d).card = φ d 
Arguments: {α : Type u} [AddGroup α] [DecidableEq α] [Fintype α] (hn : ∀ (n : ℕ), 0 < n → (Finset.filter (fun a => n • a = 0) Finset.univ).card ≤ n) {d : ℕ}
Goal: d ∣ Fintype.card α →
  0 < (Finset.filter (fun a => addOrderOf a = d) Finset.univ).card →
    (Finset.filter (fun a => addOrderOf a = d) Finset.univ).card = d.totient
-- card_orderOf_eq_totient_aux₂
@[to_additive]
theorem card_orderOf_eq_totient_aux₂ {d : ℕ} (hd : d ∣ Fintype.card α) :
    (univ.filter fun a : α => orderOf a = d).card = φ d 
Arguments: {α : Type u} [Group α] [DecidableEq α] [Fintype α] (hn : ∀ (n : ℕ), 0 < n → (Finset.filter (fun a => a ^ n = 1) Finset.univ).card ≤ n) {d : ℕ} (hd : d ∣ Fintype.card α)
Goal: (Finset.filter (fun a => orderOf a = d) Finset.univ).card = d.totient
-- card_addOrderOf_eq_totient_aux₂
@[to_additive]
theorem card_orderOf_eq_totient_aux₂ {d : ℕ} (hd : d ∣ Fintype.card α) :
    (univ.filter fun a : α => orderOf a = d).card = φ d 
Arguments: {α : Type u} [AddGroup α] [DecidableEq α] [Fintype α] (hn : ∀ (n : ℕ), 0 < n → (Finset.filter (fun a => n • a = 0) Finset.univ).card ≤ n) {d : ℕ} (hd : d ∣ Fintype.card α)
Goal: (Finset.filter (fun a => addOrderOf a = d) Finset.univ).card = d.totient
-- isAddCyclic_of_card_nsmul_eq_zero_le
@[to_additive isAddCyclic_of_card_nsmul_eq_zero_le]
theorem isCyclic_of_card_pow_eq_one_le : IsCyclic α 
Arguments: {α : Type u} [AddGroup α] [DecidableEq α] [Fintype α] (hn : ∀ (n : ℕ), 0 < n → (Finset.filter (fun a => n • a = 0) Finset.univ).card ≤ n)
Goal: IsAddCyclic α
-- isCyclic_of_card_pow_eq_one_le
@[to_additive isAddCyclic_of_card_nsmul_eq_zero_le]
theorem isCyclic_of_card_pow_eq_one_le : IsCyclic α 
Arguments: {α : Type u} [Group α] [DecidableEq α] [Fintype α] (hn : ∀ (n : ℕ), 0 < n → (Finset.filter (fun a => a ^ n = 1) Finset.univ).card ≤ n)
Goal: IsCyclic α
-- IsCyclic.card_orderOf_eq_totient
@[to_additive]
theorem IsCyclic.card_orderOf_eq_totient [IsCyclic α] [Fintype α] {d : ℕ}
    (hd : d ∣ Fintype.card α) : (univ.filter fun a : α => orderOf a = d).card = totient d 
Arguments: {α : Type u} [Group α] [IsCyclic α] [Fintype α] {d : ℕ} (hd : d ∣ Fintype.card α)
Goal: (Finset.filter (fun a => orderOf a = d) Finset.univ).card = d.totient
-- IsAddCyclic.card_addOrderOf_eq_totient
@[to_additive]
theorem IsCyclic.card_orderOf_eq_totient [IsCyclic α] [Fintype α] {d : ℕ}
    (hd : d ∣ Fintype.card α) : (univ.filter fun a : α => orderOf a = d).card = totient d 
Arguments: {α : Type u} [AddGroup α] [IsAddCyclic α] [Fintype α] {d : ℕ} (hd : d ∣ Fintype.card α)
Goal: (Finset.filter (fun a => addOrderOf a = d) Finset.univ).card = d.totient
-- isSimpleGroup_of_prime_card
@[to_additive "A finite group of prime order is simple."]
theorem isSimpleGroup_of_prime_card {α : Type u} [Group α] [Fintype α] {p : ℕ} [hp : Fact p.Prime]
    (h : Fintype.card α = p) : IsSimpleGroup α 
Arguments: {α : Type u} [Group α] [Fintype α] {p : ℕ} [hp : Fact (Nat.Prime p)] (h : Fintype.card α = p)
Goal: IsSimpleGroup α
-- isSimpleAddGroup_of_prime_card
@[to_additive "A finite group of prime order is simple."]
theorem isSimpleGroup_of_prime_card {α : Type u} [Group α] [Fintype α] {p : ℕ} [hp : Fact p.Prime]
    (h : Fintype.card α = p) : IsSimpleGroup α 
Arguments: {α : Type u} [AddGroup α] [Fintype α] {p : ℕ} [hp : Fact (Nat.Prime p)] (h : Fintype.card α = p)
Goal: IsSimpleAddGroup α
-- commutative_of_cyclic_center_quotient
@[to_additive
      "A group is commutative if the quotient by the center is cyclic.
      Also see `addCommGroup_of_cycle_center_quotient` for the `AddCommGroup` instance."]
theorem commutative_of_cyclic_center_quotient [IsCyclic H] (f : G →* H) (hf : f.ker ≤ center G)
    (a b : G) : a * b = b * a 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] [IsCyclic H] (f : G →* H) (hf : f.ker ≤ Subgroup.center G) (a b : G)
Goal: a * b = b * a
-- commutative_of_addCyclic_center_quotient
@[to_additive
      "A group is commutative if the quotient by the center is cyclic.
      Also see `addCommGroup_of_cycle_center_quotient` for the `AddCommGroup` instance."]
theorem commutative_of_cyclic_center_quotient [IsCyclic H] (f : G →* H) (hf : f.ker ≤ center G)
    (a b : G) : a * b = b * a 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] [IsAddCyclic H] (f : G →+ H) (hf : f.ker ≤ AddSubgroup.center G) (a b : G)
Goal: a + b = b + a
-- IsSimpleGroup.prime_card
@[to_additive]
theorem prime_card [Fintype α] : (Fintype.card α).Prime 
Arguments: {α : Type u} [CommGroup α] [IsSimpleGroup α] [Fintype α]
Goal: Nat.Prime (Fintype.card α)
-- IsSimpleAddGroup.prime_card
@[to_additive]
theorem prime_card [Fintype α] : (Fintype.card α).Prime 
Arguments: {α : Type u} [AddCommGroup α] [IsSimpleAddGroup α] [Fintype α]
Goal: Nat.Prime (Fintype.card α)
-- CommGroup.is_simple_iff_isCyclic_and_prime_card
@[to_additive]
theorem CommGroup.is_simple_iff_isCyclic_and_prime_card [Fintype α] [CommGroup α] :
    IsSimpleGroup α ↔ IsCyclic α ∧ (Fintype.card α).Prime 
Arguments: {α : Type u} [Fintype α] [CommGroup α]
Goal: IsSimpleGroup α ↔ IsCyclic α ∧ Nat.Prime (Fintype.card α)
-- AddCommGroup.is_simple_iff_isAddCyclic_and_prime_card
@[to_additive]
theorem CommGroup.is_simple_iff_isCyclic_and_prime_card [Fintype α] [CommGroup α] :
    IsSimpleGroup α ↔ IsCyclic α ∧ (Fintype.card α).Prime 
Arguments: {α : Type u} [Fintype α] [AddCommGroup α]
Goal: IsSimpleAddGroup α ↔ IsAddCyclic α ∧ Nat.Prime (Fintype.card α)
-- IsAddCyclic.exponent_eq_card
@[to_additive]
theorem IsCyclic.exponent_eq_card [Group α] [IsCyclic α] [Fintype α] :
    exponent α = Fintype.card α 
Arguments: {α : Type u} [AddGroup α] [IsAddCyclic α] [Fintype α]
Goal: AddMonoid.exponent α = Fintype.card α
-- IsCyclic.exponent_eq_card
@[to_additive]
theorem IsCyclic.exponent_eq_card [Group α] [IsCyclic α] [Fintype α] :
    exponent α = Fintype.card α 
Arguments: {α : Type u} [Group α] [IsCyclic α] [Fintype α]
Goal: Monoid.exponent α = Fintype.card α
-- IsAddCyclic.of_exponent_eq_card
@[to_additive]
theorem IsCyclic.of_exponent_eq_card [CommGroup α] [Fintype α] (h : exponent α = Fintype.card α) :
    IsCyclic α 
Arguments: {α : Type u} [AddCommGroup α] [Fintype α] (h : AddMonoid.exponent α = Fintype.card α)
Goal: IsAddCyclic α
-- IsCyclic.of_exponent_eq_card
@[to_additive]
theorem IsCyclic.of_exponent_eq_card [CommGroup α] [Fintype α] (h : exponent α = Fintype.card α) :
    IsCyclic α 
Arguments: {α : Type u} [CommGroup α] [Fintype α] (h : Monoid.exponent α = Fintype.card α)
Goal: IsCyclic α
-- IsCyclic.iff_exponent_eq_card
@[to_additive]
theorem IsCyclic.iff_exponent_eq_card [CommGroup α] [Fintype α] :
    IsCyclic α ↔ exponent α = Fintype.card α 
Arguments: {α : Type u} [CommGroup α] [Fintype α]
Goal: IsCyclic α ↔ Monoid.exponent α = Fintype.card α
-- IsAddCyclic.iff_exponent_eq_card
@[to_additive]
theorem IsCyclic.iff_exponent_eq_card [CommGroup α] [Fintype α] :
    IsCyclic α ↔ exponent α = Fintype.card α 
Arguments: {α : Type u} [AddCommGroup α] [Fintype α]
Goal: IsAddCyclic α ↔ AddMonoid.exponent α = Fintype.card α
-- IsCyclic.exponent_eq_zero_of_infinite
@[to_additive]
theorem IsCyclic.exponent_eq_zero_of_infinite [Group α] [IsCyclic α] [Infinite α] :
    exponent α = 0 
Arguments: {α : Type u} [Group α] [IsCyclic α] [Infinite α]
Goal: Monoid.exponent α = 0
-- IsAddCyclic.exponent_eq_zero_of_infinite
@[to_additive]
theorem IsCyclic.exponent_eq_zero_of_infinite [Group α] [IsCyclic α] [Infinite α] :
    exponent α = 0 
Arguments: {α : Type u} [AddGroup α] [IsAddCyclic α] [Infinite α]
Goal: AddMonoid.exponent α = 0
-- ZMod.exponent
@[simp]
protected theorem ZMod.exponent (n : ℕ) : AddMonoid.exponent (ZMod n) = n 
Arguments: (n : ℕ)
Goal: AddMonoid.exponent (ZMod n) = n
-- not_isAddCyclic_iff_exponent_eq_prime
@[to_additive]
lemma not_isCyclic_iff_exponent_eq_prime [Group α] {p : ℕ} (hp : p.Prime)
    (hα : Nat.card α = p ^ 2) : ¬ IsCyclic α ↔ Monoid.exponent α = p 
Arguments: {α : Type u} [AddGroup α] {p : ℕ} (hp : Nat.Prime p) (hα : Nat.card α = p ^ 2)
Goal: ¬IsAddCyclic α ↔ AddMonoid.exponent α = p
-- not_isCyclic_iff_exponent_eq_prime
@[to_additive]
lemma not_isCyclic_iff_exponent_eq_prime [Group α] {p : ℕ} (hp : p.Prime)
    (hα : Nat.card α = p ^ 2) : ¬ IsCyclic α ↔ Monoid.exponent α = p 
Arguments: {α : Type u} [Group α] {p : ℕ} (hp : Nat.Prime p) (hα : Nat.card α = p ^ 2)
Goal: ¬IsCyclic α ↔ Monoid.exponent α = p
-- zmultiplesHom_ker_eq
theorem zmultiplesHom_ker_eq [AddGroup G] (g : G) :
    (zmultiplesHom G g).ker = zmultiples ↑(addOrderOf g) 
Arguments: {G : Type u_1} [AddGroup G] (g : G)
Goal: ((zmultiplesHom G) g).ker = AddSubgroup.zmultiples ↑(addOrderOf g)
-- zpowersHom_ker_eq
theorem zpowersHom_ker_eq [Group G] (g : G) :
    (zpowersHom G g).ker = zpowers (Multiplicative.ofAdd ↑(orderOf g)) 
Arguments: {G : Type u_1} [Group G] (g : G)
Goal: ((zpowersHom G) g).ker = Subgroup.zpowers (Multiplicative.ofAdd ↑(orderOf g))
-- addMonoidHomOfForallMemZmultiples_apply_gen
@[to_additive (attr := simp)]
lemma monoidHomOfForallMemZpowers_apply_gen :
    monoidHomOfForallMemZpowers hg hg' g = g' 
Arguments: {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] {g : G} (hg : ∀ (x : G), x ∈ AddSubgroup.zmultiples g) {g' : G'} (hg' : addOrderOf g' ∣ addOrderOf g)
Goal: (addMonoidHomOfForallMemZmultiples hg hg') g = g'
-- monoidHomOfForallMemZpowers_apply_gen
@[to_additive (attr := simp)]
lemma monoidHomOfForallMemZpowers_apply_gen :
    monoidHomOfForallMemZpowers hg hg' g = g' 
Arguments: {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] {g : G} (hg : ∀ (x : G), x ∈ Subgroup.zpowers g) {g' : G'} (hg' : orderOf g' ∣ orderOf g)
Goal: (monoidHomOfForallMemZpowers hg hg') g = g'
-- AddMonoidHom.eq_iff_eq_on_generator
@[to_additive
   "Two homomorphisms `G →+ G'` of additive groups are equal if and only if they agree
   on a generator of `G`."]
lemma MonoidHom.eq_iff_eq_on_generator (f₁ f₂ : G →* G') : f₁ = f₂ ↔ f₁ g = f₂ g 
Arguments: {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] {g : G} (hg : ∀ (x : G), x ∈ AddSubgroup.zmultiples g) (f₁ f₂ : G →+ G')
Goal: f₁ = f₂ ↔ f₁ g = f₂ g
-- MonoidHom.eq_iff_eq_on_generator
@[to_additive
   "Two homomorphisms `G →+ G'` of additive groups are equal if and only if they agree
   on a generator of `G`."]
lemma MonoidHom.eq_iff_eq_on_generator (f₁ f₂ : G →* G') : f₁ = f₂ ↔ f₁ g = f₂ g 
Arguments: {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] {g : G} (hg : ∀ (x : G), x ∈ Subgroup.zpowers g) (f₁ f₂ : G →* G')
Goal: f₁ = f₂ ↔ f₁ g = f₂ g
-- MulEquiv.eq_iff_eq_on_generator
@[to_additive
   "Two isomorphisms `G ≃+ G'` of additive groups are equal if and only if they agree
   on a generator of `G`."]
lemma MulEquiv.eq_iff_eq_on_generator (f₁ f₂ : G ≃* G') : f₁ = f₂ ↔ f₁ g = f₂ g 
Arguments: {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] {g : G} (hg : ∀ (x : G), x ∈ Subgroup.zpowers g) (f₁ f₂ : G ≃* G')
Goal: f₁ = f₂ ↔ f₁ g = f₂ g
-- AddEquiv.eq_iff_eq_on_generator
@[to_additive
   "Two isomorphisms `G ≃+ G'` of additive groups are equal if and only if they agree
   on a generator of `G`."]
lemma MulEquiv.eq_iff_eq_on_generator (f₁ f₂ : G ≃* G') : f₁ = f₂ ↔ f₁ g = f₂ g 
Arguments: {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] {g : G} (hg : ∀ (x : G), x ∈ AddSubgroup.zmultiples g) (f₁ f₂ : G ≃+ G')
Goal: f₁ = f₂ ↔ f₁ g = f₂ g
-- addEquivOfAddOrderOfEq_apply_gen
@[to_additive (attr := simp)]
lemma mulEquivOfOrderOfEq_apply_gen : mulEquivOfOrderOfEq hg hg' h g = g' 
Arguments: {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] {g : G} (hg : ∀ (x : G), x ∈ AddSubgroup.zmultiples g) {g' : G'} (hg' : ∀ (x : G'), x ∈ AddSubgroup.zmultiples g') (h : addOrderOf g = addOrderOf g')
Goal: (addEquivOfAddOrderOfEq hg hg' h) g = g'
-- mulEquivOfOrderOfEq_apply_gen
@[to_additive (attr := simp)]
lemma mulEquivOfOrderOfEq_apply_gen : mulEquivOfOrderOfEq hg hg' h g = g' 
Arguments: {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] {g : G} (hg : ∀ (x : G), x ∈ Subgroup.zpowers g) {g' : G'} (hg' : ∀ (x : G'), x ∈ Subgroup.zpowers g') (h : orderOf g = orderOf g')
Goal: (mulEquivOfOrderOfEq hg hg' h) g = g'
-- mulEquivOfOrderOfEq_symm
@[to_additive (attr := simp)]
lemma mulEquivOfOrderOfEq_symm :
    (mulEquivOfOrderOfEq hg hg' h).symm = mulEquivOfOrderOfEq hg' hg h.symm 
Arguments: {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] {g : G} (hg : ∀ (x : G), x ∈ Subgroup.zpowers g) {g' : G'} (hg' : ∀ (x : G'), x ∈ Subgroup.zpowers g') (h : orderOf g = orderOf g')
Goal: (mulEquivOfOrderOfEq hg hg' h).symm = mulEquivOfOrderOfEq hg' hg ⋯
-- addEquivOfAddOrderOfEq_symm
@[to_additive (attr := simp)]
lemma mulEquivOfOrderOfEq_symm :
    (mulEquivOfOrderOfEq hg hg' h).symm = mulEquivOfOrderOfEq hg' hg h.symm 
Arguments: {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] {g : G} (hg : ∀ (x : G), x ∈ AddSubgroup.zmultiples g) {g' : G'} (hg' : ∀ (x : G'), x ∈ AddSubgroup.zmultiples g') (h : addOrderOf g = addOrderOf g')
Goal: (addEquivOfAddOrderOfEq hg hg' h).symm = addEquivOfAddOrderOfEq hg' hg ⋯
-- addEquivOfAddOrderOfEq_symm_apply_gen
@[to_additive] -- `simp` can prove this by a combination of the two preceding lemmas
lemma mulEquivOfOrderOfEq_symm_apply_gen : (mulEquivOfOrderOfEq hg hg' h).symm g' = g 
Arguments: {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] {g : G} (hg : ∀ (x : G), x ∈ AddSubgroup.zmultiples g) {g' : G'} (hg' : ∀ (x : G'), x ∈ AddSubgroup.zmultiples g') (h : addOrderOf g = addOrderOf g')
Goal: (addEquivOfAddOrderOfEq hg hg' h).symm g' = g
-- mulEquivOfOrderOfEq_symm_apply_gen
@[to_additive] -- `simp` can prove this by a combination of the two preceding lemmas
lemma mulEquivOfOrderOfEq_symm_apply_gen : (mulEquivOfOrderOfEq hg hg' h).symm g' = g 
Arguments: {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] {g : G} (hg : ∀ (x : G), x ∈ Subgroup.zpowers g) {g' : G'} (hg' : ∀ (x : G'), x ∈ Subgroup.zpowers g') (h : orderOf g = orderOf g')
Goal: (mulEquivOfOrderOfEq hg hg' h).symm g' = g
-- AddSubgroup.isComplement'_def
@[to_additive]
theorem isComplement'_def : IsComplement' H K ↔ IsComplement (H : Set G) (K : Set G) 
Arguments: {G : Type u_1} [AddGroup G] {H K : AddSubgroup G}
Goal: H.IsComplement' K ↔ AddSubgroup.IsComplement ↑H ↑K
-- Subgroup.isComplement'_def
@[to_additive]
theorem isComplement'_def : IsComplement' H K ↔ IsComplement (H : Set G) (K : Set G) 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G}
Goal: H.IsComplement' K ↔ Subgroup.IsComplement ↑H ↑K
-- Subgroup.isComplement_iff_existsUnique
@[to_additive]
theorem isComplement_iff_existsUnique :
    IsComplement S T ↔ ∀ g : G, ∃! x : S × T, x.1.1 * x.2.1 = g 
Arguments: {G : Type u_1} [Group G] {S T : Set G}
Goal: Subgroup.IsComplement S T ↔ ∀ (g : G), ∃! x, ↑x.1 * ↑x.2 = g
-- AddSubgroup.isComplement_iff_existsUnique
@[to_additive]
theorem isComplement_iff_existsUnique :
    IsComplement S T ↔ ∀ g : G, ∃! x : S × T, x.1.1 * x.2.1 = g 
Arguments: {G : Type u_1} [AddGroup G] {S T : Set G}
Goal: AddSubgroup.IsComplement S T ↔ ∀ (g : G), ∃! x, ↑x.1 + ↑x.2 = g
-- Subgroup.IsComplement.existsUnique
@[to_additive]
theorem IsComplement.existsUnique (h : IsComplement S T) (g : G) :
    ∃! x : S × T, x.1.1 * x.2.1 = g 
Arguments: {G : Type u_1} [Group G] {S T : Set G} (h : Subgroup.IsComplement S T) (g : G)
Goal: ∃! x, ↑x.1 * ↑x.2 = g
-- AddSubgroup.IsComplement.existsUnique
@[to_additive]
theorem IsComplement.existsUnique (h : IsComplement S T) (g : G) :
    ∃! x : S × T, x.1.1 * x.2.1 = g 
Arguments: {G : Type u_1} [AddGroup G] {S T : Set G} (h : AddSubgroup.IsComplement S T) (g : G)
Goal: ∃! x, ↑x.1 + ↑x.2 = g
-- AddSubgroup.IsComplement'.symm
@[to_additive]
theorem IsComplement'.symm (h : IsComplement' H K) : IsComplement' K H 
Arguments: {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (h : H.IsComplement' K)
Goal: K.IsComplement' H
-- Subgroup.IsComplement'.symm
@[to_additive]
theorem IsComplement'.symm (h : IsComplement' H K) : IsComplement' K H 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} (h : H.IsComplement' K)
Goal: K.IsComplement' H
-- Subgroup.isComplement'_comm
@[to_additive]
theorem isComplement'_comm : IsComplement' H K ↔ IsComplement' K H 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G}
Goal: H.IsComplement' K ↔ K.IsComplement' H
-- AddSubgroup.isComplement'_comm
@[to_additive]
theorem isComplement'_comm : IsComplement' H K ↔ IsComplement' K H 
Arguments: {G : Type u_1} [AddGroup G] {H K : AddSubgroup G}
Goal: H.IsComplement' K ↔ K.IsComplement' H
-- AddSubgroup.isComplement_univ_singleton
@[to_additive]
theorem isComplement_univ_singleton {g : G} : IsComplement (univ : Set G) {g} 
Arguments: {G : Type u_1} [AddGroup G] {g : G}
Goal: AddSubgroup.IsComplement Set.univ {g}
-- Subgroup.isComplement_univ_singleton
@[to_additive]
theorem isComplement_univ_singleton {g : G} : IsComplement (univ : Set G) {g} 
Arguments: {G : Type u_1} [Group G] {g : G}
Goal: Subgroup.IsComplement Set.univ {g}
-- Subgroup.isComplement_singleton_univ
@[to_additive]
theorem isComplement_singleton_univ {g : G} : IsComplement ({g} : Set G) univ 
Arguments: {G : Type u_1} [Group G] {g : G}
Goal: Subgroup.IsComplement {g} Set.univ
-- AddSubgroup.isComplement_singleton_univ
@[to_additive]
theorem isComplement_singleton_univ {g : G} : IsComplement ({g} : Set G) univ 
Arguments: {G : Type u_1} [AddGroup G] {g : G}
Goal: AddSubgroup.IsComplement {g} Set.univ
-- Subgroup.isComplement_singleton_left
@[to_additive]
theorem isComplement_singleton_left {g : G} : IsComplement {g} S ↔ S = univ 
Arguments: {G : Type u_1} [Group G] {S : Set G} {g : G}
Goal: Subgroup.IsComplement {g} S ↔ S = Set.univ
-- AddSubgroup.isComplement_singleton_left
@[to_additive]
theorem isComplement_singleton_left {g : G} : IsComplement {g} S ↔ S = univ 
Arguments: {G : Type u_1} [AddGroup G] {S : Set G} {g : G}
Goal: AddSubgroup.IsComplement {g} S ↔ S = Set.univ
-- AddSubgroup.isComplement_singleton_right
@[to_additive]
theorem isComplement_singleton_right {g : G} : IsComplement S {g} ↔ S = univ 
Arguments: {G : Type u_1} [AddGroup G] {S : Set G} {g : G}
Goal: AddSubgroup.IsComplement S {g} ↔ S = Set.univ
-- Subgroup.isComplement_singleton_right
@[to_additive]
theorem isComplement_singleton_right {g : G} : IsComplement S {g} ↔ S = univ 
Arguments: {G : Type u_1} [Group G] {S : Set G} {g : G}
Goal: Subgroup.IsComplement S {g} ↔ S = Set.univ
-- AddSubgroup.isComplement_univ_left
@[to_additive]
theorem isComplement_univ_left : IsComplement univ S ↔ ∃ g : G, S = {g} 
Arguments: {G : Type u_1} [AddGroup G] {S : Set G}
Goal: AddSubgroup.IsComplement Set.univ S ↔ ∃ g, S = {g}
-- Subgroup.isComplement_univ_left
@[to_additive]
theorem isComplement_univ_left : IsComplement univ S ↔ ∃ g : G, S = {g} 
Arguments: {G : Type u_1} [Group G] {S : Set G}
Goal: Subgroup.IsComplement Set.univ S ↔ ∃ g, S = {g}
-- AddSubgroup.isComplement_univ_right
@[to_additive]
theorem isComplement_univ_right : IsComplement S univ ↔ ∃ g : G, S = {g} 
Arguments: {G : Type u_1} [AddGroup G] {S : Set G}
Goal: AddSubgroup.IsComplement S Set.univ ↔ ∃ g, S = {g}
-- Subgroup.isComplement_univ_right
@[to_additive]
theorem isComplement_univ_right : IsComplement S univ ↔ ∃ g : G, S = {g} 
Arguments: {G : Type u_1} [Group G] {S : Set G}
Goal: Subgroup.IsComplement S Set.univ ↔ ∃ g, S = {g}