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.
inductive
CategoryTheory.Groupoid.Free.redStep
{V : Type u}
[Quiver V]
:
HomRel (Paths (Quiver.Symmetrify V))
The "reduction" relation
- step {V : Type u} [Quiver V] (X Z : Quiver.Symmetrify V) (f : X ⟶ Z) : redStep (CategoryStruct.id (Paths.of.obj X)) (CategoryStruct.comp f.toPath (Quiver.reverse f).toPath)
Instances For
The underlying vertices of the free groupoid
Equations
Instances For
instance
CategoryTheory.Groupoid.Free.instNonemptyFreeGroupoid
{V : Type u_1}
[Quiver V]
[Nonempty V]
:
Nonempty (FreeGroupoid V)
theorem
CategoryTheory.Groupoid.Free.congr_reverse
{V : Type u}
[Quiver V]
{X Y : Paths (Quiver.Symmetrify V)}
(p q : X ⟶ Y)
:
theorem
CategoryTheory.Groupoid.Free.congr_comp_reverse
{V : Type u}
[Quiver V]
{X Y : Paths (Quiver.Symmetrify V)}
(p : X ⟶ Y)
:
theorem
CategoryTheory.Groupoid.Free.congr_reverse_comp
{V : Type u}
[Quiver V]
{X Y : Paths (Quiver.Symmetrify V)}
(p : X ⟶ Y)
:
def
CategoryTheory.Groupoid.Free.quotInv
{V : Type u}
[Quiver V]
{X Y : FreeGroupoid V}
(f : X ⟶ Y)
:
Y ⟶ X
The inverse of an arrow in the free groupoid
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance
CategoryTheory.FreeGroupoid.instGroupoid
{V : Type u}
[Quiver V]
:
Groupoid (FreeGroupoid V)
Equations
The inclusion of the quiver on V
to the underlying quiver on FreeGroupoid V
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
CategoryTheory.Groupoid.Free.of_eq
{V : Type u}
[Quiver V]
:
of V = Quiver.Symmetrify.of ⋙q Paths.of ⋙q (Quotient.functor redStep).toPrefunctor
def
CategoryTheory.Groupoid.Free.lift
{V : Type u}
[Quiver V]
{V' : Type u'}
[Groupoid V']
(φ : V ⥤q V')
:
Functor (FreeGroupoid V) V'
The lift of a prefunctor to a groupoid, to a functor from FreeGroupoid V
Equations
Instances For
def
CategoryTheory.freeGroupoidFunctor
{V : Type u}
[Quiver V]
{V' : Type u'}
[Quiver V']
(φ : V ⥤q V')
:
Functor (FreeGroupoid V) (FreeGroupoid V')
The functor of free groupoid induced by a prefunctor of quivers
Equations
Instances For
theorem
CategoryTheory.Groupoid.Free.freeGroupoidFunctor_id
{V : Type u}
[Quiver V]
:
freeGroupoidFunctor (𝟭q V) = Functor.id (FreeGroupoid V)
theorem
CategoryTheory.Groupoid.Free.freeGroupoidFunctor_comp
{V : Type u}
[Quiver V]
{V' : Type u'}
[Quiver V']
{V'' : Type u''}
[Quiver V'']
(φ : V ⥤q V')
(φ' : V' ⥤q V'')
:
freeGroupoidFunctor (φ ⋙q φ') = (freeGroupoidFunctor φ).comp (freeGroupoidFunctor φ')