Documentation

TauCeti.RepresentationTheory.Quiver.Zigzag.Basic

Doubled quivers of simple graphs #

The doubled quiver of a simple graph has the graph's vertices and one arrow in each direction over every edge. Since adjacency in a simple graph is a proposition, this quiver is thin: it has no loops or parallel arrows. Its canonical arrow reversal comes from symmetry of adjacency.

This file relates the quiver API to Mathlib's graph API. Total arrows are identified with graph darts, stars and costars are identified with neighbor sets, and their cardinalities recover the adjacency matrix, vertex degrees, and twice the number of edges. A graph homomorphism acts on doubled quivers by a reversal-preserving prefunctor, and a graph isomorphism gives mutually inverse prefunctors.

Main definitions #

Main results #

References #

This is the doubled-graph construction in Layer 0 of TauCetiRoadmap/ZigzagPreprojective/README.md; its interface follows the target-signature prototype in TauCetiRoadmap/ZigzagPreprojective/Suggested.lean. See Huerfano--Khovanov, A category for the adjoint representation, Section 3.

def TauCeti.DoubledQuiver {V : Type u} (_G : SimpleGraph V) :

The doubled quiver of a simple graph. Its vertices are the graph's vertices, and there is one arrow i ⟶ j for every proof that i and j are adjacent.

