Documentation

TauCeti.Algebra.Coalgebra.Comodule.TensorProduct

The tensor product of comodules over a bialgebra #

This file constructs the tensor product of two right comodules over a bialgebra C. If M and N are right C-comodules, the coaction on M ⊗ N is the usual diagonal formula

m ⊗ n ↦ m₀ ⊗ n₀ ⊗ m₁ n₁,

which multiplies the two coefficient factors in C. The file first builds this map (tensorCombine, tensorCoact), then verifies the coassociativity and counit laws and packages them as Comodule.tensor, and finally makes the construction functorial in both arguments (Comodule.Hom.tensorMap).

Both laws come from the same source: the bialgebra axioms say that the comultiplication and the counit of C are algebra homomorphisms, hence commute with the multiplication that tensorCombine performs. That single observation is isolated as lTensor_comp_tensorCombine, and instantiating it at Bialgebra.comulAlgHom and Bialgebra.counitAlgHom supplies the coefficient half of each law; the remaining half is the coefficient-free reassociation bookkeeping in assoc_comp_tensorCombine_rTensor_comp_tensorCombine.

Following Comodule.cofree, Comodule.tensor is not a global instance: an R-module can carry many coactions, so a global instance on a tensor product would make Comodule resolution non-confluent.

Main declarations #

References #

This is the standard tensor product of right comodules over a bialgebra; see Sweedler, Hopf Algebras, Chapter 2. It advances the Layer 1 target "Comodules over a coalgebra/Hopf algebra ... tensor products, duals, the regular representation" of the Tau Ceti reductive-groups roadmap, ReductiveGroups/README.md in TauCetiRoadmap, which asks for the rigid monoidal category of finite-dimensional comodules; the tensor product built here is its underlying bifunctor.

noncomputable def TauCeti.Comodule.tensorCombine {R : Type u} {C : Type v} {M : Type w} {N : Type x} [CommSemiring R] [NonUnitalNonAssocSemiring C] [Module R C] [SMulCommClass R C C] [IsScalarTower R C C] [AddCommMonoid M] [Module R M] [AddCommMonoid N] [Module R N] :

Combine two coacted tensor factors by shuffling the middle factors together and multiplying the two C-components.

On pure tensors it sends (m ⊗ c) ⊗ (n ⊗ d) to (m ⊗ n) ⊗ cd.

