ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- IsPGroup.of_injective
theorem of_injective {H : Type*} [Group H] (ϕ : H →* G) (hϕ : Function.Injective ϕ) :
    IsPGroup p H 
Arguments: {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) {H : Type u_2} [Group H] (ϕ : H →* G) (hϕ : Function.Injective ⇑ϕ)
Goal: IsPGroup p H
-- IsPGroup.to_subgroup
theorem to_subgroup (H : Subgroup G) : IsPGroup p H 
Arguments: {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) (H : Subgroup G)
Goal: IsPGroup p ↥H
-- IsPGroup.of_surjective
theorem of_surjective {H : Type*} [Group H] (ϕ : G →* H) (hϕ : Function.Surjective ϕ) :
    IsPGroup p H 
Arguments: {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) {H : Type u_2} [Group H] (ϕ : G →* H) (hϕ : Function.Surjective ⇑ϕ)
Goal: IsPGroup p H
-- IsPGroup.to_quotient
theorem to_quotient (H : Subgroup G) [H.Normal] : IsPGroup p (G ⧸ H) 
Arguments: {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) (H : Subgroup G) [H.Normal]
Goal: IsPGroup p (G ⧸ H)
-- IsPGroup.of_equiv
theorem of_equiv {H : Type*} [Group H] (ϕ : G ≃* H) : IsPGroup p H 
Arguments: {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) {H : Type u_2} [Group H] (ϕ : G ≃* H)
Goal: IsPGroup p H
-- IsPGroup.orderOf_coprime
theorem orderOf_coprime {n : ℕ} (hn : p.Coprime n) (g : G) : (orderOf g).Coprime n 
Arguments: {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) {n : ℕ} (hn : p.Coprime n) (g : G)
Goal: (orderOf g).Coprime n
-- IsPGroup.powEquiv_apply
@[simp]
theorem powEquiv_apply {n : ℕ} (hn : p.Coprime n) (g : G) : hG.powEquiv hn g = g ^ n 
Arguments: {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) {n : ℕ} (hn : p.Coprime n) (g : G)
Goal: (hG.powEquiv hn) g = g ^ n
-- IsPGroup.powEquiv_symm_apply
@[simp]
theorem powEquiv_symm_apply {n : ℕ} (hn : p.Coprime n) (g : G) :
    (hG.powEquiv hn).symm g = g ^ (orderOf g).gcdB n 
Arguments: {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) {n : ℕ} (hn : p.Coprime n) (g : G)
Goal: (hG.powEquiv hn).symm g = g ^ (orderOf g).gcdB n
-- IsPGroup.index
theorem index (H : Subgroup G) [H.FiniteIndex] : ∃ n : ℕ, H.index = p ^ n 
Arguments: {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) [hp : Fact (Nat.Prime p)] (H : Subgroup G) [H.FiniteIndex]
Goal: ∃ n, H.index = p ^ n
-- IsPGroup.card_eq_or_dvd
theorem card_eq_or_dvd : Nat.card G = 1 ∨ p ∣ Nat.card G 
Arguments: {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) [hp : Fact (Nat.Prime p)]
Goal: Nat.card G = 1 ∨ p ∣ Nat.card G
-- IsPGroup.nontrivial_iff_card
theorem nontrivial_iff_card [Finite G] : Nontrivial G ↔ ∃ n > 0, Nat.card G = p ^ n 
Arguments: {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) [hp : Fact (Nat.Prime p)] [Finite G]
Goal: Nontrivial G ↔ ∃ n > 0, Nat.card G = p ^ n
-- IsPGroup.card_orbit
theorem card_orbit (a : α) [Finite (orbit G a)] : ∃ n : ℕ, Nat.card (orbit G a) = p ^ n 
Arguments: {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) [hp : Fact (Nat.Prime p)] {α : Type u_2} [MulAction G α] (a : α) [Finite ↑(MulAction.orbit G a)]
Goal: ∃ n, Nat.card ↑(MulAction.orbit G a) = p ^ n
-- IsPGroup.card_modEq_card_fixedPoints
theorem card_modEq_card_fixedPoints : Nat.card α ≡ Nat.card (fixedPoints G α) [MOD p] 
Arguments: {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) [hp : Fact (Nat.Prime p)] (α : Type u_2) [MulAction G α] [Finite α]
Goal: Nat.card α ≡ Nat.card ↑(MulAction.fixedPoints G α) [MOD p]
-- IsPGroup.nonempty_fixed_point_of_prime_not_dvd_card
theorem nonempty_fixed_point_of_prime_not_dvd_card (hpα : ¬p ∣ Nat.card α) :
    (fixedPoints G α).Nonempty 