Equations
Instances For

    Include a graph vertex into the vertex type of its doubled quiver.

    Equations
    Instances For

      The graph vertices and the doubled-quiver vertices are canonically equivalent.

      Equations
      Instances For
        @[simp]
        theorem TauCeti.DoubledQuiver.vertexEquiv_apply {V : Type u} (G : SimpleGraph V) (v : V) :
        (vertexEquiv G) v = vertex G v
        @[simp]
        theorem TauCeti.DoubledQuiver.exists_eq_vertex {V : Type u} (G : SimpleGraph V) (a : DoubledQuiver G) :
        ∃ (v : V), a = vertex G v

        Every vertex of the doubled quiver comes from a vertex of the graph.

        The vertex inclusion of a doubled quiver is injective.

        @[simp]
        theorem TauCeti.DoubledQuiver.vertex_inj {V : Type u} (G : SimpleGraph V) {u v : V} :
        vertex G u = vertex G v ↔ u = v

        Two graph vertices have the same image in the doubled quiver exactly when they are equal.

        @[instance_reducible]
        Equations
        • One or more equations did not get rendered due to their size.
        @[instance_reducible]
        Equations
        def TauCeti.DoubledQuiver.arrow {V : Type u} (G : SimpleGraph V) {i j : V} (h : G.Adj i j) :
        vertex G i ⟶ vertex G j

        The arrow of the doubled quiver corresponding to an adjacency.

        Equations
        Instances For
          theorem TauCeti.DoubledQuiver.arrow_down {V : Type u} (G : SimpleGraph V) {i j : V} (h : G.Adj i j) :
          ⋯ = ⋯
          @[simp]
          theorem TauCeti.DoubledQuiver.reverse_arrow {V : Type u} (G : SimpleGraph V) {i j : V} (h : G.Adj i j) :

          Reversing the arrow induced by an adjacency gives the arrow induced by symmetric adjacency.

          @[simp]
          theorem TauCeti.DoubledQuiver.nonempty_hom_iff {V : Type u} (G : SimpleGraph V) {i j : V} :
          Nonempty (vertex G i ⟶ vertex G j) ↔ G.Adj i j

          There is an arrow from i to j exactly when the vertices are adjacent.

          @[simp]
          theorem TauCeti.DoubledQuiver.isEmpty_hom_iff {V : Type u} (G : SimpleGraph V) {i j : V} :
          IsEmpty (vertex G i ⟶ vertex G j) ↔ ¬G.Adj i j

          The arrow type from i to j is empty exactly when the vertices are not adjacent.

          @[reducible, inline]

          All arrows in the doubled quiver, with their source and target.

          Equations
          Instances For

            The total arrows of the doubled quiver are the oriented edges, or darts, of the graph.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[simp]
              theorem TauCeti.DoubledQuiver.totalArrowEquivDart_apply {V : Type u} (G : SimpleGraph V) (i j : DoubledQuiver G) (e : i ⟶ j) :
              (totalArrowEquivDart G) ⟨i, ⟨j, e⟩⟩ = { fst := (vertexEquiv G).symm i, snd := (vertexEquiv G).symm j, adj := ⋯ }

              Reverse a total arrow, exchanging its source and target.

              Equations
              Instances For

                The arrows leaving a vertex are its neighbors in the graph.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  @[instance_reducible]
                  noncomputable instance TauCeti.DoubledQuiver.instFintypeStarVertex {V : Type u} (G : SimpleGraph V) (v : V) [Fintype ↑(G.neighborSet v)] :

                  The star at a doubled-quiver vertex is finite whenever its neighbor set is finite.

                  Equations
                  @[instance_reducible]
                  noncomputable instance TauCeti.DoubledQuiver.instFintypeStar {V : Type u} (G : SimpleGraph V) [(v : V) → Fintype ↑(G.neighborSet v)] (x : DoubledQuiver G) :

                  If every graph neighbor set is finite, then every star of its doubled quiver is finite.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  @[simp]
                  @[simp]

                  The number of doubled-quiver arrows from i to j is the corresponding adjacency-matrix entry.

                  The number of doubled-quiver arrows leaving a vertex is its degree in the graph.

                  The number of doubled-quiver arrows entering a vertex is its degree in the graph.

                  The total number of doubled-quiver arrows is twice the number of graph edges.

                  A graph homomorphism induces a prefunctor of doubled quivers.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    @[simp]
                    theorem TauCeti.DoubledQuiver.map_obj {V : Type u} {G : SimpleGraph V} {W : Type v} {H : SimpleGraph W} (f : G →g H) (i : V) :
                    (map f).obj (vertex G i) = vertex H (f i)
                    @[simp]
                    theorem TauCeti.DoubledQuiver.map_arrow {V : Type u} {G : SimpleGraph V} {W : Type v} {H : SimpleGraph W} (f : G →g H) {i j : V} (h : G.Adj i j) :
                    (map f).map (arrow G h) = Quiver.homOfEq (arrow H ⋯) ⋯ ⋯
                    instance TauCeti.DoubledQuiver.mapMapReverse {V : Type u} {G : SimpleGraph V} {W : Type v} {H : SimpleGraph W} (f : G →g H) :

                    The doubled-quiver prefunctor induced by a graph homomorphism commutes with arrow reversal.

                    @[simp]

                    Mapping the identity graph homomorphism gives the identity doubled-quiver prefunctor.

                    theorem TauCeti.DoubledQuiver.map_comp {V : Type u} {G : SimpleGraph V} {W : Type v} {X : Type u_1} {H : SimpleGraph W} {K : SimpleGraph X} (f : G →g H) (g : H →g K) :
                    map (g.comp f) = map f ⋙q map g

                    The doubled-quiver map preserves composition of graph homomorphisms.

                    @[simp]

                    Mapping the identity graph isomorphism gives the identity doubled-quiver prefunctor.

                    theorem TauCeti.DoubledQuiver.map_trans {V : Type u} {G : SimpleGraph V} {W : Type v} {X : Type u_1} {H : SimpleGraph W} {K : SimpleGraph X} (e : G ≃g H) (f : H ≃g K) :

                    Mapping a composite graph isomorphism composes the doubled-quiver prefunctors.

                    @[simp]

                    Relabelling a graph and then undoing the relabelling is the identity doubled-quiver map.

                    @[simp]

                    Undoing a graph relabelling and then applying it is the identity doubled-quiver map.

                    A graph isomorphism relabels the vertices of the doubled quiver bijectively.