ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Subgroup.mk_le_mk
@[to_additive (attr := simp)]
theorem mk_le_mk {s t : Set G} (h_one) (h_mul) (h_inv) (h_one') (h_mul') (h_inv') :
    mk ⟨⟨s, h_one⟩, h_mul⟩ h_inv ≤ mk ⟨⟨t, h_one'⟩, h_mul'⟩ h_inv' ↔ s ⊆ t 
Arguments: {G : Type u_1} [Group G] {s t : Set G} (h_one : ∀ {a b : G}, a ∈ s → b ∈ s → a * b ∈ s) (h_mul : s 1) (h_inv :
  ∀ {x : G},
    x ∈ { carrier := s, mul_mem' := h_one, one_mem' := h_mul }.carrier →
      x⁻¹ ∈ { carrier := s, mul_mem' := h_one, one_mem' := h_mul }.carrier) (h_one' : ∀ {a b : G}, a ∈ t → b ∈ t → a * b ∈ t) (h_mul' : t 1) (h_inv' :
  ∀ {x : G},
    x ∈ { carrier := t, mul_mem' := h_one', one_mem' := h_mul' }.carrier →
      x⁻¹ ∈ { carrier := t, mul_mem' := h_one', one_mem' := h_mul' }.carrier)
Goal: { carrier := s, mul_mem' := h_one, one_mem' := h_mul, inv_mem' := h_inv } ≤
    { carrier := t, mul_mem' := h_one', one_mem' := h_mul', inv_mem' := h_inv' } ↔
  s ⊆ t
-- Subgroup.coe_toSubmonoid
@[to_additive (attr := simp)]
theorem coe_toSubmonoid (K : Subgroup G) : (K.toSubmonoid : Set G) = K 
Arguments: {G : Type u_1} [Group G] (K : Subgroup G)
Goal: ↑K.toSubmonoid = ↑K
-- AddSubgroup.coe_toAddSubmonoid
@[to_additive (attr := simp)]
theorem coe_toSubmonoid (K : Subgroup G) : (K.toSubmonoid : Set G) = K 
Arguments: {G : Type u_1} [AddGroup G] (K : AddSubgroup G)
Goal: ↑K.toAddSubmonoid = ↑K
-- Subgroup.mem_toSubmonoid
@[to_additive (attr := simp)]
theorem mem_toSubmonoid (K : Subgroup G) (x : G) : x ∈ K.toSubmonoid ↔ x ∈ K 
Arguments: {G : Type u_1} [Group G] (K : Subgroup G) (x : G)
Goal: x ∈ K.toSubmonoid ↔ x ∈ K
-- AddSubgroup.mem_toAddSubmonoid
@[to_additive (attr := simp)]
theorem mem_toSubmonoid (K : Subgroup G) (x : G) : x ∈ K.toSubmonoid ↔ x ∈ K 
Arguments: {G : Type u_1} [AddGroup G] (K : AddSubgroup G) (x : G)
Goal: x ∈ K.toAddSubmonoid ↔ x ∈ K
-- Subgroup.toSubmonoid_injective
@[to_additive]
theorem toSubmonoid_injective : Function.Injective (toSubmonoid : Subgroup G → Submonoid G) 
Arguments: {G : Type u_1} [Group G]
Goal: Function.Injective Subgroup.toSubmonoid
-- AddSubgroup.toAddSubmonoid_injective
@[to_additive]
theorem toSubmonoid_injective : Function.Injective (toSubmonoid : Subgroup G → Submonoid G) 
Arguments: {G : Type u_1} [AddGroup G]
Goal: Function.Injective AddSubgroup.toAddSubmonoid
-- AddSubgroup.toAddSubmonoid_eq
@[to_additive (attr := simp)]
theorem toSubmonoid_eq {p q : Subgroup G} : p.toSubmonoid = q.toSubmonoid ↔ p = q 
Arguments: {G : Type u_1} [AddGroup G] {p q : AddSubgroup G}
Goal: p.toAddSubmonoid = q.toAddSubmonoid ↔ p = q
-- Subgroup.toSubmonoid_eq
@[to_additive (attr := simp)]
theorem toSubmonoid_eq {p q : Subgroup G} : p.toSubmonoid = q.toSubmonoid ↔ p = q 
Arguments: {G : Type u_1} [Group G] {p q : Subgroup G}
Goal: p.toSubmonoid = q.toSubmonoid ↔ p = q
-- Subgroup.toSubmonoid_strictMono
@[to_additive (attr := mono)]
theorem toSubmonoid_strictMono : StrictMono (toSubmonoid : Subgroup G → Submonoid G) 
Arguments: {G : Type u_1} [Group G]
Goal: StrictMono Subgroup.toSubmonoid
-- AddSubgroup.toAddSubmonoid_strictMono
@[to_additive (attr := mono)]
theorem toSubmonoid_strictMono : StrictMono (toSubmonoid : Subgroup G → Submonoid G) 
Arguments: {G : Type u_1} [AddGroup G]
Goal: StrictMono AddSubgroup.toAddSubmonoid
-- AddSubgroup.toAddSubmonoid_mono
@[to_additive (attr := mono)]
theorem toSubmonoid_mono : Monotone (toSubmonoid : Subgroup G → Submonoid G) 
Arguments: {G : Type u_1} [AddGroup G]
Goal: Monotone AddSubgroup.toAddSubmonoid
-- Subgroup.toSubmonoid_mono
@[to_additive (attr := mono)]
theorem toSubmonoid_mono : Monotone (toSubmonoid : Subgroup G → Submonoid G) 
Arguments: {G : Type u_1} [Group G]
Goal: Monotone Subgroup.toSubmonoid
-- AddSubgroup.toAddSubmonoid_le
@[to_additive (attr := simp)]
theorem toSubmonoid_le {p q : Subgroup G} : p.toSubmonoid ≤ q.toSubmonoid ↔ p ≤ q 
Arguments: {G : Type u_1} [AddGroup G] {p q : AddSubgroup G}
Goal: p.toAddSubmonoid ≤ q.toAddSubmonoid ↔ p ≤ q
-- Subgroup.toSubmonoid_le
@[to_additive (attr := simp)]
theorem toSubmonoid_le {p q : Subgroup G} : p.toSubmonoid ≤ q.toSubmonoid ↔ p ≤ q 
Arguments: {G : Type u_1} [Group G] {p q : Subgroup G}
Goal: p.toSubmonoid ≤ q.toSubmonoid ↔ p ≤ q
-- AddSubgroup.coe_nonempty
@[to_additive (attr := simp)]
lemma coe_nonempty (s : Subgroup G) : (s : Set G).Nonempty 
Arguments: {G : Type u_1} [AddGroup G] (s : AddSubgroup G)
Goal: (↑s).Nonempty
-- Subgroup.coe_nonempty
@[to_additive (attr := simp)]
lemma coe_nonempty (s : Subgroup G) : (s : Set G).Nonempty 
Arguments: {G : Type u_1} [Group G] (s : Subgroup G)
Goal: (↑s).Nonempty
-- Subgroup.toAddSubgroup_apply_coe
@[simps!]
def Subgroup.toAddSubgroup : Subgroup G ≃o AddSubgroup (Additive G) 
Arguments: {G : Type u_1} [Group G] (S : Subgroup G)
Goal: ↑(Subgroup.toAddSubgroup S) = ⇑Additive.toMul ⁻¹' ↑S
-- Subgroup.toAddSubgroup_symm_apply_coe
@[simps!]
def Subgroup.toAddSubgroup : Subgroup G ≃o AddSubgroup (Additive G) 
Arguments: {G : Type u_1} [Group G] (S : AddSubgroup (Additive G))
Goal: ↑((RelIso.symm Subgroup.toAddSubgroup) S) = ⇑Multiplicative.toAdd ⁻¹' ↑S
-- AddSubgroup.toSubgroup_symm_apply_coe
@[simps!]
def AddSubgroup.toSubgroup : AddSubgroup A ≃o Subgroup (Multiplicative A) 
Arguments: {A : Type u_4} [AddGroup A] (S : Subgroup (Multiplicative A))
Goal: ↑((RelIso.symm AddSubgroup.toSubgroup) S) = ⇑Additive.toMul ⁻¹' ↑S
-- AddSubgroup.toSubgroup_apply_coe
@[simps!]
def AddSubgroup.toSubgroup : AddSubgroup A ≃o Subgroup (Multiplicative A) 
Arguments: {A : Type u_4} [AddGroup A] (S : AddSubgroup A)
Goal: ↑(AddSubgroup.toSubgroup S) = ⇑Multiplicative.toAdd ⁻¹' ↑S
-- Subgroup.coe_copy
@[to_additive (attr := simp)]
theorem coe_copy (K : Subgroup G) (s : Set G) (hs : s = ↑K) : (K.copy s hs : Set G) = s 
Arguments: {G : Type u_1} [Group G] (K : Subgroup G) (s : Set G) (hs : s = ↑K)
Goal: ↑(K.copy s hs) = s
-- AddSubgroup.coe_copy
@[to_additive (attr := simp)]
theorem coe_copy (K : Subgroup G) (s : Set G) (hs : s = ↑K) : (K.copy s hs : Set G) = s 
Arguments: {G : Type u_1} [AddGroup G] (K : AddSubgroup G) (s : Set G) (hs : s = ↑K)
Goal: ↑(K.copy s hs) = s
-- AddSubgroup.copy_eq
@[to_additive]
theorem copy_eq (K : Subgroup G) (s : Set G) (hs : s = ↑K) : K.copy s hs = K 
Arguments: {G : Type u_1} [AddGroup G] (K : AddSubgroup G) (s : Set G) (hs : s = ↑K)
Goal: K.copy s hs = K
-- Subgroup.copy_eq
@[to_additive]
theorem copy_eq (K : Subgroup G) (s : Set G) (hs : s = ↑K) : K.copy s hs = K 
Arguments: {G : Type u_1} [Group G] (K : Subgroup G) (s : Set G) (hs : s = ↑K)
Goal: K.copy s hs = K
-- Subgroup.ext
@[to_additive (attr := ext) "Two `AddSubgroup`s are equal if they have the same elements."]
theorem ext {H K : Subgroup G} (h : ∀ x, x ∈ H ↔ x ∈ K) : H = K 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} (h : ∀ (x : G), x ∈ H ↔ x ∈ K)
Goal: H = K
-- AddSubgroup.ext
@[to_additive (attr := ext) "Two `AddSubgroup`s are equal if they have the same elements."]
theorem ext {H K : Subgroup G} (h : ∀ x, x ∈ H ↔ x ∈ K) : H = K 
Arguments: {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (h : ∀ (x : G), x ∈ H ↔ x ∈ K)
Goal: H = K
-- Subgroup.one_mem
@[to_additive "An `AddSubgroup` contains the group's 0."]
protected theorem one_mem : (1 : G) ∈ H 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G)
Goal: 1 ∈ H
-- AddSubgroup.zero_mem
@[to_additive "An `AddSubgroup` contains the group's 0."]
protected theorem one_mem : (1 : G) ∈ H 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G)
Goal: 0 ∈ H
-- AddSubgroup.add_mem
@[to_additive "An `AddSubgroup` is closed under addition."]
protected theorem mul_mem {x y : G} : x ∈ H → y ∈ H → x * y ∈ H 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) {x y : G}
Goal: x ∈ H → y ∈ H → x + y ∈ H
-- Subgroup.mul_mem
@[to_additive "An `AddSubgroup` is closed under addition."]
protected theorem mul_mem {x y : G} : x ∈ H → y ∈ H → x * y ∈ H 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) {x y : G}
Goal: x ∈ H → y ∈ H → x * y ∈ H
-- AddSubgroup.neg_mem
@[to_additive "An `AddSubgroup` is closed under inverse."]
protected theorem inv_mem {x : G} : x ∈ H → x⁻¹ ∈ H 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) {x : G}
Goal: x ∈ H → -x ∈ H
-- Subgroup.inv_mem
@[to_additive "An `AddSubgroup` is closed under inverse."]
protected theorem inv_mem {x : G} : x ∈ H → x⁻¹ ∈ H 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) {x : G}
Goal: x ∈ H → x⁻¹ ∈ H
-- AddSubgroup.sub_mem
@[to_additive "An `AddSubgroup` is closed under subtraction."]
protected theorem div_mem {x y : G} (hx : x ∈ H) (hy : y ∈ H) : x / y ∈ H 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) {x y : G} (hx : x ∈ H) (hy : y ∈ H)
Goal: x - y ∈ H
-- Subgroup.div_mem
@[to_additive "An `AddSubgroup` is closed under subtraction."]
protected theorem div_mem {x y : G} (hx : x ∈ H) (hy : y ∈ H) : x / y ∈ H 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) {x y : G} (hx : x ∈ H) (hy : y ∈ H)
Goal: x / y ∈ H
-- Subgroup.inv_mem_iff
@[to_additive]
protected theorem inv_mem_iff {x : G} : x⁻¹ ∈ H ↔ x ∈ H 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) {x : G}
Goal: x⁻¹ ∈ H ↔ x ∈ H
-- AddSubgroup.neg_mem_iff
@[to_additive]
protected theorem inv_mem_iff {x : G} : x⁻¹ ∈ H ↔ x ∈ H 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) {x : G}
Goal: -x ∈ H ↔ x ∈ H
-- Subgroup.div_mem_comm_iff
@[to_additive]
protected theorem div_mem_comm_iff {a b : G} : a / b ∈ H ↔ b / a ∈ H 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) {a b : G}
Goal: a / b ∈ H ↔ b / a ∈ H
-- AddSubgroup.sub_mem_comm_iff
@[to_additive]
protected theorem div_mem_comm_iff {a b : G} : a / b ∈ H ↔ b / a ∈ H 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) {a b : G}
Goal: a - b ∈ H ↔ b - a ∈ H
-- AddSubgroup.exists_neg_mem_iff_exists_mem
@[to_additive]
protected theorem exists_inv_mem_iff_exists_mem (K : Subgroup G) {P : G → Prop} :
    (∃ x : G, x ∈ K ∧ P x⁻¹) ↔ ∃ x ∈ K, P x 
