Documentation

Mathlib.Combinatorics.Quiver.ReflQuiver

Reflexive Quivers #

This module defines reflexive quivers. A reflexive quiver, or "refl quiver" for short, extends a quiver with a specified endoarrow on each term in its type of objects.

We also introduce morphisms between reflexive quivers, called reflexive prefunctors or "refl prefunctors" for short.

Note: Currently Category does not extend ReflQuiver, although it could. (TODO: do this)

class CategoryTheory.ReflQuiver (obj : Type u) extends Quiver obj :
Type (max u v)

A reflexive quiver extends a quiver with a specified arrow id X : X ⟶ X for each X in its type of objects. We denote these arrows by id since categories can be understood as an extension of refl quivers.

  • Hom : objobjSort v
  • id (X : obj) : X X

    The identity morphism on an object.

Instances

    Notation for the identity morphism in a category.

    Equations
    Instances For
      @[simp]
      theorem CategoryTheory.ReflQuiver.homOfEq_id {V : Type u_1} [ReflQuiver V] {X X' : V} (hX : X = X') :
      Quiver.homOfEq (id X) hX hX = id X'
      structure CategoryTheory.ReflPrefunctor (V : Type u₁) [ReflQuiver V] (W : Type u₂) [ReflQuiver W] extends V ⥤q W :
      Sort (max (max (max (u₁ + 1) (u₂ + 1)) v₁) v₂)

      A morphism of reflexive quivers called a ReflPrefunctor.

      Instances For
        theorem CategoryTheory.ReflPrefunctor.mk_obj {V : Type u_1} {W : Type u_2} [ReflQuiver V] [ReflQuiver W] {obj : VW} {map : {X Y : V} → (X Y)(obj X obj Y)} {X : V} :
        { obj := obj, map := map }.obj X = obj X
        theorem CategoryTheory.ReflPrefunctor.mk_map {V : Type u_1} {W : Type u_2} [ReflQuiver V] [ReflQuiver W] {obj : VW} {map : {X Y : V} → (X Y)(obj X obj Y)} {X Y : V} {f : X Y} :
        { obj := obj, map := map }.map f = map f
        theorem CategoryTheory.ReflPrefunctor.ext {V : Type u} [ReflQuiver V] {W : Type u₂} [ReflQuiver W] {F G : V ⥤rq W} (h_obj : ∀ (X : V), F.obj X = G.obj X) (h_map : ∀ (X Y : V) (f : X Y), F.map f = Eq.recOn (Eq.recOn (G.map f))) :
        F = G

        Proving equality between reflexive prefunctors. This isn't an extensionality lemma, because usually you don't really want to do this.

        theorem CategoryTheory.ReflPrefunctor.ext' {V W : Type u} [ReflQuiver V] [ReflQuiver W] {F G : V ⥤rq W} (h_obj : ∀ (X : V), F.obj X = G.obj X) (h_map : ∀ (X Y : V) (f : X Y), F.map f = Quiver.homOfEq (G.map f) ) :
        F = G

        This may be a more useful form of ReflPrefunctor.ext.

        The identity morphism between reflexive quivers.

        Equations
        Instances For
          @[simp]
          theorem CategoryTheory.ReflPrefunctor.id_obj (V : Type u_1) [ReflQuiver V] (X : V) :
          (𝟭rq V).obj X = X
          @[simp]
          theorem CategoryTheory.ReflPrefunctor.id_map (V : Type u_1) [ReflQuiver V] {X✝ Y✝ : V} (f : X✝ Y✝) :
          (𝟭rq V).map f = f
          def CategoryTheory.ReflPrefunctor.comp {U : Type u_1} [ReflQuiver U] {V : Type u_2} [ReflQuiver V] {W : Type u_3} [ReflQuiver W] (F : U ⥤rq V) (G : V ⥤rq W) :
          U ⥤rq W

          Composition of morphisms between reflexive quivers.

          Equations
          • F ⋙rq G = { toPrefunctor := F.toPrefunctor ⋙q G.toPrefunctor, map_id := }
          Instances For
            @[simp]
            theorem CategoryTheory.ReflPrefunctor.comp_map {U : Type u_1} [ReflQuiver U] {V : Type u_2} [ReflQuiver V] {W : Type u_3} [ReflQuiver W] (F : U ⥤rq V) (G : V ⥤rq W) {X✝ Y✝ : U} (f : X✝ Y✝) :
            (F ⋙rq G).map f = G.map (F.map f)
            @[simp]
            theorem CategoryTheory.ReflPrefunctor.comp_obj {U : Type u_1} [ReflQuiver U] {V : Type u_2} [ReflQuiver V] {W : Type u_3} [ReflQuiver W] (F : U ⥤rq V) (G : V ⥤rq W) (X : U) :
            (F ⋙rq G).obj X = G.obj (F.obj X)
            @[simp]
            theorem CategoryTheory.ReflPrefunctor.comp_id {U : Type u_1} {V : Type u_2} [ReflQuiver U] [ReflQuiver V] (F : U ⥤rq V) :
            F ⋙rq 𝟭rq V = F
            @[simp]
            theorem CategoryTheory.ReflPrefunctor.id_comp {U : Type u_1} {V : Type u_2} [ReflQuiver U] [ReflQuiver V] (F : U ⥤rq V) :
            𝟭rq U ⋙rq F = F
            @[simp]
            theorem CategoryTheory.ReflPrefunctor.comp_assoc {U : Type u_1} {V : Type u_2} {W : Type u_3} {Z : Type u_4} [ReflQuiver U] [ReflQuiver V] [ReflQuiver W] [ReflQuiver Z] (F : U ⥤rq V) (G : V ⥤rq W) (H : W ⥤rq Z) :
            F ⋙rq G ⋙rq H = F ⋙rq (G ⋙rq H)

            Notation for a prefunctor between reflexive quivers.

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

              Notation for composition of reflexive prefunctors.

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

                Notation for the identity prefunctor on a reflexive quiver.

                Equations
                Instances For
                  theorem CategoryTheory.ReflPrefunctor.congr_map {U : Type u_1} {V : Type u_2} [Quiver U] [Quiver V] (F : U ⥤q V) {X Y : U} {f g : X Y} (h : f = g) :
                  F.map f = F.map g

                  A functor has an underlying refl prefunctor.

                  Equations
                  • F.toReflPrefunctor = { toPrefunctor := F.toPrefunctor, map_id := }
                  Instances For
                    @[simp]
                    theorem CategoryTheory.Functor.toReflPrefunctor_toPrefunctor {C : Cat} {D : Cat} (F : Functor C D) :
                    F.toReflPrefunctor.toPrefunctor = F.toPrefunctor