mathlib3 documentation

group_theory.quotient_group

Quotients of groups by normal subgroups #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

This files develops the basic theory of quotients of groups by normal subgroups. In particular it proves Noether's first and second isomorphism theorems.

Main definitions #

Main statements #

Tags #

isomorphism theorems, quotient groups

@[protected]
def quotient_group.con {G : Type u} [group G] (N : subgroup G) [nN : N.normal] :
con G

The congruence relation generated by a normal subgroup.

Equations
@[protected]
def quotient_add_group.con {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] :

The additive congruence relation generated by a normal additive subgroup.

Equations
@[protected, instance]
def quotient_group.quotient.group {G : Type u} [group G] (N : subgroup G) [nN : N.normal] :
group (G ⧸ N)
Equations
def quotient_group.mk' {G : Type u} [group G] (N : subgroup G) [nN : N.normal] :
G →* G ⧸ N

The group homomorphism from G to G/N.

Equations
def quotient_add_group.mk' {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] :
G →+ G ⧸ N

The additive group homomorphism from G to G/N.

Equations
@[simp]
theorem quotient_group.coe_mk' {G : Type u} [group G] (N : subgroup G) [nN : N.normal] :
@[simp]
@[simp]
theorem quotient_group.mk'_apply {G : Type u} [group G] (N : subgroup G) [nN : N.normal] (x : G) :
@[simp]
theorem quotient_add_group.mk'_apply {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] (x : G) :
theorem quotient_group.mk'_eq_mk' {G : Type u} [group G] (N : subgroup G) [nN : N.normal] {x y : G} :
⇑(quotient_group.mk' N) x = ⇑(quotient_group.mk' N) y ↔ ∃ (z : G) (H : z ∈ N), x * z = y
theorem quotient_add_group.mk'_eq_mk' {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] {x y : G} :
⇑(quotient_add_group.mk' N) x = ⇑(quotient_add_group.mk' N) y ↔ ∃ (z : G) (H : z ∈ N), x + z = y
@[ext]
theorem quotient_add_group.add_monoid_hom_ext {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] {H : Type v} [add_group H] ⦃f g : G ⧸ N →+ H⦄ (h : f.comp (quotient_add_group.mk' N) = g.comp (quotient_add_group.mk' N)) :
f = g

Two add_monoid_homs from an additive quotient group are equal if their compositions with add_quotient_group.mk' are equal.

See note [partially-applied ext lemmas].

@[ext]
theorem quotient_group.monoid_hom_ext {G : Type u} [group G] (N : subgroup G) [nN : N.normal] {H : Type v} [group H] ⦃f g : G ⧸ N →* H⦄ (h : f.comp (quotient_group.mk' N) = g.comp (quotient_group.mk' N)) :
f = g

Two monoid_homs from a quotient group are equal if their compositions with quotient_group.mk' are equal.

See note [partially-applied ext lemmas].

