ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- IsAddSubgroup.add_mem_cancel_right
@[to_additive]
theorem mul_mem_cancel_right (h : a ∈ s) : b * a ∈ s ↔ b ∈ s 
Arguments: {G : Type u_1} {a b : G} [AddGroup G] {s : Set G} (hs : IsAddSubgroup s) (h : a ∈ s)
Goal: b + a ∈ s ↔ b ∈ s
-- IsSubgroup.mul_mem_cancel_left
@[to_additive]
theorem mul_mem_cancel_left (h : a ∈ s) : a * b ∈ s ↔ b ∈ s 
Arguments: {G : Type u_1} {a b : G} [Group G] {s : Set G} (hs : IsSubgroup s) (h : a ∈ s)
Goal: a * b ∈ s ↔ b ∈ s
-- IsAddSubgroup.add_mem_cancel_left
@[to_additive]
theorem mul_mem_cancel_left (h : a ∈ s) : a * b ∈ s ↔ b ∈ s 
Arguments: {G : Type u_1} {a b : G} [AddGroup G] {s : Set G} (hs : IsAddSubgroup s) (h : a ∈ s)
Goal: a + b ∈ s ↔ b ∈ s
-- IsNormalAddSubgroup.normal
structure IsNormalAddSubgroup [AddGroup A] (s : Set A) extends IsAddSubgroup s : Prop where
    normal : ∀ n ∈ s, ∀ g : A, g + n + -g ∈ s
Arguments: {A : Type u_3} [AddGroup A] {s : Set A} (self : IsNormalAddSubgroup s) (n : A)
Goal: n ∈ s → ∀ (g : A), g + n + -g ∈ s
-- IsNormalSubgroup.normal
@[to_additive]
structure IsNormalSubgroup [Group G] (s : Set G) extends IsSubgroup s : Prop where
    normal : ∀ n ∈ s, ∀ g : G, g * n * g⁻¹ ∈ s
Arguments: {G : Type u_1} [Group G] {s : Set G} (self : IsNormalSubgroup s) (n : G)
Goal: n ∈ s → ∀ (g : G), g * n * g⁻¹ ∈ s
-- isNormalAddSubgroup_of_addCommGroup
@[to_additive]
theorem isNormalSubgroup_of_commGroup [CommGroup G] {s : Set G} (hs : IsSubgroup s) :
    IsNormalSubgroup s 
Arguments: {G : Type u_1} [AddCommGroup G] {s : Set G} (hs : IsAddSubgroup s)
Goal: IsNormalAddSubgroup s
-- isNormalSubgroup_of_commGroup
@[to_additive]
theorem isNormalSubgroup_of_commGroup [CommGroup G] {s : Set G} (hs : IsSubgroup s) :
    IsNormalSubgroup s 
Arguments: {G : Type u_1} [CommGroup G] {s : Set G} (hs : IsSubgroup s)
Goal: IsNormalSubgroup s
-- Additive.isNormalAddSubgroup
theorem Additive.isNormalAddSubgroup [Group G] {s : Set G} (hs : IsNormalSubgroup s) :
    @IsNormalAddSubgroup (Additive G) _ s 
Arguments: {G : Type u_1} [Group G] {s : Set G} (hs : IsNormalSubgroup s)
Goal: IsNormalAddSubgroup s
-- Additive.isNormalAddSubgroup_iff
theorem Additive.isNormalAddSubgroup_iff [Group G] {s : Set G} :
    @IsNormalAddSubgroup (Additive G) _ s ↔ IsNormalSubgroup s 
Arguments: {G : Type u_1} [Group G] {s : Set G}
Goal: IsNormalAddSubgroup s ↔ IsNormalSubgroup s
-- Multiplicative.isNormalSubgroup
theorem Multiplicative.isNormalSubgroup [AddGroup A] {s : Set A} (hs : IsNormalAddSubgroup s) :
    @IsNormalSubgroup (Multiplicative A) _ s 
Arguments: {A : Type u_3} [AddGroup A] {s : Set A} (hs : IsNormalAddSubgroup s)
Goal: IsNormalSubgroup s
-- Multiplicative.isNormalSubgroup_iff
theorem Multiplicative.isNormalSubgroup_iff [AddGroup A] {s : Set A} :
    @IsNormalSubgroup (Multiplicative A) _ s ↔ IsNormalAddSubgroup s 
