module Cat.Instances.Discrete.Pre where

Fundamental pregroupoids🔗

If is a type with no known h-level, we can not directly define a precategory where the type of objects is and is the type of paths since we will not know that this type is a set. However, we can still define an interesting precategory with type of objects by defining to be the set truncation

Since under Rezk completion this precategory presents the “path groupoid” of the groupoid truncation we refer to it as the fundamental pregroupoid of and denote it The naming and notation refers to the fundamental groups of Indeed, if is a point, then the endomorphism space is exactly the fundamental group

The fundamental pregroupoid of a type is the precategory with type of objects where the set of morphisms is given by the set truncation of the path space

  Π₁ :  {}  Type   Precategory  
  Π₁ X .Ob          = X
  Π₁ X .Hom     x y =  x  y ∥₀
  Π₁ X .Hom-set x y = hlevel 2

  Π₁ X .id      = inc refl
  Π₁ X ._∘_ p q =  q  p 

  Π₁ X .idr   = elim! λ p      ap ∥_∥₀.inc (∙-idl p)
  Π₁ X .idl   = elim! λ p      ap ∥_∥₀.inc (∙-idr p)
  Π₁ X .assoc = elim! λ p q r  ap ∥_∥₀.inc (sym (∙-assoc r q p))

As for discrete categories, we can extend functions to functors Turning families of objects into diagrams is the primary motivation for the construction of if was known to be a groupoid, we could replace with its groupoid truncation, and use the ordinary “discrete category” construction as the domain of the diagram; but since we will not be able to eliminate in general, we have to choose a different domain instead.

  Π₁-adjunct₁ : {x y : X} (F : X   C )   x  y ∥₀  Hom (F x) (F y)
  Π₁-adjunct₁ F (inc x) = path→iso (ap F x) .to
  Π₁-adjunct₁ F (squash x y p q i j) = Hom-set _ _
    (Π₁-adjunct₁ F x) (Π₁-adjunct₁ F y)
     i  Π₁-adjunct₁ F (p i))  i  Π₁-adjunct₁ F (q i)) i j

  Π₁-adjunct : (X   C )  Functor (Π₁ X) C
  Π₁-adjunct F .F₀   = F
  Π₁-adjunct F .F₁   = Π₁-adjunct₁ F
  Π₁-adjunct F .F-id = transport-refl _
  Π₁-adjunct F .F-∘ {x = x} = elim! λ p q 
    path→iso (ap F (q  p)) .to                     ≡⟨ ap  e  subst (Hom (F x)) e id) (ap-∙ F q p) 
    path→iso (ap F q  ap F p) .to                  ≡⟨ path→to-∙ C (ap F q) (ap F p) 
    (path→iso (ap F p) .to  path→iso (ap F q) .to)