Arguments: {G : Type u_1} [AddGroup G] (K : AddSubgroup G) {P : G → Prop}
Goal: (∃ x ∈ K, P (-x)) ↔ ∃ x ∈ K, P x
-- Subgroup.exists_inv_mem_iff_exists_mem
@[to_additive]
protected theorem exists_inv_mem_iff_exists_mem (K : Subgroup G) {P : G → Prop} :
    (∃ x : G, x ∈ K ∧ P x⁻¹) ↔ ∃ x ∈ K, P x 
Arguments: {G : Type u_1} [Group G] (K : Subgroup G) {P : G → Prop}
Goal: (∃ x ∈ K, P x⁻¹) ↔ ∃ x ∈ K, P x
-- AddSubgroup.add_mem_cancel_right
@[to_additive]
protected theorem mul_mem_cancel_right {x y : G} (h : x ∈ H) : y * x ∈ H ↔ y ∈ H 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) {x y : G} (h : x ∈ H)
Goal: y + x ∈ H ↔ y ∈ H
-- Subgroup.mul_mem_cancel_right
@[to_additive]
protected theorem mul_mem_cancel_right {x y : G} (h : x ∈ H) : y * x ∈ H ↔ y ∈ H 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) {x y : G} (h : x ∈ H)
Goal: y * x ∈ H ↔ y ∈ H
-- AddSubgroup.add_mem_cancel_left
@[to_additive]
protected theorem mul_mem_cancel_left {x y : G} (h : x ∈ H) : x * y ∈ H ↔ y ∈ H 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) {x y : G} (h : x ∈ H)
Goal: x + y ∈ H ↔ y ∈ H
-- Subgroup.mul_mem_cancel_left
@[to_additive]
protected theorem mul_mem_cancel_left {x y : G} (h : x ∈ H) : x * y ∈ H ↔ y ∈ H 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) {x y : G} (h : x ∈ H)
Goal: x * y ∈ H ↔ y ∈ H
-- Subgroup.pow_mem
@[to_additive]
protected theorem pow_mem {x : G} (hx : x ∈ K) : ∀ n : ℕ, x ^ n ∈ K 
Arguments: {G : Type u_1} [Group G] (K : Subgroup G) {x : G} (hx : x ∈ K) (n : ℕ)
Goal: x ^ n ∈ K
-- AddSubgroup.nsmul_mem
@[to_additive]
protected theorem pow_mem {x : G} (hx : x ∈ K) : ∀ n : ℕ, x ^ n ∈ K 
Arguments: {G : Type u_1} [AddGroup G] (K : AddSubgroup G) {x : G} (hx : x ∈ K) (n : ℕ)
Goal: n • x ∈ K
-- Subgroup.zpow_mem
@[to_additive]
protected theorem zpow_mem {x : G} (hx : x ∈ K) : ∀ n : ℤ, x ^ n ∈ K 
Arguments: {G : Type u_1} [Group G] (K : Subgroup G) {x : G} (hx : x ∈ K) (n : ℤ)
Goal: x ^ n ∈ K
-- AddSubgroup.zsmul_mem
@[to_additive]
protected theorem zpow_mem {x : G} (hx : x ∈ K) : ∀ n : ℤ, x ^ n ∈ K 
Arguments: {G : Type u_1} [AddGroup G] (K : AddSubgroup G) {x : G} (hx : x ∈ K) (n : ℤ)
Goal: n • x ∈ K
-- AddSubgroup.coe_add
@[to_additive (attr := simp, norm_cast)]
theorem coe_mul (x y : H) : (↑(x * y) : G) = ↑x * ↑y 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) (x y : ↥H)
Goal: ↑(x + y) = ↑x + ↑y
-- Subgroup.coe_mul
@[to_additive (attr := simp, norm_cast)]
theorem coe_mul (x y : H) : (↑(x * y) : G) = ↑x * ↑y 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) (x y : ↥H)
Goal: ↑(x * y) = ↑x * ↑y
-- AddSubgroup.coe_zero
@[to_additive (attr := simp, norm_cast)]
theorem coe_one : ((1 : H) : G) = 1 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G)
Goal: ↑0 = 0
-- Subgroup.coe_one
@[to_additive (attr := simp, norm_cast)]
theorem coe_one : ((1 : H) : G) = 1 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G)
Goal: ↑1 = 1
-- AddSubgroup.coe_neg
@[to_additive (attr := simp, norm_cast)]
theorem coe_inv (x : H) : ↑(x⁻¹ : H) = (x⁻¹ : G) 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) (x : ↥H)
Goal: ↑(-x) = -↑x
-- Subgroup.coe_inv
@[to_additive (attr := simp, norm_cast)]
theorem coe_inv (x : H) : ↑(x⁻¹ : H) = (x⁻¹ : G) 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) (x : ↥H)
Goal: ↑x⁻¹ = (↑x)⁻¹
-- Subgroup.coe_div
@[to_additive (attr := simp, norm_cast)]
theorem coe_div (x y : H) : (↑(x / y) : G) = ↑x / ↑y 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) (x y : ↥H)
Goal: ↑(x / y) = ↑x / ↑y
-- AddSubgroup.coe_sub
@[to_additive (attr := simp, norm_cast)]
theorem coe_div (x y : H) : (↑(x / y) : G) = ↑x / ↑y 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) (x y : ↥H)
Goal: ↑(x - y) = ↑x - ↑y
-- Subgroup.coe_mk
@[to_additive (attr := norm_cast)]
theorem coe_mk (x : G) (hx : x ∈ H) : ((⟨x, hx⟩ : H) : G) = x 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) (x : G) (hx : x ∈ H)
Goal: ↑⟨x, hx⟩ = x
-- AddSubgroup.coe_mk
@[to_additive (attr := norm_cast)]
theorem coe_mk (x : G) (hx : x ∈ H) : ((⟨x, hx⟩ : H) : G) = x 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) (x : G) (hx : x ∈ H)
Goal: ↑⟨x, hx⟩ = x
-- AddSubgroup.coe_nsmul
@[to_additive (attr := simp, norm_cast)]
theorem coe_pow (x : H) (n : ℕ) : ((x ^ n : H) : G) = (x : G) ^ n 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) (x : ↥H) (n : ℕ)
Goal: ↑(n • x) = n • ↑x
-- Subgroup.coe_pow
@[to_additive (attr := simp, norm_cast)]
theorem coe_pow (x : H) (n : ℕ) : ((x ^ n : H) : G) = (x : G) ^ n 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) (x : ↥H) (n : ℕ)
Goal: ↑(x ^ n) = ↑x ^ n
-- AddSubgroup.coe_zsmul
@[to_additive (attr := norm_cast)] -- Porting note (#10685): dsimp can prove this
theorem coe_zpow (x : H) (n : ℤ) : ((x ^ n : H) : G) = (x : G) ^ n 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) (x : ↥H) (n : ℤ)
Goal: ↑(n • x) = n • ↑x
-- Subgroup.coe_zpow
@[to_additive (attr := norm_cast)] -- Porting note (#10685): dsimp can prove this
theorem coe_zpow (x : H) (n : ℤ) : ((x ^ n : H) : G) = (x : G) ^ n 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) (x : ↥H) (n : ℤ)
Goal: ↑(x ^ n) = ↑x ^ n
-- Subgroup.mk_eq_one
@[to_additive] -- This can be proved by `Submonoid.mk_eq_one`
theorem mk_eq_one {g : G} {h} : (⟨g, h⟩ : H) = 1 ↔ g = 1 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) {g : G} {h : g ∈ H}
Goal: ⟨g, h⟩ = 1 ↔ g = 1
-- AddSubgroup.mk_eq_zero
@[to_additive] -- This can be proved by `Submonoid.mk_eq_one`
theorem mk_eq_one {g : G} {h} : (⟨g, h⟩ : H) = 1 ↔ g = 1 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) {g : G} {h : g ∈ H}
Goal: ⟨g, h⟩ = 0 ↔ g = 0
-- Subgroup.coeSubtype
@[to_additive (attr := simp)]
theorem coeSubtype : ⇑ H.subtype = ((↑) : H → G) 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G)
Goal: ⇑H.subtype = Subtype.val
-- AddSubgroup.coeSubtype
@[to_additive (attr := simp)]
theorem coeSubtype : ⇑ H.subtype = ((↑) : H → G) 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G)
Goal: ⇑H.subtype = Subtype.val
-- Subgroup.subtype_injective
@[to_additive]
theorem subtype_injective : Function.Injective (Subgroup.subtype H) 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G)
Goal: Function.Injective ⇑H.subtype
-- AddSubgroup.subtype_injective
@[to_additive]
theorem subtype_injective : Function.Injective (Subgroup.subtype H) 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G)
Goal: Function.Injective ⇑H.subtype
-- AddSubgroup.coe_inclusion
@[to_additive (attr := simp)]
theorem coe_inclusion {H K : Subgroup G} {h : H ≤ K} (a : H) : (inclusion h a : G) = a 
Arguments: {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} {h : H ≤ K} (a : ↥H)
Goal: ↑((AddSubgroup.inclusion h) a) = ↑a
-- Subgroup.coe_inclusion
@[to_additive (attr := simp)]
theorem coe_inclusion {H K : Subgroup G} {h : H ≤ K} (a : H) : (inclusion h a : G) = a 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} {h : H ≤ K} (a : ↥H)
Goal: ↑((Subgroup.inclusion h) a) = ↑a
-- AddSubgroup.inclusion_injective
@[to_additive]
theorem inclusion_injective {H K : Subgroup G} (h : H ≤ K) : Function.Injective <| inclusion h 
Arguments: {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (h : H ≤ K)
Goal: Function.Injective ⇑(AddSubgroup.inclusion h)
-- Subgroup.inclusion_injective
@[to_additive]
theorem inclusion_injective {H K : Subgroup G} (h : H ≤ K) : Function.Injective <| inclusion h 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} (h : H ≤ K)
Goal: Function.Injective ⇑(Subgroup.inclusion h)
-- AddSubgroup.subtype_comp_inclusion
@[to_additive (attr := simp)]
theorem subtype_comp_inclusion {H K : Subgroup G} (hH : H ≤ K) :
    K.subtype.comp (inclusion hH) = H.subtype 
