Subgroups #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file defines multiplicative and additive subgroups as an extension of submonoids, in a bundled
form (unbundled subgroups are in deprecated/subgroups.lean).
We prove subgroups of a group form a complete lattice, and results about images and preimages of subgroups under group homomorphisms. The bundled subgroups use bundled monoid homomorphisms.
There are also theorems about the subgroups generated by an element or a subset of a group, defined both inductively and as the infimum of the set of subgroups containing a given element/subset.
Special thanks goes to Amelia Livingston and Yury Kudryashov for their help and inspiration.
Main definitions #
Notation used here:
-
G Naregroups -
Ais anadd_group -
H Karesubgroups ofGoradd_subgroups ofA -
xis an element of typeGor typeA -
f g : N →* Gare group homomorphisms -
s kare sets of elements of typeG
Definitions in the file:
-
subgroup G: the type of subgroups of a groupG -
add_subgroup A: the type of subgroups of an additive groupA -
complete_lattice (subgroup G): the subgroups ofGform a complete lattice -
subgroup.closure k: the minimal subgroup that includes the setk -
subgroup.subtype: the natural group homomorphism from a subgroup of groupGtoG -
subgroup.gi:closureforms a Galois insertion with the coercion to set -
subgroup.comap H f: the preimage of a subgroupHalong the group homomorphismfis also a subgroup -
subgroup.map f H: the image of a subgroupHalong the group homomorphismfis also a subgroup -
subgroup.prod H K: the product of subgroupsH,Kof groupsG,Nrespectively,H × Kis a subgroup ofG × N -
monoid_hom.range f: the range of the group homomorphismfis a subgroup -
monoid_hom.ker f: the kernel of a group homomorphismfis the subgroup of elementsx : Gsuch thatf x = 1 -
monoid_hom.eq_locus f g: given group homomorphismsf,g, the elements ofGsuch thatf x = g xform a subgroup ofG
Implementation notes #
Subgroup inclusion is denoted ≤ rather than ⊆, although ∈ is defined as
membership of a subgroup's underlying set.
Tags #
subgroup, subgroups
inv_mem_class S G states S is a type of subsets s ⊆ G closed under inverses.
Instances of this typeclass
neg_mem_class S G states S is a type of subsets s ⊆ G closed under negation.
Instances of this typeclass
- to_submonoid_class : submonoid_class S G
- to_inv_mem_class : inv_mem_class S G
subgroup_class S G states S is a type of subsets s ⊆ G that are subgroups of G.
Instances of this typeclass
- to_add_submonoid_class : add_submonoid_class S G
- to_neg_mem_class : neg_mem_class S G
add_subgroup_class S G states S is a type of subsets s ⊆ G that are
additive subgroups of G.
An additive subgroup of a add_group inherits an inverse.
A subgroup of a group inherits an inverse.
A subgroup of a group inherits a division
An additive subgroup of an add_group inherits a subtraction.
An additive subgroup of an add_group inherits an integer scaling.
A subgroup of a group inherits an integer power.
A subgroup of a group inherits a group structure.
Equations
- subgroup_class.to_group H = function.injective.group coe _ _ _ _ _ _ _
An additive subgroup of an add_group inherits an add_group structure.
Equations
- add_subgroup_class.to_add_group H = function.injective.add_group coe _ _ _ _ _ _ _
A subgroup of a comm_group is a comm_group.
Equations
- subgroup_class.to_comm_group H = function.injective.comm_group coe _ _ _ _ _ _ _
An additive subgroup of an add_comm_group is an add_comm_group.
Equations
- add_subgroup_class.to_add_comm_group H = function.injective.add_comm_group coe _ _ _ _ _ _ _
An additive subgroup of an add_ordered_comm_group is an add_ordered_comm_group.
Equations
A subgroup of an ordered_comm_group is an ordered_comm_group.
Equations
An additive subgroup of a linear_ordered_add_comm_group is a
linear_ordered_add_comm_group.
Equations
A subgroup of a linear_ordered_comm_group is a linear_ordered_comm_group.
Equations
- subgroup_class.to_linear_ordered_comm_group H = function.injective.linear_ordered_comm_group coe _ _ _ _ _ _ _ _ _
The natural group hom from an additive subgroup of add_group G to G.
Equations
- add_subgroup_class.subtype H = {to_fun := coe coe_to_lift, map_zero' := _, map_add' := _}
The natural group hom from a subgroup of group G to G.
Equations
- subgroup_class.subtype H = {to_fun := coe coe_to_lift, map_one' := _, map_mul' := _}
The inclusion homomorphism from a additive subgroup H contained in K to K.
Equations
- add_subgroup_class.inclusion h = add_monoid_hom.mk' (λ (x : ↥H), ⟨↑x, _⟩) _
The inclusion homomorphism from a subgroup H contained in K to K.
Equations
- subgroup_class.inclusion h = monoid_hom.mk' (λ (x : ↥H), ⟨↑x, _⟩) _
- carrier : set G
- mul_mem' : ∀ {a b : G}, a ∈ self.carrier → b ∈ self.carrier → a * b ∈ self.carrier
- one_mem' : 1 ∈ self.carrier
- inv_mem' : ∀ {x : G}, x ∈ self.carrier → x⁻¹ ∈ self.carrier
A subgroup of a group G is a subset containing 1, closed under multiplication
and closed under multiplicative inverse.
Instances for subgroup
- subgroup.has_sizeof_inst
- subgroup.set_like
- subgroup.subgroup_class
- subgroup.has_top
- subgroup.has_bot
- subgroup.inhabited
- subgroup.has_inf
- subgroup.has_Inf
- subgroup.complete_lattice
- subgroup.unique
- subgroup.nontrivial
- subgroup.is_modular_lattice
- subgroup.pointwise_central_scalar
- quotient_group.subgroup.has_quotient
- subgroup.commutator
- is_simple_group.subgroup.is_simple_order
- open_subgroup.has_coe_subgroup
- sylow.subgroup.has_coe
- carrier : set G
- add_mem' : ∀ {a b : G}, a ∈ self.carrier → b ∈ self.carrier → a + b ∈ self.carrier
- zero_mem' : 0 ∈ self.carrier
- neg_mem' : ∀ {x : G}, x ∈ self.carrier → -x ∈ self.carrier
An additive subgroup of an additive group G is a subset containing 0, closed
under addition and additive inverse.
Instances for add_subgroup
- add_subgroup.has_sizeof_inst
- add_subgroup.set_like
- add_subgroup.add_subgroup_class
- add_subgroup.has_top
- add_subgroup.has_bot
- add_subgroup.inhabited
- add_subgroup.has_inf
- add_subgroup.has_Inf
- add_subgroup.complete_lattice
- add_subgroup.unique
- add_subgroup.nontrivial
- add_subgroup.is_modular_lattice
- add_subgroup.pointwise_central_scalar
- quotient_add_group.subgroup.has_quotient
- is_simple_add_group.subgroup.is_simple_order
- open_add_subgroup.has_coe_add_subgroup
Reinterpret an add_subgroup as an add_submonoid.
Equations
- subgroup.set_like = {coe := subgroup.carrier _inst_1, coe_injective' := _}
Equations
- add_subgroup.set_like = {coe := add_subgroup.carrier _inst_1, coe_injective' := _}
See Note [custom simps projection]
Equations
- subgroup.simps.coe S = ↑S
See Note [custom simps projection]
Equations
Conversion to/from additive/multiplicative #
Supgroups of a group G are isomorphic to additive subgroups of additive G.
Equations
- subgroup.to_add_subgroup = {to_equiv := {to_fun := λ (S : subgroup G), {carrier := (⇑submonoid.to_add_submonoid S.to_submonoid).carrier, add_mem' := _, zero_mem' := _, neg_mem' := _}, inv_fun := λ (S : add_subgroup (additive G)), {carrier := (⇑add_submonoid.to_submonoid' S.to_add_submonoid).carrier, mul_mem' := _, one_mem' := _, inv_mem' := _}, left_inv := _, right_inv := _}, map_rel_iff' := _}
Additive subgroup of an additive group additive G are isomorphic to subgroup of G.
Additive supgroups of an additive group A are isomorphic to subgroups of multiplicative A.
Equations
- add_subgroup.to_subgroup = {to_equiv := {to_fun := λ (S : add_subgroup A), {carrier := (⇑add_submonoid.to_submonoid S.to_add_submonoid).carrier, mul_mem' := _, one_mem' := _, inv_mem' := _}, inv_fun := λ (S : subgroup (multiplicative A)), {carrier := (⇑submonoid.to_add_submonoid' S.to_submonoid).carrier, add_mem' := _, zero_mem' := _, neg_mem' := _}, left_inv := _, right_inv := _}, map_rel_iff' := _}
Subgroups of an additive group multiplicative A are isomorphic to additive subgroups of A.
Copy of a subgroup with a new carrier equal to the old one. Useful to fix definitional
equalities.
Copy of an additive subgroup with a new carrier equal to the old one.
Useful to fix definitional equalities
Two add_subgroups are equal if they have the same elements.
An add_subgroup contains the group's 0.
An add_subgroup is closed under addition.
An add_subgroup is closed under inverse.
An add_subgroup is closed under subtraction.
An add_subgroup of an add_group inherits a natural scaling.
An add_subgroup of an add_group inherits an integer scaling.
An add_subgroup of an add_group inherits an add_group structure.
Equations
- H.to_add_group = function.injective.add_group coe _ _ _ _ _ _ _
An add_subgroup of an add_comm_group is an add_comm_group.
Equations
- H.to_add_comm_group = function.injective.add_comm_group coe _ _ _ _ _ _ _
A subgroup of a comm_group is a comm_group.
Equations
- H.to_comm_group = function.injective.comm_group coe _ _ _ _ _ _ _
An add_subgroup of an add_ordered_comm_group is an add_ordered_comm_group.
Equations
- H.to_ordered_add_comm_group = function.injective.ordered_add_comm_group coe _ _ _ _ _ _ _
A subgroup of an ordered_comm_group is an ordered_comm_group.
Equations
- H.to_ordered_comm_group = function.injective.ordered_comm_group coe _ _ _ _ _ _ _
A subgroup of a linear_ordered_comm_group is a linear_ordered_comm_group.
Equations
- H.to_linear_ordered_comm_group = function.injective.linear_ordered_comm_group coe _ _ _ _ _ _ _ _ _
An add_subgroup of a linear_ordered_add_comm_group is a
linear_ordered_add_comm_group.
Equations
- H.to_linear_ordered_add_comm_group = function.injective.linear_ordered_add_comm_group coe _ _ _ _ _ _ _ _ _
The natural group hom from an add_subgroup of add_group G to G.
The inclusion homomorphism from a additive subgroup H contained in K to K.
Equations
- add_subgroup.inclusion h = add_monoid_hom.mk' (λ (x : ↥H), ⟨↑x, _⟩) _
The inclusion homomorphism from a subgroup H contained in K to K.
Equations
- subgroup.inclusion h = monoid_hom.mk' (λ (x : ↥H), ⟨↑x, _⟩) _
The add_subgroup G of the add_group G.
The top subgroup is isomorphic to the group.
This is the group version of submonoid.top_equiv.
Equations
The top additive subgroup is isomorphic to the additive group.
This is the additive group version of add_submonoid.top_equiv.
Equations
The trivial add_subgroup {0} of an add_group G.
Equations
Equations
- add_subgroup.has_bot.bot.unique = {to_inhabited := {default := 0}, uniq := _}
Equations
- subgroup.has_bot.bot.unique = {to_inhabited := {default := 1}, uniq := _}
A subgroup is either the trivial subgroup or nontrivial.
A subgroup is either the trivial subgroup or nontrivial.
The inf of two subgroups is their intersection.
Equations
- subgroup.has_inf = {inf := λ (H₁ H₂ : subgroup G), {carrier := (H₁.to_submonoid ⊓ H₂.to_submonoid).carrier, mul_mem' := _, one_mem' := _, inv_mem' := _}}
The inf of two add_subgroupss is their intersection.
Equations
- add_subgroup.has_inf = {inf := λ (H₁ H₂ : add_subgroup G), {carrier := (H₁.to_add_submonoid ⊓ H₂.to_add_submonoid).carrier, add_mem' := _, zero_mem' := _, neg_mem' := _}}
Equations
- add_subgroup.has_Inf = {Inf := λ (s : set (add_subgroup G)), {carrier := ((⨅ (S : add_subgroup G) (H : S ∈ s), S.to_add_submonoid).copy (⋂ (S : add_subgroup G) (H : S ∈ s), ↑S) _).carrier, add_mem' := _, zero_mem' := _, neg_mem' := _}}
Subgroups of a group form a complete lattice.
Equations
- subgroup.complete_lattice = {sup := complete_lattice.sup (complete_lattice_of_Inf (subgroup G) subgroup.complete_lattice._proof_1), le := complete_lattice.le (complete_lattice_of_Inf (subgroup G) subgroup.complete_lattice._proof_1), lt := complete_lattice.lt (complete_lattice_of_Inf (subgroup G) subgroup.complete_lattice._proof_1), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := has_inf.inf subgroup.has_inf, inf_le_left := _, inf_le_right := _, le_inf := _, Sup := complete_lattice.Sup (complete_lattice_of_Inf (subgroup G) subgroup.complete_lattice._proof_1), le_Sup := _, Sup_le := _, Inf := complete_lattice.Inf (complete_lattice_of_Inf (subgroup G) subgroup.complete_lattice._proof_1), Inf_le := _, le_Inf := _, top := ⊤, bot := ⊥, le_top := _, bot_le := _}
The add_subgroups of an add_group form a complete lattice.
Equations
- add_subgroup.complete_lattice = {sup := complete_lattice.sup (complete_lattice_of_Inf (add_subgroup G) add_subgroup.complete_lattice._proof_1), le := complete_lattice.le (complete_lattice_of_Inf (add_subgroup G) add_subgroup.complete_lattice._proof_1), lt := complete_lattice.lt (complete_lattice_of_Inf (add_subgroup G) add_subgroup.complete_lattice._proof_1), le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := has_inf.inf add_subgroup.has_inf, inf_le_left := _, inf_le_right := _, le_inf := _, Sup := complete_lattice.Sup (complete_lattice_of_Inf (add_subgroup G) add_subgroup.complete_lattice._proof_1), le_Sup := _, Sup_le := _, Inf := complete_lattice.Inf (complete_lattice_of_Inf (add_subgroup G) add_subgroup.complete_lattice._proof_1), Inf_le := _, le_Inf := _, top := ⊤, bot := ⊥, le_top := _, bot_le := _}
Equations
- add_subgroup.unique = {to_inhabited := {default := ⊥}, uniq := _}
Equations
- subgroup.unique = {to_inhabited := {default := ⊥}, uniq := _}
The add_subgroup generated by a set
Equations
- add_subgroup.closure k = has_Inf.Inf {K : add_subgroup G | k ⊆ ↑K}
Instances for ↥add_subgroup.closure
The subgroup generated by a set.
Equations
- subgroup.closure k = has_Inf.Inf {K : subgroup G | k ⊆ ↑K}
Instances for ↥subgroup.closure
The subgroup generated by a set includes the set.
The add_subgroup generated by a set includes the set.
An additive subgroup K includes closure k if and only if it includes k
An induction principle for closure membership. If p holds for 1 and all elements of k, and
is preserved under multiplication and inverse, then p holds for all elements of the closure
of k.
An induction principle for additive closure membership. If p
holds for 0 and all elements of k, and is preserved under addition and inverses, then p holds
for all elements of the additive closure of k.
A dependent version of subgroup.closure_induction.
A dependent version of add_subgroup.closure_induction.
An induction principle for additive closure membership, for predicates with two arguments.
An induction principle for closure membership for predicates with two arguments.
If all the elements of a set s commute, then closure s is a commutative group.
Equations
- subgroup.closure_comm_group_of_comm hcomm = {mul := group.mul (subgroup.closure k).to_group, mul_assoc := _, one := group.one (subgroup.closure k).to_group, one_mul := _, mul_one := _, npow := group.npow (subgroup.closure k).to_group, npow_zero' := _, npow_succ' := _, inv := group.inv (subgroup.closure k).to_group, div := group.div (subgroup.closure k).to_group, div_eq_mul_inv := _, zpow := group.zpow (subgroup.closure k).to_group, zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, mul_left_inv := _, mul_comm := _}
If all the elements of a set s commute, then closure s is an additive
commutative group.
Equations
- add_subgroup.closure_add_comm_group_of_comm hcomm = {add := add_group.add (add_subgroup.closure k).to_add_group, add_assoc := _, zero := add_group.zero (add_subgroup.closure k).to_add_group, zero_add := _, add_zero := _, nsmul := add_group.nsmul (add_subgroup.closure k).to_add_group, nsmul_zero' := _, nsmul_succ' := _, neg := add_group.neg (add_subgroup.closure k).to_add_group, sub := add_group.sub (add_subgroup.closure k).to_add_group, sub_eq_add_neg := _, zsmul := add_group.zsmul (add_subgroup.closure k).to_add_group, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _}
closure forms a Galois insertion with the coercion to set.
Equations
- add_subgroup.gi G = {choice := λ (s : set G) (_x : ↑(add_subgroup.closure s) ≤ s), add_subgroup.closure s, gc := _, le_l_u := _, choice_eq := _}
closure forms a Galois insertion with the coercion to set.
Equations
- subgroup.gi G = {choice := λ (s : set G) (_x : ↑(subgroup.closure s) ≤ s), subgroup.closure s, gc := _, le_l_u := _, choice_eq := _}
Closure of a subgroup K equals K.
Additive closure of an additive subgroup K equals K
The add_subgroup generated by an element of an add_group equals the set of
natural number multiples of the element.
The preimage of an add_subgroup along an add_monoid homomorphism
is an add_subgroup.
Equations
Instances for add_subgroup.comap
The image of an add_subgroup along an add_monoid homomorphism
is an add_subgroup.
Equations
Instances for add_subgroup.map
For any subgroups H and K, view H ⊓ K as a subgroup of K.
Equations
- H.add_subgroup_of K = add_subgroup.comap K.subtype H
Instances for add_subgroup.add_subgroup_of
For any subgroups H and K, view H ⊓ K as a subgroup of K.
Equations
- H.subgroup_of K = subgroup.comap K.subtype H
Instances for subgroup.subgroup_of
If H ≤ K, then H as a subgroup of K is isomorphic to H.
If H ≤ K, then H as a subgroup of K is isomorphic to H.
Given add_subgroups H, K of add_groups A, B respectively, H × K
as an add_subgroup of A × B.
Equations
Instances for add_subgroup.prod
Product of additive subgroups is isomorphic to their product as additive groups
A version of set.pi for add_submonoids. Given an index set I and a family
of submodules s : Π i, add_submonoid f i, pi I s is the add_submonoid of dependent functions
f : Π i, f i such that f i belongs to pi I s whenever i ∈ I. -/
A version of set.pi for submonoids. Given an index set I and a family of submodules
s : Π i, submonoid f i, pi I s is the submonoid of dependent functions f : Π i, f i such that
f i belongs to pi I s whenever i ∈ I.
A version of set.pi for add_subgroups. Given an index set I and a family
of submodules s : Π i, add_subgroup f i, pi I s is the add_subgroup of dependent functions
f : Π i, f i such that f i belongs to pi I s whenever i ∈ I. -/
Equations
- add_subgroup.pi I H = {carrier := (add_submonoid.pi I (λ (i : η), (H i).to_add_submonoid)).carrier, add_mem' := _, zero_mem' := _, neg_mem' := _}
A version of set.pi for subgroups. Given an index set I and a family of submodules
s : Π i, subgroup f i, pi I s is the subgroup of dependent functions f : Π i, f i such that
f i belongs to pi I s whenever i ∈ I.
Equations
- subgroup.pi I H = {carrier := (submonoid.pi I (λ (i : η), (H i).to_submonoid)).carrier, mul_mem' := _, one_mem' := _, inv_mem' := _}
A subgroup is normal if whenever n ∈ H, then g * n * g⁻¹ ∈ H for every g : G
Instances of this typeclass
- subgroup.normal_of_comm
- subgroup.normal_of_characteristic
- subgroup.normal_in_normalizer
- monoid_hom.normal_ker
- subgroup.normal_comap
- subgroup.normal_subgroup_of
- subgroup.normal_closure_normal
- subgroup.normal_core_normal
- subgroup.prod_subgroup_of_prod_normal
- subgroup.prod_normal
- subgroup.normal_inf_normal
- conj_act.normal_of_characteristic_of_normal
- subgroup.sup_normal
- quotient_group.map_normal
- subgroup.commutator_normal
- commutator.normal
- principal_ideals.normal
- upper_central_series_step.subgroup.normal
- upper_central_series.subgroup.normal
- lower_central_series.subgroup.normal
- alternating_group.normal
An add_subgroup is normal if whenever n ∈ H, then g + n - g ∈ H for every g : G
Instances of this typeclass
- add_subgroup.normal_of_comm
- add_subgroup.normal_of_characteristic
- add_subgroup.normal_in_normalizer
- add_monoid_hom.normal_ker
- add_subgroup.normal_comap
- add_subgroup.normal_add_subgroup_of
- add_subgroup.sum_add_subgroup_of_sum_normal
- add_subgroup.sum_normal
- add_subgroup.normal_inf_normal
- quotient_add_group.map_normal
- fixed : ∀ (ϕ : G ≃* G), subgroup.comap ϕ.to_monoid_hom H = H
A subgroup is characteristic if it is fixed by all automorphisms.
Several equivalent conditions are provided by lemmas of the form characteristic.iff...
- fixed : ∀ (ϕ : A ≃+ A), add_subgroup.comap ϕ.to_add_monoid_hom H = H
A add_subgroup is characteristic if it is fixed by all automorphisms.
Several equivalent conditions are provided by lemmas of the form characteristic.iff...
The center of an additive group G is the set of elements that commute with
everything in G
Equations
- add_subgroup.center G = {carrier := set.add_center G (add_zero_class.to_has_add G), add_mem' := _, zero_mem' := _, neg_mem' := _}
Instances for add_subgroup.center
The center of a group G is the set of elements that commute with everything in G
Equations
- subgroup.center G = {carrier := set.center G (mul_one_class.to_has_mul G), mul_mem' := _, one_mem' := _, inv_mem' := _}
Instances for subgroup.center
Instances for ↥subgroup.center
Equations
- subgroup.decidable_mem_center z = decidable_of_iff' (∀ (g : G), g * z = z * g) subgroup.mem_center_iff
A group is commutative if the center is the whole group
Equations
- group.comm_group_of_center_eq_top h = {mul := group.mul _inst_1, mul_assoc := _, one := group.one _inst_1, one_mul := _, mul_one := _, npow := group.npow _inst_1, npow_zero' := _, npow_succ' := _, inv := group.inv _inst_1, div := group.div _inst_1, div_eq_mul_inv := _, zpow := group.zpow _inst_1, zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, mul_left_inv := _, mul_comm := _}
The normalizer of H is the largest subgroup of G inside which H is normal.
The set_normalizer of S is the subgroup of G whose elements satisfy g*S*g⁻¹=S
The set_normalizer of S is the subgroup of G whose elements satisfy
g+S-g=S.
The preimage of the normalizer is contained in the normalizer of the preimage.
The preimage of the normalizer is contained in the normalizer of the preimage.
The image of the normalizer is contained in the normalizer of the image.
The image of the normalizer is contained in the normalizer of the image.
Every proper subgroup H of G is a proper normal subgroup of the normalizer of H in G.
Equations
- normalizer_condition G = ∀ (H : subgroup G), H < ⊤ → H < H.normalizer
Alternative phrasing of the normalizer condition: Only the full group is self-normalizing. This may be easier to work with, as it avoids inequalities and negations.
In a group that satisifes the normalizer condition, every maximal subgroup is normal
The centralizer of H is the subgroup of g : G commuting with every h : H.
Equations
- subgroup.centralizer s = {carrier := s.centralizer (mul_one_class.to_has_mul G), mul_mem' := _, one_mem' := _, inv_mem' := _}
Instances for subgroup.centralizer
The centralizer of H is the additive subgroup of g : G commuting with
every h : H.
Equations
- add_subgroup.centralizer s = {carrier := s.add_centralizer (add_zero_class.to_has_add G), add_mem' := _, zero_mem' := _, neg_mem' := _}
Instances for add_subgroup.centralizer
- is_comm : is_commutative ↥H has_mul.mul
Commutivity of a subgroup
Instances of this typeclass
- is_comm : is_commutative ↥H has_add.add
Commutivity of an additive subgroup
Instances of this typeclass
A commutative subgroup is commutative.
Equations
- add_subgroup.is_commutative.add_comm_group H = {add := add_group.add H.to_add_group, add_assoc := _, zero := add_group.zero H.to_add_group, zero_add := _, add_zero := _, nsmul := add_group.nsmul H.to_add_group, nsmul_zero' := _, nsmul_succ' := _, neg := add_group.neg H.to_add_group, sub := add_group.sub H.to_add_group, sub_eq_add_neg := _, zsmul := add_group.zsmul H.to_add_group, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _}
A commutative subgroup is commutative.
Equations
- subgroup.is_commutative.comm_group H = {mul := group.mul H.to_group, mul_assoc := _, one := group.one H.to_group, one_mul := _, mul_one := _, npow := group.npow H.to_group, npow_zero' := _, npow_succ' := _, inv := group.inv H.to_group, div := group.div H.to_group, div_eq_mul_inv := _, zpow := group.zpow H.to_group, zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, mul_left_inv := _, mul_comm := _}
Given a set s, conjugates_of_set s is the set of all conjugates of
the elements of s.
Equations
- group.conjugates_of_set s = ⋃ (a : G) (H : a ∈ s), conjugates_of a
The set of conjugates of s is closed under conjugation.
The normal closure of a set s is the subgroup closure of all the conjugates of
elements of s. It is the smallest normal subgroup containing s.
Equations
Instances for subgroup.normal_closure
The normal closure of s is a normal subgroup.
The normal core of a subgroup H is the largest normal subgroup of G contained in H,
as shown by subgroup.normal_core_eq_supr.
Equations
Instances for subgroup.normal_core
The range of an add_monoid_hom from an add_group is an add_subgroup.
Instances for ↥add_monoid_hom.range
The range of a monoid homomorphism from a group is a subgroup.
Instances for monoid_hom.range
Instances for ↥monoid_hom.range
The canonical surjective group homomorphism G →* f(G) induced by a group
homomorphism G →* N.
Equations
- f.range_restrict = f.cod_restrict f.range _
The canonical surjective add_group homomorphism G →+ f(G) induced by a group
homomorphism G →+ N.
Equations
- f.range_restrict = f.cod_restrict f.range _
The range of a surjective add_monoid homomorphism is the whole of the codomain.
Computable alternative to monoid_hom.of_injective.
Computable alternative to add_monoid_hom.of_injective.
The range of an injective group homomorphism is isomorphic to its domain.
Equations
- monoid_hom.of_injective hf = mul_equiv.of_bijective (f.cod_restrict f.range monoid_hom.of_injective._proof_3) _
The range of an injective additive group homomorphism is isomorphic to its domain.
Equations
- add_monoid_hom.of_injective hf = add_equiv.of_bijective (f.cod_restrict f.range add_monoid_hom.of_injective._proof_3) _
The multiplicative kernel of a monoid homomorphism is the subgroup of elements x : G such that
f x = 1
Equations
Instances for monoid_hom.ker
The additive kernel of an add_monoid homomorphism is the add_subgroup of elements
such that f x = 0
Equations
Instances for add_monoid_hom.ker
Equations
- f.decidable_mem_ker = λ (x : G), decidable_of_iff (⇑f x = 1) _
Equations
- f.decidable_mem_ker = λ (x : G), decidable_of_iff (⇑f x = 0) _
The image under an add_monoid hom of the add_subgroup generated by a set equals
the add_subgroup generated by the image of the set.
The image under a monoid homomorphism of the subgroup generated by a set equals the subgroup generated by the image of the set.
Given f(A) = f(B), ker f ≤ A, and ker f ≤ B, deduce that A = B.
A subgroup is isomorphic to its image under an injective function. If you have an isomorphism,
use mul_equiv.subgroup_map for better definitional equalities.
An additive subgroup is isomorphic to its image under an injective function. If you
have an isomorphism, use add_equiv.add_subgroup_map for better definitional equalities.
The preimage of the normalizer is equal to the normalizer of the preimage of a surjective function.
The preimage of the normalizer is equal to the normalizer of the preimage of a surjective function.
The image of the normalizer is equal to the normalizer of the image of an isomorphism.
The image of the normalizer is equal to the normalizer of the image of a bijective function.
The image of the normalizer is equal to the normalizer of the image of a bijective function.
Auxiliary definition used to define lift_of_right_inverse
lift_of_right_inverse f f_inv hf g hg is the unique additive group homomorphism φ
- such that
φ.comp f = g(add_monoid_hom.lift_of_right_inverse_comp), - where
f : G₁ →+ G₂has a right_inversef_inv(hf), - and
g : G₂ →+ G₃satisfieshg : f.ker ≤ g.ker.
See add_monoid_hom.eq_lift_of_right_inverse for the uniqueness lemma.
G₁.
| \
f | \ g
| \
v \⌟
G₂----> G₃
∃!φ
lift_of_right_inverse f hf g hg is the unique group homomorphism φ
- such that
φ.comp f = g(monoid_hom.lift_of_right_inverse_comp), - where
f : G₁ →+* G₂has a right_inversef_inv(hf), - and
g : G₂ →+* G₃satisfieshg : f.ker ≤ g.ker.
See monoid_hom.eq_lift_of_right_inverse for the uniqueness lemma.
G₁.
| \
f | \ g
| \
v \⌟
G₂----> G₃
∃!φ
A non-computable version of add_monoid_hom.lift_of_right_inverse for when no
computable right inverse is available.
A non-computable version of monoid_hom.lift_of_right_inverse for when no computable right
inverse is available, that uses function.surj_inv.
The monoid_hom from the preimage of a subgroup to itself.
Equations
- f.subgroup_comap H' = f.submonoid_comap H'.to_submonoid
the add_monoid_hom from the preimage of an additive subgroup to itself.
Equations
The monoid_hom from a subgroup to its image.
Equations
- f.subgroup_map H = f.submonoid_map H.to_submonoid
the add_monoid_hom from an additive subgroup to its image
Equations
Makes the identity isomorphism from a proof two subgroups of a multiplicative group are equal.
Equations
- mul_equiv.subgroup_congr h = {to_fun := (equiv.set_congr _).to_fun, inv_fun := (equiv.set_congr _).inv_fun, left_inv := _, right_inv := _, map_mul' := _}
Makes the identity additive isomorphism from a proof two subgroups of an additive group are equal.
Equations
- add_equiv.add_subgroup_congr h = {to_fun := (equiv.set_congr _).to_fun, inv_fun := (equiv.set_congr _).inv_fun, left_inv := _, right_inv := _, map_add' := _}
A subgroup is isomorphic to its image under an isomorphism. If you only have an injective map,
use subgroup.equiv_map_of_injective.
Equations
- e.subgroup_map H = e.submonoid_map H.to_submonoid
An additive subgroup is isomorphic to its image under an an isomorphism. If you only
have an injective map, use add_subgroup.equiv_map_of_injective.
Equations
Elements of disjoint, normal subgroups commute.