ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- QuotientGroup.leftRel_eq
@[to_additive]
theorem leftRel_eq : @Setoid.r _ (leftRel s) = fun x y => x⁻¹ * y ∈ s 
Arguments: {α : Type u_1} [Group α] (s : Subgroup α)
Goal: Setoid.r = fun x y => x⁻¹ * y ∈ s
-- QuotientAddGroup.leftRel_eq
@[to_additive]
theorem leftRel_eq : @Setoid.r _ (leftRel s) = fun x y => x⁻¹ * y ∈ s 
Arguments: {α : Type u_1} [AddGroup α] (s : AddSubgroup α)
Goal: Setoid.r = fun x y => -x + y ∈ s
-- QuotientGroup.leftRel_r_eq_leftCosetEquivalence
theorem leftRel_r_eq_leftCosetEquivalence :
    @Setoid.r _ (QuotientGroup.leftRel s) = LeftCosetEquivalence s 
Arguments: {α : Type u_1} [Group α] (s : Subgroup α)
Goal: Setoid.r = LeftCosetEquivalence ↑s
-- QuotientGroup.rightRel_apply
@[to_additive]
theorem rightRel_apply {x y : α} : @Setoid.r _ (rightRel s) x y ↔ y * x⁻¹ ∈ s 
Arguments: {α : Type u_1} [Group α] {s : Subgroup α} {x y : α}
Goal: Setoid.r x y ↔ y * x⁻¹ ∈ s
-- QuotientAddGroup.rightRel_apply
@[to_additive]
theorem rightRel_apply {x y : α} : @Setoid.r _ (rightRel s) x y ↔ y * x⁻¹ ∈ s 
Arguments: {α : Type u_1} [AddGroup α] {s : AddSubgroup α} {x y : α}
Goal: Setoid.r x y ↔ y + -x ∈ s
-- QuotientGroup.rightRel_eq
@[to_additive]
theorem rightRel_eq : @Setoid.r _ (rightRel s) = fun x y => y * x⁻¹ ∈ s 
Arguments: {α : Type u_1} [Group α] (s : Subgroup α)
Goal: Setoid.r = fun x y => y * x⁻¹ ∈ s
-- QuotientAddGroup.rightRel_eq
@[to_additive]
theorem rightRel_eq : @Setoid.r _ (rightRel s) = fun x y => y * x⁻¹ ∈ s 
Arguments: {α : Type u_1} [AddGroup α] (s : AddSubgroup α)
Goal: Setoid.r = fun x y => y + -x ∈ s
-- QuotientGroup.rightRel_r_eq_rightCosetEquivalence
theorem rightRel_r_eq_rightCosetEquivalence :
    @Setoid.r _ (QuotientGroup.rightRel s) = RightCosetEquivalence s 
Arguments: {α : Type u_1} [Group α] (s : Subgroup α)
Goal: Setoid.r = RightCosetEquivalence ↑s
-- QuotientGroup.card_quotient_rightRel
@[to_additive]
theorem card_quotient_rightRel [Fintype (α ⧸ s)] :
    Fintype.card (Quotient (QuotientGroup.rightRel s)) = Fintype.card (α ⧸ s) 
Arguments: {α : Type u_1} [Group α] (s : Subgroup α) [Fintype (α ⧸ s)]
Goal: Fintype.card (Quotient (QuotientGroup.rightRel s)) = Fintype.card (α ⧸ s)
-- QuotientAddGroup.card_quotient_rightRel
@[to_additive]
theorem card_quotient_rightRel [Fintype (α ⧸ s)] :
    Fintype.card (Quotient (QuotientGroup.rightRel s)) = Fintype.card (α ⧸ s) 
