Subgroups #
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 N
areGroup
s -
A
is anAddGroup
-
H K
areSubgroup
s ofG
orAddSubgroup
s ofA
-
x
is an element of typeG
or typeA
-
f g : N →* G
are group homomorphisms -
s k
are sets of elements of typeG
Definitions in the file:
-
Subgroup G
: the type of subgroups of a groupG
-
AddSubgroup A
: the type of subgroups of an additive groupA
-
CompleteLattice (Subgroup G)
: the subgroups ofG
form a complete lattice -
Subgroup.closure k
: the minimal subgroup that includes the setk
-
Subgroup.subtype
: the natural group homomorphism from a subgroup of groupG
toG
-
Subgroup.gi
:closure
forms a Galois insertion with the coercion to set -
Subgroup.comap H f
: the preimage of a subgroupH
along the group homomorphismf
is also a subgroup -
Subgroup.map f H
: the image of a subgroupH
along the group homomorphismf
is also a subgroup -
Subgroup.prod H K
: the product of subgroupsH
,K
of groupsG
,N
respectively,H × K
is a subgroup ofG × N
-
MonoidHom.range f
: the range of the group homomorphismf
is a subgroup -
MonoidHom.ker f
: the kernel of a group homomorphismf
is the subgroup of elementsx : G
such thatf x = 1
-
MonoidHom.eq_locus f g
: given group homomorphismsf
,g
, the elements ofG
such thatf x = g x
form 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
SubgroupClass S G
states S
is a type of subsets s ⊆ G
that are subgroups of G
.
Instances
AddSubgroupClass S G
states S
is a type of subsets s ⊆ G
that are
additive subgroups of G
.
Instances
Equations
- ⋯ = ⋯
Instances For
A subgroup of a group inherits an inverse.
Alias of InvMemClass.coe_inv
.
An additive subgroup of an AddGroup
inherits a subtraction.
A subgroup of a group inherits a division
An additive subgroup of an AddGroup
inherits an integer scaling.
A subgroup of a group inherits an integer power.
An additive subgroup of an AddGroup
inherits an AddGroup
structure.
Equations
- AddSubgroupClass.toAddGroup H = Function.Injective.addGroup (fun (a : ↥H) => ↑a) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
A subgroup of a group inherits a group structure.
Equations
- SubgroupClass.toGroup H = Function.Injective.group (fun (a : ↥H) => ↑a) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
An additive subgroup of an AddCommGroup
is an AddCommGroup
.
Equations
- AddSubgroupClass.toAddCommGroup H = Function.Injective.addCommGroup (fun (a : ↥H) => ↑a) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
A subgroup of a CommGroup
is a CommGroup
.
Equations
- SubgroupClass.toCommGroup H = Function.Injective.commGroup (fun (a : ↥H) => ↑a) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
The natural group hom from an additive subgroup of AddGroup
G
to G
.
Equations
- ↑H = { toZeroHom := { toFun := Subtype.val, map_zero' := ⋯ }, map_add' := ⋯ }
Instances For
The natural group hom from a subgroup of group G
to G
.
Equations
- ↑H = { toOneHom := { toFun := Subtype.val, map_one' := ⋯ }, map_mul' := ⋯ }
Instances For
The inclusion homomorphism from an additive subgroup H
contained in K
to K
.
Equations
- AddSubgroupClass.inclusion h = AddMonoidHom.mk' (fun (x : ↥H) => { val := ↑x, property := ⋯ }) ⋯
Instances For
The inclusion homomorphism from a subgroup H
contained in K
to K
.
Equations
- SubgroupClass.inclusion h = MonoidHom.mk' (fun (x : ↥H) => { val := ↑x, property := ⋯ }) ⋯
Instances For
A subgroup of a group G
is a subset containing 1, closed under multiplication
and closed under multiplicative inverse.
Instances For
An additive subgroup of an additive group G
is a subset containing 0, closed
under addition and additive inverse.
Instances For
Equations
- AddSubgroup.instSetLikeAddSubgroup = { coe := fun (s : AddSubgroup G) => s.carrier, coe_injective' := ⋯ }
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Conversion to/from Additive
/Multiplicative
#
Subgroups of a group G
are isomorphic to additive subgroups of Additive G
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Additive subgroup of an additive group Additive G
are isomorphic to subgroup of G
.
Equations
- AddSubgroup.toSubgroup' = OrderIso.symm Subgroup.toAddSubgroup
Instances For
Additive subgroups of an additive group A
are isomorphic to subgroups of Multiplicative A
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Subgroups of an additive group Multiplicative A
are isomorphic to additive subgroups of A
.
Equations
- Subgroup.toAddSubgroup' = OrderIso.symm AddSubgroup.toSubgroup
Instances For
Copy of an additive subgroup with a new carrier
equal to the old one.
Useful to fix definitional equalities
Equations
- AddSubgroup.copy K s hs = { toAddSubmonoid := { toAddSubsemigroup := { carrier := s, add_mem' := ⋯ }, zero_mem' := ⋯ }, neg_mem' := ⋯ }
Instances For
Copy of a subgroup with a new carrier
equal to the old one. Useful to fix definitional
equalities.
Equations
- Subgroup.copy K s hs = { toSubmonoid := { toSubsemigroup := { carrier := s, mul_mem' := ⋯ }, one_mem' := ⋯ }, inv_mem' := ⋯ }
Instances For
Two AddSubgroup
s are equal if they have the same elements.
An AddSubgroup
contains the group's 0.
An AddSubgroup
is closed under addition.
An AddSubgroup
is closed under inverse.
An AddSubgroup
is closed under subtraction.
Equations
- ⋯ = ⋯
Instances For
Construct a subgroup from a nonempty set that is closed under subtraction
Equations
- AddSubgroup.ofSub s hsn hs = let_fun one_mem := ⋯; let_fun inv_mem := ⋯; { toAddSubmonoid := { toAddSubsemigroup := { carrier := s, add_mem' := ⋯ }, zero_mem' := one_mem }, neg_mem' := ⋯ }
Instances For
Construct a subgroup from a nonempty set that is closed under division.
Equations
- Subgroup.ofDiv s hsn hs = let_fun one_mem := ⋯; let_fun inv_mem := ⋯; { toSubmonoid := { toSubsemigroup := { carrier := s, mul_mem' := ⋯ }, one_mem' := one_mem }, inv_mem' := ⋯ }
Instances For
An AddSubgroup
of an AddGroup
inherits an addition.
Equations
- AddSubgroup.add H = AddSubmonoid.add H.toAddSubmonoid
A subgroup of a group inherits a multiplication.
Equations
- Subgroup.mul H = Submonoid.mul H.toSubmonoid
An AddSubgroup
of an AddGroup
inherits a zero.
Equations
- AddSubgroup.zero H = AddSubmonoid.zero H.toAddSubmonoid
A subgroup of a group inherits a 1.
Equations
- Subgroup.one H = Submonoid.one H.toSubmonoid
An AddSubgroup
of an AddGroup
inherits an inverse.
Equations
- AddSubgroup.neg H = { neg := fun (a : ↥H) => { val := -↑a, property := ⋯ } }
A subgroup of a group inherits an inverse.
Equations
- Subgroup.inv H = { inv := fun (a : ↥H) => { val := (↑a)⁻¹, property := ⋯ } }
An AddSubgroup
of an AddGroup
inherits a subtraction.
Equations
- AddSubgroup.sub H = { sub := fun (a b : ↥H) => { val := ↑a - ↑b, property := ⋯ } }
A subgroup of a group inherits a division
Equations
- Subgroup.div H = { div := fun (a b : ↥H) => { val := ↑a / ↑b, property := ⋯ } }
An AddSubgroup
of an AddGroup
inherits a natural scaling.
An AddSubgroup
of an AddGroup
inherits an integer scaling.
An AddSubgroup
of an AddGroup
inherits an AddGroup
structure.
Equations
- AddSubgroup.toAddGroup H = Function.Injective.addGroup (fun (a : ↥H) => ↑a) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
A subgroup of a group inherits a group structure.
Equations
- Subgroup.toGroup H = Function.Injective.group (fun (a : ↥H) => ↑a) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
An AddSubgroup
of an AddCommGroup
is an AddCommGroup
.
Equations
- AddSubgroup.toAddCommGroup H = Function.Injective.addCommGroup (fun (a : ↥H) => ↑a) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
A subgroup of a CommGroup
is a CommGroup
.
Equations
- Subgroup.toCommGroup H = Function.Injective.commGroup (fun (a : ↥H) => ↑a) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
The natural group hom from an AddSubgroup
of AddGroup
G
to G
.
Equations
- AddSubgroup.subtype H = { toZeroHom := { toFun := Subtype.val, map_zero' := ⋯ }, map_add' := ⋯ }
Instances For
The natural group hom from a subgroup of group G
to G
.
Equations
- Subgroup.subtype H = { toOneHom := { toFun := Subtype.val, map_one' := ⋯ }, map_mul' := ⋯ }
Instances For
The inclusion homomorphism from an additive subgroup H
contained in K
to K
.
Equations
- AddSubgroup.inclusion h = AddMonoidHom.mk' (fun (x : ↥H) => { val := ↑x, property := ⋯ }) ⋯
Instances For
The inclusion homomorphism from a subgroup H
contained in K
to K
.
Equations
- Subgroup.inclusion h = MonoidHom.mk' (fun (x : ↥H) => { val := ↑x, property := ⋯ }) ⋯
Instances For
The AddSubgroup G
of the AddGroup G
.
The top additive subgroup is isomorphic to the additive group.
This is the additive group version of AddSubmonoid.topEquiv
.
Equations
- AddSubgroup.topEquiv = AddSubmonoid.topEquiv
Instances For
The top subgroup is isomorphic to the group.
This is the group version of Submonoid.topEquiv
.
Equations
- Subgroup.topEquiv = Submonoid.topEquiv
Instances For
The trivial AddSubgroup
{0}
of an AddGroup
G
.
Equations
- AddSubgroup.instUniqueSubtypeMemAddSubgroupInstMembershipInstSetLikeAddSubgroupBotInstBotAddSubgroup = { toInhabited := { default := 0 }, uniq := ⋯ }
Equations
- ⋯ = ⋯
Instances For
A subgroup is either the trivial subgroup or nontrivial.
A subgroup is either the trivial subgroup or nontrivial.
A subgroup is either the trivial subgroup or contains a nonzero element.
Equations
- ⋯ = ⋯
Instances For
The inf of two AddSubgroup
s is their intersection.
Equations
- AddSubgroup.instInfAddSubgroup = { inf := fun (H₁ H₂ : AddSubgroup G) => let __src := H₁.toAddSubmonoid ⊓ H₂.toAddSubmonoid; { toAddSubmonoid := __src, neg_mem' := ⋯ } }
Equations
- One or more equations did not get rendered due to their size.
The AddSubgroup
s of an AddGroup
form a complete lattice.
Equations
- AddSubgroup.instCompleteLatticeAddSubgroup = let __src := completeLatticeOfInf (AddSubgroup G) ⋯; CompleteLattice.mk ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Subgroups of a group form a complete lattice.
Equations
- Subgroup.instCompleteLatticeSubgroup = let __src := completeLatticeOfInf (Subgroup G) ⋯; CompleteLattice.mk ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
The AddSubgroup
generated by a set
Equations
- AddSubgroup.closure k = sInf {K : AddSubgroup G | k ⊆ ↑K}
Instances For
The AddSubgroup
generated by a set includes the set.
The 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 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
.
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
.
Equations
- ⋯ = ⋯
Instances For
A dependent version of AddSubgroup.closure_induction
.
A dependent version of 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 an additive
commutative group.
Equations
- AddSubgroup.closureAddCommGroupOfComm hcomm = let __src := AddSubgroup.toAddGroup (AddSubgroup.closure k); AddCommGroup.mk ⋯
Instances For
If all the elements of a set s
commute, then closure s
is a commutative group.
Equations
- Subgroup.closureCommGroupOfComm hcomm = let __src := Subgroup.toGroup (Subgroup.closure k); CommGroup.mk ⋯
Instances For
closure
forms a Galois insertion with the coercion to set.
Equations
- AddSubgroup.gi G = { choice := fun (s : Set G) (x : ↑(AddSubgroup.closure s) ≤ s) => AddSubgroup.closure s, gc := ⋯, le_l_u := ⋯, choice_eq := ⋯ }
Instances For
closure
forms a Galois insertion with the coercion to set.
Equations
- Subgroup.gi G = { choice := fun (s : Set G) (x : ↑(Subgroup.closure s) ≤ s) => Subgroup.closure s, gc := ⋯, le_l_u := ⋯, choice_eq := ⋯ }
Instances For
Additive closure of an additive subgroup K
equals K
Closure of a subgroup K
equals K
.
The AddSubgroup
generated by an element of an AddGroup
equals the set of
natural number multiples of the element.
The subgroup generated by an element of a group equals the set of integer number powers of the element.
The preimage of an AddSubgroup
along an AddMonoid
homomorphism
is an AddSubgroup
.
Equations
- AddSubgroup.comap f H = let __src := AddSubmonoid.comap f H.toAddSubmonoid; { toAddSubmonoid := { toAddSubsemigroup := { carrier := ⇑f ⁻¹' ↑H, add_mem' := ⋯ }, zero_mem' := ⋯ }, neg_mem' := ⋯ }
Instances For
The preimage of a subgroup along a monoid homomorphism is a subgroup.
Equations
- Subgroup.comap f H = let __src := Submonoid.comap f H.toSubmonoid; { toSubmonoid := { toSubsemigroup := { carrier := ⇑f ⁻¹' ↑H, mul_mem' := ⋯ }, one_mem' := ⋯ }, inv_mem' := ⋯ }
Instances For
The image of an AddSubgroup
along an AddMonoid
homomorphism
is an AddSubgroup
.
Equations
- AddSubgroup.map f H = let __src := AddSubmonoid.map f H.toAddSubmonoid; { toAddSubmonoid := { toAddSubsemigroup := { carrier := ⇑f '' ↑H, add_mem' := ⋯ }, zero_mem' := ⋯ }, neg_mem' := ⋯ }
Instances For
The image of a subgroup along a monoid homomorphism is a subgroup.
Equations
- Subgroup.map f H = let __src := Submonoid.map f H.toSubmonoid; { toSubmonoid := { toSubsemigroup := { carrier := ⇑f '' ↑H, mul_mem' := ⋯ }, one_mem' := ⋯ }, inv_mem' := ⋯ }
Instances For
For any subgroups H
and K
, view H ⊓ K
as a subgroup of K
.
Equations
Instances For
For any subgroups H
and K
, view H ⊓ K
as a subgroup of K
.
Equations
- Subgroup.subgroupOf H K = Subgroup.comap (Subgroup.subtype K) H
Instances For
If H ≤ K
, then H
as a subgroup of K
is isomorphic to H
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If H ≤ K
, then H
as a subgroup of K
is isomorphic to H
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given AddSubgroup
s H
, K
of AddGroup
s A
, B
respectively, H × K
as an AddSubgroup
of A × B
.
Equations
- AddSubgroup.prod H K = let __src := AddSubmonoid.prod H.toAddSubmonoid K.toAddSubmonoid; { toAddSubmonoid := __src, neg_mem' := ⋯ }
Instances For
Given Subgroup
s H
, K
of groups G
, N
respectively, H × K
as a subgroup of G × N
.
Equations
- Subgroup.prod H K = let __src := Submonoid.prod H.toSubmonoid K.toSubmonoid; { toSubmonoid := __src, inv_mem' := ⋯ }
Instances For
Product of additive subgroups is isomorphic to their product as additive groups
Equations
- AddSubgroup.prodEquiv H K = let __src := Equiv.Set.prod ↑H ↑K; { toEquiv := __src, map_add' := ⋯ }
Instances For
Product of subgroups is isomorphic to their product as groups.
Equations
- Subgroup.prodEquiv H K = let __src := Equiv.Set.prod ↑H ↑K; { toEquiv := __src, map_mul' := ⋯ }
Instances For
A version of Set.pi
for AddSubmonoid
s. Given an index set I
and a family
of submodules s : Π i, AddSubmonoid f i
, pi I s
is the AddSubmonoid
of dependent functions
f : Π i, f i
such that f i
belongs to pi I s
whenever i ∈ I
. -/
Equations
- AddSubmonoid.pi I s = { toAddSubsemigroup := { carrier := Set.pi I fun (i : η) => (s i).carrier, add_mem' := ⋯ }, zero_mem' := ⋯ }
Instances For
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
.
Equations
- Submonoid.pi I s = { toSubsemigroup := { carrier := Set.pi I fun (i : η) => (s i).carrier, mul_mem' := ⋯ }, one_mem' := ⋯ }
Instances For
A version of Set.pi
for AddSubgroup
s. Given an index set I
and a family
of submodules s : Π i, AddSubgroup f i
, pi I s
is the AddSubgroup
of dependent functions
f : Π i, f i
such that f i
belongs to pi I s
whenever i ∈ I
. -/
Equations
- AddSubgroup.pi I H = let __src := AddSubmonoid.pi I fun (i : η) => (H i).toAddSubmonoid; { toAddSubmonoid := __src, neg_mem' := ⋯ }
Instances For
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 = let __src := Submonoid.pi I fun (i : η) => (H i).toSubmonoid; { toSubmonoid := __src, inv_mem' := ⋯ }
Instances For
An AddSubgroup is normal if whenever n ∈ H
, then g + n - g ∈ H
for every g : G
N
is closed under additive conjugation
Instances
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
A subgroup is characteristic if it is fixed by all automorphisms.
Several equivalent conditions are provided by lemmas of the form Characteristic.iff...
- fixed : ∀ (ϕ : G ≃* G), Subgroup.comap (MulEquiv.toMonoidHom ϕ) H = H
H
is fixed by all automorphisms
Instances
Equations
- ⋯ = ⋯
An AddSubgroup
is characteristic if it is fixed by all automorphisms.
Several equivalent conditions are provided by lemmas of the form Characteristic.iff...
- fixed : ∀ (ϕ : A ≃+ A), AddSubgroup.comap (AddEquiv.toAddMonoidHom ϕ) H = H
H
is fixed by all automorphisms
Instances
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
The center of an additive group G
is the set of elements that commute with
everything in G
Equations
- AddSubgroup.center G = let __src := AddSubmonoid.center G; { toAddSubmonoid := { toAddSubsemigroup := { carrier := Set.addCenter G, add_mem' := ⋯ }, zero_mem' := ⋯ }, neg_mem' := ⋯ }
Instances For
The center of a group G
is the set of elements that commute with everything in G
Equations
- Subgroup.center G = let __src := Submonoid.center G; { toSubmonoid := { toSubsemigroup := { carrier := Set.center G, mul_mem' := ⋯ }, one_mem' := ⋯ }, inv_mem' := ⋯ }
Instances For
For a group with zero, the center of the units is the same as the units of the center.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Subgroup.decidableMemCenter z = decidable_of_iff' (∀ (g : G), g * z = z * g) ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
A group is commutative if the center is the whole group
Equations
- Group.commGroupOfCenterEqTop h = let __src := inst; CommGroup.mk ⋯
Instances For
The normalizer
of H
is the largest subgroup of G
inside which H
is normal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The setNormalizer
of S
is the subgroup of G
whose elements satisfy
g+S-g=S
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
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
- NormalizerCondition G = ∀ H < ⊤, H < Subgroup.normalizer H
Instances For
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 satisfies the normalizer condition, every maximal subgroup is normal
The centralizer
of H
is the additive subgroup of g : G
commuting with every h : H
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The centralizer
of H
is the subgroup of g : G
commuting with every h : H
.
Equations
- Subgroup.centralizer s = let __src := Submonoid.centralizer s; { toSubmonoid := { toSubsemigroup := { carrier := Set.centralizer s, mul_mem' := ⋯ }, one_mem' := ⋯ }, inv_mem' := ⋯ }
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Commutativity of a subgroup
- is_comm : Std.Commutative fun (x x_1 : ↥H) => x * x_1
*
is commutative onH
Instances
Commutativity of an additive subgroup
- is_comm : Std.Commutative fun (x x_1 : ↥H) => x + x_1
+
is commutative onH
Instances
A commutative subgroup is commutative.
Equations
- AddSubgroup.IsCommutative.addCommGroup H = let __src := AddSubgroup.toAddGroup H; AddCommGroup.mk ⋯
A commutative subgroup is commutative.
Equations
- Subgroup.IsCommutative.commGroup H = let __src := Subgroup.toGroup H; CommGroup.mk ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Given a set s
, conjugatesOfSet s
is the set of all conjugates of
the elements of s
.
Equations
- Group.conjugatesOfSet s = ⋃ a ∈ s, conjugatesOf a
Instances For
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
The normal closure of s
is a normal subgroup.
Equations
- ⋯ = ⋯
The normal closure of s
is the smallest normal subgroup containing s
.
The normal core of a subgroup H
is the largest normal subgroup of G
contained in H
,
as shown by Subgroup.normalCore_eq_iSup
.
Equations
Instances For
Equations
- ⋯ = ⋯
The range of an AddMonoidHom
from an AddGroup
is an AddSubgroup
.
Equations
- AddMonoidHom.range f = AddSubgroup.copy (AddSubgroup.map f ⊤) (Set.range ⇑f) ⋯
Instances For
The range of a monoid homomorphism from a group is a subgroup.
Equations
- MonoidHom.range f = Subgroup.copy (Subgroup.map f ⊤) (Set.range ⇑f) ⋯
Instances For
The canonical surjective AddGroup
homomorphism G →+ f(G)
induced by a group
homomorphism G →+ N
.
Equations
Instances For
The canonical surjective group homomorphism G →* f(G)
induced by a group
homomorphism G →* N
.
Equations
Instances For
Equations
- ⋯ = ⋯
Instances For
The range of a surjective AddMonoid
homomorphism is the whole of the codomain.
The range of a surjective monoid homomorphism is the whole of the codomain.
Computable alternative to AddMonoidHom.ofInjective
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Computable alternative to MonoidHom.ofInjective
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The range of an injective additive group homomorphism is isomorphic to its domain.
Equations
Instances For
The range of an injective group homomorphism is isomorphic to its domain.
Equations
Instances For
The additive kernel of an AddMonoid
homomorphism is the AddSubgroup
of elements
such that f x = 0
Equations
- AddMonoidHom.ker f = let __src := AddMonoidHom.mker f; { toAddSubmonoid := __src, neg_mem' := ⋯ }
Instances For
The multiplicative kernel of a monoid homomorphism is the subgroup of elements x : G
such that
f x = 1
Equations
- MonoidHom.ker f = let __src := MonoidHom.mker f; { toSubmonoid := __src, inv_mem' := ⋯ }
Instances For
Equations
- AddMonoidHom.decidableMemKer f x = decidable_of_iff (f x = 0) ⋯
Equations
- MonoidHom.decidableMemKer f x = decidable_of_iff (f x = 1) ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
The additive subgroup of elements x : G
such that f x = g x
Equations
- AddMonoidHom.eqLocus f g = let __src := AddMonoidHom.eqLocusM f g; { toAddSubmonoid := __src, neg_mem' := ⋯ }
Instances For
The subgroup of elements x : G
such that f x = g x
Equations
- MonoidHom.eqLocus f g = let __src := MonoidHom.eqLocusM f g; { toSubmonoid := __src, inv_mem' := ⋯ }
Instances For
The image under an AddMonoid
hom of the AddSubgroup
generated by a set equals
the AddSubgroup
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
.
Given f(A) = f(B)
, ker f ≤ A
, and ker f ≤ B
, deduce that A = B
.
An additive subgroup is isomorphic to its image under an injective function. If you
have an isomorphism, use AddEquiv.addSubgroupMap
for better definitional equalities.
Equations
- AddSubgroup.equivMapOfInjective H f hf = let __src := Equiv.Set.image (⇑f) (↑H) hf; { toEquiv := __src, map_add' := ⋯ }
Instances For
A subgroup is isomorphic to its image under an injective function. If you have an isomorphism,
use MulEquiv.subgroupMap
for better definitional equalities.
Equations
- Subgroup.equivMapOfInjective H f hf = let __src := Equiv.Set.image (⇑f) (↑H) hf; { toEquiv := __src, map_mul' := ⋯ }
Instances For
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 liftOfRightInverse
Equations
- AddMonoidHom.liftOfRightInverseAux f f_inv hf g hg = { toZeroHom := { toFun := fun (b : G₂) => g (f_inv b), map_zero' := ⋯ }, map_add' := ⋯ }
Instances For
Auxiliary definition used to define liftOfRightInverse
Equations
- MonoidHom.liftOfRightInverseAux f f_inv hf g hg = { toOneHom := { toFun := fun (b : G₂) => g (f_inv b), map_one' := ⋯ }, map_mul' := ⋯ }
Instances For
liftOfRightInverse f f_inv hf g hg
is the unique additive group homomorphism φ
- such that
φ.comp f = g
(AddMonoidHom.liftOfRightInverse_comp
), - where
f : G₁ →+ G₂
has a RightInversef_inv
(hf
), - and
g : G₂ →+ G₃
satisfieshg : f.ker ≤ g.ker
. SeeAddMonoidHom.eq_liftOfRightInverse
for the uniqueness lemma.
G₁.
| \
f | \ g
| \
v \⌟
G₂----> G₃
∃!φ
Equations
- One or more equations did not get rendered due to their size.
Instances For
liftOfRightInverse f hf g hg
is the unique group homomorphism φ
- such that
φ.comp f = g
(MonoidHom.liftOfRightInverse_comp
), - where
f : G₁ →+* G₂
has a RightInversef_inv
(hf
), - and
g : G₂ →+* G₃
satisfieshg : f.ker ≤ g.ker
.
See MonoidHom.eq_liftOfRightInverse
for the uniqueness lemma.
G₁.
| \
f | \ g
| \
v \⌟
G₂----> G₃
∃!φ
Equations
- One or more equations did not get rendered due to their size.
Instances For
A non-computable version of AddMonoidHom.liftOfRightInverse
for when no
computable right inverse is available.
Equations
Instances For
A non-computable version of MonoidHom.liftOfRightInverse
for when no computable right
inverse is available, that uses Function.surjInv
.
Equations
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
the AddMonoidHom
from the preimage of an
additive subgroup to itself.
Equations
- AddMonoidHom.addSubgroupComap f H' = AddMonoidHom.addSubmonoidComap f H'.toAddSubmonoid
Instances For
The MonoidHom
from the preimage of a subgroup to itself.
Equations
- MonoidHom.subgroupComap f H' = MonoidHom.submonoidComap f H'.toSubmonoid
Instances For
the AddMonoidHom
from an additive subgroup to its image
Equations
- AddMonoidHom.addSubgroupMap f H = AddMonoidHom.addSubmonoidMap f H.toAddSubmonoid
Instances For
The MonoidHom
from a subgroup to its image.
Equations
- MonoidHom.subgroupMap f H = MonoidHom.submonoidMap f H.toSubmonoid
Instances For
Makes the identity additive isomorphism from a proof two subgroups of an additive group are equal.
Equations
- AddEquiv.addSubgroupCongr h = let __src := Equiv.setCongr ⋯; { toEquiv := __src, map_add' := ⋯ }
Instances For
Makes the identity isomorphism from a proof two subgroups of a multiplicative group are equal.
Equations
- MulEquiv.subgroupCongr h = let __src := Equiv.setCongr ⋯; { toEquiv := __src, map_mul' := ⋯ }
Instances For
An additive subgroup is isomorphic to its image under an isomorphism. If you only
have an injective map, use AddSubgroup.equiv_map_of_injective
.
Equations
- AddEquiv.addSubgroupMap e H = AddEquiv.addSubmonoidMap e H.toAddSubmonoid
Instances For
A subgroup is isomorphic to its image under an isomorphism. If you only have an injective map,
use Subgroup.equiv_map_of_injective
.
Equations
- MulEquiv.subgroupMap e H = MulEquiv.submonoidMap e H.toSubmonoid
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Elements of disjoint, normal subgroups commute.
Elements of disjoint, normal subgroups commute.
The conjugacy classes that are not trivial.
Equations
- ConjClasses.noncenter G = {x : ConjClasses G | Set.Nontrivial (ConjClasses.carrier x)}