Semantics of type theory

From HandWiki

The semantics of type theory involves several closely related kinds of models, which are constructed and studied in order to justify axioms and new type theories, and to use type theory as an internal language for categories, higher categories and other mathematical structures.

There are several ways to package the structure of a model of type theory, including categories with families, comprehension categories, categories with attributes and contextual categories.[1] In all cases, a model is a base substrate, together with extra structure and requirements for each rule of the type theory under consideration.

Categories with families

Categories with families, introduced by Dybjer,[2] are a commonly used notion of model which stays relatively close to the syntax of type theory.

Introduction

The CwF structure is designed to closely parallel the syntax of type theory.

  • To each derivable syntactic judgment of the form “Γ is a context”, the semantics in a CwF associates an element Γ^ of a set of contexts denoted Con.
  • To each derivable judgment “A is a type in context Γ” is associated an element A^ of a set of types in context Γ^ denoted Ty⁡(Γ^). (Here A^ depends on Γ and not merely on A although this dependency is dropped in the notation.)
  • To each derivable judgment “t is a term of type A in context Γ” (usually denoted Γ⊢t:A) is associated an element t^ of a set of terms of type A^ in context Γ^, denoted TmΓ^(A^).

(The terminology may be confusing because the "terms" of the model need not be finite syntactic objects as in the traditional sense of "term" in mathematical logic, but merely constitute the semantics of the syntactic terms of the type theory. Some authors instead call them elements, or refer to semantic contexts, semantic types and semantic terms.)

The semantic interpretation of definitional equality is always actual equality in the model, so whenever a judgment “A and B are definitionally equal types in context Γ” is derivable, the interpretation in the model must ensure A^=B^, and whenever “t and u are definitionally equal terms of type A in context Γ” is derivable, the interpretation ensures t^=u^.

A CwF contains operations to interpret contexts: a special element ⋄∈Con to model the empty context, and a context extension operation ▹ to model the addition of a new variable to a context.

The remaining data of CwFs serves to interpret the substitution operation necessitated by dependent types: if f has the dependent function type (x:A)→B where B is a term involving the variable x, the application of f to a term t has the type B[x:=t]. CwFs use parallel substitutions, namely substitutions between entire contexts. If there were a judgment in the syntax which was directly interpreted by a substitution from Γ^ to Δ^ in the CwF, it would be “σ is a list of terms in context Γ, one for each type in Δ, having this type with the previous variables from Δ substituted by the previous terms in the list” (e.g., a parallel substitution from Γ to x:A,y:B in the syntax would be a term t of type A in context Γ and a term u of type B[x:=t] in context Γ).

Definition

Let Fam denote the category of families of sets.[lower-alpha 1] An object of Fam is a family (Ai)i∈I where I is a set and each Ai is a set. A morphism f:(Ai)i∈I→(Bj)j∈J in Fam is a function r:I→J together with, for each i∈I, a function ti:Ai→Br(i). (This category is equivalent to the arrow category of Set, through the correspondence between a function f:A→I and the family of sets (f−1({i}))i∈I.)

