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)
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
Equations
- TwoP.instCoeSortTwoPType = { coe := TwoP.X }
@[simp]
Equations
- TwoP.instInhabitedTwoP = { default := TwoP.of TwoPointing.bool }
Turns a two-pointed type into a bipointed type, by forgetting that the pointed elements are distinct.
Equations
- TwoP.toBipointed X = Prod.Bipointed X.toTwoPointing.toProd
Instances For
@[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
@[simp]
@[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
@[simp]
@[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)
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.