Iterating the reflection of a quiver along a list of vertices #
Reflecting a quiver at a vertex reverses the arrows meeting that vertex. Iterating a reflection
changes the quiver, not the vertex type, so the carrier here is the quiver structure rather than
the type synonym TauCeti.Quiver.Reflect: the reflection at the second vertex has to be taken with
respect to the structure produced by the first. Accordingly TauCeti.Quiver.reflectAt repackages
TauCeti.Quiver.reflectHom as an operation on Quiver structures on a fixed vertex type — it has
the arrows of Reflect V i, by TauCeti.Quiver.hom_reflectAt_eq_hom_reflect — and
TauCeti.Quiver.reflectList folds it along a list.
Main definitions #
TauCeti.Quiver.reflectAt: reflection at a vertex, as an operation on quiver structures.TauCeti.Quiver.reflectList: reflection at each vertex of a list, in order.TauCeti.Quiver.fintypeHomReflectList: arrow-finiteness transported alongreflectList, the iterated counterpart ofTauCeti.Quiver.instFintypeReflectHom.
Main results #
TauCeti.Quiver.reflectAt_reflectAt: reflecting twice at the same vertex returns the quiver structure it started from.TauCeti.Quiver.reflectList_reverse_reflectList: reflecting along a list and then along its reverse returns the original quiver structure.Quiver.nonempty_reflectList_sum_hom_equiv: reflecting along any list keeps the arrows joining two vertices in either direction, so it changes the orientation of a quiver but not its underlying multigraph.TauCeti.Quiver.hom_reflectListandTauCeti.Quiver.hom_reflectList_of_not_iff: reflecting along a repetition-free list reverses exactly the arrows joining a vertex of the list to a vertex outside it.TauCeti.Quiver.reflectList_eq_self: reflecting once at every vertex restores the original quiver structure, withTauCeti.Quiver.hom_reflectList_of_forall_memthe same statement on arrow types.
Implementation notes #
All three definitions are @[expose]d. A module that iterates the reflection of representations
needs the reductions reflectList q (i :: l) = reflectList (reflectAt q i) l and
(a ⟶ b) = TauCeti.Quiver.reflectHom i a b in reflectAt q i to hold definitionally, so that a
recursive construction typechecks against the quiver structure its predecessor produced; the same
goes for the recursion of fintypeHomReflectList along the list.
References #
The lists along which this iteration is sink-admissible are studied in
TauCeti.RepresentationTheory.Quiver.Reflection.Admissible. A sink-admissible list may be empty,
may repeat a vertex and need not exhaust the vertices; it is along a sink-admissible ordering — a
sink-admissible list that is repetition-free and contains every vertex — that the reflection
functors compose into the Coxeter functor. See Bernstein--Gelfand--Ponomarev, Coxeter functors and
Gabriel's theorem.
Reflection as an operation on quiver structures #
Reflection at the vertex i, as an operation on the quiver structures carried by a fixed
vertex type: reflectAt q i has the arrows of q with every arrow incident to i reversed.
Unlike the type synonym TauCeti.Quiver.Reflect, this form iterates, which is what a sequence of
reflections needs.
Instances For
The arrows of reflectAt q i are the ones computed by TauCeti.Quiver.reflectHom.
reflectAt reproduces the quiver carried by the type synonym TauCeti.Quiver.Reflect.
Reflection at a vertex is an involution. Reflecting twice at the same vertex reverses the
arrows meeting it twice, returning the quiver structure it started from. Since reflectAt carries
the arrows of the type synonym TauCeti.Quiver.Reflect, the arrow types agree by
TauCeti.Quiver.hom_reflect_reflect.
Reflecting along a list of vertices #
Reflecting along a concatenation is reflecting along the two segments in turn, which is how an ordering is split into an already reflected initial segment and the entries still to come.
Reflecting along a list and then along its reverse returns the original quiver structure.
The arrows of an iteratively reflected quiver are finite in number whenever those of the
original one are: reflection only reverses arrows. This is the iterated counterpart of
TauCeti.Quiver.instFintypeReflectHom, recursive along the list because the reflection at each
vertex is taken with respect to the structure the previous one produced.
Instances For
The underlying multigraph #
Reflection at a vertex keeps the arrows joining two vertices, only redistributing them
between the two directions: the arrows running from a to b or from b to a are the same
before and after the reflection.
Reflection along any list keeps the underlying multigraph: the arrows joining two vertices, in either direction, are the same before and after the reflections.
Reflecting along a repetition-free list #
Reflecting along a repetition-free list. An arrow joining two vertices that are both on the list, or both off it, survives: each of its ends is reversed the same number of times.
Reflecting along a repetition-free list reverses the arrows joining a vertex of the list to a vertex outside it: exactly one of the two ends is met by a reflection.
Reflecting once at every vertex restores the quiver. Both ends of every arrow are met by a
reflection, so every arrow is reversed twice. This is the arrow-type form; the equality of quiver
structures itself is TauCeti.Quiver.reflectList_eq_self.
Reflecting once at every vertex returns the quiver structure it started from. In particular the composite of the reflections along a full sink-admissible ordering — the combinatorial shadow of the Coxeter functor — is an operation from the quiver to itself, not to some other orientation.