Free groupoid on a quiver #
This file defines the free groupoid on a quiver, the lifting of a prefunctor to its unique extension as a functor from the free groupoid, and proves uniqueness of this extension.
Main results #
Given the type V
and a quiver instance on V
:
FreeGroupoid V
: a type synonym forV
.FreeGroupoid.instGroupoid
: theGroupoid
instance onFreeGroupoid V
.lift
: the lifting of a prefunctor fromV
toV'
whereV'
is a groupoid, to a functor.FreeGroupoid V ⥤ V'
.lift_spec
andlift_unique
: the proofs that, respectively,lift
indeed is a lifting and is the unique one.
Implementation notes #
The free groupoid is first defined by symmetrifying the quiver, taking the induced path category and finally quotienting by the reducibility relation.
The "reduction" relation
- step {V : Type u} [Quiver V] (X Z : Symmetrify V) (f : X ⟶ Z) : redStep (CategoryTheory.CategoryStruct.id ((CategoryTheory.Paths.of (Symmetrify V)).obj X)) (CategoryTheory.CategoryStruct.comp f.toPath (reverse f).toPath)
Instances For
The underlying vertices of the free groupoid
Instances For
@[deprecated Quiver.FreeGroupoid (since := "2025-10-02")]
Alias of Quiver.FreeGroupoid
.
The underlying vertices of the free groupoid
Instances For
instance
Quiver.FreeGroupoid.instNonempty
{V : Type u_1}
[Quiver V]
[Nonempty V]
:
Nonempty (FreeGroupoid V)
theorem
Quiver.FreeGroupoid.congr_reverse
{V : Type u}
[Quiver V]
{X Y : CategoryTheory.Paths (Symmetrify V)}
(p q : X ⟶ Y)
:
theorem
Quiver.FreeGroupoid.congr_comp_reverse
{V : Type u}
[Quiver V]
{X Y : CategoryTheory.Paths (Symmetrify V)}
(p : X ⟶ Y)
:
theorem
Quiver.FreeGroupoid.congr_reverse_comp
{V : Type u}
[Quiver V]
{X Y : CategoryTheory.Paths (Symmetrify V)}
(p : X ⟶ Y)
:
The inverse of an arrow in the free groupoid
Equations
- Quiver.FreeGroupoid.quotInv f = Quot.liftOn f (fun (pp : X.as ⟶ Y.as) => Quot.mk (CategoryTheory.Quotient.CompClosure Quiver.FreeGroupoid.redStep) (Quiver.Path.reverse pp)) ⋯
Instances For
Equations
- Quiver.FreeGroupoid.instGroupoid = { toCategory := Quiver.FreeGroupoid.instCategory, inv := fun {X Y : Quiver.FreeGroupoid V} => Quiver.FreeGroupoid.quotInv, inv_comp := ⋯, comp_inv := ⋯ }
The inclusion of the quiver on V
to the underlying quiver on FreeGroupoid V
Equations
- Quiver.FreeGroupoid.of V = { obj := fun (X : V) => { as := X }, map := fun {X Y : V} (f : X ⟶ Y) => Quot.mk (CategoryTheory.Quotient.CompClosure Quiver.FreeGroupoid.redStep) f.toPosPath }
Instances For
def
Quiver.FreeGroupoid.lift
{V : Type u}
[Quiver V]
{V' : Type u'}
[CategoryTheory.Groupoid V']
(φ : V ⥤q V')
:
The lift of a prefunctor to a groupoid, to a functor from FreeGroupoid V
Equations
Instances For
theorem
Quiver.FreeGroupoid.lift_spec
{V : Type u}
[Quiver V]
{V' : Type u'}
[CategoryTheory.Groupoid V']
(φ : V ⥤q V')
:
theorem
Quiver.FreeGroupoid.lift_unique
{V : Type u}
[Quiver V]
{V' : Type u'}
[CategoryTheory.Groupoid V']
(φ : V ⥤q V')
(Φ : CategoryTheory.Functor (FreeGroupoid V) V')
(hΦ : of V ⋙q Φ.toPrefunctor = φ)
: