mathlib3 documentation


Groupoids #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

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.

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.


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

@[protected, instance]

In a groupoid, isomorphisms are equivalent to morphisms.


The functor from a groupoid C to its opposite sending every morphism to its inverse.

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.


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)] :