ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- AddGroup.rank_congr
@[to_additive]
theorem Group.rank_congr [Group.FG G] [Group.FG G'] (f : G ≃* G') : Group.rank G = Group.rank G' 
Arguments: {G : Type u_3} [AddGroup G] {G' : Type u_5} [AddGroup G'] [AddGroup.FG G] [AddGroup.FG G'] (f : G ≃+ G')
Goal: AddGroup.rank G = AddGroup.rank G'
-- Group.rank_congr
@[to_additive]
theorem Group.rank_congr [Group.FG G] [Group.FG G'] (f : G ≃* G') : Group.rank G = Group.rank G' 
Arguments: {G : Type u_3} [Group G] {G' : Type u_5} [Group G'] [Group.FG G] [Group.FG G'] (f : G ≃* G')
Goal: Group.rank G = Group.rank G'
-- AddSubgroup.rank_congr
@[to_additive]
theorem rank_congr {H K : Subgroup G} [Group.FG H] [Group.FG K] (h : H = K) :
    Group.rank H = Group.rank K 
Arguments: {G : Type u_3} [AddGroup G] {H K : AddSubgroup G} [AddGroup.FG ↥H] [AddGroup.FG ↥K] (h : H = K)
Goal: AddGroup.rank ↥H = AddGroup.rank ↥K
-- Subgroup.rank_congr
@[to_additive]
theorem rank_congr {H K : Subgroup G} [Group.FG H] [Group.FG K] (h : H = K) :
    Group.rank H = Group.rank K 
Arguments: {G : Type u_3} [Group G] {H K : Subgroup G} [Group.FG ↥H] [Group.FG ↥K] (h : H = K)
Goal: Group.rank ↥H = Group.rank ↥K
-- Subgroup.rank_closure_finset_le_card
@[to_additive]
theorem rank_closure_finset_le_card (s : Finset G) : Group.rank (closure (s : Set G)) ≤ s.card 
Arguments: {G : Type u_3} [Group G] (s : Finset G)
Goal: Group.rank ↥(Subgroup.closure ↑s) ≤ s.card
-- AddSubgroup.rank_closure_finset_le_card
@[to_additive]
theorem rank_closure_finset_le_card (s : Finset G) : Group.rank (closure (s : Set G)) ≤ s.card 
Arguments: {G : Type u_3} [AddGroup G] (s : Finset G)
Goal: AddGroup.rank ↥(AddSubgroup.closure ↑s) ≤ s.card
-- Subgroup.rank_closure_finite_le_nat_card
@[to_additive]
theorem rank_closure_finite_le_nat_card (s : Set G) [Finite s] :
    Group.rank (closure s) ≤ Nat.card s 
Arguments: {G : Type u_3} [Group G] (s : Set G) [Finite ↑s]
Goal: Group.rank ↥(Subgroup.closure s) ≤ Nat.card ↑s
-- AddSubgroup.rank_closure_finite_le_nat_card
@[to_additive]
theorem rank_closure_finite_le_nat_card (s : Set G) [Finite s] :
    Group.rank (closure s) ≤ Nat.card s 
