Documentation

Mathlib.CategoryTheory.Action

Actions as functors and as categories #

From a multiplicative action M ↻ X, we can construct a functor from M to the category of types, mapping the single object of M to X and an element m : M to map X → X given by multiplication by m. This functor induces a category structure on X -- a special case of the category of elements. A morphism x ⟶ y in this category is simply a scalar m : M such that m • x = y. In the case where M is a group, this category is a groupoid -- the action groupoid.

A multiplicative action M ↻ X viewed as a functor mapping the single object of M to X and an element m : M to the map X → X given by multiplication by m.

Equations
    Instances For
      @[simp]
      theorem CategoryTheory.actionAsFunctor_map (M : Type u_1) [Monoid M] (X : Type u) [MulAction M X] {X✝ Y✝ : SingleObj M} (x1✝ : X✝ Y✝) (x2✝ : X) :
      (actionAsFunctor M X).map x1✝ x2✝ = x1✝ x2✝
      @[simp]
      theorem CategoryTheory.actionAsFunctor_obj (M : Type u_1) [Monoid M] (X : Type u) [MulAction M X] (x✝ : SingleObj M) :
      (actionAsFunctor M X).obj x✝ = X
      def CategoryTheory.ActionCategory (M : Type u_1) [Monoid M] (X : Type u) [MulAction M X] :

      A multiplicative action M ↻ X induces a category structure on X, where a morphism from x to y is a scalar taking x to y. Due to implementation details, the object type of this category is not equal to X, but is in bijection with X.

      Equations
        Instances For

          The projection from the action category to the monoid, mapping a morphism to its label.

          Equations
            Instances For
              @[simp]
              theorem CategoryTheory.ActionCategory.π_map (M : Type u_1) [Monoid M] (X : Type u) [MulAction M X] (p q : ActionCategory M X) (f : p q) :
              (π M X).map f = f
              @[simp]
              theorem CategoryTheory.ActionCategory.π_obj (M : Type u_1) [Monoid M] (X : Type u) [MulAction M X] (p : ActionCategory M X) :
              def CategoryTheory.ActionCategory.back {M : Type u_1} [Monoid M] {X : Type u} [MulAction M X] :
              ActionCategory M XX

              The canonical map ActionCategory M X → X. It is given by fun x => x.snd, but has a more explicit type.

              Equations
                Instances For
                  Equations
                    @[simp]
                    @[simp]
                    theorem CategoryTheory.ActionCategory.back_coe {M : Type u_1} [Monoid M] {X : Type u} [MulAction M X] (x : ActionCategory M X) :

                    An object of the action category given by M ↻ X corresponds to an element of X.

                    Equations
                      Instances For
                        theorem CategoryTheory.ActionCategory.hom_as_subtype (M : Type u_1) [Monoid M] (X : Type u) [MulAction M X] (p q : ActionCategory M X) :
                        (p q) = { m : M // m p.back = q.back }

                        The stabilizer of a point is isomorphic to the endomorphism monoid at the corresponding point. In fact they are definitionally equivalent.

                        Equations
                          Instances For
                            @[simp]
                            @[simp]
                            @[simp]
                            theorem CategoryTheory.ActionCategory.id_val {M : Type u_1} [Monoid M] {X : Type u} [MulAction M X] (x : ActionCategory M X) :
                            @[simp]
                            theorem CategoryTheory.ActionCategory.comp_val {M : Type u_1} [Monoid M] {X : Type u} [MulAction M X] {x y z : ActionCategory M X} (f : x y) (g : y z) :
                            (CategoryStruct.comp f g) = g * f
                            def CategoryTheory.ActionCategory.endMulEquivSubgroup {G : Type u_2} [Group G] (H : Subgroup G) :
                            End ((objEquiv G (G H)) 1) ≃* H

                            Any subgroup of G is a vertex group in its action groupoid.

                            Equations
                              Instances For
                                def CategoryTheory.ActionCategory.homOfPair {X : Type u} {G : Type u_2} [Group G] [MulAction G X] (t : X) (g : G) :

                                A target vertex t and a scalar g determine a morphism in the action groupoid.

                                Equations
                                  Instances For
                                    @[simp]
                                    theorem CategoryTheory.ActionCategory.homOfPair.val {X : Type u} {G : Type u_2} [Group G] [MulAction G X] (t : X) (g : G) :
                                    (homOfPair t g) = g
                                    def CategoryTheory.ActionCategory.cases {X : Type u} {G : Type u_2} [Group G] [MulAction G X] {P : a b : ActionCategory G X⦄ → (a b) → Sort u_3} (hyp : (t : X) → (g : G) → P (homOfPair t g)) a b : ActionCategory G X (f : a b) :
                                    P f

                                    Any morphism in the action groupoid is given by some pair.

                                    Equations
                                      Instances For
                                        theorem CategoryTheory.ActionCategory.cases' {X : Type u} {G : Type u_2} [Group G] [MulAction G X] a' b' : ActionCategory G X (f : a' b') :
                                        ∃ (a : X) (b : X) (g : G) (ha : a' = (), a) (hb : b' = (), b) (hg : a = g⁻¹ b), f = CategoryStruct.comp (eqToHom ) (CategoryStruct.comp (homOfPair b g) (eqToHom ))
                                        def CategoryTheory.ActionCategory.curry {X : Type u} {G : Type u_2} [Group G] [MulAction G X] {H : Type u_3} [Group H] (F : Functor (ActionCategory G X) (SingleObj H)) :
                                        G →* (XH) ⋊[mulAutArrow] G

                                        Given G acting on X, a functor from the corresponding action groupoid to a group H can be curried to a group homomorphism G →* (X → H) ⋊ G.

                                        Equations
                                          Instances For
                                            @[simp]
                                            theorem CategoryTheory.ActionCategory.curry_apply_right {X : Type u} {G : Type u_2} [Group G] [MulAction G X] {H : Type u_3} [Group H] (F : Functor (ActionCategory G X) (SingleObj H)) (g : G) :
                                            ((curry F) g).right = g
                                            @[simp]
                                            theorem CategoryTheory.ActionCategory.curry_apply_left {X : Type u} {G : Type u_2} [Group G] [MulAction G X] {H : Type u_3} [Group H] (F : Functor (ActionCategory G X) (SingleObj H)) (g : G) (b : X) :
                                            ((curry F) g).left b = F.map (homOfPair b g)
                                            def CategoryTheory.ActionCategory.uncurry {X : Type u} {G : Type u_2} [Group G] [MulAction G X] {H : Type u_3} [Group H] (F : G →* (XH) ⋊[mulAutArrow] G) (sane : ∀ (g : G), (F g).right = g) :

                                            Given G acting on X, a group homomorphism φ : G →* (X → H) ⋊ G can be uncurried to a functor from the action groupoid to H, provided that φ g = (_, g) for all g.

                                            Equations
                                              Instances For
                                                @[simp]
                                                theorem CategoryTheory.ActionCategory.uncurry_map {X : Type u} {G : Type u_2} [Group G] [MulAction G X] {H : Type u_3} [Group H] (F : G →* (XH) ⋊[mulAutArrow] G) (sane : ∀ (g : G), (F g).right = g) {x✝ b : ActionCategory G X} (f : x✝ b) :
                                                (uncurry F sane).map f = (F f).left b.back
                                                @[simp]
                                                theorem CategoryTheory.ActionCategory.uncurry_obj {X : Type u} {G : Type u_2} [Group G] [MulAction G X] {H : Type u_3} [Group H] (F : G →* (XH) ⋊[mulAutArrow] G) (sane : ∀ (g : G), (F g).right = g) (x✝ : ActionCategory G X) :
                                                (uncurry F sane).obj x✝ = ()