Documentation

Mathlib.CategoryTheory.Yoneda

The Yoneda embedding #

The Yoneda embedding as a functor yoneda : C ⥤ (Cᵒᵖ ⥤ Type v₁), along with an instance that it is FullyFaithful.

Also the Yoneda lemma, yonedaLemma : (yoneda_pairing C) ≅ (yoneda_evaluation C).

References #

@[simp]
theorem CategoryTheory.yoneda_obj_obj {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (X : C) (Y : Cᵒᵖ) :
(CategoryTheory.yoneda.obj X).obj Y = (Y.unop X)
@[simp]
theorem CategoryTheory.yoneda_map_app {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] :
∀ {X Y : C} (f : X Y) (Y_1 : Cᵒᵖ) (g : ((fun (X : C) => { obj := fun (Y : Cᵒᵖ) => Y.unop X, map := fun {X_1 Y : Cᵒᵖ} (f : X_1 Y) (g : (fun (Y : Cᵒᵖ) => Y.unop X) X_1) => CategoryTheory.CategoryStruct.comp f.unop g, map_id := , map_comp := }) X).obj Y_1), (CategoryTheory.yoneda.map f).app Y_1 g = CategoryTheory.CategoryStruct.comp g f
@[simp]
theorem CategoryTheory.yoneda_obj_map {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (X : C) :
∀ {X_1 Y : Cᵒᵖ} (f : X_1 Y) (g : X_1.unop X), (CategoryTheory.yoneda.obj X).map f g = CategoryTheory.CategoryStruct.comp f.unop g

The Yoneda embedding, as a functor from C into presheaves on C.

See .

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    @[simp]
    theorem CategoryTheory.coyoneda_obj_map {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (X : Cᵒᵖ) :
    ∀ {X_1 Y : C} (f : X_1 Y) (g : X.unop X_1), (CategoryTheory.coyoneda.obj X).map f g = CategoryTheory.CategoryStruct.comp g f
    @[simp]
    theorem CategoryTheory.coyoneda_map_app {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] :
    ∀ {X Y : Cᵒᵖ} (f : X Y) (Y_1 : C) (g : ((fun (X : Cᵒᵖ) => { obj := fun (Y : C) => X.unop Y, map := fun {X_1 Y : C} (f : X_1 Y) (g : (fun (Y : C) => X.unop Y) X_1) => CategoryTheory.CategoryStruct.comp g f, map_id := , map_comp := }) X).obj Y_1), (CategoryTheory.coyoneda.map f).app Y_1 g = CategoryTheory.CategoryStruct.comp f.unop g
    @[simp]
    theorem CategoryTheory.coyoneda_obj_obj {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (X : Cᵒᵖ) (Y : C) :
    (CategoryTheory.coyoneda.obj X).obj Y = (X.unop Y)

    The co-Yoneda embedding, as a functor from Cᵒᵖ into co-presheaves on C.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem CategoryTheory.Yoneda.obj_map_id {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {Y : C} (f : { unop := X } { unop := Y }) :
      (CategoryTheory.yoneda.obj X).map f (CategoryTheory.CategoryStruct.id X) = (CategoryTheory.yoneda.map f.unop).app { unop := Y } (CategoryTheory.CategoryStruct.id Y)
      @[simp]
      theorem CategoryTheory.Yoneda.naturality {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {Y : C} (α : CategoryTheory.yoneda.obj X CategoryTheory.yoneda.obj Y) {Z : C} {Z' : C} (f : Z Z') (h : Z' X) :
      CategoryTheory.CategoryStruct.comp f (α.app { unop := Z' } h) = α.app { unop := Z } (CategoryTheory.CategoryStruct.comp f h)
      def CategoryTheory.Yoneda.preimage {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {Y : C} (f : CategoryTheory.yoneda.obj X CategoryTheory.yoneda.obj Y) :
      X Y

      The morphism X ⟶ Y corresponding to a natural transformation yoneda.obj X ⟶ yoneda.obj Y.

      Equations
      Instances For
        @[simp]
        theorem CategoryTheory.Yoneda.map_preimage {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {Y : C} (f : CategoryTheory.yoneda.obj X CategoryTheory.yoneda.obj Y) :
        CategoryTheory.yoneda.map (CategoryTheory.Yoneda.preimage f) = f
        instance CategoryTheory.Yoneda.yoneda_full {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] :
        CategoryTheory.yoneda.Full

        The Yoneda embedding is full.

        See .

        Equations
        • =
        instance CategoryTheory.Yoneda.yoneda_faithful {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] :
        CategoryTheory.yoneda.Faithful

        The Yoneda embedding is faithful.

        See .

        Equations
        • =
        @[simp]
        theorem CategoryTheory.Yoneda.preimageIso_inv {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {Y : C} (e : CategoryTheory.yoneda.obj X CategoryTheory.yoneda.obj Y) :
        @[simp]
        theorem CategoryTheory.Yoneda.preimageIso_hom {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {Y : C} (e : CategoryTheory.yoneda.obj X CategoryTheory.yoneda.obj Y) :
        def CategoryTheory.Yoneda.preimageIso {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {Y : C} (e : CategoryTheory.yoneda.obj X CategoryTheory.yoneda.obj Y) :
        X Y

        The isomorphism X ≅ Y corresponding to a natural isomorphism yoneda.obj X ≅ yoneda.obj Y.

        Equations
        Instances For
          def CategoryTheory.Yoneda.ext {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (X : C) (Y : C) (p : {Z : C} → (Z X)(Z Y)) (q : {Z : C} → (Z Y)(Z X)) (h₁ : ∀ {Z : C} (f : Z X), q (p f) = f) (h₂ : ∀ {Z : C} (f : Z Y), p (q f) = f) (n : ∀ {Z Z' : C} (f : Z' Z) (g : Z X), p (CategoryTheory.CategoryStruct.comp f g) = CategoryTheory.CategoryStruct.comp f (p g)) :
          X Y

          Extensionality via Yoneda. The typical usage would be

          -- Goal is `X ≅ Y`
          apply yoneda.ext,
          -- Goals are now functions `(Z ⟶ X) → (Z ⟶ Y)`, `(Z ⟶ Y) → (Z ⟶ X)`, and the fact that these
          -- functions are inverses and natural in `Z`.
          
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            theorem CategoryTheory.Yoneda.isIso {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {Y : C} (f : X Y) [CategoryTheory.IsIso (CategoryTheory.yoneda.map f)] :

            If yoneda.map f is an isomorphism, so was f.

            @[simp]
            theorem CategoryTheory.Coyoneda.naturality {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : Cᵒᵖ} {Y : Cᵒᵖ} (α : CategoryTheory.coyoneda.obj X CategoryTheory.coyoneda.obj Y) {Z : C} {Z' : C} (f : Z' Z) (h : X.unop Z') :
            def CategoryTheory.Coyoneda.preimage {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : Cᵒᵖ} {Y : Cᵒᵖ} (f : CategoryTheory.coyoneda.obj X CategoryTheory.coyoneda.obj Y) :
            X Y

            The morphism X ⟶ Y corresponding to a natural transformation coyoneda.obj X ⟶ coyoneda.obj Y.

            Equations
            Instances For
              @[simp]
              theorem CategoryTheory.Coyoneda.map_preimage {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : Cᵒᵖ} {Y : Cᵒᵖ} (f : CategoryTheory.coyoneda.obj X CategoryTheory.coyoneda.obj Y) :
              CategoryTheory.coyoneda.map (CategoryTheory.Coyoneda.preimage f) = f
              instance CategoryTheory.Coyoneda.coyoneda_full {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] :
              CategoryTheory.coyoneda.Full
              Equations
              • =
              instance CategoryTheory.Coyoneda.coyoneda_faithful {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] :
              CategoryTheory.coyoneda.Faithful
              Equations
              • =
              @[simp]
              theorem CategoryTheory.Coyoneda.preimageIso_hom {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : Cᵒᵖ} {Y : Cᵒᵖ} (e : CategoryTheory.coyoneda.obj X CategoryTheory.coyoneda.obj Y) :
              @[simp]
              theorem CategoryTheory.Coyoneda.preimageIso_inv {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : Cᵒᵖ} {Y : Cᵒᵖ} (e : CategoryTheory.coyoneda.obj X CategoryTheory.coyoneda.obj Y) :
              def CategoryTheory.Coyoneda.preimageIso {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : Cᵒᵖ} {Y : Cᵒᵖ} (e : CategoryTheory.coyoneda.obj X CategoryTheory.coyoneda.obj Y) :
              X Y

              The isomorphism X ≅ Y corresponding to a natural isomorphism coyoneda.obj X ≅ coyoneda.obj Y.

              Equations
              Instances For
                def CategoryTheory.Coyoneda.preimageNatTrans {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u_1} [CategoryTheory.Category.{u_2, u_1} D] {F : CategoryTheory.Functor D Cᵒᵖ} {G : CategoryTheory.Functor D Cᵒᵖ} (f : F.comp CategoryTheory.coyoneda G.comp CategoryTheory.coyoneda) :
                F G

                The natural transformation F ⟶ G corresponding to a natural transformation F ⋙ coyoneda ⟶ G ⋙ coyoneda.

                Equations
                Instances For
                  def CategoryTheory.Coyoneda.preimageNatIso {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {D : Type u_1} [CategoryTheory.Category.{u_2, u_1} D] {F : CategoryTheory.Functor D Cᵒᵖ} {G : CategoryTheory.Functor D Cᵒᵖ} (e : F.comp CategoryTheory.coyoneda G.comp CategoryTheory.coyoneda) :
                  F G

                  The natural isomorphism F ≅ G corresponding to a natural transformation F ⋙ coyoneda ≅ G ⋙ coyoneda.

                  Equations
                  Instances For
                    theorem CategoryTheory.Coyoneda.isIso {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : Cᵒᵖ} {Y : Cᵒᵖ} (f : X Y) [CategoryTheory.IsIso (CategoryTheory.coyoneda.map f)] :

                    If coyoneda.map f is an isomorphism, so was f.

                    def CategoryTheory.Coyoneda.punitIso :
                    CategoryTheory.coyoneda.obj { unop := PUnit.{v₁ + 1} } CategoryTheory.Functor.id (Type v₁)

                    The identity functor on Type is isomorphic to the coyoneda functor coming from PUnit.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      @[simp]
                      theorem CategoryTheory.Coyoneda.objOpOp_inv_app {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (X : C) (X : Cᵒᵖ) :
                      ∀ (a : (CategoryTheory.yoneda.obj X✝).obj X), (CategoryTheory.Coyoneda.objOpOp X✝).inv.app X a = (CategoryTheory.opEquiv { unop := X✝ } X).symm a
                      @[simp]
                      theorem CategoryTheory.Coyoneda.objOpOp_hom_app {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (X : C) (X : Cᵒᵖ) :
                      ∀ (a : (CategoryTheory.coyoneda.obj { unop := { unop := X✝ } }).obj X), (CategoryTheory.Coyoneda.objOpOp X✝).hom.app X a = (CategoryTheory.opEquiv { unop := X✝ } X) a
                      def CategoryTheory.Coyoneda.objOpOp {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (X : C) :
                      CategoryTheory.coyoneda.obj { unop := { unop := X } } CategoryTheory.yoneda.obj X

                      Taking the unop of morphisms is a natural isomorphism.

                      Equations
                      Instances For

                        A functor F : Cᵒᵖ ⥤ Type v₁ is representable if there is object X so F ≅ yoneda.obj X.

                        See .

                        • has_representation : ∃ (X : C), Nonempty (CategoryTheory.yoneda.obj X F)

                          Hom(-,X) ≅ F via f

                        Instances
                          theorem CategoryTheory.Functor.Representable.has_representation {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {F : CategoryTheory.Functor Cᵒᵖ (Type v₁)} [self : F.Representable] :
                          ∃ (X : C), Nonempty (CategoryTheory.yoneda.obj X F)

                          Hom(-,X) ≅ F via f

                          instance CategoryTheory.Functor.instRepresentableObjOppositeTypeYoneda {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} :
                          (CategoryTheory.yoneda.obj X).Representable
                          Equations
                          • =

                          A functor F : C ⥤ Type v₁ is corepresentable if there is object X so F ≅ coyoneda.obj X.

                          See .

                          • has_corepresentation : ∃ (X : Cᵒᵖ), Nonempty (CategoryTheory.coyoneda.obj X F)

                            Hom(X,-) ≅ F via f

                          Instances
                            theorem CategoryTheory.Functor.Corepresentable.has_corepresentation {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {F : CategoryTheory.Functor C (Type v₁)} [self : F.Corepresentable] :
                            ∃ (X : Cᵒᵖ), Nonempty (CategoryTheory.coyoneda.obj X F)

                            Hom(X,-) ≅ F via f

                            instance CategoryTheory.Functor.instCorepresentableObjOppositeTypeCoyoneda {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : Cᵒᵖ} :
                            (CategoryTheory.coyoneda.obj X).Corepresentable
                            Equations
                            • =
                            noncomputable def CategoryTheory.Functor.reprX {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (F : CategoryTheory.Functor Cᵒᵖ (Type v₁)) [hF : F.Representable] :
                            C

                            The representing object for the representable functor F.

                            Equations
                            • F.reprX = .choose
                            Instances For
                              noncomputable def CategoryTheory.Functor.reprW {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (F : CategoryTheory.Functor Cᵒᵖ (Type v₁)) [hF : F.Representable] :
                              CategoryTheory.yoneda.obj F.reprX F

                              An isomorphism between a representable F and a functor of the form C(-, F.reprX). Note the components F.reprW.app X definitionally have type (X.unop ⟶ F.repr_X) ≅ F.obj X.

                              Equations
                              • F.reprW = .some
                              Instances For
                                noncomputable def CategoryTheory.Functor.reprx {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (F : CategoryTheory.Functor Cᵒᵖ (Type v₁)) [hF : F.Representable] :
                                F.obj { unop := F.reprX }

                                The representing element for the representable functor F, sometimes called the universal element of the functor.

                                Equations
                                Instances For
                                  theorem CategoryTheory.Functor.reprW_app_hom {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (F : CategoryTheory.Functor Cᵒᵖ (Type v₁)) [hF : F.Representable] (X : Cᵒᵖ) (f : X.unop F.reprX) :
                                  (F.reprW.app X).hom f = F.map f.op F.reprx
                                  noncomputable def CategoryTheory.Functor.coreprX {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (F : CategoryTheory.Functor C (Type v₁)) [hF : F.Corepresentable] :
                                  C

                                  The representing object for the corepresentable functor F.

                                  Equations
                                  • F.coreprX = .choose.unop
                                  Instances For
                                    noncomputable def CategoryTheory.Functor.coreprW {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (F : CategoryTheory.Functor C (Type v₁)) [hF : F.Corepresentable] :
                                    CategoryTheory.coyoneda.obj { unop := F.coreprX } F

                                    An isomorphism between a corepresnetable F and a functor of the form C(F.corepr X, -). Note the components F.coreprW.app X definitionally have type F.corepr_X ⟶ X ≅ F.obj X.

                                    Equations
                                    • F.coreprW = .some
                                    Instances For
                                      noncomputable def CategoryTheory.Functor.coreprx {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (F : CategoryTheory.Functor C (Type v₁)) [hF : F.Corepresentable] :
                                      F.obj F.coreprX

                                      The representing element for the corepresentable functor F, sometimes called the universal element of the functor.

                                      Equations
                                      Instances For
                                        theorem CategoryTheory.Functor.coreprW_app_hom {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (F : CategoryTheory.Functor C (Type v₁)) [hF : F.Corepresentable] (X : C) (f : F.coreprX X) :
                                        (F.coreprW.app X).hom f = F.map f F.coreprx
                                        theorem CategoryTheory.representable_of_natIso {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (F : CategoryTheory.Functor Cᵒᵖ (Type v₁)) {G : CategoryTheory.Functor Cᵒᵖ (Type v₁)} (i : F G) [F.Representable] :
                                        G.Representable
                                        theorem CategoryTheory.corepresentable_of_natIso {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (F : CategoryTheory.Functor C (Type v₁)) {G : CategoryTheory.Functor C (Type v₁)} (i : F G) [F.Corepresentable] :
                                        G.Corepresentable
                                        def CategoryTheory.yonedaEquiv {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {F : CategoryTheory.Functor Cᵒᵖ (Type v₁)} :
                                        (CategoryTheory.yoneda.obj X F) F.obj { unop := X }

                                        We have a type-level equivalence between natural transformations from the yoneda embedding and elements of F.obj X, without any universe switching.

                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For
                                          theorem CategoryTheory.yonedaEquiv_apply {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {F : CategoryTheory.Functor Cᵒᵖ (Type v₁)} (f : CategoryTheory.yoneda.obj X F) :
                                          CategoryTheory.yonedaEquiv f = f.app { unop := X } (CategoryTheory.CategoryStruct.id X)
                                          @[simp]
                                          theorem CategoryTheory.yonedaEquiv_symm_app_apply {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {F : CategoryTheory.Functor Cᵒᵖ (Type v₁)} (x : F.obj { unop := X }) (Y : Cᵒᵖ) (f : Y.unop X) :
                                          (CategoryTheory.yonedaEquiv.symm x).app Y f = F.map f.op x
                                          theorem CategoryTheory.yonedaEquiv_naturality {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {Y : C} {F : CategoryTheory.Functor Cᵒᵖ (Type v₁)} (f : CategoryTheory.yoneda.obj X F) (g : Y X) :
                                          F.map g.op (CategoryTheory.yonedaEquiv f) = CategoryTheory.yonedaEquiv (CategoryTheory.CategoryStruct.comp (CategoryTheory.yoneda.map g) f)
                                          theorem CategoryTheory.yonedaEquiv_naturality' {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : Cᵒᵖ} {Y : Cᵒᵖ} {F : CategoryTheory.Functor Cᵒᵖ (Type v₁)} (f : CategoryTheory.yoneda.obj X.unop F) (g : X Y) :
                                          F.map g (CategoryTheory.yonedaEquiv f) = CategoryTheory.yonedaEquiv (CategoryTheory.CategoryStruct.comp (CategoryTheory.yoneda.map g.unop) f)
                                          theorem CategoryTheory.yonedaEquiv_comp {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {F : CategoryTheory.Functor Cᵒᵖ (Type v₁)} {G : CategoryTheory.Functor Cᵒᵖ (Type v₁)} (α : CategoryTheory.yoneda.obj X F) (β : F G) :
                                          CategoryTheory.yonedaEquiv (CategoryTheory.CategoryStruct.comp α β) = β.app { unop := X } (CategoryTheory.yonedaEquiv α)
                                          theorem CategoryTheory.yonedaEquiv_yoneda_map {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {Y : C} (f : X Y) :
                                          CategoryTheory.yonedaEquiv (CategoryTheory.yoneda.map f) = f
                                          theorem CategoryTheory.yonedaEquiv_symm_map {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : Cᵒᵖ} {Y : Cᵒᵖ} (f : X Y) {F : CategoryTheory.Functor Cᵒᵖ (Type v₁)} (t : F.obj X) :
                                          CategoryTheory.yonedaEquiv.symm (F.map f t) = CategoryTheory.CategoryStruct.comp (CategoryTheory.yoneda.map f.unop) (CategoryTheory.yonedaEquiv.symm t)

                                          The "Yoneda evaluation" functor, which sends X : Cᵒᵖ and F : Cᵒᵖ ⥤ Type to F.obj X, functorially in both X and F.

                                          Equations
                                          Instances For
                                            @[simp]

                                            The "Yoneda pairing" functor, which sends X : Cᵒᵖ and F : Cᵒᵖ ⥤ Type to yoneda.op.obj X ⟶ F, functorially in both X and F.

                                            Equations
                                            • One or more equations did not get rendered due to their size.
                                            Instances For
                                              def CategoryTheory.yonedaCompUliftFunctorEquiv {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (F : CategoryTheory.Functor Cᵒᵖ (Type (max v₁ w))) (X : C) :
                                              ((CategoryTheory.yoneda.obj X).comp CategoryTheory.uliftFunctor.{w, v₁} F) F.obj { unop := X }

                                              A bijection (yoneda.obj X ⋙ uliftFunctor ⟶ F) ≃ F.obj (op X) which is a variant of yonedaEquiv with heterogeneous universes.

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

                                                The Yoneda lemma asserts that the Yoneda pairing (X : Cᵒᵖ, F : Cᵒᵖ ⥤ Type) ↦ (yoneda.obj (unop X) ⟶ F) is naturally isomorphic to the evaluation (X, F) ↦ F.obj X.

                                                See .

                                                Equations
                                                Instances For
                                                  def CategoryTheory.curriedYonedaLemma {C : Type u₁} [CategoryTheory.SmallCategory C] :
                                                  CategoryTheory.yoneda.op.comp CategoryTheory.coyoneda CategoryTheory.evaluation Cᵒᵖ (Type u₁)

                                                  The curried version of yoneda lemma when C is small.

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

                                                    The curried version of yoneda lemma when C is small.

                                                    Equations
                                                    • One or more equations did not get rendered due to their size.
                                                    Instances For
                                                      def CategoryTheory.coyonedaEquiv {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {F : CategoryTheory.Functor C (Type v₁)} :
                                                      (CategoryTheory.coyoneda.obj { unop := X } F) F.obj X

                                                      We have a type-level equivalence between natural transformations from the coyoneda embedding and elements of F.obj X.unop, without any universe switching.

                                                      Equations
                                                      • One or more equations did not get rendered due to their size.
                                                      Instances For
                                                        theorem CategoryTheory.coyonedaEquiv_apply {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {F : CategoryTheory.Functor C (Type v₁)} (f : CategoryTheory.coyoneda.obj { unop := X } F) :
                                                        CategoryTheory.coyonedaEquiv f = f.app X (CategoryTheory.CategoryStruct.id X)
                                                        @[simp]
                                                        theorem CategoryTheory.coyonedaEquiv_symm_app_apply {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {F : CategoryTheory.Functor C (Type v₁)} (x : F.obj X) (Y : C) (f : X Y) :
                                                        (CategoryTheory.coyonedaEquiv.symm x).app Y f = F.map f x
                                                        theorem CategoryTheory.coyonedaEquiv_naturality {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {Y : C} {F : CategoryTheory.Functor C (Type v₁)} (f : CategoryTheory.coyoneda.obj { unop := X } F) (g : X Y) :
                                                        F.map g (CategoryTheory.coyonedaEquiv f) = CategoryTheory.coyonedaEquiv (CategoryTheory.CategoryStruct.comp (CategoryTheory.coyoneda.map g.op) f)
                                                        theorem CategoryTheory.coyonedaEquiv_comp {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {F : CategoryTheory.Functor C (Type v₁)} {G : CategoryTheory.Functor C (Type v₁)} (α : CategoryTheory.coyoneda.obj { unop := X } F) (β : F G) :
                                                        CategoryTheory.coyonedaEquiv (CategoryTheory.CategoryStruct.comp α β) = β.app X (CategoryTheory.coyonedaEquiv α)
                                                        theorem CategoryTheory.coyonedaEquiv_coyoneda_map {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {Y : C} (f : X Y) :
                                                        CategoryTheory.coyonedaEquiv (CategoryTheory.coyoneda.map f.op) = f
                                                        theorem CategoryTheory.coyonedaEquiv_symm_map {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {X : C} {Y : C} (f : X Y) {F : CategoryTheory.Functor C (Type v₁)} (t : F.obj X) :
                                                        CategoryTheory.coyonedaEquiv.symm (F.map f t) = CategoryTheory.CategoryStruct.comp (CategoryTheory.coyoneda.map f.op) (CategoryTheory.coyonedaEquiv.symm t)

                                                        The "Coyoneda evaluation" functor, which sends X : C and F : C ⥤ Type to F.obj X, functorially in both X and F.

                                                        Equations
                                                        Instances For
                                                          @[simp]
                                                          theorem CategoryTheory.coyonedaEvaluation_map_down (C : Type u₁) [CategoryTheory.Category.{v₁, u₁} C] (P : C × CategoryTheory.Functor C (Type v₁)) (Q : C × CategoryTheory.Functor C (Type v₁)) (α : P Q) (x : (CategoryTheory.coyonedaEvaluation C).obj P) :
                                                          ((CategoryTheory.coyonedaEvaluation C).map α x).down = α.2.app Q.1 (P.2.map α.1 x.down)

                                                          The "Coyoneda pairing" functor, which sends X : C and F : C ⥤ Type to coyoneda.rightOp.obj X ⟶ F, functorially in both X and F.

                                                          Equations
                                                          • One or more equations did not get rendered due to their size.
                                                          Instances For
                                                            theorem CategoryTheory.coyonedaPairingExt (C : Type u₁) [CategoryTheory.Category.{v₁, u₁} C] {X : C × CategoryTheory.Functor C (Type v₁)} {x : (CategoryTheory.coyonedaPairing C).obj X} {y : (CategoryTheory.coyonedaPairing C).obj X} (w : ∀ (Y : C), x.app Y = y.app Y) :
                                                            x = y
                                                            def CategoryTheory.coyonedaCompUliftFunctorEquiv {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (F : CategoryTheory.Functor C (Type (max v₁ w))) (X : Cᵒᵖ) :
                                                            ((CategoryTheory.coyoneda.obj X).comp CategoryTheory.uliftFunctor.{w, v₁} F) F.obj X.unop

                                                            A bijection (coyoneda.obj X ⋙ uliftFunctor ⟶ F) ≃ F.obj (unop X) which is a variant of coyonedaEquiv with heterogeneous universes.

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

                                                              The Coyoneda lemma asserts that the Coyoneda pairing (X : C, F : C ⥤ Type) ↦ (coyoneda.obj X ⟶ F) is naturally isomorphic to the evaluation (X, F) ↦ F.obj X.

                                                              See .

                                                              Equations
                                                              Instances For
                                                                def CategoryTheory.curriedCoyonedaLemma {C : Type u₁} [CategoryTheory.SmallCategory C] :
                                                                CategoryTheory.coyoneda.rightOp.comp CategoryTheory.coyoneda CategoryTheory.evaluation C (Type u₁)

                                                                The curried version of coyoneda lemma when C is small.

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

                                                                  The curried version of coyoneda lemma when C is small.

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