Arguments: {G : Type u_3} [AddGroup G] (s : Set G) [Finite ↑s]
Goal: AddGroup.rank ↥(AddSubgroup.closure s) ≤ Nat.card ↑s
-- QuaternionGroup.a_mul_a
@[simp]
theorem a_mul_a (i j : ZMod (2 * n)) : a i * a j = a (i + j) 
Arguments: {n : ℕ} (i j : ZMod (2 * n))
Goal: QuaternionGroup.a i * QuaternionGroup.a j = QuaternionGroup.a (i + j)
-- QuaternionGroup.a_mul_xa
@[simp]
theorem a_mul_xa (i j : ZMod (2 * n)) : a i * xa j = xa (j - i) 
Arguments: {n : ℕ} (i j : ZMod (2 * n))
Goal: QuaternionGroup.a i * QuaternionGroup.xa j = QuaternionGroup.xa (j - i)
-- QuaternionGroup.xa_mul_a
@[simp]
theorem xa_mul_a (i j : ZMod (2 * n)) : xa i * a j = xa (i + j) 
Arguments: {n : ℕ} (i j : ZMod (2 * n))
Goal: QuaternionGroup.xa i * QuaternionGroup.a j = QuaternionGroup.xa (i + j)
-- QuaternionGroup.xa_mul_xa
@[simp]
theorem xa_mul_xa (i j : ZMod (2 * n)) : xa i * xa j = a ((n : ZMod (2 * n)) + j - i) 
Arguments: {n : ℕ} (i j : ZMod (2 * n))
Goal: QuaternionGroup.xa i * QuaternionGroup.xa j = QuaternionGroup.a (↑n + j - i)
-- QuaternionGroup.one_def
theorem one_def : (1 : QuaternionGroup n) = a 0 
Arguments: {n : ℕ}
Goal: 1 = QuaternionGroup.a 0
-- QuaternionGroup.card
theorem card [NeZero n] : Fintype.card (QuaternionGroup n) = 4 * n 
Arguments: {n : ℕ} [NeZero n]
Goal: Fintype.card (QuaternionGroup n) = 4 * n
-- QuaternionGroup.a_one_pow
@[simp]
theorem a_one_pow (k : ℕ) : (a 1 : QuaternionGroup n) ^ k = a k 
Arguments: {n : ℕ} (k : ℕ)
Goal: QuaternionGroup.a 1 ^ k = QuaternionGroup.a ↑k
-- QuaternionGroup.a_one_pow_n
theorem a_one_pow_n : (a 1 : QuaternionGroup n) ^ (2 * n) = 1 
Arguments: {n : ℕ}
Goal: QuaternionGroup.a 1 ^ (2 * n) = 1
-- QuaternionGroup.xa_sq
@[simp]
theorem xa_sq (i : ZMod (2 * n)) : xa i ^ 2 = a n 
Arguments: {n : ℕ} (i : ZMod (2 * n))
Goal: QuaternionGroup.xa i ^ 2 = QuaternionGroup.a ↑n
-- QuaternionGroup.xa_pow_four
@[simp]
theorem xa_pow_four (i : ZMod (2 * n)) : xa i ^ 4 = 1 
Arguments: {n : ℕ} (i : ZMod (2 * n))
Goal: QuaternionGroup.xa i ^ 4 = 1
-- QuaternionGroup.orderOf_xa
@[simp]
theorem orderOf_xa [NeZero n] (i : ZMod (2 * n)) : orderOf (xa i) = 4 
Arguments: {n : ℕ} [NeZero n] (i : ZMod (2 * n))
Goal: orderOf (QuaternionGroup.xa i) = 4
-- QuaternionGroup.quaternionGroup_one_isCyclic
theorem quaternionGroup_one_isCyclic : IsCyclic (QuaternionGroup 1) 
Goal: IsCyclic (QuaternionGroup 1)
-- QuaternionGroup.orderOf_a_one
@[simp]
theorem orderOf_a_one : orderOf (a 1 : QuaternionGroup n) = 2 * n 
Arguments: {n : ℕ}
Goal: orderOf (QuaternionGroup.a 1) = 2 * n
-- QuaternionGroup.orderOf_a
theorem orderOf_a [NeZero n] (i : ZMod (2 * n)) :
    orderOf (a i) = 2 * n / Nat.gcd (2 * n) i.val 
