ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Subgroup.IsComplement.mul_eq
@[to_additive]
lemma IsComplement.mul_eq (h : IsComplement S T) : S * T = univ 
Arguments: {G : Type u_1} [Group G] {S T : Set G} (h : Subgroup.IsComplement S T)
Goal: S * T = Set.univ
-- AddSubgroup.IsComplement.add_eq
@[to_additive]
lemma IsComplement.mul_eq (h : IsComplement S T) : S * T = univ 
Arguments: {G : Type u_1} [AddGroup G] {S T : Set G} (h : AddSubgroup.IsComplement S T)
Goal: S + T = Set.univ
-- Subgroup.IsComplement.card_mul_card
@[to_additive AddSubgroup.IsComplement.card_mul_card]
lemma IsComplement.card_mul_card (h : IsComplement S T) : Nat.card S * Nat.card T = Nat.card G 
Arguments: {G : Type u_1} [Group G] {S T : Set G} (h : Subgroup.IsComplement S T)
Goal: Nat.card ↑S * Nat.card ↑T = Nat.card G
-- AddSubgroup.IsComplement.card_mul_card
@[to_additive AddSubgroup.IsComplement.card_mul_card]
lemma IsComplement.card_mul_card (h : IsComplement S T) : Nat.card S * Nat.card T = Nat.card G 
Arguments: {G : Type u_1} [AddGroup G] {S T : Set G} (h : AddSubgroup.IsComplement S T)
Goal: Nat.card ↑S * Nat.card ↑T = Nat.card G
-- AddSubgroup.isComplement'_top_bot
@[to_additive]
theorem isComplement'_top_bot : IsComplement' (⊤ : Subgroup G) ⊥ 
Arguments: {G : Type u_1} [AddGroup G]
Goal: ⊤.IsComplement' ⊥
-- Subgroup.isComplement'_top_bot
@[to_additive]
theorem isComplement'_top_bot : IsComplement' (⊤ : Subgroup G) ⊥ 
Arguments: {G : Type u_1} [Group G]
Goal: ⊤.IsComplement' ⊥
-- Subgroup.isComplement'_bot_top
@[to_additive]
theorem isComplement'_bot_top : IsComplement' (⊥ : Subgroup G) ⊤ 
Arguments: {G : Type u_1} [Group G]
Goal: ⊥.IsComplement' ⊤
-- AddSubgroup.isComplement'_bot_top
@[to_additive]
theorem isComplement'_bot_top : IsComplement' (⊥ : Subgroup G) ⊤ 
Arguments: {G : Type u_1} [AddGroup G]
Goal: ⊥.IsComplement' ⊤
-- Subgroup.isComplement'_bot_left
@[to_additive (attr := simp)]
theorem isComplement'_bot_left : IsComplement' ⊥ H ↔ H = ⊤ 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G}
Goal: ⊥.IsComplement' H ↔ H = ⊤
-- AddSubgroup.isComplement'_bot_left
@[to_additive (attr := simp)]
theorem isComplement'_bot_left : IsComplement' ⊥ H ↔ H = ⊤ 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G}
Goal: ⊥.IsComplement' H ↔ H = ⊤
-- AddSubgroup.isComplement'_bot_right
@[to_additive (attr := simp)]
theorem isComplement'_bot_right : IsComplement' H ⊥ ↔ H = ⊤ 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G}
Goal: H.IsComplement' ⊥ ↔ H = ⊤
-- Subgroup.isComplement'_bot_right
@[to_additive (attr := simp)]
theorem isComplement'_bot_right : IsComplement' H ⊥ ↔ H = ⊤ 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G}
Goal: H.IsComplement' ⊥ ↔ H = ⊤
-- Subgroup.isComplement'_top_left
@[to_additive (attr := simp)]
theorem isComplement'_top_left : IsComplement' ⊤ H ↔ H = ⊥ 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G}
Goal: ⊤.IsComplement' H ↔ H = ⊥
-- AddSubgroup.isComplement'_top_left
@[to_additive (attr := simp)]
theorem isComplement'_top_left : IsComplement' ⊤ H ↔ H = ⊥ 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G}
Goal: ⊤.IsComplement' H ↔ H = ⊥
-- AddSubgroup.isComplement'_top_right
@[to_additive (attr := simp)]
theorem isComplement'_top_right : IsComplement' H ⊤ ↔ H = ⊥ 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G}
Goal: H.IsComplement' ⊤ ↔ H = ⊥
-- Subgroup.isComplement'_top_right
@[to_additive (attr := simp)]
theorem isComplement'_top_right : IsComplement' H ⊤ ↔ H = ⊥ 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G}
Goal: H.IsComplement' ⊤ ↔ H = ⊥
-- Subgroup.mem_leftTransversals_iff_existsUnique_inv_mul_mem
@[to_additive]
theorem mem_leftTransversals_iff_existsUnique_inv_mul_mem :
    S ∈ leftTransversals T ↔ ∀ g : G, ∃! s : S, (s : G)⁻¹ * g ∈ T 
