Documentation

Mathlib.Combinatorics.Quiver.Symmetric

Symmetric quivers and arrow reversal #

This file contains constructions related to symmetric quivers:

def Quiver.Symmetrify (V : Type u_1) :
Type u_1

A type synonym for the symmetrized quiver (with an arrow both ways for each original arrow).

Equations
    Instances For
      class Quiver.HasReverse (V : Type u_2) [Quiver V] :
      Type (max u_2 v)

      A quiver HasReverse if we can reverse an arrow p from a to b to get an arrow p.reverse from b to a.

      • reverse' {a b : V} : (a b) → (b a)

        the map which sends an arrow to its reverse

      Instances
        def Quiver.reverse {V : Type u_4} [Quiver V] [HasReverse V] {a b : V} :
        (a b) → (b a)

        Reverse the direction of an arrow.

        Equations
          Instances For
            class Quiver.HasInvolutiveReverse (V : Type u_2) [Quiver V] extends Quiver.HasReverse V :
            Type (max u_2 v)

            A quiver HasInvolutiveReverse if reversing twice is the identity.

            Instances
              @[simp]
              theorem Quiver.reverse_reverse {V : Type u_2} [Quiver V] [h : HasInvolutiveReverse V] {a b : V} (f : a b) :
              @[simp]
              theorem Quiver.reverse_inj {V : Type u_2} [Quiver V] [h : HasInvolutiveReverse V] {a b : V} (f g : a b) :
              theorem Quiver.eq_reverse_iff {V : Type u_2} [Quiver V] [h : HasInvolutiveReverse V] {a b : V} (f : a b) (g : b a) :
              class Prefunctor.MapReverse {U : Type u_1} {V : Type u_2} [Quiver U] [Quiver V] [Quiver.HasReverse U] [Quiver.HasReverse V] (φ : U ⥤q V) :

              A prefunctor preserving reversal of arrows

              Instances
                @[simp]
                theorem Prefunctor.map_reverse {U : Type u_1} {V : Type u_2} [Quiver U] [Quiver V] [Quiver.HasReverse U] [Quiver.HasReverse V] (φ : U ⥤q V) [φ.MapReverse] {u v : U} (e : u v) :
                instance Prefunctor.mapReverseComp {U : Type u_1} {V : Type u_2} {W : Type u_3} [Quiver U] [Quiver V] [Quiver W] [Quiver.HasReverse U] [Quiver.HasReverse V] [Quiver.HasReverse W] (φ : U ⥤q V) (ψ : V ⥤q W) [φ.MapReverse] [ψ.MapReverse] :
                @[simp]
                theorem Quiver.symmetrify_reverse {V : Type u_2} [Quiver V] {a b : Symmetrify V} (e : a b) :
                @[reducible, inline]
                abbrev Quiver.Hom.toPos {V : Type u_2} [Quiver V] {X Y : V} (f : X Y) :
                X Y

                Shorthand for the "forward" arrow corresponding to f in symmetrify V

                Equations
                  Instances For
                    @[reducible, inline]
                    abbrev Quiver.Hom.toNeg {V : Type u_2} [Quiver V] {X Y : V} (f : X Y) :
                    Y X

                    Shorthand for the "backward" arrow corresponding to f in symmetrify V

                    Equations
                      Instances For
                        def Quiver.Path.reverse {V : Type u_2} [Quiver V] [HasReverse V] {a b : V} :
                        Path a bPath b a

                        Reverse the direction of a path.

                        Equations
                          Instances For
                            @[simp]
                            theorem Quiver.Path.reverse_toPath {V : Type u_2} [Quiver V] [HasReverse V] {a b : V} (f : a b) :
                            @[simp]
                            theorem Quiver.Path.reverse_comp {V : Type u_2} [Quiver V] [HasReverse V] {a b c : V} (p : Path a b) (q : Path b c) :
                            @[simp]
                            theorem Quiver.Path.reverse_reverse {V : Type u_2} [Quiver V] [h : HasInvolutiveReverse V] {a b : V} (p : Path a b) :

                            The inclusion of a quiver in its symmetrification

                            Equations
                              Instances For
                                @[simp]
                                theorem Quiver.Symmetrify.of_map {V : Type u_2} [Quiver V] {X✝ Y✝ : V} (val : X✝ Y✝) :
                                of.map val = Sum.inl val
                                @[simp]
                                theorem Quiver.Symmetrify.of_obj {V : Type u_2} [Quiver V] (a : V) :
                                of.obj a = id a
                                def Quiver.Symmetrify.lift {V : Type u_2} [Quiver V] {V' : Type u_4} [Quiver V'] [HasReverse V'] (φ : V ⥤q V') :

                                Given a quiver V' with reversible arrows, a prefunctor to V' can be lifted to one from Symmetrify V to V'

                                Equations
                                  Instances For
                                    theorem Quiver.Symmetrify.lift_spec {V : Type u_2} [Quiver V] {V' : Type u_4} [Quiver V'] [HasReverse V'] (φ : V ⥤q V') :
                                    of ⋙q lift φ = φ
                                    theorem Quiver.Symmetrify.lift_reverse {V : Type u_2} [Quiver V] {V' : Type u_4} [Quiver V'] [h : HasInvolutiveReverse V'] (φ : V ⥤q V') {X Y : Symmetrify V} (f : X Y) :
                                    (lift φ).map (reverse f) = reverse ((lift φ).map f)
                                    theorem Quiver.Symmetrify.lift_unique {V : Type u_2} [Quiver V] {V' : Type u_4} [Quiver V'] [HasReverse V'] (φ : V ⥤q V') (Φ : Symmetrify V ⥤q V') ( : of ⋙q Φ = φ) (hΦinv : ∀ {X Y : Symmetrify V} (f : X Y), Φ.map (reverse f) = reverse (Φ.map f)) :
                                    Φ = lift φ

                                    lift φ is the only prefunctor extending φ and preserving reverses.

                                    def Prefunctor.symmetrify {U : Type u_1} {V : Type u_2} [Quiver U] [Quiver V] (φ : U ⥤q V) :

                                    A prefunctor canonically defines a prefunctor of the symmetrifications.

                                    Equations
                                      Instances For
                                        @[simp]
                                        theorem Prefunctor.symmetrify_obj {U : Type u_1} {V : Type u_2} [Quiver U] [Quiver V] (φ : U ⥤q V) (a✝ : U) :
                                        φ.symmetrify.obj a✝ = φ.obj a✝
                                        @[simp]
                                        theorem Prefunctor.symmetrify_map {U : Type u_1} {V : Type u_2} [Quiver U] [Quiver V] (φ : U ⥤q V) {X✝ Y✝ : Quiver.Symmetrify U} (a✝ : (X✝ Y✝) (Y✝ X✝)) :
                                        φ.symmetrify.map a✝ = Sum.map φ.map φ.map a✝
                                        instance Quiver.Push.instHasReverse {V : Type u_2} [Quiver V] {V' : Type u_4} (σ : VV') [HasReverse V] :
                                        Equations
                                          instance Quiver.Push.instHasInvolutiveReverse {V : Type u_2} [Quiver V] {V' : Type u_4} (σ : VV') [h : HasInvolutiveReverse V] :
                                          Equations
                                            theorem Quiver.Push.of_reverse {V : Type u_2} [Quiver V] {V' : Type u_4} (σ : VV') [HasInvolutiveReverse V] (X Y : V) (f : X Y) :
                                            reverse ((of σ).map f) = (of σ).map (reverse f)
                                            instance Quiver.Push.ofMapReverse {V : Type u_2} [Quiver V] {V' : Type u_4} (σ : VV') [h : HasInvolutiveReverse V] :