Documentation

TauCeti.CategoryTheory.GradedObject.MonObj

Monoid objects in graded objects from homogeneous data #

For a monoidal category C and an additive monoid I, the tensor product of graded objects X ⊗ Y has the coproduct of the X i ⊗ Y j with i + j = n in degree n, and the unit is 𝟙_ C placed in degree 0. A monoid object structure on a graded object X is therefore the same as a family of homogeneous multiplications X i ⊗ X j ⟶ X (i + j) together with a unit 𝟙_ C ⟶ X 0, subject to the graded associativity and unit laws. This file proves the introduction direction of that description: it assembles such homogeneous data into a monoid object, a commutative monoid object when the homogeneous multiplications commute, and recognizes morphisms of monoid objects by their homogeneous components. In the other direction, it extracts the homogeneous unit and multiplications, together with their laws, from a monoid object in graded objects, and their graded commutativity from a commutative one. This is how graded algebras such as symmetric algebras, which are naturally described degree by degree, are given and used as monoid objects in graded objects.

Homogeneous data can be transported along a lax monoidal functor F : C ⥤ D: given identifications e n : Y n ≅ F.obj (X n), the multiplications Y i ⊗ Y j ⟶ F.obj (X i) ⊗ F.obj (X j) ⟶ F.obj (X i ⊗ X j) ⟶ F.obj (X (i + j)) ⟶ Y (i + j) and the unit 𝟙_ D ⟶ F.obj (𝟙_ C) ⟶ F.obj (X 0) ⟶ Y 0 satisfy the graded laws whenever the original data do, and the graded commutativity law too when F is lax braided. This is how a graded algebra described degree by degree on presheaves, such as a sectionwise symmetric algebra, passes to sheaves along sheafification.

Main declarations #

