# The category of two-pointed types #

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

## References #

• [nLab, coalgebra of the real interval] (https://ncatlab.org/nlab/show/coalgebra+of+the+real+interval)
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 : ) :

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 : ) :
(TwoP.of toTwoPointing).X = X
def TwoPointing.TwoP {X : Type u_3} (toTwoPointing : ) :

Alias of TwoP.of.

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

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

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

Equations
• X.toBipointed = X.toTwoPointing.Bipointed
Instances For
@[simp]
theorem TwoP.coe_toBipointed (X : TwoP) :
X.toBipointed.X = X.X
noncomputable instance TwoP.largeCategory :
Equations
noncomputable instance TwoP.concreteCategory :
Equations
noncomputable instance TwoP.hasForgetToBipointed :
Equations
@[simp]
theorem TwoP.swap_obj_toTwoPointing (X : TwoP) :
(TwoP.swap.obj X).toTwoPointing = X.toTwoPointing.swap
@[simp]
theorem TwoP.swap_obj_X (X : TwoP) :
(TwoP.swap.obj X).X = X.X
@[simp]
theorem TwoP.swap_map_toFun :
∀ {X Y : TwoP} (f : X Y) (a : X.toBipointed.X), (TwoP.swap.map f).toFun a = f.toFun a
noncomputable def TwoP.swap :

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_inverse_map_toFun :
∀ {X Y : TwoP} (f : X Y) (a : X.toBipointed.X), (TwoP.swapEquiv.inverse.map f).toFun a = f.toFun a
@[simp]
theorem TwoP.swapEquiv_functor_obj_toTwoPointing_toProd (X : TwoP) :
(TwoP.swapEquiv.functor.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.obj X).toTwoPointing.toProd = (X.toTwoPointing.toProd.2, X.toTwoPointing.toProd.1)
@[simp]
theorem TwoP.swapEquiv_inverse_obj_X (X : TwoP) :
(TwoP.swapEquiv.inverse.obj X).X = X.X
@[simp]
theorem TwoP.swapEquiv_counitIso_hom_app_toFun (X : TwoP) (a : ((TwoP.swap.comp TwoP.swap).obj X).toBipointed.X) :
(TwoP.swapEquiv.counitIso.hom.app X).toFun a = a
@[simp]
theorem TwoP.swapEquiv_unitIso_inv_app_toFun (X : TwoP) :
∀ (a : ((TwoP.swap.comp TwoP.swap).obj X).toBipointed.X), (TwoP.swapEquiv.unitIso.inv.app X).toFun a = (CategoryTheory.CategoryStruct.comp (TwoP.swap.map (TwoP.swap.map { toFun := id, map_fst := , map_snd := })) (CategoryTheory.CategoryStruct.comp (TwoP.swap.map { toFun := id, map_fst := , map_snd := }) { toFun := id, map_fst := , map_snd := })).toFun ((CategoryTheory.CategoryStruct.id (TwoP.swap.obj (TwoP.swap.obj X))).toFun a)
@[simp]
theorem TwoP.swapEquiv_unitIso_hom_app_toFun (X : TwoP) :
∀ (a : ( X).toBipointed.X), (TwoP.swapEquiv.unitIso.hom.app X).toFun a = (CategoryTheory.CategoryStruct.id (TwoP.swap.obj (TwoP.swap.obj X))).toFun ((CategoryTheory.CategoryStruct.comp { toFun := id, map_fst := , map_snd := } (CategoryTheory.CategoryStruct.comp (TwoP.swap.map { toFun := id, map_fst := , map_snd := }) (TwoP.swap.map (TwoP.swap.map { toFun := id, map_fst := , map_snd := })))).toFun a)
@[simp]
theorem TwoP.swapEquiv_counitIso_inv_app_toFun (X : TwoP) (a : ( X).toBipointed.X) :
(TwoP.swapEquiv.counitIso.inv.app X).toFun a = a
@[simp]
theorem TwoP.swapEquiv_functor_obj_X (X : TwoP) :
(TwoP.swapEquiv.functor.obj X).X = X.X
@[simp]
theorem TwoP.swapEquiv_functor_map_toFun :
∀ {X Y : TwoP} (f : X Y) (a : X.toBipointed.X), (TwoP.swapEquiv.functor.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]
@[simp]
@[simp]
@[simp]
theorem pointedToTwoPFst_obj_toTwoPointing_toProd (X : Pointed) :
(pointedToTwoPFst.obj X).toTwoPointing.toProd = (some X.point, none)
@[simp]
theorem pointedToTwoPFst_map_toFun :
∀ {X Y : Pointed} (f : X Y) (a : Option X.X), (pointedToTwoPFst.map f).toFun a = Option.map f.toFun a
noncomputable def pointedToTwoPFst :

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]
@[simp]
theorem pointedToTwoPSnd_obj_toTwoPointing_toProd (X : Pointed) :
(pointedToTwoPSnd.obj X).toTwoPointing.toProd = (none, some X.point)
@[simp]
theorem pointedToTwoPSnd_map_toFun :
∀ {X Y : Pointed} (f : X Y) (a : Option X.X), (pointedToTwoPSnd.map f).toFun a = Option.map f.toFun a
noncomputable def pointedToTwoPSnd :

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
@[simp]
@[simp]

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