The category of elements #
This file defines the category of elements, also known as (a special case of) the Grothendieck construction.
Given a functor F : C ⥤ Type*, an object of F.Elements is a pair (X : C, x : F.obj X).
A morphism (X, x) ⟶ (Y, y) is a morphism f : X ⟶ Y in C such that F.map f takes x to y.
Implementation notes #
This construction is equivalent to a special case of a comma construction,
so this is mostly just a more convenient API. We prove the equivalence in
CategoryTheory.Functor.Elements.structuredArrowEquivalence.
References #
- Emily Riehl, Category Theory in Context, Section 2.4
- https://en.wikipedia.org/wiki/Category_of_elements
- https://ncatlab.org/nlab/show/category+of+elements
Tags #
category of elements, Grothendieck construction, comma category
The type of objects for the category of elements of a functor F : C ⥤ Type
is a pair (X : C, x : F.obj X).
- obj : C
the underlying object of an element of a functor to types
the value of the element
Instances For
Alias of CategoryTheory.Functor.Elements.obj.
the underlying object of an element of a functor to types
Instances For
Alias of CategoryTheory.Functor.Elements.val.
the value of the element
Instances For
Constructor for the type F.Elements when F is a functor to types.
Equations
- F.elementsMk X x = { obj := X, val := x }
Instances For
A morphism x ⟶ y in the category F.Elements of elements of a functor F : C ⥤ Type w
consists of a morphism hom : x.obj ⟶ y.obj such that F.map hom sends x.val to y.val.
the underlying morphism of objects
Instances For
The category structure on F.Elements, for F : C ⥤ Type.
A morphism (X, x) ⟶ (Y, y) is a morphism f : X ⟶ Y in C, so F.map f takes x to y.
Equations
- One or more equations did not get rendered due to their size.
The functor out of the category of elements which forgets the element.
Equations
Instances For
Natural transformations are mapped to functors between categories of elements.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If φ : F ⟶ G is a natural transformation between functors to types, this is the
canonical isomorphism φ.mapElements ⋙ Functor.Elements.π G ≅ Functor.Elements.π F.
Equations
Instances For
The functor mapping functors C ⥤ Type w to their category of elements
Equations
- One or more equations did not get rendered due to their size.
Instances For
Constructor for morphisms in the category of elements of a functor to types.
Equations
- CategoryTheory.Functor.Elements.homMk f hf = { hom := f, map_val := hf }
Instances For
Constructor for isomorphisms in the category of elements of a functor to types.
Equations
- CategoryTheory.Functor.Elements.isoMk e he = { hom := CategoryTheory.Functor.Elements.homMk e.hom he, inv := CategoryTheory.Functor.Elements.homMk e.inv ⋯, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
The forward direction of the equivalence F.Elements ≅ (*, F).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The reverse direction of the equivalence F.Elements ≅ (*, F).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The equivalence between the category of elements F.Elements
and the comma category (*, F).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The forward direction of the equivalence F.Elementsᵒᵖ ≅ (yoneda, F),
given by CategoryTheory.yonedaEquiv.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The reverse direction of the equivalence F.Elementsᵒᵖ ≅ (yoneda, F),
given by CategoryTheory.yonedaEquiv.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The equivalence F.Elementsᵒᵖ ≅ (yoneda, F) given by Yoneda's lemma.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The equivalence F.elementsᵒᵖ ≌ (yoneda, F) is compatible with the forgetful functors.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The equivalence F.elementsᵒᵖ ≌ (yoneda, F) is compatible with the forgetful functors.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The opposite of the category of elements of a presheaf of types is equivalent to a category of costructured arrows for the Yoneda embedding functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The functor of the equivalence costructuredArrowULiftYonedaEquivalence F followed
by the projection CostructuredArrow uliftYoneda.{w} F ⥤ C identifies to (π F).leftOp.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given F : Cᵒᵖ ⥤ Type w where C is a locally w-small category, this is the
equivalence between the opposite of the category of elements of F and
CostructuredArrow shrinkYoneda.{w} F.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The functor of the equivalence costructuredArrowShrinkYonedaEquivalence F followed
by the projection CostructuredArrow shrinkYoneda.{w} F ⥤ C identifies to (π F).leftOp.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The initial object in F.Elements if F is representable.
Equations
- CategoryTheory.Functor.Elements.initialOfRepresentableBy h = { obj := Opposite.op X, val := h.homEquiv (CategoryTheory.CategoryStruct.id X) }
Instances For
If F is represented by X, X with its universal element is the initial object of
F.Elements.
Equations
- CategoryTheory.Functor.Elements.isInitialOfRepresentableBy h = CategoryTheory.Limits.IsInitial.ofUniqueHom (fun (e : F.Elements) => { hom := (h.homEquiv.symm e.val).op, map_val := ⋯ }) ⋯
Instances For
The initial object in F.Elements if F is corepresentable.
Equations
- CategoryTheory.Functor.Elements.initialOfCorepresentableBy h = { obj := X, val := h.homEquiv (CategoryTheory.CategoryStruct.id X) }
Instances For
If F is corepresented by X, X with its universal element is the initial object of
F.Elements.
Equations
- CategoryTheory.Functor.Elements.isInitialOfCorepresentableBy h = CategoryTheory.Limits.IsInitial.ofUniqueHom (fun (e : F.Elements) => { hom := h.homEquiv.symm e.val, map_val := ⋯ }) ⋯
Instances For
The initial object in the category of elements for a representable functor. In isInitial it is
shown that this is initial.
Equations
- CategoryTheory.Functor.Elements.initialYonedaObj A = { obj := Opposite.op A, val := CategoryTheory.CategoryStruct.id A }
Instances For
Show that Elements.initial A is initial in the category of elements for the yoneda functor.
Equations
Instances For
Alias of CategoryTheory.Functor.Elements.initialYonedaObj.
The initial object in the category of elements for a representable functor. In isInitial it is
shown that this is initial.
Equations
Instances For
Alias of CategoryTheory.Functor.Elements.isInitialYonedaObj.
Show that Elements.initial A is initial in the category of elements for the yoneda functor.
Equations
Instances For
The functor (F ⋙ G).Elements ⥤ G.Elements.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The functor Functor.Elements.toCostructuredArrow is compatible with
NatTrans.mapElements.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Alias of CategoryTheory.Functor.Elements.homMk.
Constructor for morphisms in the category of elements of a functor to types.
Instances For
Alias of CategoryTheory.Functor.Elements.isoMk.
Constructor for isomorphisms in the category of elements of a functor to types.
Instances For
Alias of CategoryTheory.Functor.Elements.hom_ext.
Alias of CategoryTheory.Functor.Elements.id_hom.
Alias of CategoryTheory.Functor.Elements.comp_hom.
Alias of CategoryTheory.Functor.Elements.π.
The functor out of the category of elements which forgets the element.
Instances For
Alias of CategoryTheory.NatTrans.mapElements.
Natural transformations are mapped to functors between categories of elements.
Instances For
Alias of CategoryTheory.Functor.Elements.toStructuredArrow.
The forward direction of the equivalence F.Elements ≅ (*, F).
Equations
Instances For
Alias of CategoryTheory.Functor.Elements.fromStructuredArrow.
The reverse direction of the equivalence F.Elements ≅ (*, F).
Equations
Instances For
Alias of CategoryTheory.Functor.Elements.toStructuredArrow_obj.
Alias of CategoryTheory.Functor.Elements.toStructuredArrow_map.
Alias of CategoryTheory.Functor.Elements.structuredArrowEquivalence.
The equivalence between the category of elements F.Elements
and the comma category (*, F).
Equations
Instances For
Alias of CategoryTheory.Functor.Elements.toCostructuredArrow.
The forward direction of the equivalence F.Elementsᵒᵖ ≅ (yoneda, F),
given by CategoryTheory.yonedaEquiv.
Equations
Instances For
Alias of CategoryTheory.Functor.Elements.fromCostructuredArrow.
The reverse direction of the equivalence F.Elementsᵒᵖ ≅ (yoneda, F),
given by CategoryTheory.yonedaEquiv.
Equations
Instances For
Alias of CategoryTheory.Functor.Elements.fromCostructuredArrow_obj_mk.
Alias of CategoryTheory.Functor.Elements.costructuredArrowYonedaEquivalence.
The equivalence F.Elementsᵒᵖ ≅ (yoneda, F) given by Yoneda's lemma.
Equations
Instances For
Alias of CategoryTheory.NatTrans.mapElements_op_comp_toCostructuredArrow.
Alias of CategoryTheory.Functor.Elements.costructuredArrowYonedaEquivalenceFunctorProj.
The equivalence F.elementsᵒᵖ ≌ (yoneda, F) is compatible with the forgetful functors.
Equations
Instances For
Alias of CategoryTheory.Functor.Elements.costructuredArrowYonedaEquivalenceInverseπ.
The equivalence F.elementsᵒᵖ ≌ (yoneda, F) is compatible with the forgetful functors.
Equations
Instances For
Alias of CategoryTheory.Functor.Elements.costructuredArrowULiftYonedaEquivalence.
The opposite of the category of elements of a presheaf of types is equivalent to a category of costructured arrows for the Yoneda embedding functor.
Equations
Instances For
Alias of CategoryTheory.Functor.Elements.costructuredArrowULiftYonedaEquivalenceFunctorCompProjIso.
The functor of the equivalence costructuredArrowULiftYonedaEquivalence F followed
by the projection CostructuredArrow uliftYoneda.{w} F ⥤ C identifies to (π F).leftOp.