Arguments: {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) [hp : Fact (Nat.Prime p)] (α : Type u_2) [MulAction G α] (hpα : ¬p ∣ Nat.card α)
Goal: (MulAction.fixedPoints G α).Nonempty
-- IsPGroup.exists_fixed_point_of_prime_dvd_card_of_fixed_point
theorem exists_fixed_point_of_prime_dvd_card_of_fixed_point (hpα : p ∣ Nat.card α) {a : α}
    (ha : a ∈ fixedPoints G α) : ∃ b, b ∈ fixedPoints G α ∧ a ≠ b 
Arguments: {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) [hp : Fact (Nat.Prime p)] (α : Type u_2) [MulAction G α] [Finite α] (hpα : p ∣ Nat.card α) {a : α} (ha : a ∈ MulAction.fixedPoints G α)
Goal: ∃ b ∈ MulAction.fixedPoints G α, a ≠ b
-- IsPGroup.center_nontrivial
theorem center_nontrivial [Nontrivial G] [Finite G] : Nontrivial (Subgroup.center G) 
Arguments: {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) [hp : Fact (Nat.Prime p)] [Nontrivial G] [Finite G]
Goal: Nontrivial ↥(Subgroup.center G)
-- IsPGroup.bot_lt_center
theorem bot_lt_center [Nontrivial G] [Finite G] : ⊥ < Subgroup.center G 
Arguments: {p : ℕ} {G : Type u_1} [Group G] (hG : IsPGroup p G) [hp : Fact (Nat.Prime p)] [Nontrivial G] [Finite G]
Goal: ⊥ < Subgroup.center G
-- IsPGroup.to_le
theorem to_le {H K : Subgroup G} (hK : IsPGroup p K) (hHK : H ≤ K) : IsPGroup p H 
Arguments: {p : ℕ} {G : Type u_1} [Group G] {H K : Subgroup G} (hK : IsPGroup p ↥K) (hHK : H ≤ K)
Goal: IsPGroup p ↥H
-- IsPGroup.to_inf_left
theorem to_inf_left {H K : Subgroup G} (hH : IsPGroup p H) : IsPGroup p (H ⊓ K : Subgroup G) 
Arguments: {p : ℕ} {G : Type u_1} [Group G] {H K : Subgroup G} (hH : IsPGroup p ↥H)
Goal: IsPGroup p ↥(H ⊓ K)
-- IsPGroup.to_inf_right
theorem to_inf_right {H K : Subgroup G} (hK : IsPGroup p K) : IsPGroup p (H ⊓ K : Subgroup G) 
Arguments: {p : ℕ} {G : Type u_1} [Group G] {H K : Subgroup G} (hK : IsPGroup p ↥K)
Goal: IsPGroup p ↥(H ⊓ K)
-- IsPGroup.map
theorem map {H : Subgroup G} (hH : IsPGroup p H) {K : Type*} [Group K] (ϕ : G →* K) :
    IsPGroup p (H.map ϕ) 
Arguments: {p : ℕ} {G : Type u_1} [Group G] {H : Subgroup G} (hH : IsPGroup p ↥H) {K : Type u_2} [Group K] (ϕ : G →* K)
Goal: IsPGroup p ↥(Subgroup.map ϕ H)
-- IsPGroup.comap_of_ker_isPGroup
theorem comap_of_ker_isPGroup {H : Subgroup G} (hH : IsPGroup p H) {K : Type*} [Group K]
    (ϕ : K →* G) (hϕ : IsPGroup p ϕ.ker) : IsPGroup p (H.comap ϕ) 
Arguments: {p : ℕ} {G : Type u_1} [Group G] {H : Subgroup G} (hH : IsPGroup p ↥H) {K : Type u_2} [Group K] (ϕ : K →* G) (hϕ : IsPGroup p ↥ϕ.ker)
Goal: IsPGroup p ↥(Subgroup.comap ϕ H)
-- IsPGroup.ker_isPGroup_of_injective
theorem ker_isPGroup_of_injective {K : Type*} [Group K] {ϕ : K →* G} (hϕ : Function.Injective ϕ) :
    IsPGroup p ϕ.ker 
Arguments: {p : ℕ} {G : Type u_1} [Group G] {K : Type u_2} [Group K] {ϕ : K →* G} (hϕ : Function.Injective ⇑ϕ)
Goal: IsPGroup p ↥ϕ.ker
-- IsPGroup.comap_of_injective
theorem comap_of_injective {H : Subgroup G} (hH : IsPGroup p H) {K : Type*} [Group K] (ϕ : K →* G)
    (hϕ : Function.Injective ϕ) : IsPGroup p (H.comap ϕ) 
