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
Compositional termination checking with sized types 30.03.2020 18:37
Discussion of a compositional method of termination checking using so-called sized types. Datatypes are indexed by sizes, and recursive calls can only be made on data of strictly smaller size than the data as input to the recursion. Since the method is type-based, it is compositional: we can break out helper functions from a recursive function and not upset the termination checker. A readable a...
Noncompositionality of syntactic structural-recursion checks 20.03.2020 13:03
Review of need for termination analysis for recursive functions on inductive datatypes. Discussion of a serious problem with syntactic termination checks, namely noncompositionality. A function may pass the syntactic termination check, but abstracting part of it out into a helper function may result in code which no longer passes the check. So we need a compositional termination check, which wi...
Structural termination 17.03.2020 16:29
Start of Chapter 8 of the podcast, on termination checking in type theory, and strong functional programming. Discussion of a little history of adding datatypes to the original pure type theory of Coq (called the Calculus of Constructions). Considering the most basic form of termination checking, which is checking syntactically that recursive calls are only made on subdata of the data input to t...
Proving Confluence for Untyped Lambda Calculus II 13.03.2020 12:12
Discussion of the basic idea of the Tait--Martin-Loef proof of confluence for untyped lambda calculus. Let me know any requests for what to discuss in Chapter 8!
Proving Confluence for Untyped Lambda Calculus I 13.03.2020 11:48
Start of discussion on how to prove confluence for untyped lambda calculus. Also some discussion about the research community interested in confluence.
Confluence, and its use for conversion checking 11.03.2020 15:05
The basic property of confluence of a nondeterministic reduction semantics: if from starting term t you can reach t1 and also t2 (by two finite reduction sequences), then there is some t3 to which t1 and t2 both reduce in a finite number of steps. The use of confluence for ensuring completeness of the conversion-checking algorithm that tests conversion of t1 and t2 by normalizing both terms and c...
Normalization and logical consistency 09.03.2020 14:43
Discussion of the connection between normalization and logical consistency. One approach is to prove normalization and type preservation, to show (in proof-theoretic terms) that all detours can be eliminated from proofs (this is normalization) and that the resulting proof still proves the same theorem (this is type preservation). I mention an alternative I use for Cedille, which is to use a real...
Normalization in type theory: where it is needed, and where not 06.03.2020 16:28
Normalization (every term reaches a normal form via some reduction sequence) is needed essentially in type theory due to the Curry-Howard isomorphism: diverging programs become unsound proofs. Traditionally, type theorists have also desired normalization or even termination (every term reaches a normal form no matter what reduction sequence is explored in a nondeterministic operational semantics)...
Introduction to normalization 06.03.2020 12:47
Discussion of normalization (there is some way to reach a normal form) versus termination (no matter how you execute the term you reach a normal form). A little more discussion of strong FP. For type theory, the need for normalization due to Curry-Howard and due to conversion checking.
Proving type safety; upcoming metatheoretic properties 04.03.2020 13:07
Type safety proofs are big confirmations requiring consideration of all your operational and typing rules. So they rarely contain much deep insight, but are needed to confirm your language's type system is correct. Looking ahead, this episode also talks about the different between normalization and termination when your language is nondeterministic, and the property of confluence.
The progress property and the problem of axioms in type theory 04.03.2020 10:13
We review the metatheoretic property of type safety, decomposed into two properties called type preservation and progress. Discussion of progress in the context of type theory, where adding axioms can lead to a failure of progress.
Introduction to type safety 02.03.2020 14:17
Type safety is a basic property of both statically typed programming languages and type theories. It has traditionally (past few decades) been decomposed into type preservation and progress. Type preservation says that if a program expression e has some type T, then running e a bit will give a result that still has type T (and type preservation would apply again to that result, to preserve the t...
Introduction to metatheory 28.02.2020 11:54
Metatheory is concerned with proving properties about theories, in this case type theories or programming languages.
Definition of the Mendler encoding 26.02.2020 15:52
We consider using Mendler's technique of abstracting out problematic types with new type variables, and how this can yield a lambda encoding where the programmer is in charge of when to make recursive calls (rather than in the Church encoding, where the data present the programmer's combining function with the results of all possible recursive calls on immediate subdata).
The Mendler encoding and the problem of explicit recursion 25.02.2020 10:59
The Church encoding allows definition of certain recursive functions, but all the recursive calls are implicit. The encoding simply presents you with the results of recursion for all immediate subdata. Using a technique due to Mendler, an encoding is possible where recursions are explicitly made by the combining functions given to the data.
The Scott encoding 24.02.2020 16:02
In this episode we briefly review the Church and Parigot encodings (discussed previously in Chapter 6 of this podcast) and then consider the Scott encoding, where combining functions receive only the immediate subdata of the data.
More on the Parigot encoding 22.02.2020 11:32
The Parigot encoding has exponential-size normal forms: but don't panic! With a decent graph-sharing implementation of lambda calculus, they take linear space in memory.
Introduction to the Parigot encoding 18.02.2020 11:35
The Parigot encoding solves the Church encoding's problem of inefficient predecessor. It can be typed using positive-recursive types, which preserve normalization of the type theory.
Church-encoding natural numbers 17.02.2020 11:55
What is fold-right for a natural number? How do we define addition with this? The problem of inefficient predecessor.
Church encoding of lists 15.02.2020 10:56
We consider fold-right for lists, and its static type. The Church encoding for lists makes them into their own fold-right functions
Church encoding of the booleans 15.02.2020 11:21
The Church encoding represents data as their own fold-right functions. For booleans, this means they become their own if-then-else expressions. We consider the polymorphic type for these, which is forall X. X -> X -> X.
Introduction to Church encoding 12.02.2020 10:13
The Church encoding represents data as their own fold-right functions
Functional encodings turning the world inside out 11.02.2020 8:36
Functional encodings take programming language features like pattern-matching and recursion and move them from outside of data to inside of data.
More benefits of lambda encodings 07.02.2020 11:40
The idea that without lambda encodings, the current state of the art forces you to commit to a class of datatypes in the design of your type theory.
Introduction to lambda encodings 07.02.2020 13:52
A lambda encoding is some way of representing data as functions (lambda abstractions). Some motivations for this for computer-checked proofs and type 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.