Arguments: {A : Type u_3} [AddGroup A] {s : Set A}
Goal: IsNormalSubgroup s ↔ IsNormalAddSubgroup s
-- IsAddSubgroup.mem_norm_comm
@[to_additive]
theorem mem_norm_comm {s : Set G} (hs : IsNormalSubgroup s) {a b : G} (hab : a * b ∈ s) :
    b * a ∈ s 
Arguments: {G : Type u_1} [AddGroup G] {s : Set G} (hs : IsNormalAddSubgroup s) {a b : G} (hab : a + b ∈ s)
Goal: b + a ∈ s
-- IsSubgroup.mem_norm_comm
@[to_additive]
theorem mem_norm_comm {s : Set G} (hs : IsNormalSubgroup s) {a b : G} (hab : a * b ∈ s) :
    b * a ∈ s 
Arguments: {G : Type u_1} [Group G] {s : Set G} (hs : IsNormalSubgroup s) {a b : G} (hab : a * b ∈ s)
Goal: b * a ∈ s
-- IsSubgroup.mem_norm_comm_iff
@[to_additive]
theorem mem_norm_comm_iff {s : Set G} (hs : IsNormalSubgroup s) {a b : G} : a * b ∈ s ↔ b * a ∈ s 
Arguments: {G : Type u_1} [Group G] {s : Set G} (hs : IsNormalSubgroup s) {a b : G}
Goal: a * b ∈ s ↔ b * a ∈ s
-- IsAddSubgroup.mem_norm_comm_iff
@[to_additive]
theorem mem_norm_comm_iff {s : Set G} (hs : IsNormalSubgroup s) {a b : G} : a * b ∈ s ↔ b * a ∈ s 
Arguments: {G : Type u_1} [AddGroup G] {s : Set G} (hs : IsNormalAddSubgroup s) {a b : G}
Goal: a + b ∈ s ↔ b + a ∈ s
-- IsAddSubgroup.mem_trivial
@[to_additive (attr := simp)]
theorem mem_trivial {g : G} : g ∈ trivial G ↔ g = 1 
Arguments: {G : Type u_1} [AddGroup G] {g : G}
Goal: g ∈ IsAddSubgroup.trivial G ↔ g = 0
-- IsSubgroup.mem_trivial
@[to_additive (attr := simp)]
theorem mem_trivial {g : G} : g ∈ trivial G ↔ g = 1 
Arguments: {G : Type u_1} [Group G] {g : G}
Goal: g ∈ IsSubgroup.trivial G ↔ g = 1
-- IsAddSubgroup.trivial_normal
@[to_additive]
theorem trivial_normal : IsNormalSubgroup (trivial G) 
Arguments: {G : Type u_1} [AddGroup G]
Goal: IsNormalAddSubgroup (IsAddSubgroup.trivial G)
-- IsSubgroup.trivial_normal
@[to_additive]
theorem trivial_normal : IsNormalSubgroup (trivial G) 
Arguments: {G : Type u_1} [Group G]
Goal: IsNormalSubgroup (IsSubgroup.trivial G)
-- IsAddSubgroup.eq_trivial_iff
@[to_additive]
theorem eq_trivial_iff {s : Set G} (hs : IsSubgroup s) : s = trivial G ↔ ∀ x ∈ s, x = (1 : G) 
Arguments: {G : Type u_1} [AddGroup G] {s : Set G} (hs : IsAddSubgroup s)
Goal: s = IsAddSubgroup.trivial G ↔ ∀ x ∈ s, x = 0
-- IsSubgroup.eq_trivial_iff
@[to_additive]
theorem eq_trivial_iff {s : Set G} (hs : IsSubgroup s) : s = trivial G ↔ ∀ x ∈ s, x = (1 : G) 
Arguments: {G : Type u_1} [Group G] {s : Set G} (hs : IsSubgroup s)
Goal: s = IsSubgroup.trivial G ↔ ∀ x ∈ s, x = 1
-- IsSubgroup.univ_subgroup
@[to_additive]
theorem univ_subgroup : IsNormalSubgroup (@univ G) 
Arguments: {G : Type u_1} [Group G]
Goal: IsNormalSubgroup Set.univ
-- IsAddSubgroup.univ_addSubgroup
@[to_additive]
theorem univ_subgroup : IsNormalSubgroup (@univ G) 
Arguments: {G : Type u_1} [AddGroup G]
Goal: IsNormalAddSubgroup Set.univ
-- IsSubgroup.mem_center
@[to_additive mem_add_center]
theorem mem_center {a : G} : a ∈ center G ↔ ∀ g, g * a = a * g 
Arguments: {G : Type u_1} [Group G] {a : G}
Goal: a ∈ IsSubgroup.center G ↔ ∀ (g : G), g * a = a * g
-- IsAddSubgroup.mem_add_center
@[to_additive mem_add_center]
theorem mem_center {a : G} : a ∈ center G ↔ ∀ g, g * a = a * g 
Arguments: {G : Type u_1} [AddGroup G] {a : G}
Goal: a ∈ IsAddSubgroup.addCenter G ↔ ∀ (g : G), g + a = a + g
-- IsSubgroup.center_normal
@[to_additive add_center_normal]
theorem center_normal : IsNormalSubgroup (center G) 
Arguments: {G : Type u_1} [Group G]
Goal: IsNormalSubgroup (IsSubgroup.center G)
-- IsAddSubgroup.add_center_normal
@[to_additive add_center_normal]
theorem center_normal : IsNormalSubgroup (center G) 
Arguments: {G : Type u_1} [AddGroup G]
Goal: IsNormalAddSubgroup (IsAddSubgroup.addCenter G)
-- IsSubgroup.normalizer_isSubgroup
@[to_additive]
theorem normalizer_isSubgroup (s : Set G) : IsSubgroup (normalizer s) 
Arguments: {G : Type u_1} [Group G] (s : Set G)
Goal: IsSubgroup (IsSubgroup.normalizer s)
-- IsAddSubgroup.normalizer_isAddSubgroup
@[to_additive]
theorem normalizer_isSubgroup (s : Set G) : IsSubgroup (normalizer s) 
Arguments: {G : Type u_1} [AddGroup G] (s : Set G)
Goal: IsAddSubgroup (IsAddSubgroup.addNormalizer s)
-- IsSubgroup.subset_normalizer
@[to_additive subset_add_normalizer]
theorem subset_normalizer {s : Set G} (hs : IsSubgroup s) : s ⊆ normalizer s 
Arguments: {G : Type u_1} [Group G] {s : Set G} (hs : IsSubgroup s)
Goal: s ⊆ IsSubgroup.normalizer s
-- IsAddSubgroup.subset_add_normalizer
@[to_additive subset_add_normalizer]
theorem subset_normalizer {s : Set G} (hs : IsSubgroup s) : s ⊆ normalizer s 
Arguments: {G : Type u_1} [AddGroup G] {s : Set G} (hs : IsAddSubgroup s)
Goal: s ⊆ IsAddSubgroup.addNormalizer s
-- IsGroupHom.mem_ker
@[to_additive]
theorem mem_ker [Group H] (f : G → H) {x : G} : x ∈ ker f ↔ f x = 1 
Arguments: {G : Type u_1} {H : Type u_2} [Group H] (f : G → H) {x : G}
Goal: x ∈ IsGroupHom.ker f ↔ f x = 1
-- IsAddGroupHom.mem_ker
@[to_additive]
theorem mem_ker [Group H] (f : G → H) {x : G} : x ∈ ker f ↔ f x = 1 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup H] (f : G → H) {x : G}
Goal: x ∈ IsAddGroupHom.ker f ↔ f x = 0
-- IsGroupHom.one_ker_inv
@[to_additive]
theorem one_ker_inv {f : G → H} (hf : IsGroupHom f) {a b : G} (h : f (a * b⁻¹) = 1) :
    f a = f b 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G → H} (hf : IsGroupHom f) {a b : G} (h : f (a * b⁻¹) = 1)
