Documentation

Mathlib.GroupTheory.GroupAction.Basic

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 #

def AddAction.orbit (M : Type u) {α : Type v} [AddMonoid M] [AddAction M α] (a : α) :
Set α

The orbit of an element under an action.

Equations
Instances For
    def MulAction.orbit (M : Type u) {α : Type v} [Monoid M] [MulAction M α] (a : α) :
    Set α

    The orbit of an element under an action.

    Equations
    Instances For
      theorem AddAction.mem_orbit_iff {M : Type u} {α : Type v} [AddMonoid M] [AddAction M α] {a₁ : α} {a₂ : α} :
      a₂ AddAction.orbit M a₁ x, x +ᵥ a₁ = a₂
      theorem MulAction.mem_orbit_iff {M : Type u} {α : Type v} [Monoid M] [MulAction M α] {a₁ : α} {a₂ : α} :
      a₂ MulAction.orbit M a₁ x, x a₁ = a₂
      @[simp]
      theorem AddAction.mem_orbit {M : Type u} {α : Type v} [AddMonoid M] [AddAction M α] (a : α) (x : M) :
      @[simp]
      theorem MulAction.mem_orbit {M : Type u} {α : Type v} [Monoid M] [MulAction M α] (a : α) (x : M) :
      @[simp]
      theorem AddAction.mem_orbit_self {M : Type u} {α : Type v} [AddMonoid M] [AddAction M α] (a : α) :
      @[simp]
      theorem MulAction.mem_orbit_self {M : Type u} {α : Type v} [Monoid M] [MulAction M α] (a : α) :
      theorem AddAction.orbit_nonempty {M : Type u} {α : Type v} [AddMonoid M] [AddAction M α] (a : α) :
      theorem MulAction.orbit_nonempty {M : Type u} {α : Type v} [Monoid M] [MulAction M α] (a : α) :
      theorem AddAction.mapsTo_vadd_orbit {M : Type u} {α : Type v} [AddMonoid M] [AddAction M α] (m : M) (a : α) :
      Set.MapsTo ((fun x x_1 => x +ᵥ x_1) m) (AddAction.orbit M a) (AddAction.orbit M a)
      theorem MulAction.mapsTo_smul_orbit {M : Type u} {α : Type v} [Monoid M] [MulAction M α] (m : M) (a : α) :
      Set.MapsTo ((fun x x_1 => x x_1) m) (MulAction.orbit M a) (MulAction.orbit M a)
      theorem AddAction.vadd_orbit_subset {M : Type u} {α : Type v} [AddMonoid M] [AddAction M α] (m : M) (a : α) :
      theorem MulAction.smul_orbit_subset {M : Type u} {α : Type v} [Monoid M] [MulAction M α] (m : M) (a : α) :
      theorem AddAction.orbit_vadd_subset {M : Type u} {α : Type v} [AddMonoid M] [AddAction M α] (m : M) (a : α) :
      theorem MulAction.orbit_smul_subset {M : Type u} {α : Type v} [Monoid M] [MulAction M α] (m : M) (a : α) :
      theorem AddAction.instAddActionElemOrbit.proof_2 {M : Type u_2} {α : Type u_1} [AddMonoid M] [AddAction M α] {a : α} (m : M) (m' : M) (a' : ↑(AddAction.orbit M a)) :
      m + m' +ᵥ a' = m +ᵥ (m' +ᵥ a')
      instance AddAction.instAddActionElemOrbit {M : Type u} {α : Type v} [AddMonoid M] [AddAction M α] {a : α} :
      Equations
      theorem AddAction.instAddActionElemOrbit.proof_1 {M : Type u_2} {α : Type u_1} [AddMonoid M] [AddAction M α] {a : α} (m : ↑(AddAction.orbit M a)) :
      0 +ᵥ m = m
      instance MulAction.instMulActionElemOrbit {M : Type u} {α : Type v} [Monoid M] [MulAction M α] {a : α} :
      Equations
      @[simp]
      theorem AddAction.orbit.coe_vadd {M : Type u} {α : Type v} [AddMonoid M] [AddAction M α] {a : α} {m : M} {a' : ↑(AddAction.orbit M a)} :
      ↑(m +ᵥ a') = m +ᵥ a'
      @[simp]
      theorem MulAction.orbit.coe_smul {M : Type u} {α : Type v} [Monoid M] [MulAction M α] {a : α} {m : M} {a' : ↑(MulAction.orbit M a)} :
      ↑(m a') = m a'
      def AddAction.fixedPoints (M : Type u) (α : Type v) [AddMonoid M] [AddAction M α] :
      Set α

      The set of elements fixed under the whole action.

      Equations
      Instances For
        def MulAction.fixedPoints (M : Type u) (α : Type v) [Monoid M] [MulAction M α] :
        Set α

        The set of elements fixed under the whole action.

        Equations
        Instances For
          def AddAction.fixedBy (M : Type u) (α : Type v) [AddMonoid M] [AddAction M α] (m : M) :
          Set α

          fixedBy m is the set of elements fixed by m.

          Equations
          Instances For
            def MulAction.fixedBy (M : Type u) (α : Type v) [Monoid M] [MulAction M α] (m : M) :
            Set α

            fixedBy m is the set of elements fixed by m.

            Equations
            Instances For
              theorem MulAction.fixed_eq_iInter_fixedBy (M : Type u) (α : Type v) [Monoid M] [MulAction M α] :
              MulAction.fixedPoints M α = ⋂ (m : M), MulAction.fixedBy M α m
              @[simp]
              theorem AddAction.mem_fixedPoints {M : Type u} (α : Type v) [AddMonoid M] [AddAction M α] {a : α} :
              a AddAction.fixedPoints M α ∀ (m : M), m +ᵥ a = a
              @[simp]
              theorem MulAction.mem_fixedPoints {M : Type u} (α : Type v) [Monoid M] [MulAction M α] {a : α} :
              a MulAction.fixedPoints M α ∀ (m : M), m a = a
              @[simp]
              theorem AddAction.mem_fixedBy {M : Type u} (α : Type v) [AddMonoid M] [AddAction M α] {m : M} {a : α} :
              a AddAction.fixedBy M α m m +ᵥ a = a
              @[simp]
              theorem MulAction.mem_fixedBy {M : Type u} (α : Type v) [Monoid M] [MulAction M α] {m : M} {a : α} :
              a MulAction.fixedBy M α m m a = a
              theorem AddAction.mem_fixedPoints' {M : Type u} (α : Type v) [AddMonoid M] [AddAction M α] {a : α} :
              a AddAction.fixedPoints M α ∀ (a' : α), a' AddAction.orbit M aa' = a
              abbrev AddAction.mem_fixedPoints'.match_1 {M : Type u_1} (α : Type u_2) [AddMonoid M] [AddAction M α] {a : α} :
              (x : α) → (motive : (x_1, x_1 +ᵥ a = x) → Prop) → ∀ (x_1 : x_1, x_1 +ᵥ a = x), (∀ (m : M) (hm : m +ᵥ a = x), motive (_ : x_2, x_2 +ᵥ a = x)) → motive x_1
              Equations
              Instances For
                theorem MulAction.mem_fixedPoints' {M : Type u} (α : Type v) [Monoid M] [MulAction M α] {a : α} :
                a MulAction.fixedPoints M α ∀ (a' : α), a' MulAction.orbit M aa' = a
                def AddAction.Stabilizer.addSubmonoid (M : Type u) {α : Type v} [AddMonoid M] [AddAction M α] (a : α) :

                The stabilizer of m point a as an additive submonoid of M.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  theorem AddAction.Stabilizer.addSubmonoid.proof_1 (M : Type u_2) {α : Type u_1} [AddMonoid M] [AddAction M α] (a : α) {m : M} {m' : M} (ha : m +ᵥ a = a) (hb : m' +ᵥ a = a) :
                  m + m' +ᵥ a = a
                  def MulAction.Stabilizer.submonoid (M : Type u) {α : Type v} [Monoid M] [MulAction M α] (a : α) :

                  The stabilizer of a point a as a submonoid of M.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    @[simp]
                    theorem AddAction.mem_stabilizer_addSubmonoid_iff (M : Type u) {α : Type v} [AddMonoid M] [AddAction M α] {a : α} {m : M} :
                    @[simp]
                    theorem MulAction.mem_stabilizer_submonoid_iff (M : Type u) {α : Type v} [Monoid M] [MulAction M α] {a : α} {m : M} :
                    theorem AddAction.orbit_eq_univ (M : Type u) {α : Type v} [AddMonoid M] [AddAction M α] [AddAction.IsPretransitive M α] (a : α) :
                    AddAction.orbit M a = Set.univ
                    theorem MulAction.orbit_eq_univ (M : Type u) {α : Type v} [Monoid M] [MulAction M α] [MulAction.IsPretransitive M α] (a : α) :
                    MulAction.orbit M a = Set.univ
                    abbrev AddAction.mem_fixedPoints_iff_card_orbit_eq_one.match_1 {M : Type u_2} {α : Type u_1} [AddMonoid M] [AddAction M α] {a : α} (motive : ↑(AddAction.orbit M a)Prop) :
                    (x : ↑(AddAction.orbit M a)) → ((a : α) → (x : M) → (hx : (fun m => m +ᵥ a) x = a) → motive { val := a, property := (_ : y, (fun m => m +ᵥ a) y = a) }) → motive x
                    Equations
                    Instances For
                      theorem AddAction.stabilizer.proof_1 (G : Type u_1) {α : Type u_2} [AddGroup G] [AddAction G α] (a : α) :
                      0 (AddAction.Stabilizer.addSubmonoid G a).toAddSubsemigroup.carrier
                      def AddAction.stabilizer (G : Type u) {α : Type v} [AddGroup G] [AddAction G α] (a : α) :

                      The stabilizer of an element under an action, i.e. what sends the element to itself. An additive subgroup.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        theorem AddAction.stabilizer.proof_2 (G : Type u_2) {α : Type u_1} [AddGroup G] [AddAction G α] (a : α) {m : G} (ha : m +ᵥ a = a) :
                        -m +ᵥ a = a
                        def MulAction.stabilizer (G : Type u) {α : Type v} [Group G] [MulAction G α] (a : α) :

                        The stabilizer of an element under an action, i.e. what sends the element to itself. A subgroup.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          @[simp]
                          theorem AddAction.mem_stabilizer_iff {G : Type u} {α : Type v} [AddGroup G] [AddAction G α] {g : G} {a : α} :
                          @[simp]
                          theorem MulAction.mem_stabilizer_iff {G : Type u} {α : Type v} [Group G] [MulAction G α] {g : G} {a : α} :
                          @[simp]
                          theorem AddAction.vadd_orbit {G : Type u} {α : Type v} [AddGroup G] [AddAction G α] (g : G) (a : α) :
                          @[simp]
                          theorem MulAction.smul_orbit {G : Type u} {α : Type v} [Group G] [MulAction G α] (g : G) (a : α) :
                          @[simp]
                          theorem AddAction.orbit_vadd {G : Type u} {α : Type v} [AddGroup G] [AddAction G α] (g : G) (a : α) :
                          @[simp]
                          theorem MulAction.orbit_smul {G : Type u} {α : Type v} [Group G] [MulAction G α] (g : G) (a : α) :

                          The action of an additive group on an orbit is transitive.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          abbrev AddAction.orbit_eq_iff.match_1 {G : Type u_2} {α : Type u_1} [AddGroup G] [AddAction G α] {a : α} {b : α} (motive : a AddAction.orbit G bProp) :
                          (x : a AddAction.orbit G b) → ((w : G) → (hc : (fun m => m +ᵥ b) w = a) → motive (_ : y, (fun m => m +ᵥ b) y = a)) → motive x
                          Equations
                          Instances For
                            theorem AddAction.orbit_eq_iff {G : Type u} {α : Type v} [AddGroup G] [AddAction G α] {a : α} {b : α} :
                            theorem MulAction.orbit_eq_iff {G : Type u} {α : Type v} [Group G] [MulAction G α] {a : α} {b : α} :
                            theorem AddAction.mem_orbit_vadd (G : Type u) {α : Type v} [AddGroup G] [AddAction G α] (g : G) (a : α) :
                            theorem MulAction.mem_orbit_smul (G : Type u) {α : Type v} [Group G] [MulAction G α] (g : G) (a : α) :
                            theorem AddAction.vadd_mem_orbit_vadd (G : Type u) {α : Type v} [AddGroup G] [AddAction G α] (g : G) (h : G) (a : α) :
                            theorem MulAction.smul_mem_orbit_smul (G : Type u) {α : Type v} [Group G] [MulAction G α] (g : G) (h : G) (a : α) :
                            def AddAction.orbitRel (G : Type u) (α : Type v) [AddGroup G] [AddAction G α] :

                            The relation 'in the same orbit'.

                            Equations
                            Instances For
                              theorem AddAction.orbitRel.proof_1 (G : Type u_2) (α : Type u_1) [AddGroup G] [AddAction G α] :
                              def MulAction.orbitRel (G : Type u) (α : Type v) [Group G] [MulAction G α] :

                              The relation 'in the same orbit'.

                              Equations
                              Instances For
                                theorem AddAction.orbitRel_apply {G : Type u} {α : Type v} [AddGroup G] [AddAction G α] {a : α} {b : α} :
                                theorem MulAction.orbitRel_apply {G : Type u} {α : Type v} [Group G] [MulAction G α] {a : α} {b : α} :
                                theorem AddAction.quotient_preimage_image_eq_union_add {G : Type u} {α : Type v} [AddGroup G] [AddAction G α] (U : Set α) :
                                Quotient.mk' ⁻¹' (Quotient.mk' '' U) = ⋃ (g : G), (fun x x_1 => x +ᵥ x_1) g '' U

                                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 G.

                                theorem MulAction.quotient_preimage_image_eq_union_mul {G : Type u} {α : Type v} [Group G] [MulAction G α] (U : Set α) :
                                Quotient.mk' ⁻¹' (Quotient.mk' '' U) = ⋃ (g : G), (fun x x_1 => x x_1) g '' U

                                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 G.

                                theorem AddAction.disjoint_image_image_iff {G : Type u} {α : Type v} [AddGroup G] [AddAction G α] {U : Set α} {V : Set α} :
                                Disjoint (Quotient.mk' '' U) (Quotient.mk' '' V) ∀ (x : α), x U∀ (g : G), ¬g +ᵥ x V
                                theorem MulAction.disjoint_image_image_iff {G : Type u} {α : Type v} [Group G] [MulAction G α] {U : Set α} {V : Set α} :
                                Disjoint (Quotient.mk' '' U) (Quotient.mk' '' V) ∀ (x : α), x U∀ (g : G), ¬g x V
                                theorem AddAction.image_inter_image_iff {G : Type u} {α : Type v} [AddGroup G] [AddAction G α] (U : Set α) (V : Set α) :
                                Quotient.mk' '' U Quotient.mk' '' V = ∀ (x : α), x U∀ (g : G), ¬g +ᵥ x V
                                theorem MulAction.image_inter_image_iff {G : Type u} {α : Type v} [Group G] [MulAction G α] (U : Set α) (V : Set α) :
                                Quotient.mk' '' U Quotient.mk' '' V = ∀ (x : α), x U∀ (g : G), ¬g x V
                                @[reducible]
                                def AddAction.orbitRel.Quotient (G : Type u) (α : Type v) [AddGroup G] [AddAction G α] :

                                The quotient by AddAction.orbitRel, given a name to enable dot notation.

                                Equations
                                Instances For
                                  @[reducible]
                                  def MulAction.orbitRel.Quotient (G : Type u) (α : Type v) [Group G] [MulAction G α] :

                                  The quotient by MulAction.orbitRel, given a name to enable dot notation.

                                  Equations
                                  Instances For
                                    theorem AddAction.orbitRel.Quotient.orbit.proof_1 {G : Type u_2} {α : Type u_1} [AddGroup G] [AddAction G α] :
                                    ∀ (x x_1 : α), x AddAction.orbit G x_1AddAction.orbit G x = AddAction.orbit G x_1

                                    The orbit corresponding to an element of the quotient by add_action.orbit_rel

                                    Equations
                                    Instances For

                                      The orbit corresponding to an element of the quotient by MulAction.orbitRel

                                      Equations
                                      Instances For

                                        Note that hφ = quotient.out_eq' is m useful choice here.

                                        Note that hφ = Quotient.out_eq' is a useful choice here.

                                        Decomposition of a type X as a disjoint union of its orbits under an additive group action.

                                        This version is expressed in terms of AddAction.orbitRel.Quotient.orbit instead of AddAction.orbit, to avoid mentioning Quotient.out'.

                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For

                                          Decomposition of a type X as a disjoint union of its orbits under a group action.

                                          This version is expressed in terms of MulAction.orbitRel.Quotient.orbit instead of MulAction.orbit, to avoid mentioning Quotient.out'.

                                          Equations
                                          • One or more equations did not get rendered due to their size.
                                          Instances For

                                            Decomposition of a type X as a disjoint union of its orbits under an additive group action.

                                            Equations
                                            • One or more equations did not get rendered due to their size.
                                            Instances For

                                              Decomposition of a type X as a disjoint union of its orbits under a group action.

                                              Equations
                                              • One or more equations did not get rendered due to their size.
                                              Instances For
                                                theorem MulAction.stabilizer_smul_eq_stabilizer_map_conj {G : Type u} {α : Type v} [Group G] [MulAction G α] (g : G) (a : α) :

                                                If the stabilizer of a is S, then the stabilizer of g • a is gSg⁻¹.

                                                noncomputable def MulAction.stabilizerEquivStabilizerOfOrbitRel {G : Type u} {α : Type v} [Group G] [MulAction G α] {a : α} {b : α} (h : Setoid.Rel (MulAction.orbitRel G α) a b) :
                                                { x // x MulAction.stabilizer G a } ≃* { x // x MulAction.stabilizer G b }

                                                A bijection between the stabilizers of two elements in the same orbit.

                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                Instances For

                                                  If the stabilizer of x is S, then the stabilizer of g +ᵥ x is g + S + (-g).

                                                  noncomputable def AddAction.stabilizerEquivStabilizerOfOrbitRel (G : Type u) (α : Type v) [AddGroup G] [AddAction G α] {a : α} {b : α} (h : Setoid.Rel (AddAction.orbitRel G α) a b) :
                                                  { x // x AddAction.stabilizer G a } ≃+ { x // x AddAction.stabilizer G b }

                                                  A bijection between the stabilizers of two elements in the same orbit.

                                                  Equations
                                                  • One or more equations did not get rendered due to their size.
                                                  Instances For
                                                    theorem smul_cancel_of_non_zero_divisor {M : Type u_1} {R : Type u_2} [Monoid M] [NonUnitalNonAssocRing R] [DistribMulAction M R] (k : M) (h : ∀ (x : R), k x = 0x = 0) {a : R} {b : R} (h' : k a = k b) :
                                                    a = b

                                                    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 IsSMulRegular. The typeclass that restricts all terms of M to have this property is NoZeroSMulDivisors.