Adding a top type and allowing non-normalizing terms
Curry-style typing and realizability make it sensible to allow a top type to type every term, even non-normalizing ones.
Explore "chapter 5" with insightful episodes like "Adding a top type and allowing non-normalizing terms", "Intersection types using Curry-style typing", "Curry-style versus Church-style, and the nature of type annotations", "More on Computation First, and Basic Idea of Realizability" and "Types should be erased for executing and reasoning about programs" from podcasts like ""Iowa Type Theory Commute", "Iowa Type Theory Commute", "Iowa Type Theory Commute", "Iowa Type Theory Commute" and "Iowa Type Theory Commute"" and more!
Curry-style typing and realizability make it sensible to allow a top type to type every term, even non-normalizing ones.
Intersection types internalize the idea that a term has two types. Curry-style typing is generally needed for this to be nontrivial.
In Curry-style typing annotations -- for example, the types of bound variables -- are erased, and not truly (semantically) part of the term. In Church-style, they are intrinsic to the term and are truly there. Discussion of some of the practicalities of Curry-style typing, in particular type annotations versus proving typings.
Types are specifications whose semantics is explained in terms of computation, which is thus conceptually prior. Realizability is a way of explaining the semantics of types.
In which I argue that type information should be erased from programs by the compiler both for final execution and also for reasoning (in a language with dependent types, for example, where we can reason about program execution statically).
Stay up to date
For any inquiries, please email us at hello@podcastworld.io