Documentation

Mathlib.CategoryTheory.Category.TwoP

The category of two-pointed types #

This defines TwoP, the category of two-pointed types.

References #

structure TwoP :
Type (u + 1)

The category of two-pointed types.

  • X : Type u

    The underlying type of a two-pointed type.

  • toTwoPointing : TwoPointing self.X

    The two points of a bipointed type, bundled together as a pair of distinct elements.

Instances For
    def TwoP.of {X : Type u_3} (toTwoPointing : TwoPointing X) :

    Turns a two-pointing into a two-pointed type.

    Equations
    • TwoP.of toTwoPointing = { X := X, toTwoPointing := toTwoPointing }
    Instances For
      @[simp]
      theorem TwoP.coe_of {X : Type u_3} (toTwoPointing : TwoPointing X) :
      (TwoP.of toTwoPointing).X = X
      def TwoPointing.TwoP {X : Type u_3} (toTwoPointing : TwoPointing X) :

      Alias of TwoP.of.


      Turns a two-pointing into a two-pointed type.

      Equations
      Instances For
        noncomputable def TwoP.toBipointed (X : TwoP) :

        Turns a two-pointed type into a bipointed type, by forgetting that the pointed elements are distinct.

        Equations
        Instances For
          @[simp]
          theorem TwoP.coe_toBipointed (X : TwoP) :
          @[simp]
          theorem TwoP.swap_obj_X (X : TwoP) :
          (TwoP.swap.toPrefunctor.obj X).X = X.X
          @[simp]
          theorem TwoP.swap_map_toFun :
          ∀ {X Y : TwoP} (f : X Y) (a : (TwoP.toBipointed X).X), (TwoP.swap.toPrefunctor.map f).toFun a = f.toFun a
          @[simp]
          theorem TwoP.swap_obj_toTwoPointing (X : TwoP) :
          (TwoP.swap.toPrefunctor.obj X).toTwoPointing = TwoPointing.swap X.toTwoPointing

          Swaps the pointed elements of a two-pointed type. TwoPointing.swap as a functor.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[simp]
            theorem TwoP.swapEquiv_functor_obj_toTwoPointing_toProd (X : TwoP) :
            (TwoP.swapEquiv.functor.toPrefunctor.obj X).toTwoPointing.toProd = (X.toTwoPointing.toProd.2, X.toTwoPointing.toProd.1)
            @[simp]
            theorem TwoP.swapEquiv_inverse_obj_toTwoPointing_toProd (X : TwoP) :
            (TwoP.swapEquiv.inverse.toPrefunctor.obj X).toTwoPointing.toProd = (X.toTwoPointing.toProd.2, X.toTwoPointing.toProd.1)
            @[simp]
            theorem TwoP.swapEquiv_functor_obj_X (X : TwoP) :
            (TwoP.swapEquiv.functor.toPrefunctor.obj X).X = X.X
            @[simp]
            theorem TwoP.swapEquiv_counitIso_hom_app_toFun (X : TwoP) (a : (TwoP.toBipointed ((CategoryTheory.Functor.comp TwoP.swap TwoP.swap).toPrefunctor.obj X)).X) :
            (TwoP.swapEquiv.counitIso.hom.app X).toFun a = a
            @[simp]
            theorem TwoP.swapEquiv_inverse_obj_X (X : TwoP) :
            (TwoP.swapEquiv.inverse.toPrefunctor.obj X).X = X.X
            @[simp]
            theorem TwoP.swapEquiv_inverse_map_toFun :
            ∀ {X Y : TwoP} (f : X Y) (a : (TwoP.toBipointed X).X), (TwoP.swapEquiv.inverse.toPrefunctor.map f).toFun a = f.toFun a
            @[simp]
            theorem TwoP.swapEquiv_unitIso_inv_app_toFun (X : TwoP) :
            ∀ (a : (TwoP.toBipointed ((CategoryTheory.Functor.comp TwoP.swap TwoP.swap).toPrefunctor.obj X)).X), (TwoP.swapEquiv.unitIso.inv.app X).toFun a = (CategoryTheory.CategoryStruct.comp (TwoP.swap.toPrefunctor.map (TwoP.swap.toPrefunctor.map { toFun := id, map_fst := (_ : id (TwoP.toBipointed ((CategoryTheory.Functor.id TwoP).toPrefunctor.obj X)).toProd.1 = id (TwoP.toBipointed ((CategoryTheory.Functor.id TwoP).toPrefunctor.obj X)).toProd.1), map_snd := (_ : id (TwoP.toBipointed ((CategoryTheory.Functor.id TwoP).toPrefunctor.obj X)).toProd.2 = id (TwoP.toBipointed ((CategoryTheory.Functor.id TwoP).toPrefunctor.obj X)).toProd.2) })) (CategoryTheory.CategoryStruct.comp (TwoP.swap.toPrefunctor.map { toFun := id, map_fst := (_ : id (TwoP.toBipointed ((CategoryTheory.Functor.comp TwoP.swap TwoP.swap).toPrefunctor.obj (TwoP.swap.toPrefunctor.obj X))).toProd.1 = id (TwoP.toBipointed ((CategoryTheory.Functor.comp TwoP.swap TwoP.swap).toPrefunctor.obj (TwoP.swap.toPrefunctor.obj X))).toProd.1), map_snd := (_ : id (TwoP.toBipointed ((CategoryTheory.Functor.comp TwoP.swap TwoP.swap).toPrefunctor.obj (TwoP.swap.toPrefunctor.obj X))).toProd.2 = id (TwoP.toBipointed ((CategoryTheory.Functor.comp TwoP.swap TwoP.swap).toPrefunctor.obj (TwoP.swap.toPrefunctor.obj X))).toProd.2) }) { toFun := id, map_fst := (_ : id (TwoP.toBipointed ((CategoryTheory.Functor.comp TwoP.swap TwoP.swap).toPrefunctor.obj X)).toProd.1 = id (TwoP.toBipointed ((CategoryTheory.Functor.comp TwoP.swap TwoP.swap).toPrefunctor.obj X)).toProd.1), map_snd := (_ : id (TwoP.toBipointed ((CategoryTheory.Functor.comp TwoP.swap TwoP.swap).toPrefunctor.obj X)).toProd.2 = id (TwoP.toBipointed ((CategoryTheory.Functor.comp TwoP.swap TwoP.swap).toPrefunctor.obj X)).toProd.2) })).toFun ((CategoryTheory.CategoryStruct.id (TwoP.swap.toPrefunctor.obj (TwoP.swap.toPrefunctor.obj X))).toFun a)
            @[simp]
            theorem TwoP.swapEquiv_counitIso_inv_app_toFun (X : TwoP) (a : (TwoP.toBipointed ((CategoryTheory.Functor.id TwoP).toPrefunctor.obj X)).X) :
            (TwoP.swapEquiv.counitIso.inv.app X).toFun a = a
            @[simp]
            theorem TwoP.swapEquiv_unitIso_hom_app_toFun (X : TwoP) :
            ∀ (a : (TwoP.toBipointed ((CategoryTheory.Functor.id TwoP).toPrefunctor.obj X)).X), (TwoP.swapEquiv.unitIso.hom.app X).toFun a = (CategoryTheory.CategoryStruct.id (TwoP.swap.toPrefunctor.obj (TwoP.swap.toPrefunctor.obj X))).toFun ((CategoryTheory.CategoryStruct.comp { toFun := id, map_fst := (_ : id (TwoP.toBipointed ((CategoryTheory.Functor.id TwoP).toPrefunctor.obj X)).toProd.1 = id (TwoP.toBipointed ((CategoryTheory.Functor.id TwoP).toPrefunctor.obj X)).toProd.1), map_snd := (_ : id (TwoP.toBipointed ((CategoryTheory.Functor.id TwoP).toPrefunctor.obj X)).toProd.2 = id (TwoP.toBipointed ((CategoryTheory.Functor.id TwoP).toPrefunctor.obj X)).toProd.2) } (CategoryTheory.CategoryStruct.comp (TwoP.swap.toPrefunctor.map { toFun := id, map_fst := (_ : id (TwoP.toBipointed ((CategoryTheory.Functor.id TwoP).toPrefunctor.obj (TwoP.swap.toPrefunctor.obj X))).toProd.1 = id (TwoP.toBipointed ((CategoryTheory.Functor.id TwoP).toPrefunctor.obj (TwoP.swap.toPrefunctor.obj X))).toProd.1), map_snd := (_ : id (TwoP.toBipointed ((CategoryTheory.Functor.id TwoP).toPrefunctor.obj (TwoP.swap.toPrefunctor.obj X))).toProd.2 = id (TwoP.toBipointed ((CategoryTheory.Functor.id TwoP).toPrefunctor.obj (TwoP.swap.toPrefunctor.obj X))).toProd.2) }) (TwoP.swap.toPrefunctor.map (TwoP.swap.toPrefunctor.map { toFun := id, map_fst := (_ : id (TwoP.toBipointed ((CategoryTheory.Functor.comp TwoP.swap TwoP.swap).toPrefunctor.obj X)).toProd.1 = id (TwoP.toBipointed ((CategoryTheory.Functor.comp TwoP.swap TwoP.swap).toPrefunctor.obj X)).toProd.1), map_snd := (_ : id (TwoP.toBipointed ((CategoryTheory.Functor.comp TwoP.swap TwoP.swap).toPrefunctor.obj X)).toProd.2 = id (TwoP.toBipointed ((CategoryTheory.Functor.comp TwoP.swap TwoP.swap).toPrefunctor.obj X)).toProd.2) })))).toFun a)
            @[simp]
            theorem TwoP.swapEquiv_functor_map_toFun :
            ∀ {X Y : TwoP} (f : X Y) (a : (TwoP.toBipointed X).X), (TwoP.swapEquiv.functor.toPrefunctor.map f).toFun a = f.toFun a
            noncomputable def TwoP.swapEquiv :

            The equivalence between TwoP and itself induced by Prod.swap both ways.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[simp]
              theorem pointedToTwoPFst_obj_X (X : Pointed) :
              (pointedToTwoPFst.toPrefunctor.obj X).X = Option X.X
              @[simp]
              theorem pointedToTwoPFst_obj_toTwoPointing_toProd (X : Pointed) :
              (pointedToTwoPFst.toPrefunctor.obj X).toTwoPointing.toProd = (some X.point, none)
              @[simp]
              theorem pointedToTwoPFst_map_toFun :
              ∀ {X Y : Pointed} (f : X Y) (a : Option X.X), (pointedToTwoPFst.toPrefunctor.map f).toFun a = Option.map f.toFun a

              The functor from Pointed to TwoP which adds a second point.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                @[simp]
                theorem pointedToTwoPSnd_obj_X (X : Pointed) :
                (pointedToTwoPSnd.toPrefunctor.obj X).X = Option X.X
                @[simp]
                theorem pointedToTwoPSnd_map_toFun :
                ∀ {X Y : Pointed} (f : X Y) (a : Option X.X), (pointedToTwoPSnd.toPrefunctor.map f).toFun a = Option.map f.toFun a
                @[simp]
                theorem pointedToTwoPSnd_obj_toTwoPointing_toProd (X : Pointed) :
                (pointedToTwoPSnd.toPrefunctor.obj X).toTwoPointing.toProd = (none, some X.point)

                The functor from Pointed to TwoP which adds a first point.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For

                  Adding a second point is left adjoint to forgetting the second point.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For

                    Adding a first point is left adjoint to forgetting the first point.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For