Arguments: {α : Type u_1} [AddGroup α] (s : AddSubgroup α) [Fintype (α ⧸ s)]
Goal: Fintype.card (Quotient (QuotientAddGroup.rightRel s)) = Fintype.card (α ⧸ s)
-- QuotientAddGroup.mk_surjective
@[to_additive]
theorem mk_surjective : Function.Surjective <| @mk _ _ s 
Arguments: {α : Type u_1} [AddGroup α] {s : AddSubgroup α}
Goal: Function.Surjective QuotientAddGroup.mk
-- QuotientGroup.mk_surjective
@[to_additive]
theorem mk_surjective : Function.Surjective <| @mk _ _ s 
Arguments: {α : Type u_1} [Group α] {s : Subgroup α}
Goal: Function.Surjective QuotientGroup.mk
-- QuotientAddGroup.range_mk
@[to_additive (attr := simp)]
lemma range_mk : range (QuotientGroup.mk (s := s)) = univ 
Arguments: {α : Type u_1} [AddGroup α] {s : AddSubgroup α}
Goal: Set.range QuotientAddGroup.mk = Set.univ
-- QuotientGroup.range_mk
@[to_additive (attr := simp)]
lemma range_mk : range (QuotientGroup.mk (s := s)) = univ 
Arguments: {α : Type u_1} [Group α] {s : Subgroup α}
Goal: Set.range QuotientGroup.mk = Set.univ
-- QuotientAddGroup.induction_on
@[to_additive (attr := elab_as_elim)]
theorem induction_on {C : α ⧸ s → Prop} (x : α ⧸ s) (H : ∀ z, C (QuotientGroup.mk z)) : C x 
Arguments: {α : Type u_1} [AddGroup α] {s : AddSubgroup α} {C : α ⧸ s → Prop} (x : α ⧸ s) (H : ∀ (z : α), C ↑z)
Goal: C x
-- QuotientGroup.induction_on
@[to_additive (attr := elab_as_elim)]
theorem induction_on {C : α ⧸ s → Prop} (x : α ⧸ s) (H : ∀ z, C (QuotientGroup.mk z)) : C x 
Arguments: {α : Type u_1} [Group α] {s : Subgroup α} {C : α ⧸ s → Prop} (x : α ⧸ s) (H : ∀ (z : α), C ↑z)
Goal: C x
-- QuotientGroup.induction_on'
@[to_additive (attr := elab_as_elim)]
theorem induction_on' {C : α ⧸ s → Prop} (x : α ⧸ s) (H : ∀ z : α, C z) : C x 
Arguments: {α : Type u_1} [Group α] {s : Subgroup α} {C : α ⧸ s → Prop} (x : α ⧸ s) (H : ∀ (z : α), C ↑z)
Goal: C x
-- QuotientAddGroup.induction_on'
@[to_additive (attr := elab_as_elim)]
theorem induction_on' {C : α ⧸ s → Prop} (x : α ⧸ s) (H : ∀ z : α, C z) : C x 
Arguments: {α : Type u_1} [AddGroup α] {s : AddSubgroup α} {C : α ⧸ s → Prop} (x : α ⧸ s) (H : ∀ (z : α), C ↑z)
Goal: C x
-- QuotientAddGroup.quotient_liftOn_mk
@[to_additive (attr := simp)]
theorem quotient_liftOn_mk {β} (f : α → β) (h) (x : α) : Quotient.liftOn' (x : α ⧸ s) f h = f x 
Arguments: {α : Type u_1} [AddGroup α] {s : AddSubgroup α} {β : Sort u_2} (f : α → β) (h : ∀ (a b : α), Setoid.r a b → f a = f b) (x : α)
Goal: Quotient.liftOn' (↑x) f h = f x
-- QuotientGroup.quotient_liftOn_mk
@[to_additive (attr := simp)]
theorem quotient_liftOn_mk {β} (f : α → β) (h) (x : α) : Quotient.liftOn' (x : α ⧸ s) f h = f x 
Arguments: {α : Type u_1} [Group α] {s : Subgroup α} {β : Sort u_2} (f : α → β) (h : ∀ (a b : α), Setoid.r a b → f a = f b) (x : α)
Goal: Quotient.liftOn' (↑x) f h = f x
-- QuotientGroup.forall_mk
@[to_additive]
theorem forall_mk {C : α ⧸ s → Prop} : (∀ x : α ⧸ s, C x) ↔ ∀ x : α, C x 
Arguments: {α : Type u_1} [Group α] {s : Subgroup α} {C : α ⧸ s → Prop}
Goal: (∀ (x : α ⧸ s), C x) ↔ ∀ (x : α), C ↑x
-- QuotientAddGroup.forall_mk
@[to_additive]
theorem forall_mk {C : α ⧸ s → Prop} : (∀ x : α ⧸ s, C x) ↔ ∀ x : α, C x 
Arguments: {α : Type u_1} [AddGroup α] {s : AddSubgroup α} {C : α ⧸ s → Prop}
Goal: (∀ (x : α ⧸ s), C x) ↔ ∀ (x : α), C ↑x
-- QuotientGroup.exists_mk
@[to_additive]
theorem exists_mk {C : α ⧸ s → Prop} : (∃ x : α ⧸ s, C x) ↔ ∃ x : α, C x 
Arguments: {α : Type u_1} [Group α] {s : Subgroup α} {C : α ⧸ s → Prop}
Goal: (∃ x, C x) ↔ ∃ x, C ↑x
-- QuotientAddGroup.exists_mk
@[to_additive]
theorem exists_mk {C : α ⧸ s → Prop} : (∃ x : α ⧸ s, C x) ↔ ∃ x : α, C x 
Arguments: {α : Type u_1} [AddGroup α] {s : AddSubgroup α} {C : α ⧸ s → Prop}
Goal: (∃ x, C x) ↔ ∃ x, C ↑x
-- QuotientAddGroup.eq
@[to_additive]
protected theorem eq {a b : α} : (a : α ⧸ s) = b ↔ a⁻¹ * b ∈ s 
Arguments: {α : Type u_1} [AddGroup α] {s : AddSubgroup α} {a b : α}
Goal: ↑a = ↑b ↔ -a + b ∈ s
-- QuotientGroup.eq
@[to_additive]
protected theorem eq {a b : α} : (a : α ⧸ s) = b ↔ a⁻¹ * b ∈ s 
Arguments: {α : Type u_1} [Group α] {s : Subgroup α} {a b : α}
Goal: ↑a = ↑b ↔ a⁻¹ * b ∈ s
-- QuotientGroup.eq'
@[to_additive]
theorem eq' {a b : α} : (mk a : α ⧸ s) = mk b ↔ a⁻¹ * b ∈ s 
Arguments: {α : Type u_1} [Group α] {s : Subgroup α} {a b : α}
Goal: ↑a = ↑b ↔ a⁻¹ * b ∈ s
-- QuotientAddGroup.eq'
@[to_additive]
theorem eq' {a b : α} : (mk a : α ⧸ s) = mk b ↔ a⁻¹ * b ∈ s 
Arguments: {α : Type u_1} [AddGroup α] {s : AddSubgroup α} {a b : α}
Goal: ↑a = ↑b ↔ -a + b ∈ s
-- QuotientGroup.out_eq'
@[to_additive] -- Porting note (#10618): `simp` can prove this.
theorem out_eq' (a : α ⧸ s) : mk a.out' = a 
Arguments: {α : Type u_1} [Group α] {s : Subgroup α} (a : α ⧸ s)
Goal: ↑(Quotient.out' a) = a
-- QuotientAddGroup.out_eq'
@[to_additive] -- Porting note (#10618): `simp` can prove this.
theorem out_eq' (a : α ⧸ s) : mk a.out' = a 
Arguments: {α : Type u_1} [AddGroup α] {s : AddSubgroup α} (a : α ⧸ s)
Goal: ↑(Quotient.out' a) = a
-- QuotientGroup.mk_out'_eq_mul
@[to_additive QuotientAddGroup.mk_out'_eq_mul]
theorem mk_out'_eq_mul (g : α) : ∃ h : s, (mk g : α ⧸ s).out' = g * h 
Arguments: {α : Type u_1} [Group α] (s : Subgroup α) (g : α)
Goal: ∃ h, Quotient.out' ↑g = g * ↑h
-- QuotientAddGroup.mk_out'_eq_mul
@[to_additive QuotientAddGroup.mk_out'_eq_mul]
theorem mk_out'_eq_mul (g : α) : ∃ h : s, (mk g : α ⧸ s).out' = g * h 
Arguments: {α : Type u_1} [AddGroup α] (s : AddSubgroup α) (g : α)
Goal: ∃ h, Quotient.out' ↑g = g + ↑h
-- QuotientGroup.mk_mul_of_mem
@[to_additive (attr := simp)]
theorem mk_mul_of_mem (a : α) (hb : b ∈ s) : (mk (a * b) : α ⧸ s) = mk a 
Arguments: {α : Type u_1} [Group α] {s : Subgroup α} {b : α} (a : α) (hb : b ∈ s)
Goal: ↑(a * b) = ↑a
-- QuotientAddGroup.mk_add_of_mem
@[to_additive (attr := simp)]
theorem mk_mul_of_mem (a : α) (hb : b ∈ s) : (mk (a * b) : α ⧸ s) = mk a 
Arguments: {α : Type u_1} [AddGroup α] {s : AddSubgroup α} {b : α} (a : α) (hb : b ∈ s)
Goal: ↑(a + b) = ↑a
-- QuotientGroup.eq_class_eq_leftCoset
@[to_additive]
theorem eq_class_eq_leftCoset (s : Subgroup α) (g : α) :
    { x : α | (x : α ⧸ s) = g } = g • s 
Arguments: {α : Type u_1} [Group α] (s : Subgroup α) (g : α)
Goal: {x | ↑x = ↑g} = g • ↑s
-- QuotientAddGroup.eq_class_eq_leftCoset
@[to_additive]
theorem eq_class_eq_leftCoset (s : Subgroup α) (g : α) :
    { x : α | (x : α ⧸ s) = g } = g • s 
Arguments: {α : Type u_1} [AddGroup α] (s : AddSubgroup α) (g : α)
Goal: {x | ↑x = ↑g} = g +ᵥ ↑s
-- QuotientAddGroup.preimage_image_mk
@[to_additive]
theorem preimage_image_mk (N : Subgroup α) (s : Set α) :
    mk ⁻¹' ((mk : α → α ⧸ N) '' s) = ⋃ x : N, (· * (x : α)) ⁻¹' s 
Arguments: {α : Type u_1} [AddGroup α] (N : AddSubgroup α) (s : Set α)
Goal: QuotientAddGroup.mk ⁻¹' (QuotientAddGroup.mk '' s) = ⋃ x, (fun x_1 => x_1 + ↑x) ⁻¹' s
-- QuotientGroup.preimage_image_mk
@[to_additive]
theorem preimage_image_mk (N : Subgroup α) (s : Set α) :
    mk ⁻¹' ((mk : α → α ⧸ N) '' s) = ⋃ x : N, (· * (x : α)) ⁻¹' s 
Arguments: {α : Type u_1} [Group α] (N : Subgroup α) (s : Set α)
Goal: QuotientGroup.mk ⁻¹' (QuotientGroup.mk '' s) = ⋃ x, (fun x_1 => x_1 * ↑x) ⁻¹' s
-- QuotientGroup.preimage_image_mk_eq_iUnion_image
@[to_additive]
theorem preimage_image_mk_eq_iUnion_image (N : Subgroup α) (s : Set α) :
    mk ⁻¹' ((mk : α → α ⧸ N) '' s) = ⋃ x : N, (· * (x : α)) '' s 
Arguments: {α : Type u_1} [Group α] (N : Subgroup α) (s : Set α)
Goal: QuotientGroup.mk ⁻¹' (QuotientGroup.mk '' s) = ⋃ x, (fun x_1 => x_1 * ↑x) '' s
-- QuotientAddGroup.preimage_image_mk_eq_iUnion_image
@[to_additive]
theorem preimage_image_mk_eq_iUnion_image (N : Subgroup α) (s : Set α) :
    mk ⁻¹' ((mk : α → α ⧸ N) '' s) = ⋃ x : N, (· * (x : α)) '' s 
Arguments: {α : Type u_1} [AddGroup α] (N : AddSubgroup α) (s : Set α)
Goal: QuotientAddGroup.mk ⁻¹' (QuotientAddGroup.mk '' s) = ⋃ x, (fun x_1 => x_1 + ↑x) '' s
-- Subgroup.quotientEquivOfEq_mk
theorem quotientEquivOfEq_mk (h : s = t) (a : α) :
    quotientEquivOfEq h (QuotientGroup.mk a) = QuotientGroup.mk a 
Arguments: {α : Type u_1} [Group α] {s t : Subgroup α} (h : s = t) (a : α)
Goal: (Subgroup.quotientEquivOfEq h) ↑a = ↑a
-- AddSubgroup.quotientEquivSumOfLE'_symm_apply
@[to_additive (attr := simps)
  "If `H ≤ K`, then `G/H ≃ G/K × K/H` constructively, using the provided right inverse
  of the quotient map `G → G/K`. The classical version is `AddSubgroup.quotientEquivSumOfLE`."]
def quotientEquivProdOfLE' (h_le : s ≤ t) (f : α ⧸ t → α)
    (hf : Function.RightInverse f QuotientGroup.mk) : α ⧸ s ≃ (α ⧸ t) × t ⧸ s.subgroupOf t 
Arguments: {α : Type u_1} [AddGroup α] {s t : AddSubgroup α} (h_le : s ≤ t) (f : α ⧸ t → α) (hf : Function.RightInverse f QuotientAddGroup.mk) (a : (α ⧸ t) × ↥t ⧸ s.addSubgroupOf t)
Goal: (AddSubgroup.quotientEquivSumOfLE' h_le f hf).symm a = Quotient.map' (fun b => f a.1 + ↑b) ⋯ a.2
-- AddSubgroup.quotientEquivSumOfLE'_apply
@[to_additive (attr := simps)
  "If `H ≤ K`, then `G/H ≃ G/K × K/H` constructively, using the provided right inverse
  of the quotient map `G → G/K`. The classical version is `AddSubgroup.quotientEquivSumOfLE`."]
def quotientEquivProdOfLE' (h_le : s ≤ t) (f : α ⧸ t → α)
    (hf : Function.RightInverse f QuotientGroup.mk) : α ⧸ s ≃ (α ⧸ t) × t ⧸ s.subgroupOf t 
Arguments: {α : Type u_1} [AddGroup α] {s t : AddSubgroup α} (h_le : s ≤ t) (f : α ⧸ t → α) (hf : Function.RightInverse f QuotientAddGroup.mk) (a : α ⧸ s)
Goal: (AddSubgroup.quotientEquivSumOfLE' h_le f hf) a =
  (Quotient.map' id ⋯ a, Quotient.map' (fun g => ⟨-f (Quotient.mk'' g) + g, ⋯⟩) ⋯ a)
-- Subgroup.quotientEquivProdOfLE'_symm_apply
@[to_additive (attr := simps)
  "If `H ≤ K`, then `G/H ≃ G/K × K/H` constructively, using the provided right inverse
  of the quotient map `G → G/K`. The classical version is `AddSubgroup.quotientEquivSumOfLE`."]
def quotientEquivProdOfLE' (h_le : s ≤ t) (f : α ⧸ t → α)
    (hf : Function.RightInverse f QuotientGroup.mk) : α ⧸ s ≃ (α ⧸ t) × t ⧸ s.subgroupOf t 
Arguments: {α : Type u_1} [Group α] {s t : Subgroup α} (h_le : s ≤ t) (f : α ⧸ t → α) (hf : Function.RightInverse f QuotientGroup.mk) (a : (α ⧸ t) × ↥t ⧸ s.subgroupOf t)
Goal: (Subgroup.quotientEquivProdOfLE' h_le f hf).symm a = Quotient.map' (fun b => f a.1 * ↑b) ⋯ a.2
-- Subgroup.quotientEquivProdOfLE'_apply
@[to_additive (attr := simps)
  "If `H ≤ K`, then `G/H ≃ G/K × K/H` constructively, using the provided right inverse
  of the quotient map `G → G/K`. The classical version is `AddSubgroup.quotientEquivSumOfLE`."]
def quotientEquivProdOfLE' (h_le : s ≤ t) (f : α ⧸ t → α)
    (hf : Function.RightInverse f QuotientGroup.mk) : α ⧸ s ≃ (α ⧸ t) × t ⧸ s.subgroupOf t 
Arguments: {α : Type u_1} [Group α] {s t : Subgroup α} (h_le : s ≤ t) (f : α ⧸ t → α) (hf : Function.RightInverse f QuotientGroup.mk) (a : α ⧸ s)
Goal: (Subgroup.quotientEquivProdOfLE' h_le f hf) a =
  (Quotient.map' id ⋯ a, Quotient.map' (fun g => ⟨(f (Quotient.mk'' g))⁻¹ * g, ⋯⟩) ⋯ a)
-- AddSubgroup.quotientEquivSumOfLE_symm_apply
@[to_additive (attr := simps!) "If `H ≤ K`, then `G/H ≃ G/K × K/H` nonconstructively. The
 constructive version is `quotientEquivProdOfLE'`."]
noncomputable def quotientEquivProdOfLE (h_le : s ≤ t) : α ⧸ s ≃ (α ⧸ t) × t ⧸ s.subgroupOf t 
Arguments: {α : Type u_1} [AddGroup α] {s t : AddSubgroup α} (h_le : s ≤ t) (a : (α ⧸ t) × ↥t ⧸ s.addSubgroupOf t)
Goal: (AddSubgroup.quotientEquivSumOfLE h_le).symm a = Quotient.map' (fun b => Quotient.out' a.1 + ↑b) ⋯ a.2
-- AddSubgroup.quotientEquivSumOfLE_apply
@[to_additive (attr := simps!) "If `H ≤ K`, then `G/H ≃ G/K × K/H` nonconstructively. The
 constructive version is `quotientEquivProdOfLE'`."]
noncomputable def quotientEquivProdOfLE (h_le : s ≤ t) : α ⧸ s ≃ (α ⧸ t) × t ⧸ s.subgroupOf t 
Arguments: {α : Type u_1} [AddGroup α] {s t : AddSubgroup α} (h_le : s ≤ t) (a : α ⧸ s)
Goal: (AddSubgroup.quotientEquivSumOfLE h_le) a =
  (Quotient.map' id ⋯ a, Quotient.map' (fun g => ⟨-(Quotient.mk'' g).out' + g, ⋯⟩) ⋯ a)
-- Subgroup.quotientEquivProdOfLE_symm_apply
@[to_additive (attr := simps!) "If `H ≤ K`, then `G/H ≃ G/K × K/H` nonconstructively. The
 constructive version is `quotientEquivProdOfLE'`."]
noncomputable def quotientEquivProdOfLE (h_le : s ≤ t) : α ⧸ s ≃ (α ⧸ t) × t ⧸ s.subgroupOf t 
Arguments: {α : Type u_1} [Group α] {s t : Subgroup α} (h_le : s ≤ t) (a : (α ⧸ t) × ↥t ⧸ s.subgroupOf t)
Goal: (Subgroup.quotientEquivProdOfLE h_le).symm a = Quotient.map' (fun b => Quotient.out' a.1 * ↑b) ⋯ a.2
-- Subgroup.quotientEquivProdOfLE_apply
@[to_additive (attr := simps!) "If `H ≤ K`, then `G/H ≃ G/K × K/H` nonconstructively. The
 constructive version is `quotientEquivProdOfLE'`."]
noncomputable def quotientEquivProdOfLE (h_le : s ≤ t) : α ⧸ s ≃ (α ⧸ t) × t ⧸ s.subgroupOf t 
Arguments: {α : Type u_1} [Group α] {s t : Subgroup α} (h_le : s ≤ t) (a : α ⧸ s)
Goal: (Subgroup.quotientEquivProdOfLE h_le) a =
  (Quotient.map' id ⋯ a, Quotient.map' (fun g => ⟨(Quotient.mk'' g).out'⁻¹ * g, ⋯⟩) ⋯ a)
-- AddSubgroup.quotientAddSubgroupOfEmbeddingOfLE_apply_mk
@[to_additive (attr := simp)]
theorem quotientSubgroupOfEmbeddingOfLE_apply_mk (H : Subgroup α) (h : s ≤ t) (g : s) :
    quotientSubgroupOfEmbeddingOfLE H h (QuotientGroup.mk g) =
      (QuotientGroup.mk (inclusion h g) : (fun _ => { x // x ∈ t } ⧸ subgroupOf H t) ↑g) 
Arguments: {α : Type u_1} [AddGroup α] {s t : AddSubgroup α} (H : AddSubgroup α) (h : s ≤ t) (g : ↥s)
Goal: (AddSubgroup.quotientAddSubgroupOfEmbeddingOfLE H h) ↑g = ↑((AddSubgroup.inclusion h) g)
-- Subgroup.quotientSubgroupOfEmbeddingOfLE_apply_mk
@[to_additive (attr := simp)]
theorem quotientSubgroupOfEmbeddingOfLE_apply_mk (H : Subgroup α) (h : s ≤ t) (g : s) :
    quotientSubgroupOfEmbeddingOfLE H h (QuotientGroup.mk g) =
      (QuotientGroup.mk (inclusion h g) : (fun _ => { x // x ∈ t } ⧸ subgroupOf H t) ↑g) 
Arguments: {α : Type u_1} [Group α] {s t : Subgroup α} (H : Subgroup α) (h : s ≤ t) (g : ↥s)
Goal: (Subgroup.quotientSubgroupOfEmbeddingOfLE H h) ↑g = ↑((Subgroup.inclusion h) g)
-- Subgroup.quotientSubgroupOfMapOfLE_apply_mk
@[to_additive (attr := simp)]
theorem quotientSubgroupOfMapOfLE_apply_mk (H : Subgroup α) (h : s ≤ t) (g : H) :
    quotientSubgroupOfMapOfLE H h (QuotientGroup.mk g) =
      (QuotientGroup.mk g : { x // x ∈ H } ⧸ subgroupOf t H) 
Arguments: {α : Type u_1} [Group α] {s t : Subgroup α} (H : Subgroup α) (h : s ≤ t) (g : ↥H)
Goal: Subgroup.quotientSubgroupOfMapOfLE H h ↑g = ↑g
-- AddSubgroup.quotientAddSubgroupOfMapOfLE_apply_mk
@[to_additive (attr := simp)]
theorem quotientSubgroupOfMapOfLE_apply_mk (H : Subgroup α) (h : s ≤ t) (g : H) :
    quotientSubgroupOfMapOfLE H h (QuotientGroup.mk g) =
      (QuotientGroup.mk g : { x // x ∈ H } ⧸ subgroupOf t H) 
Arguments: {α : Type u_1} [AddGroup α] {s t : AddSubgroup α} (H : AddSubgroup α) (h : s ≤ t) (g : ↥H)
Goal: AddSubgroup.quotientAddSubgroupOfMapOfLE H h ↑g = ↑g
-- Subgroup.quotientMapOfLE_apply_mk
@[to_additive (attr := simp)]
theorem quotientMapOfLE_apply_mk (h : s ≤ t) (g : α) :
    quotientMapOfLE h (QuotientGroup.mk g) = QuotientGroup.mk g 
Arguments: {α : Type u_1} [Group α] {s t : Subgroup α} (h : s ≤ t) (g : α)
Goal: Subgroup.quotientMapOfLE h ↑g = ↑g
-- AddSubgroup.quotientMapOfLE_apply_mk
@[to_additive (attr := simp)]
theorem quotientMapOfLE_apply_mk (h : s ≤ t) (g : α) :
    quotientMapOfLE h (QuotientGroup.mk g) = QuotientGroup.mk g 
Arguments: {α : Type u_1} [AddGroup α] {s t : AddSubgroup α} (h : s ≤ t) (g : α)
Goal: AddSubgroup.quotientMapOfLE h ↑g = ↑g
-- Subgroup.quotientiInfSubgroupOfEmbedding_apply
@[to_additive (attr := simps) "The natural embedding
 `H ⧸ (⨅ i, f i).addSubgroupOf H) ↪ Π i, H ⧸ (f i).addSubgroupOf H`."]
def quotientiInfSubgroupOfEmbedding {ι : Type*} (f : ι → Subgroup α) (H : Subgroup α) :
    H ⧸ (⨅ i, f i).subgroupOf H ↪ ∀ i, H ⧸ (f i).subgroupOf H 
Arguments: {α : Type u_1} [Group α] {ι : Type u_2} (f : ι → Subgroup α) (H : Subgroup α) (q : ↥H ⧸ (⨅ i, f i).subgroupOf H) (i : ι)
Goal: (Subgroup.quotientiInfSubgroupOfEmbedding f H) q i = Subgroup.quotientSubgroupOfMapOfLE H ⋯ q
-- AddSubgroup.quotientiInfAddSubgroupOfEmbedding_apply
@[to_additive (attr := simps) "The natural embedding
 `H ⧸ (⨅ i, f i).addSubgroupOf H) ↪ Π i, H ⧸ (f i).addSubgroupOf H`."]
def quotientiInfSubgroupOfEmbedding {ι : Type*} (f : ι → Subgroup α) (H : Subgroup α) :
    H ⧸ (⨅ i, f i).subgroupOf H ↪ ∀ i, H ⧸ (f i).subgroupOf H 
Arguments: {α : Type u_1} [AddGroup α] {ι : Type u_2} (f : ι → AddSubgroup α) (H : AddSubgroup α) (q : ↥H ⧸ (⨅ i, f i).addSubgroupOf H) (i : ι)
Goal: (AddSubgroup.quotientiInfAddSubgroupOfEmbedding f H) q i = AddSubgroup.quotientAddSubgroupOfMapOfLE H ⋯ q
-- Subgroup.quotientiInfSubgroupOfEmbedding_apply_mk
@[to_additive (attr := simp)]
theorem quotientiInfSubgroupOfEmbedding_apply_mk {ι : Type*} (f : ι → Subgroup α) (H : Subgroup α)
    (g : H) (i : ι) :
    quotientiInfSubgroupOfEmbedding f H (QuotientGroup.mk g) i =
      (QuotientGroup.mk g : { x // x ∈ H } ⧸ subgroupOf (f i) H) 
Arguments: {α : Type u_1} [Group α] {ι : Type u_2} (f : ι → Subgroup α) (H : Subgroup α) (g : ↥H) (i : ι)
Goal: (Subgroup.quotientiInfSubgroupOfEmbedding f H) (↑g) i = ↑g
-- AddSubgroup.quotientiInfAddSubgroupOfEmbedding_apply_mk
@[to_additive (attr := simp)]
theorem quotientiInfSubgroupOfEmbedding_apply_mk {ι : Type*} (f : ι → Subgroup α) (H : Subgroup α)
    (g : H) (i : ι) :
    quotientiInfSubgroupOfEmbedding f H (QuotientGroup.mk g) i =
      (QuotientGroup.mk g : { x // x ∈ H } ⧸ subgroupOf (f i) H) 
Arguments: {α : Type u_1} [AddGroup α] {ι : Type u_2} (f : ι → AddSubgroup α) (H : AddSubgroup α) (g : ↥H) (i : ι)
Goal: (AddSubgroup.quotientiInfAddSubgroupOfEmbedding f H) (↑g) i = ↑g
-- Subgroup.quotientiInfEmbedding_apply
@[to_additive (attr := simps) "The natural embedding `α ⧸ (⨅ i, f i) ↪ Π i, α ⧸ f i`."]
def quotientiInfEmbedding {ι : Type*} (f : ι → Subgroup α) : (α ⧸ ⨅ i, f i) ↪ ∀ i, α ⧸ f i 
Arguments: {α : Type u_1} [Group α] {ι : Type u_2} (f : ι → Subgroup α) (q : α ⧸ ⨅ i, f i) (i : ι)
Goal: (Subgroup.quotientiInfEmbedding f) q i = Subgroup.quotientMapOfLE ⋯ q
-- AddSubgroup.quotientiInfEmbedding_apply
@[to_additive (attr := simps) "The natural embedding `α ⧸ (⨅ i, f i) ↪ Π i, α ⧸ f i`."]
def quotientiInfEmbedding {ι : Type*} (f : ι → Subgroup α) : (α ⧸ ⨅ i, f i) ↪ ∀ i, α ⧸ f i 
Arguments: {α : Type u_1} [AddGroup α] {ι : Type u_2} (f : ι → AddSubgroup α) (q : α ⧸ ⨅ i, f i) (i : ι)
Goal: (AddSubgroup.quotientiInfEmbedding f) q i = AddSubgroup.quotientMapOfLE ⋯ q
-- AddSubgroup.quotientiInfEmbedding_apply_mk
@[to_additive (attr := simp)]
theorem quotientiInfEmbedding_apply_mk {ι : Type*} (f : ι → Subgroup α) (g : α) (i : ι) :
    quotientiInfEmbedding f (QuotientGroup.mk g) i = QuotientGroup.mk g 
Arguments: {α : Type u_1} [AddGroup α] {ι : Type u_2} (f : ι → AddSubgroup α) (g : α) (i : ι)
Goal: (AddSubgroup.quotientiInfEmbedding f) (↑g) i = ↑g
-- Subgroup.quotientiInfEmbedding_apply_mk
@[to_additive (attr := simp)]
theorem quotientiInfEmbedding_apply_mk {ι : Type*} (f : ι → Subgroup α) (g : α) (i : ι) :
    quotientiInfEmbedding f (QuotientGroup.mk g) i = QuotientGroup.mk g 
Arguments: {α : Type u_1} [Group α] {ι : Type u_2} (f : ι → Subgroup α) (g : α) (i : ι)
Goal: (Subgroup.quotientiInfEmbedding f) (↑g) i = ↑g
-- AddSubgroup.card_eq_card_quotient_mul_card_addSubgroup
@[to_additive AddSubgroup.card_eq_card_quotient_mul_card_addSubgroup]
theorem card_eq_card_quotient_mul_card_subgroup (s : Subgroup α) :
    Nat.card α = Nat.card (α ⧸ s) * Nat.card s 
Arguments: {α : Type u_1} [AddGroup α] (s : AddSubgroup α)
Goal: Nat.card α = Nat.card (α ⧸ s) * Nat.card ↥s
-- Subgroup.card_eq_card_quotient_mul_card_subgroup
@[to_additive AddSubgroup.card_eq_card_quotient_mul_card_addSubgroup]
theorem card_eq_card_quotient_mul_card_subgroup (s : Subgroup α) :
    Nat.card α = Nat.card (α ⧸ s) * Nat.card s 
Arguments: {α : Type u_1} [Group α] (s : Subgroup α)
Goal: Nat.card α = Nat.card (α ⧸ s) * Nat.card ↥s
-- AddSubgroup.card_addSubgroup_dvd_card
@[to_additive "**Lagrange's Theorem**: The order of an additive subgroup divides the order of its
 ambient additive group."]
theorem card_subgroup_dvd_card (s : Subgroup α) : Nat.card s ∣ Nat.card α 
Arguments: {α : Type u_1} [AddGroup α] (s : AddSubgroup α)
Goal: Nat.card ↥s ∣ Nat.card α
-- Subgroup.card_subgroup_dvd_card
@[to_additive "**Lagrange's Theorem**: The order of an additive subgroup divides the order of its
 ambient additive group."]
theorem card_subgroup_dvd_card (s : Subgroup α) : Nat.card s ∣ Nat.card α 
Arguments: {α : Type u_1} [Group α] (s : Subgroup α)
Goal: Nat.card ↥s ∣ Nat.card α
-- AddSubgroup.card_quotient_dvd_card
@[to_additive]
theorem card_quotient_dvd_card (s : Subgroup α) : Nat.card (α ⧸ s) ∣ Nat.card α 
Arguments: {α : Type u_1} [AddGroup α] (s : AddSubgroup α)
Goal: Nat.card (α ⧸ s) ∣ Nat.card α
-- Subgroup.card_quotient_dvd_card
@[to_additive]
theorem card_quotient_dvd_card (s : Subgroup α) : Nat.card (α ⧸ s) ∣ Nat.card α 
Arguments: {α : Type u_1} [Group α] (s : Subgroup α)
Goal: Nat.card (α ⧸ s) ∣ Nat.card α
-- AddSubgroup.card_dvd_of_injective
@[to_additive]
theorem card_dvd_of_injective (f : α →* H) (hf : Function.Injective f) :
    Nat.card α ∣ Nat.card H 
Arguments: {α : Type u_1} [AddGroup α] {H : Type u_2} [AddGroup H] (f : α →+ H) (hf : Function.Injective ⇑f)
Goal: Nat.card α ∣ Nat.card H
-- Subgroup.card_dvd_of_injective
@[to_additive]
theorem card_dvd_of_injective (f : α →* H) (hf : Function.Injective f) :
    Nat.card α ∣ Nat.card H 
Arguments: {α : Type u_1} [Group α] {H : Type u_2} [Group H] (f : α →* H) (hf : Function.Injective ⇑f)
Goal: Nat.card α ∣ Nat.card H
-- AddSubgroup.card_dvd_of_le
@[to_additive]
theorem card_dvd_of_le {H K : Subgroup α} (hHK : H ≤ K) : Nat.card H ∣ Nat.card K 
Arguments: {α : Type u_1} [AddGroup α] {H K : AddSubgroup α} (hHK : H ≤ K)
Goal: Nat.card ↥H ∣ Nat.card ↥K
-- Subgroup.card_dvd_of_le
@[to_additive]
theorem card_dvd_of_le {H K : Subgroup α} (hHK : H ≤ K) : Nat.card H ∣ Nat.card K 
Arguments: {α : Type u_1} [Group α] {H K : Subgroup α} (hHK : H ≤ K)
Goal: Nat.card ↥H ∣ Nat.card ↥K