A category with families (CwF) consists of the following data:[3][4][5][2]

  • A category.

    The class of objects is denoted Con and the objects are called contexts. The class of morphisms from a context Δ to a context Γ is denoted Sub⁡(Δ,Γ) and these morphisms are called substitutions from Δ to Γ.

  • A contravariant functor from this category to Fam.

    The image of a context Γ is a family of sets denoted (TmΓ(A))A∈Ty⁡(Γ) (we usually drop the subscript in TmΓ(A)). The elements of Ty⁡(Γ) are called types in context Γ, and the elements of Tm⁡(A) are called terms of type A (in context Γ).

    The image of a substitution σ∈Sub⁡(Δ,Γ) is a morphism (Tm⁡(A))A∈Ty⁡(Γ)→(Tm⁡(B))B∈Ty⁡(Δ) in Fam. Its component Ty⁡(Γ)→Ty⁡(Δ) is denoted by A↦A[σ], and for each A∈Ty⁡(Γ), its component Tm⁡(A)→Tm⁡(A[σ]) is also denoted t↦t[σ]. These operations are respectively called substitution in types and substitution in terms.

    Alternatively, this data can be packaged as a presheaf of types Ty on the category of contexts, and a dependent presheaf of terms Tm on the category of contexts over the presheaf of types.

  • A terminal object in the category of contexts.

    It is denoted ⋄ and called the empty context.

  • For each context Γ and for each type A∈Ty⁡(Γ), consider the presheaf on the category of contexts which sends a context Δ to the set of pairs of a substitution σ∈Sub⁡(Δ,Γ) and a term t∈TmΔ(A[σ]). The functorial action of the presheaf on a substitution δ∈Sub⁡(Σ,Δ) is given by (σ,t)↦(σ∘δ,t[δ]). The last part of the CwF data is a representing object for this presheaf, together with a natural isomorphism witnessing the representation.

    The representing context is denoted Γ▹A and called the context extension of Γ by A.

    In one direction, the natural isomorphism sends a substitution σ∈Sub⁡(Δ,Γ) and a term t∈Tm⁡(A[σ]) to a new substitution (σ▹t)∈Sub⁡(Δ,Γ▹A) called the substitution extension of σ by t. In the other direction, it sends a substitution σ′∈Sub⁡(Δ,Γ▹A) to a pair of its tail tl⁡(σ′)∈Sub⁡(Δ,Γ) and its head term hd⁡(σ′)∈Tm⁡(A[tl⁡(σ′)]).

    Explicitly, the fact that this is a natural isomorphism means that the following laws hold:tl⁡(σ▹t)=σhd⁡(σ▹t)=tσ′=tl⁡(σ′)▹hd⁡(σ′)(σ▹t)∘δ=(σ∘δ)▹t[δ]tl⁡(σ′)∘δ=tl⁡(σ′∘δ)hd⁡(σ′)[δ]=hd⁡(σ′∘δ)

Defined operations

Let Γ be a context and A a type in Γ. The head and tail of the identity substitution from Γ▹A to itself are respectively a substitution wk⁡∈Sub⁡(Γ▹A,Γ) called weakening, and a term vz⁡∈TmΓ▹A(A[wk⁡]) called the head variable. Informally, the weakening adds an unused variable to the context, and the head variable is the term given by the variable last declared in the context.

Observe that weakening and the head variable allow to recover the tail and head of any substitution σ∈Sub⁡(Δ,Γ▹A) by tl⁡(σ)=tl⁡(id∘σ)=tl⁡(id)∘σ=wk∘σ and hd⁡(σ)=hd⁡(id⁡∘σ)=hd⁡(id⁡)[σ]=vz⁡[σ].

Furthermore, given a substitution σ∈Sub⁡(Δ,Γ), and a type A∈Ty⁡(Γ), we define a lifted substitution σ+∈Sub⁡(Δ▹A[σ],Γ▹A) by σ+:=(σ∘wk)▹vz.

Extra structure for type formers

For each rule of a particular type theory, there is added structure and/or requirements on a CwF for it to model the type theory.

  • A rule which introduces a type or term former is interpreted by an operation returning a type or term of the CwF, which is required to commute with substitution. The latter requirement is necessary since substitution is defined recursively in the syntax, e.g., (A×B)[x:=t] is A[x:=t]×B[x:=t].
  • A rule adding definitional equalities is interpreted by a requirement that the operations on the CwF satisfy a corresponding equation.

To illustrate this, consider the case of dependent pair types (Σ-types). The type formation rule is

Γ contextΓ⊢A typeΓ,x:A⊢B typeΓ⊢(x:A)×B type

The corresponding operation on a CwF is: for each Γ∈Con, for each A∈Ty⁡(Γ), and for each B∈Ty⁡(Γ▹A), a type Σ(A,B)∈Ty⁡(Γ). This operation is required to satisfy the substitution rule: for all substitution σ∈Sub⁡(Δ,Γ) and types A∈Ty⁡(Γ),B∈Ty⁡(Γ▹A), we must have Σ(A,B)[σ]=Σ(A[σ],B[σ+]).

The term formation rules for the pairing operation is:

Γ contextΓ⊢A typeΓ,x:A⊢B typeΓ⊢t:AΓ⊢u:B[x:=t]Γ⊢⟨t,u⟩:(x:A)×B