Goal: f a = f b
-- IsAddGroupHom.zero_ker_neg
@[to_additive]
theorem one_ker_inv {f : G → H} (hf : IsGroupHom f) {a b : G} (h : f (a * b⁻¹) = 1) :
    f a = f b 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G → H} (hf : IsAddGroupHom f) {a b : G} (h : f (a + -b) = 0)
Goal: f a = f b
-- IsGroupHom.one_ker_inv'
@[to_additive]
theorem one_ker_inv' {f : G → H} (hf : IsGroupHom f) {a b : G} (h : f (a⁻¹ * b) = 1) :
    f a = f b 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G → H} (hf : IsGroupHom f) {a b : G} (h : f (a⁻¹ * b) = 1)
Goal: f a = f b
-- IsAddGroupHom.zero_ker_neg'
@[to_additive]
theorem one_ker_inv' {f : G → H} (hf : IsGroupHom f) {a b : G} (h : f (a⁻¹ * b) = 1) :
    f a = f b 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G → H} (hf : IsAddGroupHom f) {a b : G} (h : f (-a + b) = 0)
Goal: f a = f b
-- IsAddGroupHom.neg_ker_zero
@[to_additive]
theorem inv_ker_one {f : G → H} (hf : IsGroupHom f) {a b : G} (h : f a = f b) :
    f (a * b⁻¹) = 1 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G → H} (hf : IsAddGroupHom f) {a b : G} (h : f a = f b)
