mathlib documentation


Groupoids #

We define groupoid as a typeclass extending category, asserting that all morphisms have inverses.

The instance is_iso.of_groupoid (f : X ⟶ Y) : is_iso f means that you can then write inv f to access the inverse of any morphism f.

groupoid.iso_equiv_hom : (X ≅ Y) ≃ (X ⟶ Y) provides the equivalence between isomorphisms and morphisms in a groupoid.

We provide a (non-instance) constructor groupoid.of_is_iso from an existing category with is_iso f for every f.

See also #

See also category_theory.core for the groupoid of isomorphisms in a category.

structure category_theory.groupoid (obj : Type u) :
Type (max u (v+1))

A groupoid is a category such that all morphisms are isomorphisms.

Instances of this typeclass
Instances of other typeclasses for category_theory.groupoid
  • category_theory.groupoid.has_sizeof_inst
theorem category_theory.groupoid.inv_comp {obj : Type u} [self : category_theory.groupoid obj] {X Y : obj} (f : X Y) :
theorem category_theory.groupoid.comp_inv {obj : Type u} [self : category_theory.groupoid obj] {X Y : obj} (f : X Y) :
def category_theory.large_groupoid (C : Type (u+1)) :
Type (u+1)

A large_groupoid is a groupoid where the objects live in Type (u+1) while the morphisms live in Type u.

def category_theory.small_groupoid (C : Type u) :
Type (u+1)

A small_groupoid is a groupoid where the objects and morphisms live in the same universe.

@[protected, instance]
def category_theory.groupoid.iso_equiv_hom {C : Type u} [category_theory.groupoid C] (X Y : C) :
(X Y) (X Y)

In a groupoid, isomorphisms are equivalent to morphisms.

noncomputable def category_theory.groupoid.of_is_iso {C : Type u} [category_theory.category C] (all_is_iso : ∀ {X Y : C} (f : X Y), category_theory.is_iso f) :

A category where every morphism is_iso is a groupoid.

def category_theory.groupoid.of_hom_unique {C : Type u} [category_theory.category C] (all_unique : Π {X Y : C}, unique (X Y)) :

A category with a unique morphism between any two objects is a groupoid

@[protected, instance]
def category_theory.groupoid_pi {I : Type u} {J : I → Type u₂} [Π (i : I), category_theory.groupoid (J i)] :
category_theory.groupoid (Π (i : I), J i)