# 6.1 Introduction

Like the general inductive types we discussed in http://planetmath.org/node/87578Chapter 5, higher inductive types are a general schema for defining new types generated by some constructors. But unlike ordinary inductive types, in defining a higher inductive type we may have “constructors” which generate not only points of that type, but also paths and higher paths in that type. For instance, we can consider the higher inductive type $\mathbb{S}^{1}$ generated by

• A point $\mathsf{base}:\mathbb{S}^{1}$, and

• A path $\mathsf{loop}:{\mathsf{base}=_{\mathbb{S}^{1}}\mathsf{base}}$.

This should be regarded as entirely analogous to the definition of, for instance, $\mathbf{2}$, as being generated by

• A point ${0_{\mathbf{2}}}:\mathbf{2}$ and

• A point ${1_{\mathbf{2}}}:\mathbf{2}$,

or the definition of $\mathbb{N}$ as generated by

• A point $0:\mathbb{N}$ and

• A function $\mathsf{succ}:\mathbb{N}\to\mathbb{N}$.

When we think of types as higher groupoids, the more general notion of “generation” is very natural: since a higher groupoid is a “multi-sorted object” with paths and higher paths as well as points, we should allow “generators” in all dimensions.

We will refer to the ordinary sort of constructors (such as $\mathsf{base}$) as point constructors or ordinary constructors, and to the others (such as $\mathsf{loop}$) as path constructors or higher constructors. Each path constructor must specify the starting and ending point of the path, which we call its source and target; for $\mathsf{loop}$, both source and target are $\mathsf{base}$.

Note that a path constructor such as $\mathsf{loop}$ generates a new inhabitant of an identity type, which is not (at least, not a priori) equal to any previously existing such inhabitant. In particular, $\mathsf{loop}$ is not a priori equal to $\mathsf{refl}_{\mathsf{base}}$ (although proving that they are definitely unequal takes a little thought; see Lemma 6.4.1 (http://planetmath.org/64circlesandspheres#Thmprelem1)). This is what distinguishes $\mathbb{S}^{1}$ from the ordinary inductive type $\mathbf{1}$.

There are some important points to be made regarding this generalization.

First of all, the word “generation” should be taken seriously, in the same sense that a group can be freely generated by some set. In particular, because a higher groupoid comes with operations on paths and higher paths, when such an object is “generated” by certain constructors, the operations create more paths that do not come directly from the constructors themselves. For instance, in the higher inductive type $\mathbb{S}^{1}$, the constructor $\mathsf{loop}$ is not the only nontrivial path from $\mathsf{base}$ to $\mathsf{base}$; we have also “$\mathsf{loop}\mathchoice{\mathbin{\raisebox{2.15pt}{\displaystyle\centerdot}% }}{\mathbin{\raisebox{2.15pt}{\centerdot}}}{\mathbin{\raisebox{1.075pt}{% \scriptstyle\,\centerdot\,}}}{\mathbin{\raisebox{0.43pt}{\scriptscriptstyle% \,\centerdot\,}}}\mathsf{loop}$” and “$\mathsf{loop}\mathchoice{\mathbin{\raisebox{2.15pt}{\displaystyle\centerdot}% }}{\mathbin{\raisebox{2.15pt}{\centerdot}}}{\mathbin{\raisebox{1.075pt}{% \scriptstyle\,\centerdot\,}}}{\mathbin{\raisebox{0.43pt}{\scriptscriptstyle% \,\centerdot\,}}}\mathsf{loop}\mathchoice{\mathbin{\raisebox{2.15pt}{% \displaystyle\centerdot}}}{\mathbin{\raisebox{2.15pt}{\centerdot}}}{% \mathbin{\raisebox{1.075pt}{\scriptstyle\,\centerdot\,}}}{\mathbin{\raisebox% {0.43pt}{\scriptscriptstyle\,\centerdot\,}}}\mathsf{loop}$” and so on, as well as $\mathord{{\mathsf{loop}}^{-1}}$, etc., all of which are different. This may seem so obvious as to be not worth mentioning, but it is a departure from the behavior of “ordinary” inductive types, where one can expect to see nothing in the inductive type except what was “put in” directly by the constructors.

Secondly, this generation is really free generation: higher inductive types do not technically allow us to impose “axioms”, such as forcing$\mathsf{loop}\mathchoice{\mathbin{\raisebox{2.15pt}{\displaystyle\centerdot}% }}{\mathbin{\raisebox{2.15pt}{\centerdot}}}{\mathbin{\raisebox{1.075pt}{% \scriptstyle\,\centerdot\,}}}{\mathbin{\raisebox{0.43pt}{\scriptscriptstyle% \,\centerdot\,}}}\mathsf{loop}$” to equal $\mathsf{refl}_{\mathsf{base}}$. However, in the world of $\infty$-groupoids, there is little difference between “free generation” and “presentation”, since we can make two paths equal up to homotopy by adding a new 2-dimensional generator relating them (e.g. a path $\mathsf{loop}\mathchoice{\mathbin{\raisebox{2.15pt}{\displaystyle\centerdot}% }}{\mathbin{\raisebox{2.15pt}{\centerdot}}}{\mathbin{\raisebox{1.075pt}{% \scriptstyle\,\centerdot\,}}}{\mathbin{\raisebox{0.43pt}{\scriptscriptstyle% \,\centerdot\,}}}\mathsf{loop}=\mathsf{refl}_{\mathsf{base}}$ in $\mathsf{base}=\mathsf{base}$). We do then, of course, have to worry about whether this new generator should satisfy its own “axioms”, and so on, but in principle any “presentation” can be transformed into a “free” one by making axioms into constructors. As we will see, by adding “truncation constructors” we can use higher inductive types to express classical notions such as group presentations as well.

Thirdly, even though a higher inductive type contains “constructors” which generate paths in that type, it is still an inductive definition of a single type. In particular, as we will see, it is the higher inductive type itself which is given a universal property (expressed, as usual, by an induction principle), and not its identity types. The identity type of a higher inductive type retains the usual induction principle of any identity type (i.e. path induction), and does not acquire any new induction principle.

Thus, it may be nontrivial to identify the identity types of a higher inductive type in a concrete way, in contrast to how in http://planetmath.org/node/87569Chapter 2 we were able to give explicit descriptions of the behavior of identity types under all the traditional type forming operations. For instance, are there any paths from $\mathsf{base}$ to $\mathsf{base}$ in $\mathbb{S}^{1}$ which are not simply composites of copies of $\mathsf{loop}$ and its inverse? Intuitively, it seems that the answer should be no (and it is), but proving this is not trivial. Indeed, such questions bring us rapidly to problems such as calculating the homotopy groups of spheres, a long-standing problem in algebraic topology for which no simple formula is known. Homotopy type theory brings a new and powerful viewpoint to bear on such questions, but it also requires type theory to become as complex as the answers to these questions.

Fourthly, the “dimension” of the constructors (i.e. whether they output points, paths, paths between paths, etc.) does not have a direct connection to which dimensions the resulting type has nontrivial homotopy in. As a simple example, if an inductive type $B$ has a constructor of type $A\to B$, then any paths and higher paths in $A$ result in paths and higher paths in $B$, even though the constructor is not a “higher” constructor at all. The same thing happens with higher constructors too: having a constructor of type $A\to(x=_{B}y)$ means not only that points of $A$ yield paths from $x$ to $y$ in $B$, but that paths in $A$ yield paths between these paths, and so on. As we will see, this possibility is responsible for much of the power of higher inductive types.

On the other hand, it is even possible for constructors without higher types in their inputs to generate “unexpected” higher paths. For instance, in the 2-dimensional sphere $\mathbb{S}^{2}$ generated by

• A point $\mathsf{base}:\mathbb{S}^{2}$, and

• A 2-dimensional path $\mathsf{surf}:\mathsf{refl}_{\mathsf{base}}=\mathsf{refl}_{\mathsf{base}}$ in ${\mathsf{base}=\mathsf{base}}$,

there is a nontrivial 3-dimensional path from $\mathsf{refl}_{\mathsf{refl}_{\mathsf{base}}}$ to itself. Topologists will recognize this path as an incarnation of the Hopf fibration. From a category-theoretic point of view, this is the same sort of phenomenon as the fact mentioned above that $\mathbb{S}^{1}$ contains not only $\mathsf{loop}$ but also $\mathsf{loop}\mathchoice{\mathbin{\raisebox{2.15pt}{\displaystyle\centerdot}% }}{\mathbin{\raisebox{2.15pt}{\centerdot}}}{\mathbin{\raisebox{1.075pt}{% \scriptstyle\,\centerdot\,}}}{\mathbin{\raisebox{0.43pt}{\scriptscriptstyle% \,\centerdot\,}}}\mathsf{loop}$ and so on: it’s just that in a higher groupoid, there are operations which raise dimension. Indeed, we saw many of these operations back in §2.1 (http://planetmath.org/21typesarehighergroupoids): the associativity and unit laws are not just properties, but operations, whose inputs are 1-paths and whose outputs are 2-paths.

Title 6.1 Introduction
\metatable