Aaron Stump

Iowa Type Theory Commute

Aaron Stump talks about type theory, computational logic, and related topics in Computer Science on his short commute.

Author

Aaron Stump

Category

Technology

Podcast website

www.cs.uiowa.edu

Latest episode

Jul 1, 2026

Where to listen?

Podcasts in the app Replaio Radio Coming soon

Podcasts are coming to the app soon. Install now and be the first to see a whole new take on podcasts

Get it on Google Play Install for free Android 5M+ downloads · 4.8 rating iOS soon

Episodes

Adding a top type and allowing non-normalizing terms 05.02.2020

Curry-style typing and realizability make it sensible to allow a top type to type every term, even non-normalizing ones.

Intersection types using Curry-style typing 04.02.2020

Intersection types internalize the idea that a term has two types.  Curry-style typing is generally needed for this to be nontrivial.

Curry-style versus Church-style, and the nature of type annotations 30.01.2020

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.

More on Computation First, and Basic Idea of Realizability 29.01.2020

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.

Types should be erased for executing and reasoning about programs 29.01.2020

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).

Why go beyond GADTs? 24.01.2020

GADTs are quite powerful.  Why go all the way to true dependent types?  And should you use the Curry-Howard isomorphism (see Chapter 3 of the podcast) or not?

GADTs for programming with representations of types 22.01.2020

This episode reviews some of the applications of GADTs we have discussed so far, and discusses an example where we want to write a function that consumes a number of inputs that is controlled by an argument to the function.  

Using GADTs for typed subsetting of your language 20.01.2020

One use case for GADTs (as a special case of dependent types) is to form a typed subset of your host language.  One creates an EDSL called Expr a, where a is a type of the language (say this language is Haskell).  Values of types Expr a are the abstract syntax trees of expressions of type a from your host language.  This is just a special case of embedding a typed language into your host language:...

Example of programming with indexed types: binary search trees 16.01.2020

Using indexed types, we can restrict the form of legal values in some datatype.  A nice example is binary search trees, where we can statically enforce the binary search tree property using an indexed type bst l u, where l is a lower bound and u an upper bound on the data stored in the tree.

Programming with indexed types using singletons 16.01.2020

Basic idea of using singleton types like Nat n where n is a value from the index domain, to connect program expressions and index expressions.  The data value of type Nat n is a copy of n, but living in the syntactic category of program expressions.  This allows programs to operate on a proxy for n.  Singletons library in Haskell mentioned.

Limitations of indexed types that are not truly dependent 14.01.2020

If indices to types come from a different syntactic category than programs, there are a few things you cannot do.  Some initial thoughts on how to work around these.

Programming with Indexed Types 13.01.2020

Indexed datatypes like vectors, where the indices come from a different syntactic category than program expressions.

Program Termination and the Curry-Howard Isomorphism 10.01.2020

For programs to make sense as proofs, they need to be terminating (cannot run forever), since otherwise you can write infinite loops that have any type.  Under Curry-Howard this means any formula is provable, which is one way to define inconsistency.  (And logics have to be consistent to be useful.)

Why Curry-Howard for classical proofs is a bad idea for programming 07.01.2020

If you have dependent types, classical reasoning, and the Curry-Howard isomorphism, you can write programs that look like they are invoking oracles for undecidable problems -- but they are not, and this is confusing.

Curry-Howard for classical logic 06.01.2020

CH can be applied to classical logic, too.  The seminal paper is <a href="https://www.cl.cam.ac.uk/~tgg22/publications/popl90.pdf">A Formulae-as-Types Notion of Control</a> by Timothy Griffin.  I discuss how backtracking implements the law of excluded middle.

Dependent types and design by contract 04.01.2020

Dependent types are discussed, particularly as used for expressing pre- and post-conditions of functions.

Indexed types and Curry-Howard for first-order quantifiers 03.01.2020

I follow up on some comments I made about Curry-Howard for first-order quantifiers in the previous episode.  Sheard's Omega language also mentioned (see links on <a href = "http://web.cecs.pdx.edu/~sheard/">his web page</a>).  First-order quantifications turn into indexed types where the indices are not program expressions but come from another syntactic domain.

The Curry-Howard Isomorphism for Propositional Logic 02.01.2020

Discussion of the Curry-Howard isomorphism for the connectives of propositional logic (AND, OR, NOT, FALSE, IMPLIES).  Initial consideration of Curry-Howard for first-order and higher-order logic.  Dependent types.

The Curry-Howard Isomorphism for Induction 31.12.2019

In which I discover why the domino analogy for explaining induction always bothered me!

Constructive proofs as programs 22.12.2019

We consider the basic idea of the Curry-Howard isomorphism, that constructive proofs are essentially programs, and vice versa.  Several simple examples.  Why the law of excluded middle is not a legal constructive proof.

Functors and catamorphisms 20.12.2019

More about the structured recusion scheme known as the catamorphism.  Basic idea of functors.

Introduction to the Curry-Howard Isomorphism 20.12.2019

The basic idea of the Curry-Howard isomorphism, and its connection to the contents of Chapters 1 and 2.  Constructive proof.  A famous nonconstructive proof.

Structured Recursion Schemes for Point-Free Recursion 19.12.2019

Review of basic application of category theory for functional programming.  Recursion schemes are combinators that let you write point-free recursions.

More on point-free programming and category theory 17.12.2019

A few very basic ideas of categories and combinators.  Also, the problem of understanding very concise code.

Point-free programming and category theory 17.12.2019

Relation of point-free functional programming to category theory.

Listen to the Iowa Type Theory Commute podcast in Replaio

Radio and podcasts in one app - free, with no sign-up. Install today and do not miss the launch

Get it on Google Play

Replaio is not a podcast publisher; show names, artwork and audio belong to their authors and are distributed through public RSS feeds.