Arguments: {G : Type u_1} [Group G] {S T : Set G}
Goal: S ∈ Subgroup.leftTransversals T ↔ ∀ (g : G), ∃! s, (↑s)⁻¹ * g ∈ T
-- AddSubgroup.mem_leftTransversals_iff_existsUnique_neg_add_mem
@[to_additive]
theorem mem_leftTransversals_iff_existsUnique_inv_mul_mem :
    S ∈ leftTransversals T ↔ ∀ g : G, ∃! s : S, (s : G)⁻¹ * g ∈ T 
Arguments: {G : Type u_1} [AddGroup G] {S T : Set G}
Goal: S ∈ AddSubgroup.leftTransversals T ↔ ∀ (g : G), ∃! s, -↑s + g ∈ T
-- AddSubgroup.mem_rightTransversals_iff_existsUnique_add_neg_mem
@[to_additive]
theorem mem_rightTransversals_iff_existsUnique_mul_inv_mem :
    S ∈ rightTransversals T ↔ ∀ g : G, ∃! s : S, g * (s : G)⁻¹ ∈ T 
Arguments: {G : Type u_1} [AddGroup G] {S T : Set G}
Goal: S ∈ AddSubgroup.rightTransversals T ↔ ∀ (g : G), ∃! s, g + -↑s ∈ T
-- Subgroup.mem_rightTransversals_iff_existsUnique_mul_inv_mem
@[to_additive]
theorem mem_rightTransversals_iff_existsUnique_mul_inv_mem :
    S ∈ rightTransversals T ↔ ∀ g : G, ∃! s : S, g * (s : G)⁻¹ ∈ T 
Arguments: {G : Type u_1} [Group G] {S T : Set G}
Goal: S ∈ Subgroup.rightTransversals T ↔ ∀ (g : G), ∃! s, g * (↑s)⁻¹ ∈ T
-- Subgroup.mem_leftTransversals_iff_existsUnique_quotient_mk''_eq
@[to_additive]
theorem mem_leftTransversals_iff_existsUnique_quotient_mk''_eq :
    S ∈ leftTransversals (H : Set G) ↔
      ∀ q : Quotient (QuotientGroup.leftRel H), ∃! s : S, Quotient.mk'' s.1 = q 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {S : Set G}
Goal: S ∈ Subgroup.leftTransversals ↑H ↔ ∀ (q : Quotient (QuotientGroup.leftRel H)), ∃! s, Quotient.mk'' ↑s = q
-- AddSubgroup.mem_leftTransversals_iff_existsUnique_quotient_mk''_eq
@[to_additive]
theorem mem_leftTransversals_iff_existsUnique_quotient_mk''_eq :
    S ∈ leftTransversals (H : Set G) ↔
      ∀ q : Quotient (QuotientGroup.leftRel H), ∃! s : S, Quotient.mk'' s.1 = q 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {S : Set G}
Goal: S ∈ AddSubgroup.leftTransversals ↑H ↔ ∀ (q : Quotient (QuotientAddGroup.leftRel H)), ∃! s, Quotient.mk'' ↑s = q
-- Subgroup.mem_rightTransversals_iff_existsUnique_quotient_mk''_eq
@[to_additive]
theorem mem_rightTransversals_iff_existsUnique_quotient_mk''_eq :
    S ∈ rightTransversals (H : Set G) ↔
      ∀ q : Quotient (QuotientGroup.rightRel H), ∃! s : S, Quotient.mk'' s.1 = q 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {S : Set G}