The corresponding operation on a CwF is: for each Γ∈Con, A∈Ty⁡(Γ), B∈Ty⁡(Γ▹A), t∈Tm⁡(A) and u∈Tm⁡(B[id⁡▹t])), a term ⟨t,u⟩∈Tm⁡(Σ(A,B)). This must satisfy the substitution rule:

⟨t,u⟩[σ]=⟨t[σ],u[σ]⟩.

This equation is meaningful because of the CwF laws and the substitution rule for Σ. The left hand side is an element of Σ(A,B)[σ], which by the substitution rule for Σ is equal to Σ(A[σ],B[σ+]). To see that the right hand side is in this set, one has to check that u[σ] is in B[σ+][id⁡▹t[σ]]. This holds because u[σ] is in B[id⁡▹t][σ] and

B[id⁡▹t][σ]=B[(id⁡▹t)∘σ]=B[(id⁡∘σ)▹t[σ]]=B[σ▹t[σ]]

while

B[σ+][id⁡▹t[σ]]=B[(σ∘wk⁡)▹vz⁡][id⁡▹t[σ]]=B[((σ∘wk⁡)▹vz⁡)∘(id⁡▹t[σ])]=B[((σ∘wk⁡)∘(id⁡▹t[σ]))▹vz⁡[id⁡▹t[σ]]]=B[σ∘(wk⁡∘(id⁡▹t[σ]))▹vz⁡[id⁡▹t[σ]]]=B[σ∘tl⁡(id⁡▹t[σ])▹hd⁡(id⁡▹t[σ])]=B[(σ∘id⁡)▹t[σ]]=B[σ▹t[σ]].

Finally, the remaining rules for dependent pair types are the computation rules (or β-rules)

Γ contextΓ⊢A typeΓ,x:A⊢B typeΓ⊢t:AΓ⊢u:B[x:=t]Γ⊢fst⁡(⟨t,u⟩)≡t:A

Γ contextΓ⊢A typeΓ,x:A⊢B typeΓ⊢t:AΓ⊢u:B[x:=t]Γ⊢snd⁡(⟨t,u⟩)≡u:B[x:=t]

and the uniqueness rule (or η-rule)

Γ contextΓ⊢A typeΓ,x:A⊢B typeΓ⊢p:(x:A)×BΓ⊢p≡⟨fst⁡(p),snd⁡(p)⟩:(x:A)×B

These are interpreted by requiring the following equations on the previous operations:

  • fst⁡(⟨t,u⟩)=t and snd⁡(⟨t,u⟩)=u (for Γ∈Con, A∈Ty⁡(Γ), B∈Ty⁡(Γ▹A), t∈Tm⁡(A), u∈Tm⁡(B[id⁡▹t])),
  • p=⟨fst⁡(p),snd⁡(p)⟩ (for Γ∈Con, A∈Ty⁡(Γ), B∈Ty⁡(Γ▹A), p∈Tm⁡(Σ(A,B))).

Universes

The case of universes is somewhat special because it is common to define the syntax of type theory without a separate judgment for “A is a type in context Γ”, instead using “A is a term of type 𝒰 in context Γ”, i.e., Γ⊢A:𝒰n, where 𝒰n is the n-th universe (also denoted Typen, especially in proof assistants). This is called Russell universes. To give semantics to this kind of type theory, one needs to requirement in the CwF structure that the interpretation of both kinds of judgments in the semantics coincide.

First consider the simpler case of a single Russell universe 𝒰 containing itself (the syntax has the type in type rule that 𝒰 has type 𝒰, which is inconsistent). The corresponding requirements on a CwF are:

  • For each context Γ, a type 𝒰∈Ty⁡(Γ) (we leave the dependency on Γ implicit to lighten the notation), with the substitution rule 𝒰[σ]=𝒰. (This is equivalent to the data of a single type in the empty context 𝒰∈Ty⁡(⋄), the version in an arbitrary context Γ being recovered as 𝒰[ϵ] where ϵ is the unique substitution from Γ to ⋄.)
  • An equality of sets Ty⁡(Γ)=TmΓ(𝒰) for every context Γ.