Arguments: {p : ℕ} {G : Type u_1} [Group G] {H : Subgroup G} (hH : IsPGroup p ↥H) {K : Type u_2} [Group K] (ϕ : K →* G) (hϕ : Function.Injective ⇑ϕ)
Goal: IsPGroup p ↥(Subgroup.comap ϕ H)
-- IsPGroup.comap_subtype
theorem comap_subtype {H : Subgroup G} (hH : IsPGroup p H) {K : Subgroup G} :
    IsPGroup p (H.comap K.subtype) 
Arguments: {p : ℕ} {G : Type u_1} [Group G] {H : Subgroup G} (hH : IsPGroup p ↥H) {K : Subgroup G}
Goal: IsPGroup p ↥(Subgroup.comap K.subtype H)
-- IsPGroup.to_sup_of_normal_right
theorem to_sup_of_normal_right {H K : Subgroup G} (hH : IsPGroup p H) (hK : IsPGroup p K)
    [K.Normal] : IsPGroup p (H ⊔ K : Subgroup G) 
Arguments: {p : ℕ} {G : Type u_1} [Group G] {H K : Subgroup G} (hH : IsPGroup p ↥H) (hK : IsPGroup p ↥K) [K.Normal]
Goal: IsPGroup p ↥(H ⊔ K)
-- IsPGroup.to_sup_of_normal_left
theorem to_sup_of_normal_left {H K : Subgroup G} (hH : IsPGroup p H) (hK : IsPGroup p K)
    [H.Normal] : IsPGroup p (H ⊔ K : Subgroup G) 
Arguments: {p : ℕ} {G : Type u_1} [Group G] {H K : Subgroup G} (hH : IsPGroup p ↥H) (hK : IsPGroup p ↥K) [H.Normal]
Goal: IsPGroup p ↥(H ⊔ K)
-- IsPGroup.to_sup_of_normal_right'
theorem to_sup_of_normal_right' {H K : Subgroup G} (hH : IsPGroup p H) (hK : IsPGroup p K)
    (hHK : H ≤ K.normalizer) : IsPGroup p (H ⊔ K : Subgroup G) 
Arguments: {p : ℕ} {G : Type u_1} [Group G] {H K : Subgroup G} (hH : IsPGroup p ↥H) (hK : IsPGroup p ↥K) (hHK : H ≤ K.normalizer)
Goal: IsPGroup p ↥(H ⊔ K)
-- IsPGroup.to_sup_of_normal_left'
theorem to_sup_of_normal_left' {H K : Subgroup G} (hH : IsPGroup p H) (hK : IsPGroup p K)
    (hHK : K ≤ H.normalizer) : IsPGroup p (H ⊔ K : Subgroup G) 
Arguments: {p : ℕ} {G : Type u_1} [Group G] {H K : Subgroup G} (hH : IsPGroup p ↥H) (hK : IsPGroup p ↥K) (hHK : K ≤ H.normalizer)
Goal: IsPGroup p ↥(H ⊔ K)
-- IsPGroup.coprime_card_of_ne
theorem coprime_card_of_ne {G₂ : Type*} [Group G₂] (p₁ p₂ : ℕ) [hp₁ : Fact p₁.Prime]
    [hp₂ : Fact p₂.Prime] (hne : p₁ ≠ p₂) (H₁ : Subgroup G) (H₂ : Subgroup G₂) [Finite H₁]
    [Finite H₂] (hH₁ : IsPGroup p₁ H₁) (hH₂ : IsPGroup p₂ H₂) :
    Nat.Coprime (Nat.card H₁) (Nat.card H₂) 
Arguments: {G : Type u_1} [Group G] {G₂ : Type u_2} [Group G₂] (p₁ p₂ : ℕ) [hp₁ : Fact (Nat.Prime p₁)] [hp₂ : Fact (Nat.Prime p₂)] (hne : p₁ ≠ p₂) (H₁ : Subgroup G) (H₂ : Subgroup G₂) [Finite ↥H₁] [Finite ↥H₂] (hH₁ : IsPGroup p₁ ↥H₁) (hH₂ : IsPGroup p₂ ↥H₂)
Goal: (Nat.card ↥H₁).Coprime (Nat.card ↥H₂)
-- IsPGroup.disjoint_of_ne
theorem disjoint_of_ne (p₁ p₂ : ℕ) [hp₁ : Fact p₁.Prime] [hp₂ : Fact p₂.Prime] (hne : p₁ ≠ p₂)
    (H₁ H₂ : Subgroup G) (hH₁ : IsPGroup p₁ H₁) (hH₂ : IsPGroup p₂ H₂) : Disjoint H₁ H₂ 