Goal: S ∈ Subgroup.rightTransversals ↑H ↔ ∀ (q : Quotient (QuotientGroup.rightRel H)), ∃! s, Quotient.mk'' ↑s = q
-- AddSubgroup.mem_rightTransversals_iff_existsUnique_quotient_mk''_eq
@[to_additive]
theorem mem_rightTransversals_iff_existsUnique_quotient_mk''_eq :
    S ∈ rightTransversals (H : Set G) ↔
      ∀ q : Quotient (QuotientGroup.rightRel H), ∃! s : S, Quotient.mk'' s.1 = q 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {S : Set G}
Goal: S ∈ AddSubgroup.rightTransversals ↑H ↔ ∀ (q : Quotient (QuotientAddGroup.rightRel H)), ∃! s, Quotient.mk'' ↑s = q
-- Subgroup.mem_leftTransversals_iff_bijective
@[to_additive]
theorem mem_leftTransversals_iff_bijective :
    S ∈ leftTransversals (H : Set G) ↔
      Function.Bijective (S.restrict (Quotient.mk'' : G → Quotient (QuotientGroup.leftRel H))) 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {S : Set G}
Goal: S ∈ Subgroup.leftTransversals ↑H ↔ Function.Bijective (S.restrict Quotient.mk'')
-- AddSubgroup.mem_leftTransversals_iff_bijective
@[to_additive]
theorem mem_leftTransversals_iff_bijective :
    S ∈ leftTransversals (H : Set G) ↔
      Function.Bijective (S.restrict (Quotient.mk'' : G → Quotient (QuotientGroup.leftRel H))) 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {S : Set G}
Goal: S ∈ AddSubgroup.leftTransversals ↑H ↔ Function.Bijective (S.restrict Quotient.mk'')
-- AddSubgroup.mem_rightTransversals_iff_bijective
@[to_additive]
theorem mem_rightTransversals_iff_bijective :
    S ∈ rightTransversals (H : Set G) ↔
      Function.Bijective (S.restrict (Quotient.mk'' : G → Quotient (QuotientGroup.rightRel H))) 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {S : Set G}
Goal: S ∈ AddSubgroup.rightTransversals ↑H ↔ Function.Bijective (S.restrict Quotient.mk'')
-- Subgroup.mem_rightTransversals_iff_bijective
@[to_additive]
theorem mem_rightTransversals_iff_bijective :
    S ∈ rightTransversals (H : Set G) ↔
      Function.Bijective (S.restrict (Quotient.mk'' : G → Quotient (QuotientGroup.rightRel H))) 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {S : Set G}
Goal: S ∈ Subgroup.rightTransversals ↑H ↔ Function.Bijective (S.restrict Quotient.mk'')
-- Subgroup.card_left_transversal
@[to_additive]
theorem card_left_transversal (h : S ∈ leftTransversals (H : Set G)) : Nat.card S = H.index 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {S : Set G} (h : S ∈ Subgroup.leftTransversals ↑H)
Goal: Nat.card ↑S = H.index
-- AddSubgroup.card_left_transversal
@[to_additive]
theorem card_left_transversal (h : S ∈ leftTransversals (H : Set G)) : Nat.card S = H.index 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {S : Set G} (h : S ∈ AddSubgroup.leftTransversals ↑H)
Goal: Nat.card ↑S = H.index
-- AddSubgroup.card_right_transversal
@[to_additive]
theorem card_right_transversal (h : S ∈ rightTransversals (H : Set G)) : Nat.card S = H.index 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {S : Set G} (h : S ∈ AddSubgroup.rightTransversals ↑H)
Goal: Nat.card ↑S = H.index
-- Subgroup.card_right_transversal
@[to_additive]
theorem card_right_transversal (h : S ∈ rightTransversals (H : Set G)) : Nat.card S = H.index 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {S : Set G} (h : S ∈ Subgroup.rightTransversals ↑H)
Goal: Nat.card ↑S = H.index
-- AddSubgroup.range_mem_leftTransversals
@[to_additive]
theorem range_mem_leftTransversals {f : G ⧸ H → G} (hf : ∀ q, ↑(f q) = q) :
    Set.range f ∈ leftTransversals (H : Set G) 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {f : G ⧸ H → G} (hf : ∀ (q : G ⧸ H), ↑(f q) = q)
