<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet href="https://rss.buzzsprout.com/styles.xsl" type="text/xsl"?>
<rss version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:podcast="https://podcastindex.org/namespace/1.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:psc="http://podlove.org/simple-chapters" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <atom:link href="https://rss.buzzsprout.com/728558.rss" rel="self" type="application/rss+xml" />
  <atom:link href="https://pubsubhubbub.appspot.com/" rel="hub" xmlns="http://www.w3.org/2005/Atom" />
  <title>Iowa Type Theory Commute</title>

  <lastBuildDate>Wed, 01 Jul 2026 14:09:12 -0500</lastBuildDate>
  <link>http://www.cs.uiowa.edu/~astump</link>
  <language>en-us</language>
  <copyright>© 2026 Iowa Type Theory Commute</copyright>
  <podcast:locked>yes</podcast:locked>
    <podcast:guid>7b29dd0a-a485-5123-a144-6747c620dddd</podcast:guid>
  <itunes:author>Aaron Stump</itunes:author>
  <itunes:type>episodic</itunes:type>
  <itunes:explicit>false</itunes:explicit>
  <description><![CDATA[Aaron Stump talks about type theory, computational logic, and related topics in Computer Science on his short commute. ]]></description>
  <generator>Buzzsprout (https://www.buzzsprout.com)</generator>
  <itunes:keywords>programming languages, computational logic, type theory, proof assistants, Cedille</itunes:keywords>
  <itunes:owner>
    <itunes:name>Aaron Stump</itunes:name>
  </itunes:owner>
  <image>
     <url>https://storage.buzzsprout.com/5ah5i0u7sjzeq08a0c5yi8youe7y?.jpg</url>
     <title>Iowa Type Theory Commute</title>
     <link>http://www.cs.uiowa.edu/~astump</link>
  </image>
  <itunes:image href="https://storage.buzzsprout.com/5ah5i0u7sjzeq08a0c5yi8youe7y?.jpg" />
  <itunes:category text="Technology" />
  <itunes:category text="Science">
    <itunes:category text="Mathematics" />
  </itunes:category>
  <item>
    <itunes:title>Coercive subtyping and coherence</itunes:title>
    <title>Coercive subtyping and coherence</title>
    <itunes:summary><![CDATA[In this episode, I give further arguments in favor of coercive subtyping from a software-engineering perspective.  I also explain the critical concept of coherence. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I give further arguments in favor of coercive subtyping from a software-engineering perspective.  I also explain the critical concept of coherence.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I give further arguments in favor of coercive subtyping from a software-engineering perspective.  I also explain the critical concept of coherence.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/19432522-coercive-subtyping-and-coherence.mp3" length="14795843" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-19432522</guid>
    <pubDate>Wed, 01 Jul 2026 14:00:00 -0500</pubDate>
    <itunes:duration>1230</itunes:duration>
    <itunes:keywords></itunes:keywords>
    <itunes:season>7</itunes:season>
    <itunes:episode>9</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>A Strange Deal, Explained</itunes:title>
    <title>A Strange Deal, Explained</title>
    <itunes:summary><![CDATA[I explain the story from last episode. ]]></itunes:summary>
    <description><![CDATA[<p>I explain the story from last episode.</p>]]></description>
    <content:encoded><![CDATA[<p>I explain the story from last episode.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/19140895-a-strange-deal-explained.mp3" length="6073230" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-19140895</guid>
    <pubDate>Thu, 07 May 2026 09:00:00 -0500</pubDate>
    <itunes:duration>503</itunes:duration>
    <itunes:keywords></itunes:keywords>
    <itunes:season>7</itunes:season>
    <itunes:episode>8</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>A Strange Deal</itunes:title>
    <title>A Strange Deal</title>
    <itunes:summary><![CDATA[The Curry-Howard isomorphism for the law of excluded middle, as a radio drama.  I first saw a version of this story performed by Phil Wadler and Frank Pfenning (wearing fake horns!) at RTA in Nara, Japan in 2005.  This is my take on it.  In a subsequent episode, I will explain how the story illustrates the computational interpretation of the law of excluded middle. ]]></itunes:summary>
    <description><![CDATA[<p>The Curry-Howard isomorphism for the law of excluded middle, as a radio drama.  I first saw a version of this story performed by Phil Wadler and Frank Pfenning (wearing fake horns!) at RTA in Nara, Japan in 2005.  This is my take on it.  In a subsequent episode, I will explain how the story illustrates the computational interpretation of the law of excluded middle.</p>]]></description>
    <content:encoded><![CDATA[<p>The Curry-Howard isomorphism for the law of excluded middle, as a radio drama.  I first saw a version of this story performed by Phil Wadler and Frank Pfenning (wearing fake horns!) at RTA in Nara, Japan in 2005.  This is my take on it.  In a subsequent episode, I will explain how the story illustrates the computational interpretation of the law of excluded middle.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/19107000-a-strange-deal.mp3" length="2161110" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-19107000</guid>
    <pubDate>Thu, 30 Apr 2026 22:00:00 -0500</pubDate>
    <itunes:duration>177</itunes:duration>
    <itunes:keywords></itunes:keywords>
    <itunes:season>7</itunes:season>
    <itunes:episode>7</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Great paper: The Calculated Typer</itunes:title>
    <title>Great paper: The Calculated Typer</title>
    <itunes:summary><![CDATA[I discuss a nice paper I quite enjoyed reading, called The Calculated Typer, by Garby, Bahr, and Hutton.  The authors take a very nice general look at the specification of a type checker, for a very simple expression language.  They then manually derive the actual code for the type checker by effectively trying to prove that this as yet unknown code satisfies its spec.  (This is what is meant by calculating the type checker.) ]]></itunes:summary>
    <description><![CDATA[<p>I discuss a nice paper I quite enjoyed reading, called <a href='https://dl.acm.org/doi/10.1145/3759164.3759346'>The Calculated Typer</a>, by Garby, Bahr, and Hutton.  The authors take a very nice general look at the specification of a type checker, for a very simple expression language.  They then manually derive the actual code for the type checker by effectively trying to prove that this as yet unknown code satisfies its spec.  (This is what is meant by calculating the type checker.)</p>]]></description>
    <content:encoded><![CDATA[<p>I discuss a nice paper I quite enjoyed reading, called <a href='https://dl.acm.org/doi/10.1145/3759164.3759346'>The Calculated Typer</a>, by Garby, Bahr, and Hutton.  The authors take a very nice general look at the specification of a type checker, for a very simple expression language.  They then manually derive the actual code for the type checker by effectively trying to prove that this as yet unknown code satisfies its spec.  (This is what is meant by calculating the type checker.)</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/19046177-great-paper-the-calculated-typer.mp3" length="17084799" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-19046177</guid>
    <pubDate>Mon, 20 Apr 2026 10:00:00 -0500</pubDate>
    <itunes:duration>1421</itunes:duration>
    <itunes:keywords></itunes:keywords>
    <itunes:season>7</itunes:season>
    <itunes:episode>6</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Double-negation translations and CPS conversion, part 2</itunes:title>
    <title>Double-negation translations and CPS conversion, part 2</title>
    <itunes:summary><![CDATA[In this episode, I talk about the control operator callcc, and how it is implemented during compilation using continuation-passing style (CPS).  I sketch how CPS conversion (transforming a program with callcc into one in CPS that does not need callcc any more) corresponds to double-negation translation from classical to intuitionistic logic.  The paper I am referencing is here. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I talk about the control operator callcc, and how it is implemented during compilation using continuation-passing style (CPS).  I sketch how CPS conversion (transforming a program with callcc into one in CPS that does not need callcc any more) corresponds to double-negation translation from classical to intuitionistic logic.  The paper I am referencing is <a href='https://www.mdpi.com/2227-7390/9/4/385'>here</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I talk about the control operator callcc, and how it is implemented during compilation using continuation-passing style (CPS).  I sketch how CPS conversion (transforming a program with callcc into one in CPS that does not need callcc any more) corresponds to double-negation translation from classical to intuitionistic logic.  The paper I am referencing is <a href='https://www.mdpi.com/2227-7390/9/4/385'>here</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/18955014-double-negation-translations-and-cps-conversion-part-2.mp3" length="9771602" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-18955014</guid>
    <pubDate>Thu, 02 Apr 2026 16:00:00 -0500</pubDate>
    <itunes:duration>811</itunes:duration>
    <itunes:keywords></itunes:keywords>
    <itunes:season>7</itunes:season>
    <itunes:episode>5</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Double-negation translations and CPS conversion, part 1</itunes:title>
    <title>Double-negation translations and CPS conversion, part 1</title>
    <itunes:summary><![CDATA[In this episode, I talk about a somewhat more advanced case of the Curry-Howard isomorphism (the connection between logic and programming languages where formulas in logic are identified with types, and proofs with programs).  This is the identification of double-negation translations in logic, which go back to a paper of Kolmogorov's in 1925, with conversion to continuation-passing style (CPS), a compilation technique.  For this episode, we just discuss the idea of double-negation ...]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I talk about a somewhat more advanced case of the Curry-Howard isomorphism (the connection between logic and programming languages where formulas in logic are identified with types, and proofs with programs).  This is the identification of double-negation translations in logic, which go back to a paper of Kolmogorov&apos;s in 1925, with conversion to continuation-passing style (CPS), a compilation technique.  For this episode, we just discuss the idea of double-negation translation: classical theorems can be translated to intuitionistic ones, by adding some double negations.  As an example, we talk through the intuitionistic proof of the double negation of the law of excluded middle: not not (p or not p).</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I talk about a somewhat more advanced case of the Curry-Howard isomorphism (the connection between logic and programming languages where formulas in logic are identified with types, and proofs with programs).  This is the identification of double-negation translations in logic, which go back to a paper of Kolmogorov&apos;s in 1925, with conversion to continuation-passing style (CPS), a compilation technique.  For this episode, we just discuss the idea of double-negation translation: classical theorems can be translated to intuitionistic ones, by adding some double negations.  As an example, we talk through the intuitionistic proof of the double negation of the law of excluded middle: not not (p or not p).</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/18938542-double-negation-translations-and-cps-conversion-part-1.mp3" length="9971596" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-18938542</guid>
    <pubDate>Tue, 31 Mar 2026 10:00:00 -0500</pubDate>
    <itunes:duration>828</itunes:duration>
    <itunes:keywords></itunes:keywords>
    <itunes:season>7</itunes:season>
    <itunes:episode>4</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>What are commuting conversions in proof theory?</itunes:title>
    <title>What are commuting conversions in proof theory?</title>
    <itunes:summary><![CDATA[Commuting conversions are transformations on proofs in natural deduction, that move certain stuck inferences out of the way, so that the normal detour reductions (which correspond to beta-reduction under Curry-Howard) are enabled.  The stuck inferences are uses of disjunction elimination.  In programming terms, if you have an if-then-else (a simple case of or-elimination) where the then- and else-branches are lambda abstractions, and you apply that if-then-else to an argument, you n...]]></itunes:summary>
    <description><![CDATA[<p>Commuting conversions are transformations on proofs in natural deduction, that move certain stuck inferences out of the way, so that the normal detour reductions (which correspond to beta-reduction under Curry-Howard) are enabled.  The stuck inferences are uses of disjunction elimination.  In programming terms, if you have an if-then-else (a simple case of or-elimination) where the then- and else-branches are lambda abstractions, and you apply that if-then-else to an argument, you need commuting conversions to move the argument into the branches, so you can call the functions (in the then- and else-branches) with it.</p><p>See Section 10.1 of Girard&apos;s <a href='https://www.paultaylor.eu/stable/prot.pdf'>Proofs and Types </a>for more on the problem, and a <a href='https://members.loria.fr/PdeGroote/papers/rta99.pdf'>nice paper</a> by de Groote on strong normalization with commuting conversions.</p>]]></description>
    <content:encoded><![CDATA[<p>Commuting conversions are transformations on proofs in natural deduction, that move certain stuck inferences out of the way, so that the normal detour reductions (which correspond to beta-reduction under Curry-Howard) are enabled.  The stuck inferences are uses of disjunction elimination.  In programming terms, if you have an if-then-else (a simple case of or-elimination) where the then- and else-branches are lambda abstractions, and you apply that if-then-else to an argument, you need commuting conversions to move the argument into the branches, so you can call the functions (in the then- and else-branches) with it.</p><p>See Section 10.1 of Girard&apos;s <a href='https://www.paultaylor.eu/stable/prot.pdf'>Proofs and Types </a>for more on the problem, and a <a href='https://members.loria.fr/PdeGroote/papers/rta99.pdf'>nice paper</a> by de Groote on strong normalization with commuting conversions.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/18783102-what-are-commuting-conversions-in-proof-theory.mp3" length="16222159" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-18783102</guid>
    <pubDate>Tue, 03 Mar 2026 11:00:00 -0600</pubDate>
    <itunes:duration>1349</itunes:duration>
    <itunes:keywords></itunes:keywords>
    <itunes:season>7</itunes:season>
    <itunes:episode>3</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>What is Control Flow Analysis for Lambda Calculus?</itunes:title>
    <title>What is Control Flow Analysis for Lambda Calculus?</title>
    <itunes:summary><![CDATA[I am currently on a frolic into the literature on Control Flow Analysis (CFA), and discuss what this is, for pure lambda calculus.  A wonderful reference for this is this paper by Palsberg. ]]></itunes:summary>
    <description><![CDATA[<p>I am currently on a frolic into the literature on Control Flow Analysis (CFA), and discuss what this is, for pure lambda calculus.  A wonderful reference for this is <a href='https://dl.acm.org/doi/abs/10.1145/200994.201001'>this paper</a> by Palsberg.</p>]]></description>
    <content:encoded><![CDATA[<p>I am currently on a frolic into the literature on Control Flow Analysis (CFA), and discuss what this is, for pure lambda calculus.  A wonderful reference for this is <a href='https://dl.acm.org/doi/abs/10.1145/200994.201001'>this paper</a> by Palsberg.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/18519806-what-is-control-flow-analysis-for-lambda-calculus.mp3" length="14004371" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-18519806</guid>
    <pubDate>Fri, 16 Jan 2026 10:00:00 -0600</pubDate>
    <itunes:duration>1164</itunes:duration>
    <itunes:keywords></itunes:keywords>
    <itunes:season>7</itunes:season>
    <itunes:episode>2</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Measure Functions and Termination of STLC</itunes:title>
    <title>Measure Functions and Termination of STLC</title>
    <itunes:summary><![CDATA[In this episode, I talk about what we should consider to be a measure function.  Such functions can be used to show termination of some process or program, by assigning a measure to each program, and showing that as the program computes, the measure decreases in some well-founded ordering.  But what should count as a measure function?  The context for this is RTA Open Problem 19, on showing termination for the simply typed lambda calculus using a measure function. Let's call th...]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I talk about what we should consider to be a measure function.  Such functions can be used to show termination of some process or program, by assigning a measure to each program, and showing that as the program computes, the measure decreases in some well-founded ordering.  But what should count as a measure function?  The context for this is <a href='https://www.cs.tau.ac.il/~nachum/rtaloop/problems/19.html'>RTA Open Problem 19</a>, on showing termination for the simply typed lambda calculus using a measure function.</p><p>Let&apos;s call this the start of season 7, because it seems about time for that.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I talk about what we should consider to be a measure function.  Such functions can be used to show termination of some process or program, by assigning a measure to each program, and showing that as the program computes, the measure decreases in some well-founded ordering.  But what should count as a measure function?  The context for this is <a href='https://www.cs.tau.ac.il/~nachum/rtaloop/problems/19.html'>RTA Open Problem 19</a>, on showing termination for the simply typed lambda calculus using a measure function.</p><p>Let&apos;s call this the start of season 7, because it seems about time for that.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/18193512-measure-functions-and-termination-of-stlc.mp3" length="15660726" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-18193512</guid>
    <pubDate>Fri, 14 Nov 2025 17:00:00 -0600</pubDate>
    <itunes:duration>1302</itunes:duration>
    <itunes:keywords></itunes:keywords>
    <itunes:season>7</itunes:season>
    <itunes:episode>1</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Schematic Affine Recursion, Oh My!</itunes:title>
    <title>Schematic Affine Recursion, Oh My!</title>
    <itunes:summary><![CDATA[To solve the problem raised in the last episode, I propose schematic affine recursion.  We saw that affine lambda calculus (where lambda-bound variables are used at most once) plus structural recursion does not enforce termination, even if you restrict the recursor so that the function to be iterated is closed when you reduce ("closed at reduction").  You have to restrict it so that recursion terms are disallowed entirely unless the function to be iterated is closed ("closed at cons...]]></itunes:summary>
    <description><![CDATA[<p>To solve the problem raised in the last episode, I propose schematic affine recursion.  We saw that affine lambda calculus (where lambda-bound variables are used at most once) plus structural recursion does not enforce termination, even if you restrict the recursor so that the function to be iterated is closed when you reduce (&quot;closed at reduction&quot;).  You have to restrict it so that recursion terms are disallowed entirely unless the function to be iterated is closed (&quot;closed at construction&quot;).  But this prevents higher-order functions like map, which need to repeat a computation involving a variable f to be mapped over the elements of a list.  The solution is to allow schematic definition of terms, using schema variables ranging over closed terms.</p>]]></description>
    <content:encoded><![CDATA[<p>To solve the problem raised in the last episode, I propose schematic affine recursion.  We saw that affine lambda calculus (where lambda-bound variables are used at most once) plus structural recursion does not enforce termination, even if you restrict the recursor so that the function to be iterated is closed when you reduce (&quot;closed at reduction&quot;).  You have to restrict it so that recursion terms are disallowed entirely unless the function to be iterated is closed (&quot;closed at construction&quot;).  But this prevents higher-order functions like map, which need to repeat a computation involving a variable f to be mapped over the elements of a list.  The solution is to allow schematic definition of terms, using schema variables ranging over closed terms.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/17718746-schematic-affine-recursion-oh-my.mp3" length="13577707" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-17718746</guid>
    <pubDate>Fri, 22 Aug 2025 17:00:00 -0500</pubDate>
    <itunes:duration>1129</itunes:duration>
    <itunes:keywords></itunes:keywords>
    <itunes:season>6</itunes:season>
    <itunes:episode>12</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>The Stunner: Linear System T is Diverging!</itunes:title>
    <title>The Stunner: Linear System T is Diverging!</title>
    <itunes:summary><![CDATA[In this episode, I shoot down last episode's proposal -- at least in the version I discussed -- based on an amazing observation from an astonishing paper, "Gödel’s system T revisited", by Alves, Fernández, Florido, and Mackie.  Linear System T is diverging, as they reveal through a short but clever example.  It is even diverging if one requires that the iterator can only be reduced when the function to be iterated is closed (no free variables).  This extraordinary observation d...]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I shoot down last episode&apos;s proposal -- at least in the version I discussed -- based on an amazing observation from an astonishing paper, &quot;Gödel’s system T revisited&quot;, by Alves, Fernández, Florido, and Mackie.  Linear System T is diverging, as they reveal through a short but clever example.  It is even diverging if one requires that the iterator can only be reduced when the function to be iterated is closed (no free variables).  This extraordinary observation does not sink Victor&apos;s idea of basing type theory on a terminating untyped core language, but it does sink the specific language he and I were thinking about, namely affine lambda calculus plus structural recursion.</p><p><br/></p><p>My notes are <a href='https://queuea9.wordpress.com/wp-content/uploads/2025/08/note.pdf'>here</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I shoot down last episode&apos;s proposal -- at least in the version I discussed -- based on an amazing observation from an astonishing paper, &quot;Gödel’s system T revisited&quot;, by Alves, Fernández, Florido, and Mackie.  Linear System T is diverging, as they reveal through a short but clever example.  It is even diverging if one requires that the iterator can only be reduced when the function to be iterated is closed (no free variables).  This extraordinary observation does not sink Victor&apos;s idea of basing type theory on a terminating untyped core language, but it does sink the specific language he and I were thinking about, namely affine lambda calculus plus structural recursion.</p><p><br/></p><p>My notes are <a href='https://queuea9.wordpress.com/wp-content/uploads/2025/08/note.pdf'>here</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/17700864-the-stunner-linear-system-t-is-diverging.mp3" length="15197106" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-17700864</guid>
    <pubDate>Tue, 19 Aug 2025 17:00:00 -0500</pubDate>
    <itunes:duration>1263</itunes:duration>
    <itunes:keywords>chapter </itunes:keywords>
    <itunes:season>6</itunes:season>
    <itunes:episode>11</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Terminating Computation First?</itunes:title>
    <title>Terminating Computation First?</title>
    <itunes:summary><![CDATA[In this episode, I discuss an intriguing idea proposed by Victor Taelin, to base a logically sound type theory on an untyped but terminating language, upon which one may then erect as exotic a type system as one wishes.  By enforcing termination already for the untyped language, we no longer have to make the type system do the heavy work of enforcing termination. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I discuss an intriguing idea proposed by Victor Taelin, to base a logically sound type theory on an untyped but terminating language, upon which one may then erect as exotic a type system as one wishes.  By enforcing termination already for the untyped language, we no longer have to make the type system do the heavy work of enforcing termination.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I discuss an intriguing idea proposed by Victor Taelin, to base a logically sound type theory on an untyped but terminating language, upon which one may then erect as exotic a type system as one wishes.  By enforcing termination already for the untyped language, we no longer have to make the type system do the heavy work of enforcing termination.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/17599167-terminating-computation-first.mp3" length="8277179" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-17599167</guid>
    <pubDate>Fri, 01 Aug 2025 08:00:00 -0500</pubDate>
    <itunes:duration>687</itunes:duration>
    <itunes:keywords></itunes:keywords>
    <itunes:season>6</itunes:season>
    <itunes:episode>10</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Correction: the Correct Author of the Proof from Last Episode, and an AI flop</itunes:title>
    <title>Correction: the Correct Author of the Proof from Last Episode, and an AI flop</title>
    <itunes:summary><![CDATA[I correct what I said in the last episode about the author of the proof of FD from last episode based on intersection types.  I also describe AI flopping when I ask it a question about this. ]]></itunes:summary>
    <description><![CDATA[<p>I correct what I said in the last episode about the author of the proof of FD from last episode based on intersection types.  I also describe AI flopping when I ask it a question about this.</p>]]></description>
    <content:encoded><![CDATA[<p>I correct what I said in the last episode about the author of the proof of FD from last episode based on intersection types.  I also describe AI flopping when I ask it a question about this.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/17147189-correction-the-correct-author-of-the-proof-from-last-episode-and-an-ai-flop.mp3" length="5198690" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-17147189</guid>
    <pubDate>Mon, 12 May 2025 15:00:00 -0500</pubDate>
    <itunes:duration>430</itunes:duration>
    <itunes:keywords>chapter n , finite developments , intersection types , parigot</itunes:keywords>
    <itunes:season>6</itunes:season>
    <itunes:episode>9</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Krivine&#39;s Proof of FD, Using Intersection Types</itunes:title>
    <title>Krivine&#39;s Proof of FD, Using Intersection Types</title>
    <itunes:summary><![CDATA[Krivine's book (Section 4.2) has a proof of the Finite Developments Theorem, based on intersection types.  I discuss this proof in this episode. ]]></itunes:summary>
    <description><![CDATA[<p><a href='https://www.irif.fr/~krivine/articles/Lambda.pdf'>Krivine&apos;s book</a> (Section 4.2) has a proof of the Finite Developments Theorem, based on intersection types.  I discuss this proof in this episode.</p>]]></description>
    <content:encoded><![CDATA[<p><a href='https://www.irif.fr/~krivine/articles/Lambda.pdf'>Krivine&apos;s book</a> (Section 4.2) has a proof of the Finite Developments Theorem, based on intersection types.  I discuss this proof in this episode.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/17104239-krivine-s-proof-of-fd-using-intersection-types.mp3" length="15572586" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-17104239</guid>
    <pubDate>Mon, 05 May 2025 15:00:00 -0500</pubDate>
    <itunes:duration>1295</itunes:duration>
    <itunes:keywords>chapter n , finite developments , intersection types</itunes:keywords>
    <itunes:season>6</itunes:season>
    <itunes:episode>8</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>A Measure-Based Proof of Finite Developments</itunes:title>
    <title>A Measure-Based Proof of Finite Developments</title>
    <itunes:summary><![CDATA[I discuss the paper "A Direct Proof of the Finite Developments Theorem", by Roel de Vrijer.  See also the write-up at my blog. ]]></itunes:summary>
    <description><![CDATA[<p>I discuss the paper<a href='https://queuea9.wordpress.com/wp-content/uploads/2025/04/vrijer-directprooffinite-1985.pdf'> &quot;A Direct Proof of the Finite Developments Theorem&quot;</a>, by Roel de Vrijer.  See also the <a href='https://queuea9.wordpress.com/2025/04/16/a-measure-based-proof-of-the-finite-developments-theorem/'>write-up</a> at my blog.</p>]]></description>
    <content:encoded><![CDATA[<p>I discuss the paper<a href='https://queuea9.wordpress.com/wp-content/uploads/2025/04/vrijer-directprooffinite-1985.pdf'> &quot;A Direct Proof of the Finite Developments Theorem&quot;</a>, by Roel de Vrijer.  See also the <a href='https://queuea9.wordpress.com/2025/04/16/a-measure-based-proof-of-the-finite-developments-theorem/'>write-up</a> at my blog.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/16991989-a-measure-based-proof-of-finite-developments.mp3" length="16886016" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-16991989</guid>
    <pubDate>Wed, 16 Apr 2025 16:00:00 -0500</pubDate>
    <itunes:duration>1404</itunes:duration>
    <itunes:keywords>chapter n , finite developments , measure-based</itunes:keywords>
    <itunes:season>6</itunes:season>
    <itunes:episode>7</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to the Finite Developments Theorem</itunes:title>
    <title>Introduction to the Finite Developments Theorem</title>
    <itunes:summary><![CDATA[The finite developments theorem in pure lambda calculus says that if you select as set of redexes in a lambda term and reduce only those and their residuals (redexes that can be traced back as existing in the original set), then this process will always terminate.  In this episode, I discuss the theorem and why I got interested in it. ]]></itunes:summary>
    <description><![CDATA[<p>The finite developments theorem in pure lambda calculus says that if you select as set of redexes in a lambda term and reduce only those and their residuals (redexes that can be traced back as existing in the original set), then this process will always terminate.  In this episode, I discuss the theorem and why I got interested in it.</p>]]></description>
    <content:encoded><![CDATA[<p>The finite developments theorem in pure lambda calculus says that if you select as set of redexes in a lambda term and reduce only those and their residuals (redexes that can be traced back as existing in the original set), then this process will always terminate.  In this episode, I discuss the theorem and why I got interested in it.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/16871451-introduction-to-the-finite-developments-theorem.mp3" length="11483377" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-16871451</guid>
    <pubDate>Thu, 27 Mar 2025 12:00:00 -0500</pubDate>
    <itunes:duration>954</itunes:duration>
    <itunes:keywords>chapter n , finite developments</itunes:keywords>
    <itunes:season>6</itunes:season>
    <itunes:episode>6</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Nominal Isabelle/HOL</itunes:title>
    <title>Nominal Isabelle/HOL</title>
    <itunes:summary><![CDATA[In this episode, I discuss the paper Nominal Techniques in Isabelle/HOL, by Christian Urban.  This paper shows how to reason with terms modulo alpha-equivalence, using ideas from nominal logic.  The basic idea is that instead of renamings, one works with permutations of names.  ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I discuss the paper <a href='https://nms.kcl.ac.uk/christian.urban/Publications/nom-tech.pdf'>Nominal Techniques in Isabelle/HOL</a>, by Christian Urban.  This paper shows how to reason with terms modulo alpha-equivalence, using ideas from nominal logic.  The basic idea is that instead of renamings, one works with permutations of names. </p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I discuss the paper <a href='https://nms.kcl.ac.uk/christian.urban/Publications/nom-tech.pdf'>Nominal Techniques in Isabelle/HOL</a>, by Christian Urban.  This paper shows how to reason with terms modulo alpha-equivalence, using ideas from nominal logic.  The basic idea is that instead of renamings, one works with permutations of names. </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/16540782-nominal-isabelle-hol.mp3" length="11772029" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-16540782</guid>
    <pubDate>Fri, 31 Jan 2025 13:00:00 -0600</pubDate>
    <itunes:duration>978</itunes:duration>
    <itunes:keywords>chapter m, nominal Isabelle, alpha-equivalence</itunes:keywords>
    <itunes:season>6</itunes:season>
    <itunes:episode>5</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>The Locally Nameless Representation</itunes:title>
    <title>The Locally Nameless Representation</title>
    <itunes:summary><![CDATA[I discuss what is called the locally nameless representation of syntax with binders, following the first couple of sections of the very nicely written paper "The Locally Nameless Representation," by Charguéraud.  I complain due to the statement in the paper that "the theory of λ-calculus identifies terms that are α-equivalent," which is simply not true if one is considering lambda calculus as defined by Church, where renaming is an explicit reduction step, on a par with beta-reduction.&n...]]></itunes:summary>
    <description><![CDATA[<p>I discuss what is called the locally nameless representation of syntax with binders, following the first couple of sections of the very nicely written paper <a href='https://www.chargueraud.org/research/2009/ln/main.pdf'>&quot;The Locally Nameless Representation,&quot; </a>by Charguéraud.  I complain due to the statement in the paper that &quot;the theory of λ-calculus identifies terms that are α-equivalent,&quot; which is simply not true if one is considering lambda calculus as defined by Church, where renaming is an explicit reduction step, on a par with beta-reduction.  I also answer a listener&apos;s question about what &quot;computational type theory&quot; means.  <br/><br/>Feel free to email me any time at aaron.stump@bc.edu, or join the <a href='https://t.me/+mAzu7KuwDNFlYTBh'>Telegram group</a> for the podcast.  </p>]]></description>
    <content:encoded><![CDATA[<p>I discuss what is called the locally nameless representation of syntax with binders, following the first couple of sections of the very nicely written paper <a href='https://www.chargueraud.org/research/2009/ln/main.pdf'>&quot;The Locally Nameless Representation,&quot; </a>by Charguéraud.  I complain due to the statement in the paper that &quot;the theory of λ-calculus identifies terms that are α-equivalent,&quot; which is simply not true if one is considering lambda calculus as defined by Church, where renaming is an explicit reduction step, on a par with beta-reduction.  I also answer a listener&apos;s question about what &quot;computational type theory&quot; means.  <br/><br/>Feel free to email me any time at aaron.stump@bc.edu, or join the <a href='https://t.me/+mAzu7KuwDNFlYTBh'>Telegram group</a> for the podcast.  </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/16374920-the-locally-nameless-representation.mp3" length="14368839" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-16374920</guid>
    <pubDate>Thu, 02 Jan 2025 22:00:00 -0600</pubDate>
    <itunes:duration>1194</itunes:duration>
    <itunes:keywords>chapter m , locally nameless , formalization , metatheory</itunes:keywords>
    <itunes:season>6</itunes:season>
    <itunes:episode>4</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>POPLmark Reloaded, Part 2</itunes:title>
    <title>POPLmark Reloaded, Part 2</title>
    <itunes:summary><![CDATA[I continue the discussion of POPLmark Reloaded , discussing the solutions proposed to the benchmark problem.  The solutions are in the Beluga, Coq (recently renamed Rocq), and Agda provers. ]]></itunes:summary>
    <description><![CDATA[<p>I continue the discussion of <a href='https://poplmark-reloaded.github.io/pdf/main.pdf'>POPLmark Reloaded</a> , discussing the solutions proposed to the benchmark problem.  The solutions are in the Beluga, Coq (recently renamed Rocq), and Agda provers.</p>]]></description>
    <content:encoded><![CDATA[<p>I continue the discussion of <a href='https://poplmark-reloaded.github.io/pdf/main.pdf'>POPLmark Reloaded</a> , discussing the solutions proposed to the benchmark problem.  The solutions are in the Beluga, Coq (recently renamed Rocq), and Agda provers.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/16326187-poplmark-reloaded-part-2.mp3" length="10103128" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-16326187</guid>
    <pubDate>Sun, 22 Dec 2024 19:00:00 -0600</pubDate>
    <itunes:duration>839</itunes:duration>
    <itunes:keywords>chapter m , POPLmark , type theory , strong normalization</itunes:keywords>
    <itunes:season>6</itunes:season>
    <itunes:episode>3</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>POPLmark Reloaded, Part 1</itunes:title>
    <title>POPLmark Reloaded, Part 1</title>
    <itunes:summary><![CDATA[I discuss the paper POPLmark Reloaded: Mechanizing Proofs by Logical Relations, which proposes a benchmark problem for mechanizing Programming Language theory.   ]]></itunes:summary>
    <description><![CDATA[<p>I discuss the paper <a href='https://poplmark-reloaded.github.io/pdf/main.pdf'>POPLmark Reloaded: Mechanizing Proofs by Logical Relations</a>, which proposes a benchmark problem for mechanizing Programming Language theory.  </p>]]></description>
    <content:encoded><![CDATA[<p>I discuss the paper <a href='https://poplmark-reloaded.github.io/pdf/main.pdf'>POPLmark Reloaded: Mechanizing Proofs by Logical Relations</a>, which proposes a benchmark problem for mechanizing Programming Language theory.  </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/16326173-poplmark-reloaded-part-1.mp3" length="11000904" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-16326173</guid>
    <pubDate>Sun, 22 Dec 2024 19:00:00 -0600</pubDate>
    <itunes:duration>914</itunes:duration>
    <itunes:keywords>chapter m , POPLmark , type theory , strong normalization</itunes:keywords>
    <itunes:season>6</itunes:season>
    <itunes:episode>2</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to Formalizing Programming Languages Theory</itunes:title>
    <title>Introduction to Formalizing Programming Languages Theory</title>
    <itunes:summary><![CDATA[In this episode, I begin discussing the question and history of formalizing results in Programming Languages Theory using interactive theorem provers like Rocq (formerly Coq) and Agda. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I begin discussing the question and history of formalizing results in Programming Languages Theory using interactive theorem provers like Rocq (formerly Coq) and Agda.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I begin discussing the question and history of formalizing results in Programming Languages Theory using interactive theorem provers like Rocq (formerly Coq) and Agda.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/16171483-introduction-to-formalizing-programming-languages-theory.mp3" length="8914200" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-16171483</guid>
    <pubDate>Mon, 25 Nov 2024 11:00:00 -0600</pubDate>
    <itunes:duration>740</itunes:duration>
    <itunes:keywords>chapter m , POPLmark , formalization , metatheory</itunes:keywords>
    <itunes:season>6</itunes:season>
    <itunes:episode>1</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Turing&#39;s proof of normalization for STLC</itunes:title>
    <title>Turing&#39;s proof of normalization for STLC</title>
    <itunes:summary><![CDATA[In this episode, I describe the first proof of normalization for STLC, written by Alan Turing in the 1940s.  See this short note for Turing's original proof and some historical comments. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I describe the first proof of normalization for STLC, written by Alan Turing in the 1940s.  See this <a href='https://nmmull.github.io/pdfs/turing.pdf'>short note</a> for Turing&apos;s original proof and some historical comments.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I describe the first proof of normalization for STLC, written by Alan Turing in the 1940s.  See this <a href='https://nmmull.github.io/pdfs/turing.pdf'>short note</a> for Turing&apos;s original proof and some historical comments.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/15105817-turing-s-proof-of-normalization-for-stlc.mp3" length="12748906" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-15105817</guid>
    <pubDate>Mon, 20 May 2024 22:00:00 -0500</pubDate>
    <itunes:duration>1059</itunes:duration>
    <itunes:keywords>chapter l , simple types, Turing, normalization</itunes:keywords>
    <itunes:season>5</itunes:season>
    <itunes:episode>6</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to normalization for STLC</itunes:title>
    <title>Introduction to normalization for STLC</title>
    <itunes:summary><![CDATA[In this episode, after a quick review of the preceding couple, I discuss the property of normalization for STLC, and talk a bit about proof methods.  We will look at proofs in more detail in the coming episodes.  Feel free to join the Telegram group for the podcast if you want to discuss anything (or just email me at aaron.stump@gmail.com). ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, after a quick review of the preceding couple, I discuss the property of normalization for STLC, and talk a bit about proof methods.  We will look at proofs in more detail in the coming episodes.  Feel free to join the <a href='https://t.me/+mAzu7KuwDNFlYTBh'>Telegram group</a> for the podcast if you want to discuss anything (or just email me at aaron.stump@gmail.com).</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, after a quick review of the preceding couple, I discuss the property of normalization for STLC, and talk a bit about proof methods.  We will look at proofs in more detail in the coming episodes.  Feel free to join the <a href='https://t.me/+mAzu7KuwDNFlYTBh'>Telegram group</a> for the podcast if you want to discuss anything (or just email me at aaron.stump@gmail.com).</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/15064258-introduction-to-normalization-for-stlc.mp3" length="6988589" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-15064258</guid>
    <pubDate>Mon, 13 May 2024 23:00:00 -0500</pubDate>
    <itunes:duration>579</itunes:duration>
    <itunes:keywords>chapter l , simple types, arithmetic, Church encoding, normalization</itunes:keywords>
    <itunes:season>5</itunes:season>
    <itunes:episode>5</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>The curious case of exponentiation in simply typed lambda calculus</itunes:title>
    <title>The curious case of exponentiation in simply typed lambda calculus</title>
    <itunes:summary><![CDATA[Like addition and multiplication on Church-encoded numbers, exponentiation can be assigned a type in simply typed lambda calculus (STLC).  But surprisingly, the type is non-uniform.  If we abbreviate (A -&gt; A) -&gt; A -&gt; A as Nat_A, then exponentiation, which is defined as \ x . \ y . y x, can be assigned type Nat_A -&gt; Nat_(A -&gt; A) -&gt; Nat_A.  The second argument needs to have type at strictly higher order than the first argument.  This has the fascinating con...]]></itunes:summary>
    <description><![CDATA[<p>Like addition and multiplication on Church-encoded numbers, exponentiation can be assigned a type in simply typed lambda calculus (STLC).  But surprisingly, the type is non-uniform.  If we abbreviate (A -&gt; A) -&gt; A -&gt; A as Nat_A, then exponentiation, which is defined as \ x . \ y . y x, can be assigned type Nat_A -&gt; Nat_(A -&gt; A) -&gt; Nat_A.  The second argument needs to have type at strictly higher order than the first argument.  This has the fascinating consequence that we cannot define self-exponentiation, \ x . exp x x.  That term would reduce to \ x . x x, which is provably not typable in STLC.  </p>]]></description>
    <content:encoded><![CDATA[<p>Like addition and multiplication on Church-encoded numbers, exponentiation can be assigned a type in simply typed lambda calculus (STLC).  But surprisingly, the type is non-uniform.  If we abbreviate (A -&gt; A) -&gt; A -&gt; A as Nat_A, then exponentiation, which is defined as \ x . \ y . y x, can be assigned type Nat_A -&gt; Nat_(A -&gt; A) -&gt; Nat_A.  The second argument needs to have type at strictly higher order than the first argument.  This has the fascinating consequence that we cannot define self-exponentiation, \ x . exp x x.  That term would reduce to \ x . x x, which is provably not typable in STLC.  </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/15007258-the-curious-case-of-exponentiation-in-simply-typed-lambda-calculus.mp3" length="5420358" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-15007258</guid>
    <pubDate>Sat, 04 May 2024 09:00:00 -0500</pubDate>
    <itunes:duration>449</itunes:duration>
    <itunes:keywords>chapter l , simple types, arithmetic, Church encoding</itunes:keywords>
    <itunes:season>5</itunes:season>
    <itunes:episode>4</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Arithmetic operations in simply typed lambda calculus</itunes:title>
    <title>Arithmetic operations in simply typed lambda calculus</title>
    <itunes:summary><![CDATA[It is maybe not so well known that arithmetic operations -- at least some of them -- can be implemented in simply typed lambda calculus (STLC).  Church-encoded numbers can be given the simple type (A -&gt; A) -&gt; A -&gt; A, for any simple type A.  If we abbreviate that type as Nat_A, then addition and multiplication can both be typed in STLC, at type Nat_A -&gt; Nat_A -&gt; Nat_A.  Interestingly, things change with exponentiation, which we will consider in the next episode. ]]></itunes:summary>
    <description><![CDATA[<p>It is maybe not so well known that arithmetic operations -- at least some of them -- can be implemented in simply typed lambda calculus (STLC).  Church-encoded numbers can be given the simple type (A -&gt; A) -&gt; A -&gt; A, for any simple type A.  If we abbreviate that type as Nat_A, then addition and multiplication can both be typed in STLC, at type Nat_A -&gt; Nat_A -&gt; Nat_A.  Interestingly, things change with exponentiation, which we will consider in the next episode.</p>]]></description>
    <content:encoded><![CDATA[<p>It is maybe not so well known that arithmetic operations -- at least some of them -- can be implemented in simply typed lambda calculus (STLC).  Church-encoded numbers can be given the simple type (A -&gt; A) -&gt; A -&gt; A, for any simple type A.  If we abbreviate that type as Nat_A, then addition and multiplication can both be typed in STLC, at type Nat_A -&gt; Nat_A -&gt; Nat_A.  Interestingly, things change with exponentiation, which we will consider in the next episode.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/15007246-arithmetic-operations-in-simply-typed-lambda-calculus.mp3" length="7191747" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-15007246</guid>
    <pubDate>Sat, 04 May 2024 09:00:00 -0500</pubDate>
    <itunes:duration>596</itunes:duration>
    <itunes:keywords>chapter l , simple types, arithmetic, Church encoding</itunes:keywords>
    <itunes:season>5</itunes:season>
    <itunes:episode>3</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>More on basics of simple types</itunes:title>
    <title>More on basics of simple types</title>
    <itunes:summary><![CDATA[I review the typing rules and some basic examples for STLC.  I also remind listeners of the Curry-Howard isomorphism for STLC.   ]]></itunes:summary>
    <description><![CDATA[<p>I review the typing rules and some basic examples for STLC.  I also remind listeners of the Curry-Howard isomorphism for STLC.  </p>]]></description>
    <content:encoded><![CDATA[<p>I review the typing rules and some basic examples for STLC.  I also remind listeners of the Curry-Howard isomorphism for STLC.  </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/14975985-more-on-basics-of-simple-types.mp3" length="11378085" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-14975985</guid>
    <pubDate>Mon, 29 Apr 2024 10:00:00 -0500</pubDate>
    <itunes:duration>945</itunes:duration>
    <itunes:keywords>chapter l , simple types</itunes:keywords>
    <itunes:season>5</itunes:season>
    <itunes:episode>2</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Begin Chapter on Simple Type Theory</itunes:title>
    <title>Begin Chapter on Simple Type Theory</title>
    <itunes:summary><![CDATA[In this episode, after a pretty long hiatus, I start a new chapter on simply typed lambda calculus.  I present the typing rules and give some basic examples.  Subsequent episodes will discuss various interesting nuances... ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, after a pretty long hiatus, I start a new chapter on simply typed lambda calculus.  I present the typing rules and give some basic examples.  Subsequent episodes will discuss various interesting nuances...</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, after a pretty long hiatus, I start a new chapter on simply typed lambda calculus.  I present the typing rules and give some basic examples.  Subsequent episodes will discuss various interesting nuances...</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/14919338-begin-chapter-on-simple-type-theory.mp3" length="11329820" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-14919338</guid>
    <pubDate>Fri, 19 Apr 2024 11:00:00 -0500</pubDate>
    <itunes:duration>941</itunes:duration>
    <itunes:keywords>chapter l , simple types</itunes:keywords>
    <itunes:season>5</itunes:season>
    <itunes:episode>1</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Some advanced examples in DCS</itunes:title>
    <title>Some advanced examples in DCS</title>
    <itunes:summary><![CDATA[This episode presents two somewhat more advanced examples in DCS.  They are Harper's continuation-based regular-expression matcher, and Bird's quickmin, which finds the least natural number not in a given list of distinct natural numbers, in linear time.  I explain these examples in detail and then discuss how they are implemented in DCS, which ensures that they are terminating on all inputs. ]]></itunes:summary>
    <description><![CDATA[<p>This episode presents two somewhat more advanced examples in DCS.  They are Harper&apos;s continuation-based regular-expression matcher, and Bird&apos;s quickmin, which finds the least natural number not in a given list of distinct natural numbers, in linear time.  I explain these examples in detail and then discuss how they are implemented in DCS, which ensures that they are terminating on all inputs.</p>]]></description>
    <content:encoded><![CDATA[<p>This episode presents two somewhat more advanced examples in DCS.  They are Harper&apos;s continuation-based regular-expression matcher, and Bird&apos;s quickmin, which finds the least natural number not in a given list of distinct natural numbers, in linear time.  I explain these examples in detail and then discuss how they are implemented in DCS, which ensures that they are terminating on all inputs.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/13653485-some-advanced-examples-in-dcs.mp3" length="16785092" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-13653485</guid>
    <pubDate>Sun, 24 Sep 2023 22:00:00 -0500</pubDate>
    <itunes:duration>1396</itunes:duration>
    <itunes:keywords>chapter k, dcs, Harper&#39;s matcher, Bird&#39;s quickmin</itunes:keywords>
    <itunes:season>4</itunes:season>
    <itunes:episode>19</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>DCS compared to termination checkers for type theories</itunes:title>
    <title>DCS compared to termination checkers for type theories</title>
    <itunes:summary><![CDATA[In this episode, I continue introducing DCS by comparing it to termination checkers in constructive type theories like Coq, Agda, and Lean.  I warmly invite ITTC listeners to experiment with the tool themselves.  The repo is here.  ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I continue introducing DCS by comparing it to termination checkers in constructive type theories like Coq, Agda, and Lean.  I warmly invite ITTC listeners to experiment with the tool themselves.  The repo is <a href='https://gitlab.com/astump97/dcs'>here</a>. </p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I continue introducing DCS by comparing it to termination checkers in constructive type theories like Coq, Agda, and Lean.  I warmly invite ITTC listeners to experiment with the tool themselves.  The repo is <a href='https://gitlab.com/astump97/dcs'>here</a>. </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/13616462-dcs-compared-to-termination-checkers-for-type-theories.mp3" length="14260773" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-13616462</guid>
    <pubDate>Mon, 18 Sep 2023 22:00:00 -0500</pubDate>
    <itunes:duration>1185</itunes:duration>
    <itunes:keywords>chapter k, dcs, termination checking</itunes:keywords>
    <itunes:season>4</itunes:season>
    <itunes:episode>18</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Getting started with DCS</itunes:title>
    <title>Getting started with DCS</title>
    <itunes:summary><![CDATA[In this episode, I talk more about the DCS tool, and invite listeners to check it out and possibly contribute!  The repo is here. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I talk more about the DCS tool, and invite listeners to check it out and possibly contribute!  The repo is <a href='https://gitlab.com/astump97/dcs'>here</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I talk more about the DCS tool, and invite listeners to check it out and possibly contribute!  The repo is <a href='https://gitlab.com/astump97/dcs'>here</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/13561784-getting-started-with-dcs.mp3" length="12550424" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-13561784</guid>
    <pubDate>Sat, 09 Sep 2023 23:00:00 -0500</pubDate>
    <itunes:duration>1043</itunes:duration>
    <itunes:keywords>chapter k, dcs</itunes:keywords>
    <itunes:season>4</itunes:season>
    <itunes:episode>17</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to DCS</itunes:title>
    <title>Introduction to DCS</title>
    <itunes:summary><![CDATA[DCS is a new functional programming language I am designing and implementing with Stefan Monnier.  DCS has a pure, terminating core, around which monads will be layered for possibly diverging, impure computation.  In this episode, I talk about this basic design, and its rationale.   ]]></itunes:summary>
    <description><![CDATA[<p>DCS is a new functional programming language I am designing and implementing with <a href='https://www.iro.umontreal.ca/~monnier/'>Stefan Monnier</a>.  DCS has a pure, terminating core, around which monads will be layered for possibly diverging, impure computation.  In this episode, I talk about this basic design, and its rationale.  </p>]]></description>
    <content:encoded><![CDATA[<p>DCS is a new functional programming language I am designing and implementing with <a href='https://www.iro.umontreal.ca/~monnier/'>Stefan Monnier</a>.  DCS has a pure, terminating core, around which monads will be layered for possibly diverging, impure computation.  In this episode, I talk about this basic design, and its rationale.  </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/13523777-introduction-to-dcs.mp3" length="8384092" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-13523777</guid>
    <pubDate>Sun, 03 Sep 2023 23:00:00 -0500</pubDate>
    <itunes:duration>696</itunes:duration>
    <itunes:keywords>chapter k, dcs</itunes:keywords>
    <itunes:season>4</itunes:season>
    <itunes:episode>16</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Semantics of subtyping</itunes:title>
    <title>Semantics of subtyping</title>
    <itunes:summary><![CDATA[I answer a listener's question about the semantics of subtyping, by discussing two different semantics: coercive subtyping and subsumptive subtyping.  The terminology I found in this paper by Zhaohui Luo; see Section 4 of the paper for a comparison of the two kinds of subtyping.  With coercive subtyping, we have subtyping axioms "A &lt;: B by c", where c is a function from A to B.  The idea is that the compiler should automatically insert calls to c whenever an expression of ty...]]></itunes:summary>
    <description><![CDATA[<p>I answer a listener&apos;s question about the semantics of subtyping, by discussing two different semantics: coercive subtyping and subsumptive subtyping.  The terminology I found in <a href='https://www.sciencedirect.com/science/article/pii/S0890540112001757'>this paper</a> by Zhaohui Luo; see Section 4 of the paper for a comparison of the two kinds of subtyping.  With coercive subtyping, we have subtyping axioms &quot;A &lt;: B by c&quot;, where c is a function from A to B.  The idea is that the compiler should automatically insert calls to c whenever an expression of type A needs to be converted to one of type B.  Subsumptive subtyping says that A &lt;: B means that the meaning of A is a subset of the meaning of B.  So this kind of subtyping depends on a semantics for types.  A simple choice is to interpret a type A as (as least roughly) the set of its inhabitants.  So a type like Integer might be interpreted as the set of all integers, etc.  Luo argues that subsumptive subtyping does not work for Martin-Loef type theory, where type annotations are inherent parts of terms.  For in that situation, A &lt;: B does not imply List A &lt;: List B, because Nil A is an inhabitant of List A but not of List B (which requires instead Nil B).<br/><br/>Join the telegram group <a href='https://t.me/+mAzu7KuwDNFlYTBh'>here</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>I answer a listener&apos;s question about the semantics of subtyping, by discussing two different semantics: coercive subtyping and subsumptive subtyping.  The terminology I found in <a href='https://www.sciencedirect.com/science/article/pii/S0890540112001757'>this paper</a> by Zhaohui Luo; see Section 4 of the paper for a comparison of the two kinds of subtyping.  With coercive subtyping, we have subtyping axioms &quot;A &lt;: B by c&quot;, where c is a function from A to B.  The idea is that the compiler should automatically insert calls to c whenever an expression of type A needs to be converted to one of type B.  Subsumptive subtyping says that A &lt;: B means that the meaning of A is a subset of the meaning of B.  So this kind of subtyping depends on a semantics for types.  A simple choice is to interpret a type A as (as least roughly) the set of its inhabitants.  So a type like Integer might be interpreted as the set of all integers, etc.  Luo argues that subsumptive subtyping does not work for Martin-Loef type theory, where type annotations are inherent parts of terms.  For in that situation, A &lt;: B does not imply List A &lt;: List B, because Nil A is an inhabitant of List A but not of List B (which requires instead Nil B).<br/><br/>Join the telegram group <a href='https://t.me/+mAzu7KuwDNFlYTBh'>here</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/13275300-semantics-of-subtyping.mp3" length="11075860" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-13275300</guid>
    <pubDate>Sun, 23 Jul 2023 22:00:00 -0500</pubDate>
    <itunes:duration>920</itunes:duration>
    <itunes:keywords>chapter j, subtyping, semantics , coercive subtyping , subsumptive subtyping</itunes:keywords>
    <itunes:season>4</itunes:season>
    <itunes:episode>15</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>More on type inference for simple subtypes</itunes:title>
    <title>More on type inference for simple subtypes</title>
    <itunes:summary><![CDATA[I continue the discussion of Mitchell's paper Type Inference with Simple Subtypes.  Coming soon: a discussion of semantics of subtyping. ]]></itunes:summary>
    <description><![CDATA[<p>I continue the discussion of Mitchell&apos;s paper <a href='https://theory.stanford.edu/people/jcm/papers/simple-sub.ps'>Type Inference with Simple Subtypes</a>.  Coming soon: a discussion of semantics of subtyping.</p>]]></description>
    <content:encoded><![CDATA[<p>I continue the discussion of Mitchell&apos;s paper <a href='https://theory.stanford.edu/people/jcm/papers/simple-sub.ps'>Type Inference with Simple Subtypes</a>.  Coming soon: a discussion of semantics of subtyping.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/13229803-more-on-type-inference-for-simple-subtypes.mp3" length="6589213" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-13229803</guid>
    <pubDate>Sat, 15 Jul 2023 21:00:00 -0500</pubDate>
    <itunes:duration>546</itunes:duration>
    <itunes:keywords>chapter j, subtyping, simple types , type inference</itunes:keywords>
    <itunes:season>4</itunes:season>
    <itunes:episode>14</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Subtyping, the golden key</itunes:title>
    <title>Subtyping, the golden key</title>
    <itunes:summary><![CDATA[In this episode, I wax rhapsodic for the potential of subtyping to improve the practice of pure functional programming, in particular by allowing functional programmers to drop various irritating function calls that are needed just to make types work out.  Examples are lifting functions with monad transformers, or even just the pure/return functions for applicative functors/monads. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I wax rhapsodic for the potential of subtyping to improve the practice of pure functional programming, in particular by allowing functional programmers to drop various irritating function calls that are needed just to make types work out.  Examples are lifting functions with monad transformers, or even just the pure/return functions for applicative functors/monads.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I wax rhapsodic for the potential of subtyping to improve the practice of pure functional programming, in particular by allowing functional programmers to drop various irritating function calls that are needed just to make types work out.  Examples are lifting functions with monad transformers, or even just the pure/return functions for applicative functors/monads.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/13186709-subtyping-the-golden-key.mp3" length="6678831" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-13186709</guid>
    <pubDate>Sat, 08 Jul 2023 22:00:00 -0500</pubDate>
    <itunes:duration>553</itunes:duration>
    <itunes:keywords>chapter j, subtyping, simple types , type inference, functional programming</itunes:keywords>
    <itunes:season>4</itunes:season>
    <itunes:episode>13</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Type inference with simple subtypes</itunes:title>
    <title>Type inference with simple subtypes</title>
    <itunes:summary><![CDATA[In this episode, I begin discussing a paper titled "Type Inference with Simple Subtypes," by John C. Mitchell.  The paper presents algorithms for computing a type and set of subtype constraints for any term of the pure lambda calculus.  I mostly focus here on how subtype constraints allow typing any term (which seems surprising).  You can join the telegram group for discussion related to the podcast. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I begin discussing a paper titled <a href='https://theory.stanford.edu/people/jcm/papers/simple-sub.ps'>&quot;Type Inference with Simple Subtypes,&quot;</a> by John C. Mitchell.  The paper presents algorithms for computing a type and set of subtype constraints for any term of the pure lambda calculus.  I mostly focus here on how subtype constraints allow typing any term (which seems surprising).<br/><br/>You can <a href='https://t.me/+mAzu7KuwDNFlYTBh'>join</a> the telegram group for discussion related to the podcast.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I begin discussing a paper titled <a href='https://theory.stanford.edu/people/jcm/papers/simple-sub.ps'>&quot;Type Inference with Simple Subtypes,&quot;</a> by John C. Mitchell.  The paper presents algorithms for computing a type and set of subtype constraints for any term of the pure lambda calculus.  I mostly focus here on how subtype constraints allow typing any term (which seems surprising).<br/><br/>You can <a href='https://t.me/+mAzu7KuwDNFlYTBh'>join</a> the telegram group for discussion related to the podcast.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/13136942-type-inference-with-simple-subtypes.mp3" length="9716683" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-13136942</guid>
    <pubDate>Thu, 29 Jun 2023 23:00:00 -0500</pubDate>
    <itunes:duration>807</itunes:duration>
    <itunes:keywords>chapter j, subtyping, simple types , type inference</itunes:keywords>
    <itunes:season>4</itunes:season>
    <itunes:episode>12</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Basics of subtyping</itunes:title>
    <title>Basics of subtyping</title>
    <itunes:summary><![CDATA[In this episode, I discuss a few of the basics for what we expect from a subtyping relation on types: reflexivity, transitivity, and the variances for arrow types. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I discuss a few of the basics for what we expect from a subtyping relation on types: reflexivity, transitivity, and the variances for arrow types.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I discuss a few of the basics for what we expect from a subtyping relation on types: reflexivity, transitivity, and the variances for arrow types.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/13079452-basics-of-subtyping.mp3" length="5860977" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-13079452</guid>
    <pubDate>Wed, 21 Jun 2023 16:00:00 -0500</pubDate>
    <itunes:duration>485</itunes:duration>
    <itunes:keywords>chapter j, subtyping, contravariance</itunes:keywords>
    <itunes:season>4</itunes:season>
    <itunes:episode>11</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Begin chapter on subtyping</itunes:title>
    <title>Begin chapter on subtyping</title>
    <itunes:summary><![CDATA[We begin a discussion of subtyping in functional programming.  In this episode, I talk about how subtyping is a neglected feature in implemented functional programming languages (for example, not found in Haskell), and how it could be very useful for writing lighter, more elegant code.  I also talk about how subtyping could help realize a new vision for practical strong functional programming, where the language has a pure, terminating core language, then a monad for pure but possib...]]></itunes:summary>
    <description><![CDATA[<p>We begin a discussion of subtyping in functional programming.  In this episode, I talk about how subtyping is a neglected feature in implemented functional programming languages (for example, not found in Haskell), and how it could be very useful for writing lighter, more elegant code.  I also talk about how subtyping could help realize a new vision for practical strong functional programming, where the language has a pure, terminating core language, then a monad for pure but possibly diverging computation, and finally a monad for impurity and divergence.</p>]]></description>
    <content:encoded><![CDATA[<p>We begin a discussion of subtyping in functional programming.  In this episode, I talk about how subtyping is a neglected feature in implemented functional programming languages (for example, not found in Haskell), and how it could be very useful for writing lighter, more elegant code.  I also talk about how subtyping could help realize a new vision for practical strong functional programming, where the language has a pure, terminating core language, then a monad for pure but possibly diverging computation, and finally a monad for impurity and divergence.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/13079439-begin-chapter-on-subtyping.mp3" length="11739483" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-13079439</guid>
    <pubDate>Tue, 20 Jun 2023 22:00:00 -0500</pubDate>
    <itunes:duration>975</itunes:duration>
    <itunes:keywords>chapter j, subtyping, strong functional programming</itunes:keywords>
    <itunes:season>4</itunes:season>
    <itunes:episode>10</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Last episode discussing Observational Equality Now for Good</itunes:title>
    <title>Last episode discussing Observational Equality Now for Good</title>
    <itunes:summary><![CDATA[In this episode, I conclude my discussion of some (but hardly all!) points from Pujet and Tabareau's POPL 2022 paper, "Observational Equality -- Now for Good!".  I talk a bit about the structure of the normalization proof in the paper, which uses induction recursion.  See this paper by Peter Dybjer for more about that feature.  Also, feel free to join the new Telegram group for the podcast if you want to discuss episodes. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I conclude my discussion of some (but hardly all!) points from Pujet and Tabareau&apos;s POPL 2022 paper, &quot;Observational Equality -- Now for Good!&quot;.  I talk a bit about the structure of the normalization proof in the paper, which uses induction recursion.  See <a href='https://www.cse.chalmers.se/~peterd/papers/Inductive_Recursive.pdf'>this paper</a> by Peter Dybjer for more about that feature.  Also, feel free to <a href='https://t.me/+mAzu7KuwDNFlYTBh'>join</a> the new Telegram group for the podcast if you want to discuss episodes.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I conclude my discussion of some (but hardly all!) points from Pujet and Tabareau&apos;s POPL 2022 paper, &quot;Observational Equality -- Now for Good!&quot;.  I talk a bit about the structure of the normalization proof in the paper, which uses induction recursion.  See <a href='https://www.cse.chalmers.se/~peterd/papers/Inductive_Recursive.pdf'>this paper</a> by Peter Dybjer for more about that feature.  Also, feel free to <a href='https://t.me/+mAzu7KuwDNFlYTBh'>join</a> the new Telegram group for the podcast if you want to discuss episodes.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/12641788-last-episode-discussing-observational-equality-now-for-good.mp3" length="8861586" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-12641788</guid>
    <pubDate>Thu, 13 Apr 2023 00:00:00 -0500</pubDate>
    <itunes:duration>735</itunes:duration>
    <itunes:keywords>chapter i, extensionality, observational type theory , telegram</itunes:keywords>
    <itunes:season>4</itunes:season>
    <itunes:episode>9</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>More on observational type theory</itunes:title>
    <title>More on observational type theory</title>
    <itunes:summary><![CDATA[I continue discussing the Puject and Tabareau paper, "Observational Equality -- Now for Good", in particular discussing more about how the equality type simplifies based on its index (which is the type of the terms being equated by the equality type), and how proofs of equalities can be used to cast terms from one type to another.  Also, in exciting news, I created a Telegram group that you can join if you want to discuss topics related to the podcast or particularly podcast episodes.  I...]]></itunes:summary>
    <description><![CDATA[<p>I continue discussing the Puject and Tabareau paper, &quot;<a href='https://hal.inria.fr/hal-03367052/document'>Observational Equality -- Now for Good</a>&quot;, in particular discussing more about how the equality type simplifies based on its index (which is the type of the terms being equated by the equality type), and how proofs of equalities can be used to cast terms from one type to another.<br/><br/>Also, in exciting news, I created a Telegram group that you can join if you want to discuss topics related to the podcast or particularly podcast episodes.  I will be monitoring the group.  I believe you have to request to join, and then I approve (it might take me until later in the day to do that, just fyi).  The invitation link is <a href='https://t.me/+mAzu7KuwDNFlYTBh'>here</a>.  </p>]]></description>
    <content:encoded><![CDATA[<p>I continue discussing the Puject and Tabareau paper, &quot;<a href='https://hal.inria.fr/hal-03367052/document'>Observational Equality -- Now for Good</a>&quot;, in particular discussing more about how the equality type simplifies based on its index (which is the type of the terms being equated by the equality type), and how proofs of equalities can be used to cast terms from one type to another.<br/><br/>Also, in exciting news, I created a Telegram group that you can join if you want to discuss topics related to the podcast or particularly podcast episodes.  I will be monitoring the group.  I believe you have to request to join, and then I approve (it might take me until later in the day to do that, just fyi).  The invitation link is <a href='https://t.me/+mAzu7KuwDNFlYTBh'>here</a>.  </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/12498889-more-on-observational-type-theory.mp3" length="9909776" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-12498889</guid>
    <pubDate>Thu, 23 Mar 2023 00:00:00 -0500</pubDate>
    <itunes:duration>823</itunes:duration>
    <itunes:keywords>chapter i, extensionality, observational type theory , telegram</itunes:keywords>
    <itunes:season>4</itunes:season>
    <itunes:episode>8</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to Observational Type Theory</itunes:title>
    <title>Introduction to Observational Type Theory</title>
    <itunes:summary><![CDATA[In this episode, I introduce an important paper by Pujet and Tabareau, titled "Observational Equality: Now for Good", that develops earlier work of McBride, Swierstra, and Altenkirch (which I will cover in a later episode) on a new approach to making a type theory extensional.  The idea is to have equality types reduce, within the theory, to statements of extensional equality for the type of the values being equated. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I introduce an important paper by Pujet and Tabareau, titled &quot;Observational Equality: Now for Good&quot;, that develops earlier work of McBride, Swierstra, and Altenkirch (which I will cover in a later episode) on a new approach to making a type theory extensional.  The idea is to have equality types reduce, within the theory, to statements of extensional equality for the type of the values being equated.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I introduce an important paper by Pujet and Tabareau, titled &quot;Observational Equality: Now for Good&quot;, that develops earlier work of McBride, Swierstra, and Altenkirch (which I will cover in a later episode) on a new approach to making a type theory extensional.  The idea is to have equality types reduce, within the theory, to statements of extensional equality for the type of the values being equated.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/12381667-introduction-to-observational-type-theory.mp3" length="7359091" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-12381667</guid>
    <pubDate>Sun, 05 Mar 2023 23:00:00 -0600</pubDate>
    <itunes:duration>610</itunes:duration>
    <itunes:keywords>chapter i, extensionality, definitional equality, propositional equality, observational equality</itunes:keywords>
    <itunes:season>4</itunes:season>
    <itunes:episode>8</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Interjection: The Liquid Tensor Experiment</itunes:title>
    <title>Interjection: The Liquid Tensor Experiment</title>
    <itunes:summary><![CDATA[I pause the chapter on extensionality in type theory to talk about something very exciting that I just learned about (though the project was completed Summer 2022): the so-called Liquid Tensor Experiment, to formalize a recent very difficult proof by a mathematician named Peter Scholze, in Lean.  This is the first time in history, that I know of, when a theorem was formalized in a theorem prover, in order to resolve doubts of the mathematician who proved it.  An amazing achievement....]]></itunes:summary>
    <description><![CDATA[<p>I pause the chapter on extensionality in type theory to talk about something very exciting that I just learned about (though the project was completed Summer 2022): the so-called <a href='https://xenaproject.wordpress.com/2021/06/05/half-a-year-of-the-liquid-tensor-experiment-amazing-developments/'>Liquid Tensor Experiment</a>, to formalize a recent very difficult proof by a mathematician named Peter Scholze, in Lean.  This is the first time in history, that I know of, when a theorem was formalized in a theorem prover, in order to resolve doubts of the mathematician who proved it.  An amazing achievement.  This episode tells the story, as I have understood it on line.  The result apparently sparked this <a href='https://www.youtube.com/playlist?list=PLHyI3Fbmv0Sc5XovavCUqSfq-6K9WfBoT'>recent workshop</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>I pause the chapter on extensionality in type theory to talk about something very exciting that I just learned about (though the project was completed Summer 2022): the so-called <a href='https://xenaproject.wordpress.com/2021/06/05/half-a-year-of-the-liquid-tensor-experiment-amazing-developments/'>Liquid Tensor Experiment</a>, to formalize a recent very difficult proof by a mathematician named Peter Scholze, in Lean.  This is the first time in history, that I know of, when a theorem was formalized in a theorem prover, in order to resolve doubts of the mathematician who proved it.  An amazing achievement.  This episode tells the story, as I have understood it on line.  The result apparently sparked this <a href='https://www.youtube.com/playlist?list=PLHyI3Fbmv0Sc5XovavCUqSfq-6K9WfBoT'>recent workshop</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/12359246-interjection-the-liquid-tensor-experiment.mp3" length="8969386" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-12359246</guid>
    <pubDate>Thu, 02 Mar 2023 00:00:00 -0600</pubDate>
    <itunes:duration>744</itunes:duration>
    <itunes:keywords>interjection , theorem provers , Lean , liquid tensor experiment</itunes:keywords>
    <itunes:season>4</itunes:season>
    <itunes:episode>7</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Extensional Martin-Loef Type Theory</itunes:title>
    <title>Extensional Martin-Loef Type Theory</title>
    <itunes:summary><![CDATA[In this episode, I discuss the basic distinguishing rule of Extensional Martin-Loef Type Theory, namely equality reflection.  This rule says that propositional equality implies definitional equality.  Algorithmically, it would imply that the type checker should do arbitrary proof search during type checking, to see if two expressions are definitionally equal.  This immediately gives us undecidability of type checking for the theory, at least as usually realized. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I discuss the basic distinguishing rule of Extensional Martin-Loef Type Theory, namely equality reflection.  This rule says that propositional equality implies definitional equality.  Algorithmically, it would imply that the type checker should do arbitrary proof search during type checking, to see if two expressions are definitionally equal.  This immediately gives us undecidability of type checking for the theory, at least as usually realized.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I discuss the basic distinguishing rule of Extensional Martin-Loef Type Theory, namely equality reflection.  This rule says that propositional equality implies definitional equality.  Algorithmically, it would imply that the type checker should do arbitrary proof search during type checking, to see if two expressions are definitionally equal.  This immediately gives us undecidability of type checking for the theory, at least as usually realized.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/12180965-extensional-martin-loef-type-theory.mp3" length="8236794" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-12180965</guid>
    <pubDate>Fri, 03 Feb 2023 23:00:00 -0600</pubDate>
    <itunes:duration>683</itunes:duration>
    <itunes:keywords>chapter i, extensionality, definitional equality, propositional equality</itunes:keywords>
    <itunes:season>4</itunes:season>
    <itunes:episode>6</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Begin chapter on extensionality</itunes:title>
    <title>Begin chapter on extensionality</title>
    <itunes:summary><![CDATA[This episode begins a new chapter on extensionality in type theory, where we seek to equate terms in different ways based on their types.  The basic example is function extensionality, where we would like to equate functions from A to B if given equal inputs at type A, they produce equal outputs at type B.  With this definition, quicksort and mergesort are equal, even though their codes are not syntactically equivalent.  The episode begins by reviewing the distinction between d...]]></itunes:summary>
    <description><![CDATA[<p>This episode begins a new chapter on extensionality in type theory, where we seek to equate terms in different ways based on their types.  The basic example is function extensionality, where we would like to equate functions from A to B if given equal inputs at type A, they produce equal outputs at type B.  With this definition, quicksort and mergesort are equal, even though their codes are not syntactically equivalent.  The episode begins by reviewing the distinction between definitional and propositional equality.<br/><br/>Also, I am still seeking your small donations ($5 or $10 would be awesome) to pay my podcast-hosting fees at Buzzsprout.  To donate, click <a href='https://donate.givetoiowa.org/s/1773/giving/19/home.aspx?sid=1773&amp;gid=2&amp;pgid=627&amp;tag=agn&amp;tab=tab1&amp;appealcode=GFWEB'>here</a>, and then under &quot;Gift details&quot; select &quot;Search for additional options&quot; and then search for Computer Science.  Select the Computer Science Development Fund, College of Liberal Arts and Sciences.  Then add gift instructions saying that this is to support the Iowa Type Theory Commute podcast of Aaron Stump.  Sorry it&apos;s that complicated.</p>]]></description>
    <content:encoded><![CDATA[<p>This episode begins a new chapter on extensionality in type theory, where we seek to equate terms in different ways based on their types.  The basic example is function extensionality, where we would like to equate functions from A to B if given equal inputs at type A, they produce equal outputs at type B.  With this definition, quicksort and mergesort are equal, even though their codes are not syntactically equivalent.  The episode begins by reviewing the distinction between definitional and propositional equality.<br/><br/>Also, I am still seeking your small donations ($5 or $10 would be awesome) to pay my podcast-hosting fees at Buzzsprout.  To donate, click <a href='https://donate.givetoiowa.org/s/1773/giving/19/home.aspx?sid=1773&amp;gid=2&amp;pgid=627&amp;tag=agn&amp;tab=tab1&amp;appealcode=GFWEB'>here</a>, and then under &quot;Gift details&quot; select &quot;Search for additional options&quot; and then search for Computer Science.  Select the Computer Science Development Fund, College of Liberal Arts and Sciences.  Then add gift instructions saying that this is to support the Iowa Type Theory Commute podcast of Aaron Stump.  Sorry it&apos;s that complicated.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/12114753-begin-chapter-on-extensionality.mp3" length="7558438" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-12114753</guid>
    <pubDate>Tue, 24 Jan 2023 23:00:00 -0600</pubDate>
    <itunes:duration>627</itunes:duration>
    <itunes:keywords>chapter i, extensionality, definitional equality, propositional equality</itunes:keywords>
    <itunes:season>4</itunes:season>
    <itunes:episode>5</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Papers from Formal Methods for Blockchains 2021</itunes:title>
    <title>Papers from Formal Methods for Blockchains 2021</title>
    <itunes:summary><![CDATA[In this episode, I talk about two papers from the 3rd International Workshop on Formal Methods for Blockchains, 2021.  Also, I am continuing my request for your small donations ($5 or $10 would be awesome) to pay my podcast-hosting fees at Buzzsprout.  To donate, click here, and then under "Gift details" select "Search for additional options" and then search for Computer Science.  Select the Computer Science Development Fund, College of Liberal Arts and Sciences.  Then add...]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I talk about two papers from the <a href='https://fmbc.gitlab.io/2021/'>3rd International Workshop on Formal Methods for Blockchains</a>, 2021.  Also, I am continuing my request for your small donations ($5 or $10 would be awesome) to pay my podcast-hosting fees at Buzzsprout.  To donate, click <a href='https://donate.givetoiowa.org/s/1773/giving/19/home.aspx?sid=1773&amp;gid=2&amp;pgid=627&amp;tag=agn&amp;tab=tab1&amp;appealcode=GFWEB'>here</a>, and then under &quot;Gift details&quot; select &quot;Search for additional options&quot; and then search for Computer Science.  Select the Computer Science Development Fund, College of Liberal Arts and Sciences.  Then add gift instructions saying that this is to support the Iowa Type Theory Commute podcast of Aaron Stump.  Sorry it&apos;s that complicated.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I talk about two papers from the <a href='https://fmbc.gitlab.io/2021/'>3rd International Workshop on Formal Methods for Blockchains</a>, 2021.  Also, I am continuing my request for your small donations ($5 or $10 would be awesome) to pay my podcast-hosting fees at Buzzsprout.  To donate, click <a href='https://donate.givetoiowa.org/s/1773/giving/19/home.aspx?sid=1773&amp;gid=2&amp;pgid=627&amp;tag=agn&amp;tab=tab1&amp;appealcode=GFWEB'>here</a>, and then under &quot;Gift details&quot; select &quot;Search for additional options&quot; and then search for Computer Science.  Select the Computer Science Development Fund, College of Liberal Arts and Sciences.  Then add gift instructions saying that this is to support the Iowa Type Theory Commute podcast of Aaron Stump.  Sorry it&apos;s that complicated.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/11960829-papers-from-formal-methods-for-blockchains-2021.mp3" length="12292171" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-11960829</guid>
    <pubDate>Sun, 01 Jan 2023 14:00:00 -0600</pubDate>
    <itunes:duration>1021</itunes:duration>
    <itunes:keywords>chapter h, formal methods, blockchain, Tezos</itunes:keywords>
    <itunes:season>4</itunes:season>
    <itunes:episode>4</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Mi-Cho-Coq: Michelson formalized and applied, in Coq</itunes:title>
    <title>Mi-Cho-Coq: Michelson formalized and applied, in Coq</title>
    <itunes:summary><![CDATA[In this episode, I discuss this paper, "Mi-Cho-Coq, a Framework for Certifying Tezos Smart Contracts", by Bernardo et al.  The paper gives a nice and very clear introduction to the Michelson language, and a formalization of it in Coq.  This is used to prove a correctness property about a Multisig contract.  I also kindly solicit your small donations ($5 or $10 would be awesome) to pay my podcast-hosting fees at Buzzsprout.  To donate, click here, and then under "Gift details" s...]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I discuss <a href='https://homepage.divms.uiowa.edu/~astump/7353d5f6-7206-11ed-8bce-ac1f6bc257dc/michocoq.pdf'>this paper</a>, &quot;Mi-Cho-Coq, a Framework for Certifying<br/>Tezos Smart Contracts&quot;, by Bernardo et al.  The paper gives a nice and very clear introduction to the Michelson language, and a formalization of it in Coq.  This is used to prove a correctness property about a Multisig contract.<br/><br/>I also kindly solicit your small donations ($5 or $10 would be awesome) to pay my podcast-hosting fees at Buzzsprout.  To donate, click <a href='https://donate.givetoiowa.org/s/1773/giving/19/home.aspx?sid=1773&amp;gid=2&amp;pgid=627&amp;tag=agn&amp;tab=tab1&amp;appealcode=GFWEB'>here</a>, and then under &quot;Gift details&quot; select &quot;Search for additional options&quot; and then search for Computer Science.  Select the Computer Science Development Fund, College of Liberal Arts and Sciences.  Then add gift instructions saying that this is to support the Iowa Type Theory Commute podcast of Aaron Stump.  Sorry it&apos;s that complicated.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I discuss <a href='https://homepage.divms.uiowa.edu/~astump/7353d5f6-7206-11ed-8bce-ac1f6bc257dc/michocoq.pdf'>this paper</a>, &quot;Mi-Cho-Coq, a Framework for Certifying<br/>Tezos Smart Contracts&quot;, by Bernardo et al.  The paper gives a nice and very clear introduction to the Michelson language, and a formalization of it in Coq.  This is used to prove a correctness property about a Multisig contract.<br/><br/>I also kindly solicit your small donations ($5 or $10 would be awesome) to pay my podcast-hosting fees at Buzzsprout.  To donate, click <a href='https://donate.givetoiowa.org/s/1773/giving/19/home.aspx?sid=1773&amp;gid=2&amp;pgid=627&amp;tag=agn&amp;tab=tab1&amp;appealcode=GFWEB'>here</a>, and then under &quot;Gift details&quot; select &quot;Search for additional options&quot; and then search for Computer Science.  Select the Computer Science Development Fund, College of Liberal Arts and Sciences.  Then add gift instructions saying that this is to support the Iowa Type Theory Commute podcast of Aaron Stump.  Sorry it&apos;s that complicated.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/11800478-mi-cho-coq-michelson-formalized-and-applied-in-coq.mp3" length="11250836" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-11800478</guid>
    <pubDate>Fri, 02 Dec 2022 00:00:00 -0600</pubDate>
    <itunes:duration>934</itunes:duration>
    <itunes:keywords>chapter h, formal methods, blockchain, Michelson</itunes:keywords>
    <itunes:season>4</itunes:season>
    <itunes:episode>3</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Verification of Tezos smart contracts with K-Michelson </itunes:title>
    <title>Verification of Tezos smart contracts with K-Michelson </title>
    <itunes:summary><![CDATA[In this episode (proudly wearing my "I am not an expert" hat), I discuss efforts by Runtime Verification to verify the Dexter2 defi smart contract, using their K-Michelson tool, which provides an executable description of the operational semantics of the Michelson language used for smart contracts on the Tezos blockchain. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode (proudly wearing my &quot;I am not an expert&quot; hat), I discuss efforts by Runtime Verification to verify the Dexter2 defi smart contract, using their K-Michelson tool, which provides an executable description of the operational semantics of the Michelson language used for smart contracts on the Tezos blockchain.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode (proudly wearing my &quot;I am not an expert&quot; hat), I discuss efforts by Runtime Verification to verify the Dexter2 defi smart contract, using their K-Michelson tool, which provides an executable description of the operational semantics of the Michelson language used for smart contracts on the Tezos blockchain.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/11674280-verification-of-tezos-smart-contracts-with-k-michelson.mp3" length="10407296" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-11674280</guid>
    <pubDate>Thu, 10 Nov 2022 23:00:00 -0600</pubDate>
    <itunes:duration>864</itunes:duration>
    <itunes:keywords>chapter h, formal methods, blockchain, K framework, Michelson, Dexter</itunes:keywords>
    <itunes:season>4</itunes:season>
    <itunes:episode>2</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Start of Season 4: Formal Methods for Blockchain</itunes:title>
    <title>Start of Season 4: Formal Methods for Blockchain</title>
    <itunes:summary><![CDATA[I start off a new chapter (seventeen!) of the podcast, to talk about formal methods for blockchain systems.  In the next few episodes, we will look at some verification efforts related to the Tezos blockchain. ]]></itunes:summary>
    <description><![CDATA[<p>I start off a new chapter (seventeen!) of the podcast, to talk about formal methods for blockchain systems.  In the next few episodes, we will look at some verification efforts related to the Tezos blockchain.</p>]]></description>
    <content:encoded><![CDATA[<p>I start off a new chapter (seventeen!) of the podcast, to talk about formal methods for blockchain systems.  In the next few episodes, we will look at some verification efforts related to the Tezos blockchain.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/11644291-start-of-season-4-formal-methods-for-blockchain.mp3" length="7933068" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-11644291</guid>
    <pubDate>Mon, 07 Nov 2022 00:00:00 -0600</pubDate>
    <itunes:duration>658</itunes:duration>
    <itunes:keywords>chapter h, formal methods, blockchain</itunes:keywords>
    <itunes:season>4</itunes:season>
    <itunes:episode>1</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Separation Logic II: recursive predicates</itunes:title>
    <title>Separation Logic II: recursive predicates</title>
    <itunes:summary><![CDATA[I discuss separation logic basics some more, as presented in the seminal paper by John C. Reynolds.  An important idea is describing data structure using separating conjunction and recursive predicates. ]]></itunes:summary>
    <description><![CDATA[<p>I discuss separation logic basics some more, as presented in the <a href='https://www.cs.cmu.edu/~jcr/seplogic.pdf'>seminal paper</a> by John C. Reynolds.  An important idea is describing data structure using separating conjunction and recursive predicates.</p>]]></description>
    <content:encoded><![CDATA[<p>I discuss separation logic basics some more, as presented in the <a href='https://www.cs.cmu.edu/~jcr/seplogic.pdf'>seminal paper</a> by John C. Reynolds.  An important idea is describing data structure using separating conjunction and recursive predicates.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/11329259-separation-logic-ii-recursive-predicates.mp3" length="8577547" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-11329259</guid>
    <pubDate>Thu, 15 Sep 2022 23:00:00 -0500</pubDate>
    <itunes:duration>712</itunes:duration>
    <itunes:keywords>chapter g, verified memory management, separation logic</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>35</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Separation Logic 1</itunes:title>
    <title>Separation Logic 1</title>
    <itunes:summary><![CDATA[I discuss separation logic, as presented in this seminal paper by the great John C. Reynolds.  I did not go very far into the topic, so please expect a follow-up episode. ]]></itunes:summary>
    <description><![CDATA[<p>I discuss separation logic, as presented in <a href='https://www.cs.cmu.edu/~jcr/seplogic.pdf'>this seminal paper</a> by the great John C. Reynolds.  I did not go very far into the topic, so please expect a follow-up episode.</p>]]></description>
    <content:encoded><![CDATA[<p>I discuss separation logic, as presented in <a href='https://www.cs.cmu.edu/~jcr/seplogic.pdf'>this seminal paper</a> by the great John C. Reynolds.  I did not go very far into the topic, so please expect a follow-up episode.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/11021336-separation-logic-1.mp3" length="9707245" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-11021336</guid>
    <pubDate>Sun, 24 Jul 2022 22:00:00 -0500</pubDate>
    <itunes:duration>806</itunes:duration>
    <itunes:keywords>chapter g, verified memory management, separation logic</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>34</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Let&#39;s talk about Rust</itunes:title>
    <title>Let&#39;s talk about Rust</title>
    <itunes:summary><![CDATA[In this episode, I talk briefly about Rust, which uses compile-time analysis to ensure that code is memory-safe (and also free of data races in concurrent code) without using a garbage collector.  Fantastic!  The language draws on but richly develops ideas on ownership that originated in academic research. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I talk briefly about Rust, which uses compile-time analysis to ensure that code is memory-safe (and also free of data races in concurrent code) without using a garbage collector.  Fantastic!  The language draws on but richly develops ideas on ownership that originated in academic research.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I talk briefly about Rust, which uses compile-time analysis to ensure that code is memory-safe (and also free of data races in concurrent code) without using a garbage collector.  Fantastic!  The language draws on but richly develops ideas on ownership that originated in academic research.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/10933141-let-s-talk-about-rust.mp3" length="9961474" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-10933141</guid>
    <pubDate>Sat, 09 Jul 2022 22:00:00 -0500</pubDate>
    <itunes:duration>827</itunes:duration>
    <itunes:keywords>chapter g, verified memory management, Rust</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>33</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Region-Based Memory Management</itunes:title>
    <title>Region-Based Memory Management</title>
    <itunes:summary><![CDATA[I discuss the idea of statically typed region-based memory management, proposed by Tofte and Talpin.  The idea is to allow programmers to declare explicitly the region from which to satisfy individual allocation requests.  Regions are created in a statically scoped way, so that after execution leaves the body of the region-creation construct, the entire region may be deallocated.  Type inference is used to make sure that no dangling pointers are dereferenced (after the associat...]]></itunes:summary>
    <description><![CDATA[<p>I discuss the idea of statically typed region-based memory management, proposed by Tofte and Talpin.  The idea is to allow programmers to declare explicitly the region from which to satisfy individual allocation requests.  Regions are created in a statically scoped way, so that after execution leaves the body of the region-creation construct, the entire region may be deallocated.  Type inference is used to make sure that no dangling pointers are dereferenced (after the associated region is deallocated).  This <a href='https://www.irisa.fr/prive/talpin/papers/ic97.pdf'>journal paper</a> about the idea is not easy reading, but has a lot of good explanations in and around all the technicalities.  Even better, I found, is<a href='https://www.cs.umd.edu/projects/cyclone/papers/cyclone-regions.pdf'> this paper</a> about region-based memory management in Cyclone.  There are lots of intuitive explanations of the ideas, and not so much gory technicality.</p>]]></description>
    <content:encoded><![CDATA[<p>I discuss the idea of statically typed region-based memory management, proposed by Tofte and Talpin.  The idea is to allow programmers to declare explicitly the region from which to satisfy individual allocation requests.  Regions are created in a statically scoped way, so that after execution leaves the body of the region-creation construct, the entire region may be deallocated.  Type inference is used to make sure that no dangling pointers are dereferenced (after the associated region is deallocated).  This <a href='https://www.irisa.fr/prive/talpin/papers/ic97.pdf'>journal paper</a> about the idea is not easy reading, but has a lot of good explanations in and around all the technicalities.  Even better, I found, is<a href='https://www.cs.umd.edu/projects/cyclone/papers/cyclone-regions.pdf'> this paper</a> about region-based memory management in Cyclone.  There are lots of intuitive explanations of the ideas, and not so much gory technicality.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/10834282-region-based-memory-management.mp3" length="12236026" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-10834282</guid>
    <pubDate>Tue, 21 Jun 2022 22:00:00 -0500</pubDate>
    <itunes:duration>1017</itunes:duration>
    <itunes:keywords>chapter g, verified memory management, regions</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>32</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to verified memory management</itunes:title>
    <title>Introduction to verified memory management</title>
    <itunes:summary><![CDATA[In this episode, I start a new chapter (we are up to Chapter 16, here), about verifying safe manual management of memory.  I have personally gotten pretty interested in this topic, having seen through some simple experiments with Haskell how much time can go into garbage collection for seemingly simple benchmarks.  I also talk about why verifying memory-usage properties of programs is challenging in proof assistants. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I start a new chapter (we are up to Chapter 16, here), about verifying safe manual management of memory.  I have personally gotten pretty interested in this topic, having seen through some simple experiments with Haskell how much time can go into garbage collection for seemingly simple benchmarks.  I also talk about why verifying memory-usage properties of programs is challenging in proof assistants.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I start a new chapter (we are up to Chapter 16, here), about verifying safe manual management of memory.  I have personally gotten pretty interested in this topic, having seen through some simple experiments with Haskell how much time can go into garbage collection for seemingly simple benchmarks.  I also talk about why verifying memory-usage properties of programs is challenging in proof assistants.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/10737959-introduction-to-verified-memory-management.mp3" length="12376484" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-10737959</guid>
    <pubDate>Sat, 04 Jun 2022 23:00:00 -0500</pubDate>
    <itunes:duration>1028</itunes:duration>
    <itunes:keywords>chapter g, verified memory management</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>31</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>More on Metamath</itunes:title>
    <title>More on Metamath</title>
    <itunes:summary><![CDATA[I laud the Metamath proof checker and its excellent book.  I am also looking for suggestions on what to discuss next, as I am ready to wrap up this chapter on proof assistants. ]]></itunes:summary>
    <description><![CDATA[<p>I laud the Metamath proof checker and its excellent book.  I am also looking for suggestions on what to discuss next, as I am ready to wrap up this chapter on proof assistants.</p>]]></description>
    <content:encoded><![CDATA[<p>I laud the Metamath proof checker and its excellent book.  I am also looking for suggestions on what to discuss next, as I am ready to wrap up this chapter on proof assistants.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/10655553-more-on-metamath.mp3" length="12503388" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-10655553</guid>
    <pubDate>Fri, 20 May 2022 22:00:00 -0500</pubDate>
    <itunes:duration>1039</itunes:duration>
    <itunes:keywords>chapter f, interactive theorem provers, Metamath</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>30</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Metamath</itunes:title>
    <title>Metamath</title>
    <itunes:summary><![CDATA[In this episode I share my initial impressions -- very positive! -- of the Metamath system.  Metamath allows one to develop theorems from axioms which you state.  Typing or other syntactic requirements of axioms or theorems are also expressed axiomatically.  The system exhibits an elegant coherent vision for how such a tool should work, and was super easy to download and try out. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode I share my initial impressions -- very positive! -- of the <a href='http://us.metamath.org/index.html'>Metamath</a> system.  Metamath allows one to develop theorems from axioms which you state.  Typing or other syntactic requirements of axioms or theorems are also expressed axiomatically.  The system exhibits an elegant coherent vision for how such a tool should work, and was super easy to download and try out.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode I share my initial impressions -- very positive! -- of the <a href='http://us.metamath.org/index.html'>Metamath</a> system.  Metamath allows one to develop theorems from axioms which you state.  Typing or other syntactic requirements of axioms or theorems are also expressed axiomatically.  The system exhibits an elegant coherent vision for how such a tool should work, and was super easy to download and try out.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/10490442-metamath.mp3" length="10504064" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-10490442</guid>
    <pubDate>Sat, 23 Apr 2022 16:00:00 -0500</pubDate>
    <itunes:duration>872</itunes:duration>
    <itunes:keywords>chapter f, interactive theorem provers, Metamath</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>29</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>The Seventeen Provers of the World</itunes:title>
    <title>The Seventeen Provers of the World</title>
    <itunes:summary><![CDATA[I discuss a book edited by Freek Wiedijk (pronounced "Frake Weedike"), which describes the solutions he received in response to a call for formalized proofs of the irrationality of the square root of 2.  The book was published in 2006, and made an impression on me then.  The provers we have discussed so far all have a solution in the book, except for Lean, which was created after that year.  Happily, you can find a PDF of the book here, on Wiedijk's web site. ]]></itunes:summary>
    <description><![CDATA[<p>I discuss a book edited by Freek Wiedijk (pronounced &quot;Frake Weedike&quot;), which describes the solutions he received in response to a call for formalized proofs of the irrationality of the square root of 2.  The book was published in 2006, and made an impression on me then.  The provers we have discussed so far all have a solution in the book, except for Lean, which was created after that year.  Happily, you can find a PDF of the book <a href='http://www.cs.ru.nl/~freek/comparison/comparison.pdf'>here</a>, on Wiedijk&apos;s web site.</p>]]></description>
    <content:encoded><![CDATA[<p>I discuss a book edited by Freek Wiedijk (pronounced &quot;Frake Weedike&quot;), which describes the solutions he received in response to a call for formalized proofs of the irrationality of the square root of 2.  The book was published in 2006, and made an impression on me then.  The provers we have discussed so far all have a solution in the book, except for Lean, which was created after that year.  Happily, you can find a PDF of the book <a href='http://www.cs.ru.nl/~freek/comparison/comparison.pdf'>here</a>, on Wiedijk&apos;s web site.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/10409623-the-seventeen-provers-of-the-world.mp3" length="7665964" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-10409623</guid>
    <pubDate>Sat, 09 Apr 2022 23:00:00 -0500</pubDate>
    <itunes:duration>636</itunes:duration>
    <itunes:keywords>chapter f, interactive theorem provers</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>28</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>More on Lean</itunes:title>
    <title>More on Lean</title>
    <itunes:summary><![CDATA[I talk about my positive experience trying out the tools for Lean, specifically the 'lean' executable and lean-mode in emacs. ]]></itunes:summary>
    <description><![CDATA[<p>I talk about my positive experience trying out the tools for Lean, specifically the &apos;lean&apos; executable and lean-mode in emacs.</p>]]></description>
    <content:encoded><![CDATA[<p>I talk about my positive experience trying out the tools for Lean, specifically the &apos;lean&apos; executable and lean-mode in emacs.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/10238938-more-on-lean.mp3" length="11037597" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-10238938</guid>
    <pubDate>Sat, 12 Mar 2022 22:00:00 -0600</pubDate>
    <itunes:duration>917</itunes:duration>
    <itunes:keywords>chapter f, interactive theorem provers, Lean</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>27</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>The Lean Prover</itunes:title>
    <title>The Lean Prover</title>
    <itunes:summary><![CDATA[In this episode, I talk about what I have learned so far about the Lean prover, especially from an excellent (if somewhat advanced) Master's thesis, "The Type Theory of Lean" by Marco Garneiro. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I talk about what I have learned so far about the Lean prover, especially from an excellent (if somewhat advanced) Master&apos;s thesis, <a href='https://github.com/digama0/lean-type-theory/releases/download/v1.0/main.pdf'>&quot;The Type Theory of Lean&quot; </a>by Marco Garneiro.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I talk about what I have learned so far about the Lean prover, especially from an excellent (if somewhat advanced) Master&apos;s thesis, <a href='https://github.com/digama0/lean-type-theory/releases/download/v1.0/main.pdf'>&quot;The Type Theory of Lean&quot; </a>by Marco Garneiro.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/10155663-the-lean-prover.mp3" length="10742315" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-10155663</guid>
    <pubDate>Sun, 27 Feb 2022 22:00:00 -0600</pubDate>
    <itunes:duration>892</itunes:duration>
    <itunes:keywords>chapter f, interactive theorem provers, Lean</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>26</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>More on Isabelle, and the Complexity of ITPs</itunes:title>
    <title>More on Isabelle, and the Complexity of ITPs</title>
    <itunes:summary><![CDATA[I talk about my attempts to use Isabelle as a newbie, and reflect a little on the complexity of both Isabelle and Coq. ]]></itunes:summary>
    <description><![CDATA[<p>I talk about my attempts to use Isabelle as a newbie, and reflect a little on the complexity of both Isabelle and Coq.</p>]]></description>
    <content:encoded><![CDATA[<p>I talk about my attempts to use Isabelle as a newbie, and reflect a little on the complexity of both Isabelle and Coq.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/10090881-more-on-isabelle-and-the-complexity-of-itps.mp3" length="11723845" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-10090881</guid>
    <pubDate>Wed, 16 Feb 2022 22:00:00 -0600</pubDate>
    <itunes:duration>974</itunes:duration>
    <itunes:keywords>chapter f, interactive theorem provers,Isabelle, Coq</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>25</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Isabelle/HOL</itunes:title>
    <title>Isabelle/HOL</title>
    <itunes:summary><![CDATA[The Isabelle theorem prover supports different logics, but its most developed seems to be Higher-Order Logic (HOL).  In this episode, I talk about the logic and approach of Isabelle/HOL, as far as I have understood them.   ]]></itunes:summary>
    <description><![CDATA[<p>The Isabelle theorem prover supports different logics, but its most developed seems to be Higher-Order Logic (HOL).  In this episode, I talk about the logic and approach of Isabelle/HOL, as far as I have understood them.  </p>]]></description>
    <content:encoded><![CDATA[<p>The Isabelle theorem prover supports different logics, but its most developed seems to be Higher-Order Logic (HOL).  In this episode, I talk about the logic and approach of Isabelle/HOL, as far as I have understood them.  </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9967326-isabelle-hol.mp3" length="12201822" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9967326</guid>
    <pubDate>Thu, 27 Jan 2022 23:00:00 -0600</pubDate>
    <itunes:duration>1014</itunes:duration>
    <itunes:keywords>chapter f, interactive theorem provers, Isabelle HOL</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>24</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>More on Agda</itunes:title>
    <title>More on Agda</title>
    <itunes:summary><![CDATA[I talk a bit more about the Agda proof assistant. ]]></itunes:summary>
    <description><![CDATA[<p>I talk a bit more about the Agda proof assistant.</p>]]></description>
    <content:encoded><![CDATA[<p>I talk a bit more about the Agda proof assistant.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9878084-more-on-agda.mp3" length="9438903" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9878084</guid>
    <pubDate>Wed, 12 Jan 2022 19:00:00 -0600</pubDate>
    <itunes:duration>783</itunes:duration>
    <itunes:keywords>chapter f, interactive theorem provers, Agda</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>23</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>A look at Agda</itunes:title>
    <title>A look at Agda</title>
    <itunes:summary><![CDATA[In this episode I talk a bit about the Agda proof assistant. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode I talk a bit about the Agda proof assistant.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode I talk a bit about the Agda proof assistant.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9858239-a-look-at-agda.mp3" length="11119416" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9858239</guid>
    <pubDate>Sun, 09 Jan 2022 23:00:00 -0600</pubDate>
    <itunes:duration>924</itunes:duration>
    <itunes:keywords>chapter f, interactive theorem provers, Agda</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>22</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>More reflections on Coq</itunes:title>
    <title>More reflections on Coq</title>
    <itunes:summary><![CDATA[I talk about a couple good resources for learning Coq, the problem of too many ways to do things in type theory, and issues trying to explain and document a very complex language. ]]></itunes:summary>
    <description><![CDATA[<p>I talk about a couple good resources for learning Coq, the problem of too many ways to do things in type theory, and issues trying to explain and document a very complex language.</p>]]></description>
    <content:encoded><![CDATA[<p>I talk about a couple good resources for learning Coq, the problem of too many ways to do things in type theory, and issues trying to explain and document a very complex language.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9813199-more-reflections-on-coq.mp3" length="13329707" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9813199</guid>
    <pubDate>Fri, 31 Dec 2021 17:00:00 -0600</pubDate>
    <itunes:duration>1108</itunes:duration>
    <itunes:keywords>chapter f, interactive theorem provers, Coq</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>21</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>The Coq Proof Assistant</itunes:title>
    <title>The Coq Proof Assistant</title>
    <itunes:summary><![CDATA[I discuss Coq, a widely used proof assistant based on a constructive type theory.  One episode definitely cannot do justice to the complexity of a tool like this -- but I take a first try at covering its features at a high level. ]]></itunes:summary>
    <description><![CDATA[<p>I discuss Coq, a widely used proof assistant based on a constructive type theory.  One episode definitely cannot do justice to the complexity of a tool like this -- but I take a first try at covering its features at a high level.</p>]]></description>
    <content:encoded><![CDATA[<p>I discuss Coq, a widely used proof assistant based on a constructive type theory.  One episode definitely cannot do justice to the complexity of a tool like this -- but I take a first try at covering its features at a high level.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9801022-the-coq-proof-assistant.mp3" length="10867718" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9801022</guid>
    <pubDate>Tue, 28 Dec 2021 22:00:00 -0600</pubDate>
    <itunes:duration>903</itunes:duration>
    <itunes:keywords>chapter f, interactive theorem provers, Coq</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>20</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to Interactive Theorem Provers</itunes:title>
    <title>Introduction to Interactive Theorem Provers</title>
    <itunes:summary><![CDATA[This is the start of Chapter 15, about interactive theorem provers (ITPs).  In this episode, I talk about the difference between fully automatic and interactive provers, and my plan to discuss and compare several different ITPs, in future episodes of this chapter. ]]></itunes:summary>
    <description><![CDATA[<p>This is the start of Chapter 15, about interactive theorem provers (ITPs).  In this episode, I talk about the difference between fully automatic and interactive provers, and my plan to discuss and compare several different ITPs, in future episodes of this chapter.</p>]]></description>
    <content:encoded><![CDATA[<p>This is the start of Chapter 15, about interactive theorem provers (ITPs).  In this episode, I talk about the difference between fully automatic and interactive provers, and my plan to discuss and compare several different ITPs, in future episodes of this chapter.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9738094-introduction-to-interactive-theorem-provers.mp3" length="8650276" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9738094</guid>
    <pubDate>Thu, 16 Dec 2021 22:00:00 -0600</pubDate>
    <itunes:duration>718</itunes:duration>
    <itunes:keywords>chapter f, interactive theorem provers</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>19</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>The proof-theoretic ordinal of Peano Arithmetic is Epsilon-0</itunes:title>
    <title>The proof-theoretic ordinal of Peano Arithmetic is Epsilon-0</title>
    <itunes:summary><![CDATA[In this episode, I outline the argument for why the proof-theoretic ordinal (in the sense of Rathjen, as presented last episode) is epsilon-0.  My explanation has something of a hole, in explaining how one would go about deriving induction for ordinals strictly less than epsilon-0 in Peano Arithmetic.  To help paper over this hole a little, I discuss a really nice recent exposition of encoding ordinals in Agda. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I outline the argument for why the proof-theoretic ordinal (in the sense of Rathjen, as presented last episode) is epsilon-0.  My explanation has something of a hole, in explaining how one would go about deriving induction for ordinals strictly less than epsilon-0 in Peano Arithmetic.  To help paper over this hole a little, I discuss a really nice recent <a href='https://arxiv.org/abs/1904.10759'>exposition</a> of encoding ordinals in Agda.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I outline the argument for why the proof-theoretic ordinal (in the sense of Rathjen, as presented last episode) is epsilon-0.  My explanation has something of a hole, in explaining how one would go about deriving induction for ordinals strictly less than epsilon-0 in Peano Arithmetic.  To help paper over this hole a little, I discuss a really nice recent <a href='https://arxiv.org/abs/1904.10759'>exposition</a> of encoding ordinals in Agda.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9701315-the-proof-theoretic-ordinal-of-peano-arithmetic-is-epsilon-0.mp3" length="10239600" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9701315</guid>
    <pubDate>Fri, 10 Dec 2021 22:00:00 -0600</pubDate>
    <itunes:duration>850</itunes:duration>
    <itunes:keywords>chapter e, proof theory, ordinal analysis, Peano Arithmetic</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>18</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>The proof-theoretic ordinal of a logical theory</itunes:title>
    <title>The proof-theoretic ordinal of a logical theory</title>
    <itunes:summary><![CDATA[Ordinal analysis seeks to determine the strength of a logical theory by assigning an ordinal to it.  Which one?  In this episode I describe a definition of the proof-theoretic ordinal of a logical theory from a paper by proof theorist Michael Rathjen.  It is basically a measure of how strong an induction principle is derivable in the theory.  (The first parts of the paper are pretty accessible, but the rest gets hard, at least for me.) ]]></itunes:summary>
    <description><![CDATA[<p>Ordinal analysis seeks to determine the strength of a logical theory by assigning an ordinal to it.  Which one?  In this episode I describe a definition of the proof-theoretic ordinal of a logical theory from a <a href='https://www1.maths.leeds.ac.uk/~rathjen/Theories_Ordinals.pdf'>paper</a> by proof theorist Michael Rathjen.  It is basically a measure of how strong an induction principle is derivable in the theory.  (The first parts of the paper are pretty accessible, but the rest gets hard, at least for me.)</p>]]></description>
    <content:encoded><![CDATA[<p>Ordinal analysis seeks to determine the strength of a logical theory by assigning an ordinal to it.  Which one?  In this episode I describe a definition of the proof-theoretic ordinal of a logical theory from a <a href='https://www1.maths.leeds.ac.uk/~rathjen/Theories_Ordinals.pdf'>paper</a> by proof theorist Michael Rathjen.  It is basically a measure of how strong an induction principle is derivable in the theory.  (The first parts of the paper are pretty accessible, but the rest gets hard, at least for me.)</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9585142-the-proof-theoretic-ordinal-of-a-logical-theory.mp3" length="8844635" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9585142</guid>
    <pubDate>Sat, 20 Nov 2021 23:00:00 -0600</pubDate>
    <itunes:duration>734</itunes:duration>
    <itunes:keywords>chapter e, proof theory, ordinal analysis</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>17</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to Ordinal Analysis</itunes:title>
    <title>Introduction to Ordinal Analysis</title>
    <itunes:summary><![CDATA[Ordinal analysis is an important branch of proof theory, which seeks to compare, quantitatively, the strengths of different proof systems.  The quantities in question are ordinals, which extend the ordering character of natural numbers into the infinite.  In this episode, I discuss these ideas a bit further, and also review a little the ordinals up to epsilon 0. ]]></itunes:summary>
    <description><![CDATA[<p>Ordinal analysis is an important branch of proof theory, which seeks to compare, quantitatively, the strengths of different proof systems.  The quantities in question are ordinals, which extend the ordering character of natural numbers into the infinite.  In this episode, I discuss these ideas a bit further, and also review a little the ordinals up to epsilon 0.</p>]]></description>
    <content:encoded><![CDATA[<p>Ordinal analysis is an important branch of proof theory, which seeks to compare, quantitatively, the strengths of different proof systems.  The quantities in question are ordinals, which extend the ordering character of natural numbers into the infinite.  In this episode, I discuss these ideas a bit further, and also review a little the ordinals up to epsilon 0.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9562329-introduction-to-ordinal-analysis.mp3" length="10560536" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9562329</guid>
    <pubDate>Tue, 16 Nov 2021 21:00:00 -0600</pubDate>
    <itunes:duration>877</itunes:duration>
    <itunes:keywords>chapter e, proof theory, ordinal analysis</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>16</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>An analogy for multiplicative disjunction</itunes:title>
    <title>An analogy for multiplicative disjunction</title>
    <itunes:summary><![CDATA[Listen in while I have an actual insight on air!  After a week of head scratching, I figure out -- while chattering! -- what I hope is both a correct and intuitive example of multiplicative disjunction. ]]></itunes:summary>
    <description><![CDATA[<p>Listen in while I have an actual insight on air!  After a week of head scratching, I figure out -- while chattering! -- what I hope is both a correct and intuitive example of multiplicative disjunction.</p>]]></description>
    <content:encoded><![CDATA[<p>Listen in while I have an actual insight on air!  After a week of head scratching, I figure out -- while chattering! -- what I hope is both a correct and intuitive example of multiplicative disjunction.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9481528-an-analogy-for-multiplicative-disjunction.mp3" length="8247464" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9481528</guid>
    <pubDate>Wed, 03 Nov 2021 00:00:00 -0500</pubDate>
    <itunes:duration>684</itunes:duration>
    <itunes:keywords>chapter e, proof theory , linear logic</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>15</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Linear conjunctions and disjunctions</itunes:title>
    <title>Linear conjunctions and disjunctions</title>
    <itunes:summary><![CDATA[I explain the basic idea of multiplicative versus additive proof rules, and consider multiplicative conjunction (tensor), addition conjunction (&amp;, "with"), additive disjunction -- but leaving multiplicative disjunction (par) for next time! ]]></itunes:summary>
    <description><![CDATA[<p>I explain the basic idea of multiplicative versus additive proof rules, and consider multiplicative conjunction (tensor), addition conjunction (&amp;, &quot;with&quot;), additive disjunction -- but leaving multiplicative disjunction (par) for next time!</p>]]></description>
    <content:encoded><![CDATA[<p>I explain the basic idea of multiplicative versus additive proof rules, and consider multiplicative conjunction (tensor), addition conjunction (&amp;, &quot;with&quot;), additive disjunction -- but leaving multiplicative disjunction (par) for next time!</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9453658-linear-conjunctions-and-disjunctions.mp3" length="8680668" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9453658</guid>
    <pubDate>Thu, 28 Oct 2021 22:00:00 -0500</pubDate>
    <itunes:duration>720</itunes:duration>
    <itunes:keywords>chapter e, proof theory , linear logic</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>14</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>A taste of linear logic</itunes:title>
    <title>A taste of linear logic</title>
    <itunes:summary><![CDATA[We discuss briefly the central ideas of linear logic, where by default assumptions must be used exactly once.  ]]></itunes:summary>
    <description><![CDATA[<p>We discuss briefly the central ideas of linear logic, where by default assumptions must be used exactly once. </p>]]></description>
    <content:encoded><![CDATA[<p>We discuss briefly the central ideas of linear logic, where by default assumptions must be used exactly once. </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9413022-a-taste-of-linear-logic.mp3" length="8495382" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9413022</guid>
    <pubDate>Thu, 21 Oct 2021 23:00:00 -0500</pubDate>
    <itunes:duration>705</itunes:duration>
    <itunes:keywords>chapter e, proof theory , sequent calculus , linear logic</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>13</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>true</itunes:explicit>
  </item>
  <item>
    <itunes:title>Structural rules, or the Curse of the Bound Variable</itunes:title>
    <title>Structural rules, or the Curse of the Bound Variable</title>
    <itunes:summary><![CDATA[In this episode I discuss the basic structural rules of weakening, contraction, and exchange, and speculate on their dark origin. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode I discuss the basic structural rules of weakening, contraction, and exchange, and speculate on their dark origin.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode I discuss the basic structural rules of weakening, contraction, and exchange, and speculate on their dark origin.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9359759-structural-rules-or-the-curse-of-the-bound-variable.mp3" length="9333030" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9359759</guid>
    <pubDate>Tue, 12 Oct 2021 23:00:00 -0500</pubDate>
    <itunes:duration>775</itunes:duration>
    <itunes:keywords>chapter e, proof theory, structural rules</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>12</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Why Cut Elimination is More Complicated than Normalization</itunes:title>
    <title>Why Cut Elimination is More Complicated than Normalization</title>
    <itunes:summary><![CDATA[Cut elimination for sequent calculus is more involved that normalization of detours for natural deduction.  There are more cases of cuts that must be transformed than correspond to detours (introductions followed by eliminations).  In this episode, I explain why that is. ]]></itunes:summary>
    <description><![CDATA[<p>Cut elimination for sequent calculus is more involved that normalization of detours for natural deduction.  There are more cases of cuts that must be transformed than correspond to detours (introductions followed by eliminations).  In this episode, I explain why that is.</p>]]></description>
    <content:encoded><![CDATA[<p>Cut elimination for sequent calculus is more involved that normalization of detours for natural deduction.  There are more cases of cuts that must be transformed than correspond to detours (introductions followed by eliminations).  In this episode, I explain why that is.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9313289-why-cut-elimination-is-more-complicated-than-normalization.mp3" length="8748735" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9313289</guid>
    <pubDate>Tue, 05 Oct 2021 00:00:00 -0500</pubDate>
    <itunes:duration>726</itunes:duration>
    <itunes:keywords>chapter e, proof theory , sequent calculus , cut elimination</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>11</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to Cut Elimination</itunes:title>
    <title>Introduction to Cut Elimination</title>
    <itunes:summary><![CDATA[We saw in the last few episodes that proofs in natural deduction can be simplified by removing detours, which occur when an introduction inference is immediately followed by an elimination inference on the introduced formula.  What corresponds to this for sequent calculus proofs?  The answer is cut elimination.  This episode describes the cut rule and what is meant by a cut-elimination procedure.  We will talk more about such a procedure in the next episode. ]]></itunes:summary>
    <description><![CDATA[<p>We saw in the last few episodes that proofs in natural deduction can be simplified by removing detours, which occur when an introduction inference is immediately followed by an elimination inference on the introduced formula.  What corresponds to this for sequent calculus proofs?  The answer is cut elimination.  This episode describes the cut rule and what is meant by a cut-elimination procedure.  We will talk more about such a procedure in the next episode.</p>]]></description>
    <content:encoded><![CDATA[<p>We saw in the last few episodes that proofs in natural deduction can be simplified by removing detours, which occur when an introduction inference is immediately followed by an elimination inference on the introduced formula.  What corresponds to this for sequent calculus proofs?  The answer is cut elimination.  This episode describes the cut rule and what is meant by a cut-elimination procedure.  We will talk more about such a procedure in the next episode.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9278662-introduction-to-cut-elimination.mp3" length="6550320" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9278662</guid>
    <pubDate>Wed, 29 Sep 2021 00:00:00 -0500</pubDate>
    <itunes:duration>543</itunes:duration>
    <itunes:keywords>chapter e, proof theory , sequent calculus , cut elimination</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>10</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Normalization of detours for implication inferences</itunes:title>
    <title>Normalization of detours for implication inferences</title>
    <itunes:summary><![CDATA[We talk about normalizing detours -- which are when an introduction inference is immediately followed by an elimination inference -- for the implication rules.  Under Curry-Howard, this actually corresponds to beta-reduction, and could make the proof bigger (though less complex in a certain sense). ]]></itunes:summary>
    <description><![CDATA[<p>We talk about normalizing detours -- which are when an introduction inference is immediately followed by an elimination inference -- for the implication rules.  Under Curry-Howard, this actually corresponds to beta-reduction, and could make the proof bigger (though less complex in a certain sense).</p>]]></description>
    <content:encoded><![CDATA[<p>We talk about normalizing detours -- which are when an introduction inference is immediately followed by an elimination inference -- for the implication rules.  Under Curry-Howard, this actually corresponds to beta-reduction, and could make the proof bigger (though less complex in a certain sense).</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9222881-normalization-of-detours-for-implication-inferences.mp3" length="9251840" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9222881</guid>
    <pubDate>Sun, 19 Sep 2021 16:00:00 -0500</pubDate>
    <itunes:duration>768</itunes:duration>
    <itunes:keywords>chapter e, proof theory , natural deduction , implication , normalization</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>9</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Normalization in natural deduction</itunes:title>
    <title>Normalization in natural deduction</title>
    <itunes:summary><![CDATA[This episode explains the idea of normalization of proofs in natural deduction.  We want to eliminate so-called detours in proofs, which occur when an introduction is immediately followed by an elimination. ]]></itunes:summary>
    <description><![CDATA[<p>This episode explains the idea of normalization of proofs in natural deduction.  We want to eliminate so-called detours in proofs, which occur when an introduction is immediately followed by an elimination.</p>]]></description>
    <content:encoded><![CDATA[<p>This episode explains the idea of normalization of proofs in natural deduction.  We want to eliminate so-called detours in proofs, which occur when an introduction is immediately followed by an elimination.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9216049-normalization-in-natural-deduction.mp3" length="7773170" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9216049</guid>
    <pubDate>Sat, 18 Sep 2021 00:00:00 -0500</pubDate>
    <itunes:duration>645</itunes:duration>
    <itunes:keywords>chapter e, proof theory , natural deduction , normalization</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>8</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>A Brief Look at Sequent Calculus</itunes:title>
    <title>A Brief Look at Sequent Calculus</title>
    <itunes:summary><![CDATA[Sequent calculus is a different style in which proof systems can be formulated, where for each connective, we have a left rule for introducing it (in the conclusion of the rule) in the left part of a sequent G =&gt; D (i.e., in G), and similarly a right rule for introducing it in the right part (D).  The beauty of sequent calculus is disjunction is handled without any departure from the general form for sequent calculus rules (unlike disjunction in natural deduction, as we discussed last...]]></itunes:summary>
    <description><![CDATA[<p>Sequent calculus is a different style in which proof systems can be formulated, where for each connective, we have a left rule for introducing it (in the conclusion of the rule) in the left part of a sequent G =&gt; D (i.e., in G), and similarly a right rule for introducing it in the right part (D).  The beauty of sequent calculus is disjunction is handled without any departure from the general form for sequent calculus rules (unlike disjunction in natural deduction, as we discussed last time).  </p>]]></description>
    <content:encoded><![CDATA[<p>Sequent calculus is a different style in which proof systems can be formulated, where for each connective, we have a left rule for introducing it (in the conclusion of the rule) in the left part of a sequent G =&gt; D (i.e., in G), and similarly a right rule for introducing it in the right part (D).  The beauty of sequent calculus is disjunction is handled without any departure from the general form for sequent calculus rules (unlike disjunction in natural deduction, as we discussed last time).  </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9204803-a-brief-look-at-sequent-calculus.mp3" length="8650881" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9204803</guid>
    <pubDate>Wed, 15 Sep 2021 23:00:00 -0500</pubDate>
    <itunes:duration>718</itunes:duration>
    <itunes:keywords>chapter e, proof theory , sequent calculus</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>7</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Natural deduction: or, the bad news!</itunes:title>
    <title>Natural deduction: or, the bad news!</title>
    <itunes:summary><![CDATA[We discuss the problem of the or-elimination rule in natural deduction, which does not have the correct form for natural deduction inferences.  It is a research problem to fix this!  Don't forget to get in touch with me if you want to do the mini-course over Zoom next month, on normalization.   ]]></itunes:summary>
    <description><![CDATA[<p>We discuss the problem of the or-elimination rule in natural deduction, which does not have the correct form for natural deduction inferences.  It is a research problem to fix this!<br/><br/>Don&apos;t forget to get in touch with me if you want to do the mini-course over Zoom next month, on normalization.  </p>]]></description>
    <content:encoded><![CDATA[<p>We discuss the problem of the or-elimination rule in natural deduction, which does not have the correct form for natural deduction inferences.  It is a research problem to fix this!<br/><br/>Don&apos;t forget to get in touch with me if you want to do the mini-course over Zoom next month, on normalization.  </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9191482-natural-deduction-or-the-bad-news.mp3" length="8965926" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9191482</guid>
    <pubDate>Tue, 14 Sep 2021 00:00:00 -0500</pubDate>
    <itunes:duration>744</itunes:duration>
    <itunes:keywords>chapter e, proof theory, natural deduction , disjunction</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>6</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Implication rules for natural deduction</itunes:title>
    <title>Implication rules for natural deduction</title>
    <itunes:summary><![CDATA[We discuss further inferences in natural deduction, in particular implication introduction and elimination. ]]></itunes:summary>
    <description><![CDATA[<p>We discuss further inferences in natural deduction, in particular implication introduction and elimination.</p>]]></description>
    <content:encoded><![CDATA[<p>We discuss further inferences in natural deduction, in particular implication introduction and elimination.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9191474-implication-rules-for-natural-deduction.mp3" length="8396044" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9191474</guid>
    <pubDate>Tue, 14 Sep 2021 00:00:00 -0500</pubDate>
    <itunes:duration>697</itunes:duration>
    <itunes:keywords>chapter e, proof theory , natural deduction , implication</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>5</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Natural Deduction</itunes:title>
    <title>Natural Deduction</title>
    <itunes:summary><![CDATA[This episode begins the discussion of the style of proof known as Natural Deduction, invented by Gerhard Gentzen, a student of Hermann Weyl, himself a student of David Hilbert (sorry, I said incorrectly that Gentzen was Hilbert's own student).  Each logical connective (like OR, AND, IMPLIES, etc.) has introduction rules that let you prove formulas built with that connective; and elimination rules that let you deduce consequences from a proven formula built with that connective. ]]></itunes:summary>
    <description><![CDATA[<p>This episode begins the discussion of the style of proof known as Natural Deduction, invented by Gerhard Gentzen, a student of Hermann Weyl, himself a student of David Hilbert (sorry, I said incorrectly that Gentzen was Hilbert&apos;s own student).  Each logical connective (like OR, AND, IMPLIES, etc.) has introduction rules that let you prove formulas built with that connective; and elimination rules that let you deduce consequences from a proven formula built with that connective.</p>]]></description>
    <content:encoded><![CDATA[<p>This episode begins the discussion of the style of proof known as Natural Deduction, invented by Gerhard Gentzen, a student of Hermann Weyl, himself a student of David Hilbert (sorry, I said incorrectly that Gentzen was Hilbert&apos;s own student).  Each logical connective (like OR, AND, IMPLIES, etc.) has introduction rules that let you prove formulas built with that connective; and elimination rules that let you deduce consequences from a proven formula built with that connective.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9178996-natural-deduction.mp3" length="8796614" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9178996</guid>
    <pubDate>Sat, 11 Sep 2021 23:00:00 -0500</pubDate>
    <itunes:duration>730</itunes:duration>
    <itunes:keywords>chapter e, proof theory, natural deduction</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>4</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Rules of proof, standard proof systems</itunes:title>
    <title>Rules of proof, standard proof systems</title>
    <itunes:summary><![CDATA[We continue our gradual entry into proof theory by talking about reflecting meta-logical reasoning into logical rules, and naming the three basic proof systems (Hilbert-style, natural deduction, and sequent calculus).  Advertising for the October 3-session Zoom mini-course on normalization continues.  Email me if you are interested!  This is just for ITTC listeners.  Finally, if you like the podcast and want to support it, would you consider a small ($5 or $10 is great) donation?&nb...]]></itunes:summary>
    <description><![CDATA[<p>We continue our gradual entry into proof theory by talking about reflecting meta-logical reasoning into logical rules, and naming the three basic proof systems (Hilbert-style, natural deduction, and sequent calculus).<br/><br/>Advertising for the October 3-session Zoom mini-course on normalization continues.  Email me if you are interested!  This is just for ITTC listeners.<br/><br/>Finally, if you like the podcast and want to support it, would you consider a small ($5 or $10 is great) donation?  This is not so much to cover the $12/month hosting fee at Buzzsprout but to get some kudos here at my institution, so people here know that I have a podcast [grin] and that listeners like it.  To donate, go <a href='https://donate.givetoiowa.org/s/1773/giving/19/interior.aspx?sid=1773&amp;gid=2&amp;pgid=509&amp;cid=1288&amp;dids=72.&amp;appealcode=GFWEB'>here</a>, then choose &quot;Colleges&quot;, then &quot;College of Liberal Arts and Sciences&quot;, and then tick &quot;Computer Science Development Fund&quot;.  For &quot;gift details&quot;, please leave &quot;gift instructions&quot; that say the gift is for Aaron Stump for the Iowa Type Theory Commute podcast.  Then the money will get to the right place for me to use it for this.  Thanks a lot in advance!</p>]]></description>
    <content:encoded><![CDATA[<p>We continue our gradual entry into proof theory by talking about reflecting meta-logical reasoning into logical rules, and naming the three basic proof systems (Hilbert-style, natural deduction, and sequent calculus).<br/><br/>Advertising for the October 3-session Zoom mini-course on normalization continues.  Email me if you are interested!  This is just for ITTC listeners.<br/><br/>Finally, if you like the podcast and want to support it, would you consider a small ($5 or $10 is great) donation?  This is not so much to cover the $12/month hosting fee at Buzzsprout but to get some kudos here at my institution, so people here know that I have a podcast [grin] and that listeners like it.  To donate, go <a href='https://donate.givetoiowa.org/s/1773/giving/19/interior.aspx?sid=1773&amp;gid=2&amp;pgid=509&amp;cid=1288&amp;dids=72.&amp;appealcode=GFWEB'>here</a>, then choose &quot;Colleges&quot;, then &quot;College of Liberal Arts and Sciences&quot;, and then tick &quot;Computer Science Development Fund&quot;.  For &quot;gift details&quot;, please leave &quot;gift instructions&quot; that say the gift is for Aaron Stump for the Iowa Type Theory Commute podcast.  Then the money will get to the right place for me to use it for this.  Thanks a lot in advance!</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9164254-rules-of-proof-standard-proof-systems.mp3" length="9220467" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9164254</guid>
    <pubDate>Wed, 08 Sep 2021 23:00:00 -0500</pubDate>
    <itunes:duration>765</itunes:duration>
    <itunes:keywords>chapter e, proof theory</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>3</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Different proof systems, distinguishing logical rules from domain axioms</itunes:title>
    <title>Different proof systems, distinguishing logical rules from domain axioms</title>
    <itunes:summary><![CDATA[I highlight two basic points in this continuing warm-up to proof theory: there are different proof systems for the same logics, and it is customary to separate purely logical rules (dealing with propositional connectives and quantifiers, for example) from rules or axioms for some particular domain (like axioms about arithmetic, or whatever domain is of interest). ]]></itunes:summary>
    <description><![CDATA[<p>I highlight two basic points in this continuing warm-up to proof theory: there are different proof systems for the same logics, and it is customary to separate purely logical rules (dealing with propositional connectives and quantifiers, for example) from rules or axioms for some particular domain (like axioms about arithmetic, or whatever domain is of interest).</p>]]></description>
    <content:encoded><![CDATA[<p>I highlight two basic points in this continuing warm-up to proof theory: there are different proof systems for the same logics, and it is customary to separate purely logical rules (dealing with propositional connectives and quantifiers, for example) from rules or axioms for some particular domain (like axioms about arithmetic, or whatever domain is of interest).</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9126752-different-proof-systems-distinguishing-logical-rules-from-domain-axioms.mp3" length="8706131" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9126752</guid>
    <pubDate>Wed, 01 Sep 2021 22:00:00 -0500</pubDate>
    <itunes:duration>722</itunes:duration>
    <itunes:keywords>chapter e, proof theory</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>2</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to Proof Theory (Start of Season 3)</itunes:title>
    <title>Introduction to Proof Theory (Start of Season 3)</title>
    <itunes:summary><![CDATA[This is the start of Season 3 of the podcast.  We are beginning with a new chapter (Chapter 14) on Proof Theory.   This episode gives some basic introduction to the history and broad concerns of proof theory.  There is even music, composed and played by yours truly, chez nous... ]]></itunes:summary>
    <description><![CDATA[<p>This is the start of Season 3 of the podcast.  We are beginning with a new chapter (Chapter 14) on Proof Theory.   This episode gives some basic introduction to the history and broad concerns of proof theory.  There is even music, composed and played by yours truly, chez nous...</p>]]></description>
    <content:encoded><![CDATA[<p>This is the start of Season 3 of the podcast.  We are beginning with a new chapter (Chapter 14) on Proof Theory.   This episode gives some basic introduction to the history and broad concerns of proof theory.  There is even music, composed and played by yours truly, chez nous...</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/9114242-introduction-to-proof-theory-start-of-season-3.mp3" length="13198033" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-9114242</guid>
    <pubDate>Tue, 31 Aug 2021 00:00:00 -0500</pubDate>
    <itunes:duration>1097</itunes:duration>
    <itunes:keywords>chapter e, proof theory</itunes:keywords>
    <itunes:season>3</itunes:season>
    <itunes:episode>1</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Modula-2</itunes:title>
    <title>Modula-2</title>
    <itunes:summary><![CDATA[In this episode I discuss the paper "Modula-2 and Oberon" by Niklaus Wirth.  Modula-2 introduced (it seems from the paper) the idea of having modules with explicit import and import lists -- something we saw at the start of our look at module systems with Haskell's module system.  I note some interesting historical points raised by the paper. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode I discuss the paper <a href='https://dl.acm.org/doi/abs/10.1145/1238844.1238847'>&quot;Modula-2 and Oberon&quot;</a> by Niklaus Wirth.  Modula-2 introduced (it seems from the paper) the idea of having modules with explicit import and import lists -- something we saw at the start of our look at module systems with Haskell&apos;s module system.  I note some interesting historical points raised by the paper.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode I discuss the paper <a href='https://dl.acm.org/doi/abs/10.1145/1238844.1238847'>&quot;Modula-2 and Oberon&quot;</a> by Niklaus Wirth.  Modula-2 introduced (it seems from the paper) the idea of having modules with explicit import and import lists -- something we saw at the start of our look at module systems with Haskell&apos;s module system.  I note some interesting historical points raised by the paper.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/8935762-modula-2.mp3" length="8306957" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-8935762</guid>
    <pubDate>Tue, 27 Jul 2021 23:00:00 -0500</pubDate>
    <itunes:duration>689</itunes:duration>
    <itunes:keywords>chapter d, module systems, garbage collection, type safety, Modula-2</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>35</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Decomposing recursions using algebras</itunes:title>
    <title>Decomposing recursions using algebras</title>
    <itunes:summary><![CDATA[Analogously to the decomposition of a datatype into a functor (which can be built from other functors to assemble a bigger language from smaller pieces of languages) and a single expression datatype with a sole constructor that builds an Expr from an F Expr (where F is the functor) -- analogously, a recursion can be decomposed into algebras and a fold function that applies the algebra throughout the datatype.   ]]></itunes:summary>
    <description><![CDATA[<p>Analogously to the decomposition of a datatype into a functor (which can be built from other functors to assemble a bigger language from smaller pieces of languages) and a single expression datatype with a sole constructor that builds an Expr from an F Expr (where F is the functor) -- analogously, a recursion can be decomposed into algebras and a fold function that applies the algebra throughout the datatype.  </p>]]></description>
    <content:encoded><![CDATA[<p>Analogously to the decomposition of a datatype into a functor (which can be built from other functors to assemble a bigger language from smaller pieces of languages) and a single expression datatype with a sole constructor that builds an Expr from an F Expr (where F is the functor) -- analogously, a recursion can be decomposed into algebras and a fold function that applies the algebra throughout the datatype.  </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/8854671-decomposing-recursions-using-algebras.mp3" length="8611080" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-8854671</guid>
    <pubDate>Mon, 12 Jul 2021 22:00:00 -0500</pubDate>
    <itunes:duration>714</itunes:duration>
    <itunes:keywords>chapter d, modular datatypes , functors , algebras</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>34</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Reassembling datatypes from functors using a fixed-point </itunes:title>
    <title>Reassembling datatypes from functors using a fixed-point </title>
    <itunes:summary><![CDATA[Last episode we discussed how functors can describe a single level of a datatype.  In this episode, we discuss how to put these functors back together into a datatype, using disjoint unions of functors and a fixed-point datatype.  The latter expresses the idea that inductive data is built in any finite number of layers, where each layer is described by the functor for the datatype. ]]></itunes:summary>
    <description><![CDATA[<p>Last episode we discussed how functors can describe a single level of a datatype.  In this episode, we discuss how to put these functors back together into a datatype, using disjoint unions of functors and a fixed-point datatype.  The latter expresses the idea that inductive data is built in any finite number of layers, where each layer is described by the functor for the datatype.</p>]]></description>
    <content:encoded><![CDATA[<p>Last episode we discussed how functors can describe a single level of a datatype.  In this episode, we discuss how to put these functors back together into a datatype, using disjoint unions of functors and a fixed-point datatype.  The latter expresses the idea that inductive data is built in any finite number of layers, where each layer is described by the functor for the datatype.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/8843076-reassembling-datatypes-from-functors-using-a-fixed-point.mp3" length="7429654" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-8843076</guid>
    <pubDate>Sat, 10 Jul 2021 22:00:00 -0500</pubDate>
    <itunes:duration>616</itunes:duration>
    <itunes:keywords>chapter d, module systems, modular datatypes, functors</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>33</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Decomposing datatypes into functors</itunes:title>
    <title>Decomposing datatypes into functors</title>
    <itunes:summary><![CDATA[This episode continues the discussion of Swierstra's paper "Datatypes à la Carte", explaining how we can decompose a datatype into the application of a fixed-point type constructor and then a functor.  The functor itself can be assembled from other functors for pieces of the datatype.  This makes modular datatypes possible. ]]></itunes:summary>
    <description><![CDATA[<p>This episode continues the discussion of Swierstra&apos;s paper &quot;Datatypes à la Carte&quot;, explaining how we can decompose a datatype into the application of a fixed-point type constructor and then a functor.  The functor itself can be assembled from other functors for pieces of the datatype.  This makes modular datatypes possible.</p>]]></description>
    <content:encoded><![CDATA[<p>This episode continues the discussion of Swierstra&apos;s paper &quot;Datatypes à la Carte&quot;, explaining how we can decompose a datatype into the application of a fixed-point type constructor and then a functor.  The functor itself can be assembled from other functors for pieces of the datatype.  This makes modular datatypes possible.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/8806243-decomposing-datatypes-into-functors.mp3" length="9849280" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-8806243</guid>
    <pubDate>Sat, 03 Jul 2021 12:00:00 -0500</pubDate>
    <itunes:duration>818</itunes:duration>
    <itunes:keywords>chapter d, module systems, modular datatypes</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>32</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Modular datatypes: introducing Swierstra&#39;s paper &quot;Datatypes à la Carte&quot;</itunes:title>
    <title>Modular datatypes: introducing Swierstra&#39;s paper &quot;Datatypes à la Carte&quot;</title>
    <itunes:summary><![CDATA[In a really wonderful paper of some few years back, Swierstra introduced the idea of modular datatypes using ideas from universal algebra.  Modular datatypes allow one to assemble a bigger datatype from component datatypes, and combine functions written on the component datatypes in a modular way.   In this episode I introduce the paper and the problem (dubbed the expression problem by Phil Wadler) it is trying to solve.  Modular datatypes are a different form of modularity tha...]]></itunes:summary>
    <description><![CDATA[<p>In a really wonderful <a href='http://www.cs.ru.nl/~W.Swierstra/Publications/DataTypesALaCarte.pdf'>paper</a> of some few years back, Swierstra introduced the idea of modular datatypes using ideas from universal algebra.  Modular datatypes allow one to assemble a bigger datatype from component datatypes, and combine functions written on the component datatypes in a modular way.   In this episode I introduce the paper and the problem (dubbed <em>the expression problem </em>by Phil Wadler) it is trying to solve.  Modular datatypes are a different form of modularity that I would like to consider in the context of the discussion of module systems we have been engaged in now for a while in Chapter 13 of the podcast.</p>]]></description>
    <content:encoded><![CDATA[<p>In a really wonderful <a href='http://www.cs.ru.nl/~W.Swierstra/Publications/DataTypesALaCarte.pdf'>paper</a> of some few years back, Swierstra introduced the idea of modular datatypes using ideas from universal algebra.  Modular datatypes allow one to assemble a bigger datatype from component datatypes, and combine functions written on the component datatypes in a modular way.   In this episode I introduce the paper and the problem (dubbed <em>the expression problem </em>by Phil Wadler) it is trying to solve.  Modular datatypes are a different form of modularity that I would like to consider in the context of the discussion of module systems we have been engaged in now for a while in Chapter 13 of the podcast.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/8759465-modular-datatypes-introducing-swierstra-s-paper-datatypes-a-la-carte.mp3" length="6394920" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-8759465</guid>
    <pubDate>Thu, 24 Jun 2021 17:00:00 -0500</pubDate>
    <itunes:duration>530</itunes:duration>
    <itunes:keywords>chapter d, modular datatypes</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>31</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Modules for Mathematical Theories (MMT)</itunes:title>
    <title>Modules for Mathematical Theories (MMT)</title>
    <itunes:summary><![CDATA[In a 2013 journal article titled "A Scalable Module System", Florian Rabe and Michael Kohlhase propose a module system called MMT (Modules for Mathematical Theories) for structuring mathematical knowledge.  The paper has a very interesting general discussion of module systems, from programming languages but also other areas like algebraic specification and theorem proving.  The system is based on a rather small set of concepts which subsume those of, for example, Standard ML's modul...]]></itunes:summary>
    <description><![CDATA[<p>In a 2013 journal article titled <a href='https://kwarc.info/people/frabe/Research/RK_mmt_10.pdf'>&quot;A Scalable Module System&quot;</a>, Florian Rabe and Michael Kohlhase propose a module system called MMT (Modules for Mathematical Theories) for structuring mathematical knowledge.  The paper has a very interesting general discussion of module systems, from programming languages but also other areas like algebraic specification and theorem proving.  The system is based on a rather small set of concepts which subsume those of, for example, Standard ML&apos;s module system.  Thought-provoking!</p>]]></description>
    <content:encoded><![CDATA[<p>In a 2013 journal article titled <a href='https://kwarc.info/people/frabe/Research/RK_mmt_10.pdf'>&quot;A Scalable Module System&quot;</a>, Florian Rabe and Michael Kohlhase propose a module system called MMT (Modules for Mathematical Theories) for structuring mathematical knowledge.  The paper has a very interesting general discussion of module systems, from programming languages but also other areas like algebraic specification and theorem proving.  The system is based on a rather small set of concepts which subsume those of, for example, Standard ML&apos;s module system.  Thought-provoking!</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/8670925-modules-for-mathematical-theories-mmt.mp3" length="8569706" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-8670925</guid>
    <pubDate>Tue, 08 Jun 2021 22:00:00 -0500</pubDate>
    <itunes:duration>711</itunes:duration>
    <itunes:keywords>chapter d, module systems, Standard ML, MMT</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>30</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Some thoughts on module systems so far</itunes:title>
    <title>Some thoughts on module systems so far</title>
    <itunes:summary><![CDATA[I look back at the module systems we considered so far (Haskell's, Standard ML's, and Agda's), and consider a few points that are on my mind about these.  I also mention a few other languages' module systems (Clojure, Java 9).  I also ponder names and namespace management. ]]></itunes:summary>
    <description><![CDATA[<p>I look back at the module systems we considered so far (Haskell&apos;s, Standard ML&apos;s, and Agda&apos;s), and consider a few points that are on my mind about these.  I also mention a few other languages&apos; module systems (Clojure, Java 9).  I also ponder names and namespace management.</p>]]></description>
    <content:encoded><![CDATA[<p>I look back at the module systems we considered so far (Haskell&apos;s, Standard ML&apos;s, and Agda&apos;s), and consider a few points that are on my mind about these.  I also mention a few other languages&apos; module systems (Clojure, Java 9).  I also ponder names and namespace management.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/8546930-some-thoughts-on-module-systems-so-far.mp3" length="8439928" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-8546930</guid>
    <pubDate>Tue, 18 May 2021 23:00:00 -0500</pubDate>
    <itunes:duration>700</itunes:duration>
    <itunes:keywords>chapter d, module systems</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>29</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>A look at Agda&#39;s module system</itunes:title>
    <title>A look at Agda&#39;s module system</title>
    <itunes:summary><![CDATA[Agda's module system (beautifully described here) could be seen as intermediate between Haskell's and Standard ML's.  It supports nested parametrized modules with information hiding, but does not go all the way to higher-order functors (as in Standard ML). ]]></itunes:summary>
    <description><![CDATA[<p>Agda&apos;s module system (beautifully described <a href='https://agda.readthedocs.io/en/v2.6.0.1/language/module-system.html'>here</a>) could be seen as intermediate between Haskell&apos;s and Standard ML&apos;s.  It supports nested parametrized modules with information hiding, but does not go all the way to higher-order functors (as in Standard ML).</p>]]></description>
    <content:encoded><![CDATA[<p>Agda&apos;s module system (beautifully described <a href='https://agda.readthedocs.io/en/v2.6.0.1/language/module-system.html'>here</a>) could be seen as intermediate between Haskell&apos;s and Standard ML&apos;s.  It supports nested parametrized modules with information hiding, but does not go all the way to higher-order functors (as in Standard ML).</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/8496887-a-look-at-agda-s-module-system.mp3" length="10168069" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-8496887</guid>
    <pubDate>Wed, 12 May 2021 05:00:00 -0500</pubDate>
    <itunes:duration>844</itunes:duration>
    <itunes:keywords>chapter d, module systems, Agda</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>28</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Standard ML: the Newmar King-Aire of module systems</itunes:title>
    <title>Standard ML: the Newmar King-Aire of module systems</title>
    <itunes:summary><![CDATA[SML has arguably the most complicated/powerful module system of any existing programming language.  It is a luxury RV to Haskell's camper van.  I take a high-level look, following a very nice paper by Xavier Leroy, titled "A modular module system". ]]></itunes:summary>
    <description><![CDATA[<p>SML has arguably the most complicated/powerful module system of any existing programming language.  It is a <a href='https://www.newmarcorp.com/luxury-motor-coaches/king-aire/'>luxury RV</a> to Haskell&apos;s camper van.  I take a high-level look, following a very nice paper by Xavier Leroy, titled <a href='https://caml.inria.fr/pub/papers/xleroy-modular_modules-jfp.pdf'>&quot;A modular module system&quot;</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>SML has arguably the most complicated/powerful module system of any existing programming language.  It is a <a href='https://www.newmarcorp.com/luxury-motor-coaches/king-aire/'>luxury RV</a> to Haskell&apos;s camper van.  I take a high-level look, following a very nice paper by Xavier Leroy, titled <a href='https://caml.inria.fr/pub/papers/xleroy-modular_modules-jfp.pdf'>&quot;A modular module system&quot;</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/8489877-standard-ml-the-newmar-king-aire-of-module-systems.mp3" length="10008555" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-8489877</guid>
    <pubDate>Mon, 10 May 2021 00:00:00 -0500</pubDate>
    <itunes:duration>831</itunes:duration>
    <itunes:keywords>chapter d, module systems, Standard ML</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>27</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>A look at Haskell&#39;s module system</itunes:title>
    <title>A look at Haskell&#39;s module system</title>
    <itunes:summary><![CDATA[I briefly survey the main features of Haskell's module system, and reflect a bit on its design. ]]></itunes:summary>
    <description><![CDATA[<p>I briefly survey the main features of Haskell&apos;s module system, and reflect a bit on its design.</p>]]></description>
    <content:encoded><![CDATA[<p>I briefly survey the main features of Haskell&apos;s module system, and reflect a bit on its design.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/8410915-a-look-at-haskell-s-module-system.mp3" length="16080421" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-8410915</guid>
    <pubDate>Mon, 26 Apr 2021 20:00:00 -0500</pubDate>
    <itunes:duration>1337</itunes:duration>
    <itunes:keywords>chapter d, module systems, Haskell</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>26</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Let&#39;s talk about modules!</itunes:title>
    <title>Let&#39;s talk about modules!</title>
    <itunes:summary><![CDATA[I start Chapter 13 (in Season 2) of the podcast, on module systems.  Almost all programming languages I know include some kind of scheme for modules, packages, namespaces, or something like this.  I discuss the high-level ideas of namespace management and type abstraction, two main use cases for module systems.  Subsequent episodes will discuss module systems (from papers or documentation) of various languages. ]]></itunes:summary>
    <description><![CDATA[<p>I start Chapter 13 (in Season 2) of the podcast, on module systems.  Almost all programming languages I know include some kind of scheme for modules, packages, namespaces, or something like this.  I discuss the high-level ideas of namespace management and type abstraction, two main use cases for module systems.  Subsequent episodes will discuss module systems (from papers or documentation) of various languages.</p>]]></description>
    <content:encoded><![CDATA[<p>I start Chapter 13 (in Season 2) of the podcast, on module systems.  Almost all programming languages I know include some kind of scheme for modules, packages, namespaces, or something like this.  I discuss the high-level ideas of namespace management and type abstraction, two main use cases for module systems.  Subsequent episodes will discuss module systems (from papers or documentation) of various languages.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/8367847-let-s-talk-about-modules.mp3" length="14895490" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-8367847</guid>
    <pubDate>Tue, 20 Apr 2021 00:00:00 -0500</pubDate>
    <itunes:duration>1238</itunes:duration>
    <itunes:keywords>chapter d, module systems</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>25</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Church-style Typing and Intersection Types: Glimpses of Benjamin Pierce&#39;s Dissertation</itunes:title>
    <title>Church-style Typing and Intersection Types: Glimpses of Benjamin Pierce&#39;s Dissertation</title>
    <itunes:summary><![CDATA[I was reading Benjamin Pierce's dissertation, and learning some intriguing things about intersection types in the context of Church-style typing.  I summarize the parts of this I comprehended so far. ]]></itunes:summary>
    <description><![CDATA[<p>I was reading Benjamin Pierce&apos;s dissertation, and learning some intriguing things about intersection types in the context of Church-style typing.  I summarize the parts of this I comprehended so far.</p>]]></description>
    <content:encoded><![CDATA[<p>I was reading Benjamin Pierce&apos;s dissertation, and learning some intriguing things about intersection types in the context of Church-style typing.  I summarize the parts of this I comprehended so far.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/8316721-church-style-typing-and-intersection-types-glimpses-of-benjamin-pierce-s-dissertation.mp3" length="9457546" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-8316721</guid>
    <pubDate>Mon, 12 Apr 2021 00:00:00 -0500</pubDate>
    <itunes:duration>785</itunes:duration>
    <itunes:keywords>chapter c, intersection types , Church-style typing</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>24</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Intersections and Unions in Practice; Failure of Type Preservation with Unions</itunes:title>
    <title>Intersections and Unions in Practice; Failure of Type Preservation with Unions</title>
    <itunes:summary><![CDATA[I discuss the perhaps surprising fact that union and intersection types are quite actively used and promoted for languages like TypeScript, also OO languages like Scala.  I also try to explain briefly a counterexample to type preservation with union types, which you can find at the start of Section 2 of Barbanera and Dezani-Ciancaglini's paper "Intersection and Union Types: Syntax and Semantics", where it is attributed to Benjamin Pierce. ]]></itunes:summary>
    <description><![CDATA[<p>I discuss the perhaps surprising fact that union and intersection types are quite actively used and promoted for languages like TypeScript, also OO languages like Scala.  I also try to explain briefly a counterexample to type preservation with union types, which you can find at the start of Section 2 of Barbanera and Dezani-Ciancaglini&apos;s paper &quot;Intersection and Union Types: Syntax and Semantics&quot;, where it is attributed to Benjamin Pierce.</p>]]></description>
    <content:encoded><![CDATA[<p>I discuss the perhaps surprising fact that union and intersection types are quite actively used and promoted for languages like TypeScript, also OO languages like Scala.  I also try to explain briefly a counterexample to type preservation with union types, which you can find at the start of Section 2 of Barbanera and Dezani-Ciancaglini&apos;s paper &quot;Intersection and Union Types: Syntax and Semantics&quot;, where it is attributed to Benjamin Pierce.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/8185668-intersections-and-unions-in-practice-failure-of-type-preservation-with-unions.mp3" length="9849366" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-8185668</guid>
    <pubDate>Mon, 22 Mar 2021 00:00:00 -0500</pubDate>
    <itunes:duration>818</itunes:duration>
    <itunes:keywords>chapter c, intersection types , union types, TypeScript , type preservation</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>23</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Normal terms are typable with intersection types</itunes:title>
    <title>Normal terms are typable with intersection types</title>
    <itunes:summary><![CDATA[I sketch the argument that pure lambda terms in normal form are typable using intersection types.  This completes the argument started in the previous episode, that intersection types are complete for normalizing terms: normal forms are typable, and typing is preserved by beta-expansion.  Hence any normalizing term is typable (since it reduces to a normal form by definition, and from this normal form we can walk typing back to the term). ]]></itunes:summary>
    <description><![CDATA[<p>I sketch the argument that pure lambda terms in normal form are typable using intersection types.  This completes the argument started in the previous episode, that intersection types are complete for normalizing terms: normal forms are typable, and typing is preserved by beta-expansion.  Hence any normalizing term is typable (since it reduces to a normal form by definition, and from this normal form we can walk typing back to the term).</p>]]></description>
    <content:encoded><![CDATA[<p>I sketch the argument that pure lambda terms in normal form are typable using intersection types.  This completes the argument started in the previous episode, that intersection types are complete for normalizing terms: normal forms are typable, and typing is preserved by beta-expansion.  Hence any normalizing term is typable (since it reduces to a normal form by definition, and from this normal form we can walk typing back to the term).</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/8080925-normal-terms-are-typable-with-intersection-types.mp3" length="7260990" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-8080925</guid>
    <pubDate>Fri, 05 Mar 2021 00:00:00 -0600</pubDate>
    <itunes:duration>602</itunes:duration>
    <itunes:keywords>chapter c, intersection types, beta expansion , normal forms</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>22</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Intersection Types Preserved Under Beta-Expansion</itunes:title>
    <title>Intersection Types Preserved Under Beta-Expansion</title>
    <itunes:summary><![CDATA[Type systems usually have the type preservation property: if a typable term beta-reduces, then the resulting term is still typable.  So typing is closed under beta-reduction.  With intersection typing, typing is also closed under beta-expansion, which is a critical step in showing that intersection typing is complete for normalizing terms: any normalizing term can be typed with intersection types (and simple function types).   ]]></itunes:summary>
    <description><![CDATA[<p>Type systems usually have the type preservation property: if a typable term beta-reduces, then the resulting term is still typable.  So typing is closed under beta-reduction.  With intersection typing, typing is also closed under beta-expansion, which is a critical step in showing that intersection typing is complete for normalizing terms: any normalizing term can be typed with intersection types (and simple function types).  </p>]]></description>
    <content:encoded><![CDATA[<p>Type systems usually have the type preservation property: if a typable term beta-reduces, then the resulting term is still typable.  So typing is closed under beta-reduction.  With intersection typing, typing is also closed under beta-expansion, which is a critical step in showing that intersection typing is complete for normalizing terms: any normalizing term can be typed with intersection types (and simple function types).  </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/7871629-intersection-types-preserved-under-beta-expansion.mp3" length="8844012" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-7871629</guid>
    <pubDate>Mon, 15 Feb 2021 00:00:00 -0600</pubDate>
    <itunes:duration>734</itunes:duration>
    <itunes:keywords>chapter c, intersection types, beta expansion</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>21</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to Intersection Types</itunes:title>
    <title>Introduction to Intersection Types</title>
    <itunes:summary><![CDATA[In a type system with intersection types, a term t that has type A and also has type B can be assigned the type 'A intersect B'.   This episode begins Chapter 12 of the podcast on intersection types. ]]></itunes:summary>
    <description><![CDATA[<p>In a type system with intersection types, a term t that has type A and also has type B can be assigned the type &apos;A intersect B&apos;.   This episode begins Chapter 12 of the podcast on intersection types.</p>]]></description>
    <content:encoded><![CDATA[<p>In a type system with intersection types, a term t that has type A and also has type B can be assigned the type &apos;A intersect B&apos;.   This episode begins Chapter 12 of the podcast on intersection types.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/7758097-introduction-to-intersection-types.mp3" length="8474366" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-7758097</guid>
    <pubDate>Mon, 08 Feb 2021 23:00:00 -0600</pubDate>
    <itunes:duration>703</itunes:duration>
    <itunes:keywords>chapter c, intersection types</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>20</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Deriving disjointness of constructor ranges in RelTT</itunes:title>
    <title>Deriving disjointness of constructor ranges in RelTT</title>
    <itunes:summary><![CDATA[Responding to an email question from a listener, I explain how to derive a form of inconsistency from the assumption that True is related to False at type Bool. ]]></itunes:summary>
    <description><![CDATA[<p>Responding to an email question from a listener, I explain how to derive a form of inconsistency from the assumption that True is related to False at type Bool.</p>]]></description>
    <content:encoded><![CDATA[<p>Responding to an email question from a listener, I explain how to derive a form of inconsistency from the assumption that True is related to False at type Bool.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/7625557-deriving-disjointness-of-constructor-ranges-in-reltt.mp3" length="8493801" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-7625557</guid>
    <pubDate>Tue, 02 Feb 2021 00:00:00 -0600</pubDate>
    <itunes:duration>705</itunes:duration>
    <itunes:keywords>chapter b, relational type theory, relational semantics , disjoint constructor ranges , contradiction</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>19</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Software Design and Intrinsic Identity</itunes:title>
    <title>Software Design and Intrinsic Identity</title>
    <itunes:summary><![CDATA[I muse about the hopeless prospect of a single intrinsic conceptual decomposition of a problem domain in software engineering, and relate this to the idea of intrinsic identity we discussed recently for Relational Type Theory. ]]></itunes:summary>
    <description><![CDATA[<p>I muse about the hopeless prospect of a single intrinsic conceptual decomposition of a problem domain in software engineering, and relate this to the idea of intrinsic identity we discussed recently for Relational Type Theory.</p>]]></description>
    <content:encoded><![CDATA[<p>I muse about the hopeless prospect of a single intrinsic conceptual decomposition of a problem domain in software engineering, and relate this to the idea of intrinsic identity we discussed recently for Relational Type Theory.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/7405441-software-design-and-intrinsic-identity.mp3" length="6781631" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-7405441</guid>
    <pubDate>Wed, 20 Jan 2021 22:00:00 -0600</pubDate>
    <itunes:duration>562</itunes:duration>
    <itunes:keywords>chapter b, relational type theory, intrinsic identity, software design</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>18</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Identity Inclusion in Relational Type Theory</itunes:title>
    <title>Identity Inclusion in Relational Type Theory</title>
    <itunes:summary><![CDATA[Where relational semantics for parametric polymorphism often includes a lemma called Identity Extension (discussed in Episode 10, on the paper "Types, Abstraction, and Parametric Polymorphism"), RelTT instead has a refinement of this called Identity Inclusion.  Instead of saying that the interpretation of every closed type is the identity relation (Identity Extension), the Identity Inclusion lemma identifies certain types whose relational meaning is included in the identity relation, and...]]></itunes:summary>
    <description><![CDATA[<p>Where relational semantics for parametric polymorphism often includes a lemma called Identity Extension (discussed in Episode 10, on the paper &quot;Types, Abstraction, and Parametric Polymorphism&quot;), RelTT instead has a refinement of this called Identity Inclusion.  Instead of saying that the interpretation of every closed type is the identity relation (Identity Extension), the Identity Inclusion lemma identifies certain types whose relational meaning is included in the identity relation, and certain types which include the identity relation.  So there are two subset relations, going in opposite directions.  The two classes of types are first, the ones where all quantifiers occur only positively, and second, where they occur only negatively.  Using Identity Inclusion, we can derive transitivity for forall-positive types, which is needed to derive induction following the natural generalization of the scheme in Wadler&apos;s paper (last episode).</p>]]></description>
    <content:encoded><![CDATA[<p>Where relational semantics for parametric polymorphism often includes a lemma called Identity Extension (discussed in Episode 10, on the paper &quot;Types, Abstraction, and Parametric Polymorphism&quot;), RelTT instead has a refinement of this called Identity Inclusion.  Instead of saying that the interpretation of every closed type is the identity relation (Identity Extension), the Identity Inclusion lemma identifies certain types whose relational meaning is included in the identity relation, and certain types which include the identity relation.  So there are two subset relations, going in opposite directions.  The two classes of types are first, the ones where all quantifiers occur only positively, and second, where they occur only negatively.  Using Identity Inclusion, we can derive transitivity for forall-positive types, which is needed to derive induction following the natural generalization of the scheme in Wadler&apos;s paper (last episode).</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/7346347-identity-inclusion-in-relational-type-theory.mp3" length="9964286" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-7346347</guid>
    <pubDate>Mon, 18 Jan 2021 12:00:00 -0600</pubDate>
    <itunes:duration>827</itunes:duration>
    <itunes:keywords>chapter b, relational type theory, relational semantics , identity extension , identity inclusion</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>17</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>On the paper &quot;The Girard-Reynolds Isomorphism&quot; by Philip Wadler</itunes:title>
    <title>On the paper &quot;The Girard-Reynolds Isomorphism&quot; by Philip Wadler</title>
    <itunes:summary><![CDATA[I give a brief glimpse at Phil Wadler's important paper "The Girard-Reynolds Isomorphism", which is quite relevant for Relational Type Theory as it shows that relational semantics for the usual type for Church-encoded natural numbers implies induction.  RelTT uses a generalization of these ideas to derive induction for any positive type family. ]]></itunes:summary>
    <description><![CDATA[<p>I give a brief glimpse at Phil Wadler&apos;s important paper &quot;The Girard-Reynolds Isomorphism&quot;, which is quite relevant for Relational Type Theory as it shows that relational semantics for the usual type for Church-encoded natural numbers implies induction.  RelTT uses a generalization of these ideas to derive induction for any positive type family.</p>]]></description>
    <content:encoded><![CDATA[<p>I give a brief glimpse at Phil Wadler&apos;s important paper &quot;The Girard-Reynolds Isomorphism&quot;, which is quite relevant for Relational Type Theory as it shows that relational semantics for the usual type for Church-encoded natural numbers implies induction.  RelTT uses a generalization of these ideas to derive induction for any positive type family.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/7346293-on-the-paper-the-girard-reynolds-isomorphism-by-philip-wadler.mp3" length="7860279" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-7346293</guid>
    <pubDate>Mon, 18 Jan 2021 00:00:00 -0600</pubDate>
    <itunes:duration>652</itunes:duration>
    <itunes:keywords>chapter b, relational type theory, relational semantics , papers </itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>16</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Equivalence of inductive and parametric naturals in RelTT</itunes:title>
    <title>Equivalence of inductive and parametric naturals in RelTT</title>
    <itunes:summary><![CDATA[I talk through a proof I just completed that the type of relationally inductive naturals and the type of parametric naturals are equivalent.  This is similar to proofs one can find in a paper of Philip Wadler's titled "The Girard-Reynolds Isomorphism", which I plan to discuss in the next episode. ]]></itunes:summary>
    <description><![CDATA[<p>I talk through a proof I just completed that the type of relationally inductive naturals and the type of parametric naturals are equivalent.  This is similar to proofs one can find in a paper of Philip Wadler&apos;s titled &quot;The Girard-Reynolds Isomorphism&quot;, which I plan to discuss in the next episode.</p>]]></description>
    <content:encoded><![CDATA[<p>I talk through a proof I just completed that the type of relationally inductive naturals and the type of parametric naturals are equivalent.  This is similar to proofs one can find in a paper of Philip Wadler&apos;s titled &quot;The Girard-Reynolds Isomorphism&quot;, which I plan to discuss in the next episode.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/7028224-equivalence-of-inductive-and-parametric-naturals-in-reltt.mp3" length="10390537" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-7028224</guid>
    <pubDate>Mon, 28 Dec 2020 00:00:00 -0600</pubDate>
    <itunes:duration>863</itunes:duration>
    <itunes:keywords>chapter b, relational type theory, relational semantics , papers </itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>15</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Examples in Relational Type Theory</itunes:title>
    <title>Examples in Relational Type Theory</title>
    <itunes:summary><![CDATA[I discuss how to define internalized relational typings, implicit products, and two forms of natural number types, in RelTT. ]]></itunes:summary>
    <description><![CDATA[<p>I discuss how to define internalized relational typings, implicit products, and two forms of natural number types, in RelTT.</p>]]></description>
    <content:encoded><![CDATA[<p>I discuss how to define internalized relational typings, implicit products, and two forms of natural number types, in RelTT.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/6979636-examples-in-relational-type-theory.mp3" length="16339595" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-6979636</guid>
    <pubDate>Wed, 23 Dec 2020 16:00:00 -0600</pubDate>
    <itunes:duration>1359</itunes:duration>
    <itunes:keywords>chapter b, relational type theory, relational semantics, natural number types</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>14</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>The Semantics of Relational Types</itunes:title>
    <title>The Semantics of Relational Types</title>
    <itunes:summary><![CDATA[In this episode, I discuss the semantics of the proposed six type constructors of RelTT. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I discuss the semantics of the proposed six type constructors of RelTT.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I discuss the semantics of the proposed six type constructors of RelTT.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/6979597-the-semantics-of-relational-types.mp3" length="15369719" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-6979597</guid>
    <pubDate>Tue, 22 Dec 2020 23:00:00 -0600</pubDate>
    <itunes:duration>1278</itunes:duration>
    <itunes:keywords>chapter b, relational type theory, relational semantics</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>13</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>The Types of Relational Type Theory</itunes:title>
    <title>The Types of Relational Type Theory</title>
    <itunes:summary><![CDATA[This episode continues the introduction of RelTT by presenting the types of the language.  Because the system is based on binary relational semantics, we can include binary relational operators like composition and converse as type constructs!  Strange.  The language also promotes terms to relations, by viewing them as functions and then taking their graphs as the relational meaning. ]]></itunes:summary>
    <description><![CDATA[<p>This episode continues the introduction of RelTT by presenting the types of the language.  Because the system is based on binary relational semantics, we can include binary relational operators like composition and converse as type constructs!  Strange.  The language also promotes terms to relations, by viewing them as functions and then taking their graphs as the relational meaning.</p>]]></description>
    <content:encoded><![CDATA[<p>This episode continues the introduction of RelTT by presenting the types of the language.  Because the system is based on binary relational semantics, we can include binary relational operators like composition and converse as type constructs!  Strange.  The language also promotes terms to relations, by viewing them as functions and then taking their graphs as the relational meaning.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/6853141-the-types-of-relational-type-theory.mp3" length="10715643" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-6853141</guid>
    <pubDate>Mon, 14 Dec 2020 23:00:00 -0600</pubDate>
    <itunes:duration>890</itunes:duration>
    <itunes:keywords>chapter b, relational type theory, relational semantics, relational type operators</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>12</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introducing Relational Type Theory</itunes:title>
    <title>Introducing Relational Type Theory</title>
    <itunes:summary><![CDATA[This episode begins Chapter 11 of the podcast, on Relational Type Theory.  This is a new approach to type theory that I am developing.  The idea is to design a type system based on the binary relational semantics for types, which we considered in Chapter 10.  This episode recalls some of that semantics. ]]></itunes:summary>
    <description><![CDATA[<p>This episode begins Chapter 11 of the podcast, on Relational Type Theory.  This is a new approach to type theory that I am developing.  The idea is to design a type system based on the binary relational semantics for types, which we considered in Chapter 10.  This episode recalls some of that semantics.</p>]]></description>
    <content:encoded><![CDATA[<p>This episode begins Chapter 11 of the podcast, on Relational Type Theory.  This is a new approach to type theory that I am developing.  The idea is to design a type system based on the binary relational semantics for types, which we considered in Chapter 10.  This episode recalls some of that semantics.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/6853105-introducing-relational-type-theory.mp3" length="9659562" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-6853105</guid>
    <pubDate>Mon, 14 Dec 2020 23:00:00 -0600</pubDate>
    <itunes:duration>802</itunes:duration>
    <itunes:keywords>chapter b, relational type theory, relational semantics</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>11</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>On the paper &quot;Types, Abstraction, and Parametric Polymorphism&quot;</itunes:title>
    <title>On the paper &quot;Types, Abstraction, and Parametric Polymorphism&quot;</title>
    <itunes:summary><![CDATA[In this episode I discuss one of the greatest papers in the history of Programming Language's research, namely "Types, Abstraction, and Parametric Polymorphism" by the great John C. Reynolds.  I summarize the two interconnected semantics for polymorphic types proposed by Reynolds: one which interprets types as sets and programs as members of those sets, and another which interprets types as relations on the sets from the first interpretation.  Listen and you will get to hear my aha ...]]></itunes:summary>
    <description><![CDATA[<p>In this episode I discuss one of the greatest papers in the history of Programming Language&apos;s research, namely &quot;Types, Abstraction, and Parametric Polymorphism&quot; by the great John C. Reynolds.  I summarize the two interconnected semantics for polymorphic types proposed by Reynolds: one which interprets types as sets and programs as members of those sets, and another which interprets types as relations on the sets from the first interpretation.  Listen and you will get to hear my aha moment as I understand live on air what the Identity Extension Lemma really means.   See also this<a href='https://wp.me/pIJRP-fO'> blog post</a> on the same topic.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode I discuss one of the greatest papers in the history of Programming Language&apos;s research, namely &quot;Types, Abstraction, and Parametric Polymorphism&quot; by the great John C. Reynolds.  I summarize the two interconnected semantics for polymorphic types proposed by Reynolds: one which interprets types as sets and programs as members of those sets, and another which interprets types as relations on the sets from the first interpretation.  Listen and you will get to hear my aha moment as I understand live on air what the Identity Extension Lemma really means.   See also this<a href='https://wp.me/pIJRP-fO'> blog post</a> on the same topic.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/6563212-on-the-paper-types-abstraction-and-parametric-polymorphism.mp3" length="15384418" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-6563212</guid>
    <pubDate>Wed, 25 Nov 2020 23:00:00 -0600</pubDate>
    <itunes:duration>1279</itunes:duration>
    <itunes:keywords>chapter a, logical relations, parametric models, John C. Reynolds</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>10</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Parametric models and representation independence</itunes:title>
    <title>Parametric models and representation independence</title>
    <itunes:summary><![CDATA[Today I discuss the construction of relational models of typed lambda calculus (say, System F), that support the idea of representation independence.  This is a feature of a type theory where different implementations of the same interface can be proved equivalent, and used interchangeably in the theory.  Only in the past couple years have researchers proposed theories like this, but the semantic ideas underlying such theories have been around since Reynolds's seminal paper "Types, ...]]></itunes:summary>
    <description><![CDATA[<p>Today I discuss the construction of relational models of typed lambda calculus (say, System F), that support the idea of representation independence.  This is a feature of a type theory where different implementations of the same interface can be proved equivalent, and used interchangeably in the theory.  Only in the past couple years have researchers proposed theories like this, but the semantic ideas underlying such theories have been around since Reynolds&apos;s seminal paper &quot;Types, Abstraction, and Parametric Polymorphism&quot;.</p>]]></description>
    <content:encoded><![CDATA[<p>Today I discuss the construction of relational models of typed lambda calculus (say, System F), that support the idea of representation independence.  This is a feature of a type theory where different implementations of the same interface can be proved equivalent, and used interchangeably in the theory.  Only in the past couple years have researchers proposed theories like this, but the semantic ideas underlying such theories have been around since Reynolds&apos;s seminal paper &quot;Types, Abstraction, and Parametric Polymorphism&quot;.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/6284236-parametric-models-and-representation-independence.mp3" length="13394893" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-6284236</guid>
    <pubDate>Mon, 09 Nov 2020 00:00:00 -0600</pubDate>
    <itunes:duration>1113</itunes:duration>
    <itunes:keywords>chapter a, logical relations, parametric models, representation independence</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>9</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Explaining my encoding of a HOAS datatype, part 2</itunes:title>
    <title>Explaining my encoding of a HOAS datatype, part 2</title>
    <itunes:summary><![CDATA[I continue discussing the approach to HOAS from my paper "A Weakly Initial Algebra for Higher-Order Abstract Syntax in Cedille", 2019, available from my web page.  ]]></itunes:summary>
    <description><![CDATA[<p>I continue discussing the approach to HOAS from my paper &quot;A Weakly Initial Algebra for Higher-Order Abstract Syntax in Cedille&quot;, 2019, available from my web page. </p>]]></description>
    <content:encoded><![CDATA[<p>I continue discussing the approach to HOAS from my paper &quot;A Weakly Initial Algebra for Higher-Order Abstract Syntax in Cedille&quot;, 2019, available from my web page. </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/6284173-explaining-my-encoding-of-a-hoas-datatype-part-2.mp3" length="13358845" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-6284173</guid>
    <pubDate>Mon, 09 Nov 2020 00:00:00 -0600</pubDate>
    <itunes:duration>1110</itunes:duration>
    <itunes:keywords>chapter a, logical relations, higher-order, hoas</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>8</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Explaining my encoding of a HOAS datatype, part 1</itunes:title>
    <title>Explaining my encoding of a HOAS datatype, part 1</title>
    <itunes:summary><![CDATA[I start explaining an idea from my paper "A Weakly Initial Algebra for Higher-Order Abstract Syntax in Cedille", 2019, available from my web page.  The goal is to encode a datatype (including its constructors, which we saw were troublesome for higher-order signatures generally in the previous episode) for application-free lambda terms, which I submit is the simplest higher-order datatype possible.  I just explain some of the setup, and will attempt wading through the details next ti...]]></itunes:summary>
    <description><![CDATA[<p>I start explaining an idea from my paper &quot;A Weakly Initial Algebra for Higher-Order Abstract Syntax in Cedille&quot;, 2019, available from my web page.  The goal is to encode a datatype (including its constructors, which we saw were troublesome for higher-order signatures generally in the previous episode) for application-free lambda terms, which I submit is the simplest higher-order datatype possible.  I just explain some of the setup, and will attempt wading through the details next time.</p>]]></description>
    <content:encoded><![CDATA[<p>I start explaining an idea from my paper &quot;A Weakly Initial Algebra for Higher-Order Abstract Syntax in Cedille&quot;, 2019, available from my web page.  The goal is to encode a datatype (including its constructors, which we saw were troublesome for higher-order signatures generally in the previous episode) for application-free lambda terms, which I submit is the simplest higher-order datatype possible.  I just explain some of the setup, and will attempt wading through the details next time.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/5956789-explaining-my-encoding-of-a-hoas-datatype-part-1.mp3" length="7257791" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-5956789</guid>
    <pubDate>Mon, 19 Oct 2020 17:00:00 -0500</pubDate>
    <itunes:duration>602</itunes:duration>
    <itunes:keywords>chapter a, logical relations, higher-order, hoas</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>7</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Term models for higher-order signatures</itunes:title>
    <title>Term models for higher-order signatures</title>
    <itunes:summary><![CDATA[I discuss the problem of term models for higher-order signatures, following a prelude about the Edinburgh Logical Framework (LF) and higher-order datatypes. ]]></itunes:summary>
    <description><![CDATA[<p>I discuss the problem of term models for higher-order signatures, following a prelude about the Edinburgh Logical Framework (LF) and higher-order datatypes.</p>]]></description>
    <content:encoded><![CDATA[<p>I discuss the problem of term models for higher-order signatures, following a prelude about the Edinburgh Logical Framework (LF) and higher-order datatypes.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/5956747-term-models-for-higher-order-signatures.mp3" length="10459881" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-5956747</guid>
    <pubDate>Mon, 19 Oct 2020 00:00:00 -0500</pubDate>
    <itunes:duration>869</itunes:duration>
    <itunes:keywords>chapter a, logical relations, higher-order, term model</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>6</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Lambda applicative structures and interpretations of lambda abstractions</itunes:title>
    <title>Lambda applicative structures and interpretations of lambda abstractions</title>
    <itunes:summary><![CDATA[Discussion of definitions in "Pre-logical relations" by Honsell and Sannella, particularly the notion of a lambda applicative structure (similar to a definition in John C. Mitchell's book "Foundations for Programming Languages').  In short, lambda abstractions get interpreted in combinatory algebras by compiling away the lambda abstractions in favor of S and K combinators, which are then interpreted by the combinatory algebra.  I complain about the fact that the definition of a lamb...]]></itunes:summary>
    <description><![CDATA[<p>Discussion of definitions in &quot;Pre-logical relations&quot; by Honsell and Sannella, particularly the notion of a lambda applicative structure (similar to a definition in John C. Mitchell&apos;s book &quot;Foundations for Programming Languages&apos;).  In short, lambda abstractions get interpreted in combinatory algebras by compiling away the lambda abstractions in favor of S and K combinators, which are then interpreted by the combinatory algebra.  I complain about the fact that the definition of a lambda applicative structure is required to come with an interpretation function for terms (hence tying the semantics to the syntax).</p>]]></description>
    <content:encoded><![CDATA[<p>Discussion of definitions in &quot;Pre-logical relations&quot; by Honsell and Sannella, particularly the notion of a lambda applicative structure (similar to a definition in John C. Mitchell&apos;s book &quot;Foundations for Programming Languages&apos;).  In short, lambda abstractions get interpreted in combinatory algebras by compiling away the lambda abstractions in favor of S and K combinators, which are then interpreted by the combinatory algebra.  I complain about the fact that the definition of a lambda applicative structure is required to come with an interpretation function for terms (hence tying the semantics to the syntax).</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/5795947-lambda-applicative-structures-and-interpretations-of-lambda-abstractions.mp3" length="7391015" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-5795947</guid>
    <pubDate>Wed, 07 Oct 2020 23:00:00 -0500</pubDate>
    <itunes:duration>613</itunes:duration>
    <itunes:keywords>chapter a, logical relations, lambda applicative structure</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>5</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>The Basic Lemma</itunes:title>
    <title>The Basic Lemma</title>
    <itunes:summary><![CDATA[Also known as the Fundamental Property, this is a theorem stating that for every well-typed term t : T, and every logical relation R between algebraic structures A and B, the meaning of t in A is related by R to the meaning of t in B.  I view it as a straightforward semantic soundness property, but where the semantics of types is this somewhat interesting one that interprets types as binary relations on structures A and B.  I muse on these matters a bit in the episode. ]]></itunes:summary>
    <description><![CDATA[<p>Also known as the Fundamental Property, this is a theorem stating that for every well-typed term t : T, and every logical relation R between algebraic structures A and B, the meaning of t in A is related by R to the meaning of t in B.  I view it as a straightforward semantic soundness property, but where the semantics of types is this somewhat interesting one that interprets types as binary relations on structures A and B.  I muse on these matters a bit in the episode.</p>]]></description>
    <content:encoded><![CDATA[<p>Also known as the Fundamental Property, this is a theorem stating that for every well-typed term t : T, and every logical relation R between algebraic structures A and B, the meaning of t in A is related by R to the meaning of t in B.  I view it as a straightforward semantic soundness property, but where the semantics of types is this somewhat interesting one that interprets types as binary relations on structures A and B.  I muse on these matters a bit in the episode.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/5683024-the-basic-lemma.mp3" length="10513797" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-5683024</guid>
    <pubDate>Wed, 30 Sep 2020 16:00:00 -0500</pubDate>
    <itunes:duration>873</itunes:duration>
    <itunes:keywords>chapter a, logical relations, basic lemma</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>4</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Logical relations are not closed under composition</itunes:title>
    <title>Logical relations are not closed under composition</title>
    <itunes:summary><![CDATA[In this episode, I talk through a small (but intricate) example from a paper titled "Pre-logical relations" by Honsell and Sannella, showing that the set of logical relations is not closed under composition.  That is, you can have a logical relation between structure A and structure B, and one between B and C, but the composition (while a relation) is not a logical relation between A and C.  This took me three takes to get to where I wasn't tripping over my tongue, so enjoy. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode, I talk through a small (but intricate) example from a paper titled &quot;Pre-logical relations&quot; by Honsell and Sannella, showing that the set of logical relations is not closed under composition.  That is, you can have a logical relation between structure A and structure B, and one between B and C, but the composition (while a relation) is not a logical relation between A and C.  This took me three takes to get to where I wasn&apos;t tripping over my tongue, so enjoy.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode, I talk through a small (but intricate) example from a paper titled &quot;Pre-logical relations&quot; by Honsell and Sannella, showing that the set of logical relations is not closed under composition.  That is, you can have a logical relation between structure A and structure B, and one between B and C, but the composition (while a relation) is not a logical relation between A and C.  This took me three takes to get to where I wasn&apos;t tripping over my tongue, so enjoy.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/5232319-logical-relations-are-not-closed-under-composition.mp3" length="7379730" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-5232319</guid>
    <pubDate>Mon, 31 Aug 2020 16:00:00 -0500</pubDate>
    <itunes:duration>612</itunes:duration>
    <itunes:keywords>chapter a, logical relations, higher-order, composition</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>3</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>The definition of a logical relation</itunes:title>
    <title>The definition of a logical relation</title>
    <itunes:summary><![CDATA[Logical relations are the relational generalization of the algebraic concept of a homomorphism -- but they go further in extending the notion of structure-preservation to higher-order structures.  We discuss the basic definition in this episode. ]]></itunes:summary>
    <description><![CDATA[<p>Logical relations are the relational generalization of the algebraic concept of a homomorphism -- but they go further in extending the notion of structure-preservation to higher-order structures.  We discuss the basic definition in this episode.</p>]]></description>
    <content:encoded><![CDATA[<p>Logical relations are the relational generalization of the algebraic concept of a homomorphism -- but they go further in extending the notion of structure-preservation to higher-order structures.  We discuss the basic definition in this episode.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/5057519-the-definition-of-a-logical-relation.mp3" length="7708913" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-5057519</guid>
    <pubDate>Tue, 18 Aug 2020 23:00:00 -0500</pubDate>
    <itunes:duration>639</itunes:duration>
    <itunes:keywords>chapter a, logical relations, homomorphisms, higher-order</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>2</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to Logical Relations</itunes:title>
    <title>Introduction to Logical Relations</title>
    <itunes:summary><![CDATA[Start of Chapter 10, on logical relations and parametricity.  Basic idea of logical relation as the relational generalization of the algebraic idea of homomorphism.  This is also the start of Season 2, as the fall academic year is just beginning here in Iowa. ]]></itunes:summary>
    <description><![CDATA[<p>Start of Chapter 10, on logical relations and parametricity.  Basic idea of logical relation as the relational generalization of the algebraic idea of homomorphism.  This is also the start of Season 2, as the fall academic year is just beginning here in Iowa.</p>]]></description>
    <content:encoded><![CDATA[<p>Start of Chapter 10, on logical relations and parametricity.  Basic idea of logical relation as the relational generalization of the algebraic idea of homomorphism.  This is also the start of Season 2, as the fall academic year is just beginning here in Iowa.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/5026418-introduction-to-logical-relations.mp3" length="9028893" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-5026418</guid>
    <pubDate>Sun, 16 Aug 2020 23:00:00 -0500</pubDate>
    <itunes:duration>749</itunes:duration>
    <itunes:keywords>chapter a, logical relations, homomorphisms</itunes:keywords>
    <itunes:season>2</itunes:season>
    <itunes:episode>1</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Lamping&#39;s abstract algorithm</itunes:title>
    <title>Lamping&#39;s abstract algorithm</title>
    <itunes:summary><![CDATA[The simplified version of Lamping's algorithm for optimal beta-reduction is discussed.  We have duplicators which eat their way through lambda graphs.  When copying a lambda abstraction, we send one duplicator down the variable port, and another down the body port.  When they meet, they cancel each other and the duplication is done.  But duplication can get paused waiting for a value to come in on a wire from outside the lambda abstraction.  This can lead to a situati...]]></itunes:summary>
    <description><![CDATA[<p>The simplified version of Lamping&apos;s algorithm for optimal beta-reduction is discussed.  We have duplicators which eat their way through lambda graphs.  When copying a lambda abstraction, we send one duplicator down the variable port, and another down the body port.  When they meet, they cancel each other and the duplication is done.  But duplication can get paused waiting for a value to come in on a wire from outside the lambda abstraction.  This can lead to a situation where some other duplication needs to duplicate a lambda graph containing frozen duplicators.  Then we have to decide, when two duplicators meet, should they cancel each other (signalling the end of a duplication on one level), or should one duplicate the duplicators (for an outer duplication of some lambda graph containing frozen duplicators).  The abstract algorithm leaves this choice undetermined.  The hairy versions of the algorithm add complex additional machinery to keep track of these levels of duplication to resolve that nondeterminism.</p>]]></description>
    <content:encoded><![CDATA[<p>The simplified version of Lamping&apos;s algorithm for optimal beta-reduction is discussed.  We have duplicators which eat their way through lambda graphs.  When copying a lambda abstraction, we send one duplicator down the variable port, and another down the body port.  When they meet, they cancel each other and the duplication is done.  But duplication can get paused waiting for a value to come in on a wire from outside the lambda abstraction.  This can lead to a situation where some other duplication needs to duplicate a lambda graph containing frozen duplicators.  Then we have to decide, when two duplicators meet, should they cancel each other (signalling the end of a duplication on one level), or should one duplicate the duplicators (for an outer duplication of some lambda graph containing frozen duplicators).  The abstract algorithm leaves this choice undetermined.  The hairy versions of the algorithm add complex additional machinery to keep track of these levels of duplication to resolve that nondeterminism.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/4712348-lamping-s-abstract-algorithm.mp3" length="7413899" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-4712348</guid>
    <pubDate>Sat, 25 Jul 2020 15:00:00 -0500</pubDate>
    <itunes:duration>615</itunes:duration>
    <itunes:keywords>chapter 9, optimal beta reduction, duplication, Lamping&#39;s abstract algorithm</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>70</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Examples showing non-optimality of Haskell</itunes:title>
    <title>Examples showing non-optimality of Haskell</title>
    <itunes:summary><![CDATA[I discuss some examples posted on my blog, QA9, which show that executables produced by ghc (the main implementation of Haskell) can exhibit non-optimal beta-reduction.  Thanks to Victor Maia for major help with these. ]]></itunes:summary>
    <description><![CDATA[<p>I discuss some <a href='https://queuea9.wordpress.com/2020/07/12/and-the-winner-is/'>examples</a> posted on my blog, QA9, which show that executables produced by ghc (the main implementation of Haskell) can exhibit non-optimal beta-reduction.  Thanks to Victor Maia for major help with these.</p>]]></description>
    <content:encoded><![CDATA[<p>I discuss some <a href='https://queuea9.wordpress.com/2020/07/12/and-the-winner-is/'>examples</a> posted on my blog, QA9, which show that executables produced by ghc (the main implementation of Haskell) can exhibit non-optimal beta-reduction.  Thanks to Victor Maia for major help with these.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/4574237-examples-showing-non-optimality-of-haskell.mp3" length="14257876" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-4574237</guid>
    <pubDate>Tue, 14 Jul 2020 23:00:00 -0500</pubDate>
    <itunes:duration>1185</itunes:duration>
    <itunes:keywords>chapter 9, optimal beta reduction, Haskell , non-optimal reduction</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>69</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Lambda graphs with duplicators and start of Lamping&#39;s abstract algorithm</itunes:title>
    <title>Lambda graphs with duplicators and start of Lamping&#39;s abstract algorithm</title>
    <itunes:summary><![CDATA[In this episode I talk about how to represent lambda terms as graphs with duplicator nodes for splitting edges corresponding to bound variables.  I also start discussing the beginning of Lampings' abstract algorithm for optimal beta-reduction, in particular how we need to push duplicators inside lambda abstractions to initiate a lazy duplication. ]]></itunes:summary>
    <description><![CDATA[<p>In this episode I talk about how to represent lambda terms as graphs with duplicator nodes for splitting edges corresponding to bound variables.  I also start discussing the beginning of Lampings&apos; abstract algorithm for optimal beta-reduction, in particular how we need to push duplicators inside lambda abstractions to initiate a lazy duplication.</p>]]></description>
    <content:encoded><![CDATA[<p>In this episode I talk about how to represent lambda terms as graphs with duplicator nodes for splitting edges corresponding to bound variables.  I also start discussing the beginning of Lampings&apos; abstract algorithm for optimal beta-reduction, in particular how we need to push duplicators inside lambda abstractions to initiate a lazy duplication.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/4430237-lambda-graphs-with-duplicators-and-start-of-lamping-s-abstract-algorithm.mp3" length="16136229" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-4430237</guid>
    <pubDate>Fri, 03 Jul 2020 15:00:00 -0500</pubDate>
    <itunes:duration>1342</itunes:duration>
    <itunes:keywords>chapter 9, optimal beta reduction, duplication , lazy graph copying, Lamping&#39;s abstract algorithm</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>68</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Duplicating redexes as the central problem of optimal reduction</itunes:title>
    <title>Duplicating redexes as the central problem of optimal reduction</title>
    <itunes:summary><![CDATA[We discussed last time how with a graph-sharing implementation of untyped lambda calculus, it can happen that you are forced to break sharing and copy a lambda abstraction.  We discuss in this episode the central issue with doing that, namely copying redexes and copying applications which could turn into redexes following other beta reductions.  The high-level idea of the proposed solution is also discussed, namely lazy graph duplication. ]]></itunes:summary>
    <description><![CDATA[<p>We discussed last time how with a graph-sharing implementation of untyped lambda calculus, it can happen that you are forced to break sharing and copy a lambda abstraction.  We discuss in this episode the central issue with doing that, namely copying redexes and copying applications which could turn into redexes following other beta reductions.  The high-level idea of the proposed solution is also discussed, namely lazy graph duplication.</p>]]></description>
    <content:encoded><![CDATA[<p>We discussed last time how with a graph-sharing implementation of untyped lambda calculus, it can happen that you are forced to break sharing and copy a lambda abstraction.  We discuss in this episode the central issue with doing that, namely copying redexes and copying applications which could turn into redexes following other beta reductions.  The high-level idea of the proposed solution is also discussed, namely lazy graph duplication.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/4254818-duplicating-redexes-as-the-central-problem-of-optimal-reduction.mp3" length="11624419" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-4254818</guid>
    <pubDate>Sat, 20 Jun 2020 22:00:00 -0500</pubDate>
    <itunes:duration>966</itunes:duration>
    <itunes:keywords>chapter 9, optimal beta reduction, duplication , lazy graph copying</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>67</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to optimal beta reduction</itunes:title>
    <title>Introduction to optimal beta reduction</title>
    <itunes:summary><![CDATA[Some background on optimal beta reduction: Levy, Lamping.  The main problem to overcome is duplicating a lambda abstraction that is used in two different places in your term.  The solution is to try to duplicate it incrementally. ]]></itunes:summary>
    <description><![CDATA[<p>Some background on optimal beta reduction: Levy, Lamping.  The main problem to overcome is duplicating a lambda abstraction that is used in two different places in your term.  The solution is to try to duplicate it incrementally.</p>]]></description>
    <content:encoded><![CDATA[<p>Some background on optimal beta reduction: Levy, Lamping.  The main problem to overcome is duplicating a lambda abstraction that is used in two different places in your term.  The solution is to try to duplicate it incrementally.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/4192835-introduction-to-optimal-beta-reduction.mp3" length="12113095" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-4192835</guid>
    <pubDate>Tue, 16 Jun 2020 00:00:00 -0500</pubDate>
    <itunes:duration>1006</itunes:duration>
    <itunes:keywords>chapter 9, optimal beta reduction, duplication</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>66</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Lexicographic termination</itunes:title>
    <title>Lexicographic termination</title>
    <itunes:summary><![CDATA[Many termination checkers support lexicographic (structural) recursion.  The lexicographic combination of orderings on sets A and B is an ordering on A x B where a pair decreases if the A component does (and then the B component can increase unboundedly) or else the A component stays the same and the B component decreases.  Connections with nested recursion and ordinals discussed. ]]></itunes:summary>
    <description><![CDATA[<p>Many termination checkers support lexicographic (structural) recursion.  The lexicographic combination of orderings on sets A and B is an ordering on A x B where a pair decreases if the A component does (and then the B component can increase unboundedly) or else the A component stays the same and the B component decreases.  Connections with nested recursion and ordinals discussed.</p>]]></description>
    <content:encoded><![CDATA[<p>Many termination checkers support lexicographic (structural) recursion.  The lexicographic combination of orderings on sets A and B is an ordering on A x B where a pair decreases if the A component does (and then the B component can increase unboundedly) or else the A component stays the same and the B component decreases.  Connections with nested recursion and ordinals discussed.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/4023410-lexicographic-termination.mp3" length="8159015" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-4023410</guid>
    <pubDate>Tue, 02 Jun 2020 23:00:00 -0500</pubDate>
    <itunes:duration>677</itunes:duration>
    <itunes:keywords>chapter 8 , termination checking , lexicographic recursion , ordinals , nested recursion</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>65</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Mendler-style iteration</itunes:title>
    <title>Mendler-style iteration</title>
    <itunes:summary><![CDATA[Another type-based approach to termination-checking for recursive functions over inductive datatypes is to use so-called Mendler-style iteration.  On this approach, we write recursive functions by coding against a certain interface that features an abstract type R, which abstracts the datatype over which we are recursing; and a function from R to the result type of the recursion.  Subdata of the input data are available at type R only, not at the original datatype.  This allows...]]></itunes:summary>
    <description><![CDATA[<p>Another type-based approach to termination-checking for recursive functions over inductive datatypes is to use so-called Mendler-style iteration.  On this approach, we write recursive functions by coding against a certain interface that features an abstract type R, which abstracts the datatype over which we are recursing; and a function from R to the result type of the recursion.  Subdata of the input data are available at type R only, not at the original datatype.  This allows us to make explicit recursive calls, but only on subdata.</p>]]></description>
    <content:encoded><![CDATA[<p>Another type-based approach to termination-checking for recursive functions over inductive datatypes is to use so-called Mendler-style iteration.  On this approach, we write recursive functions by coding against a certain interface that features an abstract type R, which abstracts the datatype over which we are recursing; and a function from R to the result type of the recursion.  Subdata of the input data are available at type R only, not at the original datatype.  This allows us to make explicit recursive calls, but only on subdata.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/3822887-mendler-style-iteration.mp3" length="7654330" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-3822887</guid>
    <pubDate>Mon, 18 May 2020 23:00:00 -0500</pubDate>
    <itunes:duration>635</itunes:duration>
    <itunes:keywords>chapter 8 , termination checking , structural recursion , Mendler-style iteration</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>64</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Well-founded recursion</itunes:title>
    <title>Well-founded recursion</title>
    <itunes:summary><![CDATA[Well-founded recursion is a technique to turn recursion which decreases along a well-founded ordering into a structural recursion. ]]></itunes:summary>
    <description><![CDATA[<p>Well-founded recursion is a technique to turn recursion which decreases along a well-founded ordering into a structural recursion.</p>]]></description>
    <content:encoded><![CDATA[<p>Well-founded recursion is a technique to turn recursion which decreases along a well-founded ordering into a structural recursion.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/3822878-well-founded-recursion.mp3" length="11080863" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-3822878</guid>
    <pubDate>Mon, 18 May 2020 23:00:00 -0500</pubDate>
    <itunes:duration>920</itunes:duration>
    <itunes:keywords>chapter 8 , termination checking , structural recursion , well-founded recursion</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>63</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Compositional termination checking with sized types</itunes:title>
    <title>Compositional termination checking with sized types</title>
    <itunes:summary><![CDATA[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 and interesting tutorial on the subject is here. ]]></itunes:summary>
    <description><![CDATA[<p>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 and interesting tutorial on the subject is <a href='http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.596.600&amp;rep=rep1&amp;type=pdf'>here</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>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 and interesting tutorial on the subject is <a href='http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.596.600&amp;rep=rep1&amp;type=pdf'>here</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/3177274-compositional-termination-checking-with-sized-types.mp3" length="13447244" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-3177274</guid>
    <pubDate>Mon, 30 Mar 2020 14:00:00 -0500</pubDate>
    <itunes:duration>1117</itunes:duration>
    <itunes:keywords>chapter 8 , termination checking , sized types , compositionality</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>62</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Noncompositionality of syntactic structural-recursion checks</itunes:title>
    <title>Noncompositionality of syntactic structural-recursion checks</title>
    <itunes:summary><![CDATA[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 will be discussed in subsequent episodes. ]]></itunes:summary>
    <description><![CDATA[<p>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 will be discussed in subsequent episodes.</p>]]></description>
    <content:encoded><![CDATA[<p>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 will be discussed in subsequent episodes.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/3063349-noncompositionality-of-syntactic-structural-recursion-checks.mp3" length="9431701" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-3063349</guid>
    <pubDate>Thu, 19 Mar 2020 23:00:00 -0500</pubDate>
    <itunes:duration>783</itunes:duration>
    <itunes:keywords>chapter 8 , termination checking , structural recursion , compositionality</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>61</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Structural termination</itunes:title>
    <title>Structural termination</title>
    <itunes:summary><![CDATA[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 the recursive function.   ]]></itunes:summary>
    <description><![CDATA[<p>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 the recursive function.  </p>]]></description>
    <content:encoded><![CDATA[<p>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 the recursive function.  </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/3032770-structural-termination.mp3" length="11902780" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-3032770</guid>
    <pubDate>Tue, 17 Mar 2020 00:00:00 -0500</pubDate>
    <itunes:duration>989</itunes:duration>
    <itunes:keywords>chapter 8 , termination checking , structural recursion , calculus of inductive constructions</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>60</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Proving Confluence for Untyped Lambda Calculus II</itunes:title>
    <title>Proving Confluence for Untyped Lambda Calculus II</title>
    <itunes:summary><![CDATA[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! ]]></itunes:summary>
    <description><![CDATA[<p>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!</p>]]></description>
    <content:encoded><![CDATA[<p>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!</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/3001876-proving-confluence-for-untyped-lambda-calculus-ii.mp3" length="8818555" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-3001876</guid>
    <pubDate>Fri, 13 Mar 2020 17:00:00 -0500</pubDate>
    <itunes:duration>732</itunes:duration>
    <itunes:keywords>chapter 7 , metatheory , confluence , untyped lambda calculus</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>58</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Proving Confluence for Untyped Lambda Calculus I</itunes:title>
    <title>Proving Confluence for Untyped Lambda Calculus I</title>
    <itunes:summary><![CDATA[Start of discussion on how to prove confluence for untyped lambda calculus.  Also some discussion about the research community interested in confluence. ]]></itunes:summary>
    <description><![CDATA[<p>Start of discussion on how to prove confluence for untyped lambda calculus.  Also some discussion about the research community interested in confluence.</p>]]></description>
    <content:encoded><![CDATA[<p>Start of discussion on how to prove confluence for untyped lambda calculus.  Also some discussion about the research community interested in confluence.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/3001870-proving-confluence-for-untyped-lambda-calculus-i.mp3" length="8533925" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-3001870</guid>
    <pubDate>Fri, 13 Mar 2020 14:00:00 -0500</pubDate>
    <itunes:duration>708</itunes:duration>
    <itunes:keywords>chapter 7 , metatheory , confluence , untyped lambda calculus</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>58</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Confluence, and its use for conversion checking</itunes:title>
    <title>Confluence, and its use for conversion checking</title>
    <itunes:summary><![CDATA[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 checking for alpha-equivalence (or maybe alpha,eta-equivalence). ]]></itunes:summary>
    <description><![CDATA[<p>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 checking for alpha-equivalence (or maybe alpha,eta-equivalence).</p>]]></description>
    <content:encoded><![CDATA[<p>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 checking for alpha-equivalence (or maybe alpha,eta-equivalence).</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2984782-confluence-and-its-use-for-conversion-checking.mp3" length="10897797" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2984782</guid>
    <pubDate>Wed, 11 Mar 2020 15:00:00 -0500</pubDate>
    <itunes:duration>905</itunes:duration>
    <itunes:keywords>chapter 7 , metatheory , confluence , conversion</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>57</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Normalization and logical consistency</itunes:title>
    <title>Normalization and logical consistency</title>
    <itunes:summary><![CDATA[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 realizability semantics (often used for normalization proofs) directly to prove consistency. ]]></itunes:summary>
    <description><![CDATA[<p>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 realizability semantics (often used for normalization proofs) directly to prove consistency.</p>]]></description>
    <content:encoded><![CDATA[<p>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 realizability semantics (often used for normalization proofs) directly to prove consistency.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2963608-normalization-and-logical-consistency.mp3" length="10635737" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2963608</guid>
    <pubDate>Mon, 09 Mar 2020 14:00:00 -0500</pubDate>
    <itunes:duration>883</itunes:duration>
    <itunes:keywords>chapter 7 , metatheory , normalization , logical consistency , realizability</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>56</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Normalization in type theory: where it is needed, and where not</itunes:title>
    <title>Normalization in type theory: where it is needed, and where not</title>
    <itunes:summary><![CDATA[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) for conversion checking.  This is the process of confirming that types are equivalent ...]]></itunes:summary>
    <description><![CDATA[<p>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) for conversion checking.  This is the process of confirming that types are equivalent during type checking, which, due to dependent types, can require checking program equivalence.  The latter is usually restricted to just beta-equivalence (where beta-reduction is substitution of argument for input variable when applying a function), because richer notions of program equivalence are usually undecidable.  I have a mini-rant in this episode explaining why this usual requirement of normalization for conversion checking is not sensible.<br/><br/>Also I note that you can find the episodes of the podcast organized by chapter on <a href='https://homepage.divms.uiowa.edu/~astump/'>my web page</a>.</p>]]></description>
    <content:encoded><![CDATA[<p>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) for conversion checking.  This is the process of confirming that types are equivalent during type checking, which, due to dependent types, can require checking program equivalence.  The latter is usually restricted to just beta-equivalence (where beta-reduction is substitution of argument for input variable when applying a function), because richer notions of program equivalence are usually undecidable.  I have a mini-rant in this episode explaining why this usual requirement of normalization for conversion checking is not sensible.<br/><br/>Also I note that you can find the episodes of the podcast organized by chapter on <a href='https://homepage.divms.uiowa.edu/~astump/'>my web page</a>.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2938366-normalization-in-type-theory-where-it-is-needed-and-where-not.mp3" length="11891428" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2938366</guid>
    <pubDate>Fri, 06 Mar 2020 15:00:00 -0600</pubDate>
    <itunes:duration>988</itunes:duration>
    <itunes:keywords>chapter 7 , metatheory , normalization  , conversion , feasible computation</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>55</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to normalization</itunes:title>
    <title>Introduction to normalization</title>
    <itunes:summary><![CDATA[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. ]]></itunes:summary>
    <description><![CDATA[<p>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.</p>]]></description>
    <content:encoded><![CDATA[<p>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.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2931700-introduction-to-normalization.mp3" length="9237037" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2931700</guid>
    <pubDate>Thu, 05 Mar 2020 22:00:00 -0600</pubDate>
    <itunes:duration>767</itunes:duration>
    <itunes:keywords>chapter 7 , metatheory , normalization  , strong FP , conversion</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>53</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Proving type safety; upcoming metatheoretic properties</itunes:title>
    <title>Proving type safety; upcoming metatheoretic properties</title>
    <itunes:summary><![CDATA[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.  ]]></itunes:summary>
    <description><![CDATA[<p>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&apos;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. </p>]]></description>
    <content:encoded><![CDATA[<p>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&apos;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. </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2918047-proving-type-safety-upcoming-metatheoretic-properties.mp3" length="9485618" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2918047</guid>
    <pubDate>Wed, 04 Mar 2020 15:00:00 -0600</pubDate>
    <itunes:duration>787</itunes:duration>
    <itunes:keywords>chapter 7 , metatheory , type safety , type preservation, progress , normalization  , confluence</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>52</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>The progress property and the problem of axioms in type theory</itunes:title>
    <title>The progress property and the problem of axioms in type theory</title>
    <itunes:summary><![CDATA[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. ]]></itunes:summary>
    <description><![CDATA[<p>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.</p>]]></description>
    <content:encoded><![CDATA[<p>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.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2911240-the-progress-property-and-the-problem-of-axioms-in-type-theory.mp3" length="7389448" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2911240</guid>
    <pubDate>Tue, 03 Mar 2020 23:00:00 -0600</pubDate>
    <itunes:duration>613</itunes:duration>
    <itunes:keywords>chapter 7 , metatheory , type safety , type preservation, progress</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>52</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to type safety</itunes:title>
    <title>Introduction to type safety</title>
    <itunes:summary><![CDATA[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 type T indefinitely along the execution of e).  Progress says that well-typed expre...]]></itunes:summary>
    <description><![CDATA[<p>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 type T indefinitely along the execution of e).  Progress says that well-typed expressions cannot get stuck computationally: they cannot reduce to a form where the operational semantics is then undefined.  This is how we model the idea that the type system is preventing certain kinds of failures: make those failures correspond to undefined behavior.  </p>]]></description>
    <content:encoded><![CDATA[<p>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 type T indefinitely along the execution of e).  Progress says that well-typed expressions cannot get stuck computationally: they cannot reduce to a form where the operational semantics is then undefined.  This is how we model the idea that the type system is preventing certain kinds of failures: make those failures correspond to undefined behavior.  </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2897443-introduction-to-type-safety.mp3" length="10323521" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2897443</guid>
    <pubDate>Mon, 02 Mar 2020 17:00:00 -0600</pubDate>
    <itunes:duration>857</itunes:duration>
    <itunes:keywords>chapter 7 , metatheory , type safety</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>51</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to metatheory</itunes:title>
    <title>Introduction to metatheory</title>
    <itunes:summary><![CDATA[Metatheory is concerned with proving properties about theories, in this case type theories or programming languages.   ]]></itunes:summary>
    <description><![CDATA[<p>Metatheory is concerned with proving properties about theories, in this case type theories or programming languages.  </p>]]></description>
    <content:encoded><![CDATA[<p>Metatheory is concerned with proving properties about theories, in this case type theories or programming languages.  </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2871748-introduction-to-metatheory.mp3" length="8608483" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2871748</guid>
    <pubDate>Fri, 28 Feb 2020 16:00:00 -0600</pubDate>
    <itunes:duration>714</itunes:duration>
    <itunes:keywords>chapter 7 , metatheory , normalization</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>50</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Definition of the Mendler encoding</itunes:title>
    <title>Definition of the Mendler encoding</title>
    <itunes:summary><![CDATA[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). ]]></itunes:summary>
    <description><![CDATA[<p>We consider using Mendler&apos;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&apos;s combining function with the results of all possible recursive calls on immediate subdata).</p>]]></description>
    <content:encoded><![CDATA[<p>We consider using Mendler&apos;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&apos;s combining function with the results of all possible recursive calls on immediate subdata).</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2853244-definition-of-the-mendler-encoding.mp3" length="11462983" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2853244</guid>
    <pubDate>Wed, 26 Feb 2020 15:00:00 -0600</pubDate>
    <itunes:duration>952</itunes:duration>
    <itunes:keywords>chapter 6, lambda encodings, Mendler encoding</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>49</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>The Mendler encoding and the problem of explicit recursion</itunes:title>
    <title>The Mendler encoding and the problem of explicit recursion</title>
    <itunes:summary><![CDATA[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. ]]></itunes:summary>
    <description><![CDATA[<p>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.</p>]]></description>
    <content:encoded><![CDATA[<p>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.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2842126-the-mendler-encoding-and-the-problem-of-explicit-recursion.mp3" length="7944289" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2842126</guid>
    <pubDate>Tue, 25 Feb 2020 15:00:00 -0600</pubDate>
    <itunes:duration>659</itunes:duration>
    <itunes:keywords>chapter 6, lambda encodings, Mendler encoding</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>48</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>The Scott encoding</itunes:title>
    <title>The Scott encoding</title>
    <itunes:summary><![CDATA[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. ]]></itunes:summary>
    <description><![CDATA[<p>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.</p>]]></description>
    <content:encoded><![CDATA[<p>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.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2830180-the-scott-encoding.mp3" length="11581407" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2830180</guid>
    <pubDate>Mon, 24 Feb 2020 14:00:00 -0600</pubDate>
    <itunes:duration>962</itunes:duration>
    <itunes:keywords>chapter 6, lambda encodings , Parigot encoding , Scott encoding</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>47</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>More on the Parigot encoding</itunes:title>
    <title>More on the Parigot encoding</title>
    <itunes:summary><![CDATA[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. ]]></itunes:summary>
    <description><![CDATA[<p>The Parigot encoding has exponential-size normal forms: but don&apos;t panic!  With a decent graph-sharing implementation of lambda calculus, they take linear space in memory.</p>]]></description>
    <content:encoded><![CDATA[<p>The Parigot encoding has exponential-size normal forms: but don&apos;t panic!  With a decent graph-sharing implementation of lambda calculus, they take linear space in memory.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2809891-more-on-the-parigot-encoding.mp3" length="8343986" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2809891</guid>
    <pubDate>Fri, 21 Feb 2020 22:00:00 -0600</pubDate>
    <itunes:duration>692</itunes:duration>
    <itunes:keywords>chapter 6, lambda encodings , Parigot encoding</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>46</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to the Parigot encoding</itunes:title>
    <title>Introduction to the Parigot encoding</title>
    <itunes:summary><![CDATA[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. ]]></itunes:summary>
    <description><![CDATA[<p>The Parigot encoding solves the Church encoding&apos;s problem of inefficient predecessor.  It can be typed using positive-recursive types, which preserve normalization of the type theory.</p>]]></description>
    <content:encoded><![CDATA[<p>The Parigot encoding solves the Church encoding&apos;s problem of inefficient predecessor.  It can be typed using positive-recursive types, which preserve normalization of the type theory.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2780188-introduction-to-the-parigot-encoding.mp3" length="8372174" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2780188</guid>
    <pubDate>Tue, 18 Feb 2020 17:00:00 -0600</pubDate>
    <itunes:duration>695</itunes:duration>
    <itunes:keywords>chapter 6, lambda encodings, Parigot encoding , natural numbers</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>45</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Church-encoding natural numbers</itunes:title>
    <title>Church-encoding natural numbers</title>
    <itunes:summary><![CDATA[What is fold-right for a natural number?  How do we define addition with this?  The problem of inefficient predecessor. ]]></itunes:summary>
    <description><![CDATA[<p>What is fold-right for a natural number?  How do we define addition with this?  The problem of inefficient predecessor.</p>]]></description>
    <content:encoded><![CDATA[<p>What is fold-right for a natural number?  How do we define addition with this?  The problem of inefficient predecessor.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2770228-church-encoding-natural-numbers.mp3" length="8621069" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2770228</guid>
    <pubDate>Mon, 17 Feb 2020 17:00:00 -0600</pubDate>
    <itunes:duration>715</itunes:duration>
    <itunes:keywords>chapter 6, lambda encodings, fold right, Church encoding, natural  numbers , predecessor</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>44</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Church encoding of lists</itunes:title>
    <title>Church encoding of lists</title>
    <itunes:summary><![CDATA[We consider fold-right for lists, and its static type.  The Church encoding for lists makes them into their own fold-right functions ]]></itunes:summary>
    <description><![CDATA[<p>We consider fold-right for lists, and its static type.  The Church encoding for lists makes them into their own fold-right functions</p>]]></description>
    <content:encoded><![CDATA[<p>We consider fold-right for lists, and its static type.  The Church encoding for lists makes them into their own fold-right functions</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2748289-church-encoding-of-lists.mp3" length="7904181" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2748289</guid>
    <pubDate>Fri, 14 Feb 2020 22:00:00 -0600</pubDate>
    <itunes:duration>656</itunes:duration>
    <itunes:keywords>chapter 6, lambda encodings, fold right, Church encoding, lists</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>43</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Church encoding of the booleans</itunes:title>
    <title>Church encoding of the booleans</title>
    <itunes:summary><![CDATA[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 -&gt; X -&gt; X. ]]></itunes:summary>
    <description><![CDATA[<p>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 -&gt; X -&gt; X.</p>]]></description>
    <content:encoded><![CDATA[<p>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 -&gt; X -&gt; X.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2748274-church-encoding-of-the-booleans.mp3" length="8214813" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2748274</guid>
    <pubDate>Fri, 14 Feb 2020 21:00:00 -0600</pubDate>
    <itunes:duration>681</itunes:duration>
    <itunes:keywords>chapter 6, lambda encodings, fold right, Church encoding, booleans</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>42</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to Church encoding</itunes:title>
    <title>Introduction to Church encoding</title>
    <itunes:summary><![CDATA[The Church encoding represents data as their own fold-right functions ]]></itunes:summary>
    <description><![CDATA[<p>The Church encoding represents data as their own fold-right functions</p>]]></description>
    <content:encoded><![CDATA[<p>The Church encoding represents data as their own fold-right functions</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2719921-introduction-to-church-encoding.mp3" length="7389134" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2719921</guid>
    <pubDate>Tue, 11 Feb 2020 19:00:00 -0600</pubDate>
    <itunes:duration>613</itunes:duration>
    <itunes:keywords>chapter 6, lambda encodings, language constructs, fold right, Church encoding</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>41</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Functional encodings turning the world inside out</itunes:title>
    <title>Functional encodings turning the world inside out</title>
    <itunes:summary><![CDATA[Functional encodings take programming language features like pattern-matching and recursion and move them from outside of data to inside of data. ]]></itunes:summary>
    <description><![CDATA[<p>Functional encodings take programming language features like pattern-matching and recursion and move them from outside of data to inside of data.</p>]]></description>
    <content:encoded><![CDATA[<p>Functional encodings take programming language features like pattern-matching and recursion and move them from outside of data to inside of data.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2719906-functional-encodings-turning-the-world-inside-out.mp3" length="6223342" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2719906</guid>
    <pubDate>Tue, 11 Feb 2020 17:00:00 -0600</pubDate>
    <itunes:duration>516</itunes:duration>
    <itunes:keywords>chapter 6, lambda encodings, language constructs</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>40</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>More benefits of lambda encodings</itunes:title>
    <title>More benefits of lambda encodings</title>
    <itunes:summary><![CDATA[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. ]]></itunes:summary>
    <description><![CDATA[<p>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.</p>]]></description>
    <content:encoded><![CDATA[<p>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.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2685193-more-benefits-of-lambda-encodings.mp3" length="8435182" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2685193</guid>
    <pubDate>Fri, 07 Feb 2020 17:00:00 -0600</pubDate>
    <itunes:duration>700</itunes:duration>
    <itunes:keywords>chapter 6, lambda encodings, datatype system</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>39</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to lambda encodings</itunes:title>
    <title>Introduction to lambda encodings</title>
    <itunes:summary><![CDATA[A lambda encoding is some way of representing data as functions (lambda abstractions).  Some motivations for this for computer-checked proofs and type theory. ]]></itunes:summary>
    <description><![CDATA[<p>A lambda encoding is some way of representing data as functions (lambda abstractions).  Some motivations for this for computer-checked proofs and type theory.</p>]]></description>
    <content:encoded><![CDATA[<p>A lambda encoding is some way of representing data as functions (lambda abstractions).  Some motivations for this for computer-checked proofs and type theory.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2685184-introduction-to-lambda-encodings.mp3" length="10023218" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2685184</guid>
    <pubDate>Fri, 07 Feb 2020 15:00:00 -0600</pubDate>
    <itunes:duration>832</itunes:duration>
    <itunes:keywords>chapter 6, lambda encodings</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>38</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Adding a top type and allowing non-normalizing terms</itunes:title>
    <title>Adding a top type and allowing non-normalizing terms</title>
    <itunes:summary><![CDATA[Curry-style typing and realizability make it sensible to allow a top type to type every term, even non-normalizing ones. ]]></itunes:summary>
    <description><![CDATA[<p>Curry-style typing and realizability make it sensible to allow a top type to type every term, even non-normalizing ones.</p>]]></description>
    <content:encoded><![CDATA[<p>Curry-style typing and realizability make it sensible to allow a top type to type every term, even non-normalizing ones.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2660599-adding-a-top-type-and-allowing-non-normalizing-terms.mp3" length="10316384" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2660599</guid>
    <pubDate>Tue, 04 Feb 2020 19:00:00 -0600</pubDate>
    <itunes:duration>857</itunes:duration>
    <itunes:keywords>chapter 5, type theory design 1, computation first, realizability, top type</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>37</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Intersection types using Curry-style typing</itunes:title>
    <title>Intersection types using Curry-style typing</title>
    <itunes:summary><![CDATA[Intersection types internalize the idea that a term has two types.  Curry-style typing is generally needed for this to be nontrivial. ]]></itunes:summary>
    <description><![CDATA[<p>Intersection types internalize the idea that a term has two types.  Curry-style typing is generally needed for this to be nontrivial.</p>]]></description>
    <content:encoded><![CDATA[<p>Intersection types internalize the idea that a term has two types.  Curry-style typing is generally needed for this to be nontrivial.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2660587-intersection-types-using-curry-style-typing.mp3" length="7702604" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2660587</guid>
    <pubDate>Tue, 04 Feb 2020 17:00:00 -0600</pubDate>
    <itunes:duration>639</itunes:duration>
    <itunes:keywords>chapter 5, type theory design 1, curry-style typing, intersection types</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>36</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Curry-style versus Church-style, and the nature of type annotations</itunes:title>
    <title>Curry-style versus Church-style, and the nature of type annotations</title>
    <itunes:summary><![CDATA[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. ]]></itunes:summary>
    <description><![CDATA[<p>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.</p>]]></description>
    <content:encoded><![CDATA[<p>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.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2621803-curry-style-versus-church-style-and-the-nature-of-type-annotations.mp3" length="9468310" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2621803</guid>
    <pubDate>Thu, 30 Jan 2020 17:00:00 -0600</pubDate>
    <itunes:duration>786</itunes:duration>
    <itunes:keywords>chapter 5, type theory design 1, type annotations, nuprl</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>35</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>More on Computation First, and Basic Idea of Realizability</itunes:title>
    <title>More on Computation First, and Basic Idea of Realizability</title>
    <itunes:summary><![CDATA[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. ]]></itunes:summary>
    <description><![CDATA[<p>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.</p>]]></description>
    <content:encoded><![CDATA[<p>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.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2610793-more-on-computation-first-and-basic-idea-of-realizability.mp3" length="11487204" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2610793</guid>
    <pubDate>Wed, 29 Jan 2020 16:00:00 -0600</pubDate>
    <itunes:duration>954</itunes:duration>
    <itunes:keywords>chapter 5, type theory design 1, computation first, realizability</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>34</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Types should be erased for executing and reasoning about programs</itunes:title>
    <title>Types should be erased for executing and reasoning about programs</title>
    <itunes:summary><![CDATA[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). ]]></itunes:summary>
    <description><![CDATA[<p>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).</p>]]></description>
    <content:encoded><![CDATA[<p>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).</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2610739-types-should-be-erased-for-executing-and-reasoning-about-programs.mp3" length="9157102" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2610739</guid>
    <pubDate>Wed, 29 Jan 2020 14:00:00 -0600</pubDate>
    <itunes:duration>760</itunes:duration>
    <itunes:keywords>chapter 5, type theory design 1, computation first</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>33</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Why go beyond GADTs?</itunes:title>
    <title>Why go beyond GADTs?</title>
    <itunes:summary><![CDATA[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? ]]></itunes:summary>
    <description><![CDATA[<p>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?</p>]]></description>
    <content:encoded><![CDATA[<p>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?</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2569426-why-go-beyond-gadts.mp3" length="8974349" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2569426</guid>
    <pubDate>Fri, 24 Jan 2020 14:00:00 -0600</pubDate>
    <itunes:duration>745</itunes:duration>
    <itunes:keywords>chapter 4, indexed types, dependent types</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>32</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>GADTs for programming with representations of types</itunes:title>
    <title>GADTs for programming with representations of types</title>
    <itunes:summary><![CDATA[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.   ]]></itunes:summary>
    <description><![CDATA[<p>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.  </p>]]></description>
    <content:encoded><![CDATA[<p>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.  </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2554570-gadts-for-programming-with-representations-of-types.mp3" length="11517840" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2554570</guid>
    <pubDate>Wed, 22 Jan 2020 14:00:00 -0600</pubDate>
    <itunes:duration>957</itunes:duration>
    <itunes:keywords>chapter 4, indexed types, examples of GADTs, type representation</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>31</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Using GADTs for typed subsetting of your language</itunes:title>
    <title>Using GADTs for typed subsetting of your language</title>
    <itunes:summary><![CDATA[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: in this case the typed language is a subset of your host language. ]]></itunes:summary>
    <description><![CDATA[<p>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: in this case the typed language is a subset of your host language.</p>]]></description>
    <content:encoded><![CDATA[<p>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: in this case the typed language is a subset of your host language.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2536429-using-gadts-for-typed-subsetting-of-your-language.mp3" length="10540442" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2536429</guid>
    <pubDate>Mon, 20 Jan 2020 13:00:00 -0600</pubDate>
    <itunes:duration>875</itunes:duration>
    <itunes:keywords>chapter 4, indexed types, examples of GADTs, language subset</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>30</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Example of programming with indexed types: binary search trees</itunes:title>
    <title>Example of programming with indexed types: binary search trees</title>
    <itunes:summary><![CDATA[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. ]]></itunes:summary>
    <description><![CDATA[<p>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.</p>]]></description>
    <content:encoded><![CDATA[<p>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.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2509159-example-of-programming-with-indexed-types-binary-search-trees.mp3" length="7879495" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2509159</guid>
    <pubDate>Thu, 16 Jan 2020 17:00:00 -0600</pubDate>
    <itunes:duration>654</itunes:duration>
    <itunes:keywords>chapter 4, indexed types, example indexed data structures, binary search trees</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>29</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Programming with indexed types using singletons</itunes:title>
    <title>Programming with indexed types using singletons</title>
    <itunes:summary><![CDATA[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. ]]></itunes:summary>
    <description><![CDATA[<p>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.</p>]]></description>
    <content:encoded><![CDATA[<p>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.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2509138-programming-with-indexed-types-using-singletons.mp3" length="8548658" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2509138</guid>
    <pubDate>Thu, 16 Jan 2020 16:00:00 -0600</pubDate>
    <itunes:duration>709</itunes:duration>
    <itunes:keywords>chapter 4, indexed types, singleton types</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>28</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Limitations of indexed types that are not truly dependent</itunes:title>
    <title>Limitations of indexed types that are not truly dependent</title>
    <itunes:summary><![CDATA[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. ]]></itunes:summary>
    <description><![CDATA[<p>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.</p>]]></description>
    <content:encoded><![CDATA[<p>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.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2485700-limitations-of-indexed-types-that-are-not-truly-dependent.mp3" length="10338814" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2485700</guid>
    <pubDate>Tue, 14 Jan 2020 06:00:00 -0600</pubDate>
    <itunes:duration>858</itunes:duration>
    <itunes:keywords>chapter 4, indexed types, vectors, Haskell datakinds</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>27</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Programming with Indexed Types</itunes:title>
    <title>Programming with Indexed Types</title>
    <itunes:summary><![CDATA[Indexed datatypes like vectors, where the indices come from a different syntactic category than program expressions. ]]></itunes:summary>
    <description><![CDATA[<p>Indexed datatypes like vectors, where the indices come from a different syntactic category than program expressions.</p>]]></description>
    <content:encoded><![CDATA[<p>Indexed datatypes like vectors, where the indices come from a different syntactic category than program expressions.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2485688-programming-with-indexed-types.mp3" length="8695608" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2485688</guid>
    <pubDate>Mon, 13 Jan 2020 17:00:00 -0600</pubDate>
    <itunes:duration>722</itunes:duration>
    <itunes:keywords>chapter 4, indexed types, vectors, Haskell datakinds</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>26</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Program Termination and the Curry-Howard Isomorphism</itunes:title>
    <title>Program Termination and the Curry-Howard Isomorphism</title>
    <itunes:summary><![CDATA[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.) ]]></itunes:summary>
    <description><![CDATA[<p>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.)</p>]]></description>
    <content:encoded><![CDATA[<p>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.)</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2454737-program-termination-and-the-curry-howard-isomorphism.mp3" length="7917577" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2454737</guid>
    <pubDate>Fri, 10 Jan 2020 14:00:00 -0600</pubDate>
    <itunes:duration>657</itunes:duration>
    <itunes:keywords>chapter 3, curry-howard isomorphism, constructive proof, termination</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>25</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Why Curry-Howard for classical proofs is a bad idea for programming</itunes:title>
    <title>Why Curry-Howard for classical proofs is a bad idea for programming</title>
    <itunes:summary><![CDATA[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. ]]></itunes:summary>
    <description><![CDATA[<p>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.</p>]]></description>
    <content:encoded><![CDATA[<p>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.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2423390-why-curry-howard-for-classical-proofs-is-a-bad-idea-for-programming.mp3" length="10219383" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2423390</guid>
    <pubDate>Mon, 06 Jan 2020 19:00:00 -0600</pubDate>
    <itunes:duration>849</itunes:duration>
    <itunes:keywords>chapter 3, curry-howard isomorphism, constructive proof, classical reasoning</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>23</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Curry-Howard for classical logic</itunes:title>
    <title>Curry-Howard for classical logic</title>
    <itunes:summary><![CDATA[CH can be applied to classical logic, too.  The seminal paper is &lt;a href="https://www.cl.cam.ac.uk/~tgg22/publications/popl90.pdf"&gt;A Formulae-as-Types Notion of Control&lt;/a&gt; by Timothy Griffin.  I discuss how backtracking implements the law of excluded middle. ]]></itunes:summary>
    <description><![CDATA[<p>CH can be applied to classical logic, too.  The seminal paper is &lt;a href=&quot;https://www.cl.cam.ac.uk/~tgg22/publications/popl90.pdf&quot;&gt;A Formulae-as-Types Notion of Control&lt;/a&gt; by Timothy Griffin.  I discuss how backtracking implements the law of excluded middle.</p>]]></description>
    <content:encoded><![CDATA[<p>CH can be applied to classical logic, too.  The seminal paper is &lt;a href=&quot;https://www.cl.cam.ac.uk/~tgg22/publications/popl90.pdf&quot;&gt;A Formulae-as-Types Notion of Control&lt;/a&gt; by Timothy Griffin.  I discuss how backtracking implements the law of excluded middle.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2423366-curry-howard-for-classical-logic.mp3" length="8657678" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2423366</guid>
    <pubDate>Mon, 06 Jan 2020 15:00:00 -0600</pubDate>
    <itunes:duration>718</itunes:duration>
    <itunes:keywords>chapter 3, curry-howard isomorphism, constructive proof, classical reasoning</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>23</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Dependent types and design by contract</itunes:title>
    <title>Dependent types and design by contract</title>
    <itunes:summary><![CDATA[Dependent types are discussed, particularly as used for expressing pre- and post-conditions of functions. ]]></itunes:summary>
    <description><![CDATA[<p>Dependent types are discussed, particularly as used for expressing pre- and post-conditions of functions.</p>]]></description>
    <content:encoded><![CDATA[<p>Dependent types are discussed, particularly as used for expressing pre- and post-conditions of functions.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2403407-dependent-types-and-design-by-contract.mp3" length="7201299" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2403407</guid>
    <pubDate>Fri, 03 Jan 2020 20:00:00 -0600</pubDate>
    <itunes:duration>597</itunes:duration>
    <itunes:keywords>chapter 3, curry-howard isomorphism, dependent types, contracts</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>22</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Indexed types and Curry-Howard for first-order quantifiers</itunes:title>
    <title>Indexed types and Curry-Howard for first-order quantifiers</title>
    <itunes:summary><![CDATA[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 &lt;a href = "http://web.cecs.pdx.edu/~sheard/"&gt;his web page&lt;/a&gt;).  First-order quantifications turn into indexed types where the indices are not program expressions but come from another syntactic domain. ]]></itunes:summary>
    <description><![CDATA[<p>I follow up on some comments I made about Curry-Howard for first-order quantifiers in the previous episode.  Sheard&apos;s Omega language also mentioned (see links on &lt;a href = &quot;http://web.cecs.pdx.edu/~sheard/&quot;&gt;his web page&lt;/a&gt;).  First-order quantifications turn into indexed types where the indices are not program expressions but come from another syntactic domain.</p>]]></description>
    <content:encoded><![CDATA[<p>I follow up on some comments I made about Curry-Howard for first-order quantifiers in the previous episode.  Sheard&apos;s Omega language also mentioned (see links on &lt;a href = &quot;http://web.cecs.pdx.edu/~sheard/&quot;&gt;his web page&lt;/a&gt;).  First-order quantifications turn into indexed types where the indices are not program expressions but come from another syntactic domain.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2403374-indexed-types-and-curry-howard-for-first-order-quantifiers.mp3" length="6679686" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2403374</guid>
    <pubDate>Fri, 03 Jan 2020 14:00:00 -0600</pubDate>
    <itunes:duration>554</itunes:duration>
    <itunes:keywords>chapter 3, curry-howard isomorphism, constructive proof, first-order logic</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>21</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>The Curry-Howard Isomorphism for Propositional Logic</itunes:title>
    <title>The Curry-Howard Isomorphism for Propositional Logic</title>
    <itunes:summary><![CDATA[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. ]]></itunes:summary>
    <description><![CDATA[<p>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.</p>]]></description>
    <content:encoded><![CDATA[<p>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.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2394233-the-curry-howard-isomorphism-for-propositional-logic.mp3" length="9699023" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2394233</guid>
    <pubDate>Thu, 02 Jan 2020 15:00:00 -0600</pubDate>
    <itunes:duration>805</itunes:duration>
    <itunes:keywords>chapter 3, curry-howard isomorphism, constructive proof, propositional logic</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>20</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>The Curry-Howard Isomorphism for Induction</itunes:title>
    <title>The Curry-Howard Isomorphism for Induction</title>
    <itunes:summary><![CDATA[In which I discover why the domino analogy for explaining induction always bothered me! ]]></itunes:summary>
    <description><![CDATA[<p>In which I discover why the domino analogy for explaining induction always bothered me!</p>]]></description>
    <content:encoded><![CDATA[<p>In which I discover why the domino analogy for explaining induction always bothered me!</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2385017-the-curry-howard-isomorphism-for-induction.mp3" length="8502249" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2385017</guid>
    <pubDate>Tue, 31 Dec 2019 17:00:00 -0600</pubDate>
    <itunes:duration>705</itunes:duration>
    <itunes:keywords>chapter 3, curry-howard isomorphism, constructive proof, induction </itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>19</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Constructive proofs as programs</itunes:title>
    <title>Constructive proofs as programs</title>
    <itunes:summary><![CDATA[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. ]]></itunes:summary>
    <description><![CDATA[<p>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.</p>]]></description>
    <content:encoded><![CDATA[<p>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.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2328623-constructive-proofs-as-programs.mp3" length="7080927" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2328623</guid>
    <pubDate>Sat, 21 Dec 2019 23:00:00 -0600</pubDate>
    <itunes:duration>587</itunes:duration>
    <itunes:keywords>chapter 3, curry-howard isomorphism, constructive proof, law of excluded middle</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>18</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to the Curry-Howard Isomorphism</itunes:title>
    <title>Introduction to the Curry-Howard Isomorphism</title>
    <itunes:summary><![CDATA[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. ]]></itunes:summary>
    <description><![CDATA[<p>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.</p>]]></description>
    <content:encoded><![CDATA[<p>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.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2323667-introduction-to-the-curry-howard-isomorphism.mp3" length="11360411" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2323667</guid>
    <pubDate>Fri, 20 Dec 2019 14:00:00 -0600</pubDate>
    <itunes:duration>944</itunes:duration>
    <itunes:keywords>chapter 3, curry-howard isomorphism, constructive proof, classical reasoning</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>17</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Functors and catamorphisms</itunes:title>
    <title>Functors and catamorphisms</title>
    <itunes:summary><![CDATA[More about the structured recusion scheme known as the catamorphism.  Basic idea of functors. ]]></itunes:summary>
    <description><![CDATA[<p>More about the structured recusion scheme known as the catamorphism.  Basic idea of functors.</p>]]></description>
    <content:encoded><![CDATA[<p>More about the structured recusion scheme known as the catamorphism.  Basic idea of functors.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2323628-functors-and-catamorphisms.mp3" length="9343101" type="audio/mpeg" />
    <itunes:image href="https://storage.buzzsprout.com/0jej3mpop2np5it5j92pt6xu33fg?.jpg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2323628</guid>
    <pubDate>Fri, 20 Dec 2019 14:00:00 -0600</pubDate>
    <itunes:duration>774</itunes:duration>
    <itunes:keywords>functional programming, chapter 2, general audience, recursion schemes, category theory, functors</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>16</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Structured Recursion Schemes for Point-Free Recursion</itunes:title>
    <title>Structured Recursion Schemes for Point-Free Recursion</title>
    <itunes:summary><![CDATA[Review of basic application of category theory for functional programming.  Recursion schemes are combinators that let you write point-free recursions. ]]></itunes:summary>
    <description><![CDATA[<p>Review of basic application of category theory for functional programming.  Recursion schemes are combinators that let you write point-free recursions.</p>]]></description>
    <content:encoded><![CDATA[<p>Review of basic application of category theory for functional programming.  Recursion schemes are combinators that let you write point-free recursions.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2313578-structured-recursion-schemes-for-point-free-recursion.mp3" length="9061346" type="audio/mpeg" />
    <itunes:image href="https://storage.buzzsprout.com/yr4p7hjiyl5c8gkajqpn3krepv9q?.jpg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2313578</guid>
    <pubDate>Wed, 18 Dec 2019 23:00:00 -0600</pubDate>
    <itunes:duration>750</itunes:duration>
    <itunes:keywords>functional programming, chapter 2, general audience, point-free, recursion schemes, category theory</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>15</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>More on point-free programming and category theory</itunes:title>
    <title>More on point-free programming and category theory</title>
    <itunes:summary><![CDATA[A few very basic ideas of categories and combinators.  Also, the problem of understanding very concise code. ]]></itunes:summary>
    <description><![CDATA[<p>A few very basic ideas of categories and combinators.  Also, the problem of understanding very concise code.</p>]]></description>
    <content:encoded><![CDATA[<p>A few very basic ideas of categories and combinators.  Also, the problem of understanding very concise code.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2299334-more-on-point-free-programming-and-category-theory.mp3" length="9544709" type="audio/mpeg" />
    <itunes:image href="https://storage.buzzsprout.com/meka1wa61zx61puoahsdsc3lrupp?.jpg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2299334</guid>
    <pubDate>Tue, 17 Dec 2019 12:00:00 -0600</pubDate>
    <itunes:duration>791</itunes:duration>
    <itunes:keywords>functional programming, chapter 2, general audience, point-free, concise code, category theory</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>14</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Point-free programming and category theory</itunes:title>
    <title>Point-free programming and category theory</title>
    <itunes:summary><![CDATA[Relation of point-free functional programming to category theory. ]]></itunes:summary>
    <description><![CDATA[<p>Relation of point-free functional programming to category theory.</p>]]></description>
    <content:encoded><![CDATA[<p>Relation of point-free functional programming to category theory.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2299313-point-free-programming-and-category-theory.mp3" length="4755195" type="audio/mpeg" />
    <itunes:image href="https://storage.buzzsprout.com/5bmk580ctontn9l5qplwlg3tnrqp?.jpg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2299313</guid>
    <pubDate>Tue, 17 Dec 2019 00:00:00 -0600</pubDate>
    <itunes:duration>392</itunes:duration>
    <itunes:keywords>functional programming, chapter 2, general audience, point-free, concise code, category theory</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>13</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Concise code through point-free programming</itunes:title>
    <title>Concise code through point-free programming</title>
    <itunes:summary><![CDATA[Higher-order functions help make it possible to program in a point-free style, where we use combinators to connect functions, rather than calling the functions on inputs explicitly.   ]]></itunes:summary>
    <description><![CDATA[<p>Higher-order functions help make it possible to program in a point-free style, where we use combinators to connect functions, rather than calling the functions on inputs explicitly.  </p>]]></description>
    <content:encoded><![CDATA[<p>Higher-order functions help make it possible to program in a point-free style, where we use combinators to connect functions, rather than calling the functions on inputs explicitly.  </p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2272724-concise-code-through-point-free-programming.mp3" length="4754256" type="audio/mpeg" />
    <itunes:image href="https://storage.buzzsprout.com/5r9sbhn2g8cff3i4mqfkm1at2le2?.jpg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2272724</guid>
    <pubDate>Fri, 13 Dec 2019 06:00:00 -0600</pubDate>
    <itunes:duration>391</itunes:duration>
    <itunes:keywords>functional programming, chapter 2, general audience, point-free style, concise code</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>12</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>More on FP and concise code</itunes:title>
    <title>More on FP and concise code</title>
    <itunes:summary><![CDATA[Discussion of datatypes for tree-like data structures in functional languages.  Usefulness of these for processing structured linguistic artifacts, where the structure is represented by the tree structure. ]]></itunes:summary>
    <description><![CDATA[<p>Discussion of datatypes for tree-like data structures in functional languages.  Usefulness of these for processing structured linguistic artifacts, where the structure is represented by the tree structure.</p>]]></description>
    <content:encoded><![CDATA[<p>Discussion of datatypes for tree-like data structures in functional languages.  Usefulness of these for processing structured linguistic artifacts, where the structure is represented by the tree structure.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2272709-more-on-fp-and-concise-code.mp3" length="7213392" type="audio/mpeg" />
    <itunes:image href="https://storage.buzzsprout.com/b0g04uq4btmq2la5ycuqyjo61kcv?.jpg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2272709</guid>
    <pubDate>Thu, 12 Dec 2019 17:00:00 -0600</pubDate>
    <itunes:duration>596</itunes:duration>
    <itunes:keywords>functional programming, chapter 2, general audience, datatypes, concise code</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>11</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Functional Programming and Concise Code: Type Inference</itunes:title>
    <title>Functional Programming and Concise Code: Type Inference</title>
    <itunes:summary><![CDATA[Start of discussion of some of technology and culture that lead to more concise code in functional programming languages.  Type inference to avoid writing types for local and input variables.  Some basics of static and dynamic typing. ]]></itunes:summary>
    <description><![CDATA[<p>Start of discussion of some of technology and culture that lead to more concise code in functional programming languages.  Type inference to avoid writing types for local and input variables.  Some basics of static and dynamic typing.</p>]]></description>
    <content:encoded><![CDATA[<p>Start of discussion of some of technology and culture that lead to more concise code in functional programming languages.  Type inference to avoid writing types for local and input variables.  Some basics of static and dynamic typing.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2272679-functional-programming-and-concise-code-type-inference.mp3" length="6619737" type="audio/mpeg" />
    <itunes:image href="https://storage.buzzsprout.com/5vf5grf96rzy4gd6w6agb57iibn2?.jpg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2272679</guid>
    <pubDate>Thu, 12 Dec 2019 14:00:00 -0600</pubDate>
    <itunes:duration>547</itunes:duration>
    <itunes:keywords>functional programming, chapter 2, general audience, type inference, concise code</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>10</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Introduction to Functional Programming</itunes:title>
    <title>Introduction to Functional Programming</title>
    <itunes:summary><![CDATA[Introduction to the basic idea of functional programming.  Three kinds are discussed: functional programming with mutable state, pure functional programming (where there is no implicit state), and strong functional programming (which is pure functional programming where every function is statically required to terminate). ]]></itunes:summary>
    <description><![CDATA[<p>Introduction to the basic idea of functional programming.  Three kinds are discussed: functional programming with mutable state, pure functional programming (where there is no implicit state), and strong functional programming (which is pure functional programming where every function is statically required to terminate).</p>]]></description>
    <content:encoded><![CDATA[<p>Introduction to the basic idea of functional programming.  Three kinds are discussed: functional programming with mutable state, pure functional programming (where there is no implicit state), and strong functional programming (which is pure functional programming where every function is statically required to terminate).</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2265554-introduction-to-functional-programming.mp3" length="5717224" type="audio/mpeg" />
    <itunes:image href="https://storage.buzzsprout.com/mt8hxctw0i5gob0gxjr15sqgzamr?.jpg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2265554</guid>
    <pubDate>Wed, 11 Dec 2019 14:00:00 -0600</pubDate>
    <itunes:duration>472</itunes:duration>
    <itunes:keywords>functional programming, chapter 2, general audience</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>9</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Software Engineering Considerations for Formal Methods</itunes:title>
    <title>Software Engineering Considerations for Formal Methods</title>
    <itunes:summary><![CDATA[Discussion of some practicalities of applying formal methods to software.  Ideally we are seeking techniques that can be applied with increasing effort to yield increasingly strong results.  Also, introduction to functional programming. ]]></itunes:summary>
    <description><![CDATA[<p>Discussion of some practicalities of applying formal methods to software.  Ideally we are seeking techniques that can be applied with increasing effort to yield increasingly strong results.  Also, introduction to functional programming.</p>]]></description>
    <content:encoded><![CDATA[<p>Discussion of some practicalities of applying formal methods to software.  Ideally we are seeking techniques that can be applied with increasing effort to yield increasingly strong results.  Also, introduction to functional programming.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2203760-software-engineering-considerations-for-formal-methods.mp3" length="11718783" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2203760</guid>
    <pubDate>Sun, 01 Dec 2019 22:00:00 -0600</pubDate>
    <itunes:duration>973</itunes:duration>
    <itunes:keywords>formal methods, software engineering, general audience, chapter 1</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>8</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Power of Computer-Checked Proofs for Software</itunes:title>
    <title>Power of Computer-Checked Proofs for Software</title>
    <itunes:summary><![CDATA[Continuing pessimistic discussion about the purpose of formal methods for Computer Science.  But then counter arguments about the value of absolutely correct software. ]]></itunes:summary>
    <description><![CDATA[<p>Continuing pessimistic discussion about the purpose of formal methods for Computer Science.  But then counter arguments about the value of absolutely correct software.</p>]]></description>
    <content:encoded><![CDATA[<p>Continuing pessimistic discussion about the purpose of formal methods for Computer Science.  But then counter arguments about the value of absolutely correct software.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2196569-power-of-computer-checked-proofs-for-software.mp3" length="8517615" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2196569</guid>
    <pubDate>Sat, 30 Nov 2019 18:00:00 -0600</pubDate>
    <itunes:duration>707</itunes:duration>
    <itunes:keywords>software engineering, computer-checked proofs, general audience, chapter 1</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>7</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Technical reasons for lack of adoption of computer-checked proofs</itunes:title>
    <title>Technical reasons for lack of adoption of computer-checked proofs</title>
    <itunes:summary><![CDATA[Discussion of a technical reason for lack of adoption of computer-checked proofs for mathematics, namely the level of detail in the proof.  Proof assistants require too much detail in proofs to allow mathematicians to carry over their elegant art of expressing just the right amount of information to convey the idea of the proof to a mathematically competent reader.  For Computer Science, a problem of adoption is that proofs are computationally useless (generally). ]]></itunes:summary>
    <description><![CDATA[<p>Discussion of a technical reason for lack of adoption of computer-checked proofs for mathematics, namely the level of detail in the proof.  Proof assistants require too much detail in proofs to allow mathematicians to carry over their elegant art of expressing just the right amount of information to convey the idea of the proof to a mathematically competent reader.  For Computer Science, a problem of adoption is that proofs are computationally useless (generally).</p>]]></description>
    <content:encoded><![CDATA[<p>Discussion of a technical reason for lack of adoption of computer-checked proofs for mathematics, namely the level of detail in the proof.  Proof assistants require too much detail in proofs to allow mathematicians to carry over their elegant art of expressing just the right amount of information to convey the idea of the proof to a mathematically competent reader.  For Computer Science, a problem of adoption is that proofs are computationally useless (generally).</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2181827-technical-reasons-for-lack-of-adoption-of-computer-checked-proofs.mp3" length="7352176" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2181827</guid>
    <pubDate>Thu, 28 Nov 2019 12:00:00 -0600</pubDate>
    <itunes:duration>610</itunes:duration>
    <itunes:keywords>computer-checked proofs, proof assistants, general audience, adoption problem, chapter 1</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>6</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Why Computer-Checked Proofs are Not Used More in Mathematics</itunes:title>
    <title>Why Computer-Checked Proofs are Not Used More in Mathematics</title>
    <itunes:summary><![CDATA[Some discussion of why computer-checked proofs have not been adopted more in mathematics.  The psychology of telling mathematicians their time-honored method of investigation is inadequate and they need computer-checked proofs.  Computer-checked proofs and certainty. ]]></itunes:summary>
    <description><![CDATA[<p>Some discussion of why computer-checked proofs have not been adopted more in mathematics.  The psychology of telling mathematicians their time-honored method of investigation is inadequate and they need computer-checked proofs.  Computer-checked proofs and certainty.</p>]]></description>
    <content:encoded><![CDATA[<p>Some discussion of why computer-checked proofs have not been adopted more in mathematics.  The psychology of telling mathematicians their time-honored method of investigation is inadequate and they need computer-checked proofs.  Computer-checked proofs and certainty.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2181758-why-computer-checked-proofs-are-not-used-more-in-mathematics.mp3" length="7094181" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2181758</guid>
    <pubDate>Wed, 27 Nov 2019 14:00:00 -0600</pubDate>
    <itunes:duration>588</itunes:duration>
    <itunes:keywords>computer-checked proofs, proof assistants, general audience, adoption problem, chapter 1</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>5</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Computer-Checked Proofs in American Research</itunes:title>
    <title>Computer-Checked Proofs in American Research</title>
    <itunes:summary><![CDATA[Some pockets of interest in computer-checked proofs in the US in the 1980s and 1990s.  Several important research projects and initiatives in the US in the late 1990s and early 2000s that helped raise awareness in the US of computer-checked proofs: proof-carrying code, the POPLmark challenge. ]]></itunes:summary>
    <description><![CDATA[<p>Some pockets of interest in computer-checked proofs in the US in the 1980s and 1990s.  Several important research projects and initiatives in the US in the late 1990s and early 2000s that helped raise awareness in the US of computer-checked proofs: proof-carrying code, the POPLmark challenge.</p>]]></description>
    <content:encoded><![CDATA[<p>Some pockets of interest in computer-checked proofs in the US in the 1980s and 1990s.  Several important research projects and initiatives in the US in the late 1990s and early 2000s that helped raise awareness in the US of computer-checked proofs: proof-carrying code, the POPLmark challenge.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2174690-computer-checked-proofs-in-american-research.mp3" length="9800662" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2174690</guid>
    <pubDate>Tue, 26 Nov 2019 15:00:00 -0600</pubDate>
    <itunes:duration>813</itunes:duration>
    <itunes:keywords>computer-checked proofs, proof assistants, general audience, chapter 1</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>4</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Computer-checked proofs about software</itunes:title>
    <title>Computer-checked proofs about software</title>
    <itunes:summary><![CDATA[Computer-checked proofs can ensure properties of software.  Discussion of several aspects of this idea. ]]></itunes:summary>
    <description><![CDATA[<p>Computer-checked proofs can ensure properties of software.  Discussion of several aspects of this idea.</p>]]></description>
    <content:encoded><![CDATA[<p>Computer-checked proofs can ensure properties of software.  Discussion of several aspects of this idea.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2153429-computer-checked-proofs-about-software.mp3" length="5821470" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2153429</guid>
    <pubDate>Sat, 23 Nov 2019 23:00:00 -0600</pubDate>
    <itunes:duration>482</itunes:duration>
    <itunes:keywords>software engineering, computer-checked proofs, chapter 1</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>3</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>More on Computer-Checked Proofs</itunes:title>
    <title>More on Computer-Checked Proofs</title>
    <itunes:summary><![CDATA[Further discussion of computer-checked proofs, including the example of the proof by Hales and his collaborators of the Kepler Conjecture.  Automath also mentioned.  DAO hack on Ethereum and the interest in cryptocurrency community in computer-checked proofs. ]]></itunes:summary>
    <description><![CDATA[<p>Further discussion of computer-checked proofs, including the example of the proof by Hales and his collaborators of the Kepler Conjecture.  Automath also mentioned.  DAO hack on Ethereum and the interest in cryptocurrency community in computer-checked proofs.</p>]]></description>
    <content:encoded><![CDATA[<p>Further discussion of computer-checked proofs, including the example of the proof by Hales and his collaborators of the Kepler Conjecture.  Automath also mentioned.  DAO hack on Ethereum and the interest in cryptocurrency community in computer-checked proofs.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2145875-more-on-computer-checked-proofs.mp3" length="9887190" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2145875</guid>
    <pubDate>Fri, 22 Nov 2019 13:00:00 -0600</pubDate>
    <itunes:duration>821</itunes:duration>
    <itunes:keywords>computer-checked proofs, proof assistants, general audience, example proofs, chapter 1</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>2</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
  <item>
    <itunes:title>Computer-checked proofs</itunes:title>
    <title>Computer-checked proofs</title>
    <itunes:summary><![CDATA[First episode of the Iowa Type Theory Commute.  The basic idea of computer-checked proofs.  The example of the original proof of the Four Color Theorem. ]]></itunes:summary>
    <description><![CDATA[<p>First episode of the Iowa Type Theory Commute.  The basic idea of computer-checked proofs.  The example of the original proof of the Four Color Theorem.</p>]]></description>
    <content:encoded><![CDATA[<p>First episode of the Iowa Type Theory Commute.  The basic idea of computer-checked proofs.  The example of the original proof of the Four Color Theorem.</p>]]></content:encoded>
    <enclosure url="https://www.buzzsprout.com/728558/episodes/2138198-computer-checked-proofs.mp3" length="10196568" type="audio/mpeg" />
    <itunes:author>Aaron Stump</itunes:author>
    <guid isPermaLink="false">Buzzsprout-2138198</guid>
    <pubDate>Thu, 21 Nov 2019 14:00:00 -0600</pubDate>
    <itunes:duration>846</itunes:duration>
    <itunes:keywords>computer-checked proofs, proof assistants, general audience, chapter 1</itunes:keywords>
    <itunes:season>1</itunes:season>
    <itunes:episode>1</itunes:episode>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:explicit>false</itunes:explicit>
  </item>
</channel>
</rss>