Arguments: {G : Type u_1} [Group G] (p₁ p₂ : ℕ) [hp₁ : Fact (Nat.Prime p₁)] [hp₂ : Fact (Nat.Prime p₂)] (hne : p₁ ≠ p₂) (H₁ H₂ : Subgroup G) (hH₁ : IsPGroup p₁ ↥H₁) (hH₂ : IsPGroup p₂ ↥H₂)
Goal: Disjoint H₁ H₂
-- IsPGroup.card_center_eq_prime_pow
theorem card_center_eq_prime_pow (hn : 0 < n) :
    ∃ k > 0, Nat.card (center G) = p ^ k 
Arguments: {p : ℕ} {G : Type u_1} [Group G] [Fact (Nat.Prime p)] {n : ℕ} (hGpn : Nat.card G = p ^ n) (hn : 0 < n)
Goal: ∃ k > 0, Nat.card ↥(Subgroup.center G) = p ^ k
-- IsPGroup.cyclic_center_quotient_of_card_eq_prime_sq
theorem cyclic_center_quotient_of_card_eq_prime_sq (hG : Nat.card G = p ^ 2) :
    IsCyclic (G ⧸ center G) 
Arguments: {p : ℕ} {G : Type u_1} [Group G] [Fact (Nat.Prime p)] (hG : Nat.card G = p ^ 2)
Goal: IsCyclic (G ⧸ Subgroup.center G)
-- IsPGroup.commutative_of_card_eq_prime_sq
theorem commutative_of_card_eq_prime_sq (hG : Nat.card G = p ^ 2) : ∀ a b : G, a * b = b * a 
Arguments: {p : ℕ} {G : Type u_1} [Group G] [Fact (Nat.Prime p)] (hG : Nat.card G = p ^ 2) (a b : G)
Goal: a * b = b * a
-- frattini_le_coatom
lemma frattini_le_coatom {K : Subgroup G} (h : IsCoatom K) : frattini G ≤ K 
Arguments: {G : Type u_1} [Group G] {K : Subgroup G} (h : IsCoatom K)
Goal: frattini G ≤ K
-- frattini_le_comap_frattini_of_surjective
lemma frattini_le_comap_frattini_of_surjective : frattini G ≤ (frattini H).comap φ 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] {φ : G →* H} (hφ : Function.Surjective ⇑φ)
Goal: frattini G ≤ Subgroup.comap φ (frattini H)
-- frattini_nongenerating
theorem frattini_nongenerating [IsCoatomic (Subgroup G)] {K : Subgroup G}
    (h : K ⊔ frattini G = ⊤) : K = ⊤ 
Arguments: {G : Type u_1} [Group G] [IsCoatomic (Subgroup G)] {K : Subgroup G} (h : K ⊔ frattini G = ⊤)
Goal: K = ⊤
-- frattini_nilpotent
theorem frattini_nilpotent [Finite G] : Group.IsNilpotent (frattini G) 
Arguments: {G : Type u_1} [Group G] [Finite G]
Goal: Group.IsNilpotent ↥(frattini G)
-- commutator_def
theorem commutator_def : commutator G = ⁅(⊤ : Subgroup G), ⊤⁆ 
Arguments: (G : Type u) [Group G]
Goal: commutator G = ⁅⊤, ⊤⁆
-- commutator_eq_closure
theorem commutator_eq_closure : commutator G = Subgroup.closure (commutatorSet G) 
Arguments: (G : Type u) [Group G]
Goal: commutator G = Subgroup.closure (commutatorSet G)
-- commutator_eq_normalClosure
theorem commutator_eq_normalClosure : commutator G = Subgroup.normalClosure (commutatorSet G) 
Arguments: (G : Type u) [Group G]
Goal: commutator G = Subgroup.normalClosure (commutatorSet G)
-- rank_commutator_le_card
theorem rank_commutator_le_card [Finite (commutatorSet G)] :
    Group.rank (commutator G) ≤ Nat.card (commutatorSet G) 
Arguments: (G : Type u) [Group G] [Finite ↑(commutatorSet G)]
Goal: Group.rank ↥(commutator G) ≤ Nat.card ↑(commutatorSet G)
-- commutator_centralizer_commutator_le_center
theorem commutator_centralizer_commutator_le_center :
    ⁅centralizer (commutator G : Set G), centralizer (commutator G)⁆ ≤ Subgroup.center G 