Goal: Set.range f ∈ AddSubgroup.leftTransversals ↑H
-- Subgroup.range_mem_leftTransversals
@[to_additive]
theorem range_mem_leftTransversals {f : G ⧸ H → G} (hf : ∀ q, ↑(f q) = q) :
    Set.range f ∈ leftTransversals (H : Set G) 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {f : G ⧸ H → G} (hf : ∀ (q : G ⧸ H), ↑(f q) = q)
Goal: Set.range f ∈ Subgroup.leftTransversals ↑H
-- Subgroup.range_mem_rightTransversals
@[to_additive]
theorem range_mem_rightTransversals {f : Quotient (QuotientGroup.rightRel H) → G}
    (hf : ∀ q, Quotient.mk'' (f q) = q) : Set.range f ∈ rightTransversals (H : Set G) 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {f : Quotient (QuotientGroup.rightRel H) → G} (hf : ∀ (q : Quotient (QuotientGroup.rightRel H)), Quotient.mk'' (f q) = q)
Goal: Set.range f ∈ Subgroup.rightTransversals ↑H
-- AddSubgroup.range_mem_rightTransversals
@[to_additive]
theorem range_mem_rightTransversals {f : Quotient (QuotientGroup.rightRel H) → G}
    (hf : ∀ q, Quotient.mk'' (f q) = q) : Set.range f ∈ rightTransversals (H : Set G) 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {f : Quotient (QuotientAddGroup.rightRel H) → G} (hf : ∀ (q : Quotient (QuotientAddGroup.rightRel H)), Quotient.mk'' (f q) = q)
Goal: Set.range f ∈ AddSubgroup.rightTransversals ↑H
-- Subgroup.exists_left_transversal
@[to_additive]
lemma exists_left_transversal (H : Subgroup G) (g : G) :
    ∃ S ∈ leftTransversals (H : Set G), g ∈ S 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) (g : G)
Goal: ∃ S ∈ Subgroup.leftTransversals ↑H, g ∈ S
-- AddSubgroup.exists_left_transversal
@[to_additive]
lemma exists_left_transversal (H : Subgroup G) (g : G) :
    ∃ S ∈ leftTransversals (H : Set G), g ∈ S 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) (g : G)
Goal: ∃ S ∈ AddSubgroup.leftTransversals ↑H, g ∈ S
-- AddSubgroup.exists_right_transversal
@[to_additive]
lemma exists_right_transversal (H : Subgroup G) (g : G) :
    ∃ S ∈ rightTransversals (H : Set G), g ∈ S 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) (g : G)
Goal: ∃ S ∈ AddSubgroup.rightTransversals ↑H, g ∈ S
-- Subgroup.exists_right_transversal
@[to_additive]
lemma exists_right_transversal (H : Subgroup G) (g : G) :
    ∃ S ∈ rightTransversals (H : Set G), g ∈ S 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) (g : G)
Goal: ∃ S ∈ Subgroup.rightTransversals ↑H, g ∈ S
-- AddSubgroup.exists_left_transversal_of_le
@[to_additive "Given two subgroups `H' ⊆ H`, there exists a transversal to `H'` inside `H`"]
lemma exists_left_transversal_of_le {H' H : Subgroup G} (h : H' ≤ H) :
    ∃ S : Set G, S * H' = H ∧ Nat.card S * Nat.card H' = Nat.card H 
Arguments: {G : Type u_1} [AddGroup G] {H' H : AddSubgroup G} (h : H' ≤ H)
Goal: ∃ S, S + ↑H' = ↑H ∧ Nat.card ↑S * Nat.card ↥H' = Nat.card ↥H
-- Subgroup.exists_left_transversal_of_le
@[to_additive "Given two subgroups `H' ⊆ H`, there exists a transversal to `H'` inside `H`"]
lemma exists_left_transversal_of_le {H' H : Subgroup G} (h : H' ≤ H) :
    ∃ S : Set G, S * H' = H ∧ Nat.card S * Nat.card H' = Nat.card H 
Arguments: {G : Type u_1} [Group G] {H' H : Subgroup G} (h : H' ≤ H)
Goal: ∃ S, S * ↑H' = ↑H ∧ Nat.card ↑S * Nat.card ↥H' = Nat.card ↥H
-- Subgroup.exists_right_transversal_of_le
@[to_additive "Given two subgroups `H' ⊆ H`, there exists a transversal to `H'` inside `H`"]
lemma exists_right_transversal_of_le {H' H : Subgroup G} (h : H' ≤ H) :
    ∃ S : Set G, H' * S = H ∧ Nat.card H' * Nat.card S = Nat.card H 
