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 AddAction.orbitRel

                                    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.