Arguments: (G : Type u) [Group G]
Goal: ⁅Subgroup.centralizer ↑(commutator G), Subgroup.centralizer ↑(commutator G)⁆ ≤ Subgroup.center G
-- Abelianization.mk_eq_of
@[simp]
theorem mk_eq_of (a : G) : Quot.mk _ a = of a 
Arguments: {G : Type u} [Group G] (a : G)
Goal: Quot.mk Setoid.r a = Abelianization.of a
-- Abelianization.commutator_subset_ker
theorem commutator_subset_ker : commutator G ≤ f.ker 
Arguments: {G : Type u} [Group G] {A : Type v} [CommGroup A] (f : G →* A)
Goal: commutator G ≤ f.ker
-- Abelianization.lift.of
@[simp]
theorem lift.of (x : G) : lift f (of x) = f x 
Arguments: {G : Type u} [Group G] {A : Type v} [CommGroup A] (f : G →* A) (x : G)
Goal: (Abelianization.lift f) (Abelianization.of x) = f x
-- Abelianization.lift.unique
theorem lift.unique (φ : Abelianization G →* A)
    -- hφ : φ agrees with f on the image of G in Gᵃᵇ
    (hφ : ∀ x : G, φ (Abelianization.of x) = f x)
    {x : Abelianization G} : φ x = lift f x 
Arguments: {G : Type u} [Group G] {A : Type v} [CommGroup A] (f : G →* A) (φ : Abelianization G →* A) (hφ : ∀ (x : G), φ (Abelianization.of x) = f x) {x : Abelianization G}
Goal: φ x = (Abelianization.lift f) x
-- Abelianization.lift_of
@[simp]
theorem lift_of : lift of = MonoidHom.id (Abelianization G) 
Arguments: {G : Type u} [Group G]
Goal: Abelianization.lift Abelianization.of = MonoidHom.id (Abelianization G)
-- Abelianization.hom_ext
@[ext]
theorem hom_ext (φ ψ : Abelianization G →* A) (h : φ.comp of = ψ.comp of) : φ = ψ 
Arguments: {G : Type u} [Group G] {A : Type v} [Monoid A] (φ ψ : Abelianization G →* A) (h : φ.comp Abelianization.of = ψ.comp Abelianization.of)
Goal: φ = ψ
-- Abelianization.lift_of_comp
@[simp] theorem lift_of_comp :
    Abelianization.lift (Abelianization.of.comp f) = Abelianization.map f 
Arguments: {G : Type u} [Group G] {H : Type v} [Group H] (f : G →* H)
Goal: Abelianization.lift (Abelianization.of.comp f) = Abelianization.map f
-- Abelianization.map_of
@[simp]
theorem map_of (x : G) : map f (of x) = of (f x) 
Arguments: {G : Type u} [Group G] {H : Type v} [Group H] (f : G →* H) (x : G)
Goal: (Abelianization.map f) (Abelianization.of x) = Abelianization.of (f x)
-- Abelianization.map_id
@[simp]
theorem map_id : map (MonoidHom.id G) = MonoidHom.id (Abelianization G) 
Arguments: {G : Type u} [Group G]
Goal: Abelianization.map (MonoidHom.id G) = MonoidHom.id (Abelianization G)
-- Abelianization.map_comp
@[simp]
theorem map_comp {I : Type w} [Group I] (g : H →* I) : (map g).comp (map f) = map (g.comp f) 
Arguments: {G : Type u} [Group G] {H : Type v} [Group H] (f : G →* H) {I : Type w} [Group I] (g : H →* I)
Goal: (Abelianization.map g).comp (Abelianization.map f) = Abelianization.map (g.comp f)
-- Abelianization.map_map_apply
@[simp]
theorem map_map_apply {I : Type w} [Group I] {g : H →* I} {x : Abelianization G} :
    map g (map f x) = map (g.comp f) x 
Arguments: {G : Type u} [Group G] {H : Type v} [Group H] (f : G →* H) {I : Type w} [Group I] {g : H →* I} {x : Abelianization G}
Goal: (Abelianization.map g) ((Abelianization.map f) x) = (Abelianization.map (g.comp f)) x
-- abelianizationCongr_of
@[simp]
theorem abelianizationCongr_of (x : G) :
    e.abelianizationCongr (Abelianization.of x) = Abelianization.of (e x) 
