-
Notifications
You must be signed in to change notification settings - Fork 995
feat(Quiv): add the empty, vertex, point, interval, and walking quivers #24540
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
refactor: renamed Quiv.Defs to Quiv.Shapes
PR summary b6771ef6f1Import changes for modified filesNo significant changes to the import graph Import changes for all files
|
|
This PR/issue depends on:
|
|
This pull request has conflicts, please merge |
|
I apologize if this is a stupid question, but why does the "Walking Quiver" have an |
| /-- Extract the underlying element of a `Shrink` object using projection notation. -/ | ||
| @[simp] | ||
| noncomputable def Shrink.out {α : Type v} [Small.{w} α] (x : Shrink α) : α := | ||
| (equivShrink α).symm x | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I do not think we want/need this definition (which seems to be unused in the rest of the PR).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is used in a following PR on (co)limits in Quivers, where it greatly simplifies notation by enabling the projection notation: x.out versus having (equivShrink _).symm x everywhere.
That said, I forget why I lumped it into this PR.
| universe v u v₁ u₁ v₂ u₂ | ||
| open Limits | ||
|
|
||
| def Empty : Quiv.{v, u} := ⟨PEmpty, ⟨fun _ _ ↦ PEmpty⟩⟩ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are a few issues with this PR. One of these is that in category theory (and the same should apply for quivers and refl quivers), it is better practice not to define directly objects in Cat, but rather define a Category instance on a type, and only later, we may use Cat.of C if we need a term in Cat.
As it was observed by @robin-carlier , some of the quivers considered in this PR are refl quivers or even categories (and may have already been defined elsewhere), which also supports my previous remark about Quiver vs Quiv.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mmm. Maybe. The original reason for that is that it is difficult to define quiver shapes with a specific morphism universe level without defining the carrier type and the Quiver instance at the same time. But I did recently pick up a trick for that, so... let's see if it works!
It's a category, yes. I call it the I hadn't thought of |
|
Nope! The quiver isn't the image of the functor, it just so happens to have the same data as the functor does. To construct an
From this data, I can create a quiver by
That is, def quivOfFunc (F : WalkingQuiv ⥤ Type u) : Quiv.{u, u} where
α := F.obj 0
str := { Hom X Y := { e : F.obj 1 // F.map .source e = X ∧ F.map .target e = Y }And naturally I can turn that around. So at least for 'homogenous' quivers (quivers |
|
Yes, in the meantime I realized that this was what you were going for (again, this is similar to the construction OneTruncation₂ for reflexive quivers). Apologies for the confusion (and it’s really a brain fart on my end since I worked with OneTruncation₂ literally yesterday). Though I stick to the idea that we should find a better name than "WalkingQuiver" for this. |
| open Limits | ||
|
|
||
| /-- The empty quiver, with no vertices and no edges. -/ | ||
| def Empty := let _ := PUnit.{v}; PEmpty.{u + 1} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Definitions of quivers should rather be in the folder Combinatorics.Quiver. For the naming conventions, instead of Quiv.Empty, we should use Quiver.Empty (see Combinatorics.Quiver.SingleObj for example).
|
This pull request has conflicts, please merge |
Add:
0and1with two edges both0 -> 1. Functors from the walking quiver toTypedefine quivers, by interpretingF.obj 0as the type of vertices,F.obj 1as the type of edges, using one of the two edges to label the source of every edge and using the other to label the target.)