Built with Alectryon, running Coq+SerAPI v8.19.0+0.19.3. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+āCtrl+ā to navigate, Ctrl+š±ļø to focus. On Mac, use ā instead of Ctrl.
(** * Fundamental Pregroupoids *)
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Require Import HoTT.Truncations.Core.Require Import HoTT.Basics.Set Universe Polymorphism.Set Implicit Arguments.Generalizable All Variables.Set Asymmetric Patterns.LocalOpen Scope path_scope.LocalOpen Scope category_scope.(** Quoting the HoTT Book: Example. For _any_ type [X], there is a precategory with [X] as its type of objects and with [hom(x,y) : ā„x = yā„ā]. The composition operation [ā„y = zā„ā ā ā„x = yā„ā ā ā„x = zā„ā] is defined by induction on truncation from concatenation [(y = z) ā (x = y) ā (x = z)]. We call this the fundamental pregroupoid of [X]. *)(** We don't want access to all of the internals of a groupoid category at top level. *)ModuleFundamentalPreGroupoidCategoryInternals.Sectionfundamental_pregroupoid_category.VariableX : Type.Local Notationobject := X (only parsing).Local Notationmorphism s d := (Trunc 0 (s = d :> X)) (only parsing).
X: Type s, d, d': X m: Trunc 0 (d = d') m': Trunc 0 (s = d)
Trunc 0 (s = d')
X: Type s, d, d': X m: Trunc 0 (d = d') m': Trunc 0 (s = d)
Trunc 0 (s = d')
X: Type s, d, d': X m: Trunc 0 (d = d') m': s = d
Trunc 0 (s = d')
X: Type s, d, d': X m': s = d m: d = d'
Trunc 0 (s = d')
X: Type s, d, d': X m': s = d m: d = d'
s = d'
exact (m' @ m).Defined.Definitionidentityx : morphism x x
:= tr (reflexivity _).GlobalArguments compose [s d d'] m m' / .GlobalArguments identity x / .Endfundamental_pregroupoid_category.EndFundamentalPreGroupoidCategoryInternals.(** ** Categorification of the fundamental pregroupoid of a type *)