Homotopy Type Theory type > history (Rev #8)

“A type is defined as the range of significance of a propositional function, i.e., as the collection of arguments for which the said function has values.” – Bertrand Russell, 1908

Idea

A type theory is a formal system in which every term has a ‘type’, and operations in the system are restricted to acting on specific types.

A number of type theories have been used or proposed for doing homotopy type theory.

Here we will describe the types present in a typical models of homotopy type theory.

Universes

Russell-style universe

With Russell-style universes, all types are seen as elements of a type called 𝒰\mathcal{U}. This is the universe type. Due to Russel-like paradoxes, we cannot have 𝒰:𝒰\mathcal{U} : \mathcal{U}, therefore we have an infinite hierarchy of universes

𝒰 0:𝒰 1:𝒰 2:…\mathcal{U}_0 : \mathcal{U}_1 : \mathcal{U}_2 : \dots

for every nn. For most cases it will not matter what universe we are in.

Tarski-style universe

With Tarski-style universes, all types are seen as dependent types of a universal type family 𝒯\mathcal{T} given a type 𝒰\mathcal{U} called the universe type and a term X:𝒰X:\mathcal{U}, i.e. X:𝒰⊢𝒯(X)typeX:\mathcal{U} \vdash \mathcal{T}(X) type. The existence of Russell-like paradoxes means that we similarly cannot have a type 𝒰 ′:𝒰\mathcal{U}^\prime:\mathcal{U} such that 𝒯(𝒰 ′)≡𝒰\mathcal{T}(\mathcal{U}^\prime) \equiv \mathcal{U}.

Thus, we likewise have an infinite hierarchy of universes

⊢𝒰 0type\vdash \mathcal{U}_0 type
⊢𝒰 0 ′:𝒰 1\vdash \mathcal{U}_0^\prime:\mathcal{U}_1
⊢𝒯 1(𝒰 0 ′)≡𝒰 0type\vdash \mathcal{T}_1(\mathcal{U}_0^\prime) \equiv \mathcal{U}_0 type
⊢𝒰 1 ′:𝒰 2\vdash \mathcal{U}_1^\prime:\mathcal{U}_2
⊢𝒯 2(𝒰 1 ′)≡𝒰 1type\vdash \mathcal{T}_2(\mathcal{U}_1^\prime) \equiv \mathcal{U}_1 type
⋮\vdots

for every nn. For most cases it will not matter what universe we are in.

Function types

Given a type AA and BB, there is a type A→BA \to B called the function type representing the type of functions from AA to BB. A function can be defined explicitly using lambda notation λx.y\lambda x . y. There is a computation rule saying there is a reduction (λx.y)a≡y[a/x](\lambda x . y ) a \equiv y[a / x] for some a:Aa : A. The notation y[a/x]y[a / x] means to replace all occurances of xx with aa in yy, giving us a term of BB.

Universes are closed under function types, i.e.

A:𝒰,B:𝒰⊢(A→ 𝒰B):𝒰A: \mathcal{U}, B: \mathcal{U} \vdash (A \to_\mathcal{U} B) : \mathcal{U}

and

𝒯(A→ 𝒰B)≡𝒯(A)→𝒯(B)\mathcal{T}(A \to_\mathcal{U} B) \equiv \mathcal{T}(A) \to \mathcal{T}(B)

Pi types

(…)

Pair types

Given a type AA and BB, there is a type A×BA \times B called the pair type? or product type? representing the type of pairs (a,b)(a, b) for a:Aa:A and b:Bb:B.

Universes are closed under pair types, i.e.

A:𝒰,B:𝒰⊢(A× 𝒰B):𝒰A: \mathcal{U}, B: \mathcal{U} \vdash (A \times_\mathcal{U} B) : \mathcal{U}

and

𝒯(A× 𝒰B)≡𝒯(A)×𝒯(B)\mathcal{T}(A \times_\mathcal{U} B) \equiv \mathcal{T}(A) \times \mathcal{T}(B)

Sigma types

(…)

Empty type

(…)

Unit type

(…)

Identity types

(…)

Homotopy pushout types

Given types AA, BB, and CC, and functions f:C→Af:C \to A and g:C→Ag:C \to A, there is a type A⊔ CBA \sqcup_C B called the homotopy pushout type? representing the homotopy pushout of ff and gg.

Special cases of homotopy pushout types include the type of booleans, which is defined as

2≔1⊔ 012 \coloneqq 1 \sqcup_0 1

the coproduct type, which is defined as

A+B≔A⊔ 0BA + B \coloneqq A \sqcup_0 B

and the circle type, which is defined as

S 1≔1⊔ 21S^1 \coloneqq 1 \sqcup_2 1

References

category: type theory

Revision on May 1, 2022 at 23:55:54 by Anonymous?. See the history of this page for a list of all contributions to it.