noncomputable def CategoryTheory.GradedObject.Monoidal.mulOfHomogeneous {I : Type u_1} {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [AddMonoid I] (X : GradedObject I C) [X.HasTensor X] (mul : (i j : I) → MonoidalCategoryStruct.tensorObj (X i) (X j) ⟶ X (i + j)) :

The morphism X ⊗ X ⟶ X of graded objects whose restriction to the summand X i ⊗ X j of degree i + j is the homogeneous multiplication mul i j.

Instances For
    @[simp]
    theorem CategoryTheory.GradedObject.Monoidal.ιTensorObj_mulOfHomogeneous {I : Type u_1} {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [AddMonoid I] (X : GradedObject I C) [X.HasTensor X] (mul : (i j : I) → MonoidalCategoryStruct.tensorObj (X i) (X j) ⟶ X (i + j)) (i j n : I) (h : i + j = n) :

    On the summand X i ⊗ X j of degree n = i + j, the assembled multiplication is the homogeneous multiplication followed by the transport along i + j = n.

    @[simp]
    theorem CategoryTheory.GradedObject.Monoidal.ιTensorObj_mulOfHomogeneous_assoc {I : Type u_1} {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [AddMonoid I] (X : GradedObject I C) [X.HasTensor X] (mul : (i j : I) → MonoidalCategoryStruct.tensorObj (X i) (X j) ⟶ X (i + j)) (i j n : I) (h : i + j = n) {Z : C} (h✝ : X n ⟶ Z) :

    On the summand X i ⊗ X j of degree n = i + j, the assembled multiplication is the homogeneous multiplication followed by the transport along i + j = n.

    Two morphisms out of the tensor unit of graded objects agree as soon as they agree in degree zero, since the unit is initial in every other degree.

    The morphism 𝟙_ ⟶ X of graded objects given in degree zero by one : 𝟙_ C ⟶ X 0; in every other degree the tensor unit is initial.

    Instances For
      @[simp]

      In degree zero, the unit determined by one is one, up to the identification of the degree-zero part of the tensor unit with 𝟙_ C.

      theorem CategoryTheory.GradedObject.isMonHom_of_homogeneous {I : Type u_1} {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [AddMonoid I] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [DecidableEq I] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] {X Y : GradedObject I C} [MonObj X] [MonObj Y] (f : X ⟶ Y) (one_f : CategoryStruct.comp (MonObj.one 0) (f 0) = MonObj.one 0) (mul_f : ∀ (i j : I), CategoryStruct.comp (Monoidal.ιTensorObj X X i j (i + j) ⋯) (CategoryStruct.comp (MonObj.mul (i + j)) (f (i + j))) = CategoryStruct.comp (MonoidalCategoryStruct.tensorHom (f i) (f j)) (CategoryStruct.comp (Monoidal.ιTensorObj Y Y i j (i + j) ⋯) (MonObj.mul (i + j)))) :

      A morphism of graded objects between monoid objects is a morphism of monoid objects as soon as it preserves the unit in degree zero and commutes with multiplication on every pair of homogeneous components.

      @[reducible, inline]
      noncomputable abbrev CategoryTheory.GradedObject.monObjOfHomogeneous {I : Type u_1} {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [AddMonoid I] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [DecidableEq I] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] (X : GradedObject I C) (one : MonoidalCategoryStruct.tensorUnit C ⟶ X 0) (mul : (i j : I) → MonoidalCategoryStruct.tensorObj (X i) (X j) ⟶ X (i + j)) (one_mul : ∀ (n : I), CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight one (X n)) (mul 0 n) = CategoryStruct.comp (MonoidalCategoryStruct.leftUnitor (X n)).hom (eqToHom ⋯)) (mul_one : ∀ (n : I), CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft (X n) one) (mul n 0) = CategoryStruct.comp (MonoidalCategoryStruct.rightUnitor (X n)).hom (eqToHom ⋯)) (mul_assoc : ∀ (i j k : I), CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight (mul i j) (X k)) (mul (i + j) k) = CategoryStruct.comp (MonoidalCategoryStruct.associator (X i) (X j) (X k)).hom (CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft (X i) (mul j k)) (CategoryStruct.comp (mul i (j + k)) (eqToHom ⋯)))) :

      The monoid object structure on a graded object X given by a unit one : 𝟙_ C ⟶ X 0 and homogeneous multiplications mul i j : X i ⊗ X j ⟶ X (i + j) satisfying the graded unit and associativity laws, in which the degrees are identified along 0 + n = n, n + 0 = n and i + (j + k) = i + j + k.

      Instances For
        @[simp]
        theorem CategoryTheory.GradedObject.mul_monObjOfHomogeneous {I : Type u_1} {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [AddMonoid I] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [DecidableEq I] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] (X : GradedObject I C) (one : MonoidalCategoryStruct.tensorUnit C ⟶ X 0) (mul : (i j : I) → MonoidalCategoryStruct.tensorObj (X i) (X j) ⟶ X (i + j)) (one_mul : ∀ (n : I), CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight one (X n)) (mul 0 n) = CategoryStruct.comp (MonoidalCategoryStruct.leftUnitor (X n)).hom (eqToHom ⋯)) (mul_one : ∀ (n : I), CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft (X n) one) (mul n 0) = CategoryStruct.comp (MonoidalCategoryStruct.rightUnitor (X n)).hom (eqToHom ⋯)) (mul_assoc : ∀ (i j k : I), CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight (mul i j) (X k)) (mul (i + j) k) = CategoryStruct.comp (MonoidalCategoryStruct.associator (X i) (X j) (X k)).hom (CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft (X i) (mul j k)) (CategoryStruct.comp (mul i (j + k)) (eqToHom ⋯)))) :

        The multiplication of the monoid object defined by homogeneous data is assembled from the homogeneous multiplications.

        @[simp]
        theorem CategoryTheory.GradedObject.one_monObjOfHomogeneous {I : Type u_1} {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [AddMonoid I] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [DecidableEq I] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] (X : GradedObject I C) (one : MonoidalCategoryStruct.tensorUnit C ⟶ X 0) (mul : (i j : I) → MonoidalCategoryStruct.tensorObj (X i) (X j) ⟶ X (i + j)) (one_mul : ∀ (n : I), CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight one (X n)) (mul 0 n) = CategoryStruct.comp (MonoidalCategoryStruct.leftUnitor (X n)).hom (eqToHom ⋯)) (mul_one : ∀ (n : I), CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft (X n) one) (mul n 0) = CategoryStruct.comp (MonoidalCategoryStruct.rightUnitor (X n)).hom (eqToHom ⋯)) (mul_assoc : ∀ (i j k : I), CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight (mul i j) (X k)) (mul (i + j) k) = CategoryStruct.comp (MonoidalCategoryStruct.associator (X i) (X j) (X k)).hom (CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft (X i) (mul j k)) (CategoryStruct.comp (mul i (j + k)) (eqToHom ⋯)))) :

        The unit of the monoid object defined by homogeneous data is the given unit in degree zero.

        @[simp]
        theorem CategoryTheory.GradedObject.ιTensorObj_braiding_hom {I : Type u_1} {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [AddCommMonoid I] [BraidedCategory C] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [DecidableEq I] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] (X Y : GradedObject I C) (i j n : I) (h : i + j = n) :
        CategoryStruct.comp (Monoidal.ιTensorObj X Y i j n h) ((β_ X Y).hom n) = CategoryStruct.comp (β_ (X i) (Y j)).hom (Monoidal.ιTensorObj Y X j i n ⋯)

        On the summand X i ⊗ Y j, the braiding of graded objects is the braiding of C followed by the inclusion of the summand Y j ⊗ X i.

        @[simp]
        theorem CategoryTheory.GradedObject.ιTensorObj_braiding_hom_assoc {I : Type u_1} {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [AddCommMonoid I] [BraidedCategory C] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [DecidableEq I] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] (X Y : GradedObject I C) (i j n : I) (h : i + j = n) {Z : C} (h✝ : MonoidalCategoryStruct.tensorObj Y X n ⟶ Z) :

        On the summand X i ⊗ Y j, the braiding of graded objects is the braiding of C followed by the inclusion of the summand Y j ⊗ X i.

        theorem CategoryTheory.GradedObject.isCommMonObj_monObjOfHomogeneous {I : Type u_1} {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [AddCommMonoid I] [BraidedCategory C] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [DecidableEq I] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] (X : GradedObject I C) (one : MonoidalCategoryStruct.tensorUnit C ⟶ X 0) (mul : (i j : I) → MonoidalCategoryStruct.tensorObj (X i) (X j) ⟶ X (i + j)) (one_mul : ∀ (n : I), CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight one (X n)) (mul 0 n) = CategoryStruct.comp (MonoidalCategoryStruct.leftUnitor (X n)).hom (eqToHom ⋯)) (mul_one : ∀ (n : I), CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft (X n) one) (mul n 0) = CategoryStruct.comp (MonoidalCategoryStruct.rightUnitor (X n)).hom (eqToHom ⋯)) (mul_assoc : ∀ (i j k : I), CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight (mul i j) (X k)) (mul (i + j) k) = CategoryStruct.comp (MonoidalCategoryStruct.associator (X i) (X j) (X k)).hom (CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft (X i) (mul j k)) (CategoryStruct.comp (mul i (j + k)) (eqToHom ⋯)))) (mul_comm : ∀ (i j : I), CategoryStruct.comp (β_ (X i) (X j)).hom (mul j i) = CategoryStruct.comp (mul i j) (eqToHom ⋯)) :

        The monoid object defined by homogeneous data is commutative when the homogeneous multiplications commute up to the identification of the degrees i + j and j + i.

        theorem CategoryTheory.GradedObject.mul_assoc_of_laxMonoidal {C : Type u_3} {D : Type u_4} [Category.{v_2, u_3} C] [Category.{v_3, u_4} D] [MonoidalCategory C] [MonoidalCategory D] {F : Functor C D} [F.LaxMonoidal] {I : Type u_5} [AddSemigroup I] {X : GradedObject I C} {Y : GradedObject I D} {e : (n : I) → Y n ≅ F.obj (X n)} (mul : (i j : I) → MonoidalCategoryStruct.tensorObj (X i) (X j) ⟶ X (i + j)) (mul' : (i j : I) → MonoidalCategoryStruct.tensorObj (Y i) (Y j) ⟶ Y (i + j)) (hmul : ∀ (i j : I), mul' i j = CategoryStruct.comp (MonoidalCategoryStruct.tensorHom (e i).hom (e j).hom) (CategoryStruct.comp (Functor.LaxMonoidal.μ F (X i) (X j)) (CategoryStruct.comp (F.map (mul i j)) (e (i + j)).inv))) (mul_assoc : ∀ (i j k : I), CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight (mul i j) (X k)) (mul (i + j) k) = CategoryStruct.comp (MonoidalCategoryStruct.associator (X i) (X j) (X k)).hom (CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft (X i) (mul j k)) (CategoryStruct.comp (mul i (j + k)) (eqToHom ⋯)))) (i j k : I) :

        Homogeneous multiplications transported along a lax monoidal functor F and identifications e n : Y n ≅ F.obj (X n) are associative, up to the identification of the degrees i + (j + k) and i + j + k, when the original ones are.

        theorem CategoryTheory.GradedObject.map_mul_of_laxMonoidal {C : Type u_3} {D : Type u_4} [Category.{v_2, u_3} C] [Category.{v_3, u_4} D] [MonoidalCategory C] [MonoidalCategory D] {F : Functor C D} [F.LaxMonoidal] {I : Type u_5} [Add I] {X : GradedObject I C} {Y : GradedObject I D} {e : (n : I) → Y n ≅ F.obj (X n)} (mul : (i j : I) → MonoidalCategoryStruct.tensorObj (X i) (X j) ⟶ X (i + j)) (mul' : (i j : I) → MonoidalCategoryStruct.tensorObj (Y i) (Y j) ⟶ Y (i + j)) (hmul : ∀ (i j : I), mul' i j = CategoryStruct.comp (MonoidalCategoryStruct.tensorHom (e i).hom (e j).hom) (CategoryStruct.comp (Functor.LaxMonoidal.μ F (X i) (X j)) (CategoryStruct.comp (F.map (mul i j)) (e (i + j)).inv))) {X' : GradedObject I C} {Y' : GradedObject I D} {e' : (n : I) → Y' n ≅ F.obj (X' n)} (mulX' : (i j : I) → MonoidalCategoryStruct.tensorObj (X' i) (X' j) ⟶ X' (i + j)) (mulY' : (i j : I) → MonoidalCategoryStruct.tensorObj (Y' i) (Y' j) ⟶ Y' (i + j)) (hmulY' : ∀ (i j : I), mulY' i j = CategoryStruct.comp (MonoidalCategoryStruct.tensorHom (e' i).hom (e' j).hom) (CategoryStruct.comp (Functor.LaxMonoidal.μ F (X' i) (X' j)) (CategoryStruct.comp (F.map (mulX' i j)) (e' (i + j)).inv))) (f : (n : I) → X n ⟶ X' n) (g : (n : I) → Y n ⟶ Y' n) (hg : ∀ (n : I), g n = CategoryStruct.comp (e n).hom (CategoryStruct.comp (F.map (f n)) (e' n).inv)) (map_mul : ∀ (i j : I), CategoryStruct.comp (MonoidalCategoryStruct.tensorHom (f i) (f j)) (mulX' i j) = CategoryStruct.comp (mul i j) (f (i + j))) (i j : I) :
        CategoryStruct.comp (MonoidalCategoryStruct.tensorHom (g i) (g j)) (mulY' i j) = CategoryStruct.comp (mul' i j) (g (i + j))

        Morphisms transported along a lax monoidal functor F and identifications e n : Y n ≅ F.obj (X n), e' n : Y' n ≅ F.obj (X' n) commute with the transported homogeneous multiplications when the original morphisms commute with the original ones.

        theorem CategoryTheory.GradedObject.one_mul_of_laxMonoidal {C : Type u_3} {D : Type u_4} [Category.{v_2, u_3} C] [Category.{v_3, u_4} D] [MonoidalCategory C] [MonoidalCategory D] {F : Functor C D} [F.LaxMonoidal] {I : Type u_5} [AddZeroClass I] {X : GradedObject I C} {Y : GradedObject I D} {e : (n : I) → Y n ≅ F.obj (X n)} (mul : (i j : I) → MonoidalCategoryStruct.tensorObj (X i) (X j) ⟶ X (i + j)) (mul' : (i j : I) → MonoidalCategoryStruct.tensorObj (Y i) (Y j) ⟶ Y (i + j)) (hmul : ∀ (i j : I), mul' i j = CategoryStruct.comp (MonoidalCategoryStruct.tensorHom (e i).hom (e j).hom) (CategoryStruct.comp (Functor.LaxMonoidal.μ F (X i) (X j)) (CategoryStruct.comp (F.map (mul i j)) (e (i + j)).inv))) (one : MonoidalCategoryStruct.tensorUnit C ⟶ X 0) (one' : MonoidalCategoryStruct.tensorUnit D ⟶ Y 0) (hone : one' = CategoryStruct.comp (Functor.LaxMonoidal.ε F) (CategoryStruct.comp (F.map one) (e 0).inv)) (one_mul : ∀ (n : I), CategoryStruct.comp (MonoidalCategoryStruct.whiskerRight one (X n)) (mul 0 n) = CategoryStruct.comp (MonoidalCategoryStruct.leftUnitor (X n)).hom (eqToHom ⋯)) (n : I) :

        A unit and homogeneous multiplications transported along a lax monoidal functor F and identifications e n : Y n ≅ F.obj (X n) satisfy the left unit law, up to the identification of the degrees 0 + n and n, when the original ones do.

        theorem CategoryTheory.GradedObject.mul_one_of_laxMonoidal {C : Type u_3} {D : Type u_4} [Category.{v_2, u_3} C] [Category.{v_3, u_4} D] [MonoidalCategory C] [MonoidalCategory D] {F : Functor C D} [F.LaxMonoidal] {I : Type u_5} [AddZeroClass I] {X : GradedObject I C} {Y : GradedObject I D} {e : (n : I) → Y n ≅ F.obj (X n)} (mul : (i j : I) → MonoidalCategoryStruct.tensorObj (X i) (X j) ⟶ X (i + j)) (mul' : (i j : I) → MonoidalCategoryStruct.tensorObj (Y i) (Y j) ⟶ Y (i + j)) (hmul : ∀ (i j : I), mul' i j = CategoryStruct.comp (MonoidalCategoryStruct.tensorHom (e i).hom (e j).hom) (CategoryStruct.comp (Functor.LaxMonoidal.μ F (X i) (X j)) (CategoryStruct.comp (F.map (mul i j)) (e (i + j)).inv))) (one : MonoidalCategoryStruct.tensorUnit C ⟶ X 0) (one' : MonoidalCategoryStruct.tensorUnit D ⟶ Y 0) (hone : one' = CategoryStruct.comp (Functor.LaxMonoidal.ε F) (CategoryStruct.comp (F.map one) (e 0).inv)) (mul_one : ∀ (n : I), CategoryStruct.comp (MonoidalCategoryStruct.whiskerLeft (X n) one) (mul n 0) = CategoryStruct.comp (MonoidalCategoryStruct.rightUnitor (X n)).hom (eqToHom ⋯)) (n : I) :

        A unit and homogeneous multiplications transported along a lax monoidal functor F and identifications e n : Y n ≅ F.obj (X n) satisfy the right unit law, up to the identification of the degrees n + 0 and n, when the original ones do.

        theorem CategoryTheory.GradedObject.mul_comm_of_laxBraided {I : Type u_3} [AddCommMagma I] {C : Type u_4} {D : Type u_5} [Category.{v_2, u_4} C] [Category.{v_3, u_5} D] [MonoidalCategory C] [MonoidalCategory D] [BraidedCategory C] [BraidedCategory D] {F : Functor C D} [F.LaxBraided] {X : GradedObject I C} {Y : GradedObject I D} {e : (n : I) → Y n ≅ F.obj (X n)} (mul : (i j : I) → MonoidalCategoryStruct.tensorObj (X i) (X j) ⟶ X (i + j)) (mul' : (i j : I) → MonoidalCategoryStruct.tensorObj (Y i) (Y j) ⟶ Y (i + j)) (hmul : ∀ (i j : I), mul' i j = CategoryStruct.comp (MonoidalCategoryStruct.tensorHom (e i).hom (e j).hom) (CategoryStruct.comp (Functor.LaxMonoidal.μ F (X i) (X j)) (CategoryStruct.comp (F.map (mul i j)) (e (i + j)).inv))) (mul_comm : ∀ (i j : I), CategoryStruct.comp (β_ (X i) (X j)).hom (mul j i) = CategoryStruct.comp (mul i j) (eqToHom ⋯)) (i j : I) :
        CategoryStruct.comp (β_ (Y i) (Y j)).hom (mul' j i) = CategoryStruct.comp (mul' i j) (eqToHom ⋯)

        Homogeneous multiplications transported along a lax braided functor F and identifications e n : Y n ≅ F.obj (X n) are commutative, up to the identification of the degrees i + j and j + i, when the original ones are.

        noncomputable def CategoryTheory.Mon.mul {I : Type u_1} [AddMonoid I] [DecidableEq I] {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] (A : Mon (GradedObject I C)) (i j : I) :

        Multiplication of homogeneous components of a monoid object in graded objects.

        Instances For
          theorem CategoryTheory.Mon.mul_eq {I : Type u_1} [AddMonoid I] [DecidableEq I] {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] (A : Mon (GradedObject I C)) (i j : I) :

          Homogeneous multiplication is the restriction of the monoid multiplication to the corresponding summand.

          theorem CategoryTheory.Mon.ιTensorObj_mul {I : Type u_1} [AddMonoid I] [DecidableEq I] {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] (A : Mon (GradedObject I C)) {i j n : I} (h : i + j = n) :

          Multiplication through the summand of degree n = i + j is homogeneous multiplication followed by the transport along i + j = n.

          theorem CategoryTheory.Mon.mul_assoc {I : Type u_1} [AddMonoid I] [DecidableEq I] {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] (A : Mon (GradedObject I C)) (i j k : I) :

          Homogeneous multiplication is associative, up to the transport identifying the degrees i + (j + k) and i + j + k.

          theorem CategoryTheory.Mon.mul_assoc_assoc {I : Type u_1} [AddMonoid I] [DecidableEq I] {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] (A : Mon (GradedObject I C)) (i j k : I) {Z : C} (h : A.X (i + j + k) ⟶ Z) :

          Homogeneous multiplication is associative, up to the transport identifying the degrees i + (j + k) and i + j + k.

          theorem CategoryTheory.Mon.map_mul {I : Type u_1} [AddMonoid I] [DecidableEq I] {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] {A B : Mon (GradedObject I C)} (f : A ⟶ B) (i j : I) :

          A morphism of monoid objects in graded objects commutes with multiplication on every pair of homogeneous components.

          theorem CategoryTheory.Mon.map_mul_assoc {I : Type u_1} [AddMonoid I] [DecidableEq I] {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] {A B : Mon (GradedObject I C)} (f : A ⟶ B) (i j : I) {Z : C} (h : B.X (i + j) ⟶ Z) :

          A morphism of monoid objects in graded objects commutes with multiplication on every pair of homogeneous components.

          noncomputable def CategoryTheory.Mon.one {I : Type u_1} [AddMonoid I] [DecidableEq I] {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] (A : Mon (GradedObject I C)) :

          The unit of a monoid object in graded objects, regarded as a morphism to its degree-zero component.

          Instances For
            theorem CategoryTheory.Mon.one_eq {I : Type u_1} [AddMonoid I] [DecidableEq I] {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] (A : Mon (GradedObject I C)) :

            The homogeneous unit is the degree-zero component of the monoid unit, after identifying the degree-zero part of the graded tensor unit with the tensor unit of the underlying category.

            @[simp]
            theorem CategoryTheory.Mon.one_map {I : Type u_1} [AddMonoid I] [DecidableEq I] {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] {A B : Mon (GradedObject I C)} (f : A ⟶ B) :

            A morphism of monoid objects in graded objects preserves the unit in degree zero.

            theorem CategoryTheory.Mon.one_map_assoc {I : Type u_1} [AddMonoid I] [DecidableEq I] {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] {A B : Mon (GradedObject I C)} (f : A ⟶ B) {Z : C} (h : B.X 0 ⟶ Z) :

            A morphism of monoid objects in graded objects preserves the unit in degree zero.

            @[simp]
            theorem CategoryTheory.Mon.one_mul {I : Type u_1} [AddMonoid I] [DecidableEq I] {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] (A : Mon (GradedObject I C)) (n : I) :

            The unit is a left identity for homogeneous multiplication, up to the transport identifying the degrees 0 + n and n.

            @[simp]
            theorem CategoryTheory.Mon.one_mul_assoc {I : Type u_1} [AddMonoid I] [DecidableEq I] {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] (A : Mon (GradedObject I C)) (n : I) {Z : C} (h : A.X (0 + n) ⟶ Z) :

            The unit is a left identity for homogeneous multiplication, up to the transport identifying the degrees 0 + n and n.

            @[simp]
            theorem CategoryTheory.Mon.mul_one {I : Type u_1} [AddMonoid I] [DecidableEq I] {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] (A : Mon (GradedObject I C)) (n : I) :

            The unit is a right identity for homogeneous multiplication, up to the transport identifying the degrees n + 0 and n.

            @[simp]
            theorem CategoryTheory.Mon.mul_one_assoc {I : Type u_1} [AddMonoid I] [DecidableEq I] {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] (A : Mon (GradedObject I C)) (n : I) {Z : C} (h : A.X (n + 0) ⟶ Z) :

            The unit is a right identity for homogeneous multiplication, up to the transport identifying the degrees n + 0 and n.

            theorem CategoryTheory.Mon.hom_ext_of_epi_mul {C : Type u_1} [Category.{v_1, u_1} C] [MonoidalCategory C] [∀ (X₁ X₂ : GradedObject ℕ C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject ℕ C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject ℕ C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject ℕ C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] {A B : Mon (GradedObject ℕ C)} [Epi A.one] [∀ (n : ℕ), Epi (A.mul n 1)] {f g : A ⟶ B} (h : f.hom 1 = g.hom 1) :
            f = g

            Morphisms out of an ℕ-graded monoid object A generated in degree one are determined by their degree-one components. Here generation in degree one means that the unit 𝟙_ C ⟶ A.X 0 and the multiplications A.X n ⊗ A.X 1 ⟶ A.X (n + 1) are epimorphisms.

            theorem CategoryTheory.CommMon.mul_comm {I : Type u_1} [AddCommMonoid I] [DecidableEq I] {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [BraidedCategory C] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] (A : CommMon (GradedObject I C)) (i j : I) :

            Homogeneous multiplication of a commutative monoid object in graded objects is commutative, up to the transport identifying the degrees i + j and j + i.

            theorem CategoryTheory.CommMon.mul_comm_assoc {I : Type u_1} [AddCommMonoid I] [DecidableEq I] {C : Type u_2} [Category.{v_1, u_2} C] [MonoidalCategory C] [BraidedCategory C] [∀ (X₁ X₂ : GradedObject I C), X₁.HasTensor X₂] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensor₁₂Tensor X₂ X₃] [∀ (X₁ X₂ X₃ : GradedObject I C), X₁.HasGoodTensorTensor₂₃ X₂ X₃] [Limits.HasInitial C] [∀ (X₁ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).obj X₁)] [∀ (X₂ : C), Limits.PreservesColimit (Functor.empty C) ((MonoidalCategory.curriedTensor C).flip.obj X₂)] [∀ (X₁ X₂ X₃ X₄ : GradedObject I C), X₁.HasTensor₄ObjExt X₂ X₃ X₄] (A : CommMon (GradedObject I C)) (i j : I) {Z : C} (h : A.toMon.X (j + i) ⟶ Z) :

            Homogeneous multiplication of a commutative monoid object in graded objects is commutative, up to the transport identifying the degrees i + j and j + i.