Goal: f (a + -b) = 0
-- IsGroupHom.inv_ker_one
@[to_additive]
theorem inv_ker_one {f : G → H} (hf : IsGroupHom f) {a b : G} (h : f a = f b) :
    f (a * b⁻¹) = 1 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G → H} (hf : IsGroupHom f) {a b : G} (h : f a = f b)
Goal: f (a * b⁻¹) = 1
-- IsAddGroupHom.neg_ker_zero'
@[to_additive]
theorem inv_ker_one' {f : G → H} (hf : IsGroupHom f) {a b : G} (h : f a = f b) :
    f (a⁻¹ * b) = 1 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G → H} (hf : IsAddGroupHom f) {a b : G} (h : f a = f b)
Goal: f (-a + b) = 0
-- IsGroupHom.inv_ker_one'
@[to_additive]
theorem inv_ker_one' {f : G → H} (hf : IsGroupHom f) {a b : G} (h : f a = f b) :
    f (a⁻¹ * b) = 1 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G → H} (hf : IsGroupHom f) {a b : G} (h : f a = f b)
Goal: f (a⁻¹ * b) = 1
-- IsGroupHom.one_iff_ker_inv
@[to_additive]
theorem one_iff_ker_inv {f : G → H} (hf : IsGroupHom f) (a b : G) : f a = f b ↔ f (a * b⁻¹) = 1 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G → H} (hf : IsGroupHom f) (a b : G)
Goal: f a = f b ↔ f (a * b⁻¹) = 1
-- IsAddGroupHom.zero_iff_ker_neg
@[to_additive]
theorem one_iff_ker_inv {f : G → H} (hf : IsGroupHom f) (a b : G) : f a = f b ↔ f (a * b⁻¹) = 1 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G → H} (hf : IsAddGroupHom f) (a b : G)
Goal: f a = f b ↔ f (a + -b) = 0
-- IsAddGroupHom.zero_iff_ker_neg'
@[to_additive]
theorem one_iff_ker_inv' {f : G → H} (hf : IsGroupHom f) (a b : G) : f a = f b ↔ f (a⁻¹ * b) = 1 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G → H} (hf : IsAddGroupHom f) (a b : G)
Goal: f a = f b ↔ f (-a + b) = 0
-- IsGroupHom.one_iff_ker_inv'
@[to_additive]
theorem one_iff_ker_inv' {f : G → H} (hf : IsGroupHom f) (a b : G) : f a = f b ↔ f (a⁻¹ * b) = 1 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G → H} (hf : IsGroupHom f) (a b : G)
Goal: f a = f b ↔ f (a⁻¹ * b) = 1
-- IsGroupHom.inv_iff_ker
@[to_additive]
theorem inv_iff_ker {f : G → H} (hf : IsGroupHom f) (a b : G) : f a = f b ↔ a * b⁻¹ ∈ ker f 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G → H} (hf : IsGroupHom f) (a b : G)
Goal: f a = f b ↔ a * b⁻¹ ∈ IsGroupHom.ker f
-- IsAddGroupHom.neg_iff_ker
@[to_additive]
theorem inv_iff_ker {f : G → H} (hf : IsGroupHom f) (a b : G) : f a = f b ↔ a * b⁻¹ ∈ ker f 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G → H} (hf : IsAddGroupHom f) (a b : G)
Goal: f a = f b ↔ a + -b ∈ IsAddGroupHom.ker f
-- IsGroupHom.inv_iff_ker'
@[to_additive]
theorem inv_iff_ker' {f : G → H} (hf : IsGroupHom f) (a b : G) : f a = f b ↔ a⁻¹ * b ∈ ker f 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G → H} (hf : IsGroupHom f) (a b : G)
Goal: f a = f b ↔ a⁻¹ * b ∈ IsGroupHom.ker f
-- IsAddGroupHom.neg_iff_ker'
@[to_additive]
theorem inv_iff_ker' {f : G → H} (hf : IsGroupHom f) (a b : G) : f a = f b ↔ a⁻¹ * b ∈ ker f 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G → H} (hf : IsAddGroupHom f) (a b : G)
Goal: f a = f b ↔ -a + b ∈ IsAddGroupHom.ker f
-- IsAddGroupHom.image_addSubgroup
@[to_additive]
theorem image_subgroup {f : G → H} (hf : IsGroupHom f) {s : Set G} (hs : IsSubgroup s) :
    IsSubgroup (f '' s) 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G → H} (hf : IsAddGroupHom f) {s : Set G} (hs : IsAddSubgroup s)
