ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Subgroup.comap_map_eq_self
@[to_additive]
theorem comap_map_eq_self {f : G →* N} {H : Subgroup G} (h : f.ker ≤ H) :
    comap f (map f H) = H 
Arguments: {G : Type u_1} [Group G] {N : Type u_5} [Group N] {f : G →* N} {H : Subgroup G} (h : f.ker ≤ H)
Goal: Subgroup.comap f (Subgroup.map f H) = H
-- AddSubgroup.comap_map_eq_self
@[to_additive]
theorem comap_map_eq_self {f : G →* N} {H : Subgroup G} (h : f.ker ≤ H) :
    comap f (map f H) = H 
Arguments: {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {f : G →+ N} {H : AddSubgroup G} (h : f.ker ≤ H)
Goal: AddSubgroup.comap f (AddSubgroup.map f H) = H
-- Subgroup.comap_map_eq_self_of_injective
@[to_additive]
theorem comap_map_eq_self_of_injective {f : G →* N} (h : Function.Injective f) (H : Subgroup G) :
    comap f (map f H) = H 
Arguments: {G : Type u_1} [Group G] {N : Type u_5} [Group N] {f : G →* N} (h : Function.Injective ⇑f) (H : Subgroup G)
Goal: Subgroup.comap f (Subgroup.map f H) = H
-- AddSubgroup.comap_map_eq_self_of_injective
@[to_additive]
theorem comap_map_eq_self_of_injective {f : G →* N} (h : Function.Injective f) (H : Subgroup G) :
    comap f (map f H) = H 
Arguments: {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {f : G →+ N} (h : Function.Injective ⇑f) (H : AddSubgroup G)
Goal: AddSubgroup.comap f (AddSubgroup.map f H) = H
-- AddSubgroup.map_le_map_iff
@[to_additive]
theorem map_le_map_iff {f : G →* N} {H K : Subgroup G} : H.map f ≤ K.map f ↔ H ≤ K ⊔ f.ker 
Arguments: {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {f : G →+ N} {H K : AddSubgroup G}
Goal: AddSubgroup.map f H ≤ AddSubgroup.map f K ↔ H ≤ K ⊔ f.ker
-- Subgroup.map_le_map_iff
@[to_additive]
theorem map_le_map_iff {f : G →* N} {H K : Subgroup G} : H.map f ≤ K.map f ↔ H ≤ K ⊔ f.ker 
Arguments: {G : Type u_1} [Group G] {N : Type u_5} [Group N] {f : G →* N} {H K : Subgroup G}
Goal: Subgroup.map f H ≤ Subgroup.map f K ↔ H ≤ K ⊔ f.ker
-- Subgroup.map_le_map_iff'
@[to_additive]
theorem map_le_map_iff' {f : G →* N} {H K : Subgroup G} :
    H.map f ≤ K.map f ↔ H ⊔ f.ker ≤ K ⊔ f.ker 
Arguments: {G : Type u_1} [Group G] {N : Type u_5} [Group N] {f : G →* N} {H K : Subgroup G}
Goal: Subgroup.map f H ≤ Subgroup.map f K ↔ H ⊔ f.ker ≤ K ⊔ f.ker
-- AddSubgroup.map_le_map_iff'
@[to_additive]
theorem map_le_map_iff' {f : G →* N} {H K : Subgroup G} :
    H.map f ≤ K.map f ↔ H ⊔ f.ker ≤ K ⊔ f.ker 
Arguments: {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {f : G →+ N} {H K : AddSubgroup G}
Goal: AddSubgroup.map f H ≤ AddSubgroup.map f K ↔ H ⊔ f.ker ≤ K ⊔ f.ker
-- Subgroup.map_eq_map_iff
@[to_additive]
theorem map_eq_map_iff {f : G →* N} {H K : Subgroup G} :
    H.map f = K.map f ↔ H ⊔ f.ker = K ⊔ f.ker 
Arguments: {G : Type u_1} [Group G] {N : Type u_5} [Group N] {f : G →* N} {H K : Subgroup G}
Goal: Subgroup.map f H = Subgroup.map f K ↔ H ⊔ f.ker = K ⊔ f.ker
-- AddSubgroup.map_eq_map_iff
@[to_additive]
theorem map_eq_map_iff {f : G →* N} {H K : Subgroup G} :
    H.map f = K.map f ↔ H ⊔ f.ker = K ⊔ f.ker 
Arguments: {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {f : G →+ N} {H K : AddSubgroup G}
Goal: AddSubgroup.map f H = AddSubgroup.map f K ↔ H ⊔ f.ker = K ⊔ f.ker
-- Subgroup.map_eq_range_iff
@[to_additive]
theorem map_eq_range_iff {f : G →* N} {H : Subgroup G} :
    H.map f = f.range ↔ Codisjoint H f.ker 
Arguments: {G : Type u_1} [Group G] {N : Type u_5} [Group N] {f : G →* N} {H : Subgroup G}
Goal: Subgroup.map f H = f.range ↔ Codisjoint H f.ker
-- AddSubgroup.map_eq_range_iff
@[to_additive]
theorem map_eq_range_iff {f : G →* N} {H : Subgroup G} :
    H.map f = f.range ↔ Codisjoint H f.ker 
Arguments: {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {f : G →+ N} {H : AddSubgroup G}
Goal: AddSubgroup.map f H = f.range ↔ Codisjoint H f.ker
-- AddSubgroup.map_le_map_iff_of_injective
@[to_additive]
theorem map_le_map_iff_of_injective {f : G →* N} (hf : Function.Injective f) {H K : Subgroup G} :
    H.map f ≤ K.map f ↔ H ≤ K 
Arguments: {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {f : G →+ N} (hf : Function.Injective ⇑f) {H K : AddSubgroup G}
Goal: AddSubgroup.map f H ≤ AddSubgroup.map f K ↔ H ≤ K
-- Subgroup.map_le_map_iff_of_injective
@[to_additive]
theorem map_le_map_iff_of_injective {f : G →* N} (hf : Function.Injective f) {H K : Subgroup G} :
    H.map f ≤ K.map f ↔ H ≤ K 
Arguments: {G : Type u_1} [Group G] {N : Type u_5} [Group N] {f : G →* N} (hf : Function.Injective ⇑f) {H K : Subgroup G}
Goal: Subgroup.map f H ≤ Subgroup.map f K ↔ H ≤ K
-- AddSubgroup.map_subtype_le_map_subtype
@[to_additive (attr := simp)]
theorem map_subtype_le_map_subtype {G' : Subgroup G} {H K : Subgroup G'} :
    H.map G'.subtype ≤ K.map G'.subtype ↔ H ≤ K 
Arguments: {G : Type u_1} [AddGroup G] {G' : AddSubgroup G} {H K : AddSubgroup ↥G'}
Goal: AddSubgroup.map G'.subtype H ≤ AddSubgroup.map G'.subtype K ↔ H ≤ K
-- Subgroup.map_subtype_le_map_subtype
@[to_additive (attr := simp)]
theorem map_subtype_le_map_subtype {G' : Subgroup G} {H K : Subgroup G'} :
    H.map G'.subtype ≤ K.map G'.subtype ↔ H ≤ K 
Arguments: {G : Type u_1} [Group G] {G' : Subgroup G} {H K : Subgroup ↥G'}
Goal: Subgroup.map G'.subtype H ≤ Subgroup.map G'.subtype K ↔ H ≤ K
-- Subgroup.map_injective
@[to_additive]
theorem map_injective {f : G →* N} (h : Function.Injective f) : Function.Injective (map f) 
Arguments: {G : Type u_1} [Group G] {N : Type u_5} [Group N] {f : G →* N} (h : Function.Injective ⇑f)
Goal: Function.Injective (Subgroup.map f)
-- AddSubgroup.map_injective
@[to_additive]
theorem map_injective {f : G →* N} (h : Function.Injective f) : Function.Injective (map f) 
Arguments: {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {f : G →+ N} (h : Function.Injective ⇑f)
Goal: Function.Injective (AddSubgroup.map f)
-- AddSubgroup.map_eq_comap_of_inverse
@[to_additive]
theorem map_eq_comap_of_inverse {f : G →* N} {g : N →* G} (hl : Function.LeftInverse g f)
    (hr : Function.RightInverse g f) (H : Subgroup G) : map f H = comap g H 
Arguments: {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {f : G →+ N} {g : N →+ G} (hl : Function.LeftInverse ⇑g ⇑f) (hr : Function.RightInverse ⇑g ⇑f) (H : AddSubgroup G)
Goal: AddSubgroup.map f H = AddSubgroup.comap g H
-- Subgroup.map_eq_comap_of_inverse
@[to_additive]
theorem map_eq_comap_of_inverse {f : G →* N} {g : N →* G} (hl : Function.LeftInverse g f)
    (hr : Function.RightInverse g f) (H : Subgroup G) : map f H = comap g H 
Arguments: {G : Type u_1} [Group G] {N : Type u_5} [Group N] {f : G →* N} {g : N →* G} (hl : Function.LeftInverse ⇑g ⇑f) (hr : Function.RightInverse ⇑g ⇑f) (H : Subgroup G)
Goal: Subgroup.map f H = Subgroup.comap g H
-- AddSubgroup.map_injective_of_ker_le
@[to_additive "Given `f(A) = f(B)`, `ker f ≤ A`, and `ker f ≤ B`, deduce that `A = B`."]
theorem map_injective_of_ker_le {H K : Subgroup G} (hH : f.ker ≤ H) (hK : f.ker ≤ K)
    (hf : map f H = map f K) : H = K 
Arguments: {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (f : G →+ N) {H K : AddSubgroup G} (hH : f.ker ≤ H) (hK : f.ker ≤ K) (hf : AddSubgroup.map f H = AddSubgroup.map f K)
Goal: H = K
-- Subgroup.map_injective_of_ker_le
@[to_additive "Given `f(A) = f(B)`, `ker f ≤ A`, and `ker f ≤ B`, deduce that `A = B`."]
theorem map_injective_of_ker_le {H K : Subgroup G} (hH : f.ker ≤ H) (hK : f.ker ≤ K)
    (hf : map f H = map f K) : H = K 
Arguments: {G : Type u_1} [Group G] {N : Type u_5} [Group N] (f : G →* N) {H K : Subgroup G} (hH : f.ker ≤ H) (hK : f.ker ≤ K) (hf : Subgroup.map f H = Subgroup.map f K)
Goal: H = K
-- Subgroup.closure_preimage_eq_top
@[to_additive]
theorem closure_preimage_eq_top (s : Set G) : closure ((closure s).subtype ⁻¹' s) = ⊤ 
Arguments: {G : Type u_1} [Group G] (s : Set G)
Goal: Subgroup.closure (⇑(Subgroup.closure s).subtype ⁻¹' s) = ⊤
-- AddSubgroup.closure_preimage_eq_top
@[to_additive]
theorem closure_preimage_eq_top (s : Set G) : closure ((closure s).subtype ⁻¹' s) = ⊤ 
Arguments: {G : Type u_1} [AddGroup G] (s : Set G)
Goal: AddSubgroup.closure (⇑(AddSubgroup.closure s).subtype ⁻¹' s) = ⊤
-- Subgroup.comap_sup_eq_of_le_range
@[to_additive]
theorem comap_sup_eq_of_le_range {H K : Subgroup N} (hH : H ≤ f.range) (hK : K ≤ f.range) :
    comap f H ⊔ comap f K = comap f (H ⊔ K) 
Arguments: {G : Type u_1} [Group G] {N : Type u_5} [Group N] (f : G →* N) {H K : Subgroup N} (hH : H ≤ f.range) (hK : K ≤ f.range)
Goal: Subgroup.comap f H ⊔ Subgroup.comap f K = Subgroup.comap f (H ⊔ K)
-- AddSubgroup.comap_sup_eq_of_le_range
@[to_additive]
theorem comap_sup_eq_of_le_range {H K : Subgroup N} (hH : H ≤ f.range) (hK : K ≤ f.range) :
    comap f H ⊔ comap f K = comap f (H ⊔ K) 
Arguments: {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (f : G →+ N) {H K : AddSubgroup N} (hH : H ≤ f.range) (hK : K ≤ f.range)
Goal: AddSubgroup.comap f H ⊔ AddSubgroup.comap f K = AddSubgroup.comap f (H ⊔ K)
-- AddSubgroup.comap_sup_eq
@[to_additive]
theorem comap_sup_eq (H K : Subgroup N) (hf : Function.Surjective f) :
    comap f H ⊔ comap f K = comap f (H ⊔ K) 
Arguments: {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (f : G →+ N) (H K : AddSubgroup N) (hf : Function.Surjective ⇑f)
Goal: AddSubgroup.comap f H ⊔ AddSubgroup.comap f K = AddSubgroup.comap f (H ⊔ K)
-- Subgroup.comap_sup_eq
@[to_additive]
theorem comap_sup_eq (H K : Subgroup N) (hf : Function.Surjective f) :
    comap f H ⊔ comap f K = comap f (H ⊔ K) 
Arguments: {G : Type u_1} [Group G] {N : Type u_5} [Group N] (f : G →* N) (H K : Subgroup N) (hf : Function.Surjective ⇑f)
Goal: Subgroup.comap f H ⊔ Subgroup.comap f K = Subgroup.comap f (H ⊔ K)
-- AddSubgroup.sup_addSubgroupOf_eq
@[to_additive]
theorem sup_subgroupOf_eq {H K L : Subgroup G} (hH : H ≤ L) (hK : K ≤ L) :
    H.subgroupOf L ⊔ K.subgroupOf L = (H ⊔ K).subgroupOf L 
Arguments: {G : Type u_1} [AddGroup G] {H K L : AddSubgroup G} (hH : H ≤ L) (hK : K ≤ L)
Goal: H.addSubgroupOf L ⊔ K.addSubgroupOf L = (H ⊔ K).addSubgroupOf L
-- Subgroup.sup_subgroupOf_eq
@[to_additive]
theorem sup_subgroupOf_eq {H K L : Subgroup G} (hH : H ≤ L) (hK : K ≤ L) :
    H.subgroupOf L ⊔ K.subgroupOf L = (H ⊔ K).subgroupOf L 
Arguments: {G : Type u_1} [Group G] {H K L : Subgroup G} (hH : H ≤ L) (hK : K ≤ L)
Goal: H.subgroupOf L ⊔ K.subgroupOf L = (H ⊔ K).subgroupOf L
-- Subgroup.codisjoint_subgroupOf_sup
@[to_additive]
theorem codisjoint_subgroupOf_sup (H K : Subgroup G) :
    Codisjoint (H.subgroupOf (H ⊔ K)) (K.subgroupOf (H ⊔ K)) 
Arguments: {G : Type u_1} [Group G] (H K : Subgroup G)
Goal: Codisjoint (H.subgroupOf (H ⊔ K)) (K.subgroupOf (H ⊔ K))
-- AddSubgroup.codisjoint_addSubgroupOf_sup
@[to_additive]
theorem codisjoint_subgroupOf_sup (H K : Subgroup G) :
    Codisjoint (H.subgroupOf (H ⊔ K)) (K.subgroupOf (H ⊔ K)) 
Arguments: {G : Type u_1} [AddGroup G] (H K : AddSubgroup G)
Goal: Codisjoint (H.addSubgroupOf (H ⊔ K)) (K.addSubgroupOf (H ⊔ K))
-- Subgroup.coe_equivMapOfInjective_apply
@[to_additive (attr := simp)]
theorem coe_equivMapOfInjective_apply (H : Subgroup G) (f : G →* N) (hf : Function.Injective f)
    (h : H) : (equivMapOfInjective H f hf h : N) = f h 
Arguments: {G : Type u_1} [Group G] {N : Type u_5} [Group N] (H : Subgroup G) (f : G →* N) (hf : Function.Injective ⇑f) (h : ↥H)
Goal: ↑((H.equivMapOfInjective f hf) h) = f ↑h
-- AddSubgroup.coe_equivMapOfInjective_apply
@[to_additive (attr := simp)]
theorem coe_equivMapOfInjective_apply (H : Subgroup G) (f : G →* N) (hf : Function.Injective f)
    (h : H) : (equivMapOfInjective H f hf h : N) = f h 
Arguments: {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (H : AddSubgroup G) (f : G →+ N) (hf : Function.Injective ⇑f) (h : ↥H)
Goal: ↑((H.equivMapOfInjective f hf) h) = f ↑h
-- AddSubgroup.comap_normalizer_eq_of_surjective
@[to_additive
      "The preimage of the normalizer is equal to the normalizer of the preimage of
      a surjective function."]
theorem comap_normalizer_eq_of_surjective (H : Subgroup G) {f : N →* G}
    (hf : Function.Surjective f) : H.normalizer.comap f = (H.comap f).normalizer 
Arguments: {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (H : AddSubgroup G) {f : N →+ G} (hf : Function.Surjective ⇑f)
Goal: AddSubgroup.comap f H.normalizer = (AddSubgroup.comap f H).normalizer
-- Subgroup.comap_normalizer_eq_of_surjective
@[to_additive
      "The preimage of the normalizer is equal to the normalizer of the preimage of
      a surjective function."]
theorem comap_normalizer_eq_of_surjective (H : Subgroup G) {f : N →* G}
    (hf : Function.Surjective f) : H.normalizer.comap f = (H.comap f).normalizer 
Arguments: {G : Type u_1} [Group G] {N : Type u_5} [Group N] (H : Subgroup G) {f : N →* G} (hf : Function.Surjective ⇑f)
Goal: Subgroup.comap f H.normalizer = (Subgroup.comap f H).normalizer
-- AddSubgroup.comap_normalizer_eq_of_injective_of_le_range
@[to_additive]
theorem comap_normalizer_eq_of_injective_of_le_range {N : Type*} [Group N] (H : Subgroup G)
    {f : N →* G} (hf : Function.Injective f) (h : H.normalizer ≤ f.range) :
    comap f H.normalizer = (comap f H).normalizer 
Arguments: {G : Type u_1} [AddGroup G] {N : Type u_6} [AddGroup N] (H : AddSubgroup G) {f : N →+ G} (hf : Function.Injective ⇑f) (h : H.normalizer ≤ f.range)
Goal: AddSubgroup.comap f H.normalizer = (AddSubgroup.comap f H).normalizer
-- Subgroup.comap_normalizer_eq_of_injective_of_le_range
@[to_additive]
theorem comap_normalizer_eq_of_injective_of_le_range {N : Type*} [Group N] (H : Subgroup G)
    {f : N →* G} (hf : Function.Injective f) (h : H.normalizer ≤ f.range) :
    comap f H.normalizer = (comap f H).normalizer 
Arguments: {G : Type u_1} [Group G] {N : Type u_6} [Group N] (H : Subgroup G) {f : N →* G} (hf : Function.Injective ⇑f) (h : H.normalizer ≤ f.range)
Goal: Subgroup.comap f H.normalizer = (Subgroup.comap f H).normalizer
-- Subgroup.subgroupOf_normalizer_eq
@[to_additive]
theorem subgroupOf_normalizer_eq {H N : Subgroup G} (h : H.normalizer ≤ N) :
    H.normalizer.subgroupOf N = (H.subgroupOf N).normalizer 
Arguments: {G : Type u_1} [Group G] {H N : Subgroup G} (h : H.normalizer ≤ N)
Goal: H.normalizer.subgroupOf N = (H.subgroupOf N).normalizer
-- AddSubgroup.addSubgroupOf_normalizer_eq
@[to_additive]
theorem subgroupOf_normalizer_eq {H N : Subgroup G} (h : H.normalizer ≤ N) :
    H.normalizer.subgroupOf N = (H.subgroupOf N).normalizer 
Arguments: {G : Type u_1} [AddGroup G] {H N : AddSubgroup G} (h : H.normalizer ≤ N)
Goal: H.normalizer.addSubgroupOf N = (H.addSubgroupOf N).normalizer
-- AddSubgroup.map_equiv_normalizer_eq
@[to_additive
      "The image of the normalizer is equal to the normalizer of the image of an
      isomorphism."]
theorem map_equiv_normalizer_eq (H : Subgroup G) (f : G ≃* N) :
    H.normalizer.map f.toMonoidHom = (H.map f.toMonoidHom).normalizer 
Arguments: {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (H : AddSubgroup G) (f : G ≃+ N)
Goal: AddSubgroup.map f.toAddMonoidHom H.normalizer = (AddSubgroup.map f.toAddMonoidHom H).normalizer
-- Subgroup.map_equiv_normalizer_eq
@[to_additive
      "The image of the normalizer is equal to the normalizer of the image of an
      isomorphism."]
theorem map_equiv_normalizer_eq (H : Subgroup G) (f : G ≃* N) :
    H.normalizer.map f.toMonoidHom = (H.map f.toMonoidHom).normalizer 
Arguments: {G : Type u_1} [Group G] {N : Type u_5} [Group N] (H : Subgroup G) (f : G ≃* N)
Goal: Subgroup.map f.toMonoidHom H.normalizer = (Subgroup.map f.toMonoidHom H).normalizer
-- Subgroup.map_normalizer_eq_of_bijective
@[to_additive
      "The image of the normalizer is equal to the normalizer of the image of a bijective
        function."]
theorem map_normalizer_eq_of_bijective (H : Subgroup G) {f : G →* N} (hf : Function.Bijective f) :
    H.normalizer.map f = (H.map f).normalizer 
Arguments: {G : Type u_1} [Group G] {N : Type u_5} [Group N] (H : Subgroup G) {f : G →* N} (hf : Function.Bijective ⇑f)
Goal: Subgroup.map f H.normalizer = (Subgroup.map f H).normalizer
-- AddSubgroup.map_normalizer_eq_of_bijective
@[to_additive
      "The image of the normalizer is equal to the normalizer of the image of a bijective
        function."]
theorem map_normalizer_eq_of_bijective (H : Subgroup G) {f : G →* N} (hf : Function.Bijective f) :
    H.normalizer.map f = (H.map f).normalizer 
Arguments: {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] (H : AddSubgroup G) {f : G →+ N} (hf : Function.Bijective ⇑f)
Goal: AddSubgroup.map f H.normalizer = (AddSubgroup.map f H).normalizer
-- MonoidHom.liftOfRightInverseAux_comp_apply
@[to_additive (attr := simp)]
theorem liftOfRightInverseAux_comp_apply (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃)
    (hg : f.ker ≤ g.ker) (x : G₁) : (f.liftOfRightInverseAux f_inv hf g hg) (f x) = g x 
Arguments: {G₁ : Type u_5} {G₂ : Type u_6} {G₃ : Type u_7} [Group G₁] [Group G₂] [Group G₃] (f : G₁ →* G₂) (f_inv : G₂ → G₁) (hf : Function.RightInverse f_inv ⇑f) (g : G₁ →* G₃) (hg : f.ker ≤ g.ker) (x : G₁)
Goal: (f.liftOfRightInverseAux f_inv hf g hg) (f x) = g x
-- AddMonoidHom.liftOfRightInverseAux_comp_apply
@[to_additive (attr := simp)]
theorem liftOfRightInverseAux_comp_apply (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃)
    (hg : f.ker ≤ g.ker) (x : G₁) : (f.liftOfRightInverseAux f_inv hf g hg) (f x) = g x 
Arguments: {G₁ : Type u_5} {G₂ : Type u_6} {G₃ : Type u_7} [AddGroup G₁] [AddGroup G₂] [AddGroup G₃] (f : G₁ →+ G₂) (f_inv : G₂ → G₁) (hf : Function.RightInverse f_inv ⇑f) (g : G₁ →+ G₃) (hg : f.ker ≤ g.ker) (x : G₁)
Goal: (f.liftOfRightInverseAux f_inv hf g hg) (f x) = g x
-- AddMonoidHom.liftOfRightInverse_comp_apply
@[to_additive (attr := simp)]
theorem liftOfRightInverse_comp_apply (hf : Function.RightInverse f_inv f)
    (g : { g : G₁ →* G₃ // f.ker ≤ g.ker }) (x : G₁) :
    (f.liftOfRightInverse f_inv hf g) (f x) = g.1 x 
Arguments: {G₁ : Type u_5} {G₂ : Type u_6} {G₃ : Type u_7} [AddGroup G₁] [AddGroup G₂] [AddGroup G₃] (f : G₁ →+ G₂) (f_inv : G₂ → G₁) (hf : Function.RightInverse f_inv ⇑f) (g : { g // f.ker ≤ g.ker }) (x : G₁)
Goal: ((f.liftOfRightInverse f_inv hf) g) (f x) = ↑g x
-- MonoidHom.liftOfRightInverse_comp_apply
@[to_additive (attr := simp)]
theorem liftOfRightInverse_comp_apply (hf : Function.RightInverse f_inv f)
    (g : { g : G₁ →* G₃ // f.ker ≤ g.ker }) (x : G₁) :
    (f.liftOfRightInverse f_inv hf g) (f x) = g.1 x 
Arguments: {G₁ : Type u_5} {G₂ : Type u_6} {G₃ : Type u_7} [Group G₁] [Group G₂] [Group G₃] (f : G₁ →* G₂) (f_inv : G₂ → G₁) (hf : Function.RightInverse f_inv ⇑f) (g : { g // f.ker ≤ g.ker }) (x : G₁)
Goal: ((f.liftOfRightInverse f_inv hf) g) (f x) = ↑g x
-- MonoidHom.liftOfRightInverse_comp
@[to_additive (attr := simp)]
theorem liftOfRightInverse_comp (hf : Function.RightInverse f_inv f)
    (g : { g : G₁ →* G₃ // f.ker ≤ g.ker }) : (f.liftOfRightInverse f_inv hf g).comp f = g 
Arguments: {G₁ : Type u_5} {G₂ : Type u_6} {G₃ : Type u_7} [Group G₁] [Group G₂] [Group G₃] (f : G₁ →* G₂) (f_inv : G₂ → G₁) (hf : Function.RightInverse f_inv ⇑f) (g : { g // f.ker ≤ g.ker })
Goal: ((f.liftOfRightInverse f_inv hf) g).comp f = ↑g
-- AddMonoidHom.liftOfRightInverse_comp
@[to_additive (attr := simp)]
theorem liftOfRightInverse_comp (hf : Function.RightInverse f_inv f)
    (g : { g : G₁ →* G₃ // f.ker ≤ g.ker }) : (f.liftOfRightInverse f_inv hf g).comp f = g 
Arguments: {G₁ : Type u_5} {G₂ : Type u_6} {G₃ : Type u_7} [AddGroup G₁] [AddGroup G₂] [AddGroup G₃] (f : G₁ →+ G₂) (f_inv : G₂ → G₁) (hf : Function.RightInverse f_inv ⇑f) (g : { g // f.ker ≤ g.ker })
Goal: ((f.liftOfRightInverse f_inv hf) g).comp f = ↑g
-- AddMonoidHom.eq_liftOfRightInverse
@[to_additive]
theorem eq_liftOfRightInverse (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃)
    (hg : f.ker ≤ g.ker) (h : G₂ →* G₃) (hh : h.comp f = g) :
    h = f.liftOfRightInverse f_inv hf ⟨g, hg⟩ 
Arguments: {G₁ : Type u_5} {G₂ : Type u_6} {G₃ : Type u_7} [AddGroup G₁] [AddGroup G₂] [AddGroup G₃] (f : G₁ →+ G₂) (f_inv : G₂ → G₁) (hf : Function.RightInverse f_inv ⇑f) (g : G₁ →+ G₃) (hg : f.ker ≤ g.ker) (h : G₂ →+ G₃) (hh : h.comp f = g)
Goal: h = (f.liftOfRightInverse f_inv hf) ⟨g, hg⟩
-- MonoidHom.eq_liftOfRightInverse
@[to_additive]
theorem eq_liftOfRightInverse (hf : Function.RightInverse f_inv f) (g : G₁ →* G₃)
    (hg : f.ker ≤ g.ker) (h : G₂ →* G₃) (hh : h.comp f = g) :
    h = f.liftOfRightInverse f_inv hf ⟨g, hg⟩ 
Arguments: {G₁ : Type u_5} {G₂ : Type u_6} {G₃ : Type u_7} [Group G₁] [Group G₂] [Group G₃] (f : G₁ →* G₂) (f_inv : G₂ → G₁) (hf : Function.RightInverse f_inv ⇑f) (g : G₁ →* G₃) (hg : f.ker ≤ g.ker) (h : G₂ →* G₃) (hh : h.comp f = g)
Goal: h = (f.liftOfRightInverse f_inv hf) ⟨g, hg⟩
-- AddSubgroup.Normal.comap
@[to_additive]
theorem Normal.comap {H : Subgroup N} (hH : H.Normal) (f : G →* N) : (H.comap f).Normal 
Arguments: {G : Type u_1} [AddGroup G] {N : Type u_5} [AddGroup N] {H : AddSubgroup N} (hH : H.Normal) (f : G →+ N)
Goal: (AddSubgroup.comap f H).Normal
-- Subgroup.Normal.comap
@[to_additive]
theorem Normal.comap {H : Subgroup N} (hH : H.Normal) (f : G →* N) : (H.comap f).Normal 
Arguments: {G : Type u_1} [Group G] {N : Type u_5} [Group N] {H : Subgroup N} (hH : H.Normal) (f : G →* N)
Goal: (Subgroup.comap f H).Normal
-- Subgroup.Normal.subgroupOf
@[to_additive]
theorem Normal.subgroupOf {H : Subgroup G} (hH : H.Normal) (K : Subgroup G) :
    (H.subgroupOf K).Normal 
Arguments: {G : Type u_1} [Group G] {H : Subgroup G} (hH : H.Normal) (K : Subgroup G)
Goal: (H.subgroupOf K).Normal
-- AddSubgroup.Normal.addSubgroupOf
@[to_additive]
theorem Normal.subgroupOf {H : Subgroup G} (hH : H.Normal) (K : Subgroup G) :
    (H.subgroupOf K).Normal 
Arguments: {G : Type u_1} [AddGroup G] {H : AddSubgroup G} (hH : H.Normal) (K : AddSubgroup G)
Goal: (H.addSubgroupOf K).Normal
-- Subgroup.map_normalClosure
theorem map_normalClosure (s : Set G) (f : G →* N) (hf : Surjective f) :
    (normalClosure s).map f = normalClosure (f '' s) 
Arguments: {G : Type u_1} [Group G] {N : Type u_5} [Group N] (s : Set G) (f : G →* N) (hf : Function.Surjective ⇑f)
Goal: Subgroup.map f (Subgroup.normalClosure s) = Subgroup.normalClosure (⇑f '' s)
-- Subgroup.comap_normalClosure
theorem comap_normalClosure (s : Set N) (f : G ≃* N) :
    normalClosure (f ⁻¹' s) = (normalClosure s).comap f 
Arguments: {G : Type u_1} [Group G] {N : Type u_5} [Group N] (s : Set N) (f : G ≃* N)
Goal: Subgroup.normalClosure (⇑f ⁻¹' s) = Subgroup.comap (↑f) (Subgroup.normalClosure s)
-- Subgroup.Normal.of_map_injective
lemma Normal.of_map_injective {G H : Type*} [Group G] [Group H] {φ : G →* H}
    (hφ : Function.Injective φ) {L : Subgroup G} (n : (L.map φ).Normal) : L.Normal 
Arguments: {G : Type u_6} {H : Type u_7} [Group G] [Group H] {φ : G →* H} (hφ : Function.Injective ⇑φ) {L : Subgroup G} (n : (Subgroup.map φ L).Normal)
Goal: L.Normal
-- Subgroup.Normal.of_map_subtype
theorem Normal.of_map_subtype {K : Subgroup G} {L : Subgroup K}
    (n : (Subgroup.map K.subtype L).Normal) : L.Normal 
Arguments: {G : Type u_1} [Group G] {K : Subgroup G} {L : Subgroup ↥K} (n : (Subgroup.map K.subtype L).Normal)
Goal: L.Normal
-- AddMonoidHom.addSubgroupComap_apply_coe
@[to_additive (attr := simps!) "the `AddMonoidHom` from the preimage of an
additive subgroup to itself."]
def subgroupComap (f : G →* G') (H' : Subgroup G') : H'.comap f →* H' 
Arguments: {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (f : G →+ G') (H' : AddSubgroup G') (x : ↥(AddSubmonoid.comap f H'.toAddSubmonoid))
Goal: ↑((f.addSubgroupComap H') x) = f ↑x
-- MonoidHom.subgroupComap_apply_coe
@[to_additive (attr := simps!) "the `AddMonoidHom` from the preimage of an
additive subgroup to itself."]
def subgroupComap (f : G →* G') (H' : Subgroup G') : H'.comap f →* H' 
Arguments: {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (f : G →* G') (H' : Subgroup G') (x : ↥(Submonoid.comap f H'.toSubmonoid))
Goal: ↑((f.subgroupComap H') x) = f ↑x
-- MonoidHom.subgroupMap_apply_coe
@[to_additive (attr := simps!) "the `AddMonoidHom` from an additive subgroup to its image"]
def subgroupMap (f : G →* G') (H : Subgroup G) : H →* H.map f 
Arguments: {G : Type u_1} {G' : Type u_2} [Group G] [Group G'] (f : G →* G') (H : Subgroup G) (x : ↥H.toSubmonoid)
Goal: ↑((f.subgroupMap H) x) = f ↑x
-- AddMonoidHom.addSubgroupMap_apply_coe
@[to_additive (attr := simps!) "the `AddMonoidHom` from an additive subgroup to its image"]
def subgroupMap (f : G →* G') (H : Subgroup G) : H →* H.map f 
Arguments: {G : Type u_1} {G' : Type u_2} [AddGroup G] [AddGroup G'] (f : G →+ G') (H : AddSubgroup G) (x : ↥H.toAddSubmonoid)
Goal: ↑((f.addSubgroupMap H) x) = f ↑x