Arguments: {G : Type u_1} [AddGroup G] {H K : AddSubgroup G} (hH : H ≤ K)
Goal: K.subtype.comp (AddSubgroup.inclusion hH) = H.subtype
-- Subgroup.subtype_comp_inclusion
@[to_additive (attr := simp)]
theorem subtype_comp_inclusion {H K : Subgroup G} (hH : H ≤ K) :
    K.subtype.comp (inclusion hH) = H.subtype 
Arguments: {G : Type u_1} [Group G] {H K : Subgroup G} (hH : H ≤ K)
Goal: K.subtype.comp (Subgroup.inclusion hH) = H.subtype
-- Subgroup.topEquiv_symm_apply_coe
@[to_additive (attr := simps!)
      "The top additive subgroup is isomorphic to the additive group.

      This is the additive group version of `AddSubmonoid.topEquiv`."]
def topEquiv : (⊤ : Subgroup G) ≃* G 
Arguments: {G : Type u_1} [Group G] (x : G)
Goal: ↑(Subgroup.topEquiv.symm x) = x
-- AddSubgroup.topEquiv_apply
@[to_additive (attr := simps!)
      "The top additive subgroup is isomorphic to the additive group.

      This is the additive group version of `AddSubmonoid.topEquiv`."]
def topEquiv : (⊤ : Subgroup G) ≃* G 
Arguments: {G : Type u_1} [AddGroup G] (x : ↥⊤)
Goal: AddSubgroup.topEquiv x = ↑x
-- Subgroup.topEquiv_apply
@[to_additive (attr := simps!)
      "The top additive subgroup is isomorphic to the additive group.

      This is the additive group version of `AddSubmonoid.topEquiv`."]
def topEquiv : (⊤ : Subgroup G) ≃* G 
Arguments: {G : Type u_1} [Group G] (x : ↥⊤)
Goal: Subgroup.topEquiv x = ↑x
-- AddSubgroup.topEquiv_symm_apply_coe
@[to_additive (attr := simps!)
      "The top additive subgroup is isomorphic to the additive group.

      This is the additive group version of `AddSubmonoid.topEquiv`."]
def topEquiv : (⊤ : Subgroup G) ≃* G 
Arguments: {G : Type u_1} [AddGroup G] (x : G)
Goal: ↑(AddSubgroup.topEquiv.symm x) = x
-- Subgroup.mem_bot
@[to_additive (attr := simp)]
theorem mem_bot {x : G} : x ∈ (⊥ : Subgroup G) ↔ x = 1 
Arguments: {G : Type u_1} [Group G] {x : G}
Goal: x ∈ ⊥ ↔ x = 1
-- AddSubgroup.mem_bot
@[to_additive (attr := simp)]
theorem mem_bot {x : G} : x ∈ (⊥ : Subgroup G) ↔ x = 1 
Arguments: {G : Type u_1} [AddGroup G] {x : G}
Goal: x ∈ ⊥ ↔ x = 0
-- Subgroup.mem_top
@[to_additive (attr := simp)]
theorem mem_top (x : G) : x ∈ (⊤ : Subgroup G) 
Arguments: {G : Type u_1} [Group G] (x : G)
Goal: x ∈ ⊤
-- AddSubgroup.mem_top
@[to_additive (attr := simp)]
theorem mem_top (x : G) : x ∈ (⊤ : Subgroup G) 
Arguments: {G : Type u_1} [AddGroup G] (x : G)
Goal: x ∈ ⊤
-- AddSubgroup.coe_top
@[to_additive (attr := simp)]
theorem coe_top : ((⊤ : Subgroup G) : Set G) = Set.univ 
Arguments: {G : Type u_1} [AddGroup G]
Goal: ↑⊤ = Set.univ
-- Subgroup.coe_top
@[to_additive (attr := simp)]
theorem coe_top : ((⊤ : Subgroup G) : Set G) = Set.univ 
Arguments: {G : Type u_1} [Group G]
Goal: ↑⊤ = Set.univ
-- Subgroup.coe_bot
@[to_additive (attr := simp)]
theorem coe_bot : ((⊥ : Subgroup G) : Set G) = {1} 
Arguments: {G : Type u_1} [Group G]
Goal: ↑⊥ = {1}
-- AddSubgroup.coe_bot
@[to_additive (attr := simp)]
theorem coe_bot : ((⊥ : Subgroup G) : Set G) = {1} 
Arguments: {G : Type u_1} [AddGroup G]
Goal: ↑⊥ = {0}
-- AddSubgroup.top_toAddSubmonoid
@[to_additive (attr := simp)]
theorem top_toSubmonoid : (⊤ : Subgroup G).toSubmonoid = ⊤ 
Arguments: {G : Type u_1} [AddGroup G]
Goal: ⊤.toAddSubmonoid = ⊤
-- Subgroup.top_toSubmonoid
@[to_additive (attr := simp)]
theorem top_toSubmonoid : (⊤ : Subgroup G).toSubmonoid = ⊤ 
Arguments: {G : Type u_1} [Group G]
Goal: ⊤.toSubmonoid = ⊤
-- Subgroup.bot_toSubmonoid
@[to_additive (attr := simp)]
theorem bot_toSubmonoid : (⊥ : Subgroup G).toSubmonoid = ⊥ 
Arguments: {G : Type u_1} [Group G]
Goal: ⊥.toSubmonoid = ⊥
-- AddSubgroup.bot_toAddSubmonoid
@[to_additive (attr := simp)]
theorem bot_toSubmonoid : (⊥ : Subgroup G).toSubmonoid = ⊥ 
Arguments: {G : Type u_1} [AddGroup G]
Goal: ⊥.toAddSubmonoid = ⊥
-- AddSubgroup.eq_bot_iff_forall
@[to_additive]
theorem eq_bot_iff_forall : H = ⊥ ↔ ∀ x ∈ H, x = (1 : G) 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G)
Goal: H = ⊥ ↔ ∀ x ∈ H, x = 0
-- Subgroup.eq_bot_iff_forall
@[to_additive]
theorem eq_bot_iff_forall : H = ⊥ ↔ ∀ x ∈ H, x = (1 : G) 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G)
Goal: H = ⊥ ↔ ∀ x ∈ H, x = 1
-- AddSubgroup.eq_bot_of_subsingleton
@[to_additive]
theorem eq_bot_of_subsingleton [Subsingleton H] : H = ⊥ 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) [Subsingleton ↥H]
Goal: H = ⊥
-- Subgroup.eq_bot_of_subsingleton
@[to_additive]
theorem eq_bot_of_subsingleton [Subsingleton H] : H = ⊥ 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) [Subsingleton ↥H]
Goal: H = ⊥
-- AddSubgroup.coe_eq_univ
@[to_additive (attr := simp, norm_cast)]
theorem coe_eq_univ {H : Subgroup G} : (H : Set G) = Set.univ ↔ H = ⊤ 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G}
Goal: ↑H = Set.univ ↔ H = ⊤
-- Subgroup.coe_eq_univ
@[to_additive (attr := simp, norm_cast)]
theorem coe_eq_univ {H : Subgroup G} : (H : Set G) = Set.univ ↔ H = ⊤ 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G}
Goal: ↑H = Set.univ ↔ H = ⊤
-- AddSubgroup.coe_eq_singleton
@[to_additive]
theorem coe_eq_singleton {H : Subgroup G} : (∃ g : G, (H : Set G) = {g}) ↔ H = ⊥ 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G}
Goal: (∃ g, ↑H = {g}) ↔ H = ⊥
-- Subgroup.coe_eq_singleton
@[to_additive]
theorem coe_eq_singleton {H : Subgroup G} : (∃ g : G, (H : Set G) = {g}) ↔ H = ⊥ 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G}
Goal: (∃ g, ↑H = {g}) ↔ H = ⊥
-- AddSubgroup.nontrivial_iff_exists_ne_zero
@[to_additive]
theorem nontrivial_iff_exists_ne_one (H : Subgroup G) : Nontrivial H ↔ ∃ x ∈ H, x ≠ (1 : G) 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G)
Goal: Nontrivial ↥H ↔ ∃ x ∈ H, x ≠ 0
-- Subgroup.nontrivial_iff_exists_ne_one
@[to_additive]
theorem nontrivial_iff_exists_ne_one (H : Subgroup G) : Nontrivial H ↔ ∃ x ∈ H, x ≠ (1 : G) 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G)
Goal: Nontrivial ↥H ↔ ∃ x ∈ H, x ≠ 1
-- AddSubgroup.exists_ne_zero_of_nontrivial
@[to_additive]
theorem exists_ne_one_of_nontrivial (H : Subgroup G) [Nontrivial H] :
    ∃ x ∈ H, x ≠ 1 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G) [Nontrivial ↥H]
Goal: ∃ x ∈ H, x ≠ 0
-- Subgroup.exists_ne_one_of_nontrivial
@[to_additive]
theorem exists_ne_one_of_nontrivial (H : Subgroup G) [Nontrivial H] :
    ∃ x ∈ H, x ≠ 1 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G) [Nontrivial ↥H]
Goal: ∃ x ∈ H, x ≠ 1
-- AddSubgroup.nontrivial_iff_ne_bot
@[to_additive]
theorem nontrivial_iff_ne_bot (H : Subgroup G) : Nontrivial H ↔ H ≠ ⊥ 
Arguments: {G : Type u_1} [AddGroup G] (H : AddSubgroup G)
Goal: Nontrivial ↥H ↔ H ≠ ⊥
-- Subgroup.nontrivial_iff_ne_bot
@[to_additive]
theorem nontrivial_iff_ne_bot (H : Subgroup G) : Nontrivial H ↔ H ≠ ⊥ 
Arguments: {G : Type u_1} [Group G] (H : Subgroup G)
Goal: Nontrivial ↥H ↔ H ≠ ⊥