Reorienting a quiver #
A Bool-valued labelling σ of the arrows of a quiver Q specifies a change of orientation: this
file builds the quiver TauCeti.Reorient Q σ, whose arrows are those of Q with the ones labelled
true turned around.
The two doubled quivers Quiver.Symmetrify (Reorient Q σ) and Quiver.Symmetrify Q carry exactly
the same arrows, distributed differently between an arrow and its formal reverse. That is the
content of TauCeti.reorientSymmetrify and TauCeti.reorientSymmetrifyInv, mutually inverse
prefunctors which are the identity on vertices and commute with reversal. They are the
identification along which a construction on doubled quivers -- the additive preprojective algebra
-- is compared across a change of orientation.
Main definitions #
TauCeti.Reorient: the quiverQwith the arrows labelledtruebyσturned around.TauCeti.reorientHomEquiv: the identification of a hom set ofReorient Q σwith the two subtypes of hom sets ofQit is built from, together withTauCeti.reorientHom_induction_onthe general elimination interface for a reoriented arrow.TauCeti.reorientSymmetrifyandTauCeti.reorientSymmetrifyInv: the two prefunctors between the doubled quivers.
Main results #
TauCeti.reorientSymmetrify_comp_reorientSymmetrifyInvandTauCeti.reorientSymmetrifyInv_comp_reorientSymmetrify: the two prefunctors are inverse, so the two doubled quivers are isomorphic.TauCeti.reorientSymmetrify_map_reverse: the comparison commutes with arrow reversal.
Implementation notes #
Reorient Q σ is a semireducible type synonym for Q, following Quiver.Symmetrify: were it
reducible, instance search would unfold it and replace the reoriented quiver structure by that of
Q. Its arrows i ⟶ j are the disjoint union of the arrows i ⟶ j of Q which σ leaves alone
and the arrows j ⟶ i of Q which σ turns around, so a hom set of the doubled quiver
Symmetrify (Reorient Q σ) splits into four pieces. Sorting an arrow of Symmetrify Q into those
four pieces is what TauCeti.reorientSymmetrifyInv does, and it is why that prefunctor, unlike its
inverse, is defined by a case distinction on the value of σ.
Turning around a single arrow is the special case where σ is supported on one arrow; allowing
an arbitrary σ performs an arbitrary composite of such flips in one step.
References #
This file supplies the doubled-quiver identification which the orientation-independence clause of
Layer 4 of TauCetiRoadmap/ZigzagPreprojective/README.md needs; see Crawley-Boevey, Quiver
algebras, weighted projective lines, and the Deligne--Simpson problem, Section 1.
The quiver obtained from Q by turning around exactly the arrows on which the labelling σ
takes the value true: an arrow i ⟶ j of Reorient Q σ is either an arrow i ⟶ j of Q which
σ leaves alone, or an arrow j ⟶ i of Q which σ turns around.
Equations
- TauCeti.Reorient Q _σ = Q
Instances For
A hom set of a reorientation is a disjoint union of two subtypes of hom sets of Q, hence
finite. The vertices are taken in Q; TauCeti.instFintypeReorientHom is the instance form, whose
vertices are taken in Reorient Q σ so that instance search can use it.
Equations
- TauCeti.reorientHomFintype σ i j = { elems := Finset.univ.disjSum Finset.univ, complete := ⋯ }
Instances For
Vertices and arrows #
The vertex of Reorient Q σ underlying a vertex of Q. The two vertex types are
definitionally equal, so this is the identity; naming it keeps the two quiver structures apart.
Equations
- TauCeti.reorientVertex σ v = v
Instances For
The arrow of Reorient Q σ carried by an arrow of Q which σ turns around: it runs from
the head of the original arrow to its tail.
Equations
- TauCeti.reorientFlip σ a h = Sum.inr ⟨a, h⟩
Instances For
Every arrow of a reorientation is one of the two kinds: the arrows i ⟶ j of
Reorient Q σ are the arrows i ⟶ j of Q which σ leaves alone together with the arrows
j ⟶ i of Q which σ turns around. This equivalence is the general elimination interface for a
reoriented hom set, so no consumer needs to unfold TauCeti.reorientQuiver;
TauCeti.reorientHom_induction_on is its tactic form.
Equations
- TauCeti.reorientHomEquiv σ i j = Equiv.refl (TauCeti.reorientVertex σ i ⟶ TauCeti.reorientVertex σ j)
Instances For
Case analysis on an arrow of a reorientation: it is either an arrow of Q which σ leaves
alone or an arrow of Q which σ turns around. This is the tactic form of
TauCeti.reorientHomEquiv.
A sum over the vertices of a reorientation is a sum over the vertices of Q.
A sum over a hom set of a reorientation splits into the arrows σ leaves alone and the arrows
σ turns around.
The doubled quivers of two orientations agree #
The comparison prefunctor from the doubled reoriented quiver to the doubled quiver. It is the
identity on vertices; on arrows it forgets which of the four pieces of a hom set of
Symmetrify (Reorient Q σ) an arrow came from and remembers only whether it runs forwards or
backwards in Q. The body is exposed because the dependent source and target types of its public
arrow-map equations contain the object map.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The inverse comparison: an arrow of the doubled quiver is sorted into one of the four pieces of
a hom set of Symmetrify (Reorient Q σ) according to whether it runs forwards or backwards in Q
and whether σ turns it around. As for TauCeti.reorientSymmetrify, exposure is needed for the
dependent endpoint types of its public arrow-map equations.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The comparison of doubled quivers is the identity on vertices.
The inverse comparison of doubled quivers is the identity on vertices.
The inverse comparison sends an arrow which σ leaves alone to the corresponding arrow of the
reoriented quiver. Deliberately not a simp lemma: Quiver.Symmetrify.of_map rewrites
Symmetrify.of.map a to Sum.inl a on the left-hand side, and simpNF rejects it.
The inverse comparison sends the formal reverse of an arrow which σ leaves alone to the
formal reverse of the corresponding reoriented arrow. Deliberately not a simp lemma: simplifying
formal reversal first would make this a non-normal-form rule.
The inverse comparison sends an arrow which σ turns around to the formal reverse of the
corresponding reoriented arrow. Deliberately not a simp lemma, for the reason recorded on
TauCeti.reorientSymmetrifyInv_map_of_keep.
The inverse comparison sends the formal reverse of an arrow which σ turns around to the
corresponding reoriented arrow. Deliberately not a simp lemma, for the reason recorded on
TauCeti.reorientSymmetrifyInv_map_reverse_of_keep.
An arrow of Q which σ leaves alone stays an arrow of the doubled quiver. Deliberately not a
simp lemma: Quiver.Symmetrify.of_map rewrites Symmetrify.of.map ... to Sum.inl ... on the
left-hand side, and simpNF rejects it.
The formal reverse of an arrow which σ leaves alone stays a formal reverse. Deliberately not
a simp lemma: Quiver.symmetrify_reverse rewrites Quiver.reverse to Sum.swap on the left-hand
side, and simpNF rejects the pair.
An arrow of Q which σ turns around becomes the formal reverse of itself. Deliberately not a
simp lemma, for the reason recorded on TauCeti.reorientSymmetrify_map_of_keep.
The formal reverse of a turned-around arrow is the arrow itself. Deliberately not a simp
lemma, for the reason recorded on TauCeti.reorientSymmetrify_map_reverse_of_keep.
The two comparisons are inverse, starting from the reoriented quiver.
The two comparisons are inverse, starting from the original quiver.
The comparison of doubled quivers commutes with arrow reversal, so it identifies the two doubled quivers as quivers with an involutive reverse.