Goal: IsAddSubgroup (f '' s)
-- IsGroupHom.image_subgroup
@[to_additive]
theorem image_subgroup {f : G → H} (hf : IsGroupHom f) {s : Set G} (hs : IsSubgroup s) :
    IsSubgroup (f '' s) 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G → H} (hf : IsGroupHom f) {s : Set G} (hs : IsSubgroup s)
Goal: IsSubgroup (f '' s)
-- IsGroupHom.range_subgroup
@[to_additive]
theorem range_subgroup {f : G → H} (hf : IsGroupHom f) : IsSubgroup (Set.range f) 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G → H} (hf : IsGroupHom f)
Goal: IsSubgroup (Set.range f)
-- IsAddGroupHom.range_addSubgroup
@[to_additive]
theorem range_subgroup {f : G → H} (hf : IsGroupHom f) : IsSubgroup (Set.range f) 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G → H} (hf : IsAddGroupHom f)
Goal: IsAddSubgroup (Set.range f)
-- IsAddGroupHom.preimage
@[to_additive]
theorem preimage {f : G → H} (hf : IsGroupHom f) {s : Set H} (hs : IsSubgroup s) :
    IsSubgroup (f ⁻¹' s) 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G → H} (hf : IsAddGroupHom f) {s : Set H} (hs : IsAddSubgroup s)
Goal: IsAddSubgroup (f ⁻¹' s)
-- IsGroupHom.preimage
@[to_additive]
theorem preimage {f : G → H} (hf : IsGroupHom f) {s : Set H} (hs : IsSubgroup s) :
    IsSubgroup (f ⁻¹' s) 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G → H} (hf : IsGroupHom f) {s : Set H} (hs : IsSubgroup s)
Goal: IsSubgroup (f ⁻¹' s)
-- IsGroupHom.preimage_normal
@[to_additive]
theorem preimage_normal {f : G → H} (hf : IsGroupHom f) {s : Set H} (hs : IsNormalSubgroup s) :
    IsNormalSubgroup (f ⁻¹' s) 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G → H} (hf : IsGroupHom f) {s : Set H} (hs : IsNormalSubgroup s)
Goal: IsNormalSubgroup (f ⁻¹' s)
-- IsAddGroupHom.preimage_normal
@[to_additive]
theorem preimage_normal {f : G → H} (hf : IsGroupHom f) {s : Set H} (hs : IsNormalSubgroup s) :
    IsNormalSubgroup (f ⁻¹' s) 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G → H} (hf : IsAddGroupHom f) {s : Set H} (hs : IsNormalAddSubgroup s)
Goal: IsNormalAddSubgroup (f ⁻¹' s)
-- IsAddGroupHom.isNormalAddSubgroup_ker
@[to_additive]
theorem isNormalSubgroup_ker {f : G → H} (hf : IsGroupHom f) : IsNormalSubgroup (ker f) 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G → H} (hf : IsAddGroupHom f)
Goal: IsNormalAddSubgroup (IsAddGroupHom.ker f)
-- IsGroupHom.isNormalSubgroup_ker
@[to_additive]
theorem isNormalSubgroup_ker {f : G → H} (hf : IsGroupHom f) : IsNormalSubgroup (ker f) 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G → H} (hf : IsGroupHom f)
Goal: IsNormalSubgroup (IsGroupHom.ker f)
-- IsAddGroupHom.injective_of_trivial_ker
@[to_additive]
theorem injective_of_trivial_ker {f : G → H} (hf : IsGroupHom f) (h : ker f = trivial G) :
    Function.Injective f 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G → H} (hf : IsAddGroupHom f) (h : IsAddGroupHom.ker f = IsAddSubgroup.trivial G)
Goal: Function.Injective f
-- IsGroupHom.injective_of_trivial_ker
@[to_additive]
theorem injective_of_trivial_ker {f : G → H} (hf : IsGroupHom f) (h : ker f = trivial G) :
    Function.Injective f 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G → H} (hf : IsGroupHom f) (h : IsGroupHom.ker f = IsSubgroup.trivial G)
Goal: Function.Injective f
-- IsGroupHom.trivial_ker_of_injective
@[to_additive]
theorem trivial_ker_of_injective {f : G → H} (hf : IsGroupHom f) (h : Function.Injective f) :
    ker f = trivial G 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G → H} (hf : IsGroupHom f) (h : Function.Injective f)
Goal: IsGroupHom.ker f = IsSubgroup.trivial G
-- IsAddGroupHom.trivial_ker_of_injective
@[to_additive]
theorem trivial_ker_of_injective {f : G → H} (hf : IsGroupHom f) (h : Function.Injective f) :
    ker f = trivial G 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G → H} (hf : IsAddGroupHom f) (h : Function.Injective f)
Goal: IsAddGroupHom.ker f = IsAddSubgroup.trivial G
-- IsAddGroupHom.injective_iff_trivial_ker
@[to_additive]
theorem injective_iff_trivial_ker {f : G → H} (hf : IsGroupHom f) :
    Function.Injective f ↔ ker f = trivial G 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G → H} (hf : IsAddGroupHom f)
Goal: Function.Injective f ↔ IsAddGroupHom.ker f = IsAddSubgroup.trivial G
-- IsGroupHom.injective_iff_trivial_ker
@[to_additive]
theorem injective_iff_trivial_ker {f : G → H} (hf : IsGroupHom f) :
    Function.Injective f ↔ ker f = trivial G 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G → H} (hf : IsGroupHom f)