Arguments: {G : Type u} [Group G] {H : Type v} [Group H] (e : G ≃* H) (x : G)
Goal: e.abelianizationCongr (Abelianization.of x) = Abelianization.of (e x)
-- abelianizationCongr_refl
@[simp]
theorem abelianizationCongr_refl :
    (MulEquiv.refl G).abelianizationCongr = MulEquiv.refl (Abelianization G) 
Arguments: {G : Type u} [Group G]
Goal: (MulEquiv.refl G).abelianizationCongr = MulEquiv.refl (Abelianization G)
-- abelianizationCongr_symm
@[simp]
theorem abelianizationCongr_symm : e.abelianizationCongr.symm = e.symm.abelianizationCongr 
Arguments: {G : Type u} [Group G] {H : Type v} [Group H] (e : G ≃* H)
Goal: e.abelianizationCongr.symm = e.symm.abelianizationCongr
-- abelianizationCongr_trans
@[simp]
theorem abelianizationCongr_trans {I : Type v} [Group I] (e₂ : H ≃* I) :
    e.abelianizationCongr.trans e₂.abelianizationCongr = (e.trans e₂).abelianizationCongr 
Arguments: {G : Type u} [Group G] {H : Type v} [Group H] (e : G ≃* H) {I : Type v} [Group I] (e₂ : H ≃* I)
Goal: e.abelianizationCongr.trans e₂.abelianizationCongr = (e.trans e₂).abelianizationCongr
-- Abelianization.equivOfComm_symm_apply
@[simps]
def Abelianization.equivOfComm {H : Type*} [CommGroup H] : H ≃* Abelianization H 
Arguments: {H : Type u_1} [CommGroup H] (a : Abelianization H)
Goal: Abelianization.equivOfComm.symm a = (Abelianization.lift (MonoidHom.id H)) a
-- Abelianization.equivOfComm_apply
@[simps]
def Abelianization.equivOfComm {H : Type*} [CommGroup H] : H ≃* Abelianization H 
Arguments: {H : Type u_1} [CommGroup H] (a : H)
Goal: Abelianization.equivOfComm a = Abelianization.of a
-- rank_closureCommutatorRepresentatives_le
theorem rank_closureCommutatorRepresentatives_le [Finite (commutatorSet G)] :
    Group.rank (closureCommutatorRepresentatives G) ≤ 2 * Nat.card (commutatorSet G) 
Arguments: (G : Type u) [Group G] [Finite ↑(commutatorSet G)]
Goal: Group.rank ↥(closureCommutatorRepresentatives G) ≤ 2 * Nat.card ↑(commutatorSet G)
-- image_commutatorSet_closureCommutatorRepresentatives
theorem image_commutatorSet_closureCommutatorRepresentatives :
    (closureCommutatorRepresentatives G).subtype ''
        commutatorSet (closureCommutatorRepresentatives G) =
      commutatorSet G 
Arguments: (G : Type u) [Group G]
Goal: ⇑(closureCommutatorRepresentatives G).subtype '' commutatorSet ↥(closureCommutatorRepresentatives G) = commutatorSet G
-- card_commutatorSet_closureCommutatorRepresentatives
theorem card_commutatorSet_closureCommutatorRepresentatives :
    Nat.card (commutatorSet (closureCommutatorRepresentatives G)) = Nat.card (commutatorSet G) 
Arguments: (G : Type u) [Group G]
Goal: Nat.card ↑(commutatorSet ↥(closureCommutatorRepresentatives G)) = Nat.card ↑(commutatorSet G)
-- card_commutator_closureCommutatorRepresentatives
theorem card_commutator_closureCommutatorRepresentatives :
    Nat.card (commutator (closureCommutatorRepresentatives G)) = Nat.card (commutator G) 