@[simp]
theorem quotient_add_group.eq_zero_iff {G : Type u} [add_group G] {N : add_subgroup G} [nN : N.normal] (x : G) :
↑x = 0 ↔ x ∈ N
@[simp]
theorem quotient_group.eq_one_iff {G : Type u} [group G] {N : subgroup G} [nN : N.normal] (x : G) :
↑x = 1 ↔ x ∈ N
@[simp]
theorem quotient_add_group.ker_mk {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] :
@[simp]
theorem quotient_group.ker_mk {G : Type u} [group G] (N : subgroup G) [nN : N.normal] :
theorem quotient_group.eq_iff_div_mem {G : Type u} [group G] {N : subgroup G} [nN : N.normal] {x y : G} :
↑x = ↑y ↔ x / y ∈ N
theorem quotient_add_group.eq_iff_sub_mem {G : Type u} [add_group G] {N : add_subgroup G} [nN : N.normal] {x y : G} :
↑x = ↑y ↔ x - y ∈ N
@[simp]
theorem quotient_group.coe_one {G : Type u} [group G] (N : subgroup G) [nN : N.normal] :
↑1 = 1
@[simp]
theorem quotient_add_group.coe_zero {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] :
↑0 = 0
@[simp]
theorem quotient_group.coe_mul {G : Type u} [group G] (N : subgroup G) [nN : N.normal] (a b : G) :
↑(a * b) = ↑a * ↑b
@[simp]
theorem quotient_add_group.coe_add {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] (a b : G) :
↑(a + b) = ↑a + ↑b
@[simp]
theorem quotient_add_group.coe_neg {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] (a : G) :
@[simp]
theorem quotient_group.coe_inv {G : Type u} [group G] (N : subgroup G) [nN : N.normal] (a : G) :
@[simp]
theorem quotient_group.coe_div {G : Type u} [group G] (N : subgroup G) [nN : N.normal] (a b : G) :
↑(a / b) = ↑a / ↑b
@[simp]
theorem quotient_add_group.coe_sub {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] (a b : G) :
↑(a - b) = ↑a - ↑b
@[simp]
theorem quotient_group.coe_pow {G : Type u} [group G] (N : subgroup G) [nN : N.normal] (a : G) (n : ℕ) :
↑(a ^ n) = ↑a ^ n
@[simp]
theorem quotient_add_group.coe_nsmul {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] (a : G) (n : ℕ) :
↑(n • a) = n • ↑a
@[simp]
theorem quotient_group.coe_zpow {G : Type u} [group G] (N : subgroup G) [nN : N.normal] (a : G) (n : ℤ) :
↑(a ^ n) = ↑a ^ n
@[simp]
theorem quotient_add_group.coe_zsmul {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] (a : G) (n : ℤ) :
↑(n • a) = n • ↑a
def quotient_group.lift {G : Type u} [group G] (N : subgroup G) [nN : N.normal] {H : Type v} [group H] (φ : G →* H) (HN : ∀ (x : G), x ∈ N → ⇑φ x = 1) :
G ⧸ N →* H

A group homomorphism φ : G →* H with N ⊆ ker(φ) descends (i.e. lifts) to a group homomorphism G/N →* H.

Equations
def quotient_add_group.lift {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] {H : Type v} [add_group H] (φ : G →+ H) (HN : ∀ (x : G), x ∈ N → ⇑φ x = 0) :
G ⧸ N →+ H

An add_group homomorphism φ : G →+ H with N ⊆ ker(φ) descends (i.e. lifts) to a group homomorphism G/N →* H.

Equations
@[simp]
theorem quotient_add_group.lift_mk {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] {H : Type v} [add_group H] {φ : G →+ H} (HN : ∀ (x : G), x ∈ N → ⇑φ x = 0) (g : G) :
@[simp]
theorem quotient_group.lift_mk {G : Type u} [group G] (N : subgroup G) [nN : N.normal] {H : Type v} [group H] {φ : G →* H} (HN : ∀ (x : G), x ∈ N → ⇑φ x = 1) (g : G) :
@[simp]
theorem quotient_add_group.lift_mk' {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] {H : Type v} [add_group H] {φ : G →+ H} (HN : ∀ (x : G), x ∈ N → ⇑φ x = 0) (g : G) :
@[simp]
theorem quotient_group.lift_mk' {G : Type u} [group G] (N : subgroup G) [nN : N.normal] {H : Type v} [group H] {φ : G →* H} (HN : ∀ (x : G), x ∈ N → ⇑φ x = 1) (g : G) :
@[simp]
theorem quotient_group.lift_quot_mk {G : Type u} [group G] (N : subgroup G) [nN : N.normal] {H : Type v} [group H] {φ : G →* H} (HN : ∀ (x : G), x ∈ N → ⇑φ x = 1) (g : G) :
⇑(quotient_group.lift N φ HN) (quot.mk setoid.r g) = ⇑φ g
@[simp]
theorem quotient_add_group.lift_quot_mk {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] {H : Type v} [add_group H] {φ : G →+ H} (HN : ∀ (x : G), x ∈ N → ⇑φ x = 0) (g : G) :
⇑(quotient_add_group.lift N φ HN) (quot.mk setoid.r g) = ⇑φ g
def quotient_add_group.map {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] {H : Type v} [add_group H] (M : add_subgroup H) [M.normal] (f : G →+ H) (h : N ≤ add_subgroup.comap f M) :
G ⧸ N →+ H ⧸ M

An add_group homomorphism f : G →+ H induces a map G/N →+ H/M if N ⊆ f⁻¹(M).

Equations
def quotient_group.map {G : Type u} [group G] (N : subgroup G) [nN : N.normal] {H : Type v} [group H] (M : subgroup H) [M.normal] (f : G →* H) (h : N ≤ subgroup.comap f M) :
G ⧸ N →* H ⧸ M