Goal: Function.Injective f ↔ IsGroupHom.ker f = IsSubgroup.trivial G
-- IsAddGroupHom.trivial_ker_iff_eq_zero
@[to_additive]
theorem trivial_ker_iff_eq_one {f : G → H} (hf : IsGroupHom f) :
    ker f = trivial G ↔ ∀ x, f x = 1 → x = 1 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G → H} (hf : IsAddGroupHom f)
Goal: IsAddGroupHom.ker f = IsAddSubgroup.trivial G ↔ ∀ (x : G), f x = 0 → x = 0
-- IsGroupHom.trivial_ker_iff_eq_one
@[to_additive]
theorem trivial_ker_iff_eq_one {f : G → H} (hf : IsGroupHom f) :
    ker f = trivial G ↔ ∀ x, f x = 1 → x = 1 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G → H} (hf : IsGroupHom f)
Goal: IsGroupHom.ker f = IsSubgroup.trivial G ↔ ∀ (x : G), f x = 1 → x = 1
-- AddGroup.mem_closure
@[to_additive]
theorem mem_closure {a : G} : a ∈ s → a ∈ closure s 
Arguments: {G : Type u_1} [AddGroup G] {s : Set G} {a : G}
Goal: a ∈ s → a ∈ AddGroup.closure s
-- Group.mem_closure
@[to_additive]
theorem mem_closure {a : G} : a ∈ s → a ∈ closure s 
Arguments: {G : Type u_1} [Group G] {s : Set G} {a : G}
Goal: a ∈ s → a ∈ Group.closure s
-- AddGroup.closure.isAddSubgroup
@[to_additive]
theorem closure.isSubgroup (s : Set G) : IsSubgroup (closure s) 
Arguments: {G : Type u_1} [AddGroup G] (s : Set G)
Goal: IsAddSubgroup (AddGroup.closure s)
-- Group.closure.isSubgroup
@[to_additive]
theorem closure.isSubgroup (s : Set G) : IsSubgroup (closure s) 
Arguments: {G : Type u_1} [Group G] (s : Set G)
Goal: IsSubgroup (Group.closure s)
-- Group.subset_closure
@[to_additive]
theorem subset_closure {s : Set G} : s ⊆ closure s 
Arguments: {G : Type u_1} [Group G] {s : Set G}
Goal: s ⊆ Group.closure s
-- AddGroup.subset_closure
@[to_additive]
theorem subset_closure {s : Set G} : s ⊆ closure s 
Arguments: {G : Type u_1} [AddGroup G] {s : Set G}
Goal: s ⊆ AddGroup.closure s
-- AddGroup.closure_subset
@[to_additive]
theorem closure_subset {s t : Set G} (ht : IsSubgroup t) (h : s ⊆ t) : closure s ⊆ t 
Arguments: {G : Type u_1} [AddGroup G] {s t : Set G} (ht : IsAddSubgroup t) (h : s ⊆ t)
Goal: AddGroup.closure s ⊆ t
-- Group.closure_subset
@[to_additive]
theorem closure_subset {s t : Set G} (ht : IsSubgroup t) (h : s ⊆ t) : closure s ⊆ t 
Arguments: {G : Type u_1} [Group G] {s t : Set G} (ht : IsSubgroup t) (h : s ⊆ t)
Goal: Group.closure s ⊆ t
-- Group.closure_subset_iff
@[to_additive]
theorem closure_subset_iff {s t : Set G} (ht : IsSubgroup t) : closure s ⊆ t ↔ s ⊆ t 
Arguments: {G : Type u_1} [Group G] {s t : Set G} (ht : IsSubgroup t)
Goal: Group.closure s ⊆ t ↔ s ⊆ t
-- AddGroup.closure_subset_iff
@[to_additive]
theorem closure_subset_iff {s t : Set G} (ht : IsSubgroup t) : closure s ⊆ t ↔ s ⊆ t 
Arguments: {G : Type u_1} [AddGroup G] {s t : Set G} (ht : IsAddSubgroup t)
Goal: AddGroup.closure s ⊆ t ↔ s ⊆ t
-- Group.closure_mono
@[to_additive]
theorem closure_mono {s t : Set G} (h : s ⊆ t) : closure s ⊆ closure t 
Arguments: {G : Type u_1} [Group G] {s t : Set G} (h : s ⊆ t)
Goal: Group.closure s ⊆ Group.closure t
-- AddGroup.closure_mono
@[to_additive]
theorem closure_mono {s t : Set G} (h : s ⊆ t) : closure s ⊆ closure t 
Arguments: {G : Type u_1} [AddGroup G] {s t : Set G} (h : s ⊆ t)
Goal: AddGroup.closure s ⊆ AddGroup.closure t
-- Group.closure_subgroup
@[to_additive (attr := simp)]
theorem closure_subgroup {s : Set G} (hs : IsSubgroup s) : closure s = s 
Arguments: {G : Type u_1} [Group G] {s : Set G} (hs : IsSubgroup s)
Goal: Group.closure s = s
-- AddGroup.closure_addSubgroup
@[to_additive (attr := simp)]
theorem closure_subgroup {s : Set G} (hs : IsSubgroup s) : closure s = s 
Arguments: {G : Type u_1} [AddGroup G] {s : Set G} (hs : IsAddSubgroup s)
Goal: AddGroup.closure s = s
-- AddGroup.exists_list_of_mem_closure
@[to_additive]
theorem exists_list_of_mem_closure {s : Set G} {a : G} (h : a ∈ closure s) :
    ∃ l : List G, (∀ x ∈ l, x ∈ s ∨ x⁻¹ ∈ s) ∧ l.prod = a 
