Aaron Stump
Iowa Type Theory Commute
Aaron Stump talks about type theory, computational logic, and related topics in Computer Science on his short commute.
Where to listen?
Podcasts in the app Replaio Radio Coming soonPodcasts are coming to the app soon. Install now and be the first to see a whole new take on podcasts
Episodes
Adding a top type and allowing non-normalizing terms 05.02.2020 14:17
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 10:39
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 13:06
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 15:54
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 12:40
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 12:25
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 15:57
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 14:35
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 10:54
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 11:49
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 14:18
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 12:02
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 10:57
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 14:09
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 11:58
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 9:57
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 9:14
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 13:25
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 11:45
In which I discover why the domino analogy for explaining induction always bothered me!
Constructive proofs as programs 22.12.2019 9:47
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 12:54
More about the structured recusion scheme known as the catamorphism. Basic idea of functors.
Introduction to the Curry-Howard Isomorphism 20.12.2019 15:44
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 12:30
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 13:11
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 6:32
Relation of point-free functional programming to category theory.
Similar podcasts
Replaio is not a podcast publisher; show names, artwork and audio belong to their authors and are distributed through public RSS feeds.