A group homomorphism f : G →* H induces a map G/N →* H/M if N ⊆ f⁻¹(M).

Equations
@[simp]
theorem quotient_group.map_coe {G : Type u} [group G] (N : subgroup G) [nN : N.normal] {H : Type v} [group H] (M : subgroup H) [M.normal] (f : G →* H) (h : N ≤ subgroup.comap f M) (x : G) :
@[simp]
theorem quotient_add_group.map_coe {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] {H : Type v} [add_group H] (M : add_subgroup H) [M.normal] (f : G →+ H) (h : N ≤ add_subgroup.comap f M) (x : G) :
theorem quotient_group.map_mk' {G : Type u} [group G] (N : subgroup G) [nN : N.normal] {H : Type v} [group H] (M : subgroup H) [M.normal] (f : G →* H) (h : N ≤ subgroup.comap f M) (x : G) :
theorem quotient_add_group.map_mk' {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] {H : Type v} [add_group H] (M : add_subgroup H) [M.normal] (f : G →+ H) (h : N ≤ add_subgroup.comap f M) (x : G) :
theorem quotient_group.map_id_apply {G : Type u} [group G] (N : subgroup G) [nN : N.normal] (h : N ≤ subgroup.comap (monoid_hom.id G) N := _) (x : G ⧸ N) :
@[simp]
theorem quotient_group.map_id {G : Type u} [group G] (N : subgroup G) [nN : N.normal] (h : N ≤ subgroup.comap (monoid_hom.id G) N := _) :
@[simp]
theorem quotient_add_group.map_map {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] {H : Type v} [add_group H] {I : Type u_1} [add_group I] (M : add_subgroup H) (O : add_subgroup I) [M.normal] [O.normal] (f : G →+ H) (g : H →+ I) (hf : N ≤ add_subgroup.comap f M) (hg : M ≤ add_subgroup.comap g O) (hgf : N ≤ add_subgroup.comap (g.comp f) O := _) (x : G ⧸ N) :
@[simp]
theorem quotient_group.map_map {G : Type u} [group G] (N : subgroup G) [nN : N.normal] {H : Type v} [group H] {I : Type u_1} [group I] (M : subgroup H) (O : subgroup I) [M.normal] [O.normal] (f : G →* H) (g : H →* I) (hf : N ≤ subgroup.comap f M) (hg : M ≤ subgroup.comap g O) (hgf : N ≤ subgroup.comap (g.comp f) O := _) (x : G ⧸ N) :
⇑(quotient_group.map M O g hg) (⇑(quotient_group.map N M f hf) x) = ⇑(quotient_group.map N O (g.comp f) hgf) x
@[simp]
theorem quotient_add_group.map_comp_map {G : Type u} [add_group G] (N : add_subgroup G) [nN : N.normal] {H : Type v} [add_group H] {I : Type u_1} [add_group I] (M : add_subgroup H) (O : add_subgroup I) [M.normal] [O.normal] (f : G →+ H) (g : H →+ I) (hf : N ≤ add_subgroup.comap f M) (hg : M ≤ add_subgroup.comap g O) (hgf : N ≤ add_subgroup.comap (g.comp f) O := _) :
@[simp]
theorem quotient_group.map_comp_map {G : Type u} [group G] (N : subgroup G) [nN : N.normal] {H : Type v} [group H] {I : Type u_1} [group I] (M : subgroup H) (O : subgroup I) [M.normal] [O.normal] (f : G →* H) (g : H →* I) (hf : N ≤ subgroup.comap f M) (hg : M ≤ subgroup.comap g O) (hgf : N ≤ subgroup.comap (g.comp f) O := _) :
def quotient_add_group.congr {G : Type u} [add_group G] {H : Type v} [add_group H] (G' : add_subgroup G) (H' : add_subgroup H) [G'.normal] [H'.normal] (e : G ≃+ H) (he : add_subgroup.map ↑e G' = H') :
G ⧸ G' ≃+ H ⧸ H'

quotient_add_group.congr lifts the isomorphism e : G ≃ H to G ⧸ G' ≃ H ⧸ H', given that e maps G to H.