Arguments: {G : Type u_1} [Group G] {H' H : Subgroup G} (h : H' ≤ H)
Goal: ∃ S, ↑H' * S = ↑H ∧ Nat.card ↥H' * Nat.card ↑S = Nat.card ↥H
-- AddSubgroup.exists_right_transversal_of_le
@[to_additive "Given two subgroups `H' ⊆ H`, there exists a transversal to `H'` inside `H`"]
lemma exists_right_transversal_of_le {H' H : Subgroup G} (h : H' ≤ H) :
    ∃ S : Set G, H' * S = H ∧ Nat.card H' * Nat.card S = Nat.card H 
Arguments: {G : Type u_1} [AddGroup G] {H' H : AddSubgroup G} (h : H' ≤ H)
Goal: ∃ S, ↑H' + S = ↑H ∧ Nat.card ↥H' * Nat.card ↑S = Nat.card ↥H
-- Subgroup.IsComplement.equiv_symm_apply
@[simp] theorem equiv_symm_apply (x : S × T) : (hST.equiv.symm x : G) = x.1.1 * x.2.1 
Arguments: {G : Type u_1} [Group G] {S T : Set G} (hST : Subgroup.IsComplement S T) (x : ↑S × ↑T)
Goal: hST.equiv.symm x = ↑x.1 * ↑x.2
-- Subgroup.IsComplement.equiv_fst_mul_equiv_snd
@[simp]
theorem equiv_fst_mul_equiv_snd (g : G) : ↑(hST.equiv g).fst * (hST.equiv g).snd = g 
Arguments: {G : Type u_1} [Group G] {S T : Set G} (hST : Subgroup.IsComplement S T) (g : G)
Goal: ↑(hST.equiv g).1 * ↑(hST.equiv g).2 = g
-- Subgroup.IsComplement.equiv_fst_eq_mul_inv
theorem equiv_fst_eq_mul_inv (g : G) : ↑(hST.equiv g).fst = g * ((hST.equiv g).snd : G)⁻¹ 
Arguments: {G : Type u_1} [Group G] {S T : Set G} (hST : Subgroup.IsComplement S T) (g : G)
Goal: ↑(hST.equiv g).1 = g * (↑(hST.equiv g).2)⁻¹
-- Subgroup.IsComplement.equiv_snd_eq_inv_mul
theorem equiv_snd_eq_inv_mul (g : G) : ↑(hST.equiv g).snd = ((hST.equiv g).fst : G)⁻¹ * g 
Arguments: {G : Type u_1} [Group G] {S T : Set G} (hST : Subgroup.IsComplement S T) (g : G)
Goal: ↑(hST.equiv g).2 = (↑(hST.equiv g).1)⁻¹ * g
-- Subgroup.IsComplement.equiv_fst_eq_iff_leftCosetEquivalence
theorem equiv_fst_eq_iff_leftCosetEquivalence {g₁ g₂ : G} :
    (hSK.equiv g₁).fst = (hSK.equiv g₂).fst ↔ LeftCosetEquivalence K g₁ g₂ 
Arguments: {G : Type u_1} [Group G] {K : Subgroup G} {S : Set G} (hSK : Subgroup.IsComplement S ↑K) {g₁ g₂ : G}
Goal: (hSK.equiv g₁).1 = (hSK.equiv g₂).1 ↔ LeftCosetEquivalence (↑K) g₁ g₂
-- Subgroup.IsComplement.equiv_snd_eq_iff_rightCosetEquivalence
theorem equiv_snd_eq_iff_rightCosetEquivalence {g₁ g₂ : G} :
    (hHT.equiv g₁).snd = (hHT.equiv g₂).snd ↔ RightCosetEquivalence H g₁ g₂ 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {T : Set G} (hHT : Subgroup.IsComplement (↑H) T) {g₁ g₂ : G}
Goal: (hHT.equiv g₁).2 = (hHT.equiv g₂).2 ↔ RightCosetEquivalence (↑H) g₁ g₂
-- Subgroup.IsComplement.leftCosetEquivalence_equiv_fst
theorem leftCosetEquivalence_equiv_fst (g : G) :
    LeftCosetEquivalence K g ((hSK.equiv g).fst : G) 