Arguments: {G : Type u_1} [AddGroup G] {s : Set G} {a : G} (h : a ∈ AddGroup.closure s)
Goal: ∃ l, (∀ x ∈ l, x ∈ s ∨ -x ∈ s) ∧ l.sum = a
-- Group.exists_list_of_mem_closure
@[to_additive]
theorem exists_list_of_mem_closure {s : Set G} {a : G} (h : a ∈ closure s) :
    ∃ l : List G, (∀ x ∈ l, x ∈ s ∨ x⁻¹ ∈ s) ∧ l.prod = a 
Arguments: {G : Type u_1} [Group G] {s : Set G} {a : G} (h : a ∈ Group.closure s)
Goal: ∃ l, (∀ x ∈ l, x ∈ s ∨ x⁻¹ ∈ s) ∧ l.prod = a
-- AddGroup.image_closure
@[to_additive]
theorem image_closure [Group H] {f : G → H} (hf : IsGroupHom f) (s : Set G) :
    f '' closure s = closure (f '' s) 
Arguments: {G : Type u_1} {H : Type u_2} [AddGroup G] [AddGroup H] {f : G → H} (hf : IsAddGroupHom f) (s : Set G)
Goal: f '' AddGroup.closure s = AddGroup.closure (f '' s)
-- Group.image_closure
@[to_additive]
theorem image_closure [Group H] {f : G → H} (hf : IsGroupHom f) (s : Set G) :
    f '' closure s = closure (f '' s) 
