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).

Coefficient combination is natural in both carrier modules and respects the associator and unitors. Associativity needs only an associative coefficient multiplication, while the unitor laws need a multiplicative identity. For commutative coefficients it also respects the tensor symmetry. These compatibilities give the tensor product its monoidal structure.

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. The tensor product is the underlying bifunctor of the monoidal category of comodules.

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.

    Combining three coacted factors is compatible with reassociation. The two sides multiply the coefficient factors as (c * d) * e and c * (d * e), respectively.

    The inverse associator is compatible with combining three coacted factors.

    Combining the trivial coefficient 1 on the left and applying the left tensor unitor scales a coacted vector by the scalar in the trivial factor.

    Combining the trivial coefficient 1 on the left agrees with applying the inverse left tensor unitor to the carrier factor.

    Combining the trivial coefficient 1 on the right and applying the right tensor unitor scales a coacted vector by the scalar in the trivial factor.

    Combining the trivial coefficient 1 on the right agrees with applying the inverse right tensor unitor to the carrier factor.

    Swapping two coacted factors commutes with combining their coefficients when the coefficient algebra is commutative.

    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 two coefficient columns and then commuting the carrier past the coefficients agrees with first commuting each column and then applying scalar-extension distributivity.

      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.

      Applying the counit to the diagonal coaction recovers the original tensor with coefficient 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.