Arguments: {n : ℕ} [NeZero n] (i : ZMod (2 * n))
Goal: orderOf (QuaternionGroup.a i) = 2 * n / (2 * n).gcd i.val
-- QuaternionGroup.exponent
theorem exponent : Monoid.exponent (QuaternionGroup n) = 2 * lcm n 2 
Arguments: {n : ℕ}
Goal: Monoid.exponent (QuaternionGroup n) = 2 * lcm n 2
-- Subgroup.index_comap_of_surjective
@[to_additive]
theorem index_comap_of_surjective {f : G' →* G} (hf : Function.Surjective f) :
    (H.comap f).index = H.index 
Arguments: {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (H : Subgroup G) {f : G' →* G} (hf : Function.Surjective ⇑f)
Goal: (Subgroup.comap f H).index = H.index
-- AddSubgroup.index_comap_of_surjective
@[to_additive]
theorem index_comap_of_surjective {f : G' →* G} (hf : Function.Surjective f) :
    (H.comap f).index = H.index 
Arguments: {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (H : AddSubgroup G) {f : G' →+ G} (hf : Function.Surjective ⇑f)
Goal: (AddSubgroup.comap f H).index = H.index
-- AddSubgroup.index_comap
@[to_additive]
theorem index_comap (f : G' →* G) :
    (H.comap f).index = H.relindex f.range 
Arguments: {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (H : AddSubgroup G) (f : G' →+ G)
Goal: (AddSubgroup.comap f H).index = H.relindex f.range
-- Subgroup.index_comap
@[to_additive]
theorem index_comap (f : G' →* G) :
    (H.comap f).index = H.relindex f.range 
Arguments: {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (H : Subgroup G) (f : G' →* G)
Goal: (Subgroup.comap f H).index = H.relindex f.range
-- Subgroup.relindex_comap
@[to_additive]
theorem relindex_comap (f : G' →* G) (K : Subgroup G') :
    relindex (comap f H) K = relindex H (map f K) 
Arguments: {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (H : Subgroup G) (f : G' →* G) (K : Subgroup G')
Goal: (Subgroup.comap f H).relindex K = H.relindex (Subgroup.map f K)
-- AddSubgroup.relindex_comap
@[to_additive]
theorem relindex_comap (f : G' →* G) (K : Subgroup G') :
    relindex (comap f H) K = relindex H (map f K) 
Arguments: {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (H : AddSubgroup G) (f : G' →+ G) (K : AddSubgroup G')
Goal: (AddSubgroup.comap f H).relindex K = H.relindex (AddSubgroup.map f K)
-- AddSubgroup.relindex_mul_index
@[to_additive relindex_mul_index]
theorem relindex_mul_index (h : H ≤ K) : H.relindex K * K.index = H.index 
Arguments: {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (h : H ≤ K)
Goal: H.relindex K * K.index = H.index
-- Subgroup.relindex_mul_index
@[to_additive relindex_mul_index]
theorem relindex_mul_index (h : H ≤ K) : H.relindex K * K.index = H.index 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} (h : H ≤ K)
Goal: H.relindex K * K.index = H.index
-- AddSubgroup.index_dvd_of_le
@[to_additive]
theorem index_dvd_of_le (h : H ≤ K) : K.index ∣ H.index 
Arguments: {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (h : H ≤ K)
Goal: K.index ∣ H.index
-- Subgroup.index_dvd_of_le
@[to_additive]
theorem index_dvd_of_le (h : H ≤ K) : K.index ∣ H.index 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} (h : H ≤ K)
Goal: K.index ∣ H.index
-- AddSubgroup.relindex_dvd_index_of_le
@[to_additive]
theorem relindex_dvd_index_of_le (h : H ≤ K) : H.relindex K ∣ H.index 
Arguments: {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (h : H ≤ K)
Goal: H.relindex K ∣ H.index
-- Subgroup.relindex_dvd_index_of_le
@[to_additive]
theorem relindex_dvd_index_of_le (h : H ≤ K) : H.relindex K ∣ H.index 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} (h : H ≤ K)
Goal: H.relindex K ∣ H.index
-- Subgroup.relindex_subgroupOf
@[to_additive]
theorem relindex_subgroupOf (hKL : K ≤ L) :
    (H.subgroupOf L).relindex (K.subgroupOf L) = H.relindex K 
Arguments: {G : Type u_1} [Group G] {H K L : Subgroup G} (hKL : K ≤ L)
Goal: (H.subgroupOf L).relindex (K.subgroupOf L) = H.relindex K
-- AddSubgroup.relindex_addSubgroupOf
@[to_additive]
theorem relindex_subgroupOf (hKL : K ≤ L) :
    (H.subgroupOf L).relindex (K.subgroupOf L) = H.relindex K 
Arguments: {G : Type u_1} [AddGroup G] {H K L : AddSubgroup G} (hKL : K ≤ L)
Goal: (H.addSubgroupOf L).relindex (K.addSubgroupOf L) = H.relindex K
-- Subgroup.relindex_mul_relindex
@[to_additive relindex_mul_relindex]
theorem relindex_mul_relindex (hHK : H ≤ K) (hKL : K ≤ L) :
    H.relindex K * K.relindex L = H.relindex L 
Arguments: {G : Type u_1} [Group G] (H K L : Subgroup G) (hHK : H ≤ K) (hKL : K ≤ L)
Goal: H.relindex K * K.relindex L = H.relindex L
-- AddSubgroup.relindex_mul_relindex
@[to_additive relindex_mul_relindex]
theorem relindex_mul_relindex (hHK : H ≤ K) (hKL : K ≤ L) :
    H.relindex K * K.relindex L = H.relindex L 
Arguments: {G : Type u_1} [AddGroup G] (H K L : AddSubgroup G) (hHK : H ≤ K) (hKL : K ≤ L)
Goal: H.relindex K * K.relindex L = H.relindex L
-- AddSubgroup.inf_relindex_right
@[to_additive]
theorem inf_relindex_right : (H ⊓ K).relindex K = H.relindex K 
Arguments: {G : Type u_1} [AddGroup G] (H K : AddSubgroup G)
Goal: (H ⊓ K).relindex K = H.relindex K
-- Subgroup.inf_relindex_right
@[to_additive]
theorem inf_relindex_right : (H ⊓ K).relindex K = H.relindex K 
Arguments: {G : Type u_1} [Group G] (H K : Subgroup G)
Goal: (H ⊓ K).relindex K = H.relindex K
-- AddSubgroup.inf_relindex_left
@[to_additive]
theorem inf_relindex_left : (H ⊓ K).relindex H = K.relindex H 
Arguments: {G : Type u_1} [AddGroup G] (H K : AddSubgroup G)
Goal: (H ⊓ K).relindex H = K.relindex H
-- Subgroup.inf_relindex_left
@[to_additive]
theorem inf_relindex_left : (H ⊓ K).relindex H = K.relindex H 
Arguments: {G : Type u_1} [Group G] (H K : Subgroup G)
Goal: (H ⊓ K).relindex H = K.relindex H
-- Subgroup.relindex_inf_mul_relindex
@[to_additive relindex_inf_mul_relindex]
theorem relindex_inf_mul_relindex : H.relindex (K ⊓ L) * K.relindex L = (H ⊓ K).relindex L 
Arguments: {G : Type u_1} [Group G] (H K L : Subgroup G)
Goal: H.relindex (K ⊓ L) * K.relindex L = (H ⊓ K).relindex L
-- AddSubgroup.relindex_inf_mul_relindex
@[to_additive relindex_inf_mul_relindex]
theorem relindex_inf_mul_relindex : H.relindex (K ⊓ L) * K.relindex L = (H ⊓ K).relindex L 
Arguments: {G : Type u_1} [AddGroup G] (H K L : AddSubgroup G)
Goal: H.relindex (K ⊓ L) * K.relindex L = (H ⊓ K).relindex L
-- AddSubgroup.relindex_sup_right
@[to_additive (attr := simp)]
theorem relindex_sup_right [K.Normal] : K.relindex (H ⊔ K) = K.relindex H 
Arguments: {G : Type u_1} [AddGroup G] (H K : AddSubgroup G) [K.Normal]
Goal: K.relindex (H ⊔ K) = K.relindex H
-- Subgroup.relindex_sup_right
@[to_additive (attr := simp)]
theorem relindex_sup_right [K.Normal] : K.relindex (H ⊔ K) = K.relindex H 
Arguments: {G : Type u_1} [Group G] (H K : Subgroup G) [K.Normal]
Goal: K.relindex (H ⊔ K) = K.relindex H
-- Subgroup.relindex_sup_left
@[to_additive (attr := simp)]
theorem relindex_sup_left [K.Normal] : K.relindex (K ⊔ H) = K.relindex H 
Arguments: {G : Type u_1} [Group G] (H K : Subgroup G) [K.Normal]
Goal: K.relindex (K ⊔ H) = K.relindex H
-- AddSubgroup.relindex_sup_left
@[to_additive (attr := simp)]
theorem relindex_sup_left [K.Normal] : K.relindex (K ⊔ H) = K.relindex H 
Arguments: {G : Type u_1} [AddGroup G] (H K : AddSubgroup G) [K.Normal]
Goal: K.relindex (K ⊔ H) = K.relindex H
-- AddSubgroup.relindex_dvd_index_of_normal
@[to_additive]
theorem relindex_dvd_index_of_normal [H.Normal] : H.relindex K ∣ H.index 
Arguments: {G : Type u_1} [AddGroup G] (H K : AddSubgroup G) [H.Normal]
Goal: H.relindex K ∣ H.index
-- Subgroup.relindex_dvd_index_of_normal
@[to_additive]
theorem relindex_dvd_index_of_normal [H.Normal] : H.relindex K ∣ H.index 
Arguments: {G : Type u_1} [Group G] (H K : Subgroup G) [H.Normal]
Goal: H.relindex K ∣ H.index
-- AddSubgroup.relindex_dvd_of_le_left
@[to_additive]
theorem relindex_dvd_of_le_left (hHK : H ≤ K) : K.relindex L ∣ H.relindex L 
Arguments: {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (L : AddSubgroup G) (hHK : H ≤ K)
Goal: K.relindex L ∣ H.relindex L
-- Subgroup.relindex_dvd_of_le_left
@[to_additive]
theorem relindex_dvd_of_le_left (hHK : H ≤ K) : K.relindex L ∣ H.relindex L 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} (L : Subgroup G) (hHK : H ≤ K)
Goal: K.relindex L ∣ H.relindex L
-- AddSubgroup.index_eq_two_iff
@[to_additive "An additive subgroup has index two if and only if there exists `a` such that
for all `b`, exactly one of `b + a` and `b` belong to `H`."]
theorem index_eq_two_iff : H.index = 2 ↔ ∃ a, ∀ b, Xor' (b * a ∈ H) (b ∈ H) 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G}
Goal: H.index = 2 ↔ ∃ a, ∀ (b : G), Xor' (b + a ∈ H) (b ∈ H)
-- Subgroup.index_eq_two_iff
@[to_additive "An additive subgroup has index two if and only if there exists `a` such that
for all `b`, exactly one of `b + a` and `b` belong to `H`."]
theorem index_eq_two_iff : H.index = 2 ↔ ∃ a, ∀ b, Xor' (b * a ∈ H) (b ∈ H) 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G}
Goal: H.index = 2 ↔ ∃ a, ∀ (b : G), Xor' (b * a ∈ H) (b ∈ H)
-- AddSubgroup.add_mem_iff_of_index_two
@[to_additive]
theorem mul_mem_iff_of_index_two (h : H.index = 2) {a b : G} : a * b ∈ H ↔ (a ∈ H ↔ b ∈ H) 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} (h : H.index = 2) {a b : G}
Goal: a + b ∈ H ↔ (a ∈ H ↔ b ∈ H)
-- Subgroup.mul_mem_iff_of_index_two
@[to_additive]
theorem mul_mem_iff_of_index_two (h : H.index = 2) {a b : G} : a * b ∈ H ↔ (a ∈ H ↔ b ∈ H) 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} (h : H.index = 2) {a b : G}
Goal: a * b ∈ H ↔ (a ∈ H ↔ b ∈ H)
-- AddSubgroup.add_self_mem_of_index_two
@[to_additive]
theorem mul_self_mem_of_index_two (h : H.index = 2) (a : G) : a * a ∈ H 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} (h : H.index = 2) (a : G)
Goal: a + a ∈ H
-- Subgroup.mul_self_mem_of_index_two
@[to_additive]
theorem mul_self_mem_of_index_two (h : H.index = 2) (a : G) : a * a ∈ H 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} (h : H.index = 2) (a : G)
Goal: a * a ∈ H
-- AddSubgroup.two_smul_mem_of_index_two
@[to_additive two_smul_mem_of_index_two]
theorem sq_mem_of_index_two (h : H.index = 2) (a : G) : a ^ 2 ∈ H 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} (h : H.index = 2) (a : G)
Goal: 2 • a ∈ H
-- Subgroup.sq_mem_of_index_two
@[to_additive two_smul_mem_of_index_two]
theorem sq_mem_of_index_two (h : H.index = 2) (a : G) : a ^ 2 ∈ H 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} (h : H.index = 2) (a : G)
Goal: a ^ 2 ∈ H
-- AddSubgroup.index_top
@[to_additive (attr := simp)]
theorem index_top : (⊤ : Subgroup G).index = 1 
Arguments: {G : Type u_1} [AddGroup G]
Goal: ⊤.index = 1
-- Subgroup.index_top
@[to_additive (attr := simp)]
theorem index_top : (⊤ : Subgroup G).index = 1 
Arguments: {G : Type u_1} [Group G]
Goal: ⊤.index = 1
-- AddSubgroup.index_bot
@[to_additive (attr := simp)]
theorem index_bot : (⊥ : Subgroup G).index = Nat.card G 
Arguments: {G : Type u_1} [AddGroup G]
Goal: ⊥.index = Nat.card G
-- Subgroup.index_bot
@[to_additive (attr := simp)]
theorem index_bot : (⊥ : Subgroup G).index = Nat.card G 
Arguments: {G : Type u_1} [Group G]
Goal: ⊥.index = Nat.card G
-- Subgroup.relindex_top_left
@[to_additive (attr := simp)]
theorem relindex_top_left : (⊤ : Subgroup G).relindex H = 1 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G)
Goal: ⊤.relindex H = 1
-- AddSubgroup.relindex_top_left
@[to_additive (attr := simp)]
theorem relindex_top_left : (⊤ : Subgroup G).relindex H = 1 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G)
Goal: ⊤.relindex H = 1
-- Subgroup.relindex_top_right
@[to_additive (attr := simp)]
theorem relindex_top_right : H.relindex ⊤ = H.index 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G)
Goal: H.relindex ⊤ = H.index
-- AddSubgroup.relindex_top_right
@[to_additive (attr := simp)]
theorem relindex_top_right : H.relindex ⊤ = H.index 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G)
Goal: H.relindex ⊤ = H.index
-- Subgroup.relindex_bot_left
@[to_additive (attr := simp)]
theorem relindex_bot_left : (⊥ : Subgroup G).relindex H = Nat.card H 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G)
Goal: ⊥.relindex H = Nat.card ↥H
-- AddSubgroup.relindex_bot_left
@[to_additive (attr := simp)]
theorem relindex_bot_left : (⊥ : Subgroup G).relindex H = Nat.card H 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G)
Goal: ⊥.relindex H = Nat.card ↥H
-- AddSubgroup.relindex_bot_right
@[to_additive (attr := simp)]
theorem relindex_bot_right : H.relindex ⊥ = 1 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G)
Goal: H.relindex ⊥ = 1
-- Subgroup.relindex_bot_right
@[to_additive (attr := simp)]
theorem relindex_bot_right : H.relindex ⊥ = 1 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G)
Goal: H.relindex ⊥ = 1
-- AddSubgroup.relindex_self
@[to_additive (attr := simp)]
theorem relindex_self : H.relindex H = 1 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G)
Goal: H.relindex H = 1
-- Subgroup.relindex_self
@[to_additive (attr := simp)]
theorem relindex_self : H.relindex H = 1 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G)
Goal: H.relindex H = 1
-- Subgroup.index_ker
@[to_additive]
theorem index_ker (f : G →* G') : f.ker.index = Nat.card (Set.range f) 
Arguments: {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (f : G →* G')
Goal: f.ker.index = Nat.card ↑(Set.range ⇑f)
-- AddSubgroup.index_ker
@[to_additive]
theorem index_ker (f : G →* G') : f.ker.index = Nat.card (Set.range f) 
Arguments: {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (f : G →+ G')
Goal: f.ker.index = Nat.card ↑(Set.range ⇑f)
-- AddSubgroup.relindex_ker
@[to_additive]
theorem relindex_ker (f : G →* G') (K : Subgroup G) :
    f.ker.relindex K = Nat.card (f '' K) 
Arguments: {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (f : G →+ G') (K : AddSubgroup G)
Goal: f.ker.relindex K = Nat.card ↑(⇑f '' ↑K)
-- Subgroup.relindex_ker
@[to_additive]
theorem relindex_ker (f : G →* G') (K : Subgroup G) :
    f.ker.relindex K = Nat.card (f '' K) 
Arguments: {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (f : G →* G') (K : Subgroup G)
Goal: f.ker.relindex K = Nat.card ↑(⇑f '' ↑K)
-- AddSubgroup.card_mul_index
@[to_additive (attr := simp) card_mul_index]
theorem card_mul_index : Nat.card H * H.index = Nat.card G 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G)
Goal: Nat.card ↥H * H.index = Nat.card G
-- Subgroup.card_mul_index
@[to_additive (attr := simp) card_mul_index]
theorem card_mul_index : Nat.card H * H.index = Nat.card G 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G)
Goal: Nat.card ↥H * H.index = Nat.card G
-- AddSubgroup.card_dvd_of_surjective
@[to_additive]
theorem card_dvd_of_surjective (f : G →* G') (hf : Function.Surjective f) :
    Nat.card G' ∣ Nat.card G 
Arguments: {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (f : G →+ G') (hf : Function.Surjective ⇑f)
Goal: Nat.card G' ∣ Nat.card G
-- Subgroup.card_dvd_of_surjective
@[to_additive]
theorem card_dvd_of_surjective (f : G →* G') (hf : Function.Surjective f) :
    Nat.card G' ∣ Nat.card G 
Arguments: {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (f : G →* G') (hf : Function.Surjective ⇑f)
Goal: Nat.card G' ∣ Nat.card G
-- Subgroup.index_map
@[to_additive]
theorem index_map (f : G →* G') :
    (H.map f).index = (H ⊔ f.ker).index * f.range.index 
Arguments: {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (H : Subgroup G) (f : G →* G')
Goal: (Subgroup.map f H).index = (H ⊔ f.ker).index * f.range.index
-- AddSubgroup.index_map
@[to_additive]
theorem index_map (f : G →* G') :
    (H.map f).index = (H ⊔ f.ker).index * f.range.index 
Arguments: {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (H : AddSubgroup G) (f : G →+ G')
Goal: (AddSubgroup.map f H).index = (H ⊔ f.ker).index * f.range.index
-- Subgroup.index_map_dvd
@[to_additive]
theorem index_map_dvd {f : G →* G'} (hf : Function.Surjective f) :
    (H.map f).index ∣ H.index 
Arguments: {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (H : Subgroup G) {f : G →* G'} (hf : Function.Surjective ⇑f)
Goal: (Subgroup.map f H).index ∣ H.index
-- AddSubgroup.index_map_dvd
@[to_additive]
theorem index_map_dvd {f : G →* G'} (hf : Function.Surjective f) :
    (H.map f).index ∣ H.index 
Arguments: {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (H : AddSubgroup G) {f : G →+ G'} (hf : Function.Surjective ⇑f)
Goal: (AddSubgroup.map f H).index ∣ H.index
-- AddSubgroup.dvd_index_map
@[to_additive]
theorem dvd_index_map {f : G →* G'} (hf : f.ker ≤ H) :
    H.index ∣ (H.map f).index 
Arguments: {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (H : AddSubgroup G) {f : G →+ G'} (hf : f.ker ≤ H)
Goal: H.index ∣ (AddSubgroup.map f H).index
-- Subgroup.dvd_index_map
@[to_additive]
theorem dvd_index_map {f : G →* G'} (hf : f.ker ≤ H) :
    H.index ∣ (H.map f).index 
Arguments: {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (H : Subgroup G) {f : G →* G'} (hf : f.ker ≤ H)
Goal: H.index ∣ (Subgroup.map f H).index
-- Subgroup.index_map_eq
@[to_additive]
theorem index_map_eq {f : G →* G'} (hf1 : Function.Surjective f)
    (hf2 : f.ker ≤ H) : (H.map f).index = H.index 
Arguments: {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (H : Subgroup G) {f : G →* G'} (hf1 : Function.Surjective ⇑f) (hf2 : f.ker ≤ H)
Goal: (Subgroup.map f H).index = H.index
-- AddSubgroup.index_map_eq
@[to_additive]
theorem index_map_eq {f : G →* G'} (hf1 : Function.Surjective f)
    (hf2 : f.ker ≤ H) : (H.map f).index = H.index 
Arguments: {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (H : AddSubgroup G) {f : G →+ G'} (hf1 : Function.Surjective ⇑f) (hf2 : f.ker ≤ H)
Goal: (AddSubgroup.map f H).index = H.index
-- AddSubgroup.index_eq_card
@[to_additive]
theorem index_eq_card : H.index = Nat.card (G ⧸ H) 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G)
Goal: H.index = Nat.card (G ⧸ H)
-- Subgroup.index_eq_card
@[to_additive]
theorem index_eq_card : H.index = Nat.card (G ⧸ H) 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G)
Goal: H.index = Nat.card (G ⧸ H)
-- Subgroup.index_mul_card
@[to_additive index_mul_card]
theorem index_mul_card : H.index * Nat.card H = Nat.card G 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G)
Goal: H.index * Nat.card ↥H = Nat.card G
-- AddSubgroup.index_mul_card
@[to_additive index_mul_card]
theorem index_mul_card : H.index * Nat.card H = Nat.card G 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G)
Goal: H.index * Nat.card ↥H = Nat.card G
-- Subgroup.index_dvd_card
@[to_additive]
theorem index_dvd_card : H.index ∣ Nat.card G 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G)
Goal: H.index ∣ Nat.card G
-- AddSubgroup.index_dvd_card
@[to_additive]
theorem index_dvd_card : H.index ∣ Nat.card G 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G)
Goal: H.index ∣ Nat.card G
-- Subgroup.relindex_eq_zero_of_le_left
@[to_additive]
theorem relindex_eq_zero_of_le_left (hHK : H ≤ K) (hKL : K.relindex L = 0) : H.relindex L = 0 
Arguments: {G : Type u_1} [Group G] {H K L : Subgroup G} (hHK : H ≤ K) (hKL : K.relindex L = 0)
Goal: H.relindex L = 0
-- AddSubgroup.relindex_eq_zero_of_le_left
@[to_additive]
theorem relindex_eq_zero_of_le_left (hHK : H ≤ K) (hKL : K.relindex L = 0) : H.relindex L = 0 
Arguments: {G : Type u_1} [AddGroup G] {H K L : AddSubgroup G} (hHK : H ≤ K) (hKL : K.relindex L = 0)
Goal: H.relindex L = 0
-- Subgroup.relindex_eq_zero_of_le_right
@[to_additive]
theorem relindex_eq_zero_of_le_right (hKL : K ≤ L) (hHK : H.relindex K = 0) : H.relindex L = 0 
Arguments: {G : Type u_1} [Group G] {H K L : Subgroup G} (hKL : K ≤ L) (hHK : H.relindex K = 0)
Goal: H.relindex L = 0