Basic properties of group actions #
This file primarily concerns itself with orbits, stabilizers, and other objects defined in terms of
actions. Despite this file being called basic
, low-level helper lemmas for algebraic manipulation
of •
belong elsewhere.
Main definitions #
The orbit of an element under an action.
Equations
- mul_action.orbit α b = set.range (λ (x : α), x • b)
The orbit of an element under an action.
Equations
- add_action.orbit α b = set.range (λ (x : α), x +ᵥ b)
Equations
- mul_action.orbit.mul_action = {to_has_scalar := {smul := λ (a : α), set.maps_to.restrict (has_scalar.smul a) (mul_action.orbit α b) (mul_action.orbit α b) _}, one_smul := _, mul_smul := _}
Equations
- add_action.orbit.add_action = {to_has_vadd := {vadd := λ (a : α), set.maps_to.restrict (has_vadd.vadd a) (add_action.orbit α b) (add_action.orbit α b) _}, zero_vadd := _, add_vadd := _}
The set of elements fixed under the whole action.
Equations
- add_action.fixed_points α β = {b : β | ∀ (x : α), x +ᵥ b = b}
The set of elements fixed under the whole action.
Equations
- mul_action.fixed_points α β = {b : β | ∀ (x : α), x • b = b}
fixed_by g
is the subfield of elements fixed by g
.
Equations
- add_action.fixed_by α β g = {x : β | g +ᵥ x = x}
fixed_by g
is the subfield of elements fixed by g
.
Equations
- mul_action.fixed_by α β g = {x : β | g • x = x}
The stabilizer of a point b
as a submonoid of α
.
The stabilizer of a point b
as an additive submonoid of α
.
The stabilizer of an element under an action, i.e. what sends the element to itself. A subgroup.
Equations
- mul_action.stabilizer α b = {carrier := (mul_action.stabilizer.submonoid α b).carrier, mul_mem' := _, one_mem' := _, inv_mem' := _}
The stabilizer of an element under an action, i.e. what sends the element to itself. An additive subgroup.
Equations
- add_action.stabilizer α b = {carrier := (add_action.stabilizer.add_submonoid α b).carrier, add_mem' := _, zero_mem' := _, neg_mem' := _}
The action of a group on an orbit is transitive.
The action of an additive group on an orbit is transitive.
The relation 'in the same orbit'.
Equations
- mul_action.orbit_rel α β = {r := λ (a b : β), a ∈ mul_action.orbit α b, iseqv := _}
The relation 'in the same orbit'.
Equations
- add_action.orbit_rel α β = {r := λ (a b : β), a ∈ add_action.orbit α b, iseqv := _}
When you take a set U
in β
, push it down to the quotient, and pull back, you get the union
of the orbit of U
under α
.
Decomposition of a type X
as a disjoint union of its orbits under a group action.
This version works with any right inverse to quotient.mk'
in order to stay computable. In most
cases you'll want to use quotient.out'
, so we provide mul_action.self_equiv_sigma_orbits
as
a special case.
Equations
- mul_action.self_equiv_sigma_orbits' α β hφ = (equiv.sigma_preimage_equiv quotient.mk').symm.trans (equiv.sigma_congr_right (λ («ω» : quotient (mul_action.orbit_rel α β)), equiv.subtype_equiv_right _))
Decomposition of a type X
as a disjoint union of its orbits under an additive group
action. This version works with any right inverse to quotient.mk'
in order to stay computable.
In most cases you'll want to use quotient.out'
, so we provide add_action.self_equiv_sigma_orbits
as a special case.
Equations
- add_action.self_equiv_sigma_orbits' α β hφ = (equiv.sigma_preimage_equiv quotient.mk').symm.trans (equiv.sigma_congr_right (λ («ω» : quotient (add_action.orbit_rel α β)), equiv.subtype_equiv_right _))
Decomposition of a type X
as a disjoint union of its orbits under a group action.
Equations
Decomposition of a type X
as a disjoint union of its orbits under an additive group
action.
Equations
If the stabilizer of x
is S
, then the stabilizer of g • x
is gSg⁻¹
.
A bijection between the stabilizers of two elements in the same orbit.
Equations
- mul_action.stabilizer_equiv_stabilizer_of_orbit_rel h = let g : α := classical.some h in have hg : g • y = x, from _, have this : mul_action.stabilizer α x = subgroup.map (mul_equiv.to_monoid_hom (⇑mul_aut.conj g)) (mul_action.stabilizer α y), from _, (mul_equiv.subgroup_congr this).trans (mul_equiv.subgroup_map (⇑mul_aut.conj g) (mul_action.stabilizer α y)).symm
If the stabilizer of x
is S
, then the stabilizer of g +ᵥ x
is g + S + (-g)
.
A bijection between the stabilizers of two elements in the same orbit.
Equations
- add_action.stabilizer_equiv_stabilizer_of_orbit_rel h = let g : α := classical.some h in have hg : g +ᵥ y = x, from _, have this : add_action.stabilizer α x = add_subgroup.map (add_equiv.to_add_monoid_hom (⇑add_aut.conj g)) (add_action.stabilizer α y), from _, (add_equiv.add_subgroup_congr this).trans (add_equiv.add_subgroup_map (⇑add_aut.conj g) (add_action.stabilizer α y)).symm
A typeclass for when a mul_action β α
descends to the quotient α ⧸ H
.
A typeclass for when an add_action β α
descends to the quotient α ⧸ H
.
Equations
- add_action.quotient β H = {to_has_vadd := {vadd := λ (b : β), quotient.map' (has_vadd.vadd b) _}, zero_vadd := _, add_vadd := _}
Equations
- mul_action.quotient β H = {to_has_scalar := {smul := λ (b : β), quotient.map' (has_scalar.smul b) _}, one_smul := _, mul_smul := _}
The canonical map to the left cosets.
Equations
- mul_action_hom.to_quotient H = {to_fun := coe coe_to_lift, map_smul' := _}
Equations
Equations
The canonical map from the quotient of the stabilizer to the set.
Equations
- add_action.of_quotient_stabilizer α x g = quotient.lift_on' g (λ (_x : α), _x +ᵥ x) _
The canonical map from the quotient of the stabilizer to the set.
Equations
- mul_action.of_quotient_stabilizer α x g = quotient.lift_on' g (λ (_x : α), _x • x) _
Orbit-stabilizer theorem.
Equations
- add_action.orbit_equiv_quotient_stabilizer α b = (equiv.of_bijective (λ (g : α ⧸ add_action.stabilizer α b), ⟨add_action.of_quotient_stabilizer α b g, _⟩) _).symm
Orbit-stabilizer theorem.
Equations
- mul_action.orbit_equiv_quotient_stabilizer α b = (equiv.of_bijective (λ (g : α ⧸ mul_action.stabilizer α b), ⟨mul_action.of_quotient_stabilizer α b g, _⟩) _).symm
Orbit-stabilizer theorem.
Orbit-stabilizer theorem.
Orbit-stabilizer theorem.
Orbit-stabilizer theorem.
Class formula : given G
a group acting on X
and φ
a function mapping each orbit of X
under this action (that is, each element of the quotient of X
by the relation orbit_rel G X
) to
an element in this orbit, this gives a (noncomputable) bijection between X
and the disjoint union
of G/Stab(φ(ω))
over all orbits ω
. In most cases you'll want φ
to be quotient.out'
, so we
provide mul_action.self_equiv_sigma_orbits_quotient_stabilizer
as a special case.
Equations
- mul_action.self_equiv_sigma_orbits_quotient_stabilizer' α β hφ = (mul_action.self_equiv_sigma_orbits' α β hφ).trans (equiv.sigma_congr_right (λ («ω» : quotient (mul_action.orbit_rel α β)), mul_action.orbit_equiv_quotient_stabilizer α (φ «ω»)))
Class formula : given G
an additive group acting on X
and φ
a function
mapping each orbit of X
under this action (that is, each element of the quotient of X
by the
relation orbit_rel G X
) to an element in this orbit, this gives a (noncomputable) bijection
between X
and the disjoint union of G/Stab(φ(ω))
over all orbits ω
. In most cases you'll want
φ
to be quotient.out'
, so we provide add_action.self_equiv_sigma_orbits_quotient_stabilizer
as a special case.
Equations
- add_action.self_equiv_sigma_orbits_quotient_stabilizer' α β hφ = (add_action.self_equiv_sigma_orbits' α β hφ).trans (equiv.sigma_congr_right (λ («ω» : quotient (add_action.orbit_rel α β)), add_action.orbit_equiv_quotient_stabilizer α (φ «ω»)))
Class formula for a finite group acting on a finite type. See
add_action.card_eq_sum_card_add_group_div_card_stabilizer
for a specialized version using
quotient.out'
.
Class formula for a finite group acting on a finite type. See
mul_action.card_eq_sum_card_group_div_card_stabilizer
for a specialized version using
quotient.out'
.
Class formula. This is a special case of
add_action.self_equiv_sigma_orbits_quotient_stabilizer'
with φ = quotient.out'
.
Class formula. This is a special case of
mul_action.self_equiv_sigma_orbits_quotient_stabilizer'
with φ = quotient.out'
.
Class formula for a finite group acting on a finite type.
Class formula for a finite group acting on a finite type.
Burnside's lemma : a (noncomputable) bijection between the disjoint union of all
{x ∈ X | g • x = x}
for g ∈ G
and the product G × X/G
, where G
is an additive group acting
on X
and X/G
denotes the quotient of X
by the relation orbit_rel G X
.
Equations
- add_action.sigma_fixed_by_equiv_orbits_sum_add_group α β = ((((((((equiv.subtype_prod_equiv_sigma_subtype (λ (a : α) (x : β), x ∈ add_action.fixed_by α β a)).symm.trans ((equiv.prod_comm α β).subtype_equiv _)).trans (equiv.subtype_prod_equiv_sigma_subtype (λ (b : β) (a : α), a ∈ add_action.stabilizer α b))).trans (add_action.self_equiv_sigma_orbits α β).sigma_congr_left').trans (equiv.sigma_assoc (λ («ω» : quotient (add_action.orbit_rel α β)) (b : ↥(add_action.orbit α «ω».out')), ↥(add_action.stabilizer α ↑b)))).trans (equiv.sigma_congr_right (λ («ω» : quotient (add_action.orbit_rel α β)), equiv.sigma_congr_right (λ (_x : ↥(add_action.orbit α «ω».out')), add_action.sigma_fixed_by_equiv_orbits_sum_add_group._match_1 α β «ω» _x)))).trans (equiv.sigma_congr_right (λ («ω» : quotient (add_action.orbit_rel α β)), equiv.sigma_equiv_prod ↥(add_action.orbit α «ω».out') ↥(add_action.stabilizer α «ω».out')))).trans (equiv.sigma_congr_right (λ («ω» : quotient (add_action.orbit_rel α β)), add_action.orbit_sum_stabilizer_equiv_add_group α «ω».out'))).trans (equiv.sigma_equiv_prod (quotient (add_action.orbit_rel α β)) α)
- add_action.sigma_fixed_by_equiv_orbits_sum_add_group._match_1 α β «ω» ⟨b, hb⟩ = (add_action.stabilizer_equiv_stabilizer_of_orbit_rel hb).to_equiv
Burnside's lemma : a (noncomputable) bijection between the disjoint union of all
{x ∈ X | g • x = x}
for g ∈ G
and the product G × X/G
, where G
is a group acting on X
and
X/G
denotes the quotient of X
by the relation orbit_rel G X
.
Equations
- mul_action.sigma_fixed_by_equiv_orbits_prod_group α β = ((((((((equiv.subtype_prod_equiv_sigma_subtype (λ (a : α) (x : β), x ∈ mul_action.fixed_by α β a)).symm.trans ((equiv.prod_comm α β).subtype_equiv _)).trans (equiv.subtype_prod_equiv_sigma_subtype (λ (b : β) (a : α), a ∈ mul_action.stabilizer α b))).trans (mul_action.self_equiv_sigma_orbits α β).sigma_congr_left').trans (equiv.sigma_assoc (λ («ω» : quotient (mul_action.orbit_rel α β)) (b : ↥(mul_action.orbit α «ω».out')), ↥(mul_action.stabilizer α ↑b)))).trans (equiv.sigma_congr_right (λ («ω» : quotient (mul_action.orbit_rel α β)), equiv.sigma_congr_right (λ (_x : ↥(mul_action.orbit α «ω».out')), mul_action.sigma_fixed_by_equiv_orbits_prod_group._match_1 α β «ω» _x)))).trans (equiv.sigma_congr_right (λ («ω» : quotient (mul_action.orbit_rel α β)), equiv.sigma_equiv_prod ↥(mul_action.orbit α «ω».out') ↥(mul_action.stabilizer α «ω».out')))).trans (equiv.sigma_congr_right (λ («ω» : quotient (mul_action.orbit_rel α β)), mul_action.orbit_prod_stabilizer_equiv_group α «ω».out'))).trans (equiv.sigma_equiv_prod (quotient (mul_action.orbit_rel α β)) α)
- mul_action.sigma_fixed_by_equiv_orbits_prod_group._match_1 α β «ω» ⟨b, hb⟩ = (mul_action.stabilizer_equiv_stabilizer_of_orbit_rel hb).to_equiv
Burnside's lemma : given a finite additive group G
acting on a set X
,
the average number of elements fixed by each g ∈ G
is the number of orbits.
Burnside's lemma : given a finite group G
acting on a set X
, the average number of
elements fixed by each g ∈ G
is the number of orbits.
smul
by a k : M
over a ring is injective, if k
is not a zero divisor.
The general theory of such k
is elaborated by is_smul_regular
.
The typeclass that restricts all terms of M
to have this property is no_zero_smul_divisors
.
Equations
- H.fintype_quotient_normal_core = _.mpr (fintype.of_equiv ↥((mul_action.to_perm_hom G (G ⧸ H)).range) (quotient_group.quotient_ker_equiv_range (mul_action.to_perm_hom G (G ⧸ H))).symm.to_equiv)