Documentation

TauCeti.Algebra.Category.ModuleCat.Twist

Twisting modules by ring automorphisms #

Let a monoid H act on a ring A by ring automorphisms, through a monoid homomorphism a : H →* RingAut A. Twisting an A-module M by h : H means restricting its scalars along (a h)⁻¹: the twisted module T_h M has the same underlying abelian group as M, with x acting as (a h)⁻¹ x acts on M. A morphism of modules is the same map between the twisted modules. Since (a (g * h))⁻¹ = (a h)⁻¹ ∘ (a g)⁻¹, twisting by g * h is twisting by h and then by g, so that T_(g * h) = T_g ∘ T_h.

This file assembles these twists into a left action of Discrete H on ModuleCat A, in the sense of Mathlib's MonoidalLeftAction, that is, a coherent categorical action of H:

Through MonoidalLeftAction.pseudofunctor, the action is a pseudofunctor out of the one-object bicategory of H whose unit and composition comparisons are those of restriction of scalars. For a monoid G acting on A by ring automorphisms and on a type X, TauCeti.actionCategoryTwist X a is this pseudofunctor composed with the label functor ActionCategory.π of the action category G ⋉ X, so that an arrow labelled g acts by restricting scalars along (a g)⁻¹.

Implementation notes #

The action is built directly from ModuleCat.restrictScalars and its comparison isomorphisms, rather than by composing Mathlib's RingCat.moduleCatRestrictScalarsPseudofunctor with a functor out of SingleObj H: along that route the action would live on a Cat object and its associator would pick up the composition comparisons of the functor SingleObj H ⥤ RingCatᵒᵖ, so that it would not be ModuleCat.restrictScalarsComp'App on the nose. The morphisms of Discrete H act by identity maps, rather than by eqToHom, so that every coherence condition is an equality of identity maps.

References #

Twisting categories of modules over completed enveloping algebras by automorphisms is the categorical action of loop groups in

@[instance_reducible]

The left action of a monoid H on ModuleCat A by twisting along a homomorphism a : H →* RingAut A: an element h acts by restricting scalars along (a h)⁻¹. The associator (g * h) ⊙ₗ M ≅ g ⊙ₗ h ⊙ₗ M and the unitor 1 ⊙ₗ M ≅ M are the comparison isomorphisms of restriction of scalars, with identity underlying linear maps.