For a hierarchy of universes 𝒰0, 𝒰1 where 𝒰n has type 𝒰n+1, …, there is a complication since types are stratified in the syntax and therefore must also be stratified in the semantics. This is treated using a slight variant of CwFs[6] which consists of a category of contexts and substitutions, a terminal object for the empty context, and for each universe level n, a functor from this category to families of sets, mapping a context Γ to a family Γ↦(TmΓ(A))A∈Tyn(Γ) of types of level n and terms of these types, equipped with an operation to extend the context with a type of level n (giving for A∈Tyn(Γ) a bijection Sub⁡(Δ,Γ▹nA)≅(σ∈Sub⁡(Δ,Γ))×TmΔ(A[σ]) natural in Δ). One can then model universes with, for each level n, types 𝒰n∈Tyn+1(Γ) with the substitution rule 𝒰n[σ]=𝒰n, and an equality of sets Tyn(Γ)=TmΓ(𝒰n).

A slightly weaker variant is Coquand universes, which require a bijection between the sets Tyn(Γ) and TmΓ(𝒰n) natural in Γ, instead of an equality. This corresponds to a syntax with a primitive operation El that takes an element of the universe 𝒰 (a “code” for a type) and gives an actual type, and another primitive operation code that converts back a type into a code, with definitional equalities code⁡(El⁡(t))≡t and El⁡(code⁡(A))≡A. Coquand's original motivation for introducing this style of universes is that they are the most natural to construct in presheaf models.[7]

Finally, an even weaker variant is Tarski universes, which only have the El operation but not a code operation, and which require, for each type former, a counterpart on the level of codes, e.g., an operation −×c− on TmΓ(𝒰) with the definitional equality El⁡(t×cu)≡El⁡(t)×El⁡(u), etc.

Some type theories have universe cumulativity: a type in a universe is also automatically a type in all higher universes. This can be treated in various ways, including subset inclusions between the Tyn(Γ),[6] and several variants of lifting operations between universes.[8]

Democracy

The basic intuition stemming from the syntax is that a context is a list of types x0:A0,…,xk−1:Ak−1, which is essentially equivalent to an iterated Σ-type (x0:A0)×…×(xk−2:Ak−2)×Ak−1. This is not true in all models, but it can be a useful property to consider.

A CwF is democratic when every context Γ is isomorphic (in the category of contexts) to ⋄▹A for some closed type A (i.e., a type in the empty context ⋄).[9]: 6 

The set model

The set model[4]: §3.5 [2]: 2 [3]: 24 [5]: §5 , or standard model, is the simplest model of type theory. Every construct is simply interpreted by its metatheoretic counterpart: a term of a function type is a function, a term of a product type is a pair, etc. (This is akin to the usual Tarskian semantics of first-order logic. If one constructs it in type theory itself as a metatheory and one views type theory as a programming language, it is a metacircular interpreter.)

The CwF is defined as follows:

  • A context is a set and a substitution is a function (so the category of contexts and substitutions is the category of sets).
  • A type in Γ is a family of sets (Ai)i∈Γ, and a term of this type is a choice of an element ti∈Ai for each i∈Γ. The action of a substitution σ:Δ→Γ on a type (Ai)i∈Γ gives (Aσ(j))j∈Δ, and on a term (ti∈Ai)i∈Γ, it gives (tσ(j)∈Aσ(j))j∈Δ.
  • The empty context is a fixed singleton set.
  • The extension of a context Γ by a type (Ai)i∈Γ is the type of pairs of an i∈Γ and an element of Ai. The tail and head of a substitution Δ→(Γ▹(Ai)i∈Γ),j↦(ij,aj) are given by j↦ij and j↦aj.