Arguments: (G : Type u) [Group G]
Goal: Nat.card ↥(commutator ↥(closureCommutatorRepresentatives G)) = Nat.card ↥(commutator G)
-- DihedralGroup.r_mul_r
@[simp]
theorem r_mul_r (i j : ZMod n) : r i * r j = r (i + j) 
Arguments: {n : ℕ} (i j : ZMod n)
Goal: DihedralGroup.r i * DihedralGroup.r j = DihedralGroup.r (i + j)
-- DihedralGroup.r_mul_sr
@[simp]
theorem r_mul_sr (i j : ZMod n) : r i * sr j = sr (j - i) 
Arguments: {n : ℕ} (i j : ZMod n)
Goal: DihedralGroup.r i * DihedralGroup.sr j = DihedralGroup.sr (j - i)
-- DihedralGroup.sr_mul_r
@[simp]
theorem sr_mul_r (i j : ZMod n) : sr i * r j = sr (i + j) 
Arguments: {n : ℕ} (i j : ZMod n)
Goal: DihedralGroup.sr i * DihedralGroup.r j = DihedralGroup.sr (i + j)
-- DihedralGroup.sr_mul_sr
@[simp]
theorem sr_mul_sr (i j : ZMod n) : sr i * sr j = r (j - i) 
Arguments: {n : ℕ} (i j : ZMod n)
Goal: DihedralGroup.sr i * DihedralGroup.sr j = DihedralGroup.r (j - i)
-- DihedralGroup.one_def
theorem one_def : (1 : DihedralGroup n) = r 0 
Arguments: {n : ℕ}
Goal: 1 = DihedralGroup.r 0
-- DihedralGroup.card
theorem card [NeZero n] : Fintype.card (DihedralGroup n) = 2 * n 
Arguments: {n : ℕ} [NeZero n]
Goal: Fintype.card (DihedralGroup n) = 2 * n
-- DihedralGroup.nat_card
theorem nat_card : Nat.card (DihedralGroup n) = 2 * n 
Arguments: {n : ℕ}
Goal: Nat.card (DihedralGroup n) = 2 * n
-- DihedralGroup.r_one_pow
@[simp]
theorem r_one_pow (k : ℕ) : (r 1 : DihedralGroup n) ^ k = r k 
Arguments: {n : ℕ} (k : ℕ)
Goal: DihedralGroup.r 1 ^ k = DihedralGroup.r ↑k
-- DihedralGroup.r_one_pow_n
theorem r_one_pow_n : r (1 : ZMod n) ^ n = 1 
Arguments: {n : ℕ}
Goal: DihedralGroup.r 1 ^ n = 1
-- DihedralGroup.sr_mul_self
theorem sr_mul_self (i : ZMod n) : sr i * sr i = 1 
Arguments: {n : ℕ} (i : ZMod n)
Goal: DihedralGroup.sr i * DihedralGroup.sr i = 1
-- DihedralGroup.orderOf_sr
@[simp]
theorem orderOf_sr (i : ZMod n) : orderOf (sr i) = 2 
Arguments: {n : ℕ} (i : ZMod n)
Goal: orderOf (DihedralGroup.sr i) = 2
-- DihedralGroup.orderOf_r_one
@[simp]
theorem orderOf_r_one : orderOf (r 1 : DihedralGroup n) = n 
Arguments: {n : ℕ}
Goal: orderOf (DihedralGroup.r 1) = n
-- DihedralGroup.orderOf_r
theorem orderOf_r [NeZero n] (i : ZMod n) : orderOf (r i) = n / Nat.gcd n i.val 
Arguments: {n : ℕ} [NeZero n] (i : ZMod n)
Goal: orderOf (DihedralGroup.r i) = n / n.gcd i.val
-- DihedralGroup.exponent
theorem exponent : Monoid.exponent (DihedralGroup n) = lcm n 2 
Arguments: {n : ℕ}
Goal: Monoid.exponent (DihedralGroup n) = lcm n 2
-- DihedralGroup.OddCommuteEquiv_apply
@[simps]
def OddCommuteEquiv (hn : Odd n) : { p : DihedralGroup n × DihedralGroup n // Commute p.1 p.2 } ≃
    ZMod n ⊕ ZMod n ⊕ ZMod n ⊕ ZMod n × ZMod n 
Arguments: {n : ℕ} (hn : Odd n)
Goal: ∀ (x : { p // Commute p.1 p.2 }),
  (DihedralGroup.OddCommuteEquiv hn) x =
    match x with
    | ⟨(DihedralGroup.sr i, DihedralGroup.r a), property⟩ => Sum.inl i
    | ⟨(DihedralGroup.r a, DihedralGroup.sr j), property⟩ => Sum.inr (Sum.inl j)
    | ⟨(DihedralGroup.sr i, DihedralGroup.sr j), property⟩ => Sum.inr (Sum.inr (Sum.inl (i + j)))
    | ⟨(DihedralGroup.r i, DihedralGroup.r j), property⟩ => Sum.inr (Sum.inr (Sum.inr (i, j)))
-- DihedralGroup.OddCommuteEquiv_symm_apply
@[simps]
def OddCommuteEquiv (hn : Odd n) : { p : DihedralGroup n × DihedralGroup n // Commute p.1 p.2 } ≃
    ZMod n ⊕ ZMod n ⊕ ZMod n ⊕ ZMod n × ZMod n 
Arguments: {n : ℕ} (hn : Odd n)
Goal: ∀ (x : ZMod n ⊕ ZMod n ⊕ ZMod n ⊕ ZMod n × ZMod n),
  (DihedralGroup.OddCommuteEquiv hn).symm x =
    match x with
    | Sum.inl i => ⟨(DihedralGroup.sr i, DihedralGroup.r 0), ⋯⟩
    | Sum.inr (Sum.inl j) => ⟨(DihedralGroup.r 0, DihedralGroup.sr j), ⋯⟩
    | Sum.inr (Sum.inr (Sum.inl k)) =>
      ⟨(DihedralGroup.sr (↑(ZMod.unitOfCoprime 2 ⋯)⁻¹ * k), DihedralGroup.sr (↑(ZMod.unitOfCoprime 2 ⋯)⁻¹ * k)), ⋯⟩
    | Sum.inr (Sum.inr (Sum.inr (i, j))) => ⟨(DihedralGroup.r i, DihedralGroup.r j), ⋯⟩
-- DihedralGroup.card_commute_odd
lemma card_commute_odd (hn : Odd n) :
    Nat.card { p : DihedralGroup n × DihedralGroup n // Commute p.1 p.2 } = n * (n + 3) 
Arguments: {n : ℕ} (hn : Odd n)
Goal: Nat.card { p // Commute p.1 p.2 } = n * (n + 3)
-- DihedralGroup.card_conjClasses_odd
lemma card_conjClasses_odd (hn : Odd n) :
    Nat.card (ConjClasses (DihedralGroup n)) = (n + 3) / 2 
Arguments: {n : ℕ} (hn : Odd n)
Goal: Nat.card (ConjClasses (DihedralGroup n)) = (n + 3) / 2
-- Doset.doset_eq_image2
lemma doset_eq_image2 (a : α) (s t : Set α) : doset a s t = Set.image2 (· * a * ·) s t 
Arguments: {α : Type u_2} [Mul α] (a : α) (s t : Set α)
Goal: Doset.doset a s t = Set.image2 (fun x x_1 => x * a * x_1) s t
-- Doset.mem_doset
theorem mem_doset {s t : Set α} {a b : α} : b ∈ doset a s t ↔ ∃ x ∈ s, ∃ y ∈ t, b = x * a * y 
Arguments: {α : Type u_2} [Mul α] {s t : Set α} {a b : α}
Goal: b ∈ Doset.doset a s t ↔ ∃ x ∈ s, ∃ y ∈ t, b = x * a * y
-- Doset.mem_doset_self
theorem mem_doset_self (H K : Subgroup G) (a : G) : a ∈ doset a H K 
Arguments: {G : Type u_1} [Group G] (H K : Subgroup G) (a : G)
Goal: a ∈ Doset.doset a ↑H ↑K
-- Doset.doset_eq_of_mem
theorem doset_eq_of_mem {H K : Subgroup G} {a b : G} (hb : b ∈ doset a H K) :
    doset b H K = doset a H K 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} {a b : G} (hb : b ∈ Doset.doset a ↑H ↑K)
Goal: Doset.doset b ↑H ↑K = Doset.doset a ↑H ↑K
-- Doset.mem_doset_of_not_disjoint
theorem mem_doset_of_not_disjoint {H K : Subgroup G} {a b : G}
    (h : ¬Disjoint (doset a H K) (doset b H K)) : b ∈ doset a H K 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} {a b : G} (h : ¬Disjoint (Doset.doset a ↑H ↑K) (Doset.doset b ↑H ↑K))
Goal: b ∈ Doset.doset a ↑H ↑K
-- Doset.eq_of_not_disjoint
theorem eq_of_not_disjoint {H K : Subgroup G} {a b : G}
    (h : ¬Disjoint (doset a H K) (doset b H K)) : doset a H K = doset b H K 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} {a b : G} (h : ¬Disjoint (Doset.doset a ↑H ↑K) (Doset.doset b ↑H ↑K))
Goal: Doset.doset a ↑H ↑K = Doset.doset b ↑H ↑K
-- Doset.rel_iff
theorem rel_iff {H K : Subgroup G} {x y : G} :
    (setoid ↑H ↑K).Rel x y ↔ ∃ a ∈ H, ∃ b ∈ K, y = a * x * b 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} {x y : G}
Goal: (Doset.setoid ↑H ↑K).Rel x y ↔ ∃ a ∈ H, ∃ b ∈ K, y = a * x * b