Instances For
    @[simp]

    The twist of a morphism of modules is the same map of the underlying abelian groups.

    @[simp]

    The action of a morphism of Discrete H on a twisted module is the identity map of the underlying abelian group.

    @[simp]

    The associator of the twisting action is the identity map of the underlying abelian group.

    @[simp]

    The inverse of the associator of the twisting action is the identity map of the underlying abelian group.

    @[simp]

    The unitor of the twisting action is the identity map of the underlying abelian group.

    @[simp]

    The inverse of the unitor of the twisting action is the identity map of the underlying abelian group.

    The product comparison T_(g * h) ≅ T_h ⋙ T_g of the twisting action, as a natural isomorphism of action functors, is ModuleCat.restrictScalarsComp' for the factorization (a (g * h))⁻¹ = (a h)⁻¹ ∘ (a g)⁻¹.

    The twisting action functors are equivalences, since they restrict scalars along ring isomorphisms.

    If A is an R-algebra and H acts by R-algebra automorphisms, the twisting action functors are R-linear.

    An element of an A-module X, viewed in its twist c ⊙ₗ X. The twist has the same underlying abelian group, so this is the identity; it records the twisted type, so that rewriting lemmas about elements of twists stay type-correct.

    Instances For
      @[simp]
      theorem MonoidHom.twistElem_add {H : Type u_1} [Monoid H] {A : Type u} [Ring A] (a : H →* RingAut A) (c : CategoryTheory.Discrete H) {X : ModuleCat A} (x y : ↑X) :
      a.twistElem c (x + y) = a.twistElem c x + a.twistElem c y

      Viewing elements in a twist is additive.

      theorem MonoidHom.exists_twistElem_eq {H : Type u_1} [Monoid H] {A : Type u} [Ring A] (a : H →* RingAut A) (c : CategoryTheory.Discrete H) {X : ModuleCat A} (x : ↑(CategoryTheory.MonoidalCategory.MonoidalLeftActionStruct.actionObj c X)) :
      ∃ (y : ↑X), a.twistElem c y = x

      Every element of a twist is a twisted element.

      theorem MonoidHom.smul_twistElem {H : Type u_1} [Monoid H] {A : Type u} [Ring A] (a : H →* RingAut A) (c : CategoryTheory.Discrete H) {X : ModuleCat A} (t : A) (x : ↑X) :
      t • a.twistElem c x = a.twistElem c ((RingEquiv.symm (a c.as)) t • x)

      An element t acts on the twist by c as (a c)⁻¹ t acts on the module.

      @[simp]

      The twist of a morphism acts on twisted elements as the morphism.

      @[simp]

      The associator of the twisting action is the identity on twisted elements.

      @[simp]

      The inverse of the associator of the twisting action is the identity on twisted elements.

      @[simp]

      The unitor of the twisting action is the identity on twisted elements.

      The inverse of the unitor of the twisting action is the identity on twisted elements.

      def MonoidHom.twistLinearEquiv {H : Type u_1} [Monoid H] {A : Type u} [Ring A] (a : H →* RingAut A) (R : Type u_2) [CommSemiring R] [Algebra R A] (ha : ∀ (h : H) (r : R), (a h) ((algebraMap R A) r) = (algebraMap R A) r) (c : CategoryTheory.Discrete H) (M : ModuleCat A) :

      If A is an R-algebra and H acts by R-algebra automorphisms, an A-module and its twist are the same R-module.

      Instances For
        @[simp]
        theorem MonoidHom.twistLinearEquiv_apply {H : Type u_1} [Monoid H] {A : Type u} [Ring A] (a : H →* RingAut A) (R : Type u_2) [CommSemiring R] [Algebra R A] (ha : ∀ (h : H) (r : R), (a h) ((algebraMap R A) r) = (algebraMap R A) r) (c : CategoryTheory.Discrete H) {M : ModuleCat A} (x : ↑M) :
        (a.twistLinearEquiv R ha c M) x = a.twistElem c x
        @[simp]
        theorem MonoidHom.twistLinearEquiv_symm_apply {H : Type u_1} [Monoid H] {A : Type u} [Ring A] (a : H →* RingAut A) (R : Type u_2) [CommSemiring R] [Algebra R A] (ha : ∀ (h : H) (r : R), (a h) ((algebraMap R A) r) = (algebraMap R A) r) (c : CategoryTheory.Discrete H) {M : ModuleCat A} (x : ↑M) :
        (a.twistLinearEquiv R ha c M).symm (a.twistElem c x) = x
        theorem MonoidHom.twistElem_smul {H : Type u_1} [Monoid H] {A : Type u} [Ring A] (a : H →* RingAut A) {R : Type u_2} [CommSemiring R] [Algebra R A] (ha : ∀ (h : H) (r : R), (a h) ((algebraMap R A) r) = (algebraMap R A) r) (c : CategoryTheory.Discrete H) {M : ModuleCat A} (r : R) (x : ↑M) :
        a.twistElem c (r • x) = r • a.twistElem c x

        If H acts by R-algebra automorphisms, twisting commutes with the action of R.

        A property of A-modules is stable under the twisting action if and only if it is preserved by restriction of scalars along each (a h)⁻¹.

        When H acts on a topological ring A by homeomorphisms, the twisting action preserves the discrete modules, so it restricts to the full subcategory of discrete A-modules.

        theorem MonoidHom.isStableUnderLeftAction_smoothModules {H : Type u_1} [Monoid H] {A : Type u} [Ring A] (a : H →* RingAut A) {ι : Type u_2} (J : ι → Submodule A A) (hJ : ∀ (h : H) (i : ι), ∃ (i' : ι), J i' ≤ Ideal.comap (RingEquiv.symm (a h)) (J i)) :

        When each twist pulls every left ideal of the family J back to a superset of some member of J, the twisting action preserves the modules that are smooth for J, so it restricts to the full subcategory of smooth modules.

        @[instance_reducible]
        noncomputable def RingHom.leftLinearRestrictScalars {H : Type u_1} [Monoid H] {A : Type u} [Ring A] {B : Type u_2} [Ring B] (f : A →+* B) {a : H →* RingAut A} {b : H →* RingAut B} (hf : ∀ (h : H) (x : A), f ((a h) x) = (b h) (f x)) :

        If a ring homomorphism f : A →+* B intertwines actions a and b of H by ring automorphisms, then restriction of scalars along f is equivariant for the twisting actions. Twisting the restriction of a B-module by h and restricting its twist are both restriction of scalars along f ∘ (a h)⁻¹ = (b h)⁻¹ ∘ f, and the lineators are the identity maps of the underlying abelian group.

        Instances For
          @[simp]
          theorem RingHom.leftLinearRestrictScalars_μₗ_apply {H : Type u_1} [Monoid H] {A : Type u} [Ring A] {B : Type u_2} [Ring B] (f : A →+* B) {a : H →* RingAut A} {b : H →* RingAut B} (hf : ∀ (h : H) (x : A), f ((a h) x) = (b h) (f x)) (c : CategoryTheory.Discrete H) (M : ModuleCat B) (x : ↑M) :

          The lax lineators of RingHom.leftLinearRestrictScalars are identity maps.

          @[simp]
          theorem RingHom.leftLinearRestrictScalars_δₗ_apply {H : Type u_1} [Monoid H] {A : Type u} [Ring A] {B : Type u_2} [Ring B] (f : A →+* B) {a : H →* RingAut A} {b : H →* RingAut B} (hf : ∀ (h : H) (x : A), f ((a h) x) = (b h) (f x)) (c : CategoryTheory.Discrete H) (M : ModuleCat B) (x : ↑M) :

          The oplax lineators of RingHom.leftLinearRestrictScalars are identity maps.

          The twisting action of G on ModuleCat A, as a pseudofunctor out of the action category G ⋉ X (an action groupoid when G is a group): an arrow labelled g acts by restricting scalars along (a g)⁻¹. It is the classifying pseudofunctor of MonoidHom.restrictScalarsMonoidalLeftAction composed with the label functor ActionCategory.π G X.

          Instances For

            The transport functor of actionCategoryTwist X a along an arrow labelled g is restriction of scalars along (a g)⁻¹.

            The composition comparison of actionCategoryTwist X a at f ≫ g, an arrow labelled by the product g.hom * f.hom, is ModuleCat.restrictScalarsComp'App for the factorization (a (g.hom * f.hom))⁻¹ = (a f.hom)⁻¹ ∘ (a g.hom)⁻¹.