All type formers are defined “pointwise”. For example, the product (Ai)i∈Γ×(Bi)i∈Γ is defined as (Ai×Bi)i∈Γ, the pairing of terms (ti∈Ai)i∈Γ and (ui∈Bi)i∈Γ is ((ti,ui)∈Ai×Bi)i∈Γ, etc. This model supports essentially any type former supported by the metatheory (with the exception of universes: the metatheory needs a stronger universe than the object theory contains, namely a universe large enough to contain all universes from the object theory, as is expected from Gödel's second incompleteness theorem). It can model the equality reflection rule of extensional type theory, but not univalence.

The syntactic model

The syntactic model (or term model) is given by the contexts, parallel substitutions, types and terms in the syntax of the type theory under consideration, with the operations induced by all type and term constructors of the type theory.

For “reasonable” type theories, the syntactic model is also the initial model, which means that it has a unique morphism into every other model. The notion of morphism between models is usually defined by presenting the definition of a model as a generalized algebraic theory (GAT) (which is like an algebraic theory but allowing dependent functions), and applying the standard definition of morphism between algebras of a GAT. The initiality means that the syntax can indeed be interpreted in every model as expected. Actually establishing this turns out to be very tedious. While Cartmell and Hofmann proved it for some standard type theories, initiality became a contentious point in the research community around 2015 when some researchers, notably Voevodsky, opined that it was not justified to treat it as established for different type theories without carefully adapting the proofs. Most researchers consider the issue to have been satisfactorily solved by Uemura's introduction of the logical framework of second-order generalized algebraic theories (SOGATs), which encompasses practically all existing type theories (the main exception being substructural type theories), and his proof of initiality of the syntactic model for any SOGAT.[10]

Meanwhile, it has also become common to eschew the traditional syntactic presentation of type theory entirely and define the syntax as the initial model (which exists for any GAT). This approach is called intrinsic syntax. At this level of abstraction, it is possible to construct and study models and to use type theory as an internal language for them (treating the traditional terms merely as a notation for elements of the model). It is not possible to study properties of the concrete, extrinsic syntax such as subject reduction and confluence. However, remarkably, the two main syntactic properties of some type theories, canonicity and normalization, can be stated and proved entirely at this level.[6][11][12]

Presheaf models

Let 𝒞 be a category. The presheaf category 𝒞^ is equipped with a canonical CwF structure as follows.[3]: 45 [7]

A type A in context Γ is a dependent presheaf on 𝒞 over Γ. This means the following data:

  • For each object x∈𝒞, and for each element i∈Γ(x), a set A(x)i,
  • For each morphism f:x→y in 𝒞, and for each element i∈Γ(y), a function A(f)i:A(y)i→A(x)Γ(f)(i).

This data is subject to a functoriality requirement: A(g∘f)i=A(g)Γ(f)(i)∘A(f)i and A(id⁡)i=id.

Alternatively, A can be viewed as a presheaf on the category of elements of Γ.

A term t of type A in context Γ consists of, for each object x∈𝒞 and for each element i∈Γ(x), an element t(x)i∈A(x)i, such that these choices are natural: for f:x→y in 𝒞 and i∈Γ(y), we should have A(f)i(t(y)i)=t(x)Γ(f)(i).

For a natural transformation σ:Δ→Γ, the substituted type A[σ] is defined by precomposition: it maps an object x∈𝒞 and an element i∈Δ(x) to the set A(x)σ(x)(i), and it maps a morphism f:x→y in 𝒞 and an element i∈Δ(y) to the function A(f)σ(y)(i). Term substitution is also defined by precomposition: t[σ] maps an object x∈𝒞 and an element i∈Δ(x) to the element t(x)σ(x)(i)∈A(x)σ(x)(i).

The empty context is the presheaf mapping every object to a fixed singleton set. The extended context Γ▹A maps an object x∈𝒞 to the set of pairs of an element i∈Γ(x) and an element of A(x)i, and a morphism f:x→y in 𝒞 to the function (i,a)↦(Γ(f)(i),A(f)i(a)). The extended substitution σ▹t maps an object x∈𝒞 to the function i↦(σ(x)(i),t(x)i).


Other models

Other models of type theory include the setoid model,[citation needed] the groupoid model,[13] the simplicial set model,[14] the assemblies model,[citation needed] and several models in cubical sets starting with the BCH (Bezem–Coquand–Huber) model.[15]

Relationship to categorical logic

Traditional categorical logic involves correspondences between logics and kinds of categories which serve as their models. For example, elementary toposes are models of a form of intuitionistic higher-order logic, and regular categories are models of regular logic. The correspondence is used in both ways: a notion of model is fundamental to study a logic, e.g., to prove that a statement is unprovable by finding a model where it fails, and conversely, a category can be studied by reasoning in a logic of which it is a model, which is often called an internal language for the category.

For simple type theory, such correspondences can be found. For example, Cartesian closed categories model the simply typed λ-calculus with function, top and product types, and bicartesian closed categories model its extension with bottom and sum types. On the other hand, the situation is significantly more complicated for dependent type theory.

In the aforementioned semantics of simple type theory, a type is interpreted by an object of the category. In dependent type theory, a type depends on the value of the context in which it is defined, so one cannot simply use an object. Instead, a natural idea is to interpret a type A in context Γ by an object equipped with a morphism to the interpretation of Γ. The idea is to mimic the category of sets, where a family of sets (Ai)i∈Γ can be represented categorically as the morphism r:A→Γ, where A is the disjoint union of all the Ai, which sends elements of each Ai to their index i. The family (Ai) can be recovered by Ai=r−1(i).

This idea was used by Seely in a 1984 paper claiming that Martin–Löf type theory with Π types, Σ types and extensional identity types can be modelled in a locally Cartesian closed category (i.e., a category 𝒞 such that all the slice categories 𝒞/A are Cartesian closed).[16] However, it was later observed that Seely's proof is wrong. Substitution in types is modelled by pullback. For the interpretation of substitution to be sound, this operation must be strictly functorial way: pullback along g∘f must be exactly the same as pullback along f followed by pullback along g. However, pullback involves an arbitrary choice and there is no reason for all these choices to be globally coherent: these pullbacks are always isomorphic, but have no reason to be the same. (Taking a skeleton of 𝒞 does not help, since a pullback is not merely a choice of object but also a choice of morphisms.)

For example, call S:ℕ→ℕ the successor constructor of natural numbers, and consider the trivial proof that for a predicate P:ℕ→𝒰, if P(0) holds, P(1) holds, and P(n) holds for all n≥2 (call this hypothesis H), then P(n) for all n. This is done by two inductions: the first reduces to proving (P(n))[n:=S(n′)] where n′:ℕ is a fresh variable, and the second reduces this to proving ((P(n)[n:=S(n′)])[n′:=S(n″)] where n″:ℕ is fresh. By applying the hypothesis H to S(S(n″)) (noting that S(S(n″))≥2), one obtains an element of (P(n))[n:=S(S(n″))]. This only works because in the syntax of type theory, the substituted types (P(n))[n:=S(S(n″))] and ((P(n))[n:=S(n′)])[n′:=S(n″)] are the same, namely P(S(S(n″)). On the other hand, using the interpretation of substitution as pullback, the interpretations of these two types would only be isomorphic and it would not be semantically justified to use elements of one as elements of the other.

The same problem arises with the interpretation of type formers, which must commute with substitution, whereas this fails in Seely's purported model. For example, given a dependent function f:(x:A)→(P(x)×Q(x)), the application f(g(y)) has type (P(x)×Q(x))[x:=g(y)]. Without an actual equality between this type and P(g(y))×Q(g(y)), it is not semantically justified to apply the first projection to f(g(y)) to obtain an element of P(g(y)).

For this reason, type theory is not modelled directly in categories with properties, but rather in categories enriched with structure, such as CwFs, which include a set of types for each context and a substitution operation on types required to be functorial. The usual way to define a model is to start from a category with good enough properties and define this structure analogously to categorical constructions, but taking care to preserve coherence. This process is sometimes referred to as strictification.

There are several strictification constructions for doing this in general. A construction due to Bénabou was used by Hofmann to interpret MLTT in any locally Cartesian closed category, thus repairing Seely's result (with a different semantic interpretation).[17][9] More recently, Lumsdaine and Warren proposed the local universes construction, which delays computing pullbacks by modelling a type in Γ as two objects U and A with a pair of morphisms Γ→U←A, so that applying a substitution Δ→Γ can be simply performed by composition of Δ→Γ with Γ→U, which is functorial.[18][4]: §6.5.5 

However, in most concrete cases, the strictification can be done by hand, and the result is simpler to work with than the output of such general constructions. For example, in the set model, types in context Γ are defined as the actual families of sets (Ai)i∈Γ rather than a functions A→Γ so that the application of a substitution γ:Δ→Γ can simply be the family (Aγ(j))j∈J. This definition of substitution is strictly functorial, unlike pullback in the category of sets. The presheaf model is another typical example: substitution is made functorial by replacing presheaves A with a natural transformation to Γ by dependent presheaves over Γ.

Footnotes

  1. ↑ This is an abuse of language since most CwFs such as the set model use collections too large to be sets as “objects” of this category. Formally, this article should be read as assuming a sequence of Grothendieck universes and taking each occurrence of the word “set” to mean a set in an appropriate universe.

References

  1. ↑ Categorical semantics of dependent type theory in nLab
  2. ↑ 2.0 2.1 2.2 Dybjer, Peter (1996). "Internal type theory". TYPES 1995. Springer Berlin Heidelberg. pp. 120–134. doi:10.1007/3-540-61780-9_66. ISBN 9783540707226. https://www.cse.chalmers.se/~peterd/papers/InternalTT.pdf. 
  3. ↑ 3.0 3.1 3.2 Hofmann, Martin (1997). "Syntax and semantics of dependent types". Extensional constructs in intensional type theory. London: Springer. doi:10.1007/978-1-4471-0963-1_2. ISBN 978-1-4471-0963-1. 
  4. ↑ 4.0 4.1 4.2 Gratzer, Daniel; Angiuli, Carlo. Principles of dependent type theory. https://www.danielgratzer.com/papers/type-theory-book.pdf. Retrieved 2025-11-21. 
  5. ↑ 5.0 5.1 Gratzer, Daniel. "Denotational semantics of type theory". https://www.danielgratzer.com/papers/2023-semantics-primer-lecture-notes.pdf. 
  6. ↑ 6.0 6.1 6.2 Coquand, Thierry (2019). "Canonicity and normalization for dependent type theory". Theoretical Computer Science 777: 184–191. doi:10.1016/j.tcs.2019.01.015. 
  7. ↑ 7.0 7.1 Coquand, Thierry. "Presheaf model of type theory". https://www.cse.chalmers.se/~coquand/presheaf.pdf. 
  8. ↑ Sterbac, Raphaël; Sterling, Jonathan. "Fuss-free cumulative universes: theory and practice". arXiv:2607.11329 [cs.PL].
  9. ↑ 9.0 9.1 Clairambault, Pierre; Dybjer, Peter (2014). "The biequivalence of locally Cartesian closed categories and Martin-Löf type theories". Mathematical Structures in Computer Science 24 (6). doi:10.1017/S0960129513000881. 
  10. ↑ Initiality conjecture in nLab
  11. ↑ Kaposi, Ambrus (2017). Type theory in a type theory with quotient inductive types (PDF) (PhD thesis). University of Nottingham.
  12. ↑ Sterling, Jonathan (2021). First steps in synthetic Tait computability: the objective metatheory of type theory (PhD thesis). Carnegie Mellon University. doi:10.5281/zenodo.6990769.
  13. ↑ Hofmann, Martin; Streicher, Thomas (1994). "The groupoid model refutes uniqueness of identity proofs". LICS 1994. IEEE Computer Society Press. 
  14. ↑ Kapulkin, Chris; LeFanu Lumsdaine, Peter (2012). "The simplicial model of univalent foundations (after Voevodsky)". Journal of the European Mathematical Society. doi:10.4171/JEMS/1050. 
  15. ↑ Bezem, Marc; Coquand, Thierry; Huber, Simon (2014). "A model of type theory in cubical sets". TYPES 2013. 26. Schloss Daghstuhl — Leibniz Zentrum für Informatik. ISBN 978-3-939897-72-9. https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.TYPES.2013.107. 
  16. ↑ Seely, Robert A. G. (1984). "Locally cartesian closed categories and type theory". Mathematical Proceedings of the Cambridge Philosophical Society 95 (1): 33–48. doi:10.1017/S0305004100061284. 
  17. ↑ Hofmann, Martin (1995). "On the interpretation of type theory in locally Cartesian closed categories". CSL 1994. doi:10.1007/BFb0022273. 
  18. ↑ LeFanu Lumsdaine, Peter; Warren, Michael A. (2015). "The local universes model: an overlooked coherence construction for dependent type theories". ACM Transactions on Computational Logic 16 (3): 1–31. doi:10.1145/275493.