Equations
Instances For
    @[simp]
    theorem TauCeti.Comodule.tensorCombine_tmul_tmul {R : Type u} {C : Type v} {M : Type w} {N : Type x} [CommSemiring R] [NonUnitalNonAssocSemiring C] [Module R C] [SMulCommClass R C C] [IsScalarTower R C C] [AddCommMonoid M] [Module R M] [AddCommMonoid N] [Module R N] (m : M) (c : C) (n : N) (d : C) :

    tensorCombine sends (m ⊗ c) ⊗ (n ⊗ d) to (m ⊗ n) ⊗ cd.

    The combining map is natural in the two comodule carriers.

    noncomputable def TauCeti.Comodule.tensorCoact {R : Type u} {C : Type v} {M : Type w} {N : Type x} [CommSemiring R] [Semiring C] [Bialgebra R C] [AddCommMonoid M] [Module R M] [Comodule R C M] [AddCommMonoid N] [Module R N] [Comodule R C N] :

    The diagonal coaction map on the tensor product of two right comodules over a bialgebra.

    The later full tensor-product comodule structure uses this map as its coaction.

    Equations
    Instances For
      @[simp]
      theorem TauCeti.Comodule.tensorCoact_tmul {R : Type u} {C : Type v} {M : Type w} {N : Type x} [CommSemiring R] [Semiring C] [Bialgebra R C] [AddCommMonoid M] [Module R M] [Comodule R C M] [AddCommMonoid N] [Module R N] [Comodule R C N] (m : M) (n : N) :

      The tensor-product coaction, before expanding the two component coactions.

      The diagonal tensor coaction is natural under tensor products of comodule morphisms.

      An R-algebra homomorphism φ : C →ₐ[R] D may be pushed through the combining map: tensorCombine multiplies the two coefficient factors, and φ is multiplicative.

      Taking φ to be the comultiplication and the counit of a bialgebra gives precisely the two compatibilities that make tensorCoact a coaction.

      Combining twice and then reassociating agrees with reassociating each factor first and then combining once over C ⊗[R] C.

      This is pure bookkeeping about tensorCombine — it uses no coalgebra structure — and it is what turns the coassociativity of the two factors into the coassociativity of tensorCoact.

      The diagonal coaction on M ⊗[R] N is coassociative.

      Coassociativity of the two factors puts the doubly coacted vectors into the form m₀ ⊗ Δ(m₁), and the comultiplication of C is an algebra homomorphism, so it commutes with the multiplication that tensorCombine performs on the coefficients.

      The diagonal coaction on M ⊗[R] N satisfies the counit law: the counit of C is an algebra homomorphism, so it turns the product of the two coefficients into the product of their counits, which is 1.

      @[implicit_reducible]
      noncomputable def TauCeti.Comodule.tensor (R : Type u) (C : Type v) (M : Type w) (N : Type x) [CommSemiring R] [Semiring C] [Bialgebra R C] [AddCommMonoid M] [Module R M] [Comodule R C M] [AddCommMonoid N] [Module R N] [Comodule R C N] :

      The tensor product of two right C-comodules over a bialgebra, with the diagonal coaction m ⊗ n ↦ (m₀ ⊗ n₀) ⊗ m₁ n₁.

      Following Comodule.cofree, this is deliberately not a global instance: an R-module can carry many coactions, so a global instance on a tensor product would make Comodule resolution non-confluent. Select it explicitly, or register it as a local instance.

      Equations
      Instances For
        @[simp]
        theorem TauCeti.Comodule.tensor_coact {R : Type u} {C : Type v} {M : Type w} {N : Type x} [CommSemiring R] [Semiring C] [Bialgebra R C] [AddCommMonoid M] [Module R M] [Comodule R C M] [AddCommMonoid N] [Module R N] [Comodule R C N] :

        The coaction of the tensor-product comodule is the diagonal coaction tensorCoact.

        noncomputable def TauCeti.Comodule.Hom.tensorMap {R : Type u} {C : Type v} {M : Type w} {N : Type x} [CommSemiring R] [Semiring C] [Bialgebra R C] [AddCommMonoid M] [Module R M] [Comodule R C M] [AddCommMonoid N] [Module R N] [Comodule R C N] {M' : Type y} {N' : Type z} [AddCommMonoid M'] [Module R M'] [Comodule R C M'] [AddCommMonoid N'] [Module R N'] [Comodule R C N'] (f : Hom R C M M') (g : Hom R C N N') :
        Hom R C (TensorProduct R M N) (TensorProduct R M' N')

        The tensor product of two comodule morphisms, as a morphism of tensor-product comodules.

        Both source and target carry the diagonal coaction of Comodule.tensor; the required compatibility is Comodule.tensorCoact_natural.

        Equations
        Instances For
          @[simp]
          theorem TauCeti.Comodule.Hom.tensorMap_toLinearMap {R : Type u} {C : Type v} {M : Type w} {N : Type x} [CommSemiring R] [Semiring C] [Bialgebra R C] [AddCommMonoid M] [Module R M] [Comodule R C M] [AddCommMonoid N] [Module R N] [Comodule R C N] {M' : Type y} {N' : Type z} [AddCommMonoid M'] [Module R M'] [Comodule R C M'] [AddCommMonoid N'] [Module R N'] [Comodule R C N'] (f : Hom R C M M') (g : Hom R C N N') :

          The underlying linear map of tensorMap f g is the tensor product of the two underlying linear maps.

          @[simp]
          theorem TauCeti.Comodule.Hom.tensorMap_apply {R : Type u} {C : Type v} {M : Type w} {N : Type x} [CommSemiring R] [Semiring C] [Bialgebra R C] [AddCommMonoid M] [Module R M] [Comodule R C M] [AddCommMonoid N] [Module R N] [Comodule R C N] {M' : Type y} {N' : Type z} [AddCommMonoid M'] [Module R M'] [Comodule R C M'] [AddCommMonoid N'] [Module R N'] [Comodule R C N'] (f : Hom R C M M') (g : Hom R C N N') (x : TensorProduct R M N) :

          tensorMap f g acts as f ⊗ g.

          @[simp]
          theorem TauCeti.Comodule.Hom.tensorMap_tmul {R : Type u} {C : Type v} {M : Type w} {N : Type x} [CommSemiring R] [Semiring C] [Bialgebra R C] [AddCommMonoid M] [Module R M] [Comodule R C M] [AddCommMonoid N] [Module R N] [Comodule R C N] {M' : Type y} {N' : Type z} [AddCommMonoid M'] [Module R M'] [Comodule R C M'] [AddCommMonoid N'] [Module R N'] [Comodule R C N'] (f : Hom R C M M') (g : Hom R C N N') (m : M) (n : N) :
          (f.tensorMap g) (m ⊗ₜ[R] n) = f m ⊗ₜ[R] g n

          tensorMap acts on a simple tensor as the pair of component morphisms.

          theorem TauCeti.Comodule.Hom.tensorMap_id {R : Type u} {C : Type v} {M : Type w} {N : Type x} [CommSemiring R] [Semiring C] [Bialgebra R C] [AddCommMonoid M] [Module R M] [Comodule R C M] [AddCommMonoid N] [Module R N] [Comodule R C N] :
          (id R C M).tensorMap (id R C N) = id R C (TensorProduct R M N)

          The tensor product of two identity morphisms is the identity morphism.

          This is not a simp lemma: its left-hand side is not in simp-normal form, because the @[simp] lemma ComoduleCat.ofHom_id rewrites each Comodule.Hom.id R C _ to the categorical identity 𝟙 (ComoduleCat.of R C _). This fires even though no ComoduleCat.ofHom appears syntactically in the left-hand side: ofHom is a reducible abbrev for the identity coercion (a categorical morphism of R C M ⟶ of R C N just is a Comodule.Hom R C M N), so simp unifies ofHom_id's left-hand side ofHom (Comodule.Hom.id R C _) with a bare Comodule.Hom.id R C _. Tagging this lemma @[simp] therefore fails the simpNF linter. (Contrast cofreeMap_id, whose left-hand side cofreeMap LinearMap.id carries no bare Comodule.Hom.id and so stays normal.)

          @[simp]
          theorem TauCeti.Comodule.Hom.tensorMap_comp {R : Type u} {C : Type v} {M : Type w} {N : Type x} [CommSemiring R] [Semiring C] [Bialgebra R C] [AddCommMonoid M] [Module R M] [Comodule R C M] [AddCommMonoid N] [Module R N] [Comodule R C N] {M' : Type y} {N' : Type z} [AddCommMonoid M'] [Module R M'] [Comodule R C M'] [AddCommMonoid N'] [Module R N'] [Comodule R C N'] {M'' : Type u_1} {N'' : Type u_2} [AddCommMonoid M''] [Module R M''] [Comodule R C M''] [AddCommMonoid N''] [Module R N''] [Comodule R C N''] (f : Hom R C M M') (f' : Hom R C M' M'') (g : Hom R C N N') (g' : Hom R C N' N'') :
          (f'.comp f).tensorMap (g'.comp g) = (f'.tensorMap g').comp (f.tensorMap g)

          The tensor product of morphisms is compatible with composition.