Arguments: {G : Type u_1} {H : Type u_2} [Group G] [Group H] {f : G → H} (hf : IsGroupHom f) (s : Set G)
Goal: f '' Group.closure s = Group.closure (f '' s)
-- Group.mclosure_subset
@[to_additive]
theorem mclosure_subset {s : Set G} : Monoid.Closure s ⊆ closure s 
Arguments: {G : Type u_1} [Group G] {s : Set G}
Goal: Monoid.Closure s ⊆ Group.closure s
-- AddGroup.mclosure_subset
@[to_additive]
theorem mclosure_subset {s : Set G} : Monoid.Closure s ⊆ closure s 
Arguments: {G : Type u_1} [AddGroup G] {s : Set G}
Goal: AddMonoid.Closure s ⊆ AddGroup.closure s
-- Group.mclosure_inv_subset
@[to_additive]
theorem mclosure_inv_subset {s : Set G} : Monoid.Closure (Inv.inv ⁻¹' s) ⊆ closure s 
Arguments: {G : Type u_1} [Group G] {s : Set G}
Goal: Monoid.Closure (Inv.inv ⁻¹' s) ⊆ Group.closure s
-- AddGroup.mclosure_neg_subset
@[to_additive]
theorem mclosure_inv_subset {s : Set G} : Monoid.Closure (Inv.inv ⁻¹' s) ⊆ closure s 
Arguments: {G : Type u_1} [AddGroup G] {s : Set G}
Goal: AddMonoid.Closure (Neg.neg ⁻¹' s) ⊆ AddGroup.closure s
-- Group.closure_eq_mclosure
@[to_additive]
theorem closure_eq_mclosure {s : Set G} : closure s = Monoid.Closure (s ∪ Inv.inv ⁻¹' s) 
Arguments: {G : Type u_1} [Group G] {s : Set G}
Goal: Group.closure s = Monoid.Closure (s ∪ Inv.inv ⁻¹' s)
-- AddGroup.closure_eq_mclosure
@[to_additive]
theorem closure_eq_mclosure {s : Set G} : closure s = Monoid.Closure (s ∪ Inv.inv ⁻¹' s) 
Arguments: {G : Type u_1} [AddGroup G] {s : Set G}
Goal: AddGroup.closure s = AddMonoid.Closure (s ∪ Neg.neg ⁻¹' s)
-- AddGroup.mem_closure_union_iff
@[to_additive]
theorem mem_closure_union_iff {G : Type*} [CommGroup G] {s t : Set G} {x : G} :
    x ∈ closure (s ∪ t) ↔ ∃ y ∈ closure s, ∃ z ∈ closure t, y * z = x 
Arguments: {G : Type u_4} [AddCommGroup G] {s t : Set G} {x : G}
Goal: x ∈ AddGroup.closure (s ∪ t) ↔ ∃ y ∈ AddGroup.closure s, ∃ z ∈ AddGroup.closure t, y + z = x