Arguments: {G : Type u_1} [Group G] {K : Subgroup G} {S : Set G} (hSK : Subgroup.IsComplement S ↑K) (g : G)
Goal: LeftCosetEquivalence (↑K) g ↑(hSK.equiv g).1
-- Subgroup.IsComplement.rightCosetEquivalence_equiv_snd
theorem rightCosetEquivalence_equiv_snd (g : G) :
    RightCosetEquivalence H g ((hHT.equiv g).snd : G) 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {T : Set G} (hHT : Subgroup.IsComplement (↑H) T) (g : G)
Goal: RightCosetEquivalence (↑H) g ↑(hHT.equiv g).2
-- Subgroup.IsComplement.equiv_fst_eq_self_of_mem_of_one_mem
theorem equiv_fst_eq_self_of_mem_of_one_mem {g : G} (h1 : 1 ∈ T) (hg : g ∈ S) :
    (hST.equiv g).fst = ⟨g, hg⟩ 
Arguments: {G : Type u_1} [Group G] {S T : Set G} (hST : Subgroup.IsComplement S T) {g : G} (h1 : 1 ∈ T) (hg : g ∈ S)
Goal: (hST.equiv g).1 = ⟨g, hg⟩
-- Subgroup.IsComplement.equiv_snd_eq_self_of_mem_of_one_mem
theorem equiv_snd_eq_self_of_mem_of_one_mem {g : G} (h1 : 1 ∈ S) (hg : g ∈ T) :
    (hST.equiv g).snd = ⟨g, hg⟩ 
Arguments: {G : Type u_1} [Group G] {S T : Set G} (hST : Subgroup.IsComplement S T) {g : G} (h1 : 1 ∈ S) (hg : g ∈ T)
Goal: (hST.equiv g).2 = ⟨g, hg⟩
-- Subgroup.IsComplement.equiv_snd_eq_one_of_mem_of_one_mem
theorem equiv_snd_eq_one_of_mem_of_one_mem {g : G} (h1 : 1 ∈ T) (hg : g ∈ S) :
    (hST.equiv g).snd = ⟨1, h1⟩ 
Arguments: {G : Type u_1} [Group G] {S T : Set G} (hST : Subgroup.IsComplement S T) {g : G} (h1 : 1 ∈ T) (hg : g ∈ S)
Goal: (hST.equiv g).2 = ⟨1, h1⟩
-- Subgroup.IsComplement.equiv_fst_eq_one_of_mem_of_one_mem
theorem equiv_fst_eq_one_of_mem_of_one_mem {g : G} (h1 : 1 ∈ S) (hg : g ∈ T) :
    (hST.equiv g).fst = ⟨1, h1⟩ 
Arguments: {G : Type u_1} [Group G] {S T : Set G} (hST : Subgroup.IsComplement S T) {g : G} (h1 : 1 ∈ S) (hg : g ∈ T)
Goal: (hST.equiv g).1 = ⟨1, h1⟩
-- Subgroup.IsComplement.equiv_mul_right
@[simp, nolint simpNF]
theorem equiv_mul_right (g : G) (k : K) :
    hSK.equiv (g * k) = ((hSK.equiv g).fst, (hSK.equiv g).snd * k) 
Arguments: {G : Type u_1} [Group G] {K : Subgroup G} {S : Set G} (hSK : Subgroup.IsComplement S ↑K) (g : G) (k : ↥K)
Goal: hSK.equiv (g * ↑k) = ((hSK.equiv g).1, (hSK.equiv g).2 * k)
-- Subgroup.IsComplement.equiv_mul_right_of_mem
theorem equiv_mul_right_of_mem {g k : G} (h : k ∈ K) :
    hSK.equiv (g * k) = ((hSK.equiv g).fst, (hSK.equiv g).snd * ⟨k, h⟩) 
Arguments: {G : Type u_1} [Group G] {K : Subgroup G} {S : Set G} (hSK : Subgroup.IsComplement S ↑K) {g k : G} (h : k ∈ K)
Goal: hSK.equiv (g * k) = ((hSK.equiv g).1, (hSK.equiv g).2 * ⟨k, h⟩)
-- Subgroup.IsComplement.equiv_mul_left
@[simp, nolint simpNF]
theorem equiv_mul_left (h : H) (g : G) :
    hHT.equiv (h * g) = (h * (hHT.equiv g).fst, (hHT.equiv g).snd) 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {T : Set G} (hHT : Subgroup.IsComplement (↑H) T) (h : ↥H) (g : G)
