Documentation

TauCeti.GroupTheory.GroupAction.Orbit.Finset

Orbits of a finitely generated group, computed #

Let a group G act on a finite type α with decidable equality, and let S : Finset G. The orbit of a point x under the subgroup Subgroup.closure ↑S generated by S is a finite set, but Mathlib's MulAction.orbit offers no way to compute it: membership in Subgroup.closure ↑S carries no Decidable instance, and the subgroup itself is not a finset. This file computes the orbit by the usual closure procedure — start from {x}, and repeatedly add all translates by the generators — and proves that the result is the orbit. Since each round either enlarges the current finset or leaves it fixed forever, Fintype.card α rounds always suffice (Finset.isFixedPt_iterate_card), so the definition iterates that many times and is executable by decide and #eval.

Applied to a group acting on itself by left multiplication, the orbit of 1 is the subgroup generated by S; this gives the generated subgroup as a finset, and its order as a computation.

Main definitions #

Main results #

def Finset.orbitStep {G : Type u_1} {α : Type u_2} [Group G] [MulAction G α] [DecidableEq α] (S : Finset G) (s : Finset α) :

One round of closure of a finset s under the group elements in S: the finset s together with all translates g • y of its elements by generators g ∈ S.

Equations
Instances For
    @[simp]
    theorem Finset.mem_orbitStep {G : Type u_1} {α : Type u_2} [Group G] [MulAction G α] [DecidableEq α] {S : Finset G} {s : Finset α} {y : α} :
    y ∈ S.orbitStep s ↔ y ∈ s ∨ ∃ g ∈ S, ∃ x ∈ s, g • x = y
    theorem Finset.subset_orbitStep {G : Type u_1} {α : Type u_2} [Group G] [MulAction G α] [DecidableEq α] (S : Finset G) (s : Finset α) :
    s ⊆ S.orbitStep s
    theorem Finset.smul_finset_subset_orbitStep {G : Type u_1} {α : Type u_2} [Group G] [MulAction G α] [DecidableEq α] {S : Finset G} {g : G} (hg : g ∈ S) (s : Finset α) :
    g • s ⊆ S.orbitStep s
    def Finset.orbitFinset {G : Type u_1} {α : Type u_2} [Group G] [MulAction G α] [DecidableEq α] [Fintype α] (S : Finset G) (x : α) :

    The orbit of x under the subgroup generated by S, computed by Fintype.card α rounds of closure under the generators starting from {x}. That many rounds always suffice, by Finset.isFixedPt_iterate_card; the identification with MulAction.orbit is Finset.coe_orbitFinset.

    Equations
    Instances For
      theorem Finset.orbitStep_orbitFinset {G : Type u_1} {α : Type u_2} [Group G] [MulAction G α] [DecidableEq α] [Fintype α] (S : Finset G) (x : α) :

      The computed orbit is closed under one more round of closure.

      @[simp]
      theorem Finset.mem_orbitFinset_self {G : Type u_1} {α : Type u_2} [Group G] [MulAction G α] [DecidableEq α] [Fintype α] (S : Finset G) (x : α) :
      @[simp]
      theorem Finset.coe_orbitFinset {G : Type u_1} {α : Type u_2} [Group G] [MulAction G α] [DecidableEq α] [Fintype α] (S : Finset G) (x : α) :

      The computed orbit is the orbit of x under the subgroup generated by S.

      @[simp]
      theorem Finset.mem_orbitFinset {G : Type u_1} {α : Type u_2} [Group G] [MulAction G α] [DecidableEq α] [Fintype α] {S : Finset G} {x y : α} :

      A point lies in the computed finset Finset.orbitFinset S x exactly when it lies in the orbit of x under the subgroup generated by S.

      The subgroup generated by S acts transitively exactly when the computed orbit of a point is the whole type.

      The subgroup generated by S acts transitively exactly when the computed orbit of every point is the whole type. The universally quantified form is the one that is decidable without choosing a point.

      The generated subgroup of a finite group, as a finset #

      def Finset.closureFinset {G : Type u_1} [Group G] (S : Finset G) [Fintype G] [DecidableEq G] :

      The subgroup of a finite group generated by S, as a finset: the orbit of 1 under the generated subgroup acting by left multiplication, computed by Finset.orbitFinset.

      Equations
      Instances For
        @[simp]
        theorem Finset.mem_closureFinset {G : Type u_1} [Group G] (S : Finset G) [Fintype G] [DecidableEq G] {g : G} :

        A group element lies in the computed finset Finset.closureFinset S exactly when it lies in the subgroup generated by S.

        @[simp]
        theorem Finset.coe_closureFinset {G : Type u_1} [Group G] (S : Finset G) [Fintype G] [DecidableEq G] :

        The computed finset Finset.closureFinset S, as a set, is the subgroup generated by S.

        @[simp]

        The order of the subgroup generated by S, as the cardinality of a computed finset.