Equations
def quotient_group.congr {G : Type u} [group G] {H : Type v} [group H] (G' : subgroup G) (H' : subgroup H) [G'.normal] [H'.normal] (e : G ≃* H) (he : subgroup.map ↑e G' = H') :
G ⧸ G' ≃* H ⧸ H'

quotient_group.congr lifts the isomorphism e : G ≃ H to G ⧸ G' ≃ H ⧸ H', given that e maps G to H.

Equations
@[simp]
theorem quotient_group.congr_mk {G : Type u} [group G] {H : Type v} [group H] (G' : subgroup G) (H' : subgroup H) [G'.normal] [H'.normal] (e : G ≃* H) (he : subgroup.map ↑e G' = H') (x : G) :
theorem quotient_group.congr_mk' {G : Type u} [group G] {H : Type v} [group H] (G' : subgroup G) (H' : subgroup H) [G'.normal] [H'.normal] (e : G ≃* H) (he : subgroup.map ↑e G' = H') (x : G) :
@[simp]
theorem quotient_group.congr_apply {G : Type u} [group G] {H : Type v} [group H] (G' : subgroup G) (H' : subgroup H) [G'.normal] [H'.normal] (e : G ≃* H) (he : subgroup.map ↑e G' = H') (x : G) :
@[simp]
theorem quotient_group.congr_refl {G : Type u} [group G] (G' : subgroup G) [G'.normal] (he : subgroup.map ↑(mul_equiv.refl G) G' = G' := _) :
@[simp]
theorem quotient_group.congr_symm {G : Type u} [group G] {H : Type v} [group H] (G' : subgroup G) (H' : subgroup H) [G'.normal] [H'.normal] (e : G ≃* H) (he : subgroup.map ↑e G' = H') :
def quotient_add_group.ker_lift {G : Type u} [add_group G] {H : Type v} [add_group H] (φ : G →+ H) :
G ⧸ φ.ker →+ H

The induced map from the quotient by the kernel to the codomain.

Equations
def quotient_group.ker_lift {G : Type u} [group G] {H : Type v} [group H] (φ : G →* H) :
G ⧸ φ.ker →* H

The induced map from the quotient by the kernel to the codomain.

Equations
@[simp]
theorem quotient_add_group.ker_lift_mk {G : Type u} [add_group G] {H : Type v} [add_group H] (φ : G →+ H) (g : G) :
@[simp]
theorem quotient_group.ker_lift_mk {G : Type u} [group G] {H : Type v} [group H] (φ : G →* H) (g : G) :
@[simp]
theorem quotient_group.ker_lift_mk' {G : Type u} [group G] {H : Type v} [group H] (φ : G →* H) (g : G) :
@[simp]
theorem quotient_add_group.ker_lift_mk' {G : Type u} [add_group G] {H : Type v} [add_group H] (φ : G →+ H) (g : G) :
def quotient_group.range_ker_lift {G : Type u} [group G] {H : Type v} [group H] (φ : G →* H) :
G ⧸ φ.ker →* ↥(φ.range)

The induced map from the quotient by the kernel to the range.

Equations
def quotient_add_group.range_ker_lift {G : Type u} [add_group G] {H : Type v} [add_group H] (φ : G →+ H) :
G ⧸ φ.ker →+ ↥(φ.range)

The induced map from the quotient by the kernel to the range.

Equations
noncomputable def quotient_group.quotient_ker_equiv_range {G : Type u} [group G] {H : Type v} [group H] (φ : G →* H) :
G ⧸ φ.ker ≃* ↥(φ.range)

Noether's first isomorphism theorem (a definition): the canonical isomorphism between G/(ker φ) to range φ.

Equations
noncomputable def quotient_add_group.quotient_ker_equiv_range {G : Type u} [add_group G] {H : Type v} [add_group H] (φ : G →+ H) :
G ⧸ φ.ker ≃+ ↥(φ.range)

The first isomorphism theorem (a definition): the canonical isomorphism between G/(ker φ) to range φ.

Equations
def quotient_group.quotient_ker_equiv_of_right_inverse {G : Type u} [group G] {H : Type v} [group H] (φ : G →* H) (ψ : H → G) (hφ : function.right_inverse ψ ⇑φ) :
G ⧸ φ.ker ≃* H

The canonical isomorphism G/(ker φ) ≃* H induced by a homomorphism φ : G →* H with a right inverse ψ : H → G.

Equations
def quotient_add_group.quotient_ker_equiv_of_right_inverse {G : Type u} [add_group G] {H : Type v} [add_group H] (φ : G →+ H) (ψ : H → G) (hφ : function.right_inverse ψ ⇑φ) :
G ⧸ φ.ker ≃+ H

The canonical isomorphism G/(ker φ) ≃+ H induced by a homomorphism φ : G →+ H with a right inverse ψ : H → G.

Equations
@[simp]
@[simp]

The canonical isomorphism G/⊥ ≃+ G.

Equations

The canonical isomorphism G/⊥ ≃* G.

Equations
noncomputable def quotient_add_group.quotient_ker_equiv_of_surjective {G : Type u} [add_group G] {H : Type v} [add_group H] (φ : G →+ H) (hφ : function.surjective ⇑φ) :
G ⧸ φ.ker ≃+ H

The canonical isomorphism G/(ker φ) ≃+ H induced by a surjection φ : G →+ H.

For a computable version, see quotient_add_group.quotient_ker_equiv_of_right_inverse.

Equations
noncomputable def quotient_group.quotient_ker_equiv_of_surjective {G : Type u} [group G] {H : Type v} [group H] (φ : G →* H) (hφ : function.surjective ⇑φ) :
G ⧸ φ.ker ≃* H

The canonical isomorphism G/(ker φ) ≃* H induced by a surjection φ : G →* H.

For a computable version, see quotient_group.quotient_ker_equiv_of_right_inverse.

Equations
def quotient_add_group.quotient_add_equiv_of_eq {G : Type u} [add_group G] {M N : add_subgroup G} [M.normal] [N.normal] (h : M = N) :
G ⧸ M ≃+ G ⧸ N

If two normal subgroups M and N of G are the same, their quotient groups are isomorphic.

Equations
def quotient_group.quotient_mul_equiv_of_eq {G : Type u} [group G] {M N : subgroup G} [M.normal] [N.normal] (h : M = N) :
G ⧸ M ≃* G ⧸ N

If two normal subgroups M and N of G are the same, their quotient groups are isomorphic.

Equations
def quotient_add_group.quotient_map_add_subgroup_of_of_le {G : Type u} [add_group G] {A' A B' B : add_subgroup G} [hAN : (A'.add_subgroup_of A).normal] [hBN : (B'.add_subgroup_of B).normal] (h' : A' ≤ B') (h : A ≤ B) :

Let A', A, B', B be subgroups of G. If A' ≤ B' and A ≤ B, then there is a map A / (A' ⊓ A) →+ B / (B' ⊓ B) induced by the inclusions.

Equations
def quotient_group.quotient_map_subgroup_of_of_le {G : Type u} [group G] {A' A B' B : subgroup G} [hAN : (A'.subgroup_of A).normal] [hBN : (B'.subgroup_of B).normal] (h' : A' ≤ B') (h : A ≤ B) :

Let A', A, B', B be subgroups of G. If A' ≤ B' and A ≤ B, then there is a map A / (A' ⊓ A) →* B / (B' ⊓ B) induced by the inclusions.

Equations
@[simp]
theorem quotient_group.quotient_map_subgroup_of_of_le_coe {G : Type u} [group G] {A' A B' B : subgroup G} [hAN : (A'.subgroup_of A).normal] [hBN : (B'.subgroup_of B).normal] (h' : A' ≤ B') (h : A ≤ B) (x : ↥A) :
def quotient_group.equiv_quotient_subgroup_of_of_eq {G : Type u} [group G] {A' A B' B : subgroup G} [hAN : (A'.subgroup_of A).normal] [hBN : (B'.subgroup_of B).normal] (h' : A' = B') (h : A = B) :

Let A', A, B', B be subgroups of G. If A' = B' and A = B, then the quotients A / (A' ⊓ A) and B / (B' ⊓ B) are isomorphic.

Applying this equiv is nicer than rewriting along the equalities, since the type of (A'.subgroup_of A : subgroup A) depends on on A.

Equations
def quotient_add_group.equiv_quotient_add_subgroup_of_of_eq {G : Type u} [add_group G] {A' A B' B : add_subgroup G} [hAN : (A'.add_subgroup_of A).normal] [hBN : (B'.add_subgroup_of B).normal] (h' : A' = B') (h : A = B) :

Let A', A, B', B be subgroups of G. If A' = B' and A = B, then the quotients A / (A' ⊓ A) and B / (B' ⊓ B) are isomorphic.

Applying this equiv is nicer than rewriting along the equalities, since the type of (A'.add_subgroup_of A : add_subgroup A) depends on on A.

Equations

The map of quotients by powers of an integer induced by a group homomorphism.

Equations

The map of quotients by multiples of an integer induced by an additive group homomorphism.

Equations

The equivalence of quotients by powers of an integer induced by a group isomorphism.

Equations

Noether's second isomorphism theorem: given two subgroups H and N of a group G, where N is normal, defines an isomorphism between H/(H ∩ N) and (HN)/N.

Equations

The second isomorphism theorem: given two subgroups H and N of a group G, where N is normal, defines an isomorphism between H/(H ∩ N) and (H + N)/N

Equations
@[protected, instance]
def quotient_group.map_normal {G : Type u} [group G] (N : subgroup G) [nN : N.normal] (M : subgroup G) [nM : M.normal] :
@[protected, instance]

The map from the third isomorphism theorem for additive groups: (A / N) / (M / N) → A / M.

Equations
def quotient_group.quotient_quotient_equiv_quotient_aux {G : Type u} [group G] (N : subgroup G) [nN : N.normal] (M : subgroup G) [nM : M.normal] (h : N ≤ M) :

The map from the third isomorphism theorem for groups: (G / N) / (M / N) → G / M.

Equations
def quotient_group.quotient_quotient_equiv_quotient {G : Type u} [group G] (N : subgroup G) [nN : N.normal] (M : subgroup G) [nM : M.normal] (h : N ≤ M) :

Noether's third isomorphism theorem for groups: (G / N) / (M / N) ≃* G / M.

Equations

If the quotient by an additive subgroup gives a singleton then the additive subgroup is the whole additive group.

If the quotient by a subgroup gives a singleton then the subgroup is the whole group.

noncomputable def group.fintype_of_ker_le_range {F G H : Type u} [group F] [group G] [group H] [fintype F] [fintype H] (f : F →* G) (g : G →* H) (h : g.ker ≤ f.range) :

If F and H are finite such that ker(G →* H) ≤ im(F →* G), then G is finite.

Equations
noncomputable def add_group.fintype_of_ker_le_range {F G H : Type u} [add_group F] [add_group G] [add_group H] [fintype F] [fintype H] (f : F →+ G) (g : G →+ H) (h : g.ker ≤ f.range) :

If F and H are finite such that ker(G →+ H) ≤ im(F →+ G), then G is finite.

Equations
noncomputable def add_group.fintype_of_ker_eq_range {F G H : Type u} [add_group F] [add_group G] [add_group H] [fintype F] [fintype H] (f : F →+ G) (g : G →+ H) (h : g.ker = f.range) :

If F and H are finite such that ker(G →+ H) = im(F →+ G), then G is finite.

Equations
noncomputable def group.fintype_of_ker_eq_range {F G H : Type u} [group F] [group G] [group H] [fintype F] [fintype H] (f : F →* G) (g : G →* H) (h : g.ker = f.range) :

If F and H are finite such that ker(G →* H) = im(F →* G), then G is finite.

Equations
noncomputable def add_group.fintype_of_ker_of_codom {G H : Type u} [add_group G] [add_group H] [fintype H] (g : G →+ H) [fintype ↥(g.ker)] :

If ker(G →+ H) and H are finite, then G is finite.

Equations
noncomputable def group.fintype_of_ker_of_codom {G H : Type u} [group G] [group H] [fintype H] (g : G →* H) [fintype ↥(g.ker)] :

If ker(G →* H) and H are finite, then G is finite.

Equations
noncomputable def add_group.fintype_of_dom_of_coker {F G : Type u} [add_group F] [add_group G] [fintype F] (f : F →+ G) [f.range.normal] [fintype (G ⧸ f.range)] :

If F and coker(F →+ G) are finite, then G is finite.

Equations
noncomputable def group.fintype_of_dom_of_coker {F G : Type u} [group F] [group G] [fintype F] (f : F →* G) [f.range.normal] [fintype (G ⧸ f.range)] :

If F and coker(F →* G) are finite, then G is finite.

Equations