Goal: hHT.equiv (↑h * g) = (h * (hHT.equiv g).1, (hHT.equiv g).2)
-- Subgroup.IsComplement.equiv_mul_left_of_mem
theorem equiv_mul_left_of_mem {h g : G} (hh : h ∈ H) :
    hHT.equiv (h * g) = (⟨h, hh⟩ * (hHT.equiv g).fst, (hHT.equiv g).snd) 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {T : Set G} (hHT : Subgroup.IsComplement (↑H) T) {h g : G} (hh : h ∈ H)
Goal: hHT.equiv (h * g) = (⟨h, hh⟩ * (hHT.equiv g).1, (hHT.equiv g).2)
-- Subgroup.IsComplement.equiv_one
theorem equiv_one (hs1 : 1 ∈ S) (ht1 : 1 ∈ T) :
    hST.equiv 1 = (⟨1, hs1⟩, ⟨1, ht1⟩) 
Arguments: {G : Type u_1} [Group G] {S T : Set G} (hST : Subgroup.IsComplement S T) (hs1 : 1 ∈ S) (ht1 : 1 ∈ T)
Goal: hST.equiv 1 = (⟨1, hs1⟩, ⟨1, ht1⟩)
-- Subgroup.IsComplement.equiv_fst_eq_self_iff_mem
theorem equiv_fst_eq_self_iff_mem {g : G} (h1 : 1 ∈ T) :
    ((hST.equiv g).fst : G) = g ↔ g ∈ S 
Arguments: {G : Type u_1} [Group G] {S T : Set G} (hST : Subgroup.IsComplement S T) {g : G} (h1 : 1 ∈ T)
Goal: ↑(hST.equiv g).1 = g ↔ g ∈ S
-- Subgroup.IsComplement.equiv_snd_eq_self_iff_mem
theorem equiv_snd_eq_self_iff_mem {g : G} (h1 : 1 ∈ S) :
    ((hST.equiv g).snd : G) = g ↔ g ∈ T 
Arguments: {G : Type u_1} [Group G] {S T : Set G} (hST : Subgroup.IsComplement S T) {g : G} (h1 : 1 ∈ S)
Goal: ↑(hST.equiv g).2 = g ↔ g ∈ T
-- Subgroup.IsComplement.coe_equiv_fst_eq_one_iff_mem
theorem coe_equiv_fst_eq_one_iff_mem {g : G} (h1 : 1 ∈ S) :
    ((hST.equiv g).fst : G) = 1 ↔ g ∈ T 
Arguments: {G : Type u_1} [Group G] {S T : Set G} (hST : Subgroup.IsComplement S T) {g : G} (h1 : 1 ∈ S)
Goal: ↑(hST.equiv g).1 = 1 ↔ g ∈ T
-- Subgroup.IsComplement.coe_equiv_snd_eq_one_iff_mem
theorem coe_equiv_snd_eq_one_iff_mem {g : G} (h1 : 1 ∈ T) :
    ((hST.equiv g).snd : G) = 1 ↔ g ∈ S 
Arguments: {G : Type u_1} [Group G] {S T : Set G} (hST : Subgroup.IsComplement S T) {g : G} (h1 : 1 ∈ T)
Goal: ↑(hST.equiv g).2 = 1 ↔ g ∈ S
-- Subgroup.MemLeftTransversals.finite_iff
@[to_additive "A left transversal is finite iff the subgroup has finite index"]
theorem finite_iff
    (h : S ∈ Subgroup.leftTransversals (H : Set G)) :
    Finite S ↔ H.FiniteIndex 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {S : Set G} (h : S ∈ Subgroup.leftTransversals ↑H)
Goal: Finite ↑S ↔ H.FiniteIndex
-- AddSubgroup.MemLeftTransversals.finite_iff
@[to_additive "A left transversal is finite iff the subgroup has finite index"]
theorem finite_iff
    (h : S ∈ Subgroup.leftTransversals (H : Set G)) :
    Finite S ↔ H.FiniteIndex 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {S : Set G} (h : S ∈ AddSubgroup.leftTransversals ↑H)
