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:
-
H K
aresubgroup
s ofG
oradd_subgroup
s ofA
-
s k
are sets of elements of typeG
Definitions in the file:
-
add_subgroup A
: the type of subgroups of an additive groupA
-
complete_lattice (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
-
monoid_hom.range f
: the range of the group homomorphismf
is a subgroup -
monoid_hom.ker f
: the kernel of a group homomorphismf
is the subgroup of elementsx : G
such thatf x = 1
-
monoid_hom.eq_locus f g
: given group homomorphismsf
,g
, the elements ofG
such thatf x = g x
form a subgroup ofG
-
is_simple_group G
: a class indicating that a group has exactly two normal subgroups
Implementation notes #
Subgroup inclusion is denoted ≤
rather than ⊆
, although ∈
is defined as
membership of a subgroup's underlying set.
Tags #
subgroup, subgroups
- carrier : set G
- one_mem' : 1 ∈ self.carrier
- mul_mem' : ∀ {a b : G}, a ∈ self.carrier → b ∈ self.carrier → a * b ∈ 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.
- carrier : set G
- zero_mem' : 0 ∈ self.carrier
- add_mem' : ∀ {a b : G}, a ∈ self.carrier → b ∈ self.carrier → a + b ∈ 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.
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
Equations
- K.fintype = show fintype {g // g ∈ K}, from infer_instance
Equations
- K.fintype = show fintype {g // g ∈ K}, from infer_instance
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, zero_mem' := _, add_mem' := _, neg_mem' := _}, inv_fun := λ (S : add_subgroup (additive G)), {carrier := (⇑add_submonoid.to_submonoid' S.to_add_submonoid).carrier, one_mem' := _, mul_mem' := _, inv_mem' := _}, left_inv := _, right_inv := _}, map_rel_iff' := _}
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, one_mem' := _, mul_mem' := _, inv_mem' := _}, inv_fun := λ (S : subgroup (multiplicative A)), {carrier := (⇑submonoid.to_add_submonoid' S.to_submonoid).carrier, zero_mem' := _, add_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_subgroup
s are equal if they have the same elements.
A subgroup contains the group's 1.
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.
Sum of a list of elements in an add_subgroup
is in the add_subgroup
.
Sum of a multiset of elements in an add_subgroup
of an add_comm_group
is in the add_subgroup
.
Product of a multiset of elements in a subgroup of a comm_group
is in the subgroup.
Sum of elements in an add_subgroup
of an add_comm_group
indexed by a finset
is in the add_subgroup
.
Product of elements of a subgroup of a comm_group
indexed by a finset
is in the
subgroup.
A subgroup of a group inherits a multiplication.
Equations
- H.has_mul = H.to_submonoid.has_mul
A subgroup of a group inherits a 1.
Equations
- H.has_one = H.to_submonoid.has_one
A subgroup of a group inherits a group structure.
Equations
- H.to_group = function.injective.group coe _ _ _ _ _
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
A subgroup of an ordered_comm_group
is an ordered_comm_group
.
Equations
A subgroup of a linear_ordered_comm_group
is a linear_ordered_comm_group
.
Equations
An add_subgroup
of a linear_ordered_add_comm_group
is a
linear_ordered_add_comm_group
.
Equations
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 trivial add_subgroup
{0}
of an add_group
G
.
Equations
Equations
- subgroup.inhabited = {default := ⊥}
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.
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, one_mem' := _, mul_mem' := _, inv_mem' := _}}
The inf of two add_subgroups
s is their intersection.
Equations
- add_subgroup.has_inf = {inf := λ (H₁ H₂ : add_subgroup G), {carrier := (H₁.to_add_submonoid ⊓ H₂.to_add_submonoid).carrier, zero_mem' := _, add_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, zero_mem' := _, add_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_subgroup
s 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 = Inf {K : add_subgroup G | k ⊆ ↑K}
The subgroup generated by a set includes the set.
The add_subgroup
generated by a set includes the set.
A subgroup K
includes closure k
if and only if it includes k
.
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
.
An induction principle on elements of the subtype subgroup.closure
.
If p
holds for 1
and all elements of k
, and is preserved under multiplication and inverse,
then p
holds for all elements x : closure k
.
The difference with subgroup.closure_induction
is that this acts on the subtype.
An induction principle on elements of the subtype
add_subgroup.closure
. If p
holds for 0
and all elements of k
, and is preserved under
addition and negation, then p
holds for all elements x : closure k
.
The difference with add_subgroup.closure_induction
is that this acts on the subtype.
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 := _}
Subgroup closure of a set is monotone in its argument: if h ⊆ k
,
then closure h ≤ closure k
.
Additive subgroup closure of a set is monotone in its argument: if h ⊆ k
,
then closure h ≤ closure k
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 subgroup generated by an element of a group equals the set of integer number powers of the element.
An induction principle for closure membership. If p
holds for 1
and all elements of
k
and their inverse, and is preserved under multiplication, 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 their negation, and is preserved under addition, then p
holds for all
elements of the additive closure of k
.
The preimage of an add_subgroup
along an add_monoid
homomorphism
is an add_subgroup
.
The image of an add_subgroup
along an add_monoid
homomorphism
is an add_subgroup
.
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
.
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
For any subgroups H
and K
, view H ⊓ K
as a subgroup of K
.
Equations
- H.subgroup_of K = subgroup.comap K.subtype H
Given add_subgroup
s H
, K
of add_group
s A
, B
respectively, H × K
as an add_subgroup
of A × B
.
Product of subgroups is isomorphic to their product as groups.
Product of additive subgroups is isomorphic to their product as additive groups
A subgroup is normal if whenever n ∈ H
, then g * n * g⁻¹ ∈ H
for every g : G
Instances
- subgroup.normal_of_comm
- subgroup.normal_of_characteristic
- subgroup.normal_in_normalizer
- subgroup.normal_comap
- monoid_hom.normal_ker
- subgroup.normal_inf
- subgroup.normal_closure_normal
- subgroup.normal_core_normal
- subgroup.prod_subgroup_of_prod_normal
- subgroup.prod_normal
- subgroup.sup_normal
- subgroup.normal_inf_normal
- quotient_group.map_normal
An add_subgroup is normal if whenever n ∈ H
, then g + n - g ∈ H
for every g : G
Instances
- add_subgroup.normal_of_comm
- add_subgroup.normal_of_characteristic
- add_subgroup.normal_in_normalizer
- add_subgroup.normal_comap
- add_monoid_hom.normal_ker
- add_subgroup.normal_inf
- 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), zero_mem' := _, add_mem' := _, neg_mem' := _}
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), one_mem' := _, mul_mem' := _, inv_mem' := _}
Equations
- subgroup.decidable_mem_center = λ (_x : G), decidable_of_iff' (∀ (g : G), g * _x = _x * g) subgroup.mem_center_iff
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.
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
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
.
The range of an add_monoid_hom
from an add_group
is an add_subgroup
.
Equations
- f.decidable_mem_range = λ (x : N), fintype.decidable_exists_fintype
Equations
- f.decidable_mem_range = λ (x : N), fintype.decidable_exists_fintype
The canonical surjective add_group
homomorphism G →+ f(G)
induced by a group
homomorphism G →+ N
.
Equations
- f.range_restrict = add_monoid_hom.mk' (λ (g : G), ⟨⇑f g, _⟩) _
The range of a surjective monoid homomorphism is the whole of the codomain.
The range of a surjective add_monoid
homomorphism is the whole of the codomain.
Restriction of an add_group
hom to an add_subgroup
of the domain.
Restriction of an add_group
hom to an add_subgroup
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_1) _
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_1) _
The multiplicative kernel of a monoid homomorphism is the subgroup of elements x : G
such that
f x = 1
The additive kernel of an add_monoid
homomorphism is the add_subgroup
of elements
such that f x = 0
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.
The range of a finite additive monoid under an additive monoid homomorphism is finite.
Note: this instance can form a diamond with subtype.fintype
or subgroup.fintype
in the
presence of fintype N
.
Equations
The range of a finite monoid under a monoid homomorphism is finite.
Note: this instance can form a diamond with subtype.fintype
in the
presence of fintype N
.
Equations
The range of a finite group under a group homomorphism is finite.
Note: this instance can form a diamond with subtype.fintype
or subgroup.fintype
in the
presence of fintype N
.
Equations
The range of a finite additive group under an additive group homomorphism is finite.
Note: this instance can form a diamond with subtype.fintype
or subgroup.fintype
in the
presence of fintype N
.
Equations
A subgroup is isomorphic to its image under an injective function
An additive subgroup is isomorphic to its image under an injective function
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 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 subgroup generated by an element.
Equations
- subgroup.zpowers g = (⇑(zpowers_hom G) g).range.copy (set.range (pow g)) _
The subgroup generated by an element.
Equations
- add_subgroup.zmultiples a = (⇑(zmultiples_hom A) a).range.copy (set.range (λ (_x : ℤ), _x • a)) _
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' := _}
An add_equiv
φ
between two additive groups G
and G'
induces an add_equiv
between a subgroup H ≤ G
and the subgroup φ(H) ≤ G'
.
Equations
A mul_equiv
φ
between two groups G
and G'
induces a mul_equiv
between
a subgroup H ≤ G
and the subgroup φ(H) ≤ G'
.
Equations
- exists_pair_ne : ∃ (x y : A), x ≠ y
- eq_bot_or_eq_top_of_normal : ∀ (H : add_subgroup A), H.normal → H = ⊥ ∨ H = ⊤
An add_group
is simple when it has exactly two normal add_subgroup
s.
Actions by subgroup
s #
These are just copies of the definitions about submonoid
starting from submonoid.mul_action
.
The additive action by an add_subgroup is the action by the underlying add_group.
Equations
The action by a subgroup is the action by the underlying group.
Equations
Note that this provides is_scalar_tower S G G
which is needed by smul_mul_assoc
.
The action by a subgroup is the action by the underlying group.
Equations
The action by a subgroup is the action by the underlying group.