Documentation

TauCeti.CategoryTheory.Category.Pointed.Smash.Basic

The smash product of pointed types #

The smash product X ∧ Y of pointed types is the quotient of X × Y collapsing the wedge X × {y₀} ∪ {x₀} × Y to the basepoint. Pointed maps out of it are exactly functions of two variables sending the wedge to the basepoint. With unit S⁰ = PUnit₊ (Option PUnit pointed at none), the smash product makes Pointed a symmetric monoidal category, whose braiding swaps the two factors.

This is the levelwise input for the smash product of pointed simplicial sets, viewed as simplicial objects in Pointed.

Main definitions #

References #

The smash product X ∧ Y of pointed types: the quotient of X × Y collapsing the wedge X × {y₀} ∪ {x₀} × Y to a single point, which is the basepoint.

Instances For
    def Pointed.smash.mk {X Y : Pointed} (x : X.X) (y : Y.X) :
    (X.smash Y).X

    The class of the pair (x, y) in the smash product.

    Instances For
      theorem Pointed.smash.mk_surjective {X Y : Pointed} :
      Function.Surjective fun (p : X.X × Y.X) => mk p.1 p.2
      theorem Pointed.smash.ind {X Y : Pointed} {motive : (X.smash Y).X → Prop} (h : ∀ (x : X.X) (y : Y.X), motive (mk x y)) (a : (X.smash Y).X) :
      motive a

      Induction on the smash product: it suffices to treat the classes of pairs.

      theorem Pointed.smash.mk_eq_mk_iff {X Y : Pointed} {x x' : X.X} {y y' : Y.X} :
      mk x y = mk x' y' ↔ x = x' ∧ y = y' ∨ (x = X.point ∨ y = Y.point) ∧ (x' = X.point ∨ y' = Y.point)

      Two pairs have the same class exactly when they are equal or both lie in the wedge.

      @[simp]
      theorem Pointed.smash.mk_eq_point_iff {X Y : Pointed} {x : X.X} {y : Y.X} :
      mk x y = (X.smash Y).point ↔ x = X.point ∨ y = Y.point

      A pair represents the basepoint exactly when it lies in the wedge.

      @[simp]
      theorem Pointed.smash.mk_point_left {X Y : Pointed} (y : Y.X) :
      mk X.point y = (X.smash Y).point
      @[simp]
      theorem Pointed.smash.mk_point_right {X Y : Pointed} (x : X.X) :
      mk x Y.point = (X.smash Y).point
      def Pointed.smash.lift {X Y Z : Pointed} (f : X.X → Y.X → Z.X) (hl : ∀ (y : Y.X), f X.point y = Z.point) (hr : ∀ (x : X.X), f x Y.point = Z.point) :
      X.smash Y ⟶ Z

      The pointed map out of the smash product induced by a function of two variables sending the wedge to the basepoint.

      Instances For
        @[simp]
        theorem Pointed.smash.lift_mk {X Y Z : Pointed} (f : X.X → Y.X → Z.X) (hl : ∀ (y : Y.X), f X.point y = Z.point) (hr : ∀ (x : X.X), f x Y.point = Z.point) (x : X.X) (y : Y.X) :
        (lift f hl hr).toFun (mk x y) = f x y
        theorem Pointed.smash.hom_ext {X Y Z : Pointed} {f g : X.smash Y ⟶ Z} (h : ∀ (x : X.X) (y : Y.X), f.toFun (mk x y) = g.toFun (mk x y)) :
        f = g

        Pointed maps out of the smash product are determined by their values on pairs.

        theorem Pointed.smash.hom_ext_iff {X Y Z : Pointed} {f g : X.smash Y ⟶ Z} :
        f = g ↔ ∀ (x : X.X) (y : Y.X), f.toFun (mk x y) = g.toFun (mk x y)
        def Pointed.smash.map {X Y X' Y' : Pointed} (f : X ⟶ X') (g : Y ⟶ Y') :
        X.smash Y ⟶ X'.smash Y'

        The smash product of two pointed maps.

        Instances For
          @[simp]
          theorem Pointed.smash.map_mk {X Y X' Y' : Pointed} (f : X ⟶ X') (g : Y ⟶ Y') (x : X.X) (y : Y.X) :
          (map f g).toFun (mk x y) = mk (f.toFun x) (g.toFun y)
          def Pointed.smash.associator (X Y Z : Pointed) :
          (X.smash Y).smash Z ≅ X.smash (Y.smash Z)

          The associativity isomorphism (X ∧ Y) ∧ Z ≅ X ∧ (Y ∧ Z).

          Instances For

            The left unit isomorphism S⁰ ∧ X ≅ X, where S⁰ = PUnit₊.

            Instances For

              The right unit isomorphism X ∧ S⁰ ≅ X, where S⁰ = PUnit₊.

              Instances For

                The isomorphism X ∧ Y ≅ Y ∧ X swapping the two factors.

                Instances For
                  @[instance_reducible]

                  The smash product, with unit the free pointed type S⁰ = PUnit₊ on one point.

                  theorem Pointed.tensor_ext {X Y Z : Pointed} {f g : CategoryTheory.MonoidalCategoryStruct.tensorObj X Y ⟶ Z} (h : ∀ (x : X.X) (y : Y.X), f.toFun (smash.mk x y) = g.toFun (smash.mk x y)) :
                  f = g

                  Pointed maps out of a tensor product are determined by their values on pairs.

                  theorem Pointed.tensor_ext_iff {X Y Z : Pointed} {f g : CategoryTheory.MonoidalCategoryStruct.tensorObj X Y ⟶ Z} :
                  f = g ↔ ∀ (x : X.X) (y : Y.X), f.toFun (smash.mk x y) = g.toFun (smash.mk x y)
                  theorem Pointed.tensor_ext₃' {X Y Z W : Pointed} {f g : CategoryTheory.MonoidalCategoryStruct.tensorObj (CategoryTheory.MonoidalCategoryStruct.tensorObj X Y) Z ⟶ W} (h : ∀ (x : X.X) (y : Y.X) (z : Z.X), f.toFun (smash.mk (smash.mk x y) z) = g.toFun (smash.mk (smash.mk x y) z)) :
                  f = g

                  Pointed maps out of (X ⊗ Y) ⊗ Z are determined by their values on triples.

                  theorem Pointed.tensor_ext₃ {X Y Z W : Pointed} {f g : CategoryTheory.MonoidalCategoryStruct.tensorObj X (CategoryTheory.MonoidalCategoryStruct.tensorObj Y Z) ⟶ W} (h : ∀ (x : X.X) (y : Y.X) (z : Z.X), f.toFun (smash.mk x (smash.mk y z)) = g.toFun (smash.mk x (smash.mk y z))) :
                  f = g

                  Pointed maps out of X ⊗ (Y ⊗ Z) are determined by their values on triples.

                  @[simp]
                  theorem Pointed.tensorHom_mk {X Y X' Y' : Pointed} (f : X ⟶ X') (g : Y ⟶ Y') (x : X.X) (y : Y.X) :
                  @[simp]
                  theorem Pointed.whiskerLeft_mk {X Y Y' : Pointed} (g : Y ⟶ Y') (x : X.X) (y : Y.X) :
                  @[simp]
                  theorem Pointed.whiskerRight_mk {X Y X' : Pointed} (f : X ⟶ X') (x : X.X) (y : Y.X) :
                  @[simp]
                  @[simp]
                  @[instance_reducible]

                  The smash product makes Pointed a monoidal category.

                  @[instance_reducible]

                  The swap of factors makes the smash product symmetric monoidal.

                  @[simp]
                  theorem Pointed.braiding_hom_mk {X Y : Pointed} (x : X.X) (y : Y.X) :
                  (β_ X Y).hom.toFun (smash.mk x y) = smash.mk y x
                  @[simp]
                  theorem Pointed.braiding_inv_mk {X Y : Pointed} (x : X.X) (y : Y.X) :
                  (β_ X Y).inv.toFun (smash.mk y x) = smash.mk x y