Goal: Finite ↑S ↔ H.FiniteIndex
-- AddSubgroup.MemLeftTransversals.mk''_toEquiv
@[to_additive]
theorem mk''_toEquiv (hS : S ∈ Subgroup.leftTransversals (H : Set G)) (q : G ⧸ H) :
    Quotient.mk'' (toEquiv hS q : G) = q 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {S : Set G} (hS : S ∈ AddSubgroup.leftTransversals ↑H) (q : G ⧸ H)
Goal: Quotient.mk'' ↑((AddSubgroup.MemLeftTransversals.toEquiv hS) q) = q
-- Subgroup.MemLeftTransversals.mk''_toEquiv
@[to_additive]
theorem mk''_toEquiv (hS : S ∈ Subgroup.leftTransversals (H : Set G)) (q : G ⧸ H) :
    Quotient.mk'' (toEquiv hS q : G) = q 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {S : Set G} (hS : S ∈ Subgroup.leftTransversals ↑H) (q : G ⧸ H)
Goal: Quotient.mk'' ↑((Subgroup.MemLeftTransversals.toEquiv hS) q) = q
-- AddSubgroup.MemLeftTransversals.toEquiv_apply
@[to_additive]
theorem toEquiv_apply {f : G ⧸ H → G} (hf : ∀ q, (f q : G ⧸ H) = q) (q : G ⧸ H) :
    (toEquiv (range_mem_leftTransversals hf) q : G) = f q 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {f : G ⧸ H → G} (hf : ∀ (q : G ⧸ H), ↑(f q) = q) (q : G ⧸ H)
Goal: ↑((AddSubgroup.MemLeftTransversals.toEquiv ⋯) q) = f q
-- Subgroup.MemLeftTransversals.toEquiv_apply
@[to_additive]
theorem toEquiv_apply {f : G ⧸ H → G} (hf : ∀ q, (f q : G ⧸ H) = q) (q : G ⧸ H) :
    (toEquiv (range_mem_leftTransversals hf) q : G) = f q 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {f : G ⧸ H → G} (hf : ∀ (q : G ⧸ H), ↑(f q) = q) (q : G ⧸ H)
Goal: ↑((Subgroup.MemLeftTransversals.toEquiv ⋯) q) = f q
-- AddSubgroup.MemLeftTransversals.neg_toFun_add_mem
@[to_additive]
theorem inv_toFun_mul_mem (hS : S ∈ Subgroup.leftTransversals (H : Set G)) (g : G) :
    (toFun hS g : G)⁻¹ * g ∈ H 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {S : Set G} (hS : S ∈ AddSubgroup.leftTransversals ↑H) (g : G)
Goal: -↑(AddSubgroup.MemLeftTransversals.toFun hS g) + g ∈ H
-- Subgroup.MemLeftTransversals.inv_toFun_mul_mem
@[to_additive]
theorem inv_toFun_mul_mem (hS : S ∈ Subgroup.leftTransversals (H : Set G)) (g : G) :
    (toFun hS g : G)⁻¹ * g ∈ H 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {S : Set G} (hS : S ∈ Subgroup.leftTransversals ↑H) (g : G)
Goal: (↑(Subgroup.MemLeftTransversals.toFun hS g))⁻¹ * g ∈ H
-- Subgroup.MemLeftTransversals.inv_mul_toFun_mem
@[to_additive]
theorem inv_mul_toFun_mem (hS : S ∈ Subgroup.leftTransversals (H : Set G)) (g : G) :
    g⁻¹ * toFun hS g ∈ H 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} {S : Set G} (hS : S ∈ Subgroup.leftTransversals ↑H) (g : G)
Goal: g⁻¹ * ↑(Subgroup.MemLeftTransversals.toFun hS g) ∈ H
-- AddSubgroup.MemLeftTransversals.neg_add_toFun_mem
@[to_additive]
theorem inv_mul_toFun_mem (hS : S ∈ Subgroup.leftTransversals (H : Set G)) (g : G) :
    g⁻¹ * toFun hS g ∈ H 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} {S : Set G} (hS : S ∈ AddSubgroup.leftTransversals ↑H) (g : G)
Goal: -g + ↑(AddSubgroup.